From bc354f589ddb3b591772defe66e9d1004c235047 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Tue, 27 Feb 2024 11:45:36 +0100 Subject: [PATCH 001/326] :recycle: add limits for questions and answers --- src/components/field/Field.tsx | 27 ++++++++++++++++++++++++-- src/lib/client/validations/answer.ts | 6 +++++- src/lib/client/validations/question.ts | 3 ++- src/lib/server/validations/answer.ts | 12 ++++++++++-- src/lib/server/validations/node.ts | 6 ++++-- src/pages/question/answer.tsx | 27 +++++++++++++------------- src/pages/question/edit.tsx | 9 +++++++-- src/pages/question/new.tsx | 14 ++++++------- src/utils/index.ts | 1 + src/utils/limits.ts | 4 ++++ 10 files changed, 77 insertions(+), 32 deletions(-) create mode 100644 src/utils/limits.ts diff --git a/src/components/field/Field.tsx b/src/components/field/Field.tsx index 8bfa48eac..eca3921b1 100644 --- a/src/components/field/Field.tsx +++ b/src/components/field/Field.tsx @@ -11,9 +11,21 @@ type Props = { value: string; error?: string; info?: string; + hasLimit?: boolean; + limit?: number; + curLength?: number; }; -export const Field = ({ children, label, value, error, info }: Props) => { +export const Field = ({ + children, + label, + value, + error, + info, + hasLimit, + limit, + curLength, +}: Props) => { return (
{ )}
{children} - {error && {error}} +
+ {error && ( + + {error} + + )} + {hasLimit && ( + + {curLength} / {limit} characters + + )} +
); }; diff --git a/src/lib/client/validations/answer.ts b/src/lib/client/validations/answer.ts index cbb18ecad..7b1a3a837 100644 --- a/src/lib/client/validations/answer.ts +++ b/src/lib/client/validations/answer.ts @@ -1,5 +1,9 @@ import { z } from 'zod'; export const answerClientSchema = z.object({ - text: z.string().trim().min(1, { message: 'Answer is required' }), + text: z + .string() + .trim() + .min(1, { message: 'Answer is required' }) + .max(1000, { message: 'Answer must be under 1000 characters long' }), }); diff --git a/src/lib/client/validations/question.ts b/src/lib/client/validations/question.ts index e679deb74..e11d85061 100644 --- a/src/lib/client/validations/question.ts +++ b/src/lib/client/validations/question.ts @@ -4,6 +4,7 @@ export const questionClientSchema = z.object({ text: z .string() .trim() - .min(3, { message: 'Question must be at least 3 characters long' }), + .min(3, { message: 'Question must be at least 3 characters long' }) + .max(100, { message: 'Question must be under 100 characters long' }), withAnswer: z.boolean().optional(), }); diff --git a/src/lib/server/validations/answer.ts b/src/lib/server/validations/answer.ts index a89641e2a..5bdf5be1e 100644 --- a/src/lib/server/validations/answer.ts +++ b/src/lib/server/validations/answer.ts @@ -1,14 +1,22 @@ import { z } from 'zod'; export const createAnswerServerSchema = z.object({ - text: z.string().trim().min(1, { message: 'Answer is required' }), + text: z + .string() + .trim() + .min(1, { message: 'Answer is required' }) + .max(1000, { message: 'Answer must be under 1000 characters long' }), nodeId: z.string().cuid2(), userId: z.string().cuid2(), }); export const updateAnswerServerSchema = z.object({ body: z.object({ - text: z.string().trim().min(1, { message: 'Answer is required' }), + text: z + .string() + .trim() + .min(1, { message: 'Answer is required' }) + .max(1000, { message: 'Answer must be under 1000 characters long' }), userId: z.string().cuid2(), }), query: z.object({ diff --git a/src/lib/server/validations/node.ts b/src/lib/server/validations/node.ts index 4f873661d..834073241 100644 --- a/src/lib/server/validations/node.ts +++ b/src/lib/server/validations/node.ts @@ -14,7 +14,8 @@ export const createNodeServerSchema = z.object({ text: z .string() .trim() - .min(3, { message: 'Question must be at least 3 characters long' }), + .min(3, { message: 'Question must be at least 3 characters long' }) + .max(100, { message: 'Question must be under 100 characters long' }), slug: z.string(), tenantId: z.string().cuid2(), userId: z.string().cuid2(), @@ -27,7 +28,8 @@ export const updateNodeServerSchema = z.object({ text: z .string() .trim() - .min(3, { message: 'Question must be at least 3 characters long' }), + .min(3, { message: 'Question must be at least 3 characters long' }) + .max(100, { message: 'Question must be under 100 characters long' }), userId: z.string().cuid2(), questionId: z.string().cuid2(), tenantId: z.string().cuid2(), diff --git a/src/pages/question/answer.tsx b/src/pages/question/answer.tsx index df47db52f..41225129a 100644 --- a/src/pages/question/answer.tsx +++ b/src/pages/question/answer.tsx @@ -3,9 +3,7 @@ import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; import { User } from '@prisma/client'; import { QueryClient, dehydrate } from '@tanstack/react-query'; -import { ExternalLink } from 'lucide-react'; import { GetServerSideProps } from 'next'; -import Link from 'next/link'; import { useRouter } from 'next/router'; import { Controller, SubmitHandler, useForm } from 'react-hook-form'; import { z } from 'zod'; @@ -15,7 +13,7 @@ import { useCreateAnswer, useNode, useUpdateAnswer } from '@/hooks'; import { PageLayout } from '@/layouts'; import { answerClientSchema, getMe, getNode, ssrNcHandler } from '@/lib'; import { UserWithTenant } from '@/types'; -import { QueryKeys, Redirects } from '@/utils'; +import { Limits, QueryKeys, Redirects } from '@/utils'; type Props = { me: UserWithTenant; @@ -32,6 +30,7 @@ function Answer({ me, id }: Props) { const { handleSubmit, control, + watch, formState: { isSubmitting, errors, isValid, isDirty }, } = useForm({ resolver: zodResolver(answerClientSchema), @@ -42,6 +41,7 @@ function Answer({ me, id }: Props) { }); const router = useRouter(); + const text = watch('text'); const { mutate: createAnswer } = useCreateAnswer( id, @@ -103,17 +103,16 @@ function Answer({ me, id }: Props) { )} /> - {errors.text && ( -

{errors.text.message}

- )} - - Markdown guide - - +
+ {errors.text && ( + + {errors.text.message} + + )} + + {text.length} / {Limits.ANSWER} + +
+ + ); +} diff --git a/src/layouts/PageLayout.tsx b/src/app/hello.tsx similarity index 94% rename from src/layouts/PageLayout.tsx rename to src/app/hello.tsx index 39bd937ee..c8b4b756c 100644 --- a/src/layouts/PageLayout.tsx +++ b/src/app/hello.tsx @@ -12,13 +12,13 @@ type Props = { tenantId: string; }; -export const PageLayout = ({ +export default function Template({ children, id, company, logo, tenantId, -}: Props) => { +}: Props) { return ( @@ -32,4 +32,4 @@ export const PageLayout = ({ ); -}; +} diff --git a/src/app/home.tsx b/src/app/home.tsx index 3083510d7..5e614abe6 100644 --- a/src/app/home.tsx +++ b/src/app/home.tsx @@ -1,25 +1,26 @@ 'use client'; -import { useState, useEffect } from 'react'; +import { useEffect, useState } from 'react'; -import { Search, List } from 'lucide-react'; import { useSearchParams } from 'next/navigation'; -import { Props } from 'next/script'; import { Pagination } from '@/components'; import { useNodes, + useNodesCount, useSearchNodes, useSearchTags, - useNodesCount, useTags, } from '@/hooks'; -import { PageLayout } from '@/layouts'; -import { ExtendedNode } from '@/types'; +import { Footer, Header, List, Search } from '@/modules'; +import { ExtendedNode, UserWithTenant } from '@/types'; import { OFFSET } from '@/utils'; +type Props = { + me: UserWithTenant; +}; -function Home({ me }: Props) { +export default function Home({ me }: Props) { const search = useSearchParams(); const [searchQuery, setSearchQuery] = useState( search.get('search') ?? null, @@ -36,14 +37,17 @@ function Home({ me }: Props) { isError, error, } = useNodes(me.tenantId, page); + const { data: filteredNodes, isLoading: isSearchLoading } = useSearchNodes( me.tenantId, searchQuery, ); const { data: filteredTags } = useSearchTags(me.tenantId, searchTag); + const { data: nodesCount, isPending: isNodesCountLoading } = useNodesCount( me.tenantId, ); + const { data: tags } = useTags(me.tenantId); if (searchQuery) { @@ -69,30 +73,27 @@ function Home({ me }: Props) { }, [isPending, isSearchLoading, isNodesCountLoading]); return ( - - - - {nodesCount > OFFSET && (nodes.length === OFFSET || page !== 0) && ( - - )} - +
+
+
+ + + {nodesCount > OFFSET && (nodes.length === OFFSET || page !== 0) && ( + + )} +
+
+
); } - -export default Home; diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 2f82be2cf..1327dc509 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,13 +1,18 @@ -export default function RootLayout({ - // Layouts must accept a children prop. - // This will be populated with nested layouts or pages - children, -}: { - children: React.ReactNode; -}) { +import '@/styles/globals.css'; +import { ReactNode } from 'react'; + +import Providers from './providers'; + +type Props = { + children: ReactNode; +}; + +export default function RootLayout({ children }: Props) { return ( - {children} + + {children} + ); } diff --git a/src/layouts/LoginLayout.tsx b/src/app/login/layout.tsx similarity index 54% rename from src/layouts/LoginLayout.tsx rename to src/app/login/layout.tsx index 447c2c886..7ba235703 100644 --- a/src/layouts/LoginLayout.tsx +++ b/src/app/login/layout.tsx @@ -1,30 +1,18 @@ -import { ReactNode, useEffect, useState } from 'react'; - -import { ThemeToggle } from '@/modules'; +import { ReactNode } from 'react'; type Props = { children: ReactNode; }; -export const LoginLayout = ({ children }: Props) => { - const [mounted, setMounted] = useState(false); - - useEffect(() => { - setMounted(true); - }, []); - - if (!mounted) { - return null; - } - +export default function Layout({ children }: Props) { return (
-
+ {/*
-
+
*/}
{children}
); -}; +} diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx new file mode 100644 index 000000000..edccc3e21 --- /dev/null +++ b/src/app/login/page.tsx @@ -0,0 +1,58 @@ +import Link from 'next/link'; + +import { LoginButton } from '@/components'; +import { Routes } from '@/utils'; + +export default async function Page({ searchParams }) { + const { error, callbackUrl } = searchParams; + + return ( +
+
+

+ Login +

+

Use your associated account

+
+ + {error && } +

+ No client account ?{' '} + + Register + +

+
+ ); +} + +const errors = { + Signin: 'Try signing with a different account.', + OAuthSignin: 'Try signing with a different account.', + OAuthCallback: 'Try signing with a different account.', + OAuthCreateAccount: 'Try signing with a different account.', + EmailCreateAccount: 'Try signing with a different account.', + Callback: 'Try signing with a different account.', + OAuthAccountNotLinked: + 'To confirm your identity, sign in with the same account you used originally.', + EmailSignin: 'Check your email address.', + CredentialsSignin: + 'Sign in failed. Check the details you provided are correct.', + AccessDenied: 'User not found.', + default: 'Unable to sign in.', +}; + +type ErrorProps = { + error: string; +}; + +const LoginError = ({ error }: ErrorProps) => { + const errorMessage = error && (errors[error] ?? errors.default); + return
{errorMessage}
; +}; diff --git a/src/app/page.tsx b/src/app/page.tsx index 5a4cc411e..d4e77faff 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,29 +1,31 @@ import { - dehydrate, HydrationBoundary, QueryClient, + dehydrate, } from '@tanstack/react-query'; -import { User } from 'next-auth'; +import { redirect } from 'next/navigation'; -import { getMe, ssrNcHandler, getNodes, getNodesCount, getTags } from '@/lib'; -import { Redirects, QueryKeys } from '@/utils'; +import { getAllNodes, getMe, getNodesCount, getTags } from '@/actions'; +import { QueryKeys, Routes } from '@/utils'; import Home from './home'; -export default async function HomePage() { - const callbackMe = async () => await getMe({ req }); - const me = await ssrNcHandler(req, res, callbackMe); +export default async function Page() { + const me = await getMe(); - if (!me) return Redirects.LOGIN; + if (!me) { + redirect(Routes.SITE.LOGIN); + } const queryClient = new QueryClient(); + await queryClient.prefetchQuery({ queryKey: [QueryKeys.ME, me.id], queryFn: () => me, }); await queryClient.prefetchQuery({ queryKey: [QueryKeys.NODES, me.tenantId], - queryFn: () => getNodes(me.tenantId), + queryFn: () => getAllNodes(me.tenantId), }); await queryClient.prefetchQuery({ queryKey: [QueryKeys.NODES_COUNT, me.tenantId], @@ -36,7 +38,7 @@ export default async function HomePage() { return ( - + ); } diff --git a/src/app/register/confirm/form.tsx b/src/app/register/confirm/form.tsx new file mode 100644 index 000000000..aa62e47b7 --- /dev/null +++ b/src/app/register/confirm/form.tsx @@ -0,0 +1,132 @@ +'use client'; + +import { useEffect, useState } from 'react'; + +import { zodResolver } from '@hookform/resolvers/zod'; +import { useAtom } from 'jotai'; +import { MoveLeft } from 'lucide-react'; +import { useRouter } from 'next/navigation'; +import { SubmitHandler, useForm } from 'react-hook-form'; +import { z } from 'zod'; + +import { Button } from '@/components'; +import { useCreateCustomer, useCreateTenant } from '@/hooks'; +import { registerCompleteClientSchema } from '@/lib'; +import { registerAtom } from '@/store'; +import { Routes } from '@/utils'; + +type Schema = z.infer; + +export default function Form() { + const [disabled, setDisabled] = useState(true); + const [state, setState] = useAtom(registerAtom); + const router = useRouter(); + const { + handleSubmit, + formState: { isSubmitting, isValid }, + } = useForm({ + resolver: zodResolver(registerCompleteClientSchema), + defaultValues: state, + }); + + const { + data: customerId, + mutateAsync: mutateCustomer, + isSuccess: customerIsSuccess, + } = useCreateCustomer(); + const { mutateAsync: mutateTenant, isSuccess: tenantIsSuccess } = + useCreateTenant(); + + const onSubmit: SubmitHandler = async (values) => { + try { + await mutateTenant(values); + await mutateCustomer(values); + } catch (error) { + console.error(`Something went wrong: ${error}`); + } + }; + + useEffect(() => { + if (tenantIsSuccess && customerIsSuccess) { + setState({ ...state, customerId }); + router.push(Routes.SITE.REGISTER.PLAN); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [tenantIsSuccess, customerIsSuccess, customerId]); + + useEffect(() => { + setDisabled(!isValid || isSubmitting); + }, [isValid, isSubmitting]); + + return ( +
+
+
+ + Confirm + +

Confirm the information

+
+
+

Company

+
+

Name

+

{state.company}

+
+
+

Email

+

{state.companyEmail}

+
+
+

Domain

+

+ {state.domain || 'No domain'} +

+
+
+
+

User

+
+

Email

+

{state.email}

+
+
+
+
+ + +
+
+ ); +} diff --git a/src/app/register/confirm/page.tsx b/src/app/register/confirm/page.tsx new file mode 100644 index 000000000..6f8051651 --- /dev/null +++ b/src/app/register/confirm/page.tsx @@ -0,0 +1,10 @@ +import Form from './form'; +import AuthLayout from '../layout'; + +export default function Page() { + return ( + +
+ + ); +} diff --git a/src/app/register/form.tsx b/src/app/register/form.tsx new file mode 100644 index 000000000..f89109579 --- /dev/null +++ b/src/app/register/form.tsx @@ -0,0 +1,114 @@ +'use client'; + +import { zodResolver } from '@hookform/resolvers/zod'; +import { useAtom } from 'jotai'; +import { MoveRight } from 'lucide-react'; +import Link from 'next/link'; +import { useRouter } from 'next/navigation'; +import { SubmitHandler, useForm } from 'react-hook-form'; +import { z } from 'zod'; + +import { Button, Field, Input } from '@/components'; +import { registerCompanyClientSchema } from '@/lib'; +import { registerAtom } from '@/store'; +import { ITenantCreateFields } from '@/types'; +import { Routes } from '@/utils'; + +type Schema = z.infer; + +export default function Form() { + const [state, setState] = useAtom(registerAtom); + const router = useRouter(); + + const { + handleSubmit, + register, + formState: { errors, isValid }, + } = useForm({ + resolver: zodResolver(registerCompanyClientSchema), + mode: 'onBlur', + defaultValues: state, + }); + + const saveData: SubmitHandler = (values) => { + setState({ ...state, ...values }); + router.push(Routes.SITE.REGISTER.USER); + }; + + const fields: ITenantCreateFields[] = [ + { + label: 'Name', + value: 'company', + type: 'text', + }, + { + label: 'Email', + value: 'companyEmail', + type: 'email', + }, + { + label: 'Domain', + value: 'domain', + type: 'text', + info: `Fill this field if you have a personalized domain name used for your users' email`, + }, + ]; + + return ( + +
+
+ + Company + +

Your company details

+
+ {fields.map((field) => ( + + + + ))} +
+ +

+ Already have an account ?{' '} + + Login + +

+ + ); +} diff --git a/src/layouts/AuthLayout.tsx b/src/app/register/layout.tsx similarity index 63% rename from src/layouts/AuthLayout.tsx rename to src/app/register/layout.tsx index e5fd3bf91..e14aac936 100644 --- a/src/layouts/AuthLayout.tsx +++ b/src/app/register/layout.tsx @@ -1,7 +1,5 @@ -import { ReactNode, useEffect, useState } from 'react'; +import { ReactNode } from 'react'; -import { Stepper } from '@/components'; -import { ThemeToggle } from '@/modules'; import { TSteps } from '@/types'; type Props = { @@ -17,28 +15,20 @@ const steps: TSteps[] = [ { id: 3, label: 'Confirm' }, ]; -export const AuthLayout = ({ +export default function AuthLayout({ children, hasBackground, currentStep, noStepper, -}: Props) => { - const [mounted, setMounted] = useState(false); - - useEffect(() => { - setMounted(true); - }, []); - - if (!mounted) { - return null; - } - +}: Props) { return (
-
+ {/*
-
- {!noStepper && } +
*/} + {/* {!noStepper && currentStep && ( + + )} */} {hasBackground ? (
{children} @@ -48,4 +38,4 @@ export const AuthLayout = ({ )}
); -}; +} diff --git a/src/app/register/page.tsx b/src/app/register/page.tsx new file mode 100644 index 000000000..25dd691ab --- /dev/null +++ b/src/app/register/page.tsx @@ -0,0 +1,10 @@ +import Form from './form'; +import AuthLayout from './layout'; + +export default function Page() { + return ( + +
+ + ); +} diff --git a/src/app/register/plan/form.tsx b/src/app/register/plan/form.tsx new file mode 100644 index 000000000..c67049694 --- /dev/null +++ b/src/app/register/plan/form.tsx @@ -0,0 +1,174 @@ +'use client'; + +import { useEffect, useMemo } from 'react'; + +import { useAtom } from 'jotai'; +import { RESET } from 'jotai/utils'; +import { Check, Minus, MoveRight, Wallet } from 'lucide-react'; +import { useParams, useRouter } from 'next/navigation'; +import { useForm } from 'react-hook-form'; + +import { Button, errorToast, successToast } from '@/components'; +import { useCreateCheckout } from '@/hooks'; +import { registerAtom } from '@/store'; +import { IPlan } from '@/types'; +import { Routes } from '@/utils'; + +export default function Form() { + const [state, setState] = useAtom(registerAtom); + + const { handleSubmit } = useForm(); + const router = useRouter(); + const params = useParams(); + const { status } = params; + + const { mutate } = useCreateCheckout(state.customerId); + + const saveData = (value: IPlan['value'], lookup_key: string) => { + if (value === 'free') { + setState(RESET); + router.push(Routes.SITE.LOGIN); + } else { + return mutate(lookup_key); + } + }; + + const plans: IPlan[] = useMemo( + () => [ + { + label: 'Free', + value: 'free', + price: 0, + lookup_key: 'free_monthly', + message: 'Perfect to try out', + benefits: ['5 users', '3 tags', 'Unlimited questions'], + drawbacks: ['Slack integration'], + }, + { + label: 'Startup', + value: 'startup', + price: 19, + lookup_key: 'startup_monthly', + message: 'Perfect for startups', + benefits: [ + '100 users', + '10 tags', + 'Unlimited questions', + 'Slack integration', + ], + }, + { + label: 'Enterprise', + value: 'enterprise', + price: 29, + lookup_key: 'enterprise_monthly', + message: 'Perfect for big companies', + benefits: [ + 'Unlimited users', + 'Unlimited tags', + 'Unlimited questions', + 'Slack integration', + ], + }, + ], + [], + ); + + useEffect(() => { + if (status === 'success') { + successToast('Payment successful'); + setState(RESET); + router.push(Routes.SITE.LOGIN); + } else if (status === 'cancel') { + errorToast('Payment unsuccessful'); + } + + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [status]); + + return ( +
+
+

+ Plan +

+

Choose the right plan for you

+
+
+ {plans.map((plan, index) => ( + saveData(plan.value, plan.lookup_key))} + key={index} + className="w-full overflow-hidden rounded-md bg-grayA-3 p-4 text-center text-gray-12 shadow-sm shadow-tealA-7 transition-all duration-300 hover:shadow-tealA-8" + > +
+

+ {plan.label} +

+

+ ${plan.price}/mo +

+
+
+

+ {plan.message} +

+
+
    + {plan.benefits.map((benefit, index) => ( +
  • + +

    {benefit}

    +
  • + ))} + {plan.drawbacks?.map((drawback, index) => ( +
  • + +

    {drawback}

    +
  • + ))} +
+
+ {plan.value === 'free' ? ( + + ) : ( + + )} +
+
+ + ))} +
+
+ ); +} diff --git a/src/app/register/plan/page.tsx b/src/app/register/plan/page.tsx new file mode 100644 index 000000000..941df3dd6 --- /dev/null +++ b/src/app/register/plan/page.tsx @@ -0,0 +1,10 @@ +import Form from './form'; +import AuthLayout from '../layout'; + +export default function Page() { + return ( + +
+ + ); +} diff --git a/src/app/register/user/form.tsx b/src/app/register/user/form.tsx new file mode 100644 index 000000000..902061b67 --- /dev/null +++ b/src/app/register/user/form.tsx @@ -0,0 +1,103 @@ +'use client'; + +import { zodResolver } from '@hookform/resolvers/zod'; +import { useAtom } from 'jotai'; +import { MoveLeft, MoveRight } from 'lucide-react'; +import Link from 'next/link'; +import { useRouter } from 'next/navigation'; +import { SubmitHandler, useForm } from 'react-hook-form'; +import { z } from 'zod'; + +import { Button, Field, Input } from '@/components'; +import { registerUserClientSchema } from '@/lib'; +import { registerAtom } from '@/store'; +import { Routes } from '@/utils'; + +type Schema = z.infer; + +export default function Form() { + const [state, setState] = useAtom(registerAtom); + const router = useRouter(); + + const { + register, + handleSubmit, + formState: { isValid, errors }, + } = useForm({ + resolver: zodResolver(registerUserClientSchema), + mode: 'onBlur', + defaultValues: state, + }); + + const saveData: SubmitHandler = (values) => { + setState({ ...state, ...values }); + router.push(Routes.SITE.REGISTER.CONFIRM); + }; + + return ( + +
+
+ + User + +

Your connection mail

+
+ + + +
+
+ + +
+

+ Already have an account ?{' '} + + Login + +

+ + ); +} diff --git a/src/app/register/user/page.tsx b/src/app/register/user/page.tsx new file mode 100644 index 000000000..d9bb88186 --- /dev/null +++ b/src/app/register/user/page.tsx @@ -0,0 +1,10 @@ +import Form from './form'; +import AuthLayout from '../layout'; + +export default function Page() { + return ( + +
+ + ); +} diff --git a/src/app/settings/page.tsx b/src/app/settings/page.tsx new file mode 100644 index 000000000..7b3138070 --- /dev/null +++ b/src/app/settings/page.tsx @@ -0,0 +1,60 @@ +import { + HydrationBoundary, + QueryClient, + dehydrate, +} from '@tanstack/react-query'; + +import { + getIntegration, + getMe, + getNodesCount, + getTags, + getTenant, + getUsersCount, +} from '@/actions'; +import { SuspenseWrapper } from '@/lib'; +import { QueryKeys, Redirects } from '@/utils'; + +import Settings from './settings'; + +export default async function Page() { + const me = await getMe(); + + if (!me) return Redirects.LOGIN; + + if (me.role === 'user') return Redirects.HOME; + + const queryClient = new QueryClient(); + await queryClient.prefetchQuery({ + queryKey: [QueryKeys.ME, me.id], + queryFn: () => me, + }); + await queryClient.prefetchQuery({ + queryKey: [QueryKeys.NODES_COUNT, me.tenantId], + queryFn: () => getNodesCount(me.tenantId), + }); + await queryClient.prefetchQuery({ + queryKey: [QueryKeys.USERS_COUNT, me.tenantId], + queryFn: () => getUsersCount(me.tenantId), + }); + await queryClient.prefetchQuery({ + queryKey: [QueryKeys.TENANT, me.tenantId], + queryFn: () => getTenant(me.tenantId), + }); + await queryClient.prefetchQuery({ + queryKey: [QueryKeys.INTEGRATION, me.tenantId], + queryFn: () => getIntegration(me.tenantId), + }); + await queryClient.prefetchQuery({ + queryKey: [QueryKeys.TAGS, me.tenantId], + queryFn: () => getTags(me.tenantId), + }); + + return ( + + + + + + ); +} diff --git a/src/app/settings/settings.tsx b/src/app/settings/settings.tsx new file mode 100644 index 000000000..d958614c6 --- /dev/null +++ b/src/app/settings/settings.tsx @@ -0,0 +1,88 @@ +'use client'; + +import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components'; +import { useTenant } from '@/hooks'; +import { Footer, General, Header, Payment, Tags, Users } from '@/modules'; +import { UserWithTenant } from '@/types'; + +type Props = { + me: UserWithTenant; +}; + +export default function Settings({ me }: Props) { + const { data: tenant, isPending } = useTenant(me.tenantId); + + const tabs = [ + { + value: 'general', + label: 'General', + }, + { + value: 'tags', + label: 'Tags', + }, + { + value: 'users', + label: 'Users', + }, + ]; + + return ( +
+
+
+
+

+ Settings +

+ + + {tabs.map((tab, index) => ( + + {tab.label} + + ))} + {me.role === 'tenant' && ( + + Payment + + )} + + + + + + + + + + + + + + +
+
+
+
+ ); +} diff --git a/src/components/avatar/Avatar.tsx b/src/components/avatar/Avatar.tsx index 017b15a06..c0f6572c3 100644 --- a/src/components/avatar/Avatar.tsx +++ b/src/components/avatar/Avatar.tsx @@ -1,3 +1,5 @@ +'use client'; + import { ComponentPropsWithoutRef, ElementRef, forwardRef } from 'react'; import * as AvatarPrimitive from '@radix-ui/react-avatar'; diff --git a/src/components/button/BackButton.tsx b/src/components/button/BackButton.tsx index 2b328f0b4..73c11ba4c 100644 --- a/src/components/button/BackButton.tsx +++ b/src/components/button/BackButton.tsx @@ -1,5 +1,5 @@ import { MoveLeft } from 'lucide-react'; -import { useRouter } from 'next/router'; +import { useRouter } from 'next/navigation'; import { Button } from './Button'; diff --git a/src/components/button/LoginButton.tsx b/src/components/button/LoginButton.tsx new file mode 100644 index 000000000..50b673382 --- /dev/null +++ b/src/components/button/LoginButton.tsx @@ -0,0 +1,30 @@ +'use client'; + +import Image from 'next/image'; +import { signIn } from 'next-auth/react'; + +import googleIcon from '@/assets/google.svg'; +import { Button } from '@/components'; + +type Props = { + callbackUrl: string; +}; + +export const LoginButton = ({ callbackUrl }: Props) => { + return ( + + ); +}; diff --git a/src/components/button/index.ts b/src/components/button/index.ts index da6bcc761..5f8f62fa6 100644 --- a/src/components/button/index.ts +++ b/src/components/button/index.ts @@ -1,2 +1,3 @@ export * from './Button'; export * from './BackButton'; +export * from './LoginButton'; diff --git a/src/components/dialog/Dialog.tsx b/src/components/dialog/Dialog.tsx index fcb0613e7..70ee4b08f 100644 --- a/src/components/dialog/Dialog.tsx +++ b/src/components/dialog/Dialog.tsx @@ -1,3 +1,5 @@ +'use client'; + import * as React from 'react'; import * as DialogPrimitive from '@radix-ui/react-dialog'; diff --git a/src/components/dropdown/Dropdown.tsx b/src/components/dropdown/Dropdown.tsx index 31fa898cc..543bacc11 100644 --- a/src/components/dropdown/Dropdown.tsx +++ b/src/components/dropdown/Dropdown.tsx @@ -1,3 +1,5 @@ +'use client'; + import { ComponentPropsWithoutRef, ElementRef, forwardRef } from 'react'; import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu'; diff --git a/src/components/pagination/Pagination.tsx b/src/components/pagination/Pagination.tsx index a474f22af..3b843a1a5 100644 --- a/src/components/pagination/Pagination.tsx +++ b/src/components/pagination/Pagination.tsx @@ -1,3 +1,5 @@ +'use client'; + import { Dispatch, SetStateAction } from 'react'; import ReactPaginate from 'react-paginate'; diff --git a/src/components/select/Select.tsx b/src/components/select/Select.tsx index 00816a097..b75ef35a8 100644 --- a/src/components/select/Select.tsx +++ b/src/components/select/Select.tsx @@ -1,3 +1,5 @@ +'use client'; + import { forwardRef, ElementRef, ComponentPropsWithoutRef } from 'react'; import * as SelectPrimitive from '@radix-ui/react-select'; diff --git a/src/components/tabs/Tabs.tsx b/src/components/tabs/Tabs.tsx index 3d06254ab..34bed8366 100644 --- a/src/components/tabs/Tabs.tsx +++ b/src/components/tabs/Tabs.tsx @@ -1,3 +1,5 @@ +'use client'; + import { forwardRef, ElementRef, ComponentPropsWithoutRef } from 'react'; import * as TabsPrimitive from '@radix-ui/react-tabs'; diff --git a/src/components/theme/ThemeProvider.tsx b/src/components/theme/ThemeProvider.tsx index 8e1c42ebb..1f84abd1a 100644 --- a/src/components/theme/ThemeProvider.tsx +++ b/src/components/theme/ThemeProvider.tsx @@ -1,3 +1,5 @@ +'use client'; + import { ThemeProvider as NextThemesProvider } from 'next-themes'; import { type ThemeProviderProps } from 'next-themes/dist/types'; diff --git a/src/components/tooltip/Tooltip.tsx b/src/components/tooltip/Tooltip.tsx index 74b2145b8..5621c92f5 100644 --- a/src/components/tooltip/Tooltip.tsx +++ b/src/components/tooltip/Tooltip.tsx @@ -1,3 +1,5 @@ +'use client'; + import { forwardRef, ElementRef, ComponentPropsWithoutRef } from 'react'; import * as TooltipPrimitive from '@radix-ui/react-tooltip'; diff --git a/src/contexts/Me.tsx b/src/contexts/Me.tsx index 4916e20c5..4c712b3c9 100644 --- a/src/contexts/Me.tsx +++ b/src/contexts/Me.tsx @@ -1,3 +1,5 @@ +'use client'; + import { ReactNode, createContext } from 'react'; import { User } from '@prisma/client'; diff --git a/src/hooks/queries/answer/useCreateAnswer.ts b/src/hooks/queries/answer/useCreateAnswer.ts index dc3e7d8da..aa54067e7 100644 --- a/src/hooks/queries/answer/useCreateAnswer.ts +++ b/src/hooks/queries/answer/useCreateAnswer.ts @@ -1,6 +1,6 @@ import { useMutation, useQueryClient } from '@tanstack/react-query'; import axios from 'axios'; -import { NextRouter } from 'next/router'; +import { NextRouter } from 'next/navigation'; import { z } from 'zod'; import { promiseToast } from '@/components'; diff --git a/src/hooks/queries/answer/useUpdateAnswer.ts b/src/hooks/queries/answer/useUpdateAnswer.ts index 8d9ce75ea..9ab7873f6 100644 --- a/src/hooks/queries/answer/useUpdateAnswer.ts +++ b/src/hooks/queries/answer/useUpdateAnswer.ts @@ -1,6 +1,6 @@ import { useMutation, useQueryClient } from '@tanstack/react-query'; import axios from 'axios'; -import { NextRouter } from 'next/router'; +import { NextRouter } from 'next/navigation'; import { z } from 'zod'; import { promiseToast } from '@/components'; diff --git a/src/hooks/queries/auth/useMe.ts b/src/hooks/queries/auth/useMe.ts index 26a5622fa..eddab228f 100644 --- a/src/hooks/queries/auth/useMe.ts +++ b/src/hooks/queries/auth/useMe.ts @@ -1,7 +1,7 @@ import { User } from '@prisma/client'; import { useQuery } from '@tanstack/react-query'; import axios, { AxiosError } from 'axios'; -import { useRouter } from 'next/router'; +import { useRouter } from 'next/navigation'; import { useSession } from 'next-auth/react'; import { QueryKeys, Routes } from '@/utils'; diff --git a/src/hooks/queries/nodes/useCreateNode.ts b/src/hooks/queries/nodes/useCreateNode.ts index 21be20324..9168ee397 100644 --- a/src/hooks/queries/nodes/useCreateNode.ts +++ b/src/hooks/queries/nodes/useCreateNode.ts @@ -1,7 +1,7 @@ import { Integrations, User } from '@prisma/client'; import { useMutation, useQueryClient } from '@tanstack/react-query'; import axios from 'axios'; -import { NextRouter } from 'next/router'; +import { NextRouter } from 'next/navigation'; import slugify from 'slugify'; import { z } from 'zod'; diff --git a/src/hooks/queries/nodes/useNodes.ts b/src/hooks/queries/nodes/useNodes.ts index 4ca1e6298..0a2206ac7 100644 --- a/src/hooks/queries/nodes/useNodes.ts +++ b/src/hooks/queries/nodes/useNodes.ts @@ -1,20 +1,12 @@ import { useQuery } from '@tanstack/react-query'; -import axios, { AxiosError } from 'axios'; -import { ExtendedNode } from '@/types'; -import { QueryKeys, Routes } from '@/utils'; - -const getNodes = async (tenantId: string, page: number) => { - const { data } = await axios.get(Routes.API.NODES.INDEX, { - params: { tenantId, page }, - }); - return data; -}; +import { getPaginatedNodes } from '@/actions'; +import { QueryKeys } from '@/utils'; export const useNodes = (tenantId: string, page: number) => { - const query = useQuery({ + const body = { tenantId, page }; + return useQuery({ queryKey: [QueryKeys.NODES, tenantId, page], - queryFn: () => getNodes(tenantId, page), + queryFn: async () => getPaginatedNodes(body), }); - return query; }; diff --git a/src/hooks/queries/nodes/useNodesCount.ts b/src/hooks/queries/nodes/useNodesCount.ts index acb71db74..860f012e3 100644 --- a/src/hooks/queries/nodes/useNodesCount.ts +++ b/src/hooks/queries/nodes/useNodesCount.ts @@ -1,19 +1,11 @@ import { useQuery } from '@tanstack/react-query'; -import axios, { AxiosError } from 'axios'; -import { QueryKeys, Routes } from '@/utils'; - -const getNodesCount = async (tenantId: string) => { - const { data } = await axios.get(Routes.API.NODES.COUNT, { - params: { tenantId }, - }); - return data; -}; +import { getNodesCount } from '@/actions'; +import { QueryKeys } from '@/utils'; export const useNodesCount = (tenantId: string) => { - const query = useQuery({ + return useQuery({ queryKey: [QueryKeys.NODES_COUNT, tenantId], - queryFn: () => getNodesCount(tenantId), + queryFn: async () => getNodesCount(tenantId), }); - return query; }; diff --git a/src/hooks/queries/nodes/useUpdateNode.ts b/src/hooks/queries/nodes/useUpdateNode.ts index d66f5150b..e25364689 100644 --- a/src/hooks/queries/nodes/useUpdateNode.ts +++ b/src/hooks/queries/nodes/useUpdateNode.ts @@ -1,6 +1,6 @@ import { useMutation, useQueryClient } from '@tanstack/react-query'; import axios from 'axios'; -import { NextRouter } from 'next/router'; +import { NextRouter } from 'next/navigation'; import slugify from 'slugify'; import { z } from 'zod'; diff --git a/src/hooks/queries/search/useSearchNodes.ts b/src/hooks/queries/search/useSearchNodes.ts index 15b57caac..97c17112d 100644 --- a/src/hooks/queries/search/useSearchNodes.ts +++ b/src/hooks/queries/search/useSearchNodes.ts @@ -1,21 +1,12 @@ import { useQuery } from '@tanstack/react-query'; -import axios, { AxiosError } from 'axios'; -import { ExtendedNode } from '@/types'; -import { QueryKeys, Routes } from '@/utils'; - -const getSearchNodes = async (tenantId: string, searchQuery: string) => { - const { data } = await axios.get(Routes.API.SEARCH.INDEX, { - params: { tenantId, searchQuery }, - }); - return data; -}; +import { getSearchNodes } from '@/actions'; +import { QueryKeys } from '@/utils'; export const useSearchNodes = (tenantId: string, searchQuery: string) => { - const query = useQuery({ + return useQuery({ queryKey: [QueryKeys.SEARCH, tenantId, searchQuery], - queryFn: () => getSearchNodes(tenantId, searchQuery), + queryFn: async () => getSearchNodes(tenantId, searchQuery), enabled: !!searchQuery, }); - return query; }; diff --git a/src/hooks/queries/search/useSearchTags.ts b/src/hooks/queries/search/useSearchTags.ts index fd4d5123e..381adf501 100644 --- a/src/hooks/queries/search/useSearchTags.ts +++ b/src/hooks/queries/search/useSearchTags.ts @@ -1,21 +1,13 @@ import { useQuery } from '@tanstack/react-query'; -import axios, { AxiosError } from 'axios'; -import { ExtendedNode } from '@/types'; -import { QueryKeys, Routes } from '@/utils'; - -const getSearchTags = async (tenantId: string, searchTag: string) => { - const { data } = await axios.get(Routes.API.SEARCH.TAGS, { - params: { tenantId, searchTag }, - }); - return data; -}; +import { getSearchTags } from '@/actions'; +import { QueryKeys } from '@/utils'; export const useSearchTags = (tenantId: string, searchTag: string) => { - const query = useQuery({ + const body = { tenantId, searchTag }; + return useQuery({ queryKey: [QueryKeys.SEARCH, tenantId, searchTag], - queryFn: () => getSearchTags(tenantId, searchTag), + queryFn: async () => getSearchTags(body), enabled: !!searchTag, }); - return query; }; diff --git a/src/hooks/queries/tags/useTags.ts b/src/hooks/queries/tags/useTags.ts index 23e30ad5b..ed863bbfb 100644 --- a/src/hooks/queries/tags/useTags.ts +++ b/src/hooks/queries/tags/useTags.ts @@ -1,18 +1,11 @@ -import { Tag } from '@prisma/client'; import { useQuery } from '@tanstack/react-query'; -import axios, { AxiosError } from 'axios'; -import { QueryKeys, Routes } from '@/utils'; - -const getTags = async (tenantId: string) => { - const { data } = await axios.get(Routes.API.TAGS, { params: { tenantId } }); - return data; -}; +import { getTags } from '@/actions'; +import { QueryKeys } from '@/utils'; export const useTags = (tenantId: string) => { - const query = useQuery({ + return useQuery({ queryKey: [QueryKeys.TAGS, tenantId], - queryFn: () => getTags(tenantId), + queryFn: async () => getTags(tenantId), }); - return query; }; diff --git a/src/hooks/queries/tenant/useDeleteTenant.ts b/src/hooks/queries/tenant/useDeleteTenant.ts index e01cdd107..12e8972cc 100644 --- a/src/hooks/queries/tenant/useDeleteTenant.ts +++ b/src/hooks/queries/tenant/useDeleteTenant.ts @@ -1,6 +1,6 @@ import { useMutation } from '@tanstack/react-query'; import axios from 'axios'; -import { NextRouter } from 'next/router'; +import { NextRouter } from 'next/navigation'; import { promiseToast } from '@/components'; import { Routes } from '@/utils'; diff --git a/src/hooks/queries/tenant/useTenant.ts b/src/hooks/queries/tenant/useTenant.ts index 36a495ca3..06402b5a3 100644 --- a/src/hooks/queries/tenant/useTenant.ts +++ b/src/hooks/queries/tenant/useTenant.ts @@ -1,18 +1,11 @@ -import { Tenant } from '@prisma/client'; import { useQuery } from '@tanstack/react-query'; -import axios, { AxiosError } from 'axios'; -import { QueryKeys, Routes } from '@/utils'; - -const getTenant = async (tenantId: string) => { - const { data } = await axios.get(`${Routes.API.TENANT.INDEX}/${tenantId}`); - return data; -}; +import { getTenant } from '@/actions'; +import { QueryKeys } from '@/utils'; export const useTenant = (tenantId: string) => { - const query = useQuery({ + return useQuery({ queryKey: [QueryKeys.TENANT, tenantId], - queryFn: () => getTenant(tenantId), + queryFn: async () => getTenant(tenantId), }); - return query; }; diff --git a/src/hooks/queries/tenant/useUpdateTenant.ts b/src/hooks/queries/tenant/useUpdateTenant.ts index 52e6193df..8af5a97a4 100644 --- a/src/hooks/queries/tenant/useUpdateTenant.ts +++ b/src/hooks/queries/tenant/useUpdateTenant.ts @@ -1,6 +1,6 @@ import { useMutation, useQueryClient } from '@tanstack/react-query'; import axios from 'axios'; -import { NextRouter } from 'next/router'; +import { NextRouter } from 'next/navigation'; import { z } from 'zod'; import { successToast } from '@/components'; diff --git a/src/hooks/queries/users/useUser.ts b/src/hooks/queries/users/useUser.ts index 6ca6de74f..1fdbc0a7a 100644 --- a/src/hooks/queries/users/useUser.ts +++ b/src/hooks/queries/users/useUser.ts @@ -1,18 +1,11 @@ -import { User } from '@prisma/client'; import { useQuery } from '@tanstack/react-query'; -import axios, { AxiosError } from 'axios'; -import { QueryKeys, Routes } from '@/utils'; - -const getUser = async (id: string) => { - const { data } = await axios.get(`${Routes.API.USERS.INDEX}/${id}`); - return data; -}; +import { getUser } from '@/actions'; +import { QueryKeys } from '@/utils'; export const useUser = (id: string) => { - const query = useQuery({ + return useQuery({ queryKey: [QueryKeys.USER, id], - queryFn: () => getUser(id), + queryFn: async () => getUser(id), }); - return query; }; diff --git a/src/hooks/queries/users/useUsers.ts b/src/hooks/queries/users/useUsers.ts index 719489722..07bc67759 100644 --- a/src/hooks/queries/users/useUsers.ts +++ b/src/hooks/queries/users/useUsers.ts @@ -1,20 +1,11 @@ -import { User } from '@prisma/client'; import { useQuery } from '@tanstack/react-query'; -import axios, { AxiosError } from 'axios'; -import { QueryKeys, Routes } from '@/utils'; - -const getUsers = async (tenantId: string) => { - const { data } = await axios.get(Routes.API.USERS.INDEX, { - params: { tenantId }, - }); - return data; -}; +import { getUsers } from '@/actions'; +import { QueryKeys } from '@/utils'; export const useUsers = (tenantId: string) => { - const query = useQuery({ + return useQuery({ queryKey: [QueryKeys.USERS, tenantId], - queryFn: () => getUsers(tenantId), + queryFn: async () => getUsers(tenantId), }); - return query; }; diff --git a/src/hooks/useMediaQuery.tsx b/src/hooks/useMediaQuery.tsx index 5163c4557..f311fff5e 100644 --- a/src/hooks/useMediaQuery.tsx +++ b/src/hooks/useMediaQuery.tsx @@ -1,3 +1,5 @@ +'use client'; + import { useEffect, useState } from 'react'; export function useMediaQuery(query: string): boolean { diff --git a/src/layouts/index.ts b/src/layouts/index.ts deleted file mode 100644 index 38cf08f2e..000000000 --- a/src/layouts/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './AuthLayout'; -export * from './LoginLayout'; -export * from './PageLayout'; diff --git a/src/lib/server/queries/index.ts b/src/lib/server/queries/index.ts index 8d5a288a9..3a8c1f43f 100644 --- a/src/lib/server/queries/index.ts +++ b/src/lib/server/queries/index.ts @@ -1,7 +1,4 @@ export * from './answers'; -export * from './integrations'; export * from './nodes'; export * from './questions'; export * from './tags'; -export * from './tenant'; -export * from './users'; diff --git a/src/lib/server/queries/integrations.ts b/src/lib/server/queries/integrations.ts deleted file mode 100644 index f774e49d5..000000000 --- a/src/lib/server/queries/integrations.ts +++ /dev/null @@ -1,11 +0,0 @@ -import prisma from 'lib/prisma'; - -export const getIntegration = async (tenantId: string) => { - const integrations = await prisma.integrations.findUnique({ - where: { tenantId }, - }); - - if (!integrations) return null; - - return integrations; -}; diff --git a/src/lib/server/queries/tenant.ts b/src/lib/server/queries/tenant.ts deleted file mode 100644 index 128c3adc0..000000000 --- a/src/lib/server/queries/tenant.ts +++ /dev/null @@ -1,11 +0,0 @@ -import prisma from 'lib/prisma'; - -export const getTenant = async (tenantId: string) => { - const tenant = await prisma.tenant.findUnique({ - where: { id: tenantId }, - }); - - if (!tenant) return null; - - return tenant; -}; diff --git a/src/lib/server/queries/users.ts b/src/lib/server/queries/users.ts deleted file mode 100644 index a7e2d2041..000000000 --- a/src/lib/server/queries/users.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { User } from '@prisma/client'; -import { GetSessionParams, getSession } from 'next-auth/react'; - -import prisma from 'lib/prisma'; - -export const getMe = async (params: GetSessionParams): Promise => { - const session = await getSession(params); - const id = session?.user?.id; - - if (!id) return null; - - const me = await prisma.user.findUnique({ - where: { id }, - include: { tenant: { select: { company: true, logo: true } } }, - }); - - if (!me) return null; - - return me; -}; - -export const getUsersCount = async (tenantId: string) => { - const users = await prisma.user.count({ - where: { tenantId }, - }); - - if (!users) return 0; - - return users; -}; diff --git a/src/modules/header/Header.tsx b/src/modules/header/Header.tsx index d2d53fb73..511f0f2c7 100644 --- a/src/modules/header/Header.tsx +++ b/src/modules/header/Header.tsx @@ -1,3 +1,5 @@ +'use client'; + import { AlignJustify, LogOut, Settings } from 'lucide-react'; import Image from 'next/image'; import Link from 'next/link'; diff --git a/src/modules/list/List.tsx b/src/modules/list/List.tsx index 485b86367..979ec4eba 100644 --- a/src/modules/list/List.tsx +++ b/src/modules/list/List.tsx @@ -64,7 +64,7 @@ export const List = ({ nodes, isLoading, isError, error, message }: Props) => {

diff --git a/src/modules/profile/Update.tsx b/src/modules/profile/Update.tsx index 34b76fc6b..fb4ce7bf5 100644 --- a/src/modules/profile/Update.tsx +++ b/src/modules/profile/Update.tsx @@ -1,3 +1,5 @@ +'use client'; + import { useEffect, useMemo, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; diff --git a/src/modules/search/Search.tsx b/src/modules/search/Search.tsx index 2a7862d27..9a25f0a1e 100644 --- a/src/modules/search/Search.tsx +++ b/src/modules/search/Search.tsx @@ -1,8 +1,10 @@ +'use client'; + import { Dispatch, MouseEvent, SetStateAction, useState } from 'react'; import { Tag } from '@prisma/client'; import { SearchIcon, TagIcon } from 'lucide-react'; -import { useRouter } from 'next/router'; +import { useRouter } from 'next/navigation'; import { useForm } from 'react-hook-form'; import { diff --git a/src/modules/settings/general/Company.tsx b/src/modules/settings/general/Company.tsx index 962f31c6a..9000381cc 100644 --- a/src/modules/settings/general/Company.tsx +++ b/src/modules/settings/general/Company.tsx @@ -1,8 +1,10 @@ +'use client'; + import { useEffect, useMemo, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; import { Tenant } from '@prisma/client'; -import { useRouter } from 'next/router'; +import { useRouter } from 'next/navigation'; import { SubmitHandler, useForm } from 'react-hook-form'; import { z } from 'zod'; diff --git a/src/modules/settings/general/Files.tsx b/src/modules/settings/general/Files.tsx index 0644b1de2..7ff956be3 100644 --- a/src/modules/settings/general/Files.tsx +++ b/src/modules/settings/general/Files.tsx @@ -1,3 +1,5 @@ +'use client'; + import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; diff --git a/src/modules/settings/general/Integrations.tsx b/src/modules/settings/general/Integrations.tsx index a9192643a..e58313de1 100644 --- a/src/modules/settings/general/Integrations.tsx +++ b/src/modules/settings/general/Integrations.tsx @@ -1,3 +1,5 @@ +'use client'; + import { useEffect, useMemo, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; diff --git a/src/modules/settings/payment/Billing.tsx b/src/modules/settings/payment/Billing.tsx index 07f1118df..0f35cb13d 100644 --- a/src/modules/settings/payment/Billing.tsx +++ b/src/modules/settings/payment/Billing.tsx @@ -1,3 +1,5 @@ +'use client'; + import { Banknote } from 'lucide-react'; import { useForm } from 'react-hook-form'; diff --git a/src/modules/settings/payment/Delete.tsx b/src/modules/settings/payment/Delete.tsx index de869d4e8..960680761 100644 --- a/src/modules/settings/payment/Delete.tsx +++ b/src/modules/settings/payment/Delete.tsx @@ -1,8 +1,10 @@ +'use client'; + import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; import { Flame } from 'lucide-react'; -import { useRouter } from 'next/router'; +import { useRouter } from 'next/navigation'; import { SubmitHandler, useForm } from 'react-hook-form'; import { z } from 'zod'; diff --git a/src/modules/settings/tags/Tags.tsx b/src/modules/settings/tags/Tags.tsx index 9ac93c744..ce35210af 100644 --- a/src/modules/settings/tags/Tags.tsx +++ b/src/modules/settings/tags/Tags.tsx @@ -1,3 +1,5 @@ +'use client'; + import { useEffect, useState } from 'react'; import { $Enums } from '@prisma/client'; diff --git a/src/modules/settings/users/Create.tsx b/src/modules/settings/users/Create.tsx index 6f79c5f71..d4f91270f 100644 --- a/src/modules/settings/users/Create.tsx +++ b/src/modules/settings/users/Create.tsx @@ -1,3 +1,5 @@ +'use client'; + import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; diff --git a/src/modules/settings/users/FileInput.tsx b/src/modules/settings/users/FileInput.tsx index c2f69b2e8..8c7fd1bd6 100644 --- a/src/modules/settings/users/FileInput.tsx +++ b/src/modules/settings/users/FileInput.tsx @@ -1,3 +1,5 @@ +'use client'; + import { useEffect, useRef, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; diff --git a/src/modules/settings/users/Update.tsx b/src/modules/settings/users/Update.tsx index 6b42eb761..9f7642254 100644 --- a/src/modules/settings/users/Update.tsx +++ b/src/modules/settings/users/Update.tsx @@ -1,3 +1,5 @@ +'use client'; + import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; diff --git a/src/modules/theme/ThemeToggle.tsx b/src/modules/theme/ThemeToggle.tsx index ea918c03d..b624eaa2b 100644 --- a/src/modules/theme/ThemeToggle.tsx +++ b/src/modules/theme/ThemeToggle.tsx @@ -1,3 +1,5 @@ +'use client'; + import { SunIcon, MoonIcon } from 'lucide-react'; import { useTheme } from 'next-themes'; diff --git a/src/pages/_app.tsx b/src/old/_app.tsx similarity index 100% rename from src/pages/_app.tsx rename to src/old/_app.tsx diff --git a/src/pages/_error.tsx b/src/old/_error.tsx similarity index 100% rename from src/pages/_error.tsx rename to src/old/_error.tsx diff --git a/src/pages/api/answers/[id].ts b/src/old/api/answers/[id].ts similarity index 100% rename from src/pages/api/answers/[id].ts rename to src/old/api/answers/[id].ts diff --git a/src/pages/api/answers/index.ts b/src/old/api/answers/index.ts similarity index 100% rename from src/pages/api/answers/index.ts rename to src/old/api/answers/index.ts diff --git a/src/pages/api/integrations/[id].ts b/src/old/api/integrations/[id].ts similarity index 100% rename from src/pages/api/integrations/[id].ts rename to src/old/api/integrations/[id].ts diff --git a/src/pages/api/integrations/index.ts b/src/old/api/integrations/index.ts similarity index 100% rename from src/pages/api/integrations/index.ts rename to src/old/api/integrations/index.ts diff --git a/src/pages/api/integrations/slack/index.ts b/src/old/api/integrations/slack/index.ts similarity index 100% rename from src/pages/api/integrations/slack/index.ts rename to src/old/api/integrations/slack/index.ts diff --git a/src/pages/api/questions/index.ts b/src/old/api/questions/index.ts similarity index 100% rename from src/pages/api/questions/index.ts rename to src/old/api/questions/index.ts diff --git a/src/pages/api/storage/logo.ts b/src/old/api/storage/logo.ts similarity index 100% rename from src/pages/api/storage/logo.ts rename to src/old/api/storage/logo.ts diff --git a/src/pages/api/stripe/billing/index.ts b/src/old/api/stripe/billing/index.ts similarity index 100% rename from src/pages/api/stripe/billing/index.ts rename to src/old/api/stripe/billing/index.ts diff --git a/src/pages/api/stripe/checkout/[id].ts b/src/old/api/stripe/checkout/[id].ts similarity index 100% rename from src/pages/api/stripe/checkout/[id].ts rename to src/old/api/stripe/checkout/[id].ts diff --git a/src/pages/api/stripe/checkout/index.ts b/src/old/api/stripe/checkout/index.ts similarity index 100% rename from src/pages/api/stripe/checkout/index.ts rename to src/old/api/stripe/checkout/index.ts diff --git a/src/pages/api/stripe/customer/index.ts b/src/old/api/stripe/customer/index.ts similarity index 100% rename from src/pages/api/stripe/customer/index.ts rename to src/old/api/stripe/customer/index.ts diff --git a/src/pages/api/stripe/webhooks/index.ts b/src/old/api/stripe/webhooks/index.ts similarity index 100% rename from src/pages/api/stripe/webhooks/index.ts rename to src/old/api/stripe/webhooks/index.ts diff --git a/src/pages/api/tags/[id].ts b/src/old/api/tags/[id].ts similarity index 100% rename from src/pages/api/tags/[id].ts rename to src/old/api/tags/[id].ts diff --git a/src/pages/api/tags/index.ts b/src/old/api/tags/index.ts similarity index 100% rename from src/pages/api/tags/index.ts rename to src/old/api/tags/index.ts diff --git a/src/pages/api/tenant/[id].ts b/src/old/api/tenant/[id].ts similarity index 100% rename from src/pages/api/tenant/[id].ts rename to src/old/api/tenant/[id].ts diff --git a/src/pages/api/tenant/index.ts b/src/old/api/tenant/index.ts similarity index 100% rename from src/pages/api/tenant/index.ts rename to src/old/api/tenant/index.ts diff --git a/src/pages/api/tenant/logo/[id].ts b/src/old/api/tenant/logo/[id].ts similarity index 100% rename from src/pages/api/tenant/logo/[id].ts rename to src/old/api/tenant/logo/[id].ts diff --git a/src/pages/index.tsx b/src/old/index.tsx similarity index 94% rename from src/pages/index.tsx rename to src/old/index.tsx index fd9043b6f..d6f287bd7 100644 --- a/src/pages/index.tsx +++ b/src/old/index.tsx @@ -13,7 +13,6 @@ import { useSearchTags, useTags, } from '@/hooks'; -import { PageLayout } from '@/layouts'; import { getMe, getNodes, getNodesCount, getTags, ssrNcHandler } from '@/lib'; import { List, Search } from '@/modules'; import { ExtendedNode, UserWithTenant } from '@/types'; @@ -73,12 +72,7 @@ function Home({ me }: Props) { }, [isPending, isSearchLoading, isNodesCountLoading]); return ( - + <> OFFSET && (nodes.length === OFFSET || page !== 0) && ( )} - + ); } diff --git a/src/pages/login.tsx b/src/old/login.tsx similarity index 51% rename from src/pages/login.tsx rename to src/old/login.tsx index 165ff3aae..94b301f4b 100644 --- a/src/pages/login.tsx +++ b/src/old/login.tsx @@ -1,11 +1,10 @@ import Image from 'next/image'; import Link from 'next/link'; -import { useRouter } from 'next/router'; +import { useRouter } from 'next/navigation'; import { signIn } from 'next-auth/react'; import googleIcon from '@/assets/google.svg'; import { Button } from '@/components'; -import { LoginLayout } from '@/layouts'; import { Routes } from '@/utils'; function Login() { @@ -13,47 +12,45 @@ function Login() { const error = router.query.error as string; return ( - -
-
-

- Login -

-

Use your associated account

-
- - {error && } -

- No client account ?{' '} - - Register - -

+ Login +

+

Use your associated account

- + + {error && } +

+ No client account ?{' '} + + Register + +

+ ); } diff --git a/src/pages/profile.tsx b/src/old/profile.tsx similarity index 84% rename from src/pages/profile.tsx rename to src/old/profile.tsx index 405eb05b3..f2e828880 100644 --- a/src/pages/profile.tsx +++ b/src/old/profile.tsx @@ -3,7 +3,6 @@ import { QueryClient, dehydrate } from '@tanstack/react-query'; import { GetServerSideProps } from 'next'; import { useUserAnswers, useUserQuestions } from '@/hooks'; -import { PageLayout } from '@/layouts'; import { getMe, getUserAnswers, getUserQuestions, ssrNcHandler } from '@/lib'; import { UpdateProfile, UserAnswers, UserQuestions } from '@/modules'; import { UserWithTenant } from '@/types'; @@ -30,18 +29,11 @@ function Profile({ me }: Props) { ]; return ( - -
- {sections.map((section, index) => ( -
{section.component}
- ))} -
-
+
+ {sections.map((section, index) => ( +
{section.component}
+ ))} +
); } diff --git a/src/old/question/[id].tsx b/src/old/question/[id].tsx new file mode 100644 index 000000000..2769d0ada --- /dev/null +++ b/src/old/question/[id].tsx @@ -0,0 +1,204 @@ +import { User } from '@prisma/client'; +import { QueryClient, dehydrate } from '@tanstack/react-query'; +import { HelpCircle, LinkIcon, PenSquare } from 'lucide-react'; +import { GetServerSideProps } from 'next'; +import dynamic from 'next/dynamic'; +import Link from 'next/link'; +import { useRouter } from 'next/navigation'; + +import { + BackButton, + Badge, + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuTrigger, + Loader, + Tooltip, + TooltipContent, + TooltipTrigger, +} from '@/components'; +import { useNode } from '@/hooks'; +import { getMe, getNode, ssrNcHandler } from '@/lib'; +import { UserWithTenant } from '@/types'; +import { QueryKeys, Redirects, Routes, dateOptions } from '@/utils'; +const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { + ssr: false, +}); + +type Props = { + me: UserWithTenant; + id: string; +}; + +function QuestionPage({ me, id }: Props) { + const { data: node, isPending } = useNode(me.tenantId, id as string); + const { asPath } = useRouter(); + + return isPending ? ( + + ) : ( +
+
+ + + + Edit + + + + + + Question + + + + + + Answer + + + + +
+
+
    + {node.tags.map((tag) => ( +
  • + + {tag.label} + +
  • + ))} +
+
+

{node.question.text}

+ + + + + Copy url + +
+
+ {node.answer ? ( + + ) : ( +

No answer

+ )} +
+
+
+

+ Asked by {node.question.user.name} +

+

+ Asked on{' '} + + {new Date(node.question.createdAt).toLocaleDateString( + undefined, + dateOptions, + )} + +

+

+ Updated on{' '} + + {new Date(node.question.updatedAt).toLocaleDateString( + undefined, + dateOptions, + )} + +

+
+ {node.answer && ( +
+

+ Answered by {node.answer.user.name} +

+

+ Answered on{' '} + + {new Date(node.answer.createdAt).toLocaleDateString( + undefined, + dateOptions, + )} + +

+

+ Updated on{' '} + + {new Date(node.answer.updatedAt).toLocaleDateString( + undefined, + dateOptions, + )} + +

+
+ )} +
+
+
+ ); +} + +export default QuestionPage; + +export const getServerSideProps: GetServerSideProps = async ({ + req, + res, + query, +}) => { + const { id } = query; + const callbackMe = async () => await getMe({ req }); + const me = await ssrNcHandler(req, res, callbackMe); + + if (!me) return Redirects.LOGIN; + + const queryClient = new QueryClient(); + await queryClient.prefetchQuery({ + queryKey: [QueryKeys.ME, me.id], + queryFn: () => me, + }); + await queryClient.prefetchQuery({ + queryKey: [QueryKeys.NODE, me.tenantId, id], + queryFn: () => getNode(me.tenantId, id as string), + }); + + return { + props: { + id, + me: JSON.parse(JSON.stringify(me)), + dehydratedState: JSON.parse(JSON.stringify(dehydrate(queryClient))), + }, + }; +}; diff --git a/src/pages/question/answer.tsx b/src/old/question/answer.tsx similarity index 53% rename from src/pages/question/answer.tsx rename to src/old/question/answer.tsx index 41225129a..3526d3783 100644 --- a/src/pages/question/answer.tsx +++ b/src/old/question/answer.tsx @@ -4,13 +4,12 @@ import { zodResolver } from '@hookform/resolvers/zod'; import { User } from '@prisma/client'; import { QueryClient, dehydrate } from '@tanstack/react-query'; import { GetServerSideProps } from 'next'; -import { useRouter } from 'next/router'; +import { useRouter } from 'next/navigation'; import { Controller, SubmitHandler, useForm } from 'react-hook-form'; import { z } from 'zod'; import { BackButton, Button, Editor, Loader } from '@/components'; import { useCreateAnswer, useNode, useUpdateAnswer } from '@/hooks'; -import { PageLayout } from '@/layouts'; import { answerClientSchema, getMe, getNode, ssrNcHandler } from '@/lib'; import { UserWithTenant } from '@/types'; import { Limits, QueryKeys, Redirects } from '@/utils'; @@ -69,66 +68,57 @@ function Answer({ me, id }: Props) { setDisabled(isSubmitting || !isValid || !isDirty); }, [isSubmitting, isValid, isDirty]); - return ( - - {isPending ? ( - - ) : ( -
- -
-

- {node.answer ? 'Edit the answer' : 'Answer'} -

- -
-

- Question: {node.question.text} -

- ( - - )} - /> -
- {errors.text && ( - - {errors.text.message} - - )} - - {text.length} / {Limits.ANSWER} - -
-
- - + return isPending ? ( + + ) : ( +
+ +
+

+ {node.answer ? 'Edit the answer' : 'Answer'} +

+
+
+

+ Question: {node.question.text} +

+ ( + + )} + /> +
+ {errors.text && ( + + {errors.text.message} + + )} + + {text.length} / {Limits.ANSWER} + +
-
- )} - + + +
+
); } diff --git a/src/pages/question/edit.tsx b/src/old/question/edit.tsx similarity index 57% rename from src/pages/question/edit.tsx rename to src/old/question/edit.tsx index d73d9af9c..01b43bc2c 100644 --- a/src/pages/question/edit.tsx +++ b/src/old/question/edit.tsx @@ -5,13 +5,12 @@ import { User } from '@prisma/client'; import { QueryClient, dehydrate } from '@tanstack/react-query'; import { HelpCircle } from 'lucide-react'; import { GetServerSideProps } from 'next'; -import { useRouter } from 'next/router'; +import { useRouter } from 'next/navigation'; import { SubmitHandler, useForm } from 'react-hook-form'; import { z } from 'zod'; import { BackButton, Button, Field, Input, Loader } from '@/components'; import { useMediaQuery, useNode, useTags, useUpdateNode } from '@/hooks'; -import { PageLayout } from '@/layouts'; import { getMe, getNode, @@ -75,74 +74,65 @@ function Edit({ me, id }: Props) { // eslint-disable-next-line react-hooks/exhaustive-deps }, [isSubmitting, isValid, isDirty]); - return ( - - {isPending ? ( - - ) : ( -
- -
-
-
-
- - Edit the question - -
- - } - type="text" - id="question" - /> - -
- - - -
-
- )} -
+ Edit the question + + + + } + type="text" + id="question" + /> + + + + + + + ); } diff --git a/src/pages/question/new.tsx b/src/old/question/new.tsx similarity index 54% rename from src/pages/question/new.tsx rename to src/old/question/new.tsx index 6cc3f07be..c3ddacc26 100644 --- a/src/pages/question/new.tsx +++ b/src/old/question/new.tsx @@ -5,13 +5,12 @@ import { User } from '@prisma/client'; import { dehydrate, QueryClient } from '@tanstack/react-query'; import { HelpCircle, MoveRight } from 'lucide-react'; import { GetServerSideProps } from 'next'; -import { useRouter } from 'next/router'; +import { useRouter } from 'next/navigation'; import { SubmitHandler, useForm } from 'react-hook-form'; import { z } from 'zod'; import { BackButton, Button, Field, Input } from '@/components'; import { useCreateNode, useIntegration, useMediaQuery, useTags } from '@/hooks'; -import { PageLayout } from '@/layouts'; import { getIntegration, getMe, @@ -68,77 +67,70 @@ function New({ me }: Props) { }, [isSubmitting, isValid]); return ( - -
- -
-
-
-
- - Ask a question - -
- - } - type="text" - id="question" - placeholder="New question" - /> - - -
-
- - + Ask a question +
-
-
-
-
+ + } + type="text" + id="question" + placeholder="New question" + /> + + + +
+ + +
+ + + ); } diff --git a/src/old/register/confirm.tsx b/src/old/register/confirm.tsx new file mode 100644 index 000000000..24e4c83e1 --- /dev/null +++ b/src/old/register/confirm.tsx @@ -0,0 +1,132 @@ +import { useEffect, useState } from 'react'; + +import { zodResolver } from '@hookform/resolvers/zod'; +import { useAtom } from 'jotai'; +import { MoveLeft } from 'lucide-react'; +import { useRouter } from 'next/navigation'; +import { SubmitHandler, useForm } from 'react-hook-form'; +import { z } from 'zod'; + +import { Button } from '@/components'; +import { useCreateCustomer, useCreateTenant } from '@/hooks'; +import { registerCompleteClientSchema } from '@/lib'; +import { registerAtom } from '@/store'; +import { Routes } from '@/utils'; + +type Schema = z.infer; + +function Confirm() { + const [disabled, setDisabled] = useState(true); + const [state, setState] = useAtom(registerAtom); + const router = useRouter(); + const { + handleSubmit, + formState: { isSubmitting, isValid }, + } = useForm({ + resolver: zodResolver(registerCompleteClientSchema), + defaultValues: state, + }); + + const { + data: customerId, + mutateAsync: mutateCustomer, + isSuccess: customerIsSuccess, + } = useCreateCustomer(); + const { mutateAsync: mutateTenant, isSuccess: tenantIsSuccess } = + useCreateTenant(); + + const onSubmit: SubmitHandler = async (values) => { + try { + await mutateTenant(values); + await mutateCustomer(values); + } catch (error) { + console.error(`Something went wrong: ${error}`); + } + }; + + useEffect(() => { + if (tenantIsSuccess && customerIsSuccess) { + setState({ ...state, customerId }); + router.push(Routes.SITE.REGISTER.PLAN); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [tenantIsSuccess, customerIsSuccess, customerId]); + + useEffect(() => { + setDisabled(!isValid || isSubmitting); + }, [isValid, isSubmitting]); + + return ( +
+
+
+ + Confirm + +

Confirm the information

+
+
+

Company

+
+

Name

+

{state.company}

+
+
+

Email

+

{state.companyEmail}

+
+
+

Domain

+

+ {state.domain || 'No domain'} +

+
+
+
+

User

+
+

Email

+

{state.email}

+
+
+
+
+ + +
+
+ ); +} + +export default Confirm; diff --git a/src/old/register/index.tsx b/src/old/register/index.tsx new file mode 100644 index 000000000..e3fdb4b51 --- /dev/null +++ b/src/old/register/index.tsx @@ -0,0 +1,114 @@ +import { zodResolver } from '@hookform/resolvers/zod'; +import { useAtom } from 'jotai'; +import { MoveRight } from 'lucide-react'; +import Link from 'next/link'; +import { useRouter } from 'next/navigation'; +import { SubmitHandler, useForm } from 'react-hook-form'; +import { z } from 'zod'; + +import { Button, Field, Input } from '@/components'; +import { registerCompanyClientSchema } from '@/lib'; +import { registerAtom } from '@/store'; +import { ITenantCreateFields } from '@/types'; +import { Routes } from '@/utils'; + +type Schema = z.infer; + +function Company() { + const [state, setState] = useAtom(registerAtom); + const router = useRouter(); + + const { + handleSubmit, + register, + formState: { errors, isValid }, + } = useForm({ + resolver: zodResolver(registerCompanyClientSchema), + mode: 'onBlur', + defaultValues: state, + }); + + const saveData: SubmitHandler = (values) => { + setState({ ...state, ...values }); + router.push(Routes.SITE.REGISTER.USER); + }; + + const fields: ITenantCreateFields[] = [ + { + label: 'Name', + value: 'company', + type: 'text', + }, + { + label: 'Email', + value: 'companyEmail', + type: 'email', + }, + { + label: 'Domain', + value: 'domain', + type: 'text', + info: `Fill this field if you have a personalized domain name used for your users' email`, + }, + ]; + + return ( +
+
+
+ + Company + +

Your company details

+
+ {fields.map((field) => ( + + + + ))} +
+ +

+ Already have an account ?{' '} + + Login + +

+
+ ); +} + +export default Company; diff --git a/src/old/register/plan.tsx b/src/old/register/plan.tsx new file mode 100644 index 000000000..79a12be3e --- /dev/null +++ b/src/old/register/plan.tsx @@ -0,0 +1,173 @@ +import { useEffect, useMemo } from 'react'; + +import { useAtom } from 'jotai'; +import { RESET } from 'jotai/utils'; +import { Check, Minus, MoveRight, Wallet } from 'lucide-react'; +import { useRouter } from 'next/navigation'; +import { useForm } from 'react-hook-form'; + +import { Button, errorToast, successToast } from '@/components'; +import { useCreateCheckout } from '@/hooks'; +import { registerAtom } from '@/store'; +import { IPlan } from '@/types'; +import { Routes } from '@/utils'; + +function Plan() { + const [state, setState] = useAtom(registerAtom); + + const { handleSubmit } = useForm(); + const router = useRouter(); + const { status } = router.query; + + const { mutate } = useCreateCheckout(state.customerId); + + const saveData = (value: IPlan['value'], lookup_key: string) => { + if (value === 'free') { + setState(RESET); + router.push(Routes.SITE.LOGIN); + } else { + return mutate(lookup_key); + } + }; + + const plans: IPlan[] = useMemo( + () => [ + { + label: 'Free', + value: 'free', + price: 0, + lookup_key: 'free_monthly', + message: 'Perfect to try out', + benefits: ['5 users', '3 tags', 'Unlimited questions'], + drawbacks: ['Slack integration'], + }, + { + label: 'Startup', + value: 'startup', + price: 19, + lookup_key: 'startup_monthly', + message: 'Perfect for startups', + benefits: [ + '100 users', + '10 tags', + 'Unlimited questions', + 'Slack integration', + ], + }, + { + label: 'Enterprise', + value: 'enterprise', + price: 29, + lookup_key: 'enterprise_monthly', + message: 'Perfect for big companies', + benefits: [ + 'Unlimited users', + 'Unlimited tags', + 'Unlimited questions', + 'Slack integration', + ], + }, + ], + [], + ); + + useEffect(() => { + if (status === 'success') { + successToast('Payment successful'); + setState(RESET); + router.push(Routes.SITE.LOGIN); + } else if (status === 'cancel') { + errorToast('Payment unsuccessful'); + } + + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [status, router.isReady]); + + return ( +
+
+

+ Plan +

+

Choose the right plan for you

+
+
+ {plans.map((plan, index) => ( +
saveData(plan.value, plan.lookup_key))} + key={index} + className="w-full overflow-hidden rounded-md bg-grayA-3 p-4 text-center text-gray-12 shadow-sm shadow-tealA-7 transition-all duration-300 hover:shadow-tealA-8" + > +
+

+ {plan.label} +

+

+ ${plan.price}/mo +

+
+
+

+ {plan.message} +

+
+
    + {plan.benefits.map((benefit, index) => ( +
  • + +

    {benefit}

    +
  • + ))} + {plan.drawbacks?.map((drawback, index) => ( +
  • + +

    {drawback}

    +
  • + ))} +
+
+ {plan.value === 'free' ? ( + + ) : ( + + )} +
+
+
+ ))} +
+
+ ); +} + +export default Plan; diff --git a/src/old/register/user.tsx b/src/old/register/user.tsx new file mode 100644 index 000000000..62fd7087a --- /dev/null +++ b/src/old/register/user.tsx @@ -0,0 +1,103 @@ +import { zodResolver } from '@hookform/resolvers/zod'; +import { useAtom } from 'jotai'; +import { MoveLeft, MoveRight } from 'lucide-react'; +import Link from 'next/link'; +import { useRouter } from 'next/navigation'; +import { SubmitHandler, useForm } from 'react-hook-form'; +import { z } from 'zod'; + +import { Button, Field, Input } from '@/components'; +import { registerUserClientSchema } from '@/lib'; +import { registerAtom } from '@/store'; +import { Routes } from '@/utils'; + +type Schema = z.infer; + +function Register() { + const [state, setState] = useAtom(registerAtom); + const router = useRouter(); + + const { + register, + handleSubmit, + formState: { isValid, errors }, + } = useForm({ + resolver: zodResolver(registerUserClientSchema), + mode: 'onBlur', + defaultValues: state, + }); + + const saveData: SubmitHandler = (values) => { + setState({ ...state, ...values }); + router.push(Routes.SITE.REGISTER.CONFIRM); + }; + + return ( +
+
+
+ + User + +

Your connection mail

+
+ + + +
+
+ + +
+

+ Already have an account ?{' '} + + Login + +

+
+ ); +} + +export default Register; diff --git a/src/pages/settings.tsx b/src/old/settings.tsx similarity index 55% rename from src/pages/settings.tsx rename to src/old/settings.tsx index cf2147bd7..410e5a5ce 100644 --- a/src/pages/settings.tsx +++ b/src/old/settings.tsx @@ -6,7 +6,6 @@ import { GetServerSideProps } from 'next'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components'; import { useTenant } from '@/hooks'; -import { PageLayout } from '@/layouts'; import { getIntegration, getMe, @@ -46,58 +45,48 @@ function Settings({ me }: Props) { ); return ( - -
-

- Settings -

- - - {tabs.map((tab, index) => ( - - {tab.label} - - ))} - {me.role === 'tenant' && ( - - Payment - - )} - - - - - - - - - - - - - - -
-
+
+

+ Settings +

+ + + {tabs.map((tab, index) => ( + + {tab.label} + + ))} + {me.role === 'tenant' && ( + + Payment + + )} + + + + + + + + + + + + + + +
); } diff --git a/src/pages/api/nodes/[id].ts b/src/pages/api/nodes/[id].ts deleted file mode 100644 index 61b043c8f..000000000 --- a/src/pages/api/nodes/[id].ts +++ /dev/null @@ -1,124 +0,0 @@ -import { getToken } from 'next-auth/jwt'; - -import { getNodeServerSchema, updateNodeServerSchema } from '@/lib'; -import { nodeModelWithDate } from '@/utils'; -import prisma from 'lib/prisma'; - -import type { NextApiRequest, NextApiResponse } from 'next'; - -export default async function handler( - req: NextApiRequest, - res: NextApiResponse, -) { - const token = await getToken({ req }); - if (req.method === 'GET') { - try { - if (!req.query) { - return res - .status(404) - .json({ success: false, error: { message: `Node not found` } }); - } - if (token) { - const result = getNodeServerSchema.safeParse(req.query); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return res.status(422).json({ - success: false, - error: { message: 'Invalid request', errors }, - }); - } else { - const { tenantId, id } = result.data; - const node = await prisma.node.findUnique({ - where: { id: id as string, tenantId: tenantId as string }, - include: nodeModelWithDate, - }); - return res.status(200).json(node); - } - } else { - return res - .status(401) - .json({ success: false, error: { message: 'Not signed in' } }); - } - } catch (error) { - if (error instanceof Error) { - return res.status(404).json({ success: false, error: error.message }); - } - } - } else if (req.method === 'PUT') { - try { - if (!req.query) { - return res - .status(404) - .json({ success: false, error: { message: `Node not found` } }); - } - if (token) { - const result = updateNodeServerSchema.safeParse({ - body: req.body, - query: req.query, - }); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return res.status(422).json({ - success: false, - error: { message: 'Invalid request', errors }, - }); - } else { - const { id } = result.data.query; - const { tenantId, questionId, text, slug, userId, tags } = - result.data.body; - const duplicateQuestion = await prisma.node.findFirst({ - where: { - tenantId, - question: { text: text }, - tags: { every: { id: { in: tags }, tenantId }, some: {} }, - }, - }); - if (duplicateQuestion) { - return res.status(409).json({ - success: false, - message: 'This question already exists', - }); - } - await prisma.node.update({ - where: { id, tenantId: tenantId as string }, - data: { - question: { - update: { - where: { id: questionId as string }, - data: { - text: text as string, - slug: slug as string, - user: { connect: { id: userId } }, - }, - }, - }, - tags: { - set: tags.map((tag: string) => { - return { - id: tag, - tenantId, - }; - }), - }, - }, - }); - return res - .status(201) - .json({ success: true, message: 'Question updated successfully' }); - } - } else { - return res - .status(401) - .json({ success: false, error: { message: 'Not signed in' } }); - } - } catch (error) { - if (error instanceof Error) { - return res.status(500).json({ success: false, error: error.message }); - } - } - } else { - return res - .status(405) - .json({ success: false, error: { message: 'Method not allowed' } }); - } -} diff --git a/src/pages/api/nodes/count.ts b/src/pages/api/nodes/count.ts deleted file mode 100644 index 1c4543d08..000000000 --- a/src/pages/api/nodes/count.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { getToken } from 'next-auth/jwt'; - -import { getTenantIdSchema } from '@/lib'; -import prisma from 'lib/prisma'; - -import type { NextApiRequest, NextApiResponse } from 'next'; - -export default async function handler( - req: NextApiRequest, - res: NextApiResponse, -) { - const token = await getToken({ req }); - if (req.method === 'GET') { - try { - if (!req.query) { - return res - .status(404) - .json({ success: false, error: { message: `Node not found` } }); - } - if (token) { - const result = getTenantIdSchema.safeParse(req.query); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return res.status(422).json({ - success: false, - error: { message: 'Invalid request', errors }, - }); - } else { - const { tenantId } = result.data; - let nodes = await prisma.node.count({ - where: { tenantId }, - }); - if (!nodes) { - nodes = 0; - } - return res.status(200).json(nodes); - } - } else { - return res - .status(401) - .json({ success: false, error: { message: 'Not signed in' } }); - } - } catch (error) { - if (error instanceof Error) { - return res.status(404).json({ success: false, error: error.message }); - } - } - } else { - return res - .status(405) - .json({ success: false, error: { message: 'Method not allowed' } }); - } -} diff --git a/src/pages/api/nodes/index.ts b/src/pages/api/nodes/index.ts deleted file mode 100644 index 6e467f5d8..000000000 --- a/src/pages/api/nodes/index.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { NextApiRequest, NextApiResponse } from 'next'; -import { getToken } from 'next-auth/jwt'; - -import { getNodesServerSchema, createNodeServerSchema } from '@/lib'; -import { OFFSET, nodeModel } from '@/utils'; -import prisma from 'lib/prisma'; - -export default async function handler( - req: NextApiRequest, - res: NextApiResponse, -) { - if (req.method === 'GET') { - try { - if (!req.query) { - return res - .status(404) - .json({ success: false, error: { message: `Tenant not found` } }); - } - const result = getNodesServerSchema.safeParse(req.query); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return res.status(422).json({ - success: false, - error: { message: 'Invalid request', errors }, - }); - } else { - const { tenantId, page } = result.data; - const pageInt = Number(page); - const nodes = await prisma.node.findMany({ - where: { tenantId: tenantId as string }, - orderBy: { createdAt: 'desc' }, - skip: pageInt * OFFSET, - take: OFFSET, - include: nodeModel, - }); - return res.status(200).json(nodes); - } - } catch (error) { - if (error instanceof Error) { - return res.status(404).json({ success: false, error: error.message }); - } - } - } else if (req.method === 'POST') { - try { - if (!req.body) { - return res - .status(404) - .json({ success: false, message: `Data not provided` }); - } - const token = await getToken({ req }); - if (token) { - const result = createNodeServerSchema.safeParse(req.body); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return res.status(422).json({ - success: false, - error: { message: 'Invalid request', errors }, - }); - } else { - const { text, slug, tenantId, userId, tags, withAnswer } = - result.data; - const duplicateQuestion = await prisma.node.findFirst({ - where: { tenantId, question: { text: text } }, - }); - if (duplicateQuestion) { - return res.status(409).json({ - success: false, - error: { message: 'This question already exists' }, - }); - } - const node = await prisma.node.create({ - data: { - tenant: { connect: { id: tenantId } }, - question: { - create: { text, slug, user: { connect: { id: userId } } }, - }, - tags: { - connect: tags.map((tag) => ({ id: tag })), - }, - }, - }); - if (withAnswer) { - return res.status(201).json({ - node, - message: 'Question created successfully', - }); - } - return res - .status(201) - .json({ success: true, message: 'Question created successfully' }); - } - } else { - return res - .status(401) - .json({ success: false, error: { message: 'Not signed in' } }); - } - } catch (error) { - if (error instanceof Error) { - return res.status(500).json({ success: false, error: error.message }); - } - } - } else { - return res - .status(405) - .json({ success: false, error: { message: 'Method not allowed' } }); - } -} diff --git a/src/pages/api/search/index.ts b/src/pages/api/search/index.ts deleted file mode 100644 index 6023d6e5c..000000000 --- a/src/pages/api/search/index.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { NextApiRequest, NextApiResponse } from 'next'; -import { getToken } from 'next-auth/jwt'; - -import { getSearchServerSchema } from '@/lib'; -import { nodeModel } from '@/utils'; -import prisma from 'lib/prisma'; - -export default async function handler( - req: NextApiRequest, - res: NextApiResponse, -) { - if (req.method === 'GET') { - try { - if (!req.query) { - return res - .status(404) - .json({ success: false, error: { message: `Tenant not found` } }); - } - const token = await getToken({ req }); - if (token) { - const result = getSearchServerSchema.safeParse(req.query); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return res.status(422).json({ - success: false, - error: { message: 'Invalid request', errors }, - }); - } else { - const { tenantId, searchQuery } = result.data; - const nodes = await prisma.node.findMany({ - where: { - tenantId: tenantId as string, - question: { - text: { contains: searchQuery as string, mode: 'insensitive' }, - }, - }, - orderBy: { createdAt: 'desc' }, - include: nodeModel, - }); - return res.status(200).json(nodes); - } - } else { - return res - .status(401) - .json({ success: false, error: { message: 'Not signed in' } }); - } - } catch (error) { - if (error instanceof Error) { - return res.status(404).json({ success: false, error: error.message }); - } - } - } else { - return res - .status(405) - .json({ success: false, error: { message: 'Method not allowed' } }); - } -} diff --git a/src/pages/api/search/tags/index.ts b/src/pages/api/search/tags/index.ts deleted file mode 100644 index 01ebf0f7d..000000000 --- a/src/pages/api/search/tags/index.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { NextApiRequest, NextApiResponse } from 'next'; -import { getToken } from 'next-auth/jwt'; - -import { getTagSearchServerSchema } from '@/lib'; -import { nodeModel } from '@/utils'; -import prisma from 'lib/prisma'; - -export default async function handler( - req: NextApiRequest, - res: NextApiResponse, -) { - if (req.method === 'GET') { - try { - if (!req.query) { - return res - .status(404) - .json({ success: false, error: { message: `Tenant not found` } }); - } - const token = await getToken({ req }); - if (token) { - const result = getTagSearchServerSchema.safeParse(req.query); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return res.status(422).json({ - success: false, - error: { message: 'Invalid request', errors }, - }); - } else { - const { tenantId, searchTag } = result.data; - const nodes = await prisma.node.findMany({ - where: { - tenantId: tenantId as string, - tags: { - some: { - label: { contains: searchTag as string, mode: 'insensitive' }, - }, - }, - }, - orderBy: { createdAt: 'desc' }, - include: nodeModel, - }); - return res.status(200).json(nodes); - } - } else { - return res - .status(401) - .json({ success: false, error: { message: 'Not signed in' } }); - } - } catch (error) { - if (error instanceof Error) { - return res.status(404).json({ success: false, error: error.message }); - } - } - } else { - return res - .status(405) - .json({ success: false, error: { message: 'Method not allowed' } }); - } -} diff --git a/src/pages/api/users/[id].ts b/src/pages/api/users/[id].ts deleted file mode 100644 index d5cf0fc35..000000000 --- a/src/pages/api/users/[id].ts +++ /dev/null @@ -1,131 +0,0 @@ -import { getToken } from 'next-auth/jwt'; - -import { - deleteUserServerSchema, - getIdSchema, - updateUserServerSchema, -} from '@/lib'; -import prisma from 'lib/prisma'; - -import type { NextApiRequest, NextApiResponse } from 'next'; - -export default async function handler( - req: NextApiRequest, - res: NextApiResponse, -) { - const token = await getToken({ req }); - if (req.method === 'GET') { - try { - if (!req.query) { - return res - .status(404) - .json({ success: false, message: `Email not provided` }); - } - if (token) { - const result = getIdSchema.safeParse(req.query); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return res.status(422).json({ - success: false, - error: { message: 'Invalid request', errors }, - }); - } else { - const { id } = result.data; - const user = await prisma.user.findUnique({ - where: { id }, - }); - return res.status(200).json(user); - } - } else { - return res - .status(401) - .json({ success: false, error: { message: 'Not signed in' } }); - } - } catch (error) { - if (error instanceof Error) { - return res.status(404).json({ success: false, error: error.message }); - } - } - } else if (req.method === 'PUT') { - try { - if (!req.query) { - return res - .status(404) - .json({ success: false, message: `User not found` }); - } - if (token) { - const result = updateUserServerSchema.safeParse({ - body: req.body, - query: req.query, - }); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return res.status(422).json({ - success: false, - error: { message: 'Invalid request', errors }, - }); - } else { - const { id } = result.data.query; - const data = result.data.body; - await prisma.user.update({ - where: { id }, - data, - }); - return res - .status(201) - .json({ success: true, message: 'User updated successfully' }); - } - } else { - return res - .status(401) - .json({ success: false, error: { message: 'Not signed in' } }); - } - } catch (error) { - if (error instanceof Error) { - return res.status(500).json({ success: false, error: error.message }); - } - } - } else if (req.method === 'DELETE') { - try { - if (!req.query) { - return res - .status(404) - .json({ success: false, message: `User not found` }); - } - if (token) { - const result = deleteUserServerSchema.safeParse({ - body: req.body, - query: req.query, - }); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return res.status(422).json({ - success: false, - error: { message: 'Invalid request', errors }, - }); - } else { - const { id } = result.data.query; - const { tenantId } = result.data.body; - await prisma.user.delete({ - where: { id, tenantId }, - }); - return res - .status(200) - .json({ success: true, message: 'User deleted successfully' }); - } - } else { - return res - .status(401) - .json({ success: false, error: { message: 'Not signed in' } }); - } - } catch (error) { - if (error instanceof Error) { - return res.status(500).json({ success: false, error: error.message }); - } - } - } else { - return res - .status(405) - .json({ success: false, error: { message: 'Method not allowed' } }); - } -} diff --git a/src/pages/api/users/count.ts b/src/pages/api/users/count.ts deleted file mode 100644 index 3b455016d..000000000 --- a/src/pages/api/users/count.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { getToken } from 'next-auth/jwt'; - -import { getTenantIdSchema } from '@/lib'; -import prisma from 'lib/prisma'; - -import type { NextApiRequest, NextApiResponse } from 'next'; - -export default async function handler( - req: NextApiRequest, - res: NextApiResponse, -) { - const token = await getToken({ req }); - if (req.method === 'GET') { - try { - if (!req.query) { - return res - .status(404) - .json({ success: false, error: { message: `Node not found` } }); - } - if (token) { - const result = getTenantIdSchema.safeParse(req.query); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return res.status(422).json({ - success: false, - error: { message: 'Invalid request', errors }, - }); - } else { - const { tenantId } = result.data; - let users = await prisma.user.count({ - where: { tenantId }, - }); - if (!users) { - users = 0; - } - return res.status(200).json(users); - } - } else { - return res - .status(401) - .json({ success: false, error: { message: 'Not signed in' } }); - } - } catch (error) { - if (error instanceof Error) { - return res.status(404).json({ success: false, error: error.message }); - } - } - } else { - return res - .status(405) - .json({ success: false, error: { message: 'Method not allowed' } }); - } -} diff --git a/src/pages/api/users/index.ts b/src/pages/api/users/index.ts deleted file mode 100644 index 4b78faa44..000000000 --- a/src/pages/api/users/index.ts +++ /dev/null @@ -1,179 +0,0 @@ -import { getToken } from 'next-auth/jwt'; - -import { - createUserServerSchema, - getTenantIdSchema, - getUsersCount, -} from '@/lib'; -import prisma from 'lib/prisma'; - -import type { NextApiRequest, NextApiResponse } from 'next'; - -export default async function handler( - req: NextApiRequest, - res: NextApiResponse, -) { - if (req.method === 'GET') { - try { - if (!req.query) { - return res - .status(404) - .json({ success: false, message: `Tenant not found` }); - } - const result = getTenantIdSchema.safeParse(req.query); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return res.status(422).json({ - success: false, - error: { message: 'Invalid request', errors }, - }); - } else { - const { tenantId } = result.data; - const users = await prisma.user.findMany({ - where: { tenantId: tenantId as string }, - }); - return res.status(200).json(users); - } - } catch (error) { - if (error instanceof Error) { - return res.status(404).json({ success: false, error: error.message }); - } - } - } else if (req.method === 'POST') { - try { - if (!req.body) { - return res.status(404).json({ - success: false, - error: { message: `Form data not provided` }, - }); - } - const token = await getToken({ req }); - if (token) { - const result = createUserServerSchema.safeParse(req.body); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return res.status(422).json({ - success: false, - error: { message: 'Invalid request', errors }, - }); - } else { - const { email, role, newUsersArray, tenantId } = result.data; - if (role) { - const userExists = await prisma.user.findUnique({ - where: { email, tenantId }, - }); - if (userExists) { - return res.status(409).json({ - success: false, - error: { message: 'User already exists' }, - }); - } - const usersCount = await getUsersCount(tenantId); - if (typeof usersCount !== 'number') { - return res.status(404).json({ - success: false, - error: { message: 'Could not find the number of users' }, - }); - } - const { plan } = await prisma.tenant.findUnique({ - where: { id: tenantId }, - select: { plan: true }, - }); - if ( - (plan === 'free' && usersCount >= 5) || - (plan === 'startup' && usersCount >= 100) - ) { - return res.status(402).json({ - success: false, - error: { message: 'You reached the maximum number of users.' }, - }); - } - await prisma.user.create({ - data: { - email, - role, - tenantId, - }, - }); - return res - .status(201) - .json({ message: 'User created successfully' }); - } else { - const errors = []; - for (const element of newUsersArray) { - const userEmail = element; - if (!userEmail) { - errors.push({ - email: userEmail, - message: 'Empty email, skipping user creation', - }); - continue; - } - const userExists = await prisma.user.findUnique({ - where: { email: userEmail, tenantId }, - }); - if (userExists) { - errors.push({ - email: userEmail, - message: 'User already exists', - }); - continue; - } - const usersCount = await getUsersCount(tenantId); - if (!usersCount) { - errors.push({ - email: userEmail, - message: 'Could not find the number of users', - }); - continue; - } - const { plan } = await prisma.tenant.findUnique({ - where: { id: tenantId }, - select: { plan: true }, - }); - if ( - (plan === 'free' && usersCount >= 5) || - (plan === 'startup' && usersCount >= 100) - ) { - errors.push({ - email: userEmail, - message: 'You reached the maximum number of users.', - }); - continue; - } - await prisma.user.create({ - data: { - email: userEmail, - role: 'user', - tenantId, - }, - }); - } - if (errors.length > 0) { - return res.status(409).json({ - success: false, - message: 'Some users could not be created', - errors, - }); - } - return res - .status(201) - .json({ message: 'Users created successfully' }); - } - } - } else { - return res - .status(401) - .json({ success: false, error: { message: 'Not signed in' } }); - } - } catch (error) { - if (error instanceof Error) { - return res.status(500).json({ success: false, error: error.message }); - } - } - } else { - return res - .status(405) - .json({ success: false, error: { message: 'Method not allowed' } }); - } -} diff --git a/src/pages/question/[id].tsx b/src/pages/question/[id].tsx deleted file mode 100644 index d69a9c9a2..000000000 --- a/src/pages/question/[id].tsx +++ /dev/null @@ -1,214 +0,0 @@ -import { User } from '@prisma/client'; -import { QueryClient, dehydrate } from '@tanstack/react-query'; -import { HelpCircle, LinkIcon, PenSquare } from 'lucide-react'; -import { GetServerSideProps } from 'next'; -import dynamic from 'next/dynamic'; -import Link from 'next/link'; -import { useRouter } from 'next/router'; - -import { - BackButton, - Badge, - DropdownMenu, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuTrigger, - Loader, - Tooltip, - TooltipContent, - TooltipTrigger, -} from '@/components'; -import { useNode } from '@/hooks'; -import { PageLayout } from '@/layouts'; -import { getMe, getNode, ssrNcHandler } from '@/lib'; -import { UserWithTenant } from '@/types'; -import { QueryKeys, Redirects, Routes, dateOptions } from '@/utils'; -const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { - ssr: false, -}); - -type Props = { - me: UserWithTenant; - id: string; -}; - -function QuestionPage({ me, id }: Props) { - const { data: node, isPending } = useNode(me.tenantId, id as string); - const { asPath } = useRouter(); - - return ( - - {isPending ? ( - - ) : ( -
-
- - - - Edit - - - - - - Question - - - - - - Answer - - - - -
-
-
    - {node.tags.map((tag) => ( -
  • - - {tag.label} - -
  • - ))} -
-
-

{node.question.text}

- - - - - Copy url - -
-
- {node.answer ? ( - - ) : ( -

No answer

- )} -
-
-
-

- Asked by {node.question.user.name} -

-

- Asked on{' '} - - {new Date(node.question.createdAt).toLocaleDateString( - undefined, - dateOptions, - )} - -

-

- Updated on{' '} - - {new Date(node.question.updatedAt).toLocaleDateString( - undefined, - dateOptions, - )} - -

-
- {node.answer && ( -
-

- Answered by {node.answer.user.name} -

-

- Answered on{' '} - - {new Date(node.answer.createdAt).toLocaleDateString( - undefined, - dateOptions, - )} - -

-

- Updated on{' '} - - {new Date(node.answer.updatedAt).toLocaleDateString( - undefined, - dateOptions, - )} - -

-
- )} -
-
-
- )} -
- ); -} - -export default QuestionPage; - -export const getServerSideProps: GetServerSideProps = async ({ - req, - res, - query, -}) => { - const { id } = query; - const callbackMe = async () => await getMe({ req }); - const me = await ssrNcHandler(req, res, callbackMe); - - if (!me) return Redirects.LOGIN; - - const queryClient = new QueryClient(); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.ME, me.id], - queryFn: () => me, - }); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.NODE, me.tenantId, id], - queryFn: () => getNode(me.tenantId, id as string), - }); - - return { - props: { - id, - me: JSON.parse(JSON.stringify(me)), - dehydratedState: JSON.parse(JSON.stringify(dehydrate(queryClient))), - }, - }; -}; diff --git a/src/pages/register/confirm.tsx b/src/pages/register/confirm.tsx deleted file mode 100644 index 89398db66..000000000 --- a/src/pages/register/confirm.tsx +++ /dev/null @@ -1,137 +0,0 @@ -import { useEffect, useState } from 'react'; - -import { zodResolver } from '@hookform/resolvers/zod'; -import { useAtom } from 'jotai'; -import { MoveLeft } from 'lucide-react'; -import { useRouter } from 'next/router'; -import { SubmitHandler, useForm } from 'react-hook-form'; -import { z } from 'zod'; - -import { Button } from '@/components'; -import { useCreateCustomer, useCreateTenant } from '@/hooks'; -import { AuthLayout } from '@/layouts'; -import { registerCompleteClientSchema } from '@/lib'; -import { registerAtom } from '@/store'; -import { Routes } from '@/utils'; - -type Schema = z.infer; - -function Confirm() { - const [disabled, setDisabled] = useState(true); - const [state, setState] = useAtom(registerAtom); - const router = useRouter(); - const { - handleSubmit, - formState: { isSubmitting, isValid }, - } = useForm({ - resolver: zodResolver(registerCompleteClientSchema), - defaultValues: state, - }); - - const { - data: customerId, - mutateAsync: mutateCustomer, - isSuccess: customerIsSuccess, - } = useCreateCustomer(); - const { mutateAsync: mutateTenant, isSuccess: tenantIsSuccess } = - useCreateTenant(); - - const onSubmit: SubmitHandler = async (values) => { - try { - await mutateTenant(values); - await mutateCustomer(values); - } catch (error) { - console.error(`Something went wrong: ${error}`); - } - }; - - useEffect(() => { - if (tenantIsSuccess && customerIsSuccess) { - setState({ ...state, customerId }); - router.push(Routes.SITE.REGISTER.PLAN); - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [tenantIsSuccess, customerIsSuccess, customerId]); - - useEffect(() => { - setDisabled(!isValid || isSubmitting); - }, [isValid, isSubmitting]); - - return ( - -
-
-
- - Confirm - -

Confirm the information

-
-
-

Company

-
-

Name

-

{state.company}

-
-
-

Email

-

{state.companyEmail}

-
-
-

Domain

-

- {state.domain || 'No domain'} -

-
-
-
-

User

-
-

Email

-

{state.email}

-
-
-
-
- - -
-
-
- ); -} - -export default Confirm; diff --git a/src/pages/register/index.tsx b/src/pages/register/index.tsx deleted file mode 100644 index d2b3bca0a..000000000 --- a/src/pages/register/index.tsx +++ /dev/null @@ -1,117 +0,0 @@ -import { zodResolver } from '@hookform/resolvers/zod'; -import { useAtom } from 'jotai'; -import { MoveRight } from 'lucide-react'; -import Link from 'next/link'; -import { useRouter } from 'next/router'; -import { SubmitHandler, useForm } from 'react-hook-form'; -import { z } from 'zod'; - -import { Button, Field, Input } from '@/components'; -import { AuthLayout } from '@/layouts'; -import { registerCompanyClientSchema } from '@/lib'; -import { registerAtom } from '@/store'; -import { ITenantCreateFields } from '@/types'; -import { Routes } from '@/utils'; - -type Schema = z.infer; - -function Company() { - const [state, setState] = useAtom(registerAtom); - const router = useRouter(); - - const { - handleSubmit, - register, - formState: { errors, isValid }, - } = useForm({ - resolver: zodResolver(registerCompanyClientSchema), - mode: 'onBlur', - defaultValues: state, - }); - - const saveData: SubmitHandler = (values) => { - setState({ ...state, ...values }); - router.push(Routes.SITE.REGISTER.USER); - }; - - const fields: ITenantCreateFields[] = [ - { - label: 'Name', - value: 'company', - type: 'text', - }, - { - label: 'Email', - value: 'companyEmail', - type: 'email', - }, - { - label: 'Domain', - value: 'domain', - type: 'text', - info: `Fill this field if you have a personalized domain name used for your users' email`, - }, - ]; - - return ( - -
-
-
- - Company - -

Your company details

-
- {fields.map((field) => ( - - - - ))} -
- -

- Already have an account ?{' '} - - Login - -

-
-
- ); -} - -export default Company; diff --git a/src/pages/register/plan.tsx b/src/pages/register/plan.tsx deleted file mode 100644 index 46236467f..000000000 --- a/src/pages/register/plan.tsx +++ /dev/null @@ -1,178 +0,0 @@ -import { useEffect, useMemo } from 'react'; - -import { useAtom } from 'jotai'; -import { RESET } from 'jotai/utils'; -import { Check, Minus, MoveRight, Wallet } from 'lucide-react'; -import { useRouter } from 'next/router'; -import { useForm } from 'react-hook-form'; - -import { Button, errorToast, successToast } from '@/components'; -import { useCreateCheckout } from '@/hooks'; -import { AuthLayout } from '@/layouts'; -import { registerAtom } from '@/store'; -import { IPlan } from '@/types'; -import { Routes } from '@/utils'; - -function Plan() { - const [state, setState] = useAtom(registerAtom); - - const { handleSubmit } = useForm(); - const router = useRouter(); - const { status } = router.query; - - const { mutate } = useCreateCheckout(state.customerId); - - const saveData = (value: IPlan['value'], lookup_key: string) => { - if (value === 'free') { - setState(RESET); - router.push(Routes.SITE.LOGIN); - } else { - return mutate(lookup_key); - } - }; - - const plans: IPlan[] = useMemo( - () => [ - { - label: 'Free', - value: 'free', - price: 0, - lookup_key: 'free_monthly', - message: 'Perfect to try out', - benefits: ['5 users', '3 tags', 'Unlimited questions'], - drawbacks: ['Slack integration'], - }, - { - label: 'Startup', - value: 'startup', - price: 19, - lookup_key: 'startup_monthly', - message: 'Perfect for startups', - benefits: [ - '100 users', - '10 tags', - 'Unlimited questions', - 'Slack integration', - ], - }, - { - label: 'Enterprise', - value: 'enterprise', - price: 29, - lookup_key: 'enterprise_monthly', - message: 'Perfect for big companies', - benefits: [ - 'Unlimited users', - 'Unlimited tags', - 'Unlimited questions', - 'Slack integration', - ], - }, - ], - [], - ); - - useEffect(() => { - if (status === 'success') { - successToast('Payment successful'); - setState(RESET); - router.push(Routes.SITE.LOGIN); - } else if (status === 'cancel') { - errorToast('Payment unsuccessful'); - } - - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [status, router.isReady]); - - return ( - -
-
-

- Plan -

-

Choose the right plan for you

-
-
- {plans.map((plan, index) => ( -
- saveData(plan.value, plan.lookup_key), - )} - key={index} - className="w-full overflow-hidden rounded-md bg-grayA-3 p-4 text-center text-gray-12 shadow-sm shadow-tealA-7 transition-all duration-300 hover:shadow-tealA-8" - > -
-

- {plan.label} -

-

- ${plan.price}/mo -

-
-
-

- {plan.message} -

-
-
    - {plan.benefits.map((benefit, index) => ( -
  • - -

    {benefit}

    -
  • - ))} - {plan.drawbacks?.map((drawback, index) => ( -
  • - -

    {drawback}

    -
  • - ))} -
-
- {plan.value === 'free' ? ( - - ) : ( - - )} -
-
-
- ))} -
-
-
- ); -} - -export default Plan; diff --git a/src/pages/register/user.tsx b/src/pages/register/user.tsx deleted file mode 100644 index 9b3adfd81..000000000 --- a/src/pages/register/user.tsx +++ /dev/null @@ -1,106 +0,0 @@ -import { zodResolver } from '@hookform/resolvers/zod'; -import { useAtom } from 'jotai'; -import { MoveLeft, MoveRight } from 'lucide-react'; -import Link from 'next/link'; -import { useRouter } from 'next/router'; -import { SubmitHandler, useForm } from 'react-hook-form'; -import { z } from 'zod'; - -import { Button, Field, Input } from '@/components'; -import { AuthLayout } from '@/layouts'; -import { registerUserClientSchema } from '@/lib'; -import { registerAtom } from '@/store'; -import { Routes } from '@/utils'; - -type Schema = z.infer; - -function Register() { - const [state, setState] = useAtom(registerAtom); - const router = useRouter(); - - const { - register, - handleSubmit, - formState: { isValid, errors }, - } = useForm({ - resolver: zodResolver(registerUserClientSchema), - mode: 'onBlur', - defaultValues: state, - }); - - const saveData: SubmitHandler = (values) => { - setState({ ...state, ...values }); - router.push(Routes.SITE.REGISTER.CONFIRM); - }; - - return ( - -
-
-
- - User - -

Your connection mail

-
- - - -
-
- - -
-

- Already have an account ?{' '} - - Login - -

-
-
- ); -} - -export default Register; diff --git a/tailwind.config.js b/tailwind.config.js index c0ad16122..52fa3afce 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -2,7 +2,6 @@ module.exports = { content: [ './src/**/*.{js,ts,jsx,tsx,mdx}', - './node_modules/@tremor/**/*.{js,ts,jsx,tsx}', ], darkMode: 'class', theme: { diff --git a/tsconfig.json b/tsconfig.json index 32f02388f..dc229df1b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -18,13 +18,20 @@ "paths": { "@/*": ["./src/*"], "@/public/*": ["./public/*"] - } + }, + "plugins": [ + { + "name": "next" + } + ], + "strictNullChecks": true }, "include": [ "next-env.d.ts", "src/**/*.ts", "src/**/*.tsx", - ".next/types/**/*.ts" + ".next/types/**/*.ts", + "src/app/login" ], "exclude": ["node_modules"] } From 535f054bbf3a93d8247ba211a71a4d5513cd1209 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 8 Apr 2024 17:01:01 +0200 Subject: [PATCH 016/326] :zap: add preload to server actions fetching data --- src/actions/get-integration/index.ts | 5 +++++ src/actions/get-nodes-count/index.ts | 5 +++++ src/actions/get-search-nodes/index.ts | 12 +++++++++++- src/actions/get-search-tags/index.ts | 12 +++++++++++- src/actions/get-tags/index.ts | 5 +++++ src/actions/get-tenant/index.ts | 5 +++++ src/actions/get-user/index.ts | 5 +++++ src/actions/get-users-count/index.ts | 5 +++++ src/actions/get-users/index.ts | 5 +++++ 9 files changed, 57 insertions(+), 2 deletions(-) diff --git a/src/actions/get-integration/index.ts b/src/actions/get-integration/index.ts index de098e58e..93aaae079 100644 --- a/src/actions/get-integration/index.ts +++ b/src/actions/get-integration/index.ts @@ -3,6 +3,11 @@ import { cache } from 'react'; import prisma from 'lib/prisma'; +import 'server-only'; + +export const preload = (tenantId: string) => { + void getIntegration(tenantId); +}; export const getIntegration = cache(async (tenantId: string) => { try { diff --git a/src/actions/get-nodes-count/index.ts b/src/actions/get-nodes-count/index.ts index e53d14097..08aa1ae40 100644 --- a/src/actions/get-nodes-count/index.ts +++ b/src/actions/get-nodes-count/index.ts @@ -3,6 +3,11 @@ import { cache } from 'react'; import prisma from 'lib/prisma'; +import 'server-only'; + +export const preload = (tenantId: string) => { + void getNodesCount(tenantId); +}; export const getNodesCount = cache(async (tenantId: string) => { try { diff --git a/src/actions/get-search-nodes/index.ts b/src/actions/get-search-nodes/index.ts index 798099bfa..2b773af6a 100644 --- a/src/actions/get-search-nodes/index.ts +++ b/src/actions/get-search-nodes/index.ts @@ -6,8 +6,18 @@ import { nodeModel } from '@/utils'; import prisma from 'lib/prisma'; import { getSearchSchema } from './schema'; +import 'server-only'; -export const getSearchNodes = cache(async (body) => { +type Props = { + tenantId: string; + searchQuery: string; +}; + +export const preload = (body: Props) => { + void getSearchNodes(body); +}; + +export const getSearchNodes = cache(async (body: Props) => { try { if (!body) { return { error: 'Tenant not found' }; diff --git a/src/actions/get-search-tags/index.ts b/src/actions/get-search-tags/index.ts index c78ac7396..7929a8746 100644 --- a/src/actions/get-search-tags/index.ts +++ b/src/actions/get-search-tags/index.ts @@ -6,8 +6,18 @@ import { nodeModel } from '@/utils'; import prisma from 'lib/prisma'; import { getTagSearchSchema } from './schema'; +import 'server-only'; -export const getSearchTags = cache(async (body) => { +type Props = { + tenantId: string; + searchTag: string; +}; + +export const preload = (body: Props) => { + void getSearchTags(body); +}; + +export const getSearchTags = cache(async (body: Props) => { try { if (!body) { return { error: 'Tenant not found' }; diff --git a/src/actions/get-tags/index.ts b/src/actions/get-tags/index.ts index 67a4608a3..3eab23d8f 100644 --- a/src/actions/get-tags/index.ts +++ b/src/actions/get-tags/index.ts @@ -3,6 +3,11 @@ import { cache } from 'react'; import prisma from 'lib/prisma'; +import 'server-only'; + +export const preload = (tenantId: string) => { + void getTags(tenantId); +}; export const getTags = cache(async (tenantId: string) => { try { diff --git a/src/actions/get-tenant/index.ts b/src/actions/get-tenant/index.ts index 83e6c75fc..aa6d1533d 100644 --- a/src/actions/get-tenant/index.ts +++ b/src/actions/get-tenant/index.ts @@ -3,6 +3,11 @@ import { cache } from 'react'; import prisma from 'lib/prisma'; +import 'server-only'; + +export const preload = (tenantId: string) => { + void getTenant(tenantId); +}; export const getTenant = cache(async (tenantId: string) => { try { diff --git a/src/actions/get-user/index.ts b/src/actions/get-user/index.ts index f6541d2f9..5c43d01d2 100644 --- a/src/actions/get-user/index.ts +++ b/src/actions/get-user/index.ts @@ -3,6 +3,11 @@ import { cache } from 'react'; import prisma from 'lib/prisma'; +import 'server-only'; + +export const preload = (id: string) => { + void getUser(id); +}; export const getUser = cache(async (id: string) => { try { diff --git a/src/actions/get-users-count/index.ts b/src/actions/get-users-count/index.ts index d8389723a..2d52c7786 100644 --- a/src/actions/get-users-count/index.ts +++ b/src/actions/get-users-count/index.ts @@ -3,6 +3,11 @@ import { cache } from 'react'; import prisma from 'lib/prisma'; +import 'server-only'; + +export const preload = (tenantId: string) => { + void getUsersCount(tenantId); +}; export const getUsersCount = cache(async (tenantId: string) => { try { diff --git a/src/actions/get-users/index.ts b/src/actions/get-users/index.ts index 6f3e52cd1..9db2ab71f 100644 --- a/src/actions/get-users/index.ts +++ b/src/actions/get-users/index.ts @@ -3,6 +3,11 @@ import { cache } from 'react'; import prisma from 'lib/prisma'; +import 'server-only'; + +export const preload = (tenantId: string) => { + void getUsers(tenantId); +}; export const getUsers = cache(async (tenantId: string) => { try { From c3dae76f570c012b533fa2f710478e1c6d9cbd8d Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 8 Apr 2024 17:01:33 +0200 Subject: [PATCH 017/326] :heavy_plus_sign: install next-safe-action --- package.json | 1 + pnpm-lock.yaml | 91 ++++++++++++++++++++++++++++++++++++++++++ src/lib/index.ts | 1 + src/lib/safe-action.ts | 3 ++ 4 files changed, 96 insertions(+) create mode 100644 src/lib/safe-action.ts diff --git a/package.json b/package.json index 5d0cd6835..2f2bba400 100644 --- a/package.json +++ b/package.json @@ -61,6 +61,7 @@ "next-auth": "^4.24.5", "next-connect": "^0.13.0", "next-remove-imports": "^1.0.12", + "next-safe-action": "^6.2.0", "next-themes": "^0.2.1", "react": "18.2.0", "react-dom": "18.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8cf3d22a3..1d916c098 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -95,6 +95,9 @@ dependencies: next-remove-imports: specifier: ^1.0.12 version: 1.0.12(webpack@5.89.0) + next-safe-action: + specifier: ^6.2.0 + version: 6.2.0(ajv@8.12.0)(next@14.1.0)(react@18.2.0) next-themes: specifier: ^0.2.1 version: 0.2.1(next@14.1.0)(react-dom@18.2.0)(react@18.2.0) @@ -637,6 +640,64 @@ packages: dependencies: '@jridgewell/trace-mapping': 0.3.9 + /@decs/typeschema@0.12.2(ajv@8.12.0)(zod@3.22.4): + resolution: {integrity: sha512-PA8uAH/Xfsa5X2UNNSnb5i6vB8qWZywp4+d2U8kNMCO7qwirYRPbFCHwIfWBJyURh4rULn3Ey+VBADLcK2xxaQ==} + deprecated: TypeSchema has been restructured. Install @typeschema/main or @typeschema/all instead. + peerDependencies: + '@deepkit/type': ^1.0.1-alpha.113 + '@effect/schema': ^0.60.6 + '@sinclair/typebox': ^0.32.11 + ajv: ^8.12.0 + arktype: ^1.0.29-alpha + effect: ^2.1.2 + fp-ts: ^2.16.2 + io-ts: ^2.2.21 + joi: ^17.12.0 + ow: ^0.28.2 + runtypes: ^6.7.0 + superstruct: ^1.0.3 + valibot: ^0.26.0 + vite: ^5.0.12 + yup: ^1.3.3 + zod: ^3.22.4 + peerDependenciesMeta: + '@deepkit/type': + optional: true + '@effect/schema': + optional: true + '@sinclair/typebox': + optional: true + ajv: + optional: true + arktype: + optional: true + effect: + optional: true + fp-ts: + optional: true + io-ts: + optional: true + joi: + optional: true + ow: + optional: true + runtypes: + optional: true + superstruct: + optional: true + valibot: + optional: true + vite: + optional: true + yup: + optional: true + zod: + optional: true + dependencies: + ajv: 8.12.0 + zod: 3.22.4 + dev: false + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -6019,6 +6080,36 @@ packages: - webpack dev: false + /next-safe-action@6.2.0(ajv@8.12.0)(next@14.1.0)(react@18.2.0): + resolution: {integrity: sha512-gssUs3OLoNjLXZalrQaly38s/mUtXsIcKWGIK3jFkW8GHl0/Xhq+3G8yEEyObET2YlYqUj79K+mH3iTNBLDcMw==} + engines: {node: '>=18.17'} + peerDependencies: + next: '>= 14.0.0' + react: '>= 18.2.0' + dependencies: + '@decs/typeschema': 0.12.2(ajv@8.12.0)(zod@3.22.4) + next: 14.1.0(@babel/core@7.22.17)(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + optionalDependencies: + zod: 3.22.4 + transitivePeerDependencies: + - '@deepkit/type' + - '@effect/schema' + - '@sinclair/typebox' + - ajv + - arktype + - effect + - fp-ts + - io-ts + - joi + - ow + - runtypes + - superstruct + - valibot + - vite + - yup + dev: false + /next-themes@0.2.1(next@14.1.0)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==} peerDependencies: diff --git a/src/lib/index.ts b/src/lib/index.ts index a37f29790..1d28df413 100644 --- a/src/lib/index.ts +++ b/src/lib/index.ts @@ -1,2 +1,3 @@ export * from './client'; export * from './server'; +export * from './safe-action'; diff --git a/src/lib/safe-action.ts b/src/lib/safe-action.ts new file mode 100644 index 000000000..2f9142094 --- /dev/null +++ b/src/lib/safe-action.ts @@ -0,0 +1,3 @@ +import { createSafeActionClient } from 'next-safe-action'; + +export const action = createSafeActionClient(); From 8eaa8f0b3d2f75a30ffc7c274742a4d10a74b949 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 8 Apr 2024 17:02:12 +0200 Subject: [PATCH 018/326] :recycle: add server actions to create node --- src/actions/create-node/index.ts | 71 +++++++++++++++++++++++++++++++ src/actions/create-node/schema.ts | 14 ++++++ 2 files changed, 85 insertions(+) create mode 100644 src/actions/create-node/schema.ts diff --git a/src/actions/create-node/index.ts b/src/actions/create-node/index.ts index e69de29bb..1af93a43c 100644 --- a/src/actions/create-node/index.ts +++ b/src/actions/create-node/index.ts @@ -0,0 +1,71 @@ +'use server'; + +import { revalidatePath } from 'next/cache'; +import { getServerSession } from 'next-auth'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import { action } from '@/lib'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { createNodeSchema } from './schema'; + +type Props = { + text: string; + slug: string; + tenantId: string; + userId: string; + tags: string[]; + withAnswer: boolean; +}; + +export const preload = (body: Props) => { + void createNode(body); +}; + +export const createNode = action(createNodeSchema, async (body: Props) => { + try { + if (!body) { + return { error: 'Data not provided' }; + } + const session = await getServerSession(authOptions); + if (session) { + const result = createNodeSchema.safeParse(body); + if (result.success === false) { + const errors = result.error.formErrors.fieldErrors; + return { error: 'Invalid request' + errors }; + } else { + const { text, slug, tenantId, userId, tags, withAnswer } = result.data; + const duplicateQuestion = await prisma.node.findFirst({ + where: { tenantId, question: { text: text } }, + }); + if (duplicateQuestion) { + return { error: 'This question already exists' }; + } + const node = await prisma.node.create({ + data: { + tenant: { connect: { id: tenantId } }, + question: { + create: { text, slug, user: { connect: { id: userId } } }, + }, + tags: { + connect: tags.map((tag) => ({ id: tag })), + }, + }, + }); + if (withAnswer) { + return { + node, + message: 'Question created successfully', + }; + } + revalidatePath('/'); + return { message: 'Question created successfully' }; + } + } else { + return { error: 'Not signed in' }; + } + } catch (error) { + return { error: 'Error creating question' }; + } +}); diff --git a/src/actions/create-node/schema.ts b/src/actions/create-node/schema.ts new file mode 100644 index 000000000..ae3d60960 --- /dev/null +++ b/src/actions/create-node/schema.ts @@ -0,0 +1,14 @@ +import { z } from 'zod'; + +export const createNodeSchema = z.object({ + text: z + .string() + .trim() + .min(3, { message: 'Question must be at least 3 characters long' }) + .max(100, { message: 'Question must be under 100 characters long' }), + slug: z.string(), + tenantId: z.string().cuid2(), + userId: z.string().cuid2(), + tags: z.array(z.string().cuid2()), + withAnswer: z.boolean().optional(), +}); From 8e83f1e4c28953bc2cb7286e4c899072957af10e Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 8 Apr 2024 17:02:56 +0200 Subject: [PATCH 019/326] :lipstick: uncomment ThemeToggle --- src/app/login/layout.tsx | 6 ++++-- src/app/register/layout.tsx | 10 ++++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/app/login/layout.tsx b/src/app/login/layout.tsx index 7ba235703..8b54f371a 100644 --- a/src/app/login/layout.tsx +++ b/src/app/login/layout.tsx @@ -1,5 +1,7 @@ import { ReactNode } from 'react'; +import { ThemeToggle } from '@/modules'; + type Props = { children: ReactNode; }; @@ -7,9 +9,9 @@ type Props = { export default function Layout({ children }: Props) { return (
- {/*
+
-
*/} +
{children}
diff --git a/src/app/register/layout.tsx b/src/app/register/layout.tsx index e14aac936..ff3da6f2a 100644 --- a/src/app/register/layout.tsx +++ b/src/app/register/layout.tsx @@ -1,5 +1,7 @@ import { ReactNode } from 'react'; +import { Stepper } from '@/components'; +import { ThemeToggle } from '@/modules'; import { TSteps } from '@/types'; type Props = { @@ -23,12 +25,12 @@ export default function AuthLayout({ }: Props) { return (
- {/*
+
-
*/} - {/* {!noStepper && currentStep && ( +
+ {!noStepper && currentStep && ( - )} */} + )} {hasBackground ? (
{children} From 004f8ad0f6c02ea6852da2bcb89d006286fb98c2 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 8 Apr 2024 17:03:14 +0200 Subject: [PATCH 020/326] :rotating_light: run lint + prettier --- src/app/home.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/app/home.tsx b/src/app/home.tsx index 5e614abe6..a3be9a787 100644 --- a/src/app/home.tsx +++ b/src/app/home.tsx @@ -31,6 +31,7 @@ export default function Home({ me }: Props) { let nodes: ExtendedNode[] = []; let message = 'Ask a question'; + const { data: initialNodes, isPending, From 495a347927af7e1ae6db75a7e741f8bc87c839b8 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Mon, 8 Apr 2024 20:27:42 +0200 Subject: [PATCH 021/326] :bug: fix problem with callbackUrl being empty --- src/components/button/LoginButton.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/button/LoginButton.tsx b/src/components/button/LoginButton.tsx index 50b673382..f3e1ffe2d 100644 --- a/src/components/button/LoginButton.tsx +++ b/src/components/button/LoginButton.tsx @@ -21,7 +21,7 @@ export const LoginButton = ({ callbackUrl }: Props) => { type="submit" className="lowercase" style={{ fontVariant: 'small-caps' }} - onClick={() => signIn(`google`, { callbackUrl: '/' })} + onClick={() => signIn(`google`, { callbackUrl: callbackUrl ?? '/' })} > Sign In with Google From ab8211dd822f34cf609908ed5c3332bb764c7b31 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Mon, 8 Apr 2024 20:28:12 +0200 Subject: [PATCH 022/326] :fire: remove preload --- src/actions/create-node/index.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/actions/create-node/index.ts b/src/actions/create-node/index.ts index 1af93a43c..252a881de 100644 --- a/src/actions/create-node/index.ts +++ b/src/actions/create-node/index.ts @@ -19,10 +19,6 @@ type Props = { withAnswer: boolean; }; -export const preload = (body: Props) => { - void createNode(body); -}; - export const createNode = action(createNodeSchema, async (body: Props) => { try { if (!body) { From 772fc71f58978c98d9283638803e2048a7528c6a Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Tue, 9 Apr 2024 14:32:24 +0200 Subject: [PATCH 023/326] :fire: remove preload + use server --- src/actions/get-integration/index.ts | 6 ------ src/actions/get-me/index.ts | 2 -- src/actions/get-nodes-count/index.ts | 6 ------ src/actions/get-nodes/index.ts | 10 ++-------- src/actions/get-search-nodes/index.ts | 6 ------ src/actions/get-search-tags/index.ts | 6 ------ src/actions/get-tags/index.ts | 6 ------ src/actions/get-tenant/index.ts | 6 ------ src/actions/get-user/index.ts | 6 ------ src/actions/get-users-count/index.ts | 6 ------ src/actions/get-users/index.ts | 6 ------ 11 files changed, 2 insertions(+), 64 deletions(-) diff --git a/src/actions/get-integration/index.ts b/src/actions/get-integration/index.ts index 93aaae079..904d6c628 100644 --- a/src/actions/get-integration/index.ts +++ b/src/actions/get-integration/index.ts @@ -1,14 +1,8 @@ -'use server'; - import { cache } from 'react'; import prisma from 'lib/prisma'; import 'server-only'; -export const preload = (tenantId: string) => { - void getIntegration(tenantId); -}; - export const getIntegration = cache(async (tenantId: string) => { try { if (!tenantId) { diff --git a/src/actions/get-me/index.ts b/src/actions/get-me/index.ts index 62bcfb429..1749d0cf8 100644 --- a/src/actions/get-me/index.ts +++ b/src/actions/get-me/index.ts @@ -1,5 +1,3 @@ -'use server'; - import { cache } from 'react'; import { getServerSession } from 'next-auth'; diff --git a/src/actions/get-nodes-count/index.ts b/src/actions/get-nodes-count/index.ts index 08aa1ae40..82f9c4462 100644 --- a/src/actions/get-nodes-count/index.ts +++ b/src/actions/get-nodes-count/index.ts @@ -1,14 +1,8 @@ -'use server'; - import { cache } from 'react'; import prisma from 'lib/prisma'; import 'server-only'; -export const preload = (tenantId: string) => { - void getNodesCount(tenantId); -}; - export const getNodesCount = cache(async (tenantId: string) => { try { if (!tenantId) { diff --git a/src/actions/get-nodes/index.ts b/src/actions/get-nodes/index.ts index 236f1617f..dc559149b 100644 --- a/src/actions/get-nodes/index.ts +++ b/src/actions/get-nodes/index.ts @@ -1,5 +1,3 @@ -'use server'; - import { cache } from 'react'; import { OFFSET, nodeModel } from '@/utils'; @@ -13,10 +11,6 @@ type Props = { page: number; }; -export const preload = (body: Props) => { - void getPaginatedNodes(body); -}; - export const getPaginatedNodes = cache(async (body: Props) => { try { if (!body) { @@ -42,7 +36,7 @@ export const getPaginatedNodes = cache(async (body: Props) => { } }); -export const getAllNodes = async (tenantId: string) => { +export const getAllNodes = cache(async (tenantId: string) => { try { if (!tenantId) { return { error: 'Tenant not found' }; @@ -59,4 +53,4 @@ export const getAllNodes = async (tenantId: string) => { } catch (error) { return { error: 'Error fetching nodes' }; } -}; +}); diff --git a/src/actions/get-search-nodes/index.ts b/src/actions/get-search-nodes/index.ts index 2b773af6a..39b7628ab 100644 --- a/src/actions/get-search-nodes/index.ts +++ b/src/actions/get-search-nodes/index.ts @@ -1,5 +1,3 @@ -'use server'; - import { cache } from 'react'; import { nodeModel } from '@/utils'; @@ -13,10 +11,6 @@ type Props = { searchQuery: string; }; -export const preload = (body: Props) => { - void getSearchNodes(body); -}; - export const getSearchNodes = cache(async (body: Props) => { try { if (!body) { diff --git a/src/actions/get-search-tags/index.ts b/src/actions/get-search-tags/index.ts index 7929a8746..f36583b19 100644 --- a/src/actions/get-search-tags/index.ts +++ b/src/actions/get-search-tags/index.ts @@ -1,5 +1,3 @@ -'use server'; - import { cache } from 'react'; import { nodeModel } from '@/utils'; @@ -13,10 +11,6 @@ type Props = { searchTag: string; }; -export const preload = (body: Props) => { - void getSearchTags(body); -}; - export const getSearchTags = cache(async (body: Props) => { try { if (!body) { diff --git a/src/actions/get-tags/index.ts b/src/actions/get-tags/index.ts index 3eab23d8f..cbd2a6041 100644 --- a/src/actions/get-tags/index.ts +++ b/src/actions/get-tags/index.ts @@ -1,14 +1,8 @@ -'use server'; - import { cache } from 'react'; import prisma from 'lib/prisma'; import 'server-only'; -export const preload = (tenantId: string) => { - void getTags(tenantId); -}; - export const getTags = cache(async (tenantId: string) => { try { if (!tenantId) { diff --git a/src/actions/get-tenant/index.ts b/src/actions/get-tenant/index.ts index aa6d1533d..06a1fb63f 100644 --- a/src/actions/get-tenant/index.ts +++ b/src/actions/get-tenant/index.ts @@ -1,14 +1,8 @@ -'use server'; - import { cache } from 'react'; import prisma from 'lib/prisma'; import 'server-only'; -export const preload = (tenantId: string) => { - void getTenant(tenantId); -}; - export const getTenant = cache(async (tenantId: string) => { try { if (!tenantId) { diff --git a/src/actions/get-user/index.ts b/src/actions/get-user/index.ts index 5c43d01d2..f0e8cca20 100644 --- a/src/actions/get-user/index.ts +++ b/src/actions/get-user/index.ts @@ -1,14 +1,8 @@ -'use server'; - import { cache } from 'react'; import prisma from 'lib/prisma'; import 'server-only'; -export const preload = (id: string) => { - void getUser(id); -}; - export const getUser = cache(async (id: string) => { try { if (!id) { diff --git a/src/actions/get-users-count/index.ts b/src/actions/get-users-count/index.ts index 2d52c7786..33ab1fc5f 100644 --- a/src/actions/get-users-count/index.ts +++ b/src/actions/get-users-count/index.ts @@ -1,14 +1,8 @@ -'use server'; - import { cache } from 'react'; import prisma from 'lib/prisma'; import 'server-only'; -export const preload = (tenantId: string) => { - void getUsersCount(tenantId); -}; - export const getUsersCount = cache(async (tenantId: string) => { try { if (!tenantId) { diff --git a/src/actions/get-users/index.ts b/src/actions/get-users/index.ts index 9db2ab71f..b57fa4724 100644 --- a/src/actions/get-users/index.ts +++ b/src/actions/get-users/index.ts @@ -1,14 +1,8 @@ -'use server'; - import { cache } from 'react'; import prisma from 'lib/prisma'; import 'server-only'; -export const preload = (tenantId: string) => { - void getUsers(tenantId); -}; - export const getUsers = cache(async (tenantId: string) => { try { if (!tenantId) { From a3e68294f8cfc6e39cdad4f8198bfb8e0c1c6e1c Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Tue, 9 Apr 2024 14:34:04 +0200 Subject: [PATCH 024/326] :recycle: remove the use of react-query --- src/app/home.tsx | 42 ++++++++------------------------------- src/app/page.tsx | 39 ++++++++++-------------------------- src/modules/list/List.tsx | 16 +-------------- 3 files changed, 20 insertions(+), 77 deletions(-) diff --git a/src/app/home.tsx b/src/app/home.tsx index a3be9a787..4208aa359 100644 --- a/src/app/home.tsx +++ b/src/app/home.tsx @@ -1,56 +1,40 @@ 'use client'; -import { useEffect, useState } from 'react'; +import { useState } from 'react'; +import { Tag } from '@prisma/client'; import { useSearchParams } from 'next/navigation'; import { Pagination } from '@/components'; -import { - useNodes, - useNodesCount, - useSearchNodes, - useSearchTags, - useTags, -} from '@/hooks'; +import { useSearchNodes, useSearchTags } from '@/hooks'; import { Footer, Header, List, Search } from '@/modules'; import { ExtendedNode, UserWithTenant } from '@/types'; import { OFFSET } from '@/utils'; type Props = { me: UserWithTenant; + allNodes: ExtendedNode[]; + nodesCount: number; + tags: Tag[]; }; -export default function Home({ me }: Props) { +export default function Home({ me, allNodes, nodesCount, tags }: Props) { const search = useSearchParams(); const [searchQuery, setSearchQuery] = useState( search.get('search') ?? null, ); const [searchTag, setSearchTag] = useState(null); - const [isLoading, setIsLoading] = useState(false); const [page, setPage] = useState(0); let nodes: ExtendedNode[] = []; let message = 'Ask a question'; - const { - data: initialNodes, - isPending, - isError, - error, - } = useNodes(me.tenantId, page); - const { data: filteredNodes, isLoading: isSearchLoading } = useSearchNodes( me.tenantId, searchQuery, ); const { data: filteredTags } = useSearchTags(me.tenantId, searchTag); - const { data: nodesCount, isPending: isNodesCountLoading } = useNodesCount( - me.tenantId, - ); - - const { data: tags } = useTags(me.tenantId); - if (searchQuery) { if (filteredNodes && filteredNodes.length > 0) { nodes = filteredNodes; @@ -69,10 +53,6 @@ export default function Home({ me }: Props) { nodes = initialNodes ?? []; } - useEffect(() => { - setIsLoading(isPending || isSearchLoading || isNodesCountLoading); - }, [isPending, isSearchLoading, isNodesCountLoading]); - return (
@@ -83,13 +63,7 @@ export default function Home({ me }: Props) { setSearchTag={setSearchTag} setPage={setPage} /> - + {nodesCount > OFFSET && (nodes.length === OFFSET || page !== 0) && ( )} diff --git a/src/app/page.tsx b/src/app/page.tsx index d4e77faff..e644a23e2 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,44 +1,27 @@ -import { - HydrationBoundary, - QueryClient, - dehydrate, -} from '@tanstack/react-query'; import { redirect } from 'next/navigation'; -import { getAllNodes, getMe, getNodesCount, getTags } from '@/actions'; -import { QueryKeys, Routes } from '@/utils'; +import { getMe, getNodesCount, getPaginatedNodes, getTags } from '@/actions'; +import { Routes } from '@/utils'; import Home from './home'; -export default async function Page() { +export default async function Page({ searchParams }) { const me = await getMe(); if (!me) { redirect(Routes.SITE.LOGIN); } - const queryClient = new QueryClient(); + const tenantId = me.tenantId; + const query = searchParams?.query || ''; + const page = Number(searchParams?.page) || 1; - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.ME, me.id], - queryFn: () => me, - }); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.NODES, me.tenantId], - queryFn: () => getAllNodes(me.tenantId), - }); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.NODES_COUNT, me.tenantId], - queryFn: () => getNodesCount(me.tenantId), - }); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.TAGS, me.tenantId], - queryFn: () => getTags(me.tenantId), - }); + const body = { tenantId, page }; + const allNodes = await getPaginatedNodes(body); + const nodesCount = await getNodesCount(tenantId); + const tags = await getTags(tenantId); return ( - - - + ); } diff --git a/src/modules/list/List.tsx b/src/modules/list/List.tsx index 979ec4eba..8673a86eb 100644 --- a/src/modules/list/List.tsx +++ b/src/modules/list/List.tsx @@ -1,4 +1,3 @@ -import { AxiosError } from 'axios'; import { BadgeCheck, BadgeHelp, BadgeInfo, ChevronDown } from 'lucide-react'; import dynamic from 'next/dynamic'; import Link from 'next/link'; @@ -6,11 +5,9 @@ import Link from 'next/link'; import { Badge, Button, - Loader, Tooltip, TooltipContent, TooltipTrigger, - errorToast, } from '@/components'; import { ExtendedNode } from '@/types'; import { Routes, dateOptions, timeOptions } from '@/utils'; @@ -20,21 +17,10 @@ const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { type Props = { nodes: ExtendedNode[]; - isLoading: boolean; - isError: boolean; - error: AxiosError; message: string; }; -export const List = ({ nodes, isLoading, isError, error, message }: Props) => { - if (isLoading) { - return ; - } - - if (isError && error instanceof Error) { - errorToast(error.message); - } - +export const List = ({ nodes, message }: Props) => { return (
{nodes.length > 0 ? ( From f4937707c24aa6a6f6a1fcb2e900f60d16ea22ae Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Tue, 9 Apr 2024 14:34:38 +0200 Subject: [PATCH 025/326] :construction: start working on pagination refacto --- src/components/pagination/Pagination.tsx | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/components/pagination/Pagination.tsx b/src/components/pagination/Pagination.tsx index 3b843a1a5..e3923fb6d 100644 --- a/src/components/pagination/Pagination.tsx +++ b/src/components/pagination/Pagination.tsx @@ -2,6 +2,7 @@ import { Dispatch, SetStateAction } from 'react'; +import { usePathname, useSearchParams } from 'next/navigation'; import ReactPaginate from 'react-paginate'; import { OFFSET } from '@/utils'; @@ -12,10 +13,20 @@ type Props = { }; export const Pagination = ({ setPage, nodesLength }: Props) => { + const pathname = usePathname(); + const searchParams = useSearchParams(); + const currentPage = Number(searchParams.get('page')) || 1; + const handlePageChange = (data: { selected: number }) => { setPage(data.selected); }; + const createPageURL = (pageNumber: number | string) => { + const params = new URLSearchParams(searchParams); + params.set('page', pageNumber.toString()); + return `${pathname}?${params.toString()}`; + }; + return (
Date: Tue, 9 Apr 2024 17:28:01 +0200 Subject: [PATCH 026/326] :recycle: use createPageUrl function --- src/components/pagination/Pagination.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/components/pagination/Pagination.tsx b/src/components/pagination/Pagination.tsx index e3923fb6d..1e032c3f3 100644 --- a/src/components/pagination/Pagination.tsx +++ b/src/components/pagination/Pagination.tsx @@ -21,8 +21,9 @@ export const Pagination = ({ setPage, nodesLength }: Props) => { setPage(data.selected); }; - const createPageURL = (pageNumber: number | string) => { + const createPageURL = (data: { selected: number }) => { const params = new URLSearchParams(searchParams); + const pageNumber = data.selected; params.set('page', pageNumber.toString()); return `${pathname}?${params.toString()}`; }; @@ -38,7 +39,7 @@ export const Pagination = ({ setPage, nodesLength }: Props) => { nextClassName="font-semibold h-10 px-2 flex items-center justify-center rounded-md hover:bg-gray-4" disabledClassName="text-gray-11 hover:text-gray-11 hover:!bg-transparent" breakLabel="..." - onPageChange={handlePageChange} + onPageChange={createPageURL} nextLabel="Next →" pageRangeDisplayed={3} marginPagesDisplayed={2} From 16991b308d94751b7aa0d1a4ce8fa47bc6c99f31 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Wed, 10 Apr 2024 18:43:09 +0200 Subject: [PATCH 027/326] :construction: wip server actions + form actions --- package.json | 3 +- pnpm-lock.yaml | 11 + src/actions/create-node/index.ts | 67 +++- src/actions/create-node/schema.ts | 8 + src/actions/get-integration/index.ts | 33 +- src/actions/get-me/index.ts | 15 +- src/actions/get-nodes-count/index.ts | 31 +- src/actions/get-nodes/index.ts | 51 +-- src/actions/get-search-nodes/index.ts | 1 - src/actions/get-search-tags/index.ts | 1 - src/actions/get-tags/index.ts | 33 +- src/actions/get-tenant/index.ts | 33 +- src/actions/get-user/index.ts | 1 - src/actions/get-users-count/index.ts | 31 +- src/actions/get-users/index.ts | 32 +- src/app/hello.tsx | 35 --- src/app/home.tsx | 38 +-- src/app/loading.tsx | 5 + src/app/page.tsx | 19 +- src/app/question/edit/page.tsx | 0 src/app/question/new/new.tsx | 297 ++++++++++++++++++ src/app/question/new/page.tsx | 24 ++ src/app/settings/page.tsx | 64 ++-- src/app/settings/settings.tsx | 137 ++++---- src/components/button/BackButton.tsx | 2 +- src/components/input/Input.tsx | 3 +- src/components/pagination/Pagination.tsx | 2 +- src/modules/header/Header.tsx | 204 ++++++------ src/modules/list/List.tsx | 23 +- src/modules/profile/Update.tsx | 4 +- src/modules/question/TagsList.tsx | 14 +- src/modules/settings/general/Data.tsx | 49 ++- src/modules/settings/general/General.tsx | 28 +- src/modules/settings/general/Integrations.tsx | 13 +- src/modules/settings/tags/Tags.tsx | 14 +- src/modules/settings/users/Users.tsx | 23 +- src/old/index.tsx | 4 +- src/old/profile.tsx | 4 +- src/old/question/[id].tsx | 4 +- src/old/question/answer.tsx | 4 +- src/old/question/edit.tsx | 4 +- src/old/question/new.tsx | 4 +- src/old/settings.tsx | 4 +- src/types/models/user.ts | 9 +- 44 files changed, 867 insertions(+), 519 deletions(-) delete mode 100644 src/app/hello.tsx create mode 100644 src/app/loading.tsx create mode 100644 src/app/question/edit/page.tsx create mode 100644 src/app/question/new/new.tsx create mode 100644 src/app/question/new/page.tsx diff --git a/package.json b/package.json index 2f2bba400..ae37e355b 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,8 @@ "uuid": "^9.0.1", "vaul": "^0.9.0", "wcag-contrast": "^3.0.0", - "zod": "^3.22.4" + "zod": "^3.22.4", + "zod-form-data": "^2.0.2" }, "devDependencies": { "@changesets/cli": "^2.27.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1d916c098..f47e4cdc9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -155,6 +155,9 @@ dependencies: zod: specifier: ^3.22.4 version: 3.22.4 + zod-form-data: + specifier: ^2.0.2 + version: 2.0.2(zod@3.22.4) devDependencies: '@changesets/cli': @@ -8587,6 +8590,14 @@ packages: engines: {node: '>=12.20'} dev: false + /zod-form-data@2.0.2(zod@3.22.4): + resolution: {integrity: sha512-sKTi+k0fvkxdakD0V5rq+9WVJA3cuTQUfEmNqvHrTzPLvjfLmkkBLfR0ed3qOi9MScJXTHIDH/jUNnEJ3CBX4g==} + peerDependencies: + zod: '>= 3.11.0' + dependencies: + zod: 3.22.4 + dev: false + /zod@3.22.4: resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} dev: false diff --git a/src/actions/create-node/index.ts b/src/actions/create-node/index.ts index 252a881de..73aa7962c 100644 --- a/src/actions/create-node/index.ts +++ b/src/actions/create-node/index.ts @@ -1,16 +1,17 @@ 'use server'; +import { IncomingWebhook } from '@slack/webhook'; import { revalidatePath } from 'next/cache'; import { getServerSession } from 'next-auth'; import { authOptions } from '@/app/api/auth/[...nextauth]/route'; -import { action } from '@/lib'; +import { dateOptions, timeOptions } from '@/utils'; import prisma from 'lib/prisma'; import 'server-only'; -import { createNodeSchema } from './schema'; +import { createNodeSchema, slackIntegrationSchema } from './schema'; -type Props = { +type CreateNodeData = { text: string; slug: string; tenantId: string; @@ -19,17 +20,19 @@ type Props = { withAnswer: boolean; }; -export const createNode = action(createNodeSchema, async (body: Props) => { +export const createNode = async (integrations, formData) => { try { - if (!body) { + if (!formData) { return { error: 'Data not provided' }; } + let data = Object.fromEntries(formData); + data.tags = data.tags.split(','); const session = await getServerSession(authOptions); if (session) { - const result = createNodeSchema.safeParse(body); + const result = createNodeSchema.safeParse(data); if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return { error: 'Invalid request' + errors }; + const errors = result.error.flatten().fieldErrors; + return { errors: 'Invalid request' + errors }; } else { const { text, slug, tenantId, userId, tags, withAnswer } = result.data; const duplicateQuestion = await prisma.node.findFirst({ @@ -38,6 +41,13 @@ export const createNode = action(createNodeSchema, async (body: Props) => { if (duplicateQuestion) { return { error: 'This question already exists' }; } + if (integrations.slack) { + const slackBody = { + text, + url: integrations.slack, + }; + await slackNotification(slackBody); + } const node = await prisma.node.create({ data: { tenant: { connect: { id: tenantId } }, @@ -56,6 +66,7 @@ export const createNode = action(createNodeSchema, async (body: Props) => { }; } revalidatePath('/'); + revalidatePath('/question/new'); return { message: 'Question created successfully' }; } } else { @@ -64,4 +75,42 @@ export const createNode = action(createNodeSchema, async (body: Props) => { } catch (error) { return { error: 'Error creating question' }; } -}); +}; + +export const slackNotification = async (body) => { + const result = slackIntegrationSchema.safeParse(body); + if (result.success === false) { + const errors = result.error.flatten().fieldErrors; + return { errors: 'Invalid request' + errors }; + } else { + const { url, text } = result.data; + const webhook = new IncomingWebhook(url); + await webhook.send({ + text, + blocks: [ + { + type: 'section', + text: { + type: 'mrkdwn', + text: `*${text}*`, + }, + }, + { + type: 'divider', + block_id: 'divider1', + }, + { + type: 'section', + text: { + type: 'mrkdwn', + text: `Asked on ${new Date().toLocaleDateString( + undefined, + dateOptions, + )} at ${new Date().toLocaleTimeString(undefined, timeOptions)}`, + }, + }, + ], + }); + return; + } +}; diff --git a/src/actions/create-node/schema.ts b/src/actions/create-node/schema.ts index ae3d60960..0f78c6fec 100644 --- a/src/actions/create-node/schema.ts +++ b/src/actions/create-node/schema.ts @@ -12,3 +12,11 @@ export const createNodeSchema = z.object({ tags: z.array(z.string().cuid2()), withAnswer: z.boolean().optional(), }); + +export const slackIntegrationSchema = z.object({ + text: z + .string() + .trim() + .min(3, { message: 'Question must be at least 3 characters long' }), + url: z.string().trim().url({ message: 'Invalid URL' }), +}); diff --git a/src/actions/get-integration/index.ts b/src/actions/get-integration/index.ts index 904d6c628..eb22e8d21 100644 --- a/src/actions/get-integration/index.ts +++ b/src/actions/get-integration/index.ts @@ -1,21 +1,24 @@ import { cache } from 'react'; +import { Integrations } from '@prisma/client'; + import prisma from 'lib/prisma'; -import 'server-only'; -export const getIntegration = cache(async (tenantId: string) => { - try { - if (!tenantId) { - return { error: 'Tenant not found' }; - } - const integrations = await prisma.integrations.findUnique({ - where: { tenantId }, - }); +export const getIntegration = cache( + async (tenantId: string): Promise => { + try { + if (!tenantId) { + throw new Error('Tenant not found'); + } + const integrations = await prisma.integrations.findUnique({ + where: { tenantId }, + }); - if (!integrations) return null; + if (!integrations) return null; - return integrations; - } catch (error) { - return { error: 'Error fetching integrations' }; - } -}); + return integrations; + } catch (error) { + throw new Error('Error fetching integrations'); + } + }, +); diff --git a/src/actions/get-me/index.ts b/src/actions/get-me/index.ts index 1749d0cf8..567939905 100644 --- a/src/actions/get-me/index.ts +++ b/src/actions/get-me/index.ts @@ -3,20 +3,25 @@ import { cache } from 'react'; import { getServerSession } from 'next-auth'; import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import { Me } from '@/types'; import prisma from 'lib/prisma'; -export const getMe = cache(async () => { +export const getMe = cache(async (): Promise => { try { const session = await getServerSession(authOptions); const id = session?.user?.id; - if (!id) return null; + if (!id) { + throw new Error('ID not found'); + } const me = await prisma.user.findUnique({ where: { id }, include: { tenant: { select: { company: true, logo: true } } }, }); - if (!me) return null; - return me; + if (!me) { + return null; + } + return me as Me; } catch (error) { - return { error: 'Error fetching user' }; + throw new Error('Error fetching user'); } }); diff --git a/src/actions/get-nodes-count/index.ts b/src/actions/get-nodes-count/index.ts index 82f9c4462..fcc5ae5c6 100644 --- a/src/actions/get-nodes-count/index.ts +++ b/src/actions/get-nodes-count/index.ts @@ -1,21 +1,22 @@ import { cache } from 'react'; import prisma from 'lib/prisma'; -import 'server-only'; -export const getNodesCount = cache(async (tenantId: string) => { - try { - if (!tenantId) { - return { error: 'Tenant not found' }; - } - const nodes = await prisma.node.count({ - where: { tenantId }, - }); +export const getNodesCount = cache( + async (tenantId: string): Promise => { + try { + if (!tenantId) { + throw new Error('Tenant not found'); + } + const nodes = await prisma.node.count({ + where: { tenantId }, + }); - if (!nodes) return 0; + if (!nodes) return 0; - return nodes; - } catch (error) { - return { error: 'Error fetching nodes count' }; - } -}); + return nodes; + } catch (error) { + throw new Error('Error fetching nodes count'); + } + }, +); diff --git a/src/actions/get-nodes/index.ts b/src/actions/get-nodes/index.ts index dc559149b..adb9a6bf6 100644 --- a/src/actions/get-nodes/index.ts +++ b/src/actions/get-nodes/index.ts @@ -1,40 +1,43 @@ import { cache } from 'react'; +import { ExtendedNode } from '@/types'; import { OFFSET, nodeModel } from '@/utils'; import prisma from 'lib/prisma'; import { getNodesSchema } from './schema'; -import 'server-only'; type Props = { tenantId: string; page: number; }; -export const getPaginatedNodes = cache(async (body: Props) => { - try { - if (!body) { - return { error: 'Tenant not found' }; +export const getPaginatedNodes = cache( + async (body: Props): Promise => { + try { + if (!body) { + throw new Error('Tenant not found'); + } + const result = getNodesSchema.safeParse(body); + if (result.success === false) { + const errors = result.error.formErrors.fieldErrors; + throw new Error('Invalid request' + errors); + } else { + const { tenantId, page } = result.data; + const nodes = await prisma.node.findMany({ + where: { tenantId: tenantId as string }, + orderBy: { createdAt: 'desc' }, + skip: page * OFFSET, + take: OFFSET, + include: nodeModel, + }); + if (!nodes) return null; + return nodes as ExtendedNode[]; + } + } catch (error) { + throw new Error('Error fetching nodes'); } - const result = getNodesSchema.safeParse(body); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return { error: 'Invalid request' + errors }; - } else { - const { tenantId, page } = result.data; - const nodes = await prisma.node.findMany({ - where: { tenantId: tenantId as string }, - orderBy: { createdAt: 'desc' }, - skip: page * OFFSET, - take: OFFSET, - include: nodeModel, - }); - return nodes; - } - } catch (error) { - return { error: 'Error fetching nodes' }; - } -}); + }, +); export const getAllNodes = cache(async (tenantId: string) => { try { diff --git a/src/actions/get-search-nodes/index.ts b/src/actions/get-search-nodes/index.ts index 39b7628ab..7ce57e1d5 100644 --- a/src/actions/get-search-nodes/index.ts +++ b/src/actions/get-search-nodes/index.ts @@ -4,7 +4,6 @@ import { nodeModel } from '@/utils'; import prisma from 'lib/prisma'; import { getSearchSchema } from './schema'; -import 'server-only'; type Props = { tenantId: string; diff --git a/src/actions/get-search-tags/index.ts b/src/actions/get-search-tags/index.ts index f36583b19..44de71a0b 100644 --- a/src/actions/get-search-tags/index.ts +++ b/src/actions/get-search-tags/index.ts @@ -4,7 +4,6 @@ import { nodeModel } from '@/utils'; import prisma from 'lib/prisma'; import { getTagSearchSchema } from './schema'; -import 'server-only'; type Props = { tenantId: string; diff --git a/src/actions/get-tags/index.ts b/src/actions/get-tags/index.ts index cbd2a6041..042e7f26c 100644 --- a/src/actions/get-tags/index.ts +++ b/src/actions/get-tags/index.ts @@ -1,21 +1,24 @@ import { cache } from 'react'; +import { Tag } from '@prisma/client'; + import prisma from 'lib/prisma'; -import 'server-only'; -export const getTags = cache(async (tenantId: string) => { - try { - if (!tenantId) { - return { error: 'Tenant not found' }; - } - const tags = await prisma.tag.findMany({ - where: { tenantId }, - }); +export const getTags = cache( + async (tenantId: string): Promise => { + try { + if (!tenantId) { + throw new Error('Tenant not found'); + } + const tags = await prisma.tag.findMany({ + where: { tenantId }, + }); - if (!tags) return null; + if (!tags) return null; - return tags; - } catch (error) { - return { error: 'Error fetching tags' }; - } -}); + return tags; + } catch (error) { + throw new Error('Error fetching tags'); + } + }, +); diff --git a/src/actions/get-tenant/index.ts b/src/actions/get-tenant/index.ts index 06a1fb63f..a3b8cf0e5 100644 --- a/src/actions/get-tenant/index.ts +++ b/src/actions/get-tenant/index.ts @@ -1,21 +1,24 @@ import { cache } from 'react'; +import { Tenant } from '@prisma/client'; + import prisma from 'lib/prisma'; -import 'server-only'; -export const getTenant = cache(async (tenantId: string) => { - try { - if (!tenantId) { - return { error: 'User not found' }; - } - const tenant = await prisma.tenant.findUnique({ - where: { id: tenantId }, - }); +export const getTenant = cache( + async (tenantId: string): Promise => { + try { + if (!tenantId) { + throw new Error('User not found'); + } + const tenant = await prisma.tenant.findUnique({ + where: { id: tenantId }, + }); - if (!tenant) return null; + if (!tenant) return null; - return tenant; - } catch (error) { - return { error: 'Error fetching tenant' }; - } -}); + return tenant; + } catch (error) { + throw new Error('Error fetching tenant'); + } + }, +); diff --git a/src/actions/get-user/index.ts b/src/actions/get-user/index.ts index f0e8cca20..aa2b2b44b 100644 --- a/src/actions/get-user/index.ts +++ b/src/actions/get-user/index.ts @@ -1,7 +1,6 @@ import { cache } from 'react'; import prisma from 'lib/prisma'; -import 'server-only'; export const getUser = cache(async (id: string) => { try { diff --git a/src/actions/get-users-count/index.ts b/src/actions/get-users-count/index.ts index 33ab1fc5f..01670e350 100644 --- a/src/actions/get-users-count/index.ts +++ b/src/actions/get-users-count/index.ts @@ -1,21 +1,22 @@ import { cache } from 'react'; import prisma from 'lib/prisma'; -import 'server-only'; -export const getUsersCount = cache(async (tenantId: string) => { - try { - if (!tenantId) { - return { error: 'Tenant not found' }; - } - const users = await prisma.user.count({ - where: { tenantId }, - }); +export const getUsersCount = cache( + async (tenantId: string): Promise => { + try { + if (!tenantId) { + throw new Error('Tenant not found'); + } + const users = await prisma.user.count({ + where: { tenantId }, + }); - if (!users) return 0; + if (!users) return 0; - return users; - } catch (error) { - return { error: 'Error fetching users count' }; - } -}); + return users; + } catch (error) { + throw new Error('Error fetching users count'); + } + }, +); diff --git a/src/actions/get-users/index.ts b/src/actions/get-users/index.ts index b57fa4724..38f2e8b10 100644 --- a/src/actions/get-users/index.ts +++ b/src/actions/get-users/index.ts @@ -1,20 +1,22 @@ import { cache } from 'react'; +import { User } from '@prisma/client'; + import prisma from 'lib/prisma'; -import 'server-only'; -export const getUsers = cache(async (tenantId: string) => { - try { - if (!tenantId) { - return { error: 'User not found' }; - } - const users = await prisma.user.findMany({ - where: { tenantId }, - }); - return users; - } catch (error) { - if (error instanceof Error) { - return { error: 'Error fetching users' }; +export const getUsers = cache( + async (tenantId: string): Promise => { + try { + if (!tenantId) { + throw new Error('User not found'); + } + const users = await prisma.user.findMany({ + where: { tenantId }, + }); + if (!users) return null; + return users; + } catch (error) { + throw new Error('Error fetching users'); } - } -}); + }, +); diff --git a/src/app/hello.tsx b/src/app/hello.tsx deleted file mode 100644 index c8b4b756c..000000000 --- a/src/app/hello.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import { ReactNode } from 'react'; - -import { MeProvider } from '@/contexts'; -import { ErrorBoundaryWrapper, SuspenseWrapper } from '@/lib'; -import { Footer, Header } from '@/modules'; - -type Props = { - children: ReactNode; - id: string; - company: string; - logo: string; - tenantId: string; -}; - -export default function Template({ - children, - id, - company, - logo, - tenantId, -}: Props) { - return ( - - - -
-
-
{children}
-
-
-
-
-
- ); -} diff --git a/src/app/home.tsx b/src/app/home.tsx index 4208aa359..b7d13084b 100644 --- a/src/app/home.tsx +++ b/src/app/home.tsx @@ -7,18 +7,18 @@ import { useSearchParams } from 'next/navigation'; import { Pagination } from '@/components'; import { useSearchNodes, useSearchTags } from '@/hooks'; -import { Footer, Header, List, Search } from '@/modules'; -import { ExtendedNode, UserWithTenant } from '@/types'; +import { List, Search } from '@/modules'; +import { ExtendedNode, Me } from '@/types'; import { OFFSET } from '@/utils'; type Props = { - me: UserWithTenant; - allNodes: ExtendedNode[]; + me: Me; + initialNodes: ExtendedNode[]; nodesCount: number; tags: Tag[]; }; -export default function Home({ me, allNodes, nodesCount, tags }: Props) { +export default function Home({ me, initialNodes, nodesCount, tags }: Props) { const search = useSearchParams(); const [searchQuery, setSearchQuery] = useState( search.get('search') ?? null, @@ -54,21 +54,17 @@ export default function Home({ me, allNodes, nodesCount, tags }: Props) { } return ( -
-
-
- - - {nodesCount > OFFSET && (nodes.length === OFFSET || page !== 0) && ( - - )} -
-
-
+ <> + + + {nodesCount > OFFSET && (nodes.length === OFFSET || page !== 0) && ( + + )} + ); } diff --git a/src/app/loading.tsx b/src/app/loading.tsx new file mode 100644 index 000000000..d92a3834f --- /dev/null +++ b/src/app/loading.tsx @@ -0,0 +1,5 @@ +import { Loader } from '@/components'; + +export default function Loading() { + return ; +} diff --git a/src/app/page.tsx b/src/app/page.tsx index e644a23e2..a9e1553c8 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,6 +1,7 @@ import { redirect } from 'next/navigation'; import { getMe, getNodesCount, getPaginatedNodes, getTags } from '@/actions'; +import { Footer, Header } from '@/modules'; import { Routes } from '@/utils'; import Home from './home'; @@ -13,15 +14,25 @@ export default async function Page({ searchParams }) { } const tenantId = me.tenantId; - const query = searchParams?.query || ''; - const page = Number(searchParams?.page) || 1; + const page = Number(searchParams?.page) || 0; const body = { tenantId, page }; - const allNodes = await getPaginatedNodes(body); + const initialNodes = await getPaginatedNodes(body); const nodesCount = await getNodesCount(tenantId); const tags = await getTags(tenantId); return ( - +
+
+
+ +
+
+
); } diff --git a/src/app/question/edit/page.tsx b/src/app/question/edit/page.tsx new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/question/new/new.tsx b/src/app/question/new/new.tsx new file mode 100644 index 000000000..6dbdc02bd --- /dev/null +++ b/src/app/question/new/new.tsx @@ -0,0 +1,297 @@ +'use client'; + +import { useState } from 'react'; + +import { zodResolver } from '@hookform/resolvers/zod'; +import { Integrations, Tag } from '@prisma/client'; +import { HelpCircle } from 'lucide-react'; +import { useFormStatus } from 'react-dom'; +import { + FieldErrors, + UseFormRegister, + UseFormWatch, + useForm, +} from 'react-hook-form'; +import slugify from 'slugify'; +import { z } from 'zod'; + +import { createNode } from '@/actions'; +import { BackButton, Button, Field, Input } from '@/components'; +import { questionClientSchema } from '@/lib'; +import { TagsList } from '@/modules'; +import { Me } from '@/types'; +import { Limits } from '@/utils'; + +type Props = { + me: Me; + tags: Tag[]; + integrations: Integrations; +}; + +type Schema = z.infer; + +type ContentProps = { + me: Me; + tags: Tag[]; + isValid: boolean; + watch: UseFormWatch; + errors: FieldErrors; + register: UseFormRegister; +}; + +export function FormContent({ + me, + tags, + isValid, + watch, + errors, + register, +}: ContentProps) { + const [selectedTags, setSelectedTags] = useState([]); + + const { pending } = useFormStatus(); + const disabled = pending || !isValid; + const text = watch('text'); + + return ( + <> +
+
+ + Ask a question + +
+ + + + + + } + type="text" + id="question" + placeholder="New question" + /> + + +
+
+ + {/* */} +
+ + ); +} + +export default function New({ me, tags, integrations }: Props) { + const withAnswer = true; + + const { + register, + watch, + formState: { errors, isValid }, + } = useForm({ + resolver: zodResolver(questionClientSchema), + mode: 'onBlur', + defaultValues: { + text: '', + }, + }); + + const createNodeAction = createNode.bind(null, integrations); + + return ( +
+ +
+
+ + +
+
+ ); +} + +// 'use client'; + +// import { BackButton, Field, Input, Button } from '@/components'; +// import { useMediaQuery, useCreateNode } from '@/hooks'; +// import { questionClientSchema } from '@/lib'; +// import { TagsList } from '@/modules'; +// import { Me } from '@/types'; +// import { Limits } from '@/utils'; +// import { zodResolver } from '@hookform/resolvers/zod'; +// import { Integrations, Tag } from '@prisma/client'; +// import { HelpCircle, MoveRight } from 'lucide-react'; +// import { useRouter } from 'next/navigation'; +// import { useState, useEffect } from 'react'; +// import { useForm, SubmitHandler } from 'react-hook-form'; +// import { Schema } from 'zod'; + +// type Props = { +// me: Me; +// tags: Tag[]; +// integrations: Integrations; +// }; + +// export default function New({ me, tags, integrations }: Props) { +// const [disabled, setDisabled] = useState(true); +// const [selectedTags, setSelectedTags] = useState([]); +// const isDesktop = useMediaQuery('(min-width: 640px)'); +// const withAnswer = true; + +// const { +// register, +// handleSubmit, +// watch, +// formState: { isSubmitting, errors, isValid }, +// } = useForm({ +// resolver: zodResolver(questionClientSchema), +// mode: 'onBlur', +// defaultValues: { +// text: '', +// }, +// }); +// const router = useRouter(); +// const text = watch('text'); + +// const { mutate } = useCreateNode(me, router, selectedTags, integrations); + +// const onSubmit: SubmitHandler = (values) => { +// mutate(values); +// }; + +// const onSubmitWithAnswer: SubmitHandler = (data) => { +// const values = { ...data, withAnswer }; +// mutate(values); +// }; + +// useEffect(() => { +// setDisabled(isSubmitting || !isValid); +// }, [isSubmitting, isValid]); + +// return ( +//
+// +//
+//
+//
+//
+// +// Ask a question +// +//
+// +// } +// type="text" +// id="question" +// placeholder="New question" +// /> +// +// +//
+//
+// +// +//
+//
+//
+//
+// ); +// } diff --git a/src/app/question/new/page.tsx b/src/app/question/new/page.tsx new file mode 100644 index 000000000..d0be73ffe --- /dev/null +++ b/src/app/question/new/page.tsx @@ -0,0 +1,24 @@ +import { getMe, getIntegration, getTags } from '@/actions'; +import { Footer, Header } from '@/modules'; +import { Redirects } from '@/utils'; + +import New from './new'; + +export default async function Page() { + const me = await getMe(); + + if (!me) return Redirects.LOGIN; + const tenantId = me.tenantId; + + const integrations = await getIntegration(tenantId); + const tags = await getTags(tenantId); + return ( +
+
+
+ +
+
+
+ ); +} diff --git a/src/app/settings/page.tsx b/src/app/settings/page.tsx index 7b3138070..a3d4aff45 100644 --- a/src/app/settings/page.tsx +++ b/src/app/settings/page.tsx @@ -1,19 +1,15 @@ -import { - HydrationBoundary, - QueryClient, - dehydrate, -} from '@tanstack/react-query'; - import { getIntegration, getMe, getNodesCount, getTags, getTenant, + getUsers, getUsersCount, } from '@/actions'; import { SuspenseWrapper } from '@/lib'; -import { QueryKeys, Redirects } from '@/utils'; +import { Footer, Header } from '@/modules'; +import { Redirects } from '@/utils'; import Settings from './settings'; @@ -23,38 +19,32 @@ export default async function Page() { if (!me) return Redirects.LOGIN; if (me.role === 'user') return Redirects.HOME; + const tenantId = me.tenantId; - const queryClient = new QueryClient(); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.ME, me.id], - queryFn: () => me, - }); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.NODES_COUNT, me.tenantId], - queryFn: () => getNodesCount(me.tenantId), - }); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.USERS_COUNT, me.tenantId], - queryFn: () => getUsersCount(me.tenantId), - }); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.TENANT, me.tenantId], - queryFn: () => getTenant(me.tenantId), - }); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.INTEGRATION, me.tenantId], - queryFn: () => getIntegration(me.tenantId), - }); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.TAGS, me.tenantId], - queryFn: () => getTags(me.tenantId), - }); + const nodesCount = await getNodesCount(tenantId); + const usersCount = await getUsersCount(tenantId); + const tenant = await getTenant(tenantId); + const integrations = await getIntegration(tenantId); + const tags = await getTags(tenantId); + const users = await getUsers(tenantId); return ( - - - - - + +
+
+
+ +
+
+
+
); } diff --git a/src/app/settings/settings.tsx b/src/app/settings/settings.tsx index d958614c6..2e8cfb720 100644 --- a/src/app/settings/settings.tsx +++ b/src/app/settings/settings.tsx @@ -1,17 +1,29 @@ -'use client'; +import { Integrations, Tag, Tenant, User } from '@prisma/client'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components'; -import { useTenant } from '@/hooks'; -import { Footer, General, Header, Payment, Tags, Users } from '@/modules'; -import { UserWithTenant } from '@/types'; +import { SuspenseWrapper } from '@/lib'; +import { General, Payment, Tags, Users } from '@/modules'; +import { Me } from '@/types'; type Props = { - me: UserWithTenant; + me: Me; + usersCount: number; + nodesCount: number; + tenant: Tenant | null; + integrations: Integrations | null; + tags: Tag[] | null; + users: User[] | null; }; -export default function Settings({ me }: Props) { - const { data: tenant, isPending } = useTenant(me.tenantId); - +export default function Settings({ + me, + usersCount, + nodesCount, + tenant, + integrations, + tags, + users, +}: Props) { const tabs = [ { value: 'general', @@ -28,61 +40,58 @@ export default function Settings({ me }: Props) { ]; return ( -
-
-
-
-

- Settings -

- - - {tabs.map((tab, index) => ( - - {tab.label} - - ))} - {me.role === 'tenant' && ( - - Payment - - )} - - - - - - - - - - - - - - -
-
-
-
+
+

+ Settings +

+ + + {tabs.map((tab, index) => ( + + {tab.label} + + ))} + {me.role === 'tenant' && ( + + Payment + + )} + + + + + + + + + + + + + + + + + + +
); } diff --git a/src/components/button/BackButton.tsx b/src/components/button/BackButton.tsx index 73c11ba4c..c4628b193 100644 --- a/src/components/button/BackButton.tsx +++ b/src/components/button/BackButton.tsx @@ -14,7 +14,7 @@ export const BackButton = () => { size="small" className="lowercase" style={{ fontVariant: 'small-caps' }} - onClick={() => router.back()} + onClick={() => router.push('/')} > Go back diff --git a/src/components/input/Input.tsx b/src/components/input/Input.tsx index 23f60462f..e1ec80c63 100644 --- a/src/components/input/Input.tsx +++ b/src/components/input/Input.tsx @@ -12,13 +12,14 @@ const styles = 'shadow-sm shadow-grayA-7 focus:shadow-tealA-8 bg-gray-3 w-full rounded-md p-1 outline-none'; export const Input = forwardRef( - ({ className, type, withIcon = false, icon, ...props }, ref) => { + ({ className, type, name, withIcon = false, icon, ...props }, ref) => { return withIcon ? (
{icon} { const pathname = usePathname(); const searchParams = useSearchParams(); - const currentPage = Number(searchParams.get('page')) || 1; + const currentPage = Number(searchParams.get('page')) || 0; const handlePageChange = (data: { selected: number }) => { setPage(data.selected); diff --git a/src/modules/header/Header.tsx b/src/modules/header/Header.tsx index 511f0f2c7..474a68d7a 100644 --- a/src/modules/header/Header.tsx +++ b/src/modules/header/Header.tsx @@ -17,142 +17,128 @@ import { TooltipContent, TooltipTrigger, } from '@/components'; -import { useMediaQuery, useUser } from '@/hooks'; +import { Me } from '@/types'; import { Routes } from '@/utils'; import { ThemeToggle } from '../theme'; type Props = { - id: string; - company: string; - logo: string; + user: Me; }; -export const Header = ({ id, company, logo }: Props) => { - const { data: user, isPending } = useUser(id); - const isDesktop = useMediaQuery('(min-width: 640px)'); - +export const Header = ({ user }: Props) => { return (
- {logo && ( + {user.tenant.logo && ( )} -

{company}

+

{user.tenant.company}

- {isDesktop - ? user && ( -
- {!isPending && ( -
    -
  • - - - - - - {user.email[0]} - - - - -

    Profile

    -
    -
    -
  • - {user?.role !== 'user' && ( -
  • - - - - - - - -

    Settings

    -
    -
    -
  • - )} - -
  • - - - - - -

    Logout

    -
    -
    -
  • -
+
+
    +
  • + + + + + + {user.email[0]} + + + + +

    Profile

    +
    +
    +
  • + {user?.role !== 'user' && ( +
  • + + + + + + + +

    Settings

    +
    +
    +
  • + )} + +
  • + + + + + +

    Logout

    +
    +
    +
  • +
+ +
+ +
+ + + + + + +
+ + Profile + + {user.role !== 'user' && ( + + Settings + )} + +
- ) - : user && ( -
- - - - - - -
- - Profile - - {user.role !== 'user' && ( - - Settings - - )} - -
- -
-
-
-
- )} +
+
+
); }; diff --git a/src/modules/list/List.tsx b/src/modules/list/List.tsx index 8673a86eb..6a8b9c648 100644 --- a/src/modules/list/List.tsx +++ b/src/modules/list/List.tsx @@ -32,7 +32,18 @@ export const List = ({ nodes, message }: Props) => { >
-
+
+

+ + {node.question.text} + +

    {node.tags.map((tag) => (
  • @@ -47,16 +58,6 @@ export const List = ({ nodes, message }: Props) => {
  • ))}
-

- - {node.question.text} - -

{!node.answer && ( diff --git a/src/modules/profile/Update.tsx b/src/modules/profile/Update.tsx index fb4ce7bf5..c55fb9d44 100644 --- a/src/modules/profile/Update.tsx +++ b/src/modules/profile/Update.tsx @@ -11,10 +11,10 @@ import { z } from 'zod'; import { Button, Field, Input } from '@/components'; import { useMediaQuery, useUpdateUser } from '@/hooks'; import { updateUserClientSchema } from '@/lib'; -import { IUserUpdateFields, UserWithTenant } from '@/types'; +import { IUserUpdateFields, Me } from '@/types'; type Props = { - me: UserWithTenant; + me: Me; }; type Schema = z.infer; diff --git a/src/modules/question/TagsList.tsx b/src/modules/question/TagsList.tsx index 138abf27b..f57b412a0 100644 --- a/src/modules/question/TagsList.tsx +++ b/src/modules/question/TagsList.tsx @@ -2,21 +2,15 @@ import { Dispatch, SetStateAction } from 'react'; import { Tag } from '@prisma/client'; -import { Button, Loader } from '@/components'; +import { Button } from '@/components'; type Props = { - isPending: boolean; tags: Tag[]; selectedTags: string[]; setSelectedTags: Dispatch>; }; -export const TagsList = ({ - isPending, - tags, - selectedTags, - setSelectedTags, -}: Props) => { +export const TagsList = ({ tags, selectedTags, setSelectedTags }: Props) => { const handleSelection = (tagId: string) => { if (selectedTags.includes(tagId)) { setSelectedTags(selectedTags.filter((id) => id !== tagId)); @@ -25,9 +19,7 @@ export const TagsList = ({ } }; - if (isPending) { - return ; - } else if (tags.length > 0) { + if (tags.length > 0) { return (
    {tags.map((tag) => ( diff --git a/src/modules/settings/general/Data.tsx b/src/modules/settings/general/Data.tsx index cb31e7cb7..db8b00511 100644 --- a/src/modules/settings/general/Data.tsx +++ b/src/modules/settings/general/Data.tsx @@ -1,41 +1,32 @@ -import { useMemo } from 'react'; - import { HelpCircle, UserIcon, Wallet } from 'lucide-react'; -import { useNodesCount, useUsersCount } from '@/hooks'; - type Props = { tenantId: string; plan: string; + nodesCount: number; + usersCount: number; }; -export const Data = ({ tenantId, plan }: Props) => { - const { data: nodesCount } = useNodesCount(tenantId); - const { data: usersCount } = useUsersCount(tenantId); - +export const Data = ({ tenantId, plan, nodesCount, usersCount }: Props) => { const iconStyles = 'hidden h-9 w-9 xl:block'; - const cards = useMemo( - () => [ - { - text: 'Questions', - value: nodesCount, - icon: , - }, - { - text: 'Users', - value: usersCount, - icon: , - }, - { - text: 'Plan', - value: plan, - icon: , - }, - ], - // eslint-disable-next-line react-hooks/exhaustive-deps - [], - ); + const cards = [ + { + text: 'Questions', + value: nodesCount, + icon: , + }, + { + text: 'Users', + value: usersCount, + icon: , + }, + { + text: 'Plan', + value: plan, + icon: , + }, + ]; return ( <> diff --git a/src/modules/settings/general/General.tsx b/src/modules/settings/general/General.tsx index 841a25979..2bc0ceff2 100644 --- a/src/modules/settings/general/General.tsx +++ b/src/modules/settings/general/General.tsx @@ -1,6 +1,4 @@ -import { Tenant } from '@prisma/client'; - -import { Loader } from '@/components'; +import { Integrations as IntegrationsType, Tenant } from '@prisma/client'; import { Company } from './Company'; import { Data } from './Data'; @@ -10,15 +8,20 @@ import { Integrations } from './Integrations'; type Props = { tenantId: string; tenant: Tenant; - isPending: boolean; + integrations: IntegrationsType; + nodesCount: number; + usersCount: number; }; -export const General = ({ tenantId, tenant, isPending }: Props) => { +export const General = ({ + tenantId, + tenant, + integrations, + nodesCount, + usersCount, +}: Props) => { const styles = 'w-full rounded-md bg-gray-3 p-4'; - if (isPending) { - return ; - } return ( <>
    @@ -29,11 +32,16 @@ export const General = ({ tenantId, tenant, isPending }: Props) => {
    {tenant.plan !== 'free' && (
    - +
    )}
    - +
    ); diff --git a/src/modules/settings/general/Integrations.tsx b/src/modules/settings/general/Integrations.tsx index e58313de1..2f93649d5 100644 --- a/src/modules/settings/general/Integrations.tsx +++ b/src/modules/settings/general/Integrations.tsx @@ -7,20 +7,19 @@ import { Integrations as IntegrationsType } from '@prisma/client'; import { useForm } from 'react-hook-form'; import { z } from 'zod'; -import { Button, Field, Input, Loader } from '@/components'; -import { useIntegration, useUpsertIntegrations } from '@/hooks'; +import { Button, Field, Input } from '@/components'; +import { useUpsertIntegrations } from '@/hooks'; import { integrationsClientSchema } from '@/lib'; import { IIntegrations } from '@/types'; type Props = { tenantId: string; + integrations: IntegrationsType; }; type Schema = z.infer; -export const Integrations = ({ tenantId }: Props) => { - const { data: integrations, isPending } = useIntegration(tenantId); - +export const Integrations = ({ tenantId, integrations }: Props) => { const [disabled, setDisabled] = useState(true); const { register, @@ -55,10 +54,6 @@ export const Integrations = ({ tenantId }: Props) => { setDisabled(isSubmitting || !isDirty || !isValid); }, [isDirty, isSubmitting, isValid]); - if (isPending) { - return ; - } - return (

    { +export const Tags = ({ tenantId, plan, tags }: Props) => { const [limit, setLimit] = useState(3); - const { data: tags, isPending } = useTags(tenantId); const { mutate, isPending: isTagLoading } = useDeleteTag(tenantId); const handleDeleteTag = (id: string) => { @@ -30,10 +30,6 @@ export const Tags = ({ tenantId, plan }: Props) => { } }, [plan]); - if (isPending || isTagLoading) { - return ; - } - return (
    {tags.length > 0 ? ( diff --git a/src/modules/settings/users/Users.tsx b/src/modules/settings/users/Users.tsx index bedd5fa1d..aaf5b5937 100644 --- a/src/modules/settings/users/Users.tsx +++ b/src/modules/settings/users/Users.tsx @@ -1,13 +1,9 @@ -import { $Enums } from '@prisma/client'; +'use client'; -import { - Avatar, - AvatarFallback, - AvatarImage, - Button, - Loader, -} from '@/components'; -import { useDeleteUser, useUsers } from '@/hooks'; +import { $Enums, User } from '@prisma/client'; + +import { Avatar, AvatarFallback, AvatarImage, Button } from '@/components'; +import { useDeleteUser } from '@/hooks'; import { CreateUser } from './Create'; import { FileInput } from './FileInput'; @@ -17,21 +13,16 @@ type Props = { userId: string; tenantId: string; plan: $Enums.Plan; + users: User[] | null; }; -export const Users = ({ userId, tenantId, plan }: Props) => { - const { data: users, isPending } = useUsers(tenantId); - +export const Users = ({ userId, tenantId, plan, users }: Props) => { const { mutate, isPending: isUserLoading } = useDeleteUser(tenantId); const handleDeleteUser = (id: string) => { mutate({ id }); }; - if (isPending || isUserLoading) { - return ; - } - return (
      {users?.map((user) => ( diff --git a/src/old/index.tsx b/src/old/index.tsx index d6f287bd7..e03efb0ae 100644 --- a/src/old/index.tsx +++ b/src/old/index.tsx @@ -15,11 +15,11 @@ import { } from '@/hooks'; import { getMe, getNodes, getNodesCount, getTags, ssrNcHandler } from '@/lib'; import { List, Search } from '@/modules'; -import { ExtendedNode, UserWithTenant } from '@/types'; +import { ExtendedNode, Me } from '@/types'; import { OFFSET, QueryKeys, Redirects } from '@/utils'; type Props = { - me: UserWithTenant; + me: Me; }; function Home({ me }: Props) { diff --git a/src/old/profile.tsx b/src/old/profile.tsx index f2e828880..1c72a7de6 100644 --- a/src/old/profile.tsx +++ b/src/old/profile.tsx @@ -5,11 +5,11 @@ import { GetServerSideProps } from 'next'; import { useUserAnswers, useUserQuestions } from '@/hooks'; import { getMe, getUserAnswers, getUserQuestions, ssrNcHandler } from '@/lib'; import { UpdateProfile, UserAnswers, UserQuestions } from '@/modules'; -import { UserWithTenant } from '@/types'; +import { Me } from '@/types'; import { QueryKeys, Redirects } from '@/utils'; type Props = { - me: UserWithTenant; + me: Me; }; function Profile({ me }: Props) { diff --git a/src/old/question/[id].tsx b/src/old/question/[id].tsx index 2769d0ada..c68040064 100644 --- a/src/old/question/[id].tsx +++ b/src/old/question/[id].tsx @@ -20,14 +20,14 @@ import { } from '@/components'; import { useNode } from '@/hooks'; import { getMe, getNode, ssrNcHandler } from '@/lib'; -import { UserWithTenant } from '@/types'; +import { Me } from '@/types'; import { QueryKeys, Redirects, Routes, dateOptions } from '@/utils'; const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { ssr: false, }); type Props = { - me: UserWithTenant; + me: Me; id: string; }; diff --git a/src/old/question/answer.tsx b/src/old/question/answer.tsx index 3526d3783..3a46ad16e 100644 --- a/src/old/question/answer.tsx +++ b/src/old/question/answer.tsx @@ -11,11 +11,11 @@ import { z } from 'zod'; import { BackButton, Button, Editor, Loader } from '@/components'; import { useCreateAnswer, useNode, useUpdateAnswer } from '@/hooks'; import { answerClientSchema, getMe, getNode, ssrNcHandler } from '@/lib'; -import { UserWithTenant } from '@/types'; +import { Me } from '@/types'; import { Limits, QueryKeys, Redirects } from '@/utils'; type Props = { - me: UserWithTenant; + me: Me; id: string; }; diff --git a/src/old/question/edit.tsx b/src/old/question/edit.tsx index 01b43bc2c..5468d724e 100644 --- a/src/old/question/edit.tsx +++ b/src/old/question/edit.tsx @@ -19,11 +19,11 @@ import { ssrNcHandler, } from '@/lib'; import { TagsList } from '@/modules'; -import { UserWithTenant } from '@/types'; +import { Me } from '@/types'; import { Limits, QueryKeys, Redirects, arraysAreEqual } from '@/utils'; type Props = { - me: UserWithTenant; + me: Me; id: string; }; diff --git a/src/old/question/new.tsx b/src/old/question/new.tsx index c3ddacc26..8f9cfa7e2 100644 --- a/src/old/question/new.tsx +++ b/src/old/question/new.tsx @@ -19,11 +19,11 @@ import { ssrNcHandler, } from '@/lib'; import { TagsList } from '@/modules'; -import { UserWithTenant } from '@/types'; +import { Me } from '@/types'; import { Limits, QueryKeys, Redirects } from '@/utils'; type Props = { - me: UserWithTenant; + me: Me; }; type Schema = z.infer; diff --git a/src/old/settings.tsx b/src/old/settings.tsx index 410e5a5ce..1744cfe7f 100644 --- a/src/old/settings.tsx +++ b/src/old/settings.tsx @@ -16,11 +16,11 @@ import { ssrNcHandler, } from '@/lib'; import { General, Payment, Tags, Users } from '@/modules'; -import { UserWithTenant } from '@/types'; +import { Me } from '@/types'; import { QueryKeys, Redirects } from '@/utils'; type Props = { - me: UserWithTenant; + me: Me; }; function Settings({ me }: Props) { diff --git a/src/types/models/user.ts b/src/types/models/user.ts index 74da05abe..0ced19e39 100644 --- a/src/types/models/user.ts +++ b/src/types/models/user.ts @@ -1,7 +1,10 @@ -import { Tenant, User } from '@prisma/client'; +import { User } from '@prisma/client'; -export type UserWithTenant = User & { - tenant: Tenant; +export type Me = User & { + tenant: { + logo: string; + company: string; + }; }; export type RegisterInfo = { From 598a8f62e6a62ccc515b5d5c4e0e8b0c4a6fcf19 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 11 Apr 2024 15:48:23 +0200 Subject: [PATCH 028/326] :recycle: migrate answer + create answer function to app router --- src/actions/create-answer/index.ts | 52 +++++++++++++ src/actions/create-answer/schema.ts | 11 +++ src/actions/index.ts | 1 + src/app/question/answer/answer.tsx | 109 +++++++++++++++++++++++++++ src/app/question/answer/page.tsx | 25 ++++++ src/lib/client/validations/answer.ts | 2 + 6 files changed, 200 insertions(+) create mode 100644 src/actions/create-answer/index.ts create mode 100644 src/actions/create-answer/schema.ts create mode 100644 src/app/question/answer/answer.tsx create mode 100644 src/app/question/answer/page.tsx diff --git a/src/actions/create-answer/index.ts b/src/actions/create-answer/index.ts new file mode 100644 index 000000000..99bace813 --- /dev/null +++ b/src/actions/create-answer/index.ts @@ -0,0 +1,52 @@ +'use server'; + +import { revalidatePath } from 'next/cache'; +import { redirect } from 'next/navigation'; +import { getServerSession } from 'next-auth'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import prisma from 'lib/prisma'; + + +import 'server-only'; +import { createAnswerSchema } from './schema'; + +type CreateAnswerData = { + text: string; + nodeId: string; + userId: string; +}; + +export async function createAnswer(formData) { + try { + if (!formData) { + return { error: 'Data not provided' }; + } + const data = Object.fromEntries(formData) as CreateAnswerData; + const session = await getServerSession(authOptions); + if (session) { + const result = createAnswerSchema.safeParse(data); + if (result.success === false) { + const errors = result.error.flatten().fieldErrors; + console.log(errors); + return { error: errors }; + } else { + const { text, nodeId, userId } = result.data; + await prisma.answer.create({ + data: { + nodeId, + userId, + text, + }, + }); + } + } else { + return { error: 'Not signed in' }; + } + } catch (error) { + return { error: 'Error creating answer' }; + } + revalidatePath('/'); + redirect('/'); + return { message: 'Answer created successfully' }; +} diff --git a/src/actions/create-answer/schema.ts b/src/actions/create-answer/schema.ts new file mode 100644 index 000000000..ea3cc827a --- /dev/null +++ b/src/actions/create-answer/schema.ts @@ -0,0 +1,11 @@ +import { z } from 'zod'; + +export const createAnswerSchema = z.object({ + text: z + .string() + .trim() + .min(1, { message: 'Answer is required' }) + .max(1000, { message: 'Answer must be under 1000 characters long' }), + nodeId: z.string().cuid2(), + userId: z.string().cuid2(), +}); diff --git a/src/actions/index.ts b/src/actions/index.ts index baac63cb9..985a40a23 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -1,4 +1,5 @@ export * from './create-node'; +export * from './create-answer'; export * from './get-nodes'; export * from './get-nodes-count'; export * from './get-users-count'; diff --git a/src/app/question/answer/answer.tsx b/src/app/question/answer/answer.tsx new file mode 100644 index 000000000..9b905df3a --- /dev/null +++ b/src/app/question/answer/answer.tsx @@ -0,0 +1,109 @@ +'use client'; + +import { useEffect, useState } from 'react'; + +import { zodResolver } from '@hookform/resolvers/zod'; +import { Controller, SubmitHandler, useForm } from 'react-hook-form'; +import { z } from 'zod'; + +import { createAnswer } from '@/actions'; +import { BackButton, Button, Editor } from '@/components'; +import { answerClientSchema } from '@/lib'; +import { ExtendedNode, Me } from '@/types'; +import { Limits } from '@/utils'; + + +type Props = { + me: Me; + node: ExtendedNode; +}; + +type Schema = z.infer; + +export default function Answer({ me, node }: Props) { + const [disabled, setDisabled] = useState(true); + + const { + handleSubmit, + control, + watch, + formState: { isSubmitting, errors, isValid, isDirty }, + } = useForm({ + resolver: zodResolver(answerClientSchema), + mode: 'onBlur', + defaultValues: { + text: node?.answer?.text ?? '', + nodeId: node.id, + userId: me.id, + }, + }); + + const text = watch('text'); + + const onSubmit: SubmitHandler = async (data) => { + const formData = new FormData(); + for (const key in data) { + formData.append(key, data[key]); + } + if (node?.answer) { + await updateAnswer(formData); + } else { + await createAnswer(formData); + } + }; + + useEffect(() => { + setDisabled(isSubmitting || !isValid || !isDirty); + }, [isSubmitting, isValid, isDirty]); + + return ( +
      + +
      +

      + {node.answer ? 'Edit the answer' : 'Answer'} +

      +
      +
      +

      + Question: {node.question.text} +

      + ( + + )} + /> +
      + {errors.text && ( + + {errors.text.message} + + )} + + {text.length} / {Limits.ANSWER} + +
      +
      + +
      +
      +
      + ); +} diff --git a/src/app/question/answer/page.tsx b/src/app/question/answer/page.tsx new file mode 100644 index 000000000..a6e48d6e8 --- /dev/null +++ b/src/app/question/answer/page.tsx @@ -0,0 +1,25 @@ +import { getMe } from '@/actions'; +import { getNode } from '@/lib'; +import { Footer, Header } from '@/modules'; +import { Redirects } from '@/utils'; + +import Answer from './answer'; + +export default async function Page({ searchParams }) { + const me = await getMe(); + + if (!me) return Redirects.LOGIN; + const tenantId = me.tenantId; + const { id } = searchParams; + + const node = await getNode(tenantId, id); + return ( +
      +
      +
      + +
      +
      +
      + ); +} diff --git a/src/lib/client/validations/answer.ts b/src/lib/client/validations/answer.ts index 7b1a3a837..4ee4cc5b4 100644 --- a/src/lib/client/validations/answer.ts +++ b/src/lib/client/validations/answer.ts @@ -6,4 +6,6 @@ export const answerClientSchema = z.object({ .trim() .min(1, { message: 'Answer is required' }) .max(1000, { message: 'Answer must be under 1000 characters long' }), + nodeId: z.string().cuid2(), + userId: z.string().cuid2(), }); From 3ec63deed4acacf4f63867c42ec09ea0986eea2a Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 11 Apr 2024 15:49:25 +0200 Subject: [PATCH 029/326] :recycle: refacto new question node component + actions --- src/actions/create-node/index.ts | 33 +-- src/actions/create-node/schema.ts | 1 - src/app/question/new/new.tsx | 333 ++++++------------------- src/lib/client/validations/question.ts | 2 + 4 files changed, 102 insertions(+), 267 deletions(-) diff --git a/src/actions/create-node/index.ts b/src/actions/create-node/index.ts index 73aa7962c..18877504f 100644 --- a/src/actions/create-node/index.ts +++ b/src/actions/create-node/index.ts @@ -2,7 +2,9 @@ import { IncomingWebhook } from '@slack/webhook'; import { revalidatePath } from 'next/cache'; +import { redirect } from 'next/navigation'; import { getServerSession } from 'next-auth'; +import slugify from 'slugify'; import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import { dateOptions, timeOptions } from '@/utils'; @@ -13,35 +15,32 @@ import { createNodeSchema, slackIntegrationSchema } from './schema'; type CreateNodeData = { text: string; - slug: string; tenantId: string; userId: string; - tags: string[]; - withAnswer: boolean; + withAnswer?: boolean; }; -export const createNode = async (integrations, formData) => { +export const createNode = async (integrations, tags, formData) => { try { if (!formData) { return { error: 'Data not provided' }; } - let data = Object.fromEntries(formData); - data.tags = data.tags.split(','); + const data = Object.fromEntries(formData) as CreateNodeData; const session = await getServerSession(authOptions); if (session) { - const result = createNodeSchema.safeParse(data); + const result = createNodeSchema.safeParse({ ...data, tags }); if (result.success === false) { const errors = result.error.flatten().fieldErrors; - return { errors: 'Invalid request' + errors }; + return { error: errors }; } else { - const { text, slug, tenantId, userId, tags, withAnswer } = result.data; + const { text, tenantId, userId, tags, withAnswer } = result.data; const duplicateQuestion = await prisma.node.findFirst({ where: { tenantId, question: { text: text } }, }); if (duplicateQuestion) { return { error: 'This question already exists' }; } - if (integrations.slack) { + if (integrations && integrations.slack) { const slackBody = { text, url: integrations.slack, @@ -52,10 +51,14 @@ export const createNode = async (integrations, formData) => { data: { tenant: { connect: { id: tenantId } }, question: { - create: { text, slug, user: { connect: { id: userId } } }, + create: { + text, + slug: slugify(text).toLowerCase(), + user: { connect: { id: userId } }, + }, }, tags: { - connect: tags.map((tag) => ({ id: tag })), + connect: tags?.map((tag) => ({ id: tag })), }, }, }); @@ -65,9 +68,6 @@ export const createNode = async (integrations, formData) => { message: 'Question created successfully', }; } - revalidatePath('/'); - revalidatePath('/question/new'); - return { message: 'Question created successfully' }; } } else { return { error: 'Not signed in' }; @@ -75,6 +75,9 @@ export const createNode = async (integrations, formData) => { } catch (error) { return { error: 'Error creating question' }; } + revalidatePath('/'); + redirect('/'); + return { message: 'Question created successfully' }; }; export const slackNotification = async (body) => { diff --git a/src/actions/create-node/schema.ts b/src/actions/create-node/schema.ts index 0f78c6fec..64a17c463 100644 --- a/src/actions/create-node/schema.ts +++ b/src/actions/create-node/schema.ts @@ -6,7 +6,6 @@ export const createNodeSchema = z.object({ .trim() .min(3, { message: 'Question must be at least 3 characters long' }) .max(100, { message: 'Question must be under 100 characters long' }), - slug: z.string(), tenantId: z.string().cuid2(), userId: z.string().cuid2(), tags: z.array(z.string().cuid2()), diff --git a/src/app/question/new/new.tsx b/src/app/question/new/new.tsx index 6dbdc02bd..28b665696 100644 --- a/src/app/question/new/new.tsx +++ b/src/app/question/new/new.tsx @@ -1,18 +1,11 @@ 'use client'; -import { useState } from 'react'; +import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; import { Integrations, Tag } from '@prisma/client'; -import { HelpCircle } from 'lucide-react'; -import { useFormStatus } from 'react-dom'; -import { - FieldErrors, - UseFormRegister, - UseFormWatch, - useForm, -} from 'react-hook-form'; -import slugify from 'slugify'; +import { HelpCircle, MoveRight } from 'lucide-react'; +import { SubmitHandler, useForm } from 'react-hook-form'; import { z } from 'zod'; import { createNode } from '@/actions'; @@ -30,268 +23,106 @@ type Props = { type Schema = z.infer; -type ContentProps = { - me: Me; - tags: Tag[]; - isValid: boolean; - watch: UseFormWatch; - errors: FieldErrors; - register: UseFormRegister; -}; - -export function FormContent({ - me, - tags, - isValid, - watch, - errors, - register, -}: ContentProps) { - const [selectedTags, setSelectedTags] = useState([]); - - const { pending } = useFormStatus(); - const disabled = pending || !isValid; - const text = watch('text'); - - return ( - <> -
      -
      - - Ask a question - -
      - - - - - - } - type="text" - id="question" - placeholder="New question" - /> - - -
      -
      - - {/* */} -
      - - ); -} - export default function New({ me, tags, integrations }: Props) { + const [disabled, setDisabled] = useState(true); + const [selectedTags, setSelectedTags] = useState([]); const withAnswer = true; const { register, + handleSubmit, watch, - formState: { errors, isValid }, + formState: { isSubmitting, errors, isValid }, } = useForm({ resolver: zodResolver(questionClientSchema), mode: 'onBlur', defaultValues: { text: '', + tenantId: me.tenantId, + userId: me.id, }, }); + const text = watch('text'); + + const onSubmit: SubmitHandler = async (data) => { + const formData = new FormData(); + for (const key in data) { + formData.append(key, data[key]); + } + await createNode(integrations, selectedTags, formData); + }; + + const onSubmitWithAnswer: SubmitHandler = (data) => { + const values = { ...data, withAnswer }; + }; - const createNodeAction = createNode.bind(null, integrations); + useEffect(() => { + setDisabled(isSubmitting || !isValid); + }, [isSubmitting, isValid]); return (
      -
      - + +
      +
      + + Ask a question + +
      + + } + type="text" + id="question" + placeholder="New question" + /> + + +
      +
      + + +
      ); } - -// 'use client'; - -// import { BackButton, Field, Input, Button } from '@/components'; -// import { useMediaQuery, useCreateNode } from '@/hooks'; -// import { questionClientSchema } from '@/lib'; -// import { TagsList } from '@/modules'; -// import { Me } from '@/types'; -// import { Limits } from '@/utils'; -// import { zodResolver } from '@hookform/resolvers/zod'; -// import { Integrations, Tag } from '@prisma/client'; -// import { HelpCircle, MoveRight } from 'lucide-react'; -// import { useRouter } from 'next/navigation'; -// import { useState, useEffect } from 'react'; -// import { useForm, SubmitHandler } from 'react-hook-form'; -// import { Schema } from 'zod'; - -// type Props = { -// me: Me; -// tags: Tag[]; -// integrations: Integrations; -// }; - -// export default function New({ me, tags, integrations }: Props) { -// const [disabled, setDisabled] = useState(true); -// const [selectedTags, setSelectedTags] = useState([]); -// const isDesktop = useMediaQuery('(min-width: 640px)'); -// const withAnswer = true; - -// const { -// register, -// handleSubmit, -// watch, -// formState: { isSubmitting, errors, isValid }, -// } = useForm({ -// resolver: zodResolver(questionClientSchema), -// mode: 'onBlur', -// defaultValues: { -// text: '', -// }, -// }); -// const router = useRouter(); -// const text = watch('text'); - -// const { mutate } = useCreateNode(me, router, selectedTags, integrations); - -// const onSubmit: SubmitHandler = (values) => { -// mutate(values); -// }; - -// const onSubmitWithAnswer: SubmitHandler = (data) => { -// const values = { ...data, withAnswer }; -// mutate(values); -// }; - -// useEffect(() => { -// setDisabled(isSubmitting || !isValid); -// }, [isSubmitting, isValid]); - -// return ( -//
      -// -//
      -//
      -//
      -//
      -// -// Ask a question -// -//
      -// -// } -// type="text" -// id="question" -// placeholder="New question" -// /> -// -// -//
      -//
      -// -// -//
      -//
      -//
      -//
      -// ); -// } diff --git a/src/lib/client/validations/question.ts b/src/lib/client/validations/question.ts index e11d85061..3d6f99898 100644 --- a/src/lib/client/validations/question.ts +++ b/src/lib/client/validations/question.ts @@ -6,5 +6,7 @@ export const questionClientSchema = z.object({ .trim() .min(3, { message: 'Question must be at least 3 characters long' }) .max(100, { message: 'Question must be under 100 characters long' }), + tenantId: z.string().cuid2(), + userId: z.string().cuid2(), withAnswer: z.boolean().optional(), }); From d6e1bcdfa1ab345dacf1c9db2e276765366e5590 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 11 Apr 2024 15:50:12 +0200 Subject: [PATCH 030/326] :recycle: turn into client component --- src/components/editor/Editor.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/editor/Editor.tsx b/src/components/editor/Editor.tsx index 92d0a8154..0a2be7f56 100644 --- a/src/components/editor/Editor.tsx +++ b/src/components/editor/Editor.tsx @@ -1,3 +1,5 @@ +'use client'; + import '@uiw/react-md-editor/markdown-editor.css'; import dynamic from 'next/dynamic'; From 89e2f9960a24f320c13b3605c6b5c4631d842bb0 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 11 Apr 2024 15:50:41 +0200 Subject: [PATCH 031/326] :rotating_light: run lint + prettier --- src/actions/create-answer/index.ts | 1 - src/app/question/answer/answer.tsx | 1 - 2 files changed, 2 deletions(-) diff --git a/src/actions/create-answer/index.ts b/src/actions/create-answer/index.ts index 99bace813..a508acc1c 100644 --- a/src/actions/create-answer/index.ts +++ b/src/actions/create-answer/index.ts @@ -7,7 +7,6 @@ import { getServerSession } from 'next-auth'; import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import prisma from 'lib/prisma'; - import 'server-only'; import { createAnswerSchema } from './schema'; diff --git a/src/app/question/answer/answer.tsx b/src/app/question/answer/answer.tsx index 9b905df3a..6bb23f7da 100644 --- a/src/app/question/answer/answer.tsx +++ b/src/app/question/answer/answer.tsx @@ -12,7 +12,6 @@ import { answerClientSchema } from '@/lib'; import { ExtendedNode, Me } from '@/types'; import { Limits } from '@/utils'; - type Props = { me: Me; node: ExtendedNode; From c977bc7ae5f18eca3387f6cd4e7bb87d169ea95e Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 11 Apr 2024 16:04:17 +0200 Subject: [PATCH 032/326] :heavy_minus_sign: uninstall zod-form-data --- package.json | 3 +-- pnpm-lock.yaml | 11 ----------- 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/package.json b/package.json index ae37e355b..2f2bba400 100644 --- a/package.json +++ b/package.json @@ -80,8 +80,7 @@ "uuid": "^9.0.1", "vaul": "^0.9.0", "wcag-contrast": "^3.0.0", - "zod": "^3.22.4", - "zod-form-data": "^2.0.2" + "zod": "^3.22.4" }, "devDependencies": { "@changesets/cli": "^2.27.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f47e4cdc9..1d916c098 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -155,9 +155,6 @@ dependencies: zod: specifier: ^3.22.4 version: 3.22.4 - zod-form-data: - specifier: ^2.0.2 - version: 2.0.2(zod@3.22.4) devDependencies: '@changesets/cli': @@ -8590,14 +8587,6 @@ packages: engines: {node: '>=12.20'} dev: false - /zod-form-data@2.0.2(zod@3.22.4): - resolution: {integrity: sha512-sKTi+k0fvkxdakD0V5rq+9WVJA3cuTQUfEmNqvHrTzPLvjfLmkkBLfR0ed3qOi9MScJXTHIDH/jUNnEJ3CBX4g==} - peerDependencies: - zod: '>= 3.11.0' - dependencies: - zod: 3.22.4 - dev: false - /zod@3.22.4: resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} dev: false From 02f552fa2198ac348655a489af2a2f574250899f Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 11 Apr 2024 16:40:30 +0200 Subject: [PATCH 033/326] :mute: remove log --- src/actions/create-answer/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/actions/create-answer/index.ts b/src/actions/create-answer/index.ts index a508acc1c..e69a3302a 100644 --- a/src/actions/create-answer/index.ts +++ b/src/actions/create-answer/index.ts @@ -27,7 +27,6 @@ export async function createAnswer(formData) { const result = createAnswerSchema.safeParse(data); if (result.success === false) { const errors = result.error.flatten().fieldErrors; - console.log(errors); return { error: errors }; } else { const { text, nodeId, userId } = result.data; From 0f1eb78d0d9fd1a8a5bcfe96d53eb66a7dbe1532 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 11 Apr 2024 16:44:50 +0200 Subject: [PATCH 034/326] :sparkles: create update answer actions --- src/actions/index.ts | 13 ++++---- src/actions/update-answer/index.ts | 50 ++++++++++++++++++++++++++++ src/actions/update-answer/schema.ts | 11 ++++++ src/app/question/answer/answer.tsx | 5 +-- src/lib/client/validations/answer.ts | 1 - 5 files changed, 71 insertions(+), 9 deletions(-) create mode 100644 src/actions/update-answer/index.ts create mode 100644 src/actions/update-answer/schema.ts diff --git a/src/actions/index.ts b/src/actions/index.ts index 985a40a23..3096474a4 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -1,13 +1,14 @@ -export * from './create-node'; export * from './create-answer'; +export * from './create-node'; +export * from './get-integration'; +export * from './get-me'; export * from './get-nodes'; export * from './get-nodes-count'; -export * from './get-users-count'; +export * from './get-search-nodes'; +export * from './get-search-tags'; export * from './get-tags'; export * from './get-tenant'; -export * from './get-me'; export * from './get-user'; export * from './get-users'; -export * from './get-search-nodes'; -export * from './get-search-tags'; -export * from './get-integration'; +export * from './get-users-count'; +export * from './update-answer'; diff --git a/src/actions/update-answer/index.ts b/src/actions/update-answer/index.ts new file mode 100644 index 000000000..71896ce71 --- /dev/null +++ b/src/actions/update-answer/index.ts @@ -0,0 +1,50 @@ +'use server'; + +import { revalidatePath } from 'next/cache'; +import { redirect } from 'next/navigation'; +import { getServerSession } from 'next-auth'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { updateAnswerSchema } from './schema'; + +type UpdateAnswerData = { + text: string; + id: string; + userId: string; +}; + +export async function updateAnswer(formData) { + try { + if (!formData) { + return { error: 'Data not provided' }; + } + const data = Object.fromEntries(formData) as UpdateAnswerData; + const session = await getServerSession(authOptions); + if (session) { + const result = updateAnswerSchema.safeParse(data); + if (result.success === false) { + const errors = result.error.flatten().fieldErrors; + return { error: errors }; + } else { + const { text, id, userId } = result.data; + await prisma.answer.update({ + where: { id }, + data: { + text, + userId, + }, + }); + } + } else { + return { error: 'Not signed in' }; + } + } catch (error) { + return { error: 'Error creating answer' }; + } + revalidatePath('/'); + redirect('/'); + return { message: 'Answer updated successfully' }; +} diff --git a/src/actions/update-answer/schema.ts b/src/actions/update-answer/schema.ts new file mode 100644 index 000000000..9059a3356 --- /dev/null +++ b/src/actions/update-answer/schema.ts @@ -0,0 +1,11 @@ +import { z } from 'zod'; + +export const updateAnswerSchema = z.object({ + text: z + .string() + .trim() + .min(1, { message: 'Answer is required' }) + .max(1000, { message: 'Answer must be under 1000 characters long' }), + userId: z.string().cuid2(), + id: z.string().cuid2(), +}); diff --git a/src/app/question/answer/answer.tsx b/src/app/question/answer/answer.tsx index 6bb23f7da..1c5d86d83 100644 --- a/src/app/question/answer/answer.tsx +++ b/src/app/question/answer/answer.tsx @@ -6,7 +6,7 @@ import { zodResolver } from '@hookform/resolvers/zod'; import { Controller, SubmitHandler, useForm } from 'react-hook-form'; import { z } from 'zod'; -import { createAnswer } from '@/actions'; +import { createAnswer, updateAnswer } from '@/actions'; import { BackButton, Button, Editor } from '@/components'; import { answerClientSchema } from '@/lib'; import { ExtendedNode, Me } from '@/types'; @@ -32,7 +32,6 @@ export default function Answer({ me, node }: Props) { mode: 'onBlur', defaultValues: { text: node?.answer?.text ?? '', - nodeId: node.id, userId: me.id, }, }); @@ -45,8 +44,10 @@ export default function Answer({ me, node }: Props) { formData.append(key, data[key]); } if (node?.answer) { + formData.append('id', node.answer.id); await updateAnswer(formData); } else { + formData.append('nodeId', node.id); await createAnswer(formData); } }; diff --git a/src/lib/client/validations/answer.ts b/src/lib/client/validations/answer.ts index 4ee4cc5b4..fa99601d8 100644 --- a/src/lib/client/validations/answer.ts +++ b/src/lib/client/validations/answer.ts @@ -6,6 +6,5 @@ export const answerClientSchema = z.object({ .trim() .min(1, { message: 'Answer is required' }) .max(1000, { message: 'Answer must be under 1000 characters long' }), - nodeId: z.string().cuid2(), userId: z.string().cuid2(), }); From 9ffdc2e70a152a9f11470a71cde8924292634727 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Fri, 12 Apr 2024 15:30:31 +0200 Subject: [PATCH 035/326] :sparkles: create question id page + getNode action --- src/actions/get-node/index.ts | 22 ++++ src/actions/index.ts | 1 + src/app/question/[id]/page.tsx | 24 +++++ src/app/question/[id]/question.tsx | 156 +++++++++++++++++++++++++++++ src/modules/list/List.tsx | 12 +-- 5 files changed, 209 insertions(+), 6 deletions(-) create mode 100644 src/actions/get-node/index.ts create mode 100644 src/app/question/[id]/page.tsx create mode 100644 src/app/question/[id]/question.tsx diff --git a/src/actions/get-node/index.ts b/src/actions/get-node/index.ts new file mode 100644 index 000000000..30cd9ae15 --- /dev/null +++ b/src/actions/get-node/index.ts @@ -0,0 +1,22 @@ +import { cache } from 'react'; + +import { redirect } from 'next/navigation'; + +import { Routes, nodeModelWithDate } from '@/utils'; +import prisma from 'lib/prisma'; + +export const getNode = cache(async (tenantId, id: string) => { + try { + if (!id) { + throw new Error('Node not found'); + } + const node = await prisma.node.findUnique({ + where: { id: id as string, tenantId: tenantId as string }, + include: nodeModelWithDate, + }); + if (!node) return redirect(Routes.SITE.HOME); + return node; + } catch (error) { + throw new Error('Error fetching node'); + } +}); diff --git a/src/actions/index.ts b/src/actions/index.ts index 3096474a4..90c46abed 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -2,6 +2,7 @@ export * from './create-answer'; export * from './create-node'; export * from './get-integration'; export * from './get-me'; +export * from './get-node'; export * from './get-nodes'; export * from './get-nodes-count'; export * from './get-search-nodes'; diff --git a/src/app/question/[id]/page.tsx b/src/app/question/[id]/page.tsx new file mode 100644 index 000000000..4e7b64a83 --- /dev/null +++ b/src/app/question/[id]/page.tsx @@ -0,0 +1,24 @@ +import { getMe, getNode } from '@/actions'; +import { Footer, Header } from '@/modules'; +import { Redirects } from '@/utils'; + +import Question from './question'; + +export default async function Page({ params }) { + const me = await getMe(); + + if (!me) return Redirects.LOGIN; + const tenantId = me.tenantId; + const { id } = params; + + const node = await getNode(tenantId, id); + return ( +
      +
      +
      + +
      +
      +
      + ); +} diff --git a/src/app/question/[id]/question.tsx b/src/app/question/[id]/question.tsx new file mode 100644 index 000000000..ca5e82dc9 --- /dev/null +++ b/src/app/question/[id]/question.tsx @@ -0,0 +1,156 @@ +'use client'; + +import { HelpCircle, PenSquare, LinkIcon } from 'lucide-react'; +import dynamic from 'next/dynamic'; +import Link from 'next/link'; +import { usePathname } from 'next/navigation'; + +import { + BackButton, + Badge, + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuTrigger, + Tooltip, + TooltipContent, + TooltipTrigger, +} from '@/components'; +import { ExtendedNode, Me } from '@/types'; +import { Routes, dateOptions } from '@/utils'; +const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { + ssr: false, +}); + +type Props = { + me: Me; + node: ExtendedNode; +}; + +export default function Question({ node }: Props) { + const pathname = usePathname(); + return ( +
      +
      + + + + Edit + + + + + + Question + + + + + + Answer + + + + +
      +
      +
      +

      {node.question.text}

      + + + + + Copy url + +
      +
        + {node.tags.map((tag) => ( +
      • + + {tag.label} + +
      • + ))} +
      +
      + {node.answer ? ( + + ) : ( +

      No answer

      + )} +
      +
      +
      +

      + Asked by {node.question.user.name} +

      +

      + Asked on{' '} + + {new Date(node.question.createdAt).toLocaleDateString( + undefined, + dateOptions, + )} + +

      +

      + Updated on{' '} + + {new Date(node.question.updatedAt).toLocaleDateString( + undefined, + dateOptions, + )} + +

      +
      + {node.answer && ( +
      +

      + Answered by {node.answer.user.name} +

      +

      + Answered on{' '} + + {new Date(node.answer.createdAt).toLocaleDateString( + undefined, + dateOptions, + )} + +

      +

      + Updated on{' '} + + {new Date(node.answer.updatedAt).toLocaleDateString( + undefined, + dateOptions, + )} + +

      +
      + )} +
      +
      +
      + ); +} diff --git a/src/modules/list/List.tsx b/src/modules/list/List.tsx index 6a8b9c648..31f9c061a 100644 --- a/src/modules/list/List.tsx +++ b/src/modules/list/List.tsx @@ -36,10 +36,7 @@ export const List = ({ nodes, message }: Props) => {

      {node.question.text} @@ -111,10 +108,13 @@ export const List = ({ nodes, message }: Props) => {

-
+
{node.answer ? (
- +
) : (
From da78fda5f994d0194c86b9880bbd8d2e030cebaa Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Fri, 12 Apr 2024 15:32:46 +0200 Subject: [PATCH 036/326] :label: fix typescript error --- src/actions/get-node/index.ts | 31 ++++++++++++++++-------------- src/app/question/[id]/question.tsx | 3 +-- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/actions/get-node/index.ts b/src/actions/get-node/index.ts index 30cd9ae15..e728d7e48 100644 --- a/src/actions/get-node/index.ts +++ b/src/actions/get-node/index.ts @@ -2,21 +2,24 @@ import { cache } from 'react'; import { redirect } from 'next/navigation'; +import { ExtendedNode } from '@/types'; import { Routes, nodeModelWithDate } from '@/utils'; import prisma from 'lib/prisma'; -export const getNode = cache(async (tenantId, id: string) => { - try { - if (!id) { - throw new Error('Node not found'); +export const getNode = cache( + async (tenantId, id: string): Promise => { + try { + if (!id) { + throw new Error('Node not found'); + } + const node = await prisma.node.findUnique({ + where: { id: id as string, tenantId: tenantId as string }, + include: nodeModelWithDate, + }); + if (!node) return redirect(Routes.SITE.HOME); + return node as ExtendedNode; + } catch (error) { + throw new Error('Error fetching node'); } - const node = await prisma.node.findUnique({ - where: { id: id as string, tenantId: tenantId as string }, - include: nodeModelWithDate, - }); - if (!node) return redirect(Routes.SITE.HOME); - return node; - } catch (error) { - throw new Error('Error fetching node'); - } -}); + }, +); diff --git a/src/app/question/[id]/question.tsx b/src/app/question/[id]/question.tsx index ca5e82dc9..c61ef19d0 100644 --- a/src/app/question/[id]/question.tsx +++ b/src/app/question/[id]/question.tsx @@ -16,14 +16,13 @@ import { TooltipContent, TooltipTrigger, } from '@/components'; -import { ExtendedNode, Me } from '@/types'; +import { ExtendedNode } from '@/types'; import { Routes, dateOptions } from '@/utils'; const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { ssr: false, }); type Props = { - me: Me; node: ExtendedNode; }; From 0d44462cd738f8ba469f9e9fbe92981d7665226b Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Fri, 12 Apr 2024 15:36:19 +0200 Subject: [PATCH 037/326] :pencil2: fix typo in error message --- src/actions/update-answer/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/actions/update-answer/index.ts b/src/actions/update-answer/index.ts index 71896ce71..c69a0fd47 100644 --- a/src/actions/update-answer/index.ts +++ b/src/actions/update-answer/index.ts @@ -42,7 +42,7 @@ export async function updateAnswer(formData) { return { error: 'Not signed in' }; } } catch (error) { - return { error: 'Error creating answer' }; + return { error: 'Error updating answer' }; } revalidatePath('/'); redirect('/'); From 7e6cf6047690ba2559576bf8ede435e62272f061 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Fri, 12 Apr 2024 16:00:18 +0200 Subject: [PATCH 038/326] :label: type the formData --- src/actions/create-answer/index.ts | 2 +- src/actions/update-answer/index.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/actions/create-answer/index.ts b/src/actions/create-answer/index.ts index e69a3302a..dee5c8a7e 100644 --- a/src/actions/create-answer/index.ts +++ b/src/actions/create-answer/index.ts @@ -16,7 +16,7 @@ type CreateAnswerData = { userId: string; }; -export async function createAnswer(formData) { +export async function createAnswer(formData: FormData) { try { if (!formData) { return { error: 'Data not provided' }; diff --git a/src/actions/update-answer/index.ts b/src/actions/update-answer/index.ts index c69a0fd47..e3e4fde28 100644 --- a/src/actions/update-answer/index.ts +++ b/src/actions/update-answer/index.ts @@ -16,7 +16,7 @@ type UpdateAnswerData = { userId: string; }; -export async function updateAnswer(formData) { +export async function updateAnswer(formData: FormData) { try { if (!formData) { return { error: 'Data not provided' }; From 199c13352bbe03bc307c68e0b5d9bc0ed29e132c Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sat, 13 Apr 2024 12:13:35 +0200 Subject: [PATCH 039/326] :sparkles: create tag action --- src/actions/create-tag/index.ts | 55 ++++++++++++++++++++++++++++ src/actions/create-tag/schema.ts | 8 ++++ src/app/settings/page.tsx | 3 ++ src/app/settings/settings.tsx | 10 ++++- src/modules/settings/tags/Create.tsx | 28 +++++++++----- src/modules/settings/tags/Tags.tsx | 5 ++- 6 files changed, 95 insertions(+), 14 deletions(-) create mode 100644 src/actions/create-tag/index.ts create mode 100644 src/actions/create-tag/schema.ts diff --git a/src/actions/create-tag/index.ts b/src/actions/create-tag/index.ts new file mode 100644 index 000000000..b200b4b2c --- /dev/null +++ b/src/actions/create-tag/index.ts @@ -0,0 +1,55 @@ +'use server'; + +import { revalidatePath } from 'next/cache'; +import { getServerSession } from 'next-auth'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { createTagSchema } from './schema'; + +type CreateTagData = { + label: string; + tenantId: string; + plan: string; + tagsCount: string | number; +}; + +export async function createTag(formData: FormData) { + try { + if (!formData) { + return { error: 'Data not provided' }; + } + const data = Object.fromEntries(formData) as CreateTagData; + data.tagsCount = Number(data.tagsCount); + const session = await getServerSession(authOptions); + if (session) { + const result = createTagSchema.safeParse(data); + if (result.success === false) { + const errors = result.error.flatten().fieldErrors; + return { error: errors }; + } else { + const { label, tenantId, plan, tagsCount } = result.data; + if ( + (plan === 'free' && tagsCount >= 3) || + (plan === 'startup' && tagsCount >= 10) + ) { + return { error: 'You reached the maximum number of tags.' }; + } + await prisma.tag.create({ + data: { + label, + tenantId, + }, + }); + } + } else { + return { error: 'Not signed in' }; + } + } catch (error) { + return { error: 'Error creating tag' }; + } + revalidatePath('/settings'); + return { message: 'Tag created successfully' }; +} diff --git a/src/actions/create-tag/schema.ts b/src/actions/create-tag/schema.ts new file mode 100644 index 000000000..d055ce244 --- /dev/null +++ b/src/actions/create-tag/schema.ts @@ -0,0 +1,8 @@ +import { z } from 'zod'; + +export const createTagSchema = z.object({ + label: z.string().trim().min(1, { message: 'Tag name is required' }), + tenantId: z.string().cuid2(), + plan: z.enum(['free', 'startup', 'enterprise']), + tagsCount: z.number().min(0), +}); diff --git a/src/app/settings/page.tsx b/src/app/settings/page.tsx index a3d4aff45..f977770bd 100644 --- a/src/app/settings/page.tsx +++ b/src/app/settings/page.tsx @@ -3,6 +3,7 @@ import { getMe, getNodesCount, getTags, + getTagsCount, getTenant, getUsers, getUsersCount, @@ -23,6 +24,7 @@ export default async function Page() { const nodesCount = await getNodesCount(tenantId); const usersCount = await getUsersCount(tenantId); + const tagsCount = await getTagsCount(tenantId); const tenant = await getTenant(tenantId); const integrations = await getIntegration(tenantId); const tags = await getTags(tenantId); @@ -36,6 +38,7 @@ export default async function Page() { - + diff --git a/src/modules/settings/tags/Create.tsx b/src/modules/settings/tags/Create.tsx index 4324e4592..f10394dae 100644 --- a/src/modules/settings/tags/Create.tsx +++ b/src/modules/settings/tags/Create.tsx @@ -1,10 +1,12 @@ import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; +import { $Enums } from '@prisma/client'; import { PlusCircle, Tag as TagIcon } from 'lucide-react'; import { SubmitHandler, useForm } from 'react-hook-form'; import { z } from 'zod'; +import { createTag } from '@/actions'; import { Button, Dialog, @@ -20,16 +22,18 @@ import { Field, Input, } from '@/components'; -import { useCreateTag, useMediaQuery } from '@/hooks'; +import { useMediaQuery } from '@/hooks'; import { createTagClientSchema } from '@/lib'; type Props = { tenantId: string; + plan: $Enums.Plan; + tagsCount: number; }; type Schema = z.infer; -export const CreateTag = ({ tenantId }: Props) => { +export const CreateTag = ({ tenantId, plan, tagsCount }: Props) => { const isDesktop = useMediaQuery('(min-width: 640px)'); if (isDesktop) { @@ -53,7 +57,7 @@ export const CreateTag = ({ tenantId }: Props) => { New tag -
+ ); @@ -80,20 +84,19 @@ export const CreateTag = ({ tenantId }: Props) => { New tag - +
); }; -const Form = ({ tenantId }: Props) => { +const Form = ({ tenantId, plan, tagsCount }: Props) => { const [disabled, setDisabled] = useState(true); const { register, handleSubmit, - reset, formState: { errors, isSubmitting, isValid }, } = useForm({ resolver: zodResolver(createTagClientSchema), @@ -103,10 +106,15 @@ const Form = ({ tenantId }: Props) => { }, }); - const { mutate, isError, error } = useCreateTag(tenantId, reset); - - const onSubmit: SubmitHandler = (values) => { - mutate(values); + const onSubmit: SubmitHandler = async (data) => { + const formData = new FormData(); + for (const key in data) { + formData.append(key, data[key]); + } + formData.append('tagsCount', String(tagsCount)); + formData.append('plan', plan); + formData.append('tenantId', tenantId); + await createTag(formData); }; useEffect(() => { diff --git a/src/modules/settings/tags/Tags.tsx b/src/modules/settings/tags/Tags.tsx index a5b6e8d0b..4050c6521 100644 --- a/src/modules/settings/tags/Tags.tsx +++ b/src/modules/settings/tags/Tags.tsx @@ -13,9 +13,10 @@ type Props = { tenantId: string; plan: $Enums.Plan; tags: Tag[]; + tagsCount: number; }; -export const Tags = ({ tenantId, plan, tags }: Props) => { +export const Tags = ({ tenantId, plan, tags, tagsCount }: Props) => { const [limit, setLimit] = useState(3); const { mutate, isPending: isTagLoading } = useDeleteTag(tenantId); @@ -57,7 +58,7 @@ export const Tags = ({ tenantId, plan, tags }: Props) => { ) : (

No tags

)} - + {tags.length > 0 && plan !== 'enterprise' && (

Tags limit: {tags.length} /{' '} From 18d656dd136ac526d670a5670b68d40c07c16942 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sat, 13 Apr 2024 12:14:34 +0200 Subject: [PATCH 040/326] :sparkles: update tenant action --- src/actions/update-tenant/index.ts | 51 +++++++++++++++++ src/actions/update-tenant/schema.ts | 12 ++++ src/modules/settings/general/Company.tsx | 70 ++++++++++-------------- src/modules/settings/general/General.tsx | 6 +- 4 files changed, 94 insertions(+), 45 deletions(-) create mode 100644 src/actions/update-tenant/index.ts create mode 100644 src/actions/update-tenant/schema.ts diff --git a/src/actions/update-tenant/index.ts b/src/actions/update-tenant/index.ts new file mode 100644 index 000000000..2a0e8761a --- /dev/null +++ b/src/actions/update-tenant/index.ts @@ -0,0 +1,51 @@ +'use server'; + +import { revalidatePath } from 'next/cache'; +import { redirect } from 'next/navigation'; +import { getServerSession } from 'next-auth'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { updateTenantSchema } from './schema'; + +type UpdateTenantData = { + text: string; + id: string; + userId: string; +}; + +export async function updateTenant(formData: FormData) { + try { + if (!formData) { + return { error: 'Data not provided' }; + } + const data = Object.fromEntries(formData) as UpdateTenantData; + const session = await getServerSession(authOptions); + if (session) { + const result = updateTenantSchema.safeParse(data); + if (result.success === false) { + const errors = result.error.flatten().fieldErrors; + return { error: errors }; + } else { + const { company, id, email, domain } = result.data; + await prisma.tenant.update({ + where: { id }, + data: { + company, + email, + domain: domain || '', + }, + }); + } + } else { + return { error: 'Not signed in' }; + } + } catch (error) { + return { error: 'Error updating tenant' }; + } + revalidatePath('/settings'); + redirect('/'); + return { message: 'Tenant updated successfully' }; +} diff --git a/src/actions/update-tenant/schema.ts b/src/actions/update-tenant/schema.ts new file mode 100644 index 000000000..f4e9a0b8c --- /dev/null +++ b/src/actions/update-tenant/schema.ts @@ -0,0 +1,12 @@ +import { z } from 'zod'; + +export const updateTenantSchema = z.object({ + company: z.string().trim().min(1, { message: 'Company name is required' }), + email: z + .string() + .trim() + .min(1, { message: 'Email is required' }) + .email({ message: 'Invalid email' }), + domain: z.string().trim().nullable(), + id: z.string().cuid2(), +}); diff --git a/src/modules/settings/general/Company.tsx b/src/modules/settings/general/Company.tsx index 9000381cc..471ccab3c 100644 --- a/src/modules/settings/general/Company.tsx +++ b/src/modules/settings/general/Company.tsx @@ -1,15 +1,14 @@ 'use client'; -import { useEffect, useMemo, useState } from 'react'; +import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; import { Tenant } from '@prisma/client'; -import { useRouter } from 'next/navigation'; import { SubmitHandler, useForm } from 'react-hook-form'; import { z } from 'zod'; +import { updateTenant } from '@/actions'; import { Button, Field, Input } from '@/components'; -import { useUpdateTenant } from '@/hooks'; import { updateTenantClientSchema } from '@/lib'; import { ITenantUpdateFields } from '@/types'; @@ -19,14 +18,11 @@ type Props = { type Schema = z.infer; -export const Company = ({ tenant }: Props) => { +export function Company({ tenant }: Props) { const [disabled, setDisabled] = useState(true); - const router = useRouter(); const { register, handleSubmit, - watch, - reset, formState: { isSubmitting, isDirty, isValid, errors }, } = useForm({ resolver: zodResolver(updateTenantClientSchema), @@ -37,45 +33,37 @@ export const Company = ({ tenant }: Props) => { domain: tenant.domain, }, }); - const domainValue = watch('domain'); - const { mutate } = useUpdateTenant(tenant.id, router); - - const onSubmit: SubmitHandler = (values) => { - mutate(values); + const onSubmit: SubmitHandler = async (data) => { + const formData = new FormData(); + for (const key in data) { + formData.append(key, data[key]); + } + formData.append('id', tenant.id); + await updateTenant(formData); }; - const fields: ITenantUpdateFields[] = useMemo( - () => [ - { - label: 'Company', - value: 'company', - type: 'text', - }, - { - label: 'Email', - value: 'email', - type: 'email', - }, - { - label: 'Domain', - value: 'domain', - type: 'text', - }, - ], - [], - ); + const fields: ITenantUpdateFields[] = [ + { + label: 'Company', + value: 'company', + type: 'text', + }, + { + label: 'Email', + value: 'email', + type: 'email', + }, + { + label: 'Domain', + value: 'domain', + type: 'text', + }, + ]; useEffect(() => { - if (domainValue === '') { - reset({ - domain: tenant.domain, - }); - } setDisabled(isSubmitting || !isDirty || !isValid); - - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [isDirty, isSubmitting, isValid, domainValue]); + }, [isDirty, isSubmitting, isValid]); return (

@@ -119,4 +107,4 @@ export const Company = ({ tenant }: Props) => {
); -}; +} diff --git a/src/modules/settings/general/General.tsx b/src/modules/settings/general/General.tsx index 2bc0ceff2..0fdb439cc 100644 --- a/src/modules/settings/general/General.tsx +++ b/src/modules/settings/general/General.tsx @@ -6,7 +6,6 @@ import { Files } from './Files'; import { Integrations } from './Integrations'; type Props = { - tenantId: string; tenant: Tenant; integrations: IntegrationsType; nodesCount: number; @@ -14,7 +13,6 @@ type Props = { }; export const General = ({ - tenantId, tenant, integrations, nodesCount, @@ -32,12 +30,12 @@ export const General = ({
{tenant.plan !== 'free' && (
- +
)}
Date: Sat, 13 Apr 2024 12:15:10 +0200 Subject: [PATCH 041/326] :sparkles: upsert integrations action --- src/actions/upsert-integrations/index.ts | 50 +++++++++++++++++++ src/actions/upsert-integrations/schema.ts | 6 +++ src/modules/settings/general/Integrations.tsx | 38 +++++++------- 3 files changed, 75 insertions(+), 19 deletions(-) create mode 100644 src/actions/upsert-integrations/index.ts create mode 100644 src/actions/upsert-integrations/schema.ts diff --git a/src/actions/upsert-integrations/index.ts b/src/actions/upsert-integrations/index.ts new file mode 100644 index 000000000..95045b4b8 --- /dev/null +++ b/src/actions/upsert-integrations/index.ts @@ -0,0 +1,50 @@ +'use server'; + +import { revalidatePath } from 'next/cache'; +import { redirect } from 'next/navigation'; +import { getServerSession } from 'next-auth'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { upsertIntegrationsSchema } from './schema'; + +type UpsertIntegrationsData = { + slack: string; + tenantId: string; +}; + +export async function upsertIntegrations(formData: FormData) { + try { + if (!formData) { + return { error: 'Data not provided' }; + } + const data = Object.fromEntries(formData) as UpsertIntegrationsData; + const session = await getServerSession(authOptions); + if (session) { + const result = upsertIntegrationsSchema.safeParse(data); + if (result.success === false) { + const errors = result.error.flatten().fieldErrors; + return { error: errors }; + } else { + const { slack, tenantId } = result.data; + await prisma.integrations.upsert({ + where: { tenantId }, + update: { slack }, + create: { + slack, + tenantId, + }, + }); + } + } else { + return { error: 'Not signed in' }; + } + } catch (error) { + return { error: 'Error updating integrations' }; + } + revalidatePath('/settings'); + redirect('/'); + return { message: 'Integrations updated successfully' }; +} diff --git a/src/actions/upsert-integrations/schema.ts b/src/actions/upsert-integrations/schema.ts new file mode 100644 index 000000000..907f55967 --- /dev/null +++ b/src/actions/upsert-integrations/schema.ts @@ -0,0 +1,6 @@ +import { z } from 'zod'; + +export const upsertIntegrationsSchema = z.object({ + slack: z.string().trim().url({ message: 'Invalid URL' }), + tenantId: z.string().cuid2(), +}); diff --git a/src/modules/settings/general/Integrations.tsx b/src/modules/settings/general/Integrations.tsx index 2f93649d5..a66a11e5d 100644 --- a/src/modules/settings/general/Integrations.tsx +++ b/src/modules/settings/general/Integrations.tsx @@ -1,14 +1,14 @@ 'use client'; -import { useEffect, useMemo, useState } from 'react'; +import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; import { Integrations as IntegrationsType } from '@prisma/client'; -import { useForm } from 'react-hook-form'; +import { SubmitHandler, useForm } from 'react-hook-form'; import { z } from 'zod'; +import { upsertIntegrations } from '@/actions'; import { Button, Field, Input } from '@/components'; -import { useUpsertIntegrations } from '@/hooks'; import { integrationsClientSchema } from '@/lib'; import { IIntegrations } from '@/types'; @@ -19,7 +19,7 @@ type Props = { type Schema = z.infer; -export const Integrations = ({ tenantId, integrations }: Props) => { +export function Integrations({ tenantId, integrations }: Props) { const [disabled, setDisabled] = useState(true); const { register, @@ -33,22 +33,22 @@ export const Integrations = ({ tenantId, integrations }: Props) => { }, }); - const { mutate } = useUpsertIntegrations(tenantId); - - const onSubmit = (values: IntegrationsType) => { - mutate(values); + const onSubmit: SubmitHandler = async (data) => { + const formData = new FormData(); + for (const key in data) { + formData.append(key, data[key]); + } + formData.append('tenantId', tenantId); + await upsertIntegrations(formData); }; - const fields: IIntegrations[] = useMemo( - () => [ - { - label: 'Slack', - value: 'slack', - type: 'url', - }, - ], - [], - ); + const fields: IIntegrations[] = [ + { + label: 'Slack', + value: 'slack', + type: 'url', + }, + ]; useEffect(() => { setDisabled(isSubmitting || !isDirty || !isValid); @@ -96,4 +96,4 @@ export const Integrations = ({ tenantId, integrations }: Props) => {
); -}; +} From 5f91b9d6717844b8b702b7a28cce421cbcd7f232 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sat, 13 Apr 2024 12:15:40 +0200 Subject: [PATCH 042/326] :sparkles: get tags count action --- src/actions/get-tags-count/index.ts | 20 ++++++++++++++++++++ src/actions/index.ts | 4 ++++ 2 files changed, 24 insertions(+) create mode 100644 src/actions/get-tags-count/index.ts diff --git a/src/actions/get-tags-count/index.ts b/src/actions/get-tags-count/index.ts new file mode 100644 index 000000000..95972aa80 --- /dev/null +++ b/src/actions/get-tags-count/index.ts @@ -0,0 +1,20 @@ +import { cache } from 'react'; + +import prisma from 'lib/prisma'; + +export const getTagsCount = cache(async (tenantId: string): Promise => { + try { + if (!tenantId) { + throw new Error('Tenant not found'); + } + const tags = await prisma.tag.count({ + where: { tenantId }, + }); + + if (!tags) return 0; + + return tags; + } catch (error) { + throw new Error('Error fetching tags count'); + } +}); diff --git a/src/actions/index.ts b/src/actions/index.ts index 90c46abed..5e3e1cf89 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -1,5 +1,6 @@ export * from './create-answer'; export * from './create-node'; +export * from './create-tag'; export * from './get-integration'; export * from './get-me'; export * from './get-node'; @@ -8,8 +9,11 @@ export * from './get-nodes-count'; export * from './get-search-nodes'; export * from './get-search-tags'; export * from './get-tags'; +export * from './get-tags-count'; export * from './get-tenant'; export * from './get-user'; export * from './get-users'; export * from './get-users-count'; export * from './update-answer'; +export * from './update-tenant'; +export * from './upsert-integrations'; From 417bb66ad52ffe4eff4657ae5c2af5ff0418688d Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sat, 13 Apr 2024 12:16:27 +0200 Subject: [PATCH 043/326] :bug: remove name props --- src/components/input/Input.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/input/Input.tsx b/src/components/input/Input.tsx index e1ec80c63..23f60462f 100644 --- a/src/components/input/Input.tsx +++ b/src/components/input/Input.tsx @@ -12,14 +12,13 @@ const styles = 'shadow-sm shadow-grayA-7 focus:shadow-tealA-8 bg-gray-3 w-full rounded-md p-1 outline-none'; export const Input = forwardRef( - ({ className, type, name, withIcon = false, icon, ...props }, ref) => { + ({ className, type, withIcon = false, icon, ...props }, ref) => { return withIcon ? (
{icon} Date: Sat, 13 Apr 2024 12:17:00 +0200 Subject: [PATCH 044/326] :lipstick: add styling --- src/app/error.tsx | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/app/error.tsx b/src/app/error.tsx index 4b4c2ca9c..f9023c074 100644 --- a/src/app/error.tsx +++ b/src/app/error.tsx @@ -2,6 +2,8 @@ import { useEffect } from 'react'; +import { Button } from '@/components'; + export default function Error({ error, reset, @@ -14,9 +16,19 @@ export default function Error({ }, [error]); return ( -
-

Something went wrong!

- +
+

Something went wrong!

+
); } From 41a117841f34ad720d584cc019fbb106254249ab Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sat, 13 Apr 2024 18:37:19 +0200 Subject: [PATCH 045/326] :sparkles: create delete tag action --- src/actions/delete-tag/index.ts | 44 ++++++++++++++++++++++++++++++ src/actions/delete-tag/schema.ts | 6 ++++ src/actions/index.ts | 1 + src/modules/settings/tags/Tags.tsx | 11 ++++---- 4 files changed, 57 insertions(+), 5 deletions(-) create mode 100644 src/actions/delete-tag/index.ts create mode 100644 src/actions/delete-tag/schema.ts diff --git a/src/actions/delete-tag/index.ts b/src/actions/delete-tag/index.ts new file mode 100644 index 000000000..49dddb61c --- /dev/null +++ b/src/actions/delete-tag/index.ts @@ -0,0 +1,44 @@ +'use server'; + +import { revalidatePath } from 'next/cache'; +import { getServerSession } from 'next-auth'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { deleteTagSchema } from './schema'; + +type DeleteTagData = { + text: string; + nodeId: string; + userId: string; +}; + +export async function deleteTag(formData: FormData) { + try { + if (!formData) { + return { error: 'Data not provided' }; + } + const data = Object.fromEntries(formData) as DeleteTagData; + const session = await getServerSession(authOptions); + if (session) { + const result = deleteTagSchema.safeParse(data); + if (result.success === false) { + const errors = result.error.flatten().fieldErrors; + return { error: errors }; + } else { + const { id, tenantId } = result.data; + await prisma.tag.delete({ + where: { id, tenantId }, + }); + } + } else { + return { error: 'Not signed in' }; + } + } catch (error) { + return { error: 'Error creating answer' }; + } + revalidatePath('/settings'); + return { message: 'Answer created successfully' }; +} diff --git a/src/actions/delete-tag/schema.ts b/src/actions/delete-tag/schema.ts new file mode 100644 index 000000000..cfdb6146c --- /dev/null +++ b/src/actions/delete-tag/schema.ts @@ -0,0 +1,6 @@ +import { z } from 'zod'; + +export const deleteTagSchema = z.object({ + tenantId: z.string().cuid2(), + id: z.string().cuid2(), +}); diff --git a/src/actions/index.ts b/src/actions/index.ts index 5e3e1cf89..87fc9fb06 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -1,6 +1,7 @@ export * from './create-answer'; export * from './create-node'; export * from './create-tag'; +export * from './delete-tag'; export * from './get-integration'; export * from './get-me'; export * from './get-node'; diff --git a/src/modules/settings/tags/Tags.tsx b/src/modules/settings/tags/Tags.tsx index 4050c6521..accb8bce1 100644 --- a/src/modules/settings/tags/Tags.tsx +++ b/src/modules/settings/tags/Tags.tsx @@ -4,8 +4,8 @@ import { useEffect, useState } from 'react'; import { $Enums, Tag } from '@prisma/client'; +import { deleteTag } from '@/actions'; import { Button } from '@/components'; -import { useDeleteTag } from '@/hooks'; import { CreateTag } from './Create'; @@ -19,10 +19,11 @@ type Props = { export const Tags = ({ tenantId, plan, tags, tagsCount }: Props) => { const [limit, setLimit] = useState(3); - const { mutate, isPending: isTagLoading } = useDeleteTag(tenantId); - - const handleDeleteTag = (id: string) => { - mutate({ id }); + const handleDeleteTag = async (id: string) => { + const formData = new FormData(); + formData.append('tenantId', tenantId); + formData.append('id', id); + await deleteTag(formData); }; useEffect(() => { From 74faed19b48531661e875565c1b09b013ffec6c3 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sat, 13 Apr 2024 19:11:53 +0200 Subject: [PATCH 046/326] :sparkles: update node action --- src/actions/index.ts | 1 + src/actions/update-node/index.ts | 79 +++++++++++++++ src/actions/update-node/schema.ts | 14 +++ src/app/question/edit/edit.tsx | 132 +++++++++++++++++++++++++ src/app/question/edit/page.tsx | 25 +++++ src/lib/client/validations/question.ts | 8 ++ src/modules/question/TagsList.tsx | 2 + 7 files changed, 261 insertions(+) create mode 100644 src/actions/update-node/index.ts create mode 100644 src/actions/update-node/schema.ts create mode 100644 src/app/question/edit/edit.tsx diff --git a/src/actions/index.ts b/src/actions/index.ts index 87fc9fb06..99a5694f7 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -16,5 +16,6 @@ export * from './get-user'; export * from './get-users'; export * from './get-users-count'; export * from './update-answer'; +export * from './update-node'; export * from './update-tenant'; export * from './upsert-integrations'; diff --git a/src/actions/update-node/index.ts b/src/actions/update-node/index.ts new file mode 100644 index 000000000..e896b48e2 --- /dev/null +++ b/src/actions/update-node/index.ts @@ -0,0 +1,79 @@ +'use server'; + +import { revalidatePath } from 'next/cache'; +import { redirect } from 'next/navigation'; +import { getServerSession } from 'next-auth'; +import slugify from 'slugify'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { updateNodeSchema } from './schema'; + +type UpdateNodeData = { + text: string; + id: string; + userId: string; + tenantId: string; + questionId: string; +}; + +export async function updateNode(tags, formData: FormData) { + try { + if (!formData) { + return { error: 'Data not provided' }; + } + const data = Object.fromEntries(formData) as UpdateNodeData; + const session = await getServerSession(authOptions); + if (session) { + const result = updateNodeSchema.safeParse({ ...data, tags }); + if (result.success === false) { + const errors = result.error.flatten().fieldErrors; + return { error: errors }; + } else { + const { tenantId, questionId, text, userId, tags, id } = result.data; + const duplicateQuestion = await prisma.node.findFirst({ + where: { + tenantId, + question: { text: text }, + tags: { every: { id: { in: tags }, tenantId }, some: {} }, + }, + }); + if (duplicateQuestion) { + return { error: 'This question already exists' }; + } + await prisma.node.update({ + where: { id, tenantId: tenantId as string }, + data: { + question: { + update: { + where: { id: questionId as string }, + data: { + text: text as string, + slug: slugify(text).toLowerCase(), + user: { connect: { id: userId } }, + }, + }, + }, + tags: { + set: tags.map((tag: string) => { + return { + id: tag, + tenantId, + }; + }), + }, + }, + }); + } + } else { + return { error: 'Not signed in' }; + } + } catch (error) { + return { error: 'Error updating question' }; + } + revalidatePath('/'); + redirect('/'); + return { message: 'Question updated successfully' }; +} diff --git a/src/actions/update-node/schema.ts b/src/actions/update-node/schema.ts new file mode 100644 index 000000000..75a4660d1 --- /dev/null +++ b/src/actions/update-node/schema.ts @@ -0,0 +1,14 @@ +import { z } from 'zod'; + +export const updateNodeSchema = z.object({ + text: z + .string() + .trim() + .min(3, { message: 'Question must be at least 3 characters long' }) + .max(100, { message: 'Question must be under 100 characters long' }), + userId: z.string().cuid2(), + questionId: z.string().cuid2(), + tenantId: z.string().cuid2(), + tags: z.array(z.string().cuid2()), + id: z.string().cuid2(), +}); diff --git a/src/app/question/edit/edit.tsx b/src/app/question/edit/edit.tsx new file mode 100644 index 000000000..980238f78 --- /dev/null +++ b/src/app/question/edit/edit.tsx @@ -0,0 +1,132 @@ +'use client'; + +import { useEffect, useState } from 'react'; + +import { zodResolver } from '@hookform/resolvers/zod'; +import { Tag } from '@prisma/client'; +import { HelpCircle } from 'lucide-react'; +import { SubmitHandler, useForm } from 'react-hook-form'; +import { z } from 'zod'; + +import { updateNode } from '@/actions'; +import { BackButton, Button, Field, Input } from '@/components'; +import { useMediaQuery } from '@/hooks'; +import { createQuestionSchema } from '@/lib'; +import { TagsList } from '@/modules'; +import { ExtendedNode, Me } from '@/types'; +import { Limits, arraysAreEqual } from '@/utils'; + +type Props = { + me: Me; + node: ExtendedNode; + tags: Tag[]; +}; + +type Schema = z.infer; + +export default function Edit({ me, node, tags }: Props) { + const [disabled, setDisabled] = useState(true); + const [selectedTags, setSelectedTags] = useState([]); + const isDesktop = useMediaQuery('(min-width: 640px)'); + + const { + register, + handleSubmit, + watch, + formState: { isSubmitting, isDirty, isValid, errors }, + } = useForm({ + resolver: zodResolver(createQuestionSchema), + mode: 'onBlur', + defaultValues: { + text: node?.question.text, + }, + }); + + const text = watch('text'); + + // const { mutate } = useUpdateNode( + // id, + // me.tenantId, + // me.id, + // selectedTags, + // router, + // node?.question.id, + // ); + + const onSubmit: SubmitHandler = async (data) => { + const formData = new FormData(); + for (const key in data) { + formData.append(key, data[key]); + } + formData.append('id', node.id); + formData.append('tenantId', me.tenantId); + formData.append('userId', me.id); + formData.append('questionId', node.question.id); + await updateNode(selectedTags, formData); + }; + + const tagsId = node?.tags?.map((tag) => tag.id); + + useEffect(() => { + setSelectedTags(node?.tags?.map((tag) => tag.id)); + setDisabled(isSubmitting || !isValid || !isDirty); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [isSubmitting, isValid, isDirty]); + return ( +
+ +
+
+
+
+ + Edit the question + +
+ + } + type="text" + id="question" + /> + +
+ + + +
+
+ ); +} diff --git a/src/app/question/edit/page.tsx b/src/app/question/edit/page.tsx index e69de29bb..80ea0e649 100644 --- a/src/app/question/edit/page.tsx +++ b/src/app/question/edit/page.tsx @@ -0,0 +1,25 @@ +import { getMe, getNode, getTags } from '@/actions'; +import { Footer, Header } from '@/modules'; +import { Redirects } from '@/utils'; + +import Edit from './edit'; + +export default async function Page({ searchParams }) { + const me = await getMe(); + + if (!me) return Redirects.LOGIN; + const tenantId = me.tenantId; + const { id } = searchParams; + + const node = await getNode(tenantId, id); + const tags = await getTags(tenantId); + return ( +
+
+
+ +
+
+
+ ); +} diff --git a/src/lib/client/validations/question.ts b/src/lib/client/validations/question.ts index 3d6f99898..e358e2099 100644 --- a/src/lib/client/validations/question.ts +++ b/src/lib/client/validations/question.ts @@ -10,3 +10,11 @@ export const questionClientSchema = z.object({ userId: z.string().cuid2(), withAnswer: z.boolean().optional(), }); + +export const createQuestionSchema = z.object({ + text: z + .string() + .trim() + .min(3, { message: 'Question must be at least 3 characters long' }) + .max(100, { message: 'Question must be under 100 characters long' }), +}); diff --git a/src/modules/question/TagsList.tsx b/src/modules/question/TagsList.tsx index f57b412a0..ed607e289 100644 --- a/src/modules/question/TagsList.tsx +++ b/src/modules/question/TagsList.tsx @@ -1,3 +1,5 @@ +'use client'; + import { Dispatch, SetStateAction } from 'react'; import { Tag } from '@prisma/client'; From 1fa69acd40f3e9267b6db8d626ceffa1b8f517bb Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sat, 13 Apr 2024 19:12:28 +0200 Subject: [PATCH 047/326] :pencil2: fix error messages --- src/actions/delete-tag/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/actions/delete-tag/index.ts b/src/actions/delete-tag/index.ts index 49dddb61c..ecb511656 100644 --- a/src/actions/delete-tag/index.ts +++ b/src/actions/delete-tag/index.ts @@ -37,8 +37,8 @@ export async function deleteTag(formData: FormData) { return { error: 'Not signed in' }; } } catch (error) { - return { error: 'Error creating answer' }; + return { error: 'Error deleting tag' }; } revalidatePath('/settings'); - return { message: 'Answer created successfully' }; + return { message: 'Tag deleted successfully' }; } From bcc0333f8264bf7bcbbbcdbbd5d0561cd1252d68 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sat, 13 Apr 2024 20:14:54 +0200 Subject: [PATCH 048/326] :sparkles: create tenant action --- src/actions/create-tenant/index.ts | 78 +++++++++++++++++++++++++++++ src/actions/create-tenant/schema.ts | 16 ++++++ src/actions/index.ts | 1 + 3 files changed, 95 insertions(+) create mode 100644 src/actions/create-tenant/index.ts create mode 100644 src/actions/create-tenant/schema.ts diff --git a/src/actions/create-tenant/index.ts b/src/actions/create-tenant/index.ts new file mode 100644 index 000000000..8d372330d --- /dev/null +++ b/src/actions/create-tenant/index.ts @@ -0,0 +1,78 @@ +'use server'; + +import { Resend } from 'resend'; + +import { RegisterEmailTemplate } from '@/components'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { createTenantSchema } from './schema'; + +const resend = new Resend(process.env.RESEND_API_KEY); +const { data: domains } = await resend.domains.list(); + +type CreateTenantData = { + company: string; + companyEmail: string; + domain: string; + email: string; +}; + +export async function createTenant(formData: FormData) { + try { + if (!formData) { + return { error: 'Data not provided' }; + } + const data = Object.fromEntries(formData) as CreateTenantData; + const result = createTenantSchema.safeParse(data); + if (result.success === false) { + const errors = result.error.formErrors.fieldErrors; + return { error: errors }; + } else { + const { company, companyEmail, email, domain } = result.data; + const tenantExists = await prisma.tenant.findUnique({ + where: { email: companyEmail }, + }); + if (tenantExists) { + return { + error: 'An account with the same company email already exists', + }; + } + const userExists = await prisma.user.findUnique({ + where: { email }, + }); + if (userExists) { + return { error: 'A user with the same email already exists' }; + } + const tenant = await prisma.tenant.create({ + data: { + company, + email: companyEmail, + domain, + }, + }); + if (!tenant) { + return { error: 'There was a problem when creating the account' }; + } + const user = await prisma.user.create({ + data: { + email, + role: 'tenant', + tenant: { connect: { id: tenant.id } }, + }, + }); + if (!user) { + return { error: 'There was a problem when creating the user' }; + } + await resend.emails.send({ + from: `noreply@${domains?.data[0].name}`, + to: [companyEmail], + subject: 'Welcome to FAQMaker', + react: RegisterEmailTemplate(), + }); + } + } catch (error) { + return { error: 'Error creating account' }; + } + return { message: 'Account created successfully' }; +} diff --git a/src/actions/create-tenant/schema.ts b/src/actions/create-tenant/schema.ts new file mode 100644 index 000000000..25bc2f0af --- /dev/null +++ b/src/actions/create-tenant/schema.ts @@ -0,0 +1,16 @@ +import { z } from 'zod'; + +export const createTenantSchema = z.object({ + company: z.string().trim().min(1, { message: 'Company name is required' }), + companyEmail: z + .string() + .trim() + .min(1, { message: 'Company email is required' }) + .email({ message: 'Invalid email' }), + domain: z.string().trim().nullable(), + email: z + .string() + .trim() + .min(1, { message: 'User email is required' }) + .email({ message: 'Invalid email' }), +}); diff --git a/src/actions/index.ts b/src/actions/index.ts index 99a5694f7..313b0e134 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -1,6 +1,7 @@ export * from './create-answer'; export * from './create-node'; export * from './create-tag'; +export * from './create-tenant'; export * from './delete-tag'; export * from './get-integration'; export * from './get-me'; From 78ea0c8146333004b2a1a84e1ab904860f9fa3a4 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 14 Apr 2024 10:58:44 +0200 Subject: [PATCH 049/326] :heavy_minus_sign: uninstall next-safe-action --- package.json | 1 - pnpm-lock.yaml | 91 ------------------------------------------ src/lib/safe-action.ts | 3 -- 3 files changed, 95 deletions(-) delete mode 100644 src/lib/safe-action.ts diff --git a/package.json b/package.json index 2f2bba400..5d0cd6835 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,6 @@ "next-auth": "^4.24.5", "next-connect": "^0.13.0", "next-remove-imports": "^1.0.12", - "next-safe-action": "^6.2.0", "next-themes": "^0.2.1", "react": "18.2.0", "react-dom": "18.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1d916c098..8cf3d22a3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -95,9 +95,6 @@ dependencies: next-remove-imports: specifier: ^1.0.12 version: 1.0.12(webpack@5.89.0) - next-safe-action: - specifier: ^6.2.0 - version: 6.2.0(ajv@8.12.0)(next@14.1.0)(react@18.2.0) next-themes: specifier: ^0.2.1 version: 0.2.1(next@14.1.0)(react-dom@18.2.0)(react@18.2.0) @@ -640,64 +637,6 @@ packages: dependencies: '@jridgewell/trace-mapping': 0.3.9 - /@decs/typeschema@0.12.2(ajv@8.12.0)(zod@3.22.4): - resolution: {integrity: sha512-PA8uAH/Xfsa5X2UNNSnb5i6vB8qWZywp4+d2U8kNMCO7qwirYRPbFCHwIfWBJyURh4rULn3Ey+VBADLcK2xxaQ==} - deprecated: TypeSchema has been restructured. Install @typeschema/main or @typeschema/all instead. - peerDependencies: - '@deepkit/type': ^1.0.1-alpha.113 - '@effect/schema': ^0.60.6 - '@sinclair/typebox': ^0.32.11 - ajv: ^8.12.0 - arktype: ^1.0.29-alpha - effect: ^2.1.2 - fp-ts: ^2.16.2 - io-ts: ^2.2.21 - joi: ^17.12.0 - ow: ^0.28.2 - runtypes: ^6.7.0 - superstruct: ^1.0.3 - valibot: ^0.26.0 - vite: ^5.0.12 - yup: ^1.3.3 - zod: ^3.22.4 - peerDependenciesMeta: - '@deepkit/type': - optional: true - '@effect/schema': - optional: true - '@sinclair/typebox': - optional: true - ajv: - optional: true - arktype: - optional: true - effect: - optional: true - fp-ts: - optional: true - io-ts: - optional: true - joi: - optional: true - ow: - optional: true - runtypes: - optional: true - superstruct: - optional: true - valibot: - optional: true - vite: - optional: true - yup: - optional: true - zod: - optional: true - dependencies: - ajv: 8.12.0 - zod: 3.22.4 - dev: false - /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -6080,36 +6019,6 @@ packages: - webpack dev: false - /next-safe-action@6.2.0(ajv@8.12.0)(next@14.1.0)(react@18.2.0): - resolution: {integrity: sha512-gssUs3OLoNjLXZalrQaly38s/mUtXsIcKWGIK3jFkW8GHl0/Xhq+3G8yEEyObET2YlYqUj79K+mH3iTNBLDcMw==} - engines: {node: '>=18.17'} - peerDependencies: - next: '>= 14.0.0' - react: '>= 18.2.0' - dependencies: - '@decs/typeschema': 0.12.2(ajv@8.12.0)(zod@3.22.4) - next: 14.1.0(@babel/core@7.22.17)(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - optionalDependencies: - zod: 3.22.4 - transitivePeerDependencies: - - '@deepkit/type' - - '@effect/schema' - - '@sinclair/typebox' - - ajv - - arktype - - effect - - fp-ts - - io-ts - - joi - - ow - - runtypes - - superstruct - - valibot - - vite - - yup - dev: false - /next-themes@0.2.1(next@14.1.0)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==} peerDependencies: diff --git a/src/lib/safe-action.ts b/src/lib/safe-action.ts deleted file mode 100644 index 2f9142094..000000000 --- a/src/lib/safe-action.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { createSafeActionClient } from 'next-safe-action'; - -export const action = createSafeActionClient(); From 9ebe2a36ebbbf137188682ad7de76c5b05eb6c80 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 14 Apr 2024 11:03:13 +0200 Subject: [PATCH 050/326] :sparkles: migrate profile page --- src/actions/get-user-answers/index.ts | 37 ++++++++++++++++++ src/actions/get-user-questions/index.ts | 25 ++++++++++++ src/actions/index.ts | 3 ++ src/actions/update-user/index.ts | 51 +++++++++++++++++++++++++ src/actions/update-user/schema.ts | 15 ++++++++ src/app/profile/page.tsx | 25 ++++++++++++ src/app/profile/profile.tsx | 34 +++++++++++++++++ src/modules/profile/Answers.tsx | 22 ++++------- src/modules/profile/Questions.tsx | 25 +++--------- src/modules/profile/Update.tsx | 16 +++++--- src/types/models/node.ts | 17 +++++++++ 11 files changed, 231 insertions(+), 39 deletions(-) create mode 100644 src/actions/get-user-answers/index.ts create mode 100644 src/actions/get-user-questions/index.ts create mode 100644 src/actions/update-user/index.ts create mode 100644 src/actions/update-user/schema.ts create mode 100644 src/app/profile/page.tsx create mode 100644 src/app/profile/profile.tsx diff --git a/src/actions/get-user-answers/index.ts b/src/actions/get-user-answers/index.ts new file mode 100644 index 000000000..4940ef555 --- /dev/null +++ b/src/actions/get-user-answers/index.ts @@ -0,0 +1,37 @@ +import { cache } from 'react'; + +import { NodeWithQuestionAndAnswer } from '@/types'; +import prisma from 'lib/prisma'; + +export const getUserAnswers = cache( + async (userId: string): Promise => { + try { + if (!userId) { + throw new Error('User not found'); + } + const answers = await prisma.node.findMany({ + where: { answer: { is: { userId } } }, + include: { + answer: { + select: { + text: true, + }, + }, + question: { + select: { + id: true, + slug: true, + text: true, + }, + }, + }, + }); + + if (!answers) return []; + + return answers; + } catch (error) { + throw new Error('Error fetching answers'); + } + }, +); diff --git a/src/actions/get-user-questions/index.ts b/src/actions/get-user-questions/index.ts new file mode 100644 index 000000000..87308b03e --- /dev/null +++ b/src/actions/get-user-questions/index.ts @@ -0,0 +1,25 @@ +import { cache } from 'react'; + +import { QuestionWithNodeId } from '@/types'; +import prisma from 'lib/prisma'; + +export const getUserQuestions = cache( + async (userId: string): Promise => { + try { + if (!userId) { + throw new Error('User not found'); + } + const questions = await prisma.question.findMany({ + where: { userId: userId as string }, + orderBy: { createdAt: 'desc' }, + include: { node: { select: { id: true } } }, + }); + + if (!questions) return []; + + return questions; + } catch (error) { + throw new Error('Error fetching questions'); + } + }, +); diff --git a/src/actions/index.ts b/src/actions/index.ts index 313b0e134..46bf550f8 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -14,9 +14,12 @@ export * from './get-tags'; export * from './get-tags-count'; export * from './get-tenant'; export * from './get-user'; +export * from './get-user-answers'; +export * from './get-user-questions'; export * from './get-users'; export * from './get-users-count'; export * from './update-answer'; export * from './update-node'; export * from './update-tenant'; +export * from './update-user'; export * from './upsert-integrations'; diff --git a/src/actions/update-user/index.ts b/src/actions/update-user/index.ts new file mode 100644 index 000000000..a377f96ae --- /dev/null +++ b/src/actions/update-user/index.ts @@ -0,0 +1,51 @@ +'use server'; + +import { revalidatePath } from 'next/cache'; +import { getServerSession } from 'next-auth'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { updateUserSchema } from './schema'; + +type UpdateUserData = { + tenantId: string; + id: string; + email: string; + name: string; + role: string; +}; + +export async function updateUser(formData: FormData) { + try { + if (!formData) { + return { error: 'Data not provided' }; + } + const data = Object.fromEntries(formData) as UpdateUserData; + const session = await getServerSession(authOptions); + if (session) { + const result = updateUserSchema.safeParse(data); + if (result.success === false) { + const errors = result.error.flatten().fieldErrors; + return { error: errors }; + } else { + const { id, tenantId, email, name, role } = result.data; + await prisma.user.update({ + where: { id, tenantId }, + data: { + email, + name, + role, + }, + }); + } + } else { + return { error: 'Not signed in' }; + } + } catch (error) { + return { error: 'Error updating user' }; + } + revalidatePath('/profile'); + return { message: 'User updated successfully' }; +} diff --git a/src/actions/update-user/schema.ts b/src/actions/update-user/schema.ts new file mode 100644 index 000000000..7a24a2d8d --- /dev/null +++ b/src/actions/update-user/schema.ts @@ -0,0 +1,15 @@ +import { z } from 'zod'; + +const ROLE = ['user', 'admin', 'tenant'] as const; + +export const updateUserSchema = z.object({ + tenantId: z.string().cuid2(), + email: z + .string() + .trim() + .min(1, { message: 'User email is required' }) + .email({ message: 'Invalid email' }), + name: z.string().trim().optional(), + role: z.enum(ROLE), + id: z.string().cuid2(), +}); diff --git a/src/app/profile/page.tsx b/src/app/profile/page.tsx new file mode 100644 index 000000000..53188695a --- /dev/null +++ b/src/app/profile/page.tsx @@ -0,0 +1,25 @@ +import { redirect } from 'next/navigation'; + +import { getMe, getUserAnswers, getUserQuestions } from '@/actions'; +import { Footer, Header } from '@/modules'; +import { Routes } from '@/utils'; + +import Profile from './profile'; + +export default async function Page() { + const me = await getMe(); + + if (!me) return redirect(Routes.SITE.LOGIN); + + const questions = await getUserQuestions(me.id); + const answers = await getUserAnswers(me.id); + return ( +
+
+
+ +
+
+
+ ); +} diff --git a/src/app/profile/profile.tsx b/src/app/profile/profile.tsx new file mode 100644 index 000000000..1e94f608f --- /dev/null +++ b/src/app/profile/profile.tsx @@ -0,0 +1,34 @@ +'use client'; + +import { UpdateProfile, UserAnswers, UserQuestions } from '@/modules'; +import { Me, NodeWithQuestionAndAnswer, QuestionWithNodeId } from '@/types'; + +type Props = { + me: Me; + questions?: QuestionWithNodeId[]; + answers?: NodeWithQuestionAndAnswer[]; +}; + +export default function Profile({ me, questions, answers }: Props) { + const sections = [ + { component: }, + { + component: , + }, + { component: }, + ]; + + return ( +
+ {sections.map((section, index) => ( +
{section.component}
+ ))} +
+ ); +} + +const Section = ({ children }) => ( +
+ {children} +
+); diff --git a/src/modules/profile/Answers.tsx b/src/modules/profile/Answers.tsx index 999ba1438..4efb980aa 100644 --- a/src/modules/profile/Answers.tsx +++ b/src/modules/profile/Answers.tsx @@ -1,8 +1,9 @@ +'use client'; + import { MoveRight } from 'lucide-react'; import dynamic from 'next/dynamic'; import Link from 'next/link'; -import { Loader } from '@/components'; import { NodeWithQuestionAndAnswer } from '@/hooks'; const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { ssr: false, @@ -10,14 +11,9 @@ const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { type Props = { nodes?: NodeWithQuestionAndAnswer[]; - isPending: boolean; }; -export const UserAnswers = ({ nodes, isPending }: Props) => { - if (isPending) { - return ; - } - +export const UserAnswers = ({ nodes }: Props) => { return ( <>

{ className="flex items-center justify-between rounded-md px-3 py-2 shadow-sm" key={index} > - + - + diff --git a/src/modules/profile/Questions.tsx b/src/modules/profile/Questions.tsx index c6a1759fc..66e60a3a4 100644 --- a/src/modules/profile/Questions.tsx +++ b/src/modules/profile/Questions.tsx @@ -1,25 +1,15 @@ -import { Question } from '@prisma/client'; +'use client'; + import Link from 'next/link'; -import { Loader } from '@/components'; +import { QuestionWithNodeId } from '@/types'; import { dateOptions } from '@/utils'; -type QuestionWithNodeId = Question & { - node: { - id: string; - }; -}; - type Props = { questions?: QuestionWithNodeId[]; - isPending: boolean; }; -export const UserQuestions = ({ questions, isPending }: Props) => { - if (isPending) { - return ; - } - +export const UserQuestions = ({ questions }: Props) => { return ( <>

{ key={question.id} >

- + {question.text}

diff --git a/src/modules/profile/Update.tsx b/src/modules/profile/Update.tsx index c55fb9d44..b9008703c 100644 --- a/src/modules/profile/Update.tsx +++ b/src/modules/profile/Update.tsx @@ -8,8 +8,9 @@ import Image from 'next/image'; import { SubmitHandler, useForm } from 'react-hook-form'; import { z } from 'zod'; +import { updateUser } from '@/actions'; import { Button, Field, Input } from '@/components'; -import { useMediaQuery, useUpdateUser } from '@/hooks'; +import { useMediaQuery } from '@/hooks'; import { updateUserClientSchema } from '@/lib'; import { IUserUpdateFields, Me } from '@/types'; @@ -36,10 +37,15 @@ export const UpdateProfile = ({ me }: Props) => { }, }); - const { mutate } = useUpdateUser(me.id, me.tenantId); - - const onSubmit: SubmitHandler = (values) => { - mutate(values); + const onSubmit: SubmitHandler = async (data) => { + const formData = new FormData(); + for (const key in data) { + formData.append(key, data[key]); + } + formData.append('role', me.role); + formData.append('id', me.id); + formData.append('tenantId', me.tenantId); + await updateUser(formData); }; const fields: IUserUpdateFields[] = useMemo( diff --git a/src/types/models/node.ts b/src/types/models/node.ts index c38da9871..3399878f2 100644 --- a/src/types/models/node.ts +++ b/src/types/models/node.ts @@ -13,3 +13,20 @@ export type ExtendedNode = Node & { answer: ExtendedAnswer; tags: Tag[]; }; + +export type NodeWithQuestionAndAnswer = Node & { + answer: { + text: string; + }; + question: { + id: string; + slug: string; + text: string; + }; +}; + +export type QuestionWithNodeId = Question & { + node: { + id: string; + }; +}; From 526274781f5f8d4feb9e0f93116d58c1e9c295ce Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 14 Apr 2024 11:04:47 +0200 Subject: [PATCH 051/326] :recycle: replace redirects --- src/app/question/[id]/page.tsx | 6 ++++-- src/app/question/answer/page.tsx | 6 ++++-- src/app/question/edit/page.tsx | 6 ++++-- src/app/question/new/page.tsx | 8 +++++--- src/app/register/confirm/form.tsx | 6 +++--- src/app/settings/page.tsx | 8 +++++--- 6 files changed, 25 insertions(+), 15 deletions(-) diff --git a/src/app/question/[id]/page.tsx b/src/app/question/[id]/page.tsx index 4e7b64a83..6fe022f1b 100644 --- a/src/app/question/[id]/page.tsx +++ b/src/app/question/[id]/page.tsx @@ -1,13 +1,15 @@ +import { redirect } from 'next/navigation'; + import { getMe, getNode } from '@/actions'; import { Footer, Header } from '@/modules'; -import { Redirects } from '@/utils'; +import { Routes } from '@/utils'; import Question from './question'; export default async function Page({ params }) { const me = await getMe(); - if (!me) return Redirects.LOGIN; + if (!me) return redirect(Routes.SITE.LOGIN); const tenantId = me.tenantId; const { id } = params; diff --git a/src/app/question/answer/page.tsx b/src/app/question/answer/page.tsx index a6e48d6e8..b9c2fe8e3 100644 --- a/src/app/question/answer/page.tsx +++ b/src/app/question/answer/page.tsx @@ -1,14 +1,16 @@ +import { redirect } from 'next/navigation'; + import { getMe } from '@/actions'; import { getNode } from '@/lib'; import { Footer, Header } from '@/modules'; -import { Redirects } from '@/utils'; +import { Routes } from '@/utils'; import Answer from './answer'; export default async function Page({ searchParams }) { const me = await getMe(); - if (!me) return Redirects.LOGIN; + if (!me) return redirect(Routes.SITE.LOGIN); const tenantId = me.tenantId; const { id } = searchParams; diff --git a/src/app/question/edit/page.tsx b/src/app/question/edit/page.tsx index 80ea0e649..5874e11a1 100644 --- a/src/app/question/edit/page.tsx +++ b/src/app/question/edit/page.tsx @@ -1,13 +1,15 @@ +import { redirect } from 'next/navigation'; + import { getMe, getNode, getTags } from '@/actions'; import { Footer, Header } from '@/modules'; -import { Redirects } from '@/utils'; +import { Routes } from '@/utils'; import Edit from './edit'; export default async function Page({ searchParams }) { const me = await getMe(); - if (!me) return Redirects.LOGIN; + if (!me) return redirect(Routes.SITE.LOGIN); const tenantId = me.tenantId; const { id } = searchParams; diff --git a/src/app/question/new/page.tsx b/src/app/question/new/page.tsx index d0be73ffe..4d922e788 100644 --- a/src/app/question/new/page.tsx +++ b/src/app/question/new/page.tsx @@ -1,13 +1,15 @@ -import { getMe, getIntegration, getTags } from '@/actions'; +import { redirect } from 'next/navigation'; + +import { getIntegration, getMe, getTags } from '@/actions'; import { Footer, Header } from '@/modules'; -import { Redirects } from '@/utils'; +import { Routes } from '@/utils'; import New from './new'; export default async function Page() { const me = await getMe(); - if (!me) return Redirects.LOGIN; + if (!me) return redirect(Routes.SITE.LOGIN); const tenantId = me.tenantId; const integrations = await getIntegration(tenantId); diff --git a/src/app/register/confirm/form.tsx b/src/app/register/confirm/form.tsx index aa62e47b7..5de1b3af2 100644 --- a/src/app/register/confirm/form.tsx +++ b/src/app/register/confirm/form.tsx @@ -37,10 +37,10 @@ export default function Form() { const { mutateAsync: mutateTenant, isSuccess: tenantIsSuccess } = useCreateTenant(); - const onSubmit: SubmitHandler = async (values) => { + const onSubmit: SubmitHandler = async (data) => { try { - await mutateTenant(values); - await mutateCustomer(values); + await mutateTenant(data); + await mutateCustomer(data); } catch (error) { console.error(`Something went wrong: ${error}`); } diff --git a/src/app/settings/page.tsx b/src/app/settings/page.tsx index f977770bd..52b197210 100644 --- a/src/app/settings/page.tsx +++ b/src/app/settings/page.tsx @@ -1,3 +1,5 @@ +import { redirect } from 'next/navigation'; + import { getIntegration, getMe, @@ -10,16 +12,16 @@ import { } from '@/actions'; import { SuspenseWrapper } from '@/lib'; import { Footer, Header } from '@/modules'; -import { Redirects } from '@/utils'; +import { Routes } from '@/utils'; import Settings from './settings'; export default async function Page() { const me = await getMe(); - if (!me) return Redirects.LOGIN; + if (!me) return redirect(Routes.SITE.LOGIN); - if (me.role === 'user') return Redirects.HOME; + if (me.role === 'user') return redirect(Routes.SITE.HOME); const tenantId = me.tenantId; const nodesCount = await getNodesCount(tenantId); From f5058fed88992e312e3efb79474374dc573843e6 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 14 Apr 2024 19:49:45 +0200 Subject: [PATCH 052/326] :fire: remove export of deleted file --- src/lib/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/lib/index.ts b/src/lib/index.ts index 1d28df413..a37f29790 100644 --- a/src/lib/index.ts +++ b/src/lib/index.ts @@ -1,3 +1,2 @@ export * from './client'; export * from './server'; -export * from './safe-action'; From ee5abc00019f3c1a0db578d1f3587d6d6be7638c Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 14 Apr 2024 19:50:44 +0200 Subject: [PATCH 053/326] :wrench: remove usage of sentry --- next.config.js | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/next.config.js b/next.config.js index c32ea527e..e89dd5670 100644 --- a/next.config.js +++ b/next.config.js @@ -21,21 +21,21 @@ const nextConfig = removeImports({ }, }); -const sentryConfig = withSentryConfig( - nextConfig, - { - authToken: process.env.SENTRY_AUTH_TOKEN, - silent: true, - org: 'thibaud-brault', - project: 'faqmaker', - }, - { - widenClientFileUpload: true, - transpileClientSDK: true, - tunnelRoute: '/monitoring', - hideSourceMaps: true, - disableLogger: true, - }, -); +// const sentryConfig = withSentryConfig( +// nextConfig, +// { +// authToken: process.env.SENTRY_AUTH_TOKEN, +// silent: true, +// org: 'thibaud-brault', +// project: 'faqmaker', +// }, +// { +// widenClientFileUpload: true, +// transpileClientSDK: true, +// tunnelRoute: '/monitoring', +// hideSourceMaps: true, +// disableLogger: true, +// }, +// ); -module.exports = sentryConfig; +module.exports = nextConfig; From bfc727184da1d70c54e59d3bcc8e70f2601b1fd1 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 14 Apr 2024 20:07:30 +0200 Subject: [PATCH 054/326] :sparkles: delete tenant action --- src/actions/delete-tenant/index.ts | 76 +++++++++++++++++++++++++ src/actions/delete-tenant/schema.ts | 8 +++ src/actions/index.ts | 1 + src/modules/settings/payment/Delete.tsx | 17 +++--- 4 files changed, 94 insertions(+), 8 deletions(-) create mode 100644 src/actions/delete-tenant/index.ts create mode 100644 src/actions/delete-tenant/schema.ts diff --git a/src/actions/delete-tenant/index.ts b/src/actions/delete-tenant/index.ts new file mode 100644 index 000000000..bda2988e3 --- /dev/null +++ b/src/actions/delete-tenant/index.ts @@ -0,0 +1,76 @@ +'use server'; + +import { Storage } from '@google-cloud/storage'; +import { redirect } from 'next/navigation'; +import { getServerSession } from 'next-auth'; +import Stripe from 'stripe'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import { Routes } from '@/utils'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { deleteTenantSchema } from './schema'; + +const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { + apiVersion: '2023-10-16', +}); + +type DeleteTenantData = { + text: string; + company: string; + id: string; +}; + +export async function deleteTenant(formData: FormData) { + try { + if (!formData) { + return { error: 'Data not provided' }; + } + const data = Object.fromEntries(formData) as DeleteTenantData; + const session = await getServerSession(authOptions); + if (session) { + const result = deleteTenantSchema(data.company).safeParse(data); + if (result.success === false) { + const errors = result.error.flatten().fieldErrors; + return { error: errors }; + } else { + const { id, company } = result.data; + const { customerId, logo } = await prisma.tenant.findUnique({ + where: { id, company }, + select: { + customerId: true, + logo: true, + }, + }); + const storage = new Storage({ + projectId: process.env.PROJECT_ID, + credentials: { + client_email: process.env.CLIENT_EMAIL, + private_key: process.env.PRIVATE_KEY.replace(/\\n/g, '\n'), + }, + }); + const bucketName = 'faqmaker'; + const bucket = storage.bucket(bucketName); + if (logo) { + const fileName = logo.replace( + 'https://storage.googleapis.com/faqmaker/', + '', + ); + bucket.file(fileName).delete(); + } + if (!customerId) return { error: `Customer not found` }; + await prisma.tenant.delete({ + where: { id, company }, + }); + await stripe.customers.del(customerId); + } + } else { + return { error: 'Not signed in' }; + } + } catch (error) { + return { error: 'Error deleting tenant' }; + } + redirect(Routes.SITE.LOGIN); + return { message: 'Tenant deleted successfully' }; +} diff --git a/src/actions/delete-tenant/schema.ts b/src/actions/delete-tenant/schema.ts new file mode 100644 index 000000000..eed4dd979 --- /dev/null +++ b/src/actions/delete-tenant/schema.ts @@ -0,0 +1,8 @@ +import { z } from 'zod'; + +export const deleteTenantSchema = (company: string) => + z.object({ + text: z.literal(`DELETE ${company}`), + company: z.string(), + id: z.string().cuid2(), + }); diff --git a/src/actions/index.ts b/src/actions/index.ts index 46bf550f8..f4cbb3b62 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -3,6 +3,7 @@ export * from './create-node'; export * from './create-tag'; export * from './create-tenant'; export * from './delete-tag'; +export * from './delete-tenant'; export * from './get-integration'; export * from './get-me'; export * from './get-node'; diff --git a/src/modules/settings/payment/Delete.tsx b/src/modules/settings/payment/Delete.tsx index 960680761..bf7020a69 100644 --- a/src/modules/settings/payment/Delete.tsx +++ b/src/modules/settings/payment/Delete.tsx @@ -4,10 +4,10 @@ import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; import { Flame } from 'lucide-react'; -import { useRouter } from 'next/navigation'; import { SubmitHandler, useForm } from 'react-hook-form'; import { z } from 'zod'; +import { deleteTenant } from '@/actions'; import { Button, Dialog, @@ -19,7 +19,6 @@ import { DialogTrigger, Input, } from '@/components'; -import { useDeleteTenant } from '@/hooks'; type Props = { tenantId: string; @@ -33,7 +32,6 @@ export const Delete = ({ tenantId, company }: Props) => { type Schema = z.infer; const [disabled, setDisabled] = useState(true); - const router = useRouter(); const { register, @@ -45,11 +43,14 @@ export const Delete = ({ tenantId, company }: Props) => { mode: 'onBlur', }); - const { mutate } = useDeleteTenant(tenantId, company, router); - - const onSubmit: SubmitHandler = (values) => { - // @ts-ignore - mutate(values); + const onSubmit: SubmitHandler = async (data) => { + const formData = new FormData(); + for (const key in data) { + formData.append(key, data[key]); + } + formData.append('id', tenantId); + formData.append('company', company); + await deleteTenant(formData); }; useEffect(() => { From ff96d786e288567ef2c3f66514d8a41c3e8991cc Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 14 Apr 2024 20:17:34 +0200 Subject: [PATCH 055/326] :recycle: use Routes variable --- src/actions/create-answer/index.ts | 5 +++-- src/actions/create-node/index.ts | 6 +++--- src/actions/update-answer/index.ts | 5 +++-- src/actions/update-node/index.ts | 5 +++-- src/actions/update-tenant/index.ts | 5 +++-- src/actions/upsert-integrations/index.ts | 5 +++-- src/modules/header/Header.tsx | 13 ++++++++----- src/modules/list/List.tsx | 2 +- src/modules/profile/Answers.tsx | 3 ++- src/modules/profile/Questions.tsx | 6 ++++-- src/utils/routing.ts | 1 + 11 files changed, 34 insertions(+), 22 deletions(-) diff --git a/src/actions/create-answer/index.ts b/src/actions/create-answer/index.ts index dee5c8a7e..bc2460338 100644 --- a/src/actions/create-answer/index.ts +++ b/src/actions/create-answer/index.ts @@ -5,6 +5,7 @@ import { redirect } from 'next/navigation'; import { getServerSession } from 'next-auth'; import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import { Routes } from '@/utils'; import prisma from 'lib/prisma'; import 'server-only'; @@ -44,7 +45,7 @@ export async function createAnswer(formData: FormData) { } catch (error) { return { error: 'Error creating answer' }; } - revalidatePath('/'); - redirect('/'); + revalidatePath(Routes.SITE.HOME); + redirect(Routes.SITE.HOME); return { message: 'Answer created successfully' }; } diff --git a/src/actions/create-node/index.ts b/src/actions/create-node/index.ts index 18877504f..723662def 100644 --- a/src/actions/create-node/index.ts +++ b/src/actions/create-node/index.ts @@ -7,7 +7,7 @@ import { getServerSession } from 'next-auth'; import slugify from 'slugify'; import { authOptions } from '@/app/api/auth/[...nextauth]/route'; -import { dateOptions, timeOptions } from '@/utils'; +import { Routes, dateOptions, timeOptions } from '@/utils'; import prisma from 'lib/prisma'; import 'server-only'; @@ -75,8 +75,8 @@ export const createNode = async (integrations, tags, formData) => { } catch (error) { return { error: 'Error creating question' }; } - revalidatePath('/'); - redirect('/'); + revalidatePath(Routes.SITE.HOME); + redirect(Routes.SITE.HOME); return { message: 'Question created successfully' }; }; diff --git a/src/actions/update-answer/index.ts b/src/actions/update-answer/index.ts index e3e4fde28..24a791500 100644 --- a/src/actions/update-answer/index.ts +++ b/src/actions/update-answer/index.ts @@ -5,6 +5,7 @@ import { redirect } from 'next/navigation'; import { getServerSession } from 'next-auth'; import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import { Routes } from '@/utils'; import prisma from 'lib/prisma'; import 'server-only'; @@ -44,7 +45,7 @@ export async function updateAnswer(formData: FormData) { } catch (error) { return { error: 'Error updating answer' }; } - revalidatePath('/'); - redirect('/'); + revalidatePath(Routes.SITE.HOME); + redirect(Routes.SITE.HOME); return { message: 'Answer updated successfully' }; } diff --git a/src/actions/update-node/index.ts b/src/actions/update-node/index.ts index e896b48e2..046a73014 100644 --- a/src/actions/update-node/index.ts +++ b/src/actions/update-node/index.ts @@ -6,6 +6,7 @@ import { getServerSession } from 'next-auth'; import slugify from 'slugify'; import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import { Routes } from '@/utils'; import prisma from 'lib/prisma'; import 'server-only'; @@ -73,7 +74,7 @@ export async function updateNode(tags, formData: FormData) { } catch (error) { return { error: 'Error updating question' }; } - revalidatePath('/'); - redirect('/'); + revalidatePath(Routes.SITE.HOME); + redirect(Routes.SITE.HOME); return { message: 'Question updated successfully' }; } diff --git a/src/actions/update-tenant/index.ts b/src/actions/update-tenant/index.ts index 2a0e8761a..c230e2410 100644 --- a/src/actions/update-tenant/index.ts +++ b/src/actions/update-tenant/index.ts @@ -5,6 +5,7 @@ import { redirect } from 'next/navigation'; import { getServerSession } from 'next-auth'; import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import { Routes } from '@/utils'; import prisma from 'lib/prisma'; import 'server-only'; @@ -45,7 +46,7 @@ export async function updateTenant(formData: FormData) { } catch (error) { return { error: 'Error updating tenant' }; } - revalidatePath('/settings'); - redirect('/'); + revalidatePath(Routes.SITE.SETTINGS); + redirect(Routes.SITE.HOME); return { message: 'Tenant updated successfully' }; } diff --git a/src/actions/upsert-integrations/index.ts b/src/actions/upsert-integrations/index.ts index 95045b4b8..2e3701660 100644 --- a/src/actions/upsert-integrations/index.ts +++ b/src/actions/upsert-integrations/index.ts @@ -5,6 +5,7 @@ import { redirect } from 'next/navigation'; import { getServerSession } from 'next-auth'; import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import { Routes } from '@/utils'; import prisma from 'lib/prisma'; import 'server-only'; @@ -44,7 +45,7 @@ export async function upsertIntegrations(formData: FormData) { } catch (error) { return { error: 'Error updating integrations' }; } - revalidatePath('/settings'); - redirect('/'); + revalidatePath(Routes.SITE.SETTINGS); + redirect(Routes.SITE.HOME); return { message: 'Integrations updated successfully' }; } diff --git a/src/modules/header/Header.tsx b/src/modules/header/Header.tsx index 474a68d7a..da307f860 100644 --- a/src/modules/header/Header.tsx +++ b/src/modules/header/Header.tsx @@ -29,7 +29,7 @@ type Props = { export const Header = ({ user }: Props) => { return (
- + {user.tenant.logo && ( { @@ -65,7 +65,10 @@ export const Header = ({ user }: Props) => {
  • - + @@ -113,11 +116,11 @@ export const Header = ({ user }: Props) => {
    - + Profile {user.role !== 'user' && ( - + Settings )} diff --git a/src/modules/list/List.tsx b/src/modules/list/List.tsx index 31f9c061a..b1aaf9130 100644 --- a/src/modules/list/List.tsx +++ b/src/modules/list/List.tsx @@ -36,7 +36,7 @@ export const List = ({ nodes, message }: Props) => {

    {node.question.text} diff --git a/src/modules/profile/Answers.tsx b/src/modules/profile/Answers.tsx index 4efb980aa..d8fdd73b9 100644 --- a/src/modules/profile/Answers.tsx +++ b/src/modules/profile/Answers.tsx @@ -5,6 +5,7 @@ import dynamic from 'next/dynamic'; import Link from 'next/link'; import { NodeWithQuestionAndAnswer } from '@/hooks'; +import { Routes } from '@/utils'; const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { ssr: false, }); @@ -34,7 +35,7 @@ export const UserAnswers = ({ nodes }: Props) => { className="!bg-transparent" /> - +

  • diff --git a/src/modules/profile/Questions.tsx b/src/modules/profile/Questions.tsx index 66e60a3a4..73ebbb706 100644 --- a/src/modules/profile/Questions.tsx +++ b/src/modules/profile/Questions.tsx @@ -3,7 +3,7 @@ import Link from 'next/link'; import { QuestionWithNodeId } from '@/types'; -import { dateOptions } from '@/utils'; +import { Routes, dateOptions } from '@/utils'; type Props = { questions?: QuestionWithNodeId[]; @@ -26,7 +26,9 @@ export const UserQuestions = ({ questions }: Props) => { key={question.id} >

    - + {question.text}

    diff --git a/src/utils/routing.ts b/src/utils/routing.ts index 75f72fbb3..a72fffbe8 100644 --- a/src/utils/routing.ts +++ b/src/utils/routing.ts @@ -6,6 +6,7 @@ export const Routes = { PROFILE: '/profile', ANSWER: '/question/answer', QUESTION: { + INDEX: '/question', NEW: '/question/new', EDIT: '/question/edit', }, From f25a263ff53dbe5e0fe74e993bbc59c708bb703b Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 14 Apr 2024 20:25:12 +0200 Subject: [PATCH 056/326] :truck: reorganise lib folder --- src/lib/{client => }/ErrorBoundary.tsx | 0 src/lib/{client => }/SuspenseWrapper.tsx | 0 src/lib/client/index.ts | 3 --- src/lib/index.ts | 5 +++-- src/lib/{client => }/validations/answer.ts | 0 src/lib/{client => }/validations/index.ts | 0 src/lib/{client => }/validations/integrations.ts | 0 src/lib/{client => }/validations/other.ts | 0 src/lib/{client => }/validations/question.ts | 0 src/lib/{client => }/validations/register.ts | 0 src/lib/{client => }/validations/tag.ts | 0 src/lib/{client => }/validations/tenant.ts | 0 src/lib/{client => }/validations/user.ts | 0 13 files changed, 3 insertions(+), 5 deletions(-) rename src/lib/{client => }/ErrorBoundary.tsx (100%) rename src/lib/{client => }/SuspenseWrapper.tsx (100%) delete mode 100644 src/lib/client/index.ts rename src/lib/{client => }/validations/answer.ts (100%) rename src/lib/{client => }/validations/index.ts (100%) rename src/lib/{client => }/validations/integrations.ts (100%) rename src/lib/{client => }/validations/other.ts (100%) rename src/lib/{client => }/validations/question.ts (100%) rename src/lib/{client => }/validations/register.ts (100%) rename src/lib/{client => }/validations/tag.ts (100%) rename src/lib/{client => }/validations/tenant.ts (100%) rename src/lib/{client => }/validations/user.ts (100%) diff --git a/src/lib/client/ErrorBoundary.tsx b/src/lib/ErrorBoundary.tsx similarity index 100% rename from src/lib/client/ErrorBoundary.tsx rename to src/lib/ErrorBoundary.tsx diff --git a/src/lib/client/SuspenseWrapper.tsx b/src/lib/SuspenseWrapper.tsx similarity index 100% rename from src/lib/client/SuspenseWrapper.tsx rename to src/lib/SuspenseWrapper.tsx diff --git a/src/lib/client/index.ts b/src/lib/client/index.ts deleted file mode 100644 index f4e850d10..000000000 --- a/src/lib/client/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './ErrorBoundary'; -export * from './SuspenseWrapper'; -export * from './validations'; diff --git a/src/lib/index.ts b/src/lib/index.ts index a37f29790..f4e850d10 100644 --- a/src/lib/index.ts +++ b/src/lib/index.ts @@ -1,2 +1,3 @@ -export * from './client'; -export * from './server'; +export * from './ErrorBoundary'; +export * from './SuspenseWrapper'; +export * from './validations'; diff --git a/src/lib/client/validations/answer.ts b/src/lib/validations/answer.ts similarity index 100% rename from src/lib/client/validations/answer.ts rename to src/lib/validations/answer.ts diff --git a/src/lib/client/validations/index.ts b/src/lib/validations/index.ts similarity index 100% rename from src/lib/client/validations/index.ts rename to src/lib/validations/index.ts diff --git a/src/lib/client/validations/integrations.ts b/src/lib/validations/integrations.ts similarity index 100% rename from src/lib/client/validations/integrations.ts rename to src/lib/validations/integrations.ts diff --git a/src/lib/client/validations/other.ts b/src/lib/validations/other.ts similarity index 100% rename from src/lib/client/validations/other.ts rename to src/lib/validations/other.ts diff --git a/src/lib/client/validations/question.ts b/src/lib/validations/question.ts similarity index 100% rename from src/lib/client/validations/question.ts rename to src/lib/validations/question.ts diff --git a/src/lib/client/validations/register.ts b/src/lib/validations/register.ts similarity index 100% rename from src/lib/client/validations/register.ts rename to src/lib/validations/register.ts diff --git a/src/lib/client/validations/tag.ts b/src/lib/validations/tag.ts similarity index 100% rename from src/lib/client/validations/tag.ts rename to src/lib/validations/tag.ts diff --git a/src/lib/client/validations/tenant.ts b/src/lib/validations/tenant.ts similarity index 100% rename from src/lib/client/validations/tenant.ts rename to src/lib/validations/tenant.ts diff --git a/src/lib/client/validations/user.ts b/src/lib/validations/user.ts similarity index 100% rename from src/lib/client/validations/user.ts rename to src/lib/validations/user.ts From 8cbfa79ab98f1ed456271c1f6e27c0564f5925c8 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 14 Apr 2024 20:26:36 +0200 Subject: [PATCH 057/326] :fire: delete old files --- src/contexts/Me.tsx | 24 ---- src/contexts/index.ts | 1 - src/lib/server/error.ts | 46 -------- src/lib/server/index.ts | 4 - src/lib/server/nc.ts | 55 --------- src/lib/server/queries/answers.ts | 25 ---- src/lib/server/queries/index.ts | 4 - src/lib/server/queries/nodes.ts | 35 ------ src/lib/server/queries/questions.ts | 12 -- src/lib/server/queries/tags.ts | 21 ---- src/lib/server/validations/answer.ts | 25 ---- src/lib/server/validations/global.ts | 13 --- src/lib/server/validations/index.ts | 8 -- src/lib/server/validations/integrations.ts | 14 --- src/lib/server/validations/node.ts | 42 ------- src/lib/server/validations/search.ts | 11 -- src/lib/server/validations/stripe.ts | 15 --- src/lib/server/validations/tag.ts | 15 --- src/lib/server/validations/tenant.ts | 55 --------- src/lib/server/validations/user.ts | 36 ------ src/old/api/answers/[id].ts | 57 --------- src/old/api/answers/index.ts | 99 ---------------- src/old/api/questions/index.ts | 51 --------- src/old/api/stripe/checkout/index.ts | 117 ++++++++++--------- src/old/api/stripe/customer/index.ts | 127 ++++++++++----------- src/old/api/tags/[id].ts | 52 --------- src/old/api/tags/index.ts | 101 ---------------- 27 files changed, 121 insertions(+), 944 deletions(-) delete mode 100644 src/contexts/Me.tsx delete mode 100644 src/contexts/index.ts delete mode 100644 src/lib/server/error.ts delete mode 100644 src/lib/server/index.ts delete mode 100644 src/lib/server/nc.ts delete mode 100644 src/lib/server/queries/answers.ts delete mode 100644 src/lib/server/queries/index.ts delete mode 100644 src/lib/server/queries/nodes.ts delete mode 100644 src/lib/server/queries/questions.ts delete mode 100644 src/lib/server/queries/tags.ts delete mode 100644 src/lib/server/validations/answer.ts delete mode 100644 src/lib/server/validations/global.ts delete mode 100644 src/lib/server/validations/index.ts delete mode 100644 src/lib/server/validations/integrations.ts delete mode 100644 src/lib/server/validations/node.ts delete mode 100644 src/lib/server/validations/search.ts delete mode 100644 src/lib/server/validations/stripe.ts delete mode 100644 src/lib/server/validations/tag.ts delete mode 100644 src/lib/server/validations/tenant.ts delete mode 100644 src/lib/server/validations/user.ts delete mode 100644 src/old/api/answers/[id].ts delete mode 100644 src/old/api/answers/index.ts delete mode 100644 src/old/api/questions/index.ts delete mode 100644 src/old/api/tags/[id].ts delete mode 100644 src/old/api/tags/index.ts diff --git a/src/contexts/Me.tsx b/src/contexts/Me.tsx deleted file mode 100644 index 4c712b3c9..000000000 --- a/src/contexts/Me.tsx +++ /dev/null @@ -1,24 +0,0 @@ -'use client'; - -import { ReactNode, createContext } from 'react'; - -import { User } from '@prisma/client'; - -import { useMe } from '@/hooks'; - -type ContextProps = { - me: User | null; -}; - -const defaultValue: ContextProps = { me: null }; -export const MeContext = createContext(defaultValue); - -type ProviderProps = { - children: ReactNode; -}; - -export const MeProvider = ({ children }: ProviderProps) => { - const { data } = useMe(); - const me = data ?? null; - return {children}; -}; diff --git a/src/contexts/index.ts b/src/contexts/index.ts deleted file mode 100644 index 784c47537..000000000 --- a/src/contexts/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Me'; diff --git a/src/lib/server/error.ts b/src/lib/server/error.ts deleted file mode 100644 index 1d73fde45..000000000 --- a/src/lib/server/error.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { NextApiRequest, NextApiResponse } from 'next'; -import { ZodError } from 'zod'; - -export default class ApiError extends Error { - public readonly statusCode: number; - public readonly isOperational: boolean; - - constructor(message: string, statusCode: number, isOperational = true) { - super(message); - - this.statusCode = statusCode; - this.isOperational = isOperational; - - Error.captureStackTrace(this, this.constructor); - - Object.setPrototypeOf(this, ApiError.prototype); - } - - static fromZodError(error: ZodError): ApiError { - return new this(error.toString(), 400); - } -} - -export const handleApiError = ( - error: any, - req: NextApiRequest, - res: NextApiResponse, -) => { - const isProd = process.env.NODE_ENV === 'production'; - - const response = { - ...(!isProd && { stack: error.stack }), - message: error.message, - statusCode: error.statusCode, - isOperational: error.isOperational, - }; - res.status(error.statusCode || 500).json(response); -}; - -export const handleSsrError = ( - error: any, - req: NextApiRequest, - res: NextApiResponse, -) => { - console.error('handled SSR error: ', error); -}; diff --git a/src/lib/server/index.ts b/src/lib/server/index.ts deleted file mode 100644 index b29d98f2f..000000000 --- a/src/lib/server/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from './queries'; -export * from './error'; -export * from './validations'; -export * from './nc'; diff --git a/src/lib/server/nc.ts b/src/lib/server/nc.ts deleted file mode 100644 index d56bcab68..000000000 --- a/src/lib/server/nc.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { ServerResponse } from 'http'; - -import { NextApiRequest, NextApiResponse } from 'next'; -import nc from 'next-connect'; - -import { NextReq } from '@/types'; - -import ApiError, { handleApiError, handleSsrError } from './error'; - -export const ncOptions = { - onError(error: Error, req: NextApiRequest, res: NextApiResponse) { - handleApiError(error, req, res); - }, - onNoMatch(req: NextApiRequest, res: NextApiResponse) { - const error = new ApiError(`Method '${req.method}' not allowed`, 405); - handleApiError(error, req, res); - }, -}; - -export const apiHandler = () => { - return nc(ncOptions); -}; - -export type NextApiRequestWithResult = NextApiRequest & { result: T }; - -export const ssrNcHandler = async ( - req: NextReq, - res: ServerResponse, - callback: () => Promise, -) => { - const base = () => { - const handler = nc, NextApiResponse>( - ncOptions, - ).use(async (req, res, next) => { - req.result = await callback(); - next(); - }); - - return handler; - }; - - const _req = req as NextApiRequestWithResult; - const _res = res as NextApiResponse; - - try { - await base().run(_req, _res); - - return _req.result as T; - } catch (error) { - handleSsrError(error, _req, _res); - return null; - } -}; - -export default nc; diff --git a/src/lib/server/queries/answers.ts b/src/lib/server/queries/answers.ts deleted file mode 100644 index 7c6f6db9d..000000000 --- a/src/lib/server/queries/answers.ts +++ /dev/null @@ -1,25 +0,0 @@ -import prisma from 'lib/prisma'; - -export const getUserAnswers = async (id: string) => { - const answers = await prisma.node.findMany({ - where: { answer: { is: { userId: id } } }, - include: { - answer: { - select: { - text: true, - }, - }, - question: { - select: { - id: true, - slug: true, - text: true, - }, - }, - }, - }); - - if (!answers) return null; - - return answers; -}; diff --git a/src/lib/server/queries/index.ts b/src/lib/server/queries/index.ts deleted file mode 100644 index 3a8c1f43f..000000000 --- a/src/lib/server/queries/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from './answers'; -export * from './nodes'; -export * from './questions'; -export * from './tags'; diff --git a/src/lib/server/queries/nodes.ts b/src/lib/server/queries/nodes.ts deleted file mode 100644 index 7c2d9cbb9..000000000 --- a/src/lib/server/queries/nodes.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { nodeModel, nodeModelWithDate } from '@/utils'; -import prisma from 'lib/prisma'; - -export const getNodes = async (tenantId: string) => { - const nodes = await prisma.node.findMany({ - where: { tenantId }, - orderBy: { createdAt: 'desc' }, - include: nodeModel, - }); - - if (!nodes) return null; - - return nodes; -}; - -export const getNodesCount = async (tenantId: string) => { - const nodes = await prisma.node.count({ - where: { tenantId }, - }); - - if (!nodes) return 0; - - return nodes; -}; - -export const getNode = async (tenantId: string, id: string) => { - const node = await prisma.node.findUnique({ - where: { id, tenantId }, - include: nodeModelWithDate, - }); - - if (!node) return null; - - return node; -}; diff --git a/src/lib/server/queries/questions.ts b/src/lib/server/queries/questions.ts deleted file mode 100644 index b4429a07a..000000000 --- a/src/lib/server/queries/questions.ts +++ /dev/null @@ -1,12 +0,0 @@ -import prisma from 'lib/prisma'; - -export const getUserQuestions = async (id: string) => { - const questions = await prisma.question.findMany({ - where: { userId: id }, - include: { node: { select: { id: true } } }, - }); - - if (!questions) return null; - - return questions; -}; diff --git a/src/lib/server/queries/tags.ts b/src/lib/server/queries/tags.ts deleted file mode 100644 index d1e046d2b..000000000 --- a/src/lib/server/queries/tags.ts +++ /dev/null @@ -1,21 +0,0 @@ -import prisma from 'lib/prisma'; - -export const getTags = async (tenantId: string) => { - const tags = await prisma.tag.findMany({ - where: { tenantId }, - }); - - if (!tags) return null; - - return tags; -}; - -export const getTagsCount = async (tenantId: string) => { - const tags = await prisma.tag.count({ - where: { tenantId }, - }); - - if (!tags) return 0; - - return tags; -}; diff --git a/src/lib/server/validations/answer.ts b/src/lib/server/validations/answer.ts deleted file mode 100644 index 5bdf5be1e..000000000 --- a/src/lib/server/validations/answer.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { z } from 'zod'; - -export const createAnswerServerSchema = z.object({ - text: z - .string() - .trim() - .min(1, { message: 'Answer is required' }) - .max(1000, { message: 'Answer must be under 1000 characters long' }), - nodeId: z.string().cuid2(), - userId: z.string().cuid2(), -}); - -export const updateAnswerServerSchema = z.object({ - body: z.object({ - text: z - .string() - .trim() - .min(1, { message: 'Answer is required' }) - .max(1000, { message: 'Answer must be under 1000 characters long' }), - userId: z.string().cuid2(), - }), - query: z.object({ - id: z.string().cuid2(), - }), -}); diff --git a/src/lib/server/validations/global.ts b/src/lib/server/validations/global.ts deleted file mode 100644 index 3f066ffb8..000000000 --- a/src/lib/server/validations/global.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { z } from 'zod'; - -export const getTenantIdSchema = z.object({ - tenantId: z.string().cuid2(), -}); - -export const getIdSchema = z.object({ - id: z.string().cuid2(), -}); - -export const getUserIdSchema = z.object({ - userId: z.string().cuid2(), -}); diff --git a/src/lib/server/validations/index.ts b/src/lib/server/validations/index.ts deleted file mode 100644 index 6b14b9d26..000000000 --- a/src/lib/server/validations/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -export * from './answer'; -export * from './global'; -export * from './integrations'; -export * from './node'; -export * from './search'; -export * from './tag'; -export * from './tenant'; -export * from './user'; diff --git a/src/lib/server/validations/integrations.ts b/src/lib/server/validations/integrations.ts deleted file mode 100644 index dd19a5435..000000000 --- a/src/lib/server/validations/integrations.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { z } from 'zod'; - -export const createIntegrationServerSchema = z.object({ - slack: z.string().trim().url({ message: 'Invalid URL' }), - tenantId: z.string().cuid2(), -}); - -export const slackIntegrationServerSchema = z.object({ - text: z - .string() - .trim() - .min(3, { message: 'Question must be at least 3 characters long' }), - url: z.string().trim().url({ message: 'Invalid URL' }), -}); diff --git a/src/lib/server/validations/node.ts b/src/lib/server/validations/node.ts deleted file mode 100644 index 834073241..000000000 --- a/src/lib/server/validations/node.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { z } from 'zod'; - -export const getNodeServerSchema = z.object({ - tenantId: z.string().cuid2(), - id: z.string().cuid2(), -}); - -export const getNodesServerSchema = z.object({ - tenantId: z.string(), - page: z.string(), -}); - -export const createNodeServerSchema = z.object({ - text: z - .string() - .trim() - .min(3, { message: 'Question must be at least 3 characters long' }) - .max(100, { message: 'Question must be under 100 characters long' }), - slug: z.string(), - tenantId: z.string().cuid2(), - userId: z.string().cuid2(), - tags: z.array(z.string().cuid2()), - withAnswer: z.boolean().optional(), -}); - -export const updateNodeServerSchema = z.object({ - body: z.object({ - text: z - .string() - .trim() - .min(3, { message: 'Question must be at least 3 characters long' }) - .max(100, { message: 'Question must be under 100 characters long' }), - userId: z.string().cuid2(), - questionId: z.string().cuid2(), - tenantId: z.string().cuid2(), - slug: z.string(), - tags: z.array(z.string().cuid2()), - }), - query: z.object({ - id: z.string().cuid2(), - }), -}); diff --git a/src/lib/server/validations/search.ts b/src/lib/server/validations/search.ts deleted file mode 100644 index afbf2fe89..000000000 --- a/src/lib/server/validations/search.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { z } from 'zod'; - -export const getSearchServerSchema = z.object({ - tenantId: z.string().cuid2(), - searchQuery: z.string().min(1, { message: 'Search query is required' }), -}); - -export const getTagSearchServerSchema = z.object({ - tenantId: z.string().cuid2(), - searchTag: z.string().min(1, { message: 'Tag is required' }), -}); diff --git a/src/lib/server/validations/stripe.ts b/src/lib/server/validations/stripe.ts deleted file mode 100644 index 852ee00e0..000000000 --- a/src/lib/server/validations/stripe.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { z } from 'zod'; - -export const createCheckoutServerSchema = z.object({ - customerId: z.string(), - lookup_key: z.string(), -}); - -export const createCustomerServerSchema = z.object({ - company: z.string().trim().min(1, { message: 'Company name is required' }), - companyEmail: z - .string() - .trim() - .min(1, { message: 'Company email is required' }) - .email({ message: 'Invalid email' }), -}); diff --git a/src/lib/server/validations/tag.ts b/src/lib/server/validations/tag.ts deleted file mode 100644 index 9eb681dab..000000000 --- a/src/lib/server/validations/tag.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { z } from 'zod'; - -export const createTagServerSchema = z.object({ - label: z.string().trim().min(1, { message: 'Tag name is required' }), - tenantId: z.string().cuid2(), -}); - -export const deleteTagServerSchema = z.object({ - body: z.object({ - tenantId: z.string().cuid2(), - }), - query: z.object({ - id: z.string().cuid2(), - }), -}); diff --git a/src/lib/server/validations/tenant.ts b/src/lib/server/validations/tenant.ts deleted file mode 100644 index 80262cd8f..000000000 --- a/src/lib/server/validations/tenant.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { z } from 'zod'; - -export const createTenantServerSchema = z.object({ - company: z.string().trim().min(1, { message: 'Company name is required' }), - companyEmail: z - .string() - .trim() - .min(1, { message: 'Company email is required' }) - .email({ message: 'Invalid email' }), - domain: z.string().trim().nullable(), - email: z - .string() - .trim() - .min(1, { message: 'User email is required' }) - .email({ message: 'Invalid email' }), -}); - -export const updateTenantServerSchema = z.object({ - body: z.object({ - company: z.string().trim().min(1, { message: 'Company name is required' }), - email: z - .string() - .trim() - .min(1, { message: 'Email is required' }) - .email({ message: 'Invalid email' }), - domain: z.string().trim().nullable(), - }), - query: z.object({ - id: z.string().cuid2(), - }), -}); - -export const deleteTenantServerSchema = (company: string) => - z.object({ - body: z.object({ - text: z.literal(`DELETE ${company}`), - company: z.string(), - }), - query: z.object({ - id: z.string().cuid2(), - }), - }); - -export const updateLogoServerSchema = z.object({ - body: z.object({ - filename: z.string(), - logoUrl: z - .string() - .url() - .regex(/^https:\/\/storage\.googleapis\.com\/faqmaker\/logos/), - }), - query: z.object({ - id: z.string().cuid2(), - }), -}); diff --git a/src/lib/server/validations/user.ts b/src/lib/server/validations/user.ts deleted file mode 100644 index bfbf2fc08..000000000 --- a/src/lib/server/validations/user.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { z } from 'zod'; - -const ROLE = ['user', 'admin', 'tenant'] as const; - -export const createUserServerSchema = z.object({ - email: z.string().trim().email({ message: 'Invalid email' }).optional(), - name: z.string().trim().optional(), - role: z.enum(ROLE).optional(), - newUsersArray: z.array(z.string().email()).optional(), - tenantId: z.string().cuid2(), -}); - -export const updateUserServerSchema = z.object({ - body: z.object({ - tenantId: z.string().cuid2(), - email: z - .string() - .trim() - .min(1, { message: 'User email is required' }) - .email({ message: 'Invalid email' }), - name: z.string().trim().optional(), - role: z.enum(ROLE), - }), - query: z.object({ - id: z.string().cuid2(), - }), -}); - -export const deleteUserServerSchema = z.object({ - body: z.object({ - tenantId: z.string().cuid2(), - }), - query: z.object({ - id: z.string().cuid2(), - }), -}); diff --git a/src/old/api/answers/[id].ts b/src/old/api/answers/[id].ts deleted file mode 100644 index a5546eecd..000000000 --- a/src/old/api/answers/[id].ts +++ /dev/null @@ -1,57 +0,0 @@ -import { getToken } from 'next-auth/jwt'; - -import { updateAnswerServerSchema } from '@/lib'; -import prisma from 'lib/prisma'; - -import type { NextApiRequest, NextApiResponse } from 'next'; - -export default async function handler( - req: NextApiRequest, - res: NextApiResponse, -) { - if (req.method === 'PUT') { - try { - if (!req.query) { - return res - .status(404) - .json({ success: false, error: { message: `Answer not found` } }); - } - const token = await getToken({ req }); - if (token) { - const result = updateAnswerServerSchema.safeParse({ - body: req.body, - query: req.query, - }); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return res.status(422).json({ - success: false, - error: { message: 'Invalid request', errors }, - }); - } else { - const { id } = result.data.query; - const data = result.data.body; - await prisma.answer.update({ - where: { id }, - data, - }); - return res - .status(201) - .json({ success: true, message: 'Answer updated successfully' }); - } - } else { - return res - .status(401) - .json({ success: false, error: { message: 'Not signed in' } }); - } - } catch (error) { - if (error instanceof Error) { - return res.status(500).json({ success: false, error: error.message }); - } - } - } else { - return res - .status(405) - .json({ success: false, error: { message: 'Method not allowed' } }); - } -} diff --git a/src/old/api/answers/index.ts b/src/old/api/answers/index.ts deleted file mode 100644 index 31a230c5c..000000000 --- a/src/old/api/answers/index.ts +++ /dev/null @@ -1,99 +0,0 @@ -import { NextApiRequest, NextApiResponse } from 'next'; -import { getToken } from 'next-auth/jwt'; - -import { createAnswerServerSchema, getUserIdSchema } from '@/lib'; -import prisma from 'lib/prisma'; - -export default async function handler( - req: NextApiRequest, - res: NextApiResponse, -) { - if (req.method === 'GET') { - try { - if (!req.query) { - return res - .status(404) - .json({ success: false, error: { message: `User not found` } }); - } - const result = getUserIdSchema.safeParse(req.query); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return res.status(422).json({ - success: false, - error: { message: 'Invalid request', errors }, - }); - } else { - const { userId } = result.data; - const answers = await prisma.node.findMany({ - where: { answer: { is: { userId } } }, - include: { - answer: { - select: { - text: true, - }, - }, - question: { - select: { - id: true, - slug: true, - text: true, - }, - }, - }, - }); - return res.status(200).json(answers); - } - } catch (error) { - if (error instanceof Error) { - return res - .status(404) - .json({ success: false, error: { error: error.message } }); - } - } - } else if (req.method === 'POST') { - try { - if (!req.body) { - return res - .status(404) - .json({ success: false, error: { message: `Answer not provided` } }); - } - const token = await getToken({ req }); - if (token) { - const result = createAnswerServerSchema.safeParse(req.body); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return res.status(422).json({ - success: false, - error: { message: 'Invalid request', errors }, - }); - } else { - const { text, nodeId, userId } = result.data; - await prisma.answer.create({ - data: { - nodeId, - userId, - text, - }, - }); - return res - .status(201) - .json({ success: true, message: 'Answer created successfully' }); - } - } else { - return res - .status(401) - .json({ success: false, error: { message: 'Not signed in' } }); - } - } catch (error) { - if (error instanceof Error) { - return res - .status(500) - .json({ success: false, error: { error: error.message } }); - } - } - } else { - return res - .status(405) - .json({ success: false, error: { message: 'Method not allowed' } }); - } -} diff --git a/src/old/api/questions/index.ts b/src/old/api/questions/index.ts deleted file mode 100644 index 03028fd50..000000000 --- a/src/old/api/questions/index.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { NextApiRequest, NextApiResponse } from 'next'; -import { getToken } from 'next-auth/jwt'; - -import { getUserIdSchema } from '@/lib'; -import prisma from 'lib/prisma'; - -export default async function handler( - req: NextApiRequest, - res: NextApiResponse, -) { - if (req.method === 'GET') { - try { - if (!req.query) { - return res - .status(404) - .json({ success: false, message: `User not found` }); - } - const token = await getToken({ req }); - if (token) { - const result = getUserIdSchema.safeParse(req.query); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return res.status(422).json({ - success: false, - error: { message: 'Invalid request', errors }, - }); - } else { - const { userId } = result.data; - const questions = await prisma.question.findMany({ - where: { userId: userId as string }, - orderBy: { createdAt: 'desc' }, - include: { node: { select: { id: true } } }, - }); - return res.status(200).json(questions); - } - } else { - return res - .status(401) - .json({ success: false, error: { message: 'Not signed in' } }); - } - } catch (error) { - if (error instanceof Error) { - return res.status(404).json({ error: error.message }); - } - } - } else { - return res - .status(405) - .json({ success: false, error: { message: 'Method not allowed' } }); - } -} diff --git a/src/old/api/stripe/checkout/index.ts b/src/old/api/stripe/checkout/index.ts index 9a1042160..443683cae 100644 --- a/src/old/api/stripe/checkout/index.ts +++ b/src/old/api/stripe/checkout/index.ts @@ -1,62 +1,61 @@ -import { NextApiRequest, NextApiResponse } from 'next'; -import Stripe from 'stripe'; +// import { NextApiRequest, NextApiResponse } from 'next'; +// import Stripe from 'stripe'; -import { createCheckoutServerSchema } from '@/lib/server/validations/stripe'; -import { Routes } from '@/utils'; +// import { Routes } from '@/utils'; -const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { - apiVersion: '2023-10-16', -}); +// const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { +// apiVersion: '2023-10-16', +// }); -export default async function handler( - req: NextApiRequest, - res: NextApiResponse, -) { - if (req.method === 'POST') { - try { - if (!req.body) { - return res - .status(404) - .json({ success: false, message: `Information not provided` }); - } - const result = createCheckoutServerSchema.safeParse(req.body); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return res.status(422).json({ - success: false, - error: { message: 'Invalid request', errors }, - }); - } else { - const { lookup_key, customerId } = result.data; - const prices = await stripe.prices.list({ - lookup_keys: [lookup_key], - }); - const session = await stripe.checkout.sessions.create({ - line_items: [ - { - price: prices.data[0].id, - quantity: 1, - }, - ], - customer: customerId, - customer_update: { - address: 'auto', - }, - mode: 'subscription', - success_url: `${process.env.NEXT_PUBLIC_SITE_URL}/${Routes.SITE.LOGIN}`, - cancel_url: `${process.env.NEXT_PUBLIC_SITE_URL}/register/plan?status=cancel`, - automatic_tax: { enabled: true }, - }); - return res.json({ id: session.id }); - } - } catch (error) { - if (error instanceof Error) { - return res.status(500).json({ success: false, error: error.message }); - } - } - } else { - return res - .status(405) - .json({ success: false, error: { message: 'Method not allowed' } }); - } -} +// export default async function handler( +// req: NextApiRequest, +// res: NextApiResponse, +// ) { +// if (req.method === 'POST') { +// try { +// if (!req.body) { +// return res +// .status(404) +// .json({ success: false, message: `Information not provided` }); +// } +// const result = createCheckoutServerSchema.safeParse(req.body); +// if (result.success === false) { +// const errors = result.error.formErrors.fieldErrors; +// return res.status(422).json({ +// success: false, +// error: { message: 'Invalid request', errors }, +// }); +// } else { +// const { lookup_key, customerId } = result.data; +// const prices = await stripe.prices.list({ +// lookup_keys: [lookup_key], +// }); +// const session = await stripe.checkout.sessions.create({ +// line_items: [ +// { +// price: prices.data[0].id, +// quantity: 1, +// }, +// ], +// customer: customerId, +// customer_update: { +// address: 'auto', +// }, +// mode: 'subscription', +// success_url: `${process.env.NEXT_PUBLIC_SITE_URL}/${Routes.SITE.LOGIN}`, +// cancel_url: `${process.env.NEXT_PUBLIC_SITE_URL}/register/plan?status=cancel`, +// automatic_tax: { enabled: true }, +// }); +// return res.json({ id: session.id }); +// } +// } catch (error) { +// if (error instanceof Error) { +// return res.status(500).json({ success: false, error: error.message }); +// } +// } +// } else { +// return res +// .status(405) +// .json({ success: false, error: { message: 'Method not allowed' } }); +// } +// } diff --git a/src/old/api/stripe/customer/index.ts b/src/old/api/stripe/customer/index.ts index 041a6c1e2..996a44e1a 100644 --- a/src/old/api/stripe/customer/index.ts +++ b/src/old/api/stripe/customer/index.ts @@ -1,68 +1,67 @@ -import Stripe from 'stripe'; +// import Stripe from 'stripe'; -import { createCustomerServerSchema } from '@/lib/server/validations/stripe'; -import prisma from 'lib/prisma'; +// import prisma from 'lib/prisma'; -import type { NextApiRequest, NextApiResponse } from 'next'; +// import type { NextApiRequest, NextApiResponse } from 'next'; -const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { - apiVersion: '2023-10-16', -}); +// const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { +// apiVersion: '2023-10-16', +// }); -export default async function handler( - req: NextApiRequest, - res: NextApiResponse, -) { - if (req.method === 'POST') { - try { - if (!req.body) { - return res - .status(404) - .json({ success: false, message: `Company details not provided` }); - } - const result = createCustomerServerSchema.safeParse(req.body); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return res.status(422).json({ - success: false, - error: { message: 'Invalid request', errors }, - }); - } else { - const { companyEmail, company } = result.data; - const customerExists = await stripe.customers.search({ - query: `email:'${companyEmail}'`, - }); - if (customerExists.data.length > 0) { - return res.status(409).json({ - success: false, - message: 'A customer with the same company email already exists', - }); - } - const customer = await stripe.customers.create({ - email: companyEmail, - name: company, - }); - if (!customer) { - return res - .status(500) - .json({ message: 'There was a problem creating the customer' }); - } - await prisma.tenant.update({ - where: { email: companyEmail }, - data: { - customerId: customer.id, - }, - }); - return res.status(201).json({ customerId: customer.id }); - } - } catch (error) { - if (error instanceof Error) { - res.status(500).json({ success: false, error: error.message }); - } - } - } else { - return res - .status(405) - .json({ success: false, error: { message: 'Method not allowed' } }); - } -} +// export default async function handler( +// req: NextApiRequest, +// res: NextApiResponse, +// ) { +// if (req.method === 'POST') { +// try { +// if (!req.body) { +// return res +// .status(404) +// .json({ success: false, message: `Company details not provided` }); +// } +// const result = createCustomerServerSchema.safeParse(req.body); +// if (result.success === false) { +// const errors = result.error.formErrors.fieldErrors; +// return res.status(422).json({ +// success: false, +// error: { message: 'Invalid request', errors }, +// }); +// } else { +// const { companyEmail, company } = result.data; +// const customerExists = await stripe.customers.search({ +// query: `email:'${companyEmail}'`, +// }); +// if (customerExists.data.length > 0) { +// return res.status(409).json({ +// success: false, +// message: 'A customer with the same company email already exists', +// }); +// } +// const customer = await stripe.customers.create({ +// email: companyEmail, +// name: company, +// }); +// if (!customer) { +// return res +// .status(500) +// .json({ message: 'There was a problem creating the customer' }); +// } +// await prisma.tenant.update({ +// where: { email: companyEmail }, +// data: { +// customerId: customer.id, +// }, +// }); +// return res.status(201).json({ customerId: customer.id }); +// } +// } catch (error) { +// if (error instanceof Error) { +// res.status(500).json({ success: false, error: error.message }); +// } +// } +// } else { +// return res +// .status(405) +// .json({ success: false, error: { message: 'Method not allowed' } }); +// } +// } diff --git a/src/old/api/tags/[id].ts b/src/old/api/tags/[id].ts deleted file mode 100644 index 4b9ad50f9..000000000 --- a/src/old/api/tags/[id].ts +++ /dev/null @@ -1,52 +0,0 @@ -import { getToken } from 'next-auth/jwt'; - -import { deleteTagServerSchema } from '@/lib'; -import prisma from 'lib/prisma'; - -import type { NextApiRequest, NextApiResponse } from 'next'; - -export default async function handler( - req: NextApiRequest, - res: NextApiResponse, -) { - if (req.method === 'DELETE') { - try { - if (!req.query) { - return res - .status(404) - .json({ success: false, error: { message: `Tag not found` } }); - } - const token = await getToken({ req }); - if (token) { - const result = deleteTagServerSchema.safeParse({ - body: req.body, - query: req.query, - }); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return res.status(422).json({ - success: false, - error: { message: 'Invalid request', errors }, - }); - } else { - const { id } = result.data.query; - const { tenantId } = result.data.body; - await prisma.tag.delete({ - where: { id, tenantId }, - }); - return res - .status(200) - .json({ success: true, message: 'Tag deleted successfully' }); - } - } else { - return res - .status(401) - .json({ success: false, error: { message: 'Not signed in' } }); - } - } catch (error) { - if (error instanceof Error) { - return res.status(500).json({ error: error.message }); - } - } - } -} diff --git a/src/old/api/tags/index.ts b/src/old/api/tags/index.ts deleted file mode 100644 index 7de3fecd2..000000000 --- a/src/old/api/tags/index.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { getToken } from 'next-auth/jwt'; - -import { getTenantIdSchema, createTagServerSchema, getTagsCount } from '@/lib'; -import prisma from 'lib/prisma'; - -import type { NextApiRequest, NextApiResponse } from 'next'; - -export default async function handler( - req: NextApiRequest, - res: NextApiResponse, -) { - if (req.method === 'GET') { - try { - if (!req.query) { - return res - .status(404) - .json({ success: false, error: { message: `Tenant not found` } }); - } - const result = getTenantIdSchema.safeParse(req.query); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return res.status(422).json({ - success: false, - error: { message: 'Invalid request', errors }, - }); - } else { - const { tenantId } = result.data; - const tags = await prisma.tag.findMany({ - where: { tenantId: tenantId as string }, - }); - return res.status(200).json(tags); - } - } catch (error) { - if (error instanceof Error) { - return res.status(400).json({ success: false, error: error.message }); - } - } - } else if (req.method === 'POST') { - try { - if (!req.body) { - return res - .status(404) - .json({ success: false, error: { message: `Label not provided` } }); - } - const token = await getToken({ req }); - if (token) { - const result = createTagServerSchema.safeParse(req.body); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return res.status(422).json({ - success: false, - error: { message: 'Invalid request', errors }, - }); - } else { - const { label, tenantId } = result.data; - const tagsCount = await getTagsCount(tenantId); - if (typeof tagsCount !== 'number') { - return res.status(404).json({ - success: false, - error: { message: 'Could not find the number of tags' }, - }); - } - const { plan } = await prisma.tenant.findUnique({ - where: { id: tenantId }, - select: { plan: true }, - }); - if ( - (plan === 'free' && tagsCount >= 3) || - (plan === 'startup' && tagsCount >= 10) - ) { - return res.status(402).json({ - success: false, - error: { message: 'You reached the maximum number of tags.' }, - }); - } - await prisma.tag.create({ - data: { - label, - tenantId, - }, - }); - return res - .status(201) - .json({ success: true, message: 'Tag created successfully' }); - } - } else { - return res - .status(401) - .json({ success: false, error: { message: 'Not signed in' } }); - } - } catch (error) { - if (error instanceof Error) { - return res.status(500).json({ success: false, error: error.message }); - } - } - } else { - return res - .status(405) - .json({ success: false, error: { message: 'Method not allowed' } }); - } -} From 994aae9bbc4f4b9924858ca6f4d4a3fe04b3cf25 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 14 Apr 2024 20:27:40 +0200 Subject: [PATCH 058/326] :heavy_minus_sign: uninstall next-connect --- package.json | 1 - pnpm-lock.yaml | 21 --------------------- 2 files changed, 22 deletions(-) diff --git a/package.json b/package.json index 5d0cd6835..e46468f69 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,6 @@ "lucide-react": "^0.344.0", "next": "14.1.0", "next-auth": "^4.24.5", - "next-connect": "^0.13.0", "next-remove-imports": "^1.0.12", "next-themes": "^0.2.1", "react": "18.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8cf3d22a3..6cb34bd3c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -89,9 +89,6 @@ dependencies: next-auth: specifier: ^4.24.5 version: 4.24.5(next@14.1.0)(react-dom@18.2.0)(react@18.2.0) - next-connect: - specifier: ^0.13.0 - version: 0.13.0 next-remove-imports: specifier: ^1.0.12 version: 1.0.12(webpack@5.89.0) @@ -6002,12 +5999,6 @@ packages: uuid: 8.3.2 dev: false - /next-connect@0.13.0: - resolution: {integrity: sha512-f2G4edY01XomjCECSrgOpb/zzQinJO6Whd8Zds0+rLUYhj5cLwkh6FVvZsQCSSbxSc4k9nCwNuk5NLIhvO1gUA==} - dependencies: - trouter: 3.2.1 - dev: false - /next-remove-imports@1.0.12(webpack@5.89.0): resolution: {integrity: sha512-3tdL6VuSykJ/mcUwxfjQ+Fd4OpEmrwWVHtLZ/fhNcSaToWCutUp7nrfIww7/4CURe9I7BDCQE9AWl4fkY3YZOQ==} dependencies: @@ -6936,11 +6927,6 @@ packages: set-function-name: 2.0.1 dev: true - /regexparam@1.3.0: - resolution: {integrity: sha512-6IQpFBv6e5vz1QAqI+V4k8P2e/3gRrqfCJ9FI+O1FLQTO+Uz6RXZEZOPmTJ6hlGj7gkERzY5BRCv09whKP96/g==} - engines: {node: '>=6'} - dev: false - /rehype-attr@3.0.3: resolution: {integrity: sha512-Up50Xfra8tyxnkJdCzLBIBtxOcB2M1xdeKe1324U06RAvSjYm7ULSeoM+b/nYPQPVd7jsXJ9+39IG1WAJPXONw==} engines: {node: '>=16'} @@ -7815,13 +7801,6 @@ packages: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} dev: false - /trouter@3.2.1: - resolution: {integrity: sha512-oY3CmIiEYOe1YMEzh++I67lrNOUldtCeuLL0vRPydvQLHZpSJ03B5dgDFlpFsiriMq6e//NDjjopjUzXOztHow==} - engines: {node: '>=6'} - dependencies: - regexparam: 1.3.0 - dev: false - /ts-api-utils@1.0.3(typescript@5.3.3): resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} engines: {node: '>=16.13.0'} From 0ba534e7acaeb13334b8388591de28a7526aa21d Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 15 Apr 2024 09:39:45 +0200 Subject: [PATCH 059/326] :fire: delete queries hooks --- src/hooks/queries/answer/index.ts | 2 - src/hooks/queries/answer/useCreateAnswer.ts | 45 ----------- src/hooks/queries/answer/useUpdateAnswer.ts | 44 ----------- src/hooks/queries/auth/index.ts | 1 - src/hooks/queries/auth/useMe.ts | 30 ------- src/hooks/queries/integrations/index.ts | 2 - .../queries/integrations/useIntegration.ts | 20 ----- .../integrations/useUpsertIntegrations.ts | 25 ------ src/hooks/queries/nodes/index.ts | 5 -- src/hooks/queries/nodes/useCreateNode.ts | 78 ------------------- src/hooks/queries/nodes/useNode.ts | 20 ----- src/hooks/queries/nodes/useNodes.ts | 12 --- src/hooks/queries/nodes/useNodesCount.ts | 11 --- src/hooks/queries/nodes/useUpdateNode.ts | 61 --------------- src/hooks/queries/search/index.ts | 2 - src/hooks/queries/search/useSearchNodes.ts | 12 --- src/hooks/queries/search/useSearchTags.ts | 13 ---- src/hooks/queries/tags/index.ts | 3 - src/hooks/queries/tags/useCreateTag.ts | 37 --------- src/hooks/queries/tags/useDeleteTag.ts | 31 -------- src/hooks/queries/tags/useTags.ts | 11 --- src/hooks/queries/tenant/index.ts | 5 -- src/hooks/queries/tenant/useCreateTenant.ts | 29 ------- src/hooks/queries/tenant/useDeleteTenant.ts | 37 --------- src/hooks/queries/tenant/useTenant.ts | 11 --- src/hooks/queries/tenant/useUpdateTenant.ts | 33 -------- src/hooks/queries/tenant/useUpsertFiles.ts | 53 ------------- src/hooks/queries/users/index.ts | 9 --- src/hooks/queries/users/useCreateUser.ts | 34 -------- src/hooks/queries/users/useCreateUsers.ts | 33 -------- src/hooks/queries/users/useDeleteUser.ts | 37 --------- src/hooks/queries/users/useUpdateUser.ts | 32 -------- src/hooks/queries/users/useUser.ts | 11 --- src/hooks/queries/users/useUserQuestions.ts | 26 ------- src/hooks/queries/users/useUsers.ts | 11 --- src/hooks/queries/users/useUsersAnswers.ts | 31 -------- src/hooks/queries/users/useUsersCount.ts | 19 ----- 37 files changed, 876 deletions(-) delete mode 100644 src/hooks/queries/answer/index.ts delete mode 100644 src/hooks/queries/answer/useCreateAnswer.ts delete mode 100644 src/hooks/queries/answer/useUpdateAnswer.ts delete mode 100644 src/hooks/queries/auth/index.ts delete mode 100644 src/hooks/queries/auth/useMe.ts delete mode 100644 src/hooks/queries/integrations/index.ts delete mode 100644 src/hooks/queries/integrations/useIntegration.ts delete mode 100644 src/hooks/queries/integrations/useUpsertIntegrations.ts delete mode 100644 src/hooks/queries/nodes/index.ts delete mode 100644 src/hooks/queries/nodes/useCreateNode.ts delete mode 100644 src/hooks/queries/nodes/useNode.ts delete mode 100644 src/hooks/queries/nodes/useNodes.ts delete mode 100644 src/hooks/queries/nodes/useNodesCount.ts delete mode 100644 src/hooks/queries/nodes/useUpdateNode.ts delete mode 100644 src/hooks/queries/search/index.ts delete mode 100644 src/hooks/queries/search/useSearchNodes.ts delete mode 100644 src/hooks/queries/search/useSearchTags.ts delete mode 100644 src/hooks/queries/tags/index.ts delete mode 100644 src/hooks/queries/tags/useCreateTag.ts delete mode 100644 src/hooks/queries/tags/useDeleteTag.ts delete mode 100644 src/hooks/queries/tags/useTags.ts delete mode 100644 src/hooks/queries/tenant/index.ts delete mode 100644 src/hooks/queries/tenant/useCreateTenant.ts delete mode 100644 src/hooks/queries/tenant/useDeleteTenant.ts delete mode 100644 src/hooks/queries/tenant/useTenant.ts delete mode 100644 src/hooks/queries/tenant/useUpdateTenant.ts delete mode 100644 src/hooks/queries/tenant/useUpsertFiles.ts delete mode 100644 src/hooks/queries/users/index.ts delete mode 100644 src/hooks/queries/users/useCreateUser.ts delete mode 100644 src/hooks/queries/users/useCreateUsers.ts delete mode 100644 src/hooks/queries/users/useDeleteUser.ts delete mode 100644 src/hooks/queries/users/useUpdateUser.ts delete mode 100644 src/hooks/queries/users/useUser.ts delete mode 100644 src/hooks/queries/users/useUserQuestions.ts delete mode 100644 src/hooks/queries/users/useUsers.ts delete mode 100644 src/hooks/queries/users/useUsersAnswers.ts delete mode 100644 src/hooks/queries/users/useUsersCount.ts diff --git a/src/hooks/queries/answer/index.ts b/src/hooks/queries/answer/index.ts deleted file mode 100644 index 69617adcb..000000000 --- a/src/hooks/queries/answer/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './useCreateAnswer'; -export * from './useUpdateAnswer'; diff --git a/src/hooks/queries/answer/useCreateAnswer.ts b/src/hooks/queries/answer/useCreateAnswer.ts deleted file mode 100644 index aa54067e7..000000000 --- a/src/hooks/queries/answer/useCreateAnswer.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { useMutation, useQueryClient } from '@tanstack/react-query'; -import axios from 'axios'; -import { NextRouter } from 'next/navigation'; -import { z } from 'zod'; - -import { promiseToast } from '@/components'; -import { answerClientSchema } from '@/lib'; -import { QueryKeys, Routes } from '@/utils'; - -type Schema = z.infer; - -const createAnswer = async (values: Schema, nodeId: string, userId: string) => { - const body = { - ...values, - nodeId, - userId, - }; - const { data } = await axios.post(Routes.API.ANSWERS, body); - return data; -}; - -export const useCreateAnswer = ( - nodeId: string, - userId: string, - tenantId: string, - router: NextRouter, -) => { - const queryClient = useQueryClient(); - const createAnswerMutation = async (values: Schema) => { - const promise = createAnswer(values, nodeId, userId); - promiseToast(promise, 'Creating answer...'); - return promise; - }; - - const mutation = useMutation({ - mutationFn: createAnswerMutation, - onSuccess: async () => { - await queryClient.invalidateQueries({ - queryKey: [QueryKeys.NODES, tenantId], - }); - router.push(Routes.SITE.HOME); - }, - }); - return mutation; -}; diff --git a/src/hooks/queries/answer/useUpdateAnswer.ts b/src/hooks/queries/answer/useUpdateAnswer.ts deleted file mode 100644 index 9ab7873f6..000000000 --- a/src/hooks/queries/answer/useUpdateAnswer.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { useMutation, useQueryClient } from '@tanstack/react-query'; -import axios from 'axios'; -import { NextRouter } from 'next/navigation'; -import { z } from 'zod'; - -import { promiseToast } from '@/components'; -import { answerClientSchema } from '@/lib'; -import { QueryKeys, Routes } from '@/utils'; - -type Schema = z.infer; - -const updateAnswer = async (values: Schema, userId: string, id?: string) => { - const body = { - ...values, - userId, - }; - const { data } = await axios.put(`${Routes.API.ANSWERS}/${id}`, body); - return data; -}; - -export const useUpdateAnswer = ( - userId: string, - tenantId: string, - router: NextRouter, - id?: string, -) => { - const queryClient = useQueryClient(); - const updateAnswerMutation = async (values: Schema) => { - const promise = updateAnswer(values, userId, id); - promiseToast(promise, 'Updating answer...'); - return promise; - }; - - const mutation = useMutation({ - mutationFn: updateAnswerMutation, - onSuccess: async () => { - await queryClient.invalidateQueries({ - queryKey: [QueryKeys.NODES, tenantId], - }); - router.push(Routes.SITE.HOME); - }, - }); - return mutation; -}; diff --git a/src/hooks/queries/auth/index.ts b/src/hooks/queries/auth/index.ts deleted file mode 100644 index c70019247..000000000 --- a/src/hooks/queries/auth/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './useMe'; diff --git a/src/hooks/queries/auth/useMe.ts b/src/hooks/queries/auth/useMe.ts deleted file mode 100644 index eddab228f..000000000 --- a/src/hooks/queries/auth/useMe.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { User } from '@prisma/client'; -import { useQuery } from '@tanstack/react-query'; -import axios, { AxiosError } from 'axios'; -import { useRouter } from 'next/navigation'; -import { useSession } from 'next-auth/react'; - -import { QueryKeys, Routes } from '@/utils'; - -const getUser = async (id: string | undefined) => { - if (!id) return null; - const { data } = await axios.get(`${Routes.API.USERS.INDEX}/${id}`); - return data; -}; - -export const useMe = () => { - const router = useRouter(); - const { data: session, status } = useSession({ - required: true, - onUnauthenticated() { - router.push('/login'); - }, - }); - const id: string = session?.user?.id; - const query = useQuery({ - queryKey: [QueryKeys.ME, id], - queryFn: () => getUser(id), - enabled: status !== 'loading', - }); - return query; -}; diff --git a/src/hooks/queries/integrations/index.ts b/src/hooks/queries/integrations/index.ts deleted file mode 100644 index 6b2cedcbb..000000000 --- a/src/hooks/queries/integrations/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './useUpsertIntegrations'; -export * from './useIntegration'; diff --git a/src/hooks/queries/integrations/useIntegration.ts b/src/hooks/queries/integrations/useIntegration.ts deleted file mode 100644 index 9990ec64e..000000000 --- a/src/hooks/queries/integrations/useIntegration.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Integrations } from '@prisma/client'; -import { useQuery } from '@tanstack/react-query'; -import axios, { AxiosError } from 'axios'; - -import { QueryKeys, Routes } from '@/utils'; - -const getIntegration = async (tenantId: string) => { - const { data } = await axios.get( - `${Routes.API.INTEGRATIONS.INDEX}/${tenantId}`, - ); - return data; -}; - -export const useIntegration = (tenantId: string) => { - const query = useQuery({ - queryKey: [QueryKeys.INTEGRATION, tenantId], - queryFn: () => getIntegration(tenantId), - }); - return query; -}; diff --git a/src/hooks/queries/integrations/useUpsertIntegrations.ts b/src/hooks/queries/integrations/useUpsertIntegrations.ts deleted file mode 100644 index 093c62c9d..000000000 --- a/src/hooks/queries/integrations/useUpsertIntegrations.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { useMutation } from '@tanstack/react-query'; -import axios from 'axios'; -import { z } from 'zod'; - -import { successToast } from '@/components'; -import { integrationsClientSchema } from '@/lib'; -import { Routes } from '@/utils'; - -type Schema = z.infer; - -const upsertIntegrations = async (values: Schema, tenantId: string) => { - const body = { ...values, tenantId }; - const { data } = await axios.post(Routes.API.INTEGRATIONS.INDEX, body); - return data; -}; - -export const useUpsertIntegrations = (tenantId: string) => { - const mutation = useMutation({ - mutationFn: (values: Schema) => upsertIntegrations(values, tenantId), - onSuccess: (data) => { - successToast(data.message); - }, - }); - return mutation; -}; diff --git a/src/hooks/queries/nodes/index.ts b/src/hooks/queries/nodes/index.ts deleted file mode 100644 index ebdb922ff..000000000 --- a/src/hooks/queries/nodes/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from './useNodes'; -export * from './useCreateNode'; -export * from './useNode'; -export * from './useUpdateNode'; -export * from './useNodesCount'; diff --git a/src/hooks/queries/nodes/useCreateNode.ts b/src/hooks/queries/nodes/useCreateNode.ts deleted file mode 100644 index 9168ee397..000000000 --- a/src/hooks/queries/nodes/useCreateNode.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { Integrations, User } from '@prisma/client'; -import { useMutation, useQueryClient } from '@tanstack/react-query'; -import axios from 'axios'; -import { NextRouter } from 'next/navigation'; -import slugify from 'slugify'; -import { z } from 'zod'; - -import { errorToast, promiseToast } from '@/components'; -import { questionClientSchema } from '@/lib'; -import { QueryKeys, Routes } from '@/utils'; - -type Schema = z.infer; - -const createNode = async ( - values: Schema, - me: User, - selectedTags: string[], - integrations: Integrations, -) => { - const body = { - ...values, - slug: slugify(values.text).toLowerCase(), - tenantId: me.tenantId, - userId: me.id, - tags: selectedTags, - }; - const { data } = await axios.post(Routes.API.NODES.INDEX, body); - if (integrations) { - if (integrations.slack) { - try { - const slackBody = { - text: values.text, - url: integrations.slack, - }; - const { data } = await axios.post( - Routes.API.INTEGRATIONS.SLACK, - slackBody, - ); - return data; - } catch (error) { - errorToast('Error sending Slack webhook: ' + error.message); - } - } - } - return data; -}; - -export const useCreateNode = ( - me: User, - router: NextRouter, - selectedTags: string[], - integrations: Integrations, -) => { - const queryClient = useQueryClient(); - const createNodeMutation = async (values: Schema) => { - const promise = createNode(values, me, selectedTags, integrations); - promiseToast(promise, 'Creating question...'); - return promise; - }; - - const mutation = useMutation({ - mutationFn: createNodeMutation, - onSuccess: async (data) => { - await queryClient.invalidateQueries({ - queryKey: [QueryKeys.NODES, me.tenantId], - }); - if (data.node) { - router.push({ - pathname: Routes.SITE.ANSWER, - query: { id: data.node.id }, - }); - } else { - router.push(Routes.SITE.HOME); - } - }, - }); - return mutation; -}; diff --git a/src/hooks/queries/nodes/useNode.ts b/src/hooks/queries/nodes/useNode.ts deleted file mode 100644 index 8f5c01b40..000000000 --- a/src/hooks/queries/nodes/useNode.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { useQuery } from '@tanstack/react-query'; -import axios from 'axios'; - -import { ExtendedNode } from '@/types'; -import { QueryKeys, Routes } from '@/utils'; - -const getNode = async (tenantId: string, id: string) => { - const { data } = await axios.get(`${Routes.API.NODES.INDEX}/${id}`, { - params: { tenantId }, - }); - return data; -}; - -export const useNode = (tenantId: string, id: string) => { - const query = useQuery({ - queryKey: [QueryKeys.NODE, tenantId, id], - queryFn: () => getNode(tenantId, id), - }); - return query; -}; diff --git a/src/hooks/queries/nodes/useNodes.ts b/src/hooks/queries/nodes/useNodes.ts deleted file mode 100644 index 0a2206ac7..000000000 --- a/src/hooks/queries/nodes/useNodes.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { useQuery } from '@tanstack/react-query'; - -import { getPaginatedNodes } from '@/actions'; -import { QueryKeys } from '@/utils'; - -export const useNodes = (tenantId: string, page: number) => { - const body = { tenantId, page }; - return useQuery({ - queryKey: [QueryKeys.NODES, tenantId, page], - queryFn: async () => getPaginatedNodes(body), - }); -}; diff --git a/src/hooks/queries/nodes/useNodesCount.ts b/src/hooks/queries/nodes/useNodesCount.ts deleted file mode 100644 index 860f012e3..000000000 --- a/src/hooks/queries/nodes/useNodesCount.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { useQuery } from '@tanstack/react-query'; - -import { getNodesCount } from '@/actions'; -import { QueryKeys } from '@/utils'; - -export const useNodesCount = (tenantId: string) => { - return useQuery({ - queryKey: [QueryKeys.NODES_COUNT, tenantId], - queryFn: async () => getNodesCount(tenantId), - }); -}; diff --git a/src/hooks/queries/nodes/useUpdateNode.ts b/src/hooks/queries/nodes/useUpdateNode.ts deleted file mode 100644 index e25364689..000000000 --- a/src/hooks/queries/nodes/useUpdateNode.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { useMutation, useQueryClient } from '@tanstack/react-query'; -import axios from 'axios'; -import { NextRouter } from 'next/navigation'; -import slugify from 'slugify'; -import { z } from 'zod'; - -import { promiseToast } from '@/components'; -import { questionClientSchema } from '@/lib'; -import { QueryKeys, Routes } from '@/utils'; - -type Schema = z.infer; - -const updateNode = async ( - values: Schema, - id: string, - tenantId: string, - userId: string, - tags: string[], - questionId?: string, -) => { - const body = { - ...values, - tenantId, - questionId, - slug: slugify(values.text).toLowerCase(), - userId, - tags, - }; - const { data } = await axios.put(`${Routes.API.NODES.INDEX}/${id}`, body); - return data; -}; - -export const useUpdateNode = ( - id: string, - tenantId: string, - userId: string, - tags: string[], - router: NextRouter, - questionId?: string, -) => { - const queryClient = useQueryClient(); - const updateNodeMutation = async (values: Schema) => { - const promise = updateNode(values, id, tenantId, userId, tags, questionId); - promiseToast(promise, 'Updating question...'); - return promise; - }; - - const mutation = useMutation({ - mutationFn: updateNodeMutation, - onSuccess: async () => { - await queryClient.invalidateQueries({ - queryKey: [QueryKeys.NODES, tenantId], - }); - await queryClient.invalidateQueries({ - queryKey: [QueryKeys.NODE, tenantId, id], - }); - router.push(Routes.SITE.HOME); - }, - }); - return mutation; -}; diff --git a/src/hooks/queries/search/index.ts b/src/hooks/queries/search/index.ts deleted file mode 100644 index 57ab2f569..000000000 --- a/src/hooks/queries/search/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './useSearchNodes'; -export * from './useSearchTags'; diff --git a/src/hooks/queries/search/useSearchNodes.ts b/src/hooks/queries/search/useSearchNodes.ts deleted file mode 100644 index 97c17112d..000000000 --- a/src/hooks/queries/search/useSearchNodes.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { useQuery } from '@tanstack/react-query'; - -import { getSearchNodes } from '@/actions'; -import { QueryKeys } from '@/utils'; - -export const useSearchNodes = (tenantId: string, searchQuery: string) => { - return useQuery({ - queryKey: [QueryKeys.SEARCH, tenantId, searchQuery], - queryFn: async () => getSearchNodes(tenantId, searchQuery), - enabled: !!searchQuery, - }); -}; diff --git a/src/hooks/queries/search/useSearchTags.ts b/src/hooks/queries/search/useSearchTags.ts deleted file mode 100644 index 381adf501..000000000 --- a/src/hooks/queries/search/useSearchTags.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { useQuery } from '@tanstack/react-query'; - -import { getSearchTags } from '@/actions'; -import { QueryKeys } from '@/utils'; - -export const useSearchTags = (tenantId: string, searchTag: string) => { - const body = { tenantId, searchTag }; - return useQuery({ - queryKey: [QueryKeys.SEARCH, tenantId, searchTag], - queryFn: async () => getSearchTags(body), - enabled: !!searchTag, - }); -}; diff --git a/src/hooks/queries/tags/index.ts b/src/hooks/queries/tags/index.ts deleted file mode 100644 index 52fa58893..000000000 --- a/src/hooks/queries/tags/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './useCreateTag'; -export * from './useTags'; -export * from './useDeleteTag'; diff --git a/src/hooks/queries/tags/useCreateTag.ts b/src/hooks/queries/tags/useCreateTag.ts deleted file mode 100644 index a6a0e9dd1..000000000 --- a/src/hooks/queries/tags/useCreateTag.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { useMutation, useQueryClient } from '@tanstack/react-query'; -import axios from 'axios'; -import { z } from 'zod'; - -import { promiseToast } from '@/components'; -import { createTagClientSchema } from '@/lib'; -import { QueryKeys, Routes } from '@/utils'; - -type Schema = z.infer; - -const createTag = async (values: Schema, tenantId: string) => { - const body = { - ...values, - tenantId, - }; - const { data } = await axios.post(Routes.API.TAGS, body); - return data; -}; - -export const useCreateTag = (tenantId: string, reset: () => void) => { - const queryClient = useQueryClient(); - const createTagMutation = async (values: Schema) => { - const promise = createTag(values, tenantId); - promiseToast(promise, 'Creating tag...'); - return promise; - }; - const mutation = useMutation({ - mutationFn: createTagMutation, - onSuccess: () => { - reset(); - queryClient.invalidateQueries({ - queryKey: [QueryKeys.TAGS, tenantId], - }); - }, - }); - return mutation; -}; diff --git a/src/hooks/queries/tags/useDeleteTag.ts b/src/hooks/queries/tags/useDeleteTag.ts deleted file mode 100644 index 515de8da1..000000000 --- a/src/hooks/queries/tags/useDeleteTag.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { useMutation, useQueryClient } from '@tanstack/react-query'; -import axios from 'axios'; - -import { successToast } from '@/components'; -import { QueryKeys, Routes } from '@/utils'; - -const deleteTag = async (tenantId: string, id: string) => { - const data = { tenantId }; - const { data: deleteData } = await axios.delete(`${Routes.API.TAGS}/${id}`, { - data, - }); - return deleteData; -}; - -type MutationParams = { - id: string; -}; - -export const useDeleteTag = (tenantId: string) => { - const queryClient = useQueryClient(); - const mutation = useMutation({ - mutationFn: ({ id }: MutationParams) => deleteTag(tenantId, id), - onSuccess: (data) => { - successToast(data.message); - queryClient.invalidateQueries({ - queryKey: [QueryKeys.TAGS, tenantId], - }); - }, - }); - return mutation; -}; diff --git a/src/hooks/queries/tags/useTags.ts b/src/hooks/queries/tags/useTags.ts deleted file mode 100644 index ed863bbfb..000000000 --- a/src/hooks/queries/tags/useTags.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { useQuery } from '@tanstack/react-query'; - -import { getTags } from '@/actions'; -import { QueryKeys } from '@/utils'; - -export const useTags = (tenantId: string) => { - return useQuery({ - queryKey: [QueryKeys.TAGS, tenantId], - queryFn: async () => getTags(tenantId), - }); -}; diff --git a/src/hooks/queries/tenant/index.ts b/src/hooks/queries/tenant/index.ts deleted file mode 100644 index 84d3ab47d..000000000 --- a/src/hooks/queries/tenant/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from './useCreateTenant'; -export * from './useTenant'; -export * from './useUpdateTenant'; -export * from './useUpsertFiles'; -export * from './useDeleteTenant'; diff --git a/src/hooks/queries/tenant/useCreateTenant.ts b/src/hooks/queries/tenant/useCreateTenant.ts deleted file mode 100644 index 2d2ade2d2..000000000 --- a/src/hooks/queries/tenant/useCreateTenant.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { useMutation } from '@tanstack/react-query'; -import axios from 'axios'; -import { z } from 'zod'; - -import { promiseToast } from '@/components'; -import { registerCompleteClientSchema } from '@/lib'; -import { Routes } from '@/utils'; - -type Schema = z.infer; - -const createTenant = async (values: Schema) => { - const body = { - ...values, - }; - const { data } = await axios.post(Routes.API.TENANT.INDEX, body); - return data; -}; - -export const useCreateTenant = () => { - const createTenantMutation = async (values: Schema) => { - const promise = createTenant(values); - promiseToast(promise, 'Creating account...'); - return promise; - }; - const mutation = useMutation({ - mutationFn: createTenantMutation, - }); - return mutation; -}; diff --git a/src/hooks/queries/tenant/useDeleteTenant.ts b/src/hooks/queries/tenant/useDeleteTenant.ts deleted file mode 100644 index 12e8972cc..000000000 --- a/src/hooks/queries/tenant/useDeleteTenant.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { useMutation } from '@tanstack/react-query'; -import axios from 'axios'; -import { NextRouter } from 'next/navigation'; - -import { promiseToast } from '@/components'; -import { Routes } from '@/utils'; - -const deleteTenant = async (values, tenantId: string, company: string) => { - const data = { - ...values, - company, - }; - const { data: deleteData } = await axios.delete( - `${Routes.API.TENANT.INDEX}/${tenantId}`, - { data }, - ); - return deleteData; -}; - -export const useDeleteTenant = ( - tenantId: string, - company: string, - router: NextRouter, -) => { - const deleteTenantMutation = async (values) => { - const promise = deleteTenant(values, tenantId, company); - promiseToast(promise, 'Deleting account...'); - return promise; - }; - const mutation = useMutation({ - mutationFn: deleteTenantMutation, - onSuccess: () => { - router.push(Routes.SITE.LOGIN); - }, - }); - return mutation; -}; diff --git a/src/hooks/queries/tenant/useTenant.ts b/src/hooks/queries/tenant/useTenant.ts deleted file mode 100644 index 06402b5a3..000000000 --- a/src/hooks/queries/tenant/useTenant.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { useQuery } from '@tanstack/react-query'; - -import { getTenant } from '@/actions'; -import { QueryKeys } from '@/utils'; - -export const useTenant = (tenantId: string) => { - return useQuery({ - queryKey: [QueryKeys.TENANT, tenantId], - queryFn: async () => getTenant(tenantId), - }); -}; diff --git a/src/hooks/queries/tenant/useUpdateTenant.ts b/src/hooks/queries/tenant/useUpdateTenant.ts deleted file mode 100644 index 8af5a97a4..000000000 --- a/src/hooks/queries/tenant/useUpdateTenant.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { useMutation, useQueryClient } from '@tanstack/react-query'; -import axios from 'axios'; -import { NextRouter } from 'next/navigation'; -import { z } from 'zod'; - -import { successToast } from '@/components'; -import { updateTenantClientSchema } from '@/lib'; -import { QueryKeys, Routes } from '@/utils'; - -type Schema = z.infer; - -const updateTenant = async (values: Schema, id: string) => { - const body = { - ...values, - }; - const { data } = await axios.put(`${Routes.API.TENANT.INDEX}/${id}`, body); - return data; -}; - -export const useUpdateTenant = (id: string, router: NextRouter) => { - const queryClient = useQueryClient(); - const mutation = useMutation({ - mutationFn: (values: Schema) => updateTenant(values, id), - onSuccess: (data) => { - successToast(data.message); - queryClient.invalidateQueries({ - queryKey: [QueryKeys.TENANT, id], - }); - router.reload(); - }, - }); - return mutation; -}; diff --git a/src/hooks/queries/tenant/useUpsertFiles.ts b/src/hooks/queries/tenant/useUpsertFiles.ts deleted file mode 100644 index 8582196d8..000000000 --- a/src/hooks/queries/tenant/useUpsertFiles.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { useMutation, useQueryClient } from '@tanstack/react-query'; -import axios from 'axios'; -import { v4 as uuid } from 'uuid'; -import { z } from 'zod'; - -import { promiseToast } from '@/components'; -import { filesClientSchema } from '@/lib'; -import { QueryKeys, Routes } from '@/utils'; - -type Schema = z.infer; - -const upsertFiles = async (values: Schema, id: string) => { - try { - const { logo: file } = values; - const randomId = uuid(); - const filename = encodeURIComponent(randomId + file.name); - const { data: signedData } = await axios.post( - `${Routes.API.STORAGE.LOGO}?file=${filename}`, - ); - const { url, fields } = signedData; - const formData = new FormData(); - Object.entries({ ...fields, file }).forEach(([key, value]) => { - formData.append(key, value as string | Blob); - }); - await axios.post(url, formData); - const body = { - logoUrl: url + 'logos/' + filename, - filename, - }; - const { data } = await axios.put(`${Routes.API.TENANT.LOGO}/${id}`, body); - return data; - } catch (error) { - throw error; - } -}; - -export const useUpsertFiles = (id: string) => { - const queryClient = useQueryClient(); - const upsertFilesMutation = async (values: Schema) => { - const promise = upsertFiles(values, id); - promiseToast(promise, 'Uploading files...'); - return promise; - }; - const mutation = useMutation({ - mutationFn: upsertFilesMutation, - onSuccess: () => { - queryClient.invalidateQueries({ - queryKey: [QueryKeys.TENANT, id], - }); - }, - }); - return mutation; -}; diff --git a/src/hooks/queries/users/index.ts b/src/hooks/queries/users/index.ts deleted file mode 100644 index 41cbb1d42..000000000 --- a/src/hooks/queries/users/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -export * from './useCreateUser'; -export * from './useUsers'; -export * from './useUser'; -export * from './useUserQuestions'; -export * from './useUsersAnswers'; -export * from './useUsersCount'; -export * from './useDeleteUser'; -export * from './useUpdateUser'; -export * from './useCreateUsers'; diff --git a/src/hooks/queries/users/useCreateUser.ts b/src/hooks/queries/users/useCreateUser.ts deleted file mode 100644 index 20e20bf02..000000000 --- a/src/hooks/queries/users/useCreateUser.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { useMutation, useQueryClient } from '@tanstack/react-query'; -import axios from 'axios'; -import { z } from 'zod'; - -import { successToast } from '@/components'; -import { createUserClientSchema } from '@/lib'; -import { QueryKeys, Routes } from '@/utils'; - -type Schema = z.infer; - -const createUser = async (values: Schema, tenantId: string) => { - const body = { ...values, tenantId }; - const { data } = await axios.post(Routes.API.USERS.INDEX, body); - return data; -}; - -export const useCreateUser = (tenantId: string, reset: () => void) => { - const queryClient = useQueryClient(); - - const mutation = useMutation({ - mutationFn: (values: Schema) => createUser(values, tenantId), - onSuccess: (data) => { - successToast(data.message); - reset(); - queryClient.invalidateQueries({ - queryKey: [QueryKeys.USERS, tenantId], - }); - queryClient.invalidateQueries({ - queryKey: [QueryKeys.USERS_COUNT, tenantId], - }); - }, - }); - return mutation; -}; diff --git a/src/hooks/queries/users/useCreateUsers.ts b/src/hooks/queries/users/useCreateUsers.ts deleted file mode 100644 index cc65cd9cc..000000000 --- a/src/hooks/queries/users/useCreateUsers.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { useMutation, useQueryClient } from '@tanstack/react-query'; -import axios from 'axios'; - -import { promiseToast } from '@/components'; -import { QueryKeys, Routes } from '@/utils'; - -const createUsers = async (newUsersArray: string[], tenantId: string) => { - const body = { newUsersArray, tenantId }; - const { data } = await axios.post(Routes.API.USERS.INDEX, body); - return data; -}; - -export const useCreateUsers = (tenantId: string, newUsersArray: string[]) => { - const queryClient = useQueryClient(); - const createUsersMutation = async () => { - const promise = createUsers(newUsersArray, tenantId); - promiseToast(promise, 'Creating users ...'); - return promise; - }; - - const mutation = useMutation({ - mutationFn: createUsersMutation, - onSuccess: () => { - queryClient.invalidateQueries({ - queryKey: [QueryKeys.USERS, tenantId], - }); - queryClient.invalidateQueries({ - queryKey: [QueryKeys.USERS_COUNT, tenantId], - }); - }, - }); - return mutation; -}; diff --git a/src/hooks/queries/users/useDeleteUser.ts b/src/hooks/queries/users/useDeleteUser.ts deleted file mode 100644 index 4902fb53b..000000000 --- a/src/hooks/queries/users/useDeleteUser.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { useMutation, useQueryClient } from '@tanstack/react-query'; -import axios from 'axios'; - -import { successToast } from '@/components'; -import { QueryKeys, Routes } from '@/utils'; - -const deleteUser = async (tenantId: string, id: string) => { - const data = { tenantId }; - const { data: deleteData } = await axios.delete( - `${Routes.API.USERS.INDEX}/${id}`, - { - data, - }, - ); - return deleteData; -}; - -type MutationParams = { - id: string; -}; - -export const useDeleteUser = (tenantId: string) => { - const queryClient = useQueryClient(); - const mutation = useMutation({ - mutationFn: ({ id }: MutationParams) => deleteUser(tenantId, id), - onSuccess: (data) => { - successToast(data.message); - queryClient.invalidateQueries({ - queryKey: [QueryKeys.USERS, tenantId], - }); - queryClient.invalidateQueries({ - queryKey: [QueryKeys.USERS_COUNT, tenantId], - }); - }, - }); - return mutation; -}; diff --git a/src/hooks/queries/users/useUpdateUser.ts b/src/hooks/queries/users/useUpdateUser.ts deleted file mode 100644 index ef3b64910..000000000 --- a/src/hooks/queries/users/useUpdateUser.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { useMutation, useQueryClient } from '@tanstack/react-query'; -import axios from 'axios'; -import { z } from 'zod'; - -import { successToast } from '@/components'; -import { updateUserClientSchema } from '@/lib'; -import { QueryKeys, Routes } from '@/utils'; - -type Schema = z.infer; - -const updateUser = async (values: Schema, id: string, tenantId: string) => { - const body = { - ...values, - tenantId, - }; - const { data } = await axios.put(`${Routes.API.USERS.INDEX}/${id}`, body); - return data; -}; - -export const useUpdateUser = (id: string, tenantId: string) => { - const queryClient = useQueryClient(); - const mutation = useMutation({ - mutationFn: (values: Schema) => updateUser(values, id, tenantId), - onSuccess: (data) => { - successToast(data.message); - queryClient.invalidateQueries({ - queryKey: [QueryKeys.USERS, tenantId], - }); - }, - }); - return mutation; -}; diff --git a/src/hooks/queries/users/useUser.ts b/src/hooks/queries/users/useUser.ts deleted file mode 100644 index 1fdbc0a7a..000000000 --- a/src/hooks/queries/users/useUser.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { useQuery } from '@tanstack/react-query'; - -import { getUser } from '@/actions'; -import { QueryKeys } from '@/utils'; - -export const useUser = (id: string) => { - return useQuery({ - queryKey: [QueryKeys.USER, id], - queryFn: async () => getUser(id), - }); -}; diff --git a/src/hooks/queries/users/useUserQuestions.ts b/src/hooks/queries/users/useUserQuestions.ts deleted file mode 100644 index b0e528596..000000000 --- a/src/hooks/queries/users/useUserQuestions.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Question } from '@prisma/client'; -import { useQuery } from '@tanstack/react-query'; -import axios, { AxiosError } from 'axios'; - -import { QueryKeys, Routes } from '@/utils'; - -const getUserQuestions = async (userId: string) => { - const { data } = await axios.get(Routes.API.QUESTIONS, { - params: { userId }, - }); - return data; -}; - -type QuestionWithNodeId = Question & { - node: { - id: string; - }; -}; - -export const useUserQuestions = (userId: string) => { - const query = useQuery({ - queryKey: [QueryKeys.QUESTIONS, userId], - queryFn: () => getUserQuestions(userId), - }); - return query; -}; diff --git a/src/hooks/queries/users/useUsers.ts b/src/hooks/queries/users/useUsers.ts deleted file mode 100644 index 07bc67759..000000000 --- a/src/hooks/queries/users/useUsers.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { useQuery } from '@tanstack/react-query'; - -import { getUsers } from '@/actions'; -import { QueryKeys } from '@/utils'; - -export const useUsers = (tenantId: string) => { - return useQuery({ - queryKey: [QueryKeys.USERS, tenantId], - queryFn: async () => getUsers(tenantId), - }); -}; diff --git a/src/hooks/queries/users/useUsersAnswers.ts b/src/hooks/queries/users/useUsersAnswers.ts deleted file mode 100644 index cacc9f1ff..000000000 --- a/src/hooks/queries/users/useUsersAnswers.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { useQuery } from '@tanstack/react-query'; -import axios, { AxiosError } from 'axios'; - -import { QueryKeys, Routes } from '@/utils'; - -const getUserAnswers = async (userId: string) => { - const { data } = await axios.get(Routes.API.ANSWERS, { - params: { userId }, - }); - return data; -}; - -export type NodeWithQuestionAndAnswer = { - id: string; - answer: { - text: string; - }; - question: { - id: string; - slug: string; - text: string; - }; -}; - -export const useUserAnswers = (userId: string) => { - const query = useQuery({ - queryKey: [QueryKeys.ANSWERS, userId], - queryFn: () => getUserAnswers(userId), - }); - return query; -}; diff --git a/src/hooks/queries/users/useUsersCount.ts b/src/hooks/queries/users/useUsersCount.ts deleted file mode 100644 index 324af0b77..000000000 --- a/src/hooks/queries/users/useUsersCount.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { useQuery } from '@tanstack/react-query'; -import axios, { AxiosError } from 'axios'; - -import { QueryKeys, Routes } from '@/utils'; - -const getUsersCount = async (tenantId: string) => { - const { data } = await axios.get(Routes.API.USERS.COUNT, { - params: { tenantId }, - }); - return data; -}; - -export const useUsersCount = (tenantId: string) => { - const query = useQuery({ - queryKey: [QueryKeys.USERS_COUNT, tenantId], - queryFn: () => getUsersCount(tenantId), - }); - return query; -}; From 355cc409bfee50e5198d2c9f7bbb715cc65ee3ac Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 15 Apr 2024 10:52:13 +0200 Subject: [PATCH 060/326] :sparkles: create user action --- src/actions/create-user/index.ts | 66 +++++++++++++++++++++++++++ src/actions/create-user/schema.ts | 10 ++++ src/actions/index.ts | 1 + src/modules/settings/users/Create.tsx | 15 +++--- 4 files changed, 86 insertions(+), 6 deletions(-) create mode 100644 src/actions/create-user/index.ts create mode 100644 src/actions/create-user/schema.ts diff --git a/src/actions/create-user/index.ts b/src/actions/create-user/index.ts new file mode 100644 index 000000000..5a6004759 --- /dev/null +++ b/src/actions/create-user/index.ts @@ -0,0 +1,66 @@ +'use server'; + +import { revalidatePath } from 'next/cache'; +import { getServerSession } from 'next-auth'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { createUserSchema } from './schema'; + +type CreateUserData = { + email: string; + role: string; + tenantId: string; + usersCount: string | number; +}; + +export async function createUser(formData: FormData) { + try { + if (!formData) { + return { error: 'Data not provided' }; + } + const data = Object.fromEntries(formData) as CreateUserData; + data.usersCount = Number(data.usersCount); + const session = await getServerSession(authOptions); + if (session) { + const result = createUserSchema.safeParse(data); + if (result.success === false) { + const errors = result.error.flatten().fieldErrors; + return { error: errors }; + } else { + const { email, role, usersCount, tenantId } = result.data; + const userExists = await prisma.user.findUnique({ + where: { email, tenantId }, + }); + if (userExists) return { error: 'User already exists' }; + if (typeof usersCount !== 'number') + return { error: 'Could not find the number of users' }; + const { plan } = await prisma.tenant.findUnique({ + where: { id: tenantId }, + select: { plan: true }, + }); + if ( + (plan === 'free' && usersCount >= 5) || + (plan === 'startup' && usersCount >= 100) + ) { + return { error: 'You reached the maximum number of users' }; + } + await prisma.user.create({ + data: { + email, + role, + tenantId, + }, + }); + } + } else { + return { error: 'Not signed in' }; + } + } catch (error) { + return { error: 'Error creating user' }; + } + revalidatePath('/settings'); + return { message: 'User created successfully' }; +} diff --git a/src/actions/create-user/schema.ts b/src/actions/create-user/schema.ts new file mode 100644 index 000000000..0072e6e02 --- /dev/null +++ b/src/actions/create-user/schema.ts @@ -0,0 +1,10 @@ +import { z } from 'zod'; + +const ROLE = ['user', 'admin', 'tenant'] as const; + +export const createUserSchema = z.object({ + email: z.string().trim().email({ message: 'Invalid email' }), + role: z.enum(ROLE), + tenantId: z.string().cuid2(), + usersCount: z.number().min(0), +}); diff --git a/src/actions/index.ts b/src/actions/index.ts index f4cbb3b62..6779df4e5 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -2,6 +2,7 @@ export * from './create-answer'; export * from './create-node'; export * from './create-tag'; export * from './create-tenant'; +export * from './create-user'; export * from './delete-tag'; export * from './delete-tenant'; export * from './get-integration'; diff --git a/src/modules/settings/users/Create.tsx b/src/modules/settings/users/Create.tsx index d4f91270f..9c0ff75ee 100644 --- a/src/modules/settings/users/Create.tsx +++ b/src/modules/settings/users/Create.tsx @@ -7,6 +7,7 @@ import { AtSign, PlusCircle } from 'lucide-react'; import { Controller, SubmitHandler, useForm } from 'react-hook-form'; import { z } from 'zod'; +import { createUser } from '@/actions'; import { Button, Dialog, @@ -28,7 +29,7 @@ import { SelectTrigger, SelectValue, } from '@/components'; -import { useCreateUser, useMediaQuery } from '@/hooks'; +import { useMediaQuery } from '@/hooks'; import { createUserClientSchema } from '@/lib'; type Props = { @@ -102,7 +103,6 @@ const Form = ({ tenantId }: Props) => { register, handleSubmit, control, - reset, formState: { errors, isValid, isSubmitting }, } = useForm({ resolver: zodResolver(createUserClientSchema), @@ -113,10 +113,13 @@ const Form = ({ tenantId }: Props) => { }, }); - const { mutate } = useCreateUser(tenantId, reset); - - const onSubmit: SubmitHandler = (values) => { - mutate(values); + const onSubmit: SubmitHandler = async (data) => { + const formData = new FormData(); + for (const key in data) { + formData.append(key, data[key]); + } + formData.append('tenantId', tenantId); + await createUser(formData); }; useEffect(() => { From baf8ea380b637c075a4448ed18a8e1e96e7ad534 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 15 Apr 2024 10:53:23 +0200 Subject: [PATCH 061/326] :sparkles: create users action --- src/actions/create-users/index.ts | 92 ++++++++++++++++++++++++ src/actions/create-users/schema.ts | 7 ++ src/actions/index.ts | 1 + src/modules/settings/users/FileInput.tsx | 19 ++--- 4 files changed, 111 insertions(+), 8 deletions(-) create mode 100644 src/actions/create-users/index.ts create mode 100644 src/actions/create-users/schema.ts diff --git a/src/actions/create-users/index.ts b/src/actions/create-users/index.ts new file mode 100644 index 000000000..4b3a367d8 --- /dev/null +++ b/src/actions/create-users/index.ts @@ -0,0 +1,92 @@ +'use server'; + +import { revalidatePath } from 'next/cache'; +import { getServerSession } from 'next-auth'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { createUsersSchema } from './schema'; + +type CreateUsersData = { + tenantId: string; + usersCount: string | number; +}; + +export async function createUsers(newUsersArray, formData) { + try { + if (!formData) { + return { error: 'Data not provided' }; + } + const data = Object.fromEntries(formData) as CreateUsersData; + data.usersCount = Number(data.usersCount); + const session = await getServerSession(authOptions); + if (session) { + const result = createUsersSchema.safeParse({ ...data, newUsersArray }); + if (result.success === false) { + const errors = result.error.flatten().fieldErrors; + return { error: errors }; + } else { + const { newUsersArray, usersCount, tenantId } = result.data; + const errors = []; + for (const email of newUsersArray) { + if (!email) { + errors.push({ + email, + message: 'Empty email, skipping user creation', + }); + continue; + } + const userExists = await prisma.user.findUnique({ + where: { email, tenantId }, + }); + if (userExists) { + errors.push({ + email, + message: 'User already exists', + }); + continue; + } + if (!usersCount) { + errors.push({ + email, + message: 'Could not find the number of users', + }); + continue; + } + const { plan } = await prisma.tenant.findUnique({ + where: { id: tenantId }, + select: { plan: true }, + }); + if ( + (plan === 'free' && usersCount >= 5) || + (plan === 'startup' && usersCount >= 100) + ) { + errors.push({ + email, + message: 'You reached the maximum number of users.', + }); + continue; + } + await prisma.user.create({ + data: { + email, + role: 'user', + tenantId, + }, + }); + } + if (errors.length > 0) { + return { message: 'Some users could not be created' }; + } + } + } else { + return { error: 'Not signed in' }; + } + } catch (error) { + return { error: 'Error creating users' }; + } + revalidatePath('/settings'); + return { message: 'Users created successfully' }; +} diff --git a/src/actions/create-users/schema.ts b/src/actions/create-users/schema.ts new file mode 100644 index 000000000..28b7b3765 --- /dev/null +++ b/src/actions/create-users/schema.ts @@ -0,0 +1,7 @@ +import { z } from 'zod'; + +export const createUsersSchema = z.object({ + tenantId: z.string().cuid2(), + usersCount: z.number().min(0), + newUsersArray: z.array(z.string().email()).optional(), +}); diff --git a/src/actions/index.ts b/src/actions/index.ts index 6779df4e5..7aea68dd9 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -3,6 +3,7 @@ export * from './create-node'; export * from './create-tag'; export * from './create-tenant'; export * from './create-user'; +export * from './create-users'; export * from './delete-tag'; export * from './delete-tenant'; export * from './get-integration'; diff --git a/src/modules/settings/users/FileInput.tsx b/src/modules/settings/users/FileInput.tsx index 8c7fd1bd6..29d5c7bec 100644 --- a/src/modules/settings/users/FileInput.tsx +++ b/src/modules/settings/users/FileInput.tsx @@ -9,6 +9,7 @@ import { SubmitHandler, useForm } from 'react-hook-form'; import { usePapaParse } from 'react-papaparse'; import { z } from 'zod'; +import { createUsers } from '@/actions'; import { Button, Dialog, @@ -25,25 +26,26 @@ import { DrawerTrigger, Input, } from '@/components'; -import { useCreateUsers, useMediaQuery } from '@/hooks'; +import { useMediaQuery } from '@/hooks'; import { csvUploadClientSchema } from '@/lib'; type Props = { tenantId: string; users: User[]; plan: $Enums.Plan; + usersCount: number; }; type Schema = z.infer; -export const FileInput = ({ tenantId, users, plan }: Props) => { +export const FileInput = ({ tenantId, users, plan, usersCount }: Props) => { const isDesktop = useMediaQuery('(min-width: 640px)'); - const [file, setFile] = useState(); + const [file, setFile] = useState(null); const [fileName, setFileName] = useState(''); const [csvData, setCsvData] = useState([]); const [disabled, setDisabled] = useState(true); - const [newUsers, setNewUsers] = useState(); + const [newUsers, setNewUsers] = useState([]); const [limit, setLimit] = useState(5 - users.length); const fileInput = useRef(null); const { readRemoteFile } = usePapaParse(); @@ -102,14 +104,15 @@ export const FileInput = ({ tenantId, users, plan }: Props) => { }); }; - const { mutate } = useCreateUsers(tenantId, newUsersArray); - const onFileSubmit: SubmitHandler = (values) => { handleFileSubmit(values.name); }; - const onSubmit = () => { - mutate(); + const onSubmit = async () => { + const formData = new FormData(); + formData.append('tenantId', tenantId); + formData.append('usersCount', String(usersCount)); + await createUsers(newUsersArray, formData); }; useEffect(() => { From 56b7a8cc31d2c2a54fa79641d28cdc35552682df Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 15 Apr 2024 10:53:56 +0200 Subject: [PATCH 062/326] :art: pass usersCount as props --- src/app/settings/settings.tsx | 1 + src/modules/settings/users/Create.tsx | 10 ++++++---- src/modules/settings/users/Users.tsx | 12 +++++++++--- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/app/settings/settings.tsx b/src/app/settings/settings.tsx index bb277c169..c581798b1 100644 --- a/src/app/settings/settings.tsx +++ b/src/app/settings/settings.tsx @@ -90,6 +90,7 @@ export default function Settings({ diff --git a/src/modules/settings/users/Create.tsx b/src/modules/settings/users/Create.tsx index 9c0ff75ee..b9fb89267 100644 --- a/src/modules/settings/users/Create.tsx +++ b/src/modules/settings/users/Create.tsx @@ -34,11 +34,12 @@ import { createUserClientSchema } from '@/lib'; type Props = { tenantId: string; + usersCount: number; }; type Schema = z.infer; -export const CreateUser = ({ tenantId }: Props) => { +export const CreateUser = ({ tenantId, usersCount }: Props) => { const isDesktop = useMediaQuery('(min-width: 640px)'); if (isDesktop) { @@ -62,7 +63,7 @@ export const CreateUser = ({ tenantId }: Props) => { New user -
    + ); @@ -89,14 +90,14 @@ export const CreateUser = ({ tenantId }: Props) => { New user - +

    ); }; -const Form = ({ tenantId }: Props) => { +const Form = ({ tenantId, usersCount }: Props) => { const [disabled, setDisabled] = useState(true); const { @@ -120,6 +121,7 @@ const Form = ({ tenantId }: Props) => { } formData.append('tenantId', tenantId); await createUser(formData); + formData.append('usersCount', String(usersCount)); }; useEffect(() => { diff --git a/src/modules/settings/users/Users.tsx b/src/modules/settings/users/Users.tsx index aaf5b5937..f8b22b8e9 100644 --- a/src/modules/settings/users/Users.tsx +++ b/src/modules/settings/users/Users.tsx @@ -14,9 +14,10 @@ type Props = { tenantId: string; plan: $Enums.Plan; users: User[] | null; + usersCount: number; }; -export const Users = ({ userId, tenantId, plan, users }: Props) => { +export const Users = ({ userId, tenantId, plan, users, usersCount }: Props) => { const { mutate, isPending: isUserLoading } = useDeleteUser(tenantId); const handleDeleteUser = (id: string) => { @@ -62,13 +63,18 @@ export const Users = ({ userId, tenantId, plan, users }: Props) => {
    ))} - +

    or

    - + ); }; From 5f878aa0e74c6634fa83facb7bead38a879e1e65 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 15 Apr 2024 10:54:36 +0200 Subject: [PATCH 063/326] :safety_vest: modify schema for create user --- src/lib/validations/user.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/lib/validations/user.ts b/src/lib/validations/user.ts index 6b4fe4445..d548c0932 100644 --- a/src/lib/validations/user.ts +++ b/src/lib/validations/user.ts @@ -13,8 +13,16 @@ export const userRoleClientSchema = z.object({ role: z.enum(['user', 'admin', 'tenant']).optional(), }); -export const createUserClientSchema = - userEmailClientSchema.merge(userRoleClientSchema); +export const createUserClientSchema = z.object({ + email: z + .string() + .trim() + .min(1, { message: 'User email is required' }) + .email({ message: 'Invalid email' }) + .optional(), + role: z.enum(['user', 'admin', 'tenant']).optional(), + usersCount: z.number().min(0), +}); export const updateUserClientSchema = createUserClientSchema.merge( z.object({ From 2a88ee06d04c492c2d19467e2b44fc1c93443895 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 15 Apr 2024 10:59:28 +0200 Subject: [PATCH 064/326] :sparkles: delete user action --- src/actions/delete-user/index.ts | 43 ++++++++++++++++++++++++++++ src/actions/delete-user/schema.ts | 6 ++++ src/actions/index.ts | 1 + src/modules/settings/users/Users.tsx | 11 +++---- 4 files changed, 56 insertions(+), 5 deletions(-) create mode 100644 src/actions/delete-user/index.ts create mode 100644 src/actions/delete-user/schema.ts diff --git a/src/actions/delete-user/index.ts b/src/actions/delete-user/index.ts new file mode 100644 index 000000000..9f15c069e --- /dev/null +++ b/src/actions/delete-user/index.ts @@ -0,0 +1,43 @@ +'use server'; + +import { revalidatePath } from 'next/cache'; +import { getServerSession } from 'next-auth'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { deleteUserSchema } from './schema'; + +type DeleteUserData = { + id: string; + tenantId: string; +}; + +export async function deleteUser(formData: FormData) { + try { + if (!formData) { + return { error: 'Data not provided' }; + } + const data = Object.fromEntries(formData) as DeleteUserData; + const session = await getServerSession(authOptions); + if (session) { + const result = deleteUserSchema.safeParse(data); + if (result.success === false) { + const errors = result.error.flatten().fieldErrors; + return { error: errors }; + } else { + const { id, tenantId } = result.data; + await prisma.user.delete({ + where: { id, tenantId }, + }); + } + } else { + return { error: 'Not signed in' }; + } + } catch (error) { + return { error: 'Error deleting tag' }; + } + revalidatePath('/settings'); + return { message: 'Tag deleted successfully' }; +} diff --git a/src/actions/delete-user/schema.ts b/src/actions/delete-user/schema.ts new file mode 100644 index 000000000..e1951db1c --- /dev/null +++ b/src/actions/delete-user/schema.ts @@ -0,0 +1,6 @@ +import { z } from 'zod'; + +export const deleteUserSchema = z.object({ + tenantId: z.string().cuid2(), + id: z.string().cuid2(), +}); diff --git a/src/actions/index.ts b/src/actions/index.ts index 7aea68dd9..85526ce81 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -6,6 +6,7 @@ export * from './create-user'; export * from './create-users'; export * from './delete-tag'; export * from './delete-tenant'; +export * from './delete-user'; export * from './get-integration'; export * from './get-me'; export * from './get-node'; diff --git a/src/modules/settings/users/Users.tsx b/src/modules/settings/users/Users.tsx index f8b22b8e9..388e77541 100644 --- a/src/modules/settings/users/Users.tsx +++ b/src/modules/settings/users/Users.tsx @@ -2,8 +2,8 @@ import { $Enums, User } from '@prisma/client'; +import { deleteUser } from '@/actions'; import { Avatar, AvatarFallback, AvatarImage, Button } from '@/components'; -import { useDeleteUser } from '@/hooks'; import { CreateUser } from './Create'; import { FileInput } from './FileInput'; @@ -18,10 +18,11 @@ type Props = { }; export const Users = ({ userId, tenantId, plan, users, usersCount }: Props) => { - const { mutate, isPending: isUserLoading } = useDeleteUser(tenantId); - - const handleDeleteUser = (id: string) => { - mutate({ id }); + const handleDeleteUser = async (id: string) => { + const formData = new FormData(); + formData.append('id', id); + formData.append('tenantId', tenantId); + await deleteUser(formData); }; return ( From 704e40ff4e736ca3df3a2ce87e44cfab90a88709 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 15 Apr 2024 11:01:07 +0200 Subject: [PATCH 065/326] :truck: move queries hooks --- src/hooks/queries/index.ts | 8 ----- src/hooks/queries/useUpsertFiles.ts | 53 +++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 8 deletions(-) create mode 100644 src/hooks/queries/useUpsertFiles.ts diff --git a/src/hooks/queries/index.ts b/src/hooks/queries/index.ts index 000579838..0b84edbd8 100644 --- a/src/hooks/queries/index.ts +++ b/src/hooks/queries/index.ts @@ -1,9 +1 @@ -export * from './answer'; -export * from './auth'; -export * from './integrations'; -export * from './nodes'; -export * from './search'; export * from './stripe'; -export * from './tags'; -export * from './tenant'; -export * from './users'; diff --git a/src/hooks/queries/useUpsertFiles.ts b/src/hooks/queries/useUpsertFiles.ts new file mode 100644 index 000000000..8582196d8 --- /dev/null +++ b/src/hooks/queries/useUpsertFiles.ts @@ -0,0 +1,53 @@ +import { useMutation, useQueryClient } from '@tanstack/react-query'; +import axios from 'axios'; +import { v4 as uuid } from 'uuid'; +import { z } from 'zod'; + +import { promiseToast } from '@/components'; +import { filesClientSchema } from '@/lib'; +import { QueryKeys, Routes } from '@/utils'; + +type Schema = z.infer; + +const upsertFiles = async (values: Schema, id: string) => { + try { + const { logo: file } = values; + const randomId = uuid(); + const filename = encodeURIComponent(randomId + file.name); + const { data: signedData } = await axios.post( + `${Routes.API.STORAGE.LOGO}?file=${filename}`, + ); + const { url, fields } = signedData; + const formData = new FormData(); + Object.entries({ ...fields, file }).forEach(([key, value]) => { + formData.append(key, value as string | Blob); + }); + await axios.post(url, formData); + const body = { + logoUrl: url + 'logos/' + filename, + filename, + }; + const { data } = await axios.put(`${Routes.API.TENANT.LOGO}/${id}`, body); + return data; + } catch (error) { + throw error; + } +}; + +export const useUpsertFiles = (id: string) => { + const queryClient = useQueryClient(); + const upsertFilesMutation = async (values: Schema) => { + const promise = upsertFiles(values, id); + promiseToast(promise, 'Uploading files...'); + return promise; + }; + const mutation = useMutation({ + mutationFn: upsertFilesMutation, + onSuccess: () => { + queryClient.invalidateQueries({ + queryKey: [QueryKeys.TENANT, id], + }); + }, + }); + return mutation; +}; From da873230198576993c109f516ca6506074df44d7 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 15 Apr 2024 12:06:10 +0200 Subject: [PATCH 066/326] :art: move role and plan enums in constants --- src/actions/create-tag/schema.ts | 4 +++- src/actions/create-user/schema.ts | 2 +- src/actions/update-user/schema.ts | 2 +- src/lib/validations/user.ts | 6 ++++-- src/utils/constants.ts | 2 ++ 5 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/actions/create-tag/schema.ts b/src/actions/create-tag/schema.ts index d055ce244..b634ba619 100644 --- a/src/actions/create-tag/schema.ts +++ b/src/actions/create-tag/schema.ts @@ -1,8 +1,10 @@ import { z } from 'zod'; +import { PLAN } from '@/utils'; + export const createTagSchema = z.object({ label: z.string().trim().min(1, { message: 'Tag name is required' }), tenantId: z.string().cuid2(), - plan: z.enum(['free', 'startup', 'enterprise']), + plan: z.enum(PLAN), tagsCount: z.number().min(0), }); diff --git a/src/actions/create-user/schema.ts b/src/actions/create-user/schema.ts index 0072e6e02..46aba0b9b 100644 --- a/src/actions/create-user/schema.ts +++ b/src/actions/create-user/schema.ts @@ -1,6 +1,6 @@ import { z } from 'zod'; -const ROLE = ['user', 'admin', 'tenant'] as const; +import { ROLE } from '@/utils'; export const createUserSchema = z.object({ email: z.string().trim().email({ message: 'Invalid email' }), diff --git a/src/actions/update-user/schema.ts b/src/actions/update-user/schema.ts index 7a24a2d8d..29f411404 100644 --- a/src/actions/update-user/schema.ts +++ b/src/actions/update-user/schema.ts @@ -1,6 +1,6 @@ import { z } from 'zod'; -const ROLE = ['user', 'admin', 'tenant'] as const; +import { ROLE } from '@/utils'; export const updateUserSchema = z.object({ tenantId: z.string().cuid2(), diff --git a/src/lib/validations/user.ts b/src/lib/validations/user.ts index d548c0932..59d98d3d0 100644 --- a/src/lib/validations/user.ts +++ b/src/lib/validations/user.ts @@ -1,5 +1,7 @@ import { z } from 'zod'; +import { ROLE } from '@/utils'; + export const userEmailClientSchema = z.object({ email: z .string() @@ -10,7 +12,7 @@ export const userEmailClientSchema = z.object({ }); export const userRoleClientSchema = z.object({ - role: z.enum(['user', 'admin', 'tenant']).optional(), + role: z.enum(ROLE).optional(), }); export const createUserClientSchema = z.object({ @@ -20,7 +22,7 @@ export const createUserClientSchema = z.object({ .min(1, { message: 'User email is required' }) .email({ message: 'Invalid email' }) .optional(), - role: z.enum(['user', 'admin', 'tenant']).optional(), + role: z.enum(ROLE).optional(), usersCount: z.number().min(0), }); diff --git a/src/utils/constants.ts b/src/utils/constants.ts index 32cbbf348..c5a1122df 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -7,3 +7,5 @@ export const ACCEPTED_IMAGE_TYPES = [ 'image/webp', 'image/svg', ]; +export const ROLE = ['user', 'admin', 'tenant'] as const; +export const PLAN = ['free', 'startup', 'enterprise'] as const; From 843928685beb9901b74f14a481a2e6c20eb90bd5 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 15 Apr 2024 12:10:47 +0200 Subject: [PATCH 067/326] :fire: remove error fallback and wrapper --- src/components/error/ErrorFallback.tsx | 60 -------------------------- src/components/error/index.ts | 1 - src/components/index.ts | 1 - src/lib/ErrorBoundary.tsx | 33 -------------- src/lib/index.ts | 1 - 5 files changed, 96 deletions(-) delete mode 100644 src/components/error/ErrorFallback.tsx delete mode 100644 src/components/error/index.ts delete mode 100644 src/lib/ErrorBoundary.tsx diff --git a/src/components/error/ErrorFallback.tsx b/src/components/error/ErrorFallback.tsx deleted file mode 100644 index bc6aa3c63..000000000 --- a/src/components/error/ErrorFallback.tsx +++ /dev/null @@ -1,60 +0,0 @@ -import React, { HTMLAttributes, forwardRef } from 'react'; - -import { VariantProps, cva } from 'class-variance-authority'; - -import { cn } from '@/utils'; - -import { Button } from '../button'; - -const errorVariants = cva('error', { - variants: { - fallbackType: { - item: ['h-8 w-8'], - page: ['h-16 w-16'], - screen: ['h-screen w-screen'], - }, - }, -}); - -export interface ErrorProps - extends HTMLAttributes, - VariantProps { - resetErrorBoundary: () => void; - error: Error; -} - -export const ErrorFallback = forwardRef( - ({ fallbackType, resetErrorBoundary, error }, ref) => { - return ( -
    -

    Something went wrong

    -
    -

    - UI: {fallbackType} -

    -

    - Message: {error.message} -

    -
    - -
    - ); - }, -); -ErrorFallback.displayName = 'ErrorFallback'; diff --git a/src/components/error/index.ts b/src/components/error/index.ts deleted file mode 100644 index 12bb8db1b..000000000 --- a/src/components/error/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './ErrorFallback'; diff --git a/src/components/index.ts b/src/components/index.ts index 779951eae..aa888565b 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -6,7 +6,6 @@ export * from './drawer'; export * from './dropdown'; export * from './editor'; export * from './email'; -export * from './error'; export * from './field'; export * from './input'; export * from './label'; diff --git a/src/lib/ErrorBoundary.tsx b/src/lib/ErrorBoundary.tsx deleted file mode 100644 index 6a71b0195..000000000 --- a/src/lib/ErrorBoundary.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import { FC, ReactNode } from 'react'; - -import { - QueryErrorResetBoundary, - useQueryErrorResetBoundary, -} from '@tanstack/react-query'; -import { ErrorBoundary, FallbackProps } from 'react-error-boundary'; - -import { ErrorFallback, ErrorProps } from '@/components'; - -type Props = { - children: ReactNode; - errorFallbackType: ErrorProps['fallbackType']; -}; - -export const ErrorBoundaryWrapper: FC = ({ - children, - errorFallbackType, -}) => { - const { reset } = useQueryErrorResetBoundary(); - - const fallbackRender = (fallbackProps: FallbackProps) => ( - - ); - - return ( - - - {children} - - - ); -}; diff --git a/src/lib/index.ts b/src/lib/index.ts index f4e850d10..a975e9c06 100644 --- a/src/lib/index.ts +++ b/src/lib/index.ts @@ -1,3 +1,2 @@ -export * from './ErrorBoundary'; export * from './SuspenseWrapper'; export * from './validations'; From 69281316f4a2da98b081ce45e09a33469f238b83 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 15 Apr 2024 12:11:26 +0200 Subject: [PATCH 068/326] :art: create loading page and remove use of suspense in page file --- src/app/settings/loading.tsx | 5 +++++ src/app/settings/page.tsx | 35 ++++++++++++++++------------------- src/app/settings/settings.tsx | 29 ++++++++++++----------------- 3 files changed, 33 insertions(+), 36 deletions(-) create mode 100644 src/app/settings/loading.tsx diff --git a/src/app/settings/loading.tsx b/src/app/settings/loading.tsx new file mode 100644 index 000000000..d92a3834f --- /dev/null +++ b/src/app/settings/loading.tsx @@ -0,0 +1,5 @@ +import { Loader } from '@/components'; + +export default function Loading() { + return ; +} diff --git a/src/app/settings/page.tsx b/src/app/settings/page.tsx index 52b197210..a27796582 100644 --- a/src/app/settings/page.tsx +++ b/src/app/settings/page.tsx @@ -10,7 +10,6 @@ import { getUsers, getUsersCount, } from '@/actions'; -import { SuspenseWrapper } from '@/lib'; import { Footer, Header } from '@/modules'; import { Routes } from '@/utils'; @@ -33,23 +32,21 @@ export default async function Page() { const users = await getUsers(tenantId); return ( - -
    -
    -
    - -
    -
    -
    -
    +
    +
    +
    + +
    +
    +
    ); } diff --git a/src/app/settings/settings.tsx b/src/app/settings/settings.tsx index c581798b1..f7fed5f63 100644 --- a/src/app/settings/settings.tsx +++ b/src/app/settings/settings.tsx @@ -1,7 +1,6 @@ import { Integrations, Tag, Tenant, User } from '@prisma/client'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components'; -import { SuspenseWrapper } from '@/lib'; import { General, Payment, Tags, Users } from '@/modules'; import { Me } from '@/types'; @@ -67,24 +66,20 @@ export default function Settings({ )} - - - + - - - + Date: Mon, 15 Apr 2024 12:52:45 +0200 Subject: [PATCH 069/326] :lipstick: create better loading page --- src/app/loading.tsx | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/app/loading.tsx b/src/app/loading.tsx index d92a3834f..a20f342be 100644 --- a/src/app/loading.tsx +++ b/src/app/loading.tsx @@ -1,5 +1,23 @@ -import { Loader } from '@/components'; - export default function Loading() { - return ; + return ( +
    +
    +

    FAQMaker

    +
    +
    +
      +
    • +
      +
    • +
    • +
    • +
    • +
    • +
    +
    +
    +

    FAQMaker

    +
    +
    + ); } From e076c092f7fca42a6389003692cd9355718d4d69 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 15 Apr 2024 12:54:05 +0200 Subject: [PATCH 070/326] :wastebasket: comment search functionality before migration to server action --- src/app/home.tsx | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/app/home.tsx b/src/app/home.tsx index b7d13084b..620a2d3de 100644 --- a/src/app/home.tsx +++ b/src/app/home.tsx @@ -6,7 +6,7 @@ import { Tag } from '@prisma/client'; import { useSearchParams } from 'next/navigation'; import { Pagination } from '@/components'; -import { useSearchNodes, useSearchTags } from '@/hooks'; +// import { useSearchNodes, useSearchTags } from '@/hooks'; import { List, Search } from '@/modules'; import { ExtendedNode, Me } from '@/types'; import { OFFSET } from '@/utils'; @@ -29,26 +29,26 @@ export default function Home({ me, initialNodes, nodesCount, tags }: Props) { let nodes: ExtendedNode[] = []; let message = 'Ask a question'; - const { data: filteredNodes, isLoading: isSearchLoading } = useSearchNodes( - me.tenantId, - searchQuery, - ); - const { data: filteredTags } = useSearchTags(me.tenantId, searchTag); + // const { data: filteredNodes, isLoading: isSearchLoading } = useSearchNodes( + // me.tenantId, + // searchQuery, + // ); + // const { data: filteredTags } = useSearchTags(me.tenantId, searchTag); if (searchQuery) { - if (filteredNodes && filteredNodes.length > 0) { - nodes = filteredNodes; - } else { - nodes = []; - message = 'No results'; - } - } else if (searchTag) { - if (filteredTags && filteredTags.length > 0) { - nodes = filteredTags; - } else { - nodes = []; - message = 'No results'; - } + // if (filteredNodes && filteredNodes.length > 0) { + // nodes = filteredNodes; + // } else { + // nodes = []; + // message = 'No results'; + // } + // } else if (searchTag) { + // if (filteredTags && filteredTags.length > 0) { + // nodes = filteredTags; + // } else { + // nodes = []; + // message = 'No results'; + // } } else { nodes = initialNodes ?? []; } From d731382cde3aa9daa7c5654c06c30c980538eaab Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 15 Apr 2024 15:30:42 +0200 Subject: [PATCH 071/326] :sparkles: signed logo and update logo server actions --- src/actions/get-signed-logo/index.ts | 56 ++++++++++++++++++++ src/actions/get-signed-logo/schema.ts | 5 ++ src/actions/index.ts | 2 + src/actions/update-logo/index.ts | 71 ++++++++++++++++++++++++++ src/actions/update-logo/schema.ts | 9 ++++ src/modules/settings/general/Files.tsx | 31 +++++++---- 6 files changed, 165 insertions(+), 9 deletions(-) create mode 100644 src/actions/get-signed-logo/index.ts create mode 100644 src/actions/get-signed-logo/schema.ts create mode 100644 src/actions/update-logo/index.ts create mode 100644 src/actions/update-logo/schema.ts diff --git a/src/actions/get-signed-logo/index.ts b/src/actions/get-signed-logo/index.ts new file mode 100644 index 000000000..f6f5977d4 --- /dev/null +++ b/src/actions/get-signed-logo/index.ts @@ -0,0 +1,56 @@ +'use server'; + +import { Storage } from '@google-cloud/storage'; +import { getServerSession } from 'next-auth'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; + +import 'server-only'; +import { upsertLogoSchema } from './schema'; + +const bucketName = 'faqmaker'; + +type SignedLogoData = { + logo: string; +}; + +export async function getSignedLogo(formData: FormData) { + try { + if (!formData) { + return { error: 'Data not provided' }; + } + const data = Object.fromEntries(formData) as SignedLogoData; + const session = await getServerSession(authOptions); + if (session) { + const result = upsertLogoSchema.safeParse(data); + if (result.success === false) { + const errors = result.error.flatten().fieldErrors; + return { error: errors }; + } else { + const { logo } = result.data; + const storage = new Storage({ + projectId: process.env.PROJECT_ID, + credentials: { + client_email: process.env.CLIENT_EMAIL, + private_key: process.env.PRIVATE_KEY.replace(/\\n/g, '\n'), + }, + }); + const bucket = storage.bucket(bucketName); + const file = bucket.file(`logos/${logo}`); + const options = { + expires: Date.now() + 1 * 60 * 1000, // 1 minute, + fields: { 'x-goog-meta-test': 'data' }, + }; + const [response] = await file.generateSignedPostPolicyV4(options); + return { + url: response.url, + fields: response.fields, + }; + } + } else { + return { error: 'Not signed in' }; + } + } catch (error) { + return { error: 'Error updating logo' }; + } +} diff --git a/src/actions/get-signed-logo/schema.ts b/src/actions/get-signed-logo/schema.ts new file mode 100644 index 000000000..b8ac0c3f8 --- /dev/null +++ b/src/actions/get-signed-logo/schema.ts @@ -0,0 +1,5 @@ +import { z } from 'zod'; + +export const upsertLogoSchema = z.object({ + logo: z.string().min(1, { message: 'Logo is required' }), +}); diff --git a/src/actions/index.ts b/src/actions/index.ts index 85526ce81..cf618b92f 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -14,6 +14,7 @@ export * from './get-nodes'; export * from './get-nodes-count'; export * from './get-search-nodes'; export * from './get-search-tags'; +export * from './get-signed-logo'; export * from './get-tags'; export * from './get-tags-count'; export * from './get-tenant'; @@ -23,6 +24,7 @@ export * from './get-user-questions'; export * from './get-users'; export * from './get-users-count'; export * from './update-answer'; +export * from './update-logo'; export * from './update-node'; export * from './update-tenant'; export * from './update-user'; diff --git a/src/actions/update-logo/index.ts b/src/actions/update-logo/index.ts new file mode 100644 index 000000000..b89294124 --- /dev/null +++ b/src/actions/update-logo/index.ts @@ -0,0 +1,71 @@ +'use server'; + +import { Storage } from '@google-cloud/storage'; +import { revalidatePath } from 'next/cache'; +import { redirect } from 'next/navigation'; +import { getServerSession } from 'next-auth'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import { Routes, bucketName } from '@/utils'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { updateLogoSchema } from './schema'; + +type UpdateLogoData = { + logoUrl: string; + id: string; +}; + +export async function updateLogo(formData: FormData) { + try { + if (!formData) { + return { error: 'Data not provided' }; + } + const data = Object.fromEntries(formData) as UpdateLogoData; + const session = await getServerSession(authOptions); + if (session) { + const result = updateLogoSchema.safeParse(data); + if (result.success === false) { + const errors = result.error.flatten().fieldErrors; + return { error: errors }; + } else { + const { logoUrl, id } = result.data; + const { logo: oldLogo } = await prisma.tenant.findUnique({ + where: { id }, + select: { + logo: true, + }, + }); + if (oldLogo) { + const storage = new Storage({ + projectId: process.env.PROJECT_ID, + credentials: { + client_email: process.env.CLIENT_EMAIL, + private_key: process.env.PRIVATE_KEY.replace(/\\n/g, '\n'), + }, + }); + const bucket = storage.bucket(bucketName); + const fileName = oldLogo.replace( + 'https://storage.googleapis.com/faqmaker/', + '', + ); + bucket.file(fileName).delete(); + } + await prisma.tenant.update({ + where: { id }, + data: { + logo: logoUrl, + }, + }); + } + } else { + return { error: 'Not signed in' }; + } + } catch (error) { + return { error: 'Error updating answer' }; + } + revalidatePath(Routes.SITE.HOME); + redirect(Routes.SITE.HOME); + return { message: 'Answer updated successfully' }; +} diff --git a/src/actions/update-logo/schema.ts b/src/actions/update-logo/schema.ts new file mode 100644 index 000000000..dbe9aa65a --- /dev/null +++ b/src/actions/update-logo/schema.ts @@ -0,0 +1,9 @@ +import { z } from 'zod'; + +export const updateLogoSchema = z.object({ + logoUrl: z + .string() + .url() + .regex(/^https:\/\/storage\.googleapis\.com\/faqmaker\/logos/), + id: z.string().cuid2(), +}); diff --git a/src/modules/settings/general/Files.tsx b/src/modules/settings/general/Files.tsx index 7ff956be3..5bdb25e20 100644 --- a/src/modules/settings/general/Files.tsx +++ b/src/modules/settings/general/Files.tsx @@ -8,10 +8,11 @@ import { Upload } from 'lucide-react'; import Image from 'next/image'; import Dropzone from 'react-dropzone'; import { Controller, SubmitHandler, useForm } from 'react-hook-form'; +import { v4 as uuid } from 'uuid'; import { z } from 'zod'; +import { getSignedLogo, updateLogo } from '@/actions'; import { Button } from '@/components'; -import { useUpsertFiles } from '@/hooks'; import { filesClientSchema } from '@/lib'; type Props = { @@ -23,7 +24,7 @@ type Schema = z.infer; export const Files = ({ tenant }: Props) => { const [disabled, setDisabled] = useState(true); const [previewImage, setPreviewImage] = useState(''); - const [file, setFile] = useState(); + const [file, setFile] = useState(null); const { handleSubmit, @@ -38,10 +39,24 @@ export const Files = ({ tenant }: Props) => { }, }); - const { mutate } = useUpsertFiles(tenant.id); - - const onSubmit: SubmitHandler = (values) => { - mutate(values); + const onSubmit: SubmitHandler = async (data) => { + const formData = new FormData(); + const randomId = uuid(); + const logo = encodeURIComponent(randomId + data.logo.name); + formData.append('logo', logo); + const { url, fields } = await getSignedLogo(formData); + formData.delete('logo'); + Object.entries({ ...fields, file }).forEach(([key, value]) => { + formData.append(key, value as string | Blob); + }); + await fetch(url, { method: 'POST', body: formData }); + formData.forEach((_value, key) => { + formData.delete(key); + }); + const logoUrl = url + 'logos/' + logo; + formData.append('logoUrl', logoUrl); + formData.append('id', tenant.id); + await updateLogo(formData); }; const handleReset = () => { @@ -52,8 +67,6 @@ export const Files = ({ tenant }: Props) => { useEffect(() => { setDisabled(isSubmitting || !isDirty || !isValid); - - // eslint-disable-next-line react-hooks/exhaustive-deps }, [isDirty, isSubmitting, isValid]); return ( @@ -98,7 +111,7 @@ export const Files = ({ tenant }: Props) => { {previewImage ? ( {file.name} Date: Mon, 15 Apr 2024 15:33:22 +0200 Subject: [PATCH 072/326] :recycle: use update user action --- src/modules/settings/users/Update.tsx | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/modules/settings/users/Update.tsx b/src/modules/settings/users/Update.tsx index 9f7642254..10a886994 100644 --- a/src/modules/settings/users/Update.tsx +++ b/src/modules/settings/users/Update.tsx @@ -8,6 +8,7 @@ import { AtSign, UserIcon } from 'lucide-react'; import { Controller, SubmitHandler, useForm } from 'react-hook-form'; import { z } from 'zod'; +import { updateUser } from '@/actions'; import { Button, Dialog, @@ -29,7 +30,7 @@ import { SelectTrigger, SelectValue, } from '@/components'; -import { useMediaQuery, useUpdateUser } from '@/hooks'; +import { useMediaQuery } from '@/hooks'; import { updateUserClientSchema } from '@/lib'; type Props = { @@ -110,10 +111,15 @@ const Form = ({ user, tenantId }: Props) => { role: user.role, }, }); - const { mutate } = useUpdateUser(user.id, tenantId); - const onSubmit: SubmitHandler = (values) => { - mutate(values); + const onSubmit: SubmitHandler = async (data) => { + const formData = new FormData(); + for (const key in data) { + formData.append(key, data[key]); + formData.append('id', user.id); + formData.append('tenantId', tenantId); + await updateUser(formData); + } }; useEffect(() => { From baa23dc64bfe72e6166d7441b2e2e3b7e8ce1fb6 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Tue, 16 Apr 2024 10:53:36 +0200 Subject: [PATCH 073/326] :fire: remove files that got migrated --- src/hooks/queries/useUpsertFiles.ts | 53 ------ src/old/_app.tsx | 73 --------- src/old/_error.tsx | 20 --- src/old/api/integrations/[id].ts | 51 ------ src/old/api/integrations/index.ts | 59 ------- src/old/api/integrations/slack/index.ts | 81 ---------- src/old/api/storage/logo.ts | 45 ------ src/old/index.tsx | 128 --------------- src/old/login.tsx | 82 ---------- src/old/profile.tsx | 74 --------- src/old/question/[id].tsx | 204 ------------------------ src/old/question/answer.tsx | 155 ------------------ src/old/question/edit.tsx | 173 -------------------- src/old/question/new.tsx | 165 ------------------- src/old/register/confirm.tsx | 132 --------------- src/old/register/index.tsx | 114 ------------- src/old/register/plan.tsx | 173 -------------------- src/old/register/user.tsx | 103 ------------ src/old/settings.tsx | 135 ---------------- 19 files changed, 2020 deletions(-) delete mode 100644 src/hooks/queries/useUpsertFiles.ts delete mode 100644 src/old/_app.tsx delete mode 100644 src/old/_error.tsx delete mode 100644 src/old/api/integrations/[id].ts delete mode 100644 src/old/api/integrations/index.ts delete mode 100644 src/old/api/integrations/slack/index.ts delete mode 100644 src/old/api/storage/logo.ts delete mode 100644 src/old/index.tsx delete mode 100644 src/old/login.tsx delete mode 100644 src/old/profile.tsx delete mode 100644 src/old/question/[id].tsx delete mode 100644 src/old/question/answer.tsx delete mode 100644 src/old/question/edit.tsx delete mode 100644 src/old/question/new.tsx delete mode 100644 src/old/register/confirm.tsx delete mode 100644 src/old/register/index.tsx delete mode 100644 src/old/register/plan.tsx delete mode 100644 src/old/register/user.tsx delete mode 100644 src/old/settings.tsx diff --git a/src/hooks/queries/useUpsertFiles.ts b/src/hooks/queries/useUpsertFiles.ts deleted file mode 100644 index 8582196d8..000000000 --- a/src/hooks/queries/useUpsertFiles.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { useMutation, useQueryClient } from '@tanstack/react-query'; -import axios from 'axios'; -import { v4 as uuid } from 'uuid'; -import { z } from 'zod'; - -import { promiseToast } from '@/components'; -import { filesClientSchema } from '@/lib'; -import { QueryKeys, Routes } from '@/utils'; - -type Schema = z.infer; - -const upsertFiles = async (values: Schema, id: string) => { - try { - const { logo: file } = values; - const randomId = uuid(); - const filename = encodeURIComponent(randomId + file.name); - const { data: signedData } = await axios.post( - `${Routes.API.STORAGE.LOGO}?file=${filename}`, - ); - const { url, fields } = signedData; - const formData = new FormData(); - Object.entries({ ...fields, file }).forEach(([key, value]) => { - formData.append(key, value as string | Blob); - }); - await axios.post(url, formData); - const body = { - logoUrl: url + 'logos/' + filename, - filename, - }; - const { data } = await axios.put(`${Routes.API.TENANT.LOGO}/${id}`, body); - return data; - } catch (error) { - throw error; - } -}; - -export const useUpsertFiles = (id: string) => { - const queryClient = useQueryClient(); - const upsertFilesMutation = async (values: Schema) => { - const promise = upsertFiles(values, id); - promiseToast(promise, 'Uploading files...'); - return promise; - }; - const mutation = useMutation({ - mutationFn: upsertFilesMutation, - onSuccess: () => { - queryClient.invalidateQueries({ - queryKey: [QueryKeys.TENANT, id], - }); - }, - }); - return mutation; -}; diff --git a/src/old/_app.tsx b/src/old/_app.tsx deleted file mode 100644 index 221ce1b18..000000000 --- a/src/old/_app.tsx +++ /dev/null @@ -1,73 +0,0 @@ -import '@/styles/globals.css'; -import { useState } from 'react'; - -import { - HydrationBoundary, - QueryClient, - QueryClientProvider, -} from '@tanstack/react-query'; -import { Inter, Merriweather } from 'next/font/google'; -import { SessionProvider } from 'next-auth/react'; -import { Toaster } from 'sonner'; - -import { ThemeProvider, TooltipProvider } from '@/components'; - -const merriweather = Merriweather({ - subsets: ['latin'], - weight: '400', - variable: '--font-merriweather', -}); -const inter = Inter({ - subsets: ['latin'], - weight: ['400', '600', '700'], - variable: '--font-inter', -}); - -function App({ Component, pageProps: { session, ...pageProps } }) { - const [queryClient] = useState( - () => - new QueryClient({ - defaultOptions: { - queries: { - gcTime: 60 * 1000, - staleTime: 60 * 1000, - retry: false, - throwOnError: true, - }, - }, - }), - ); - - return ( - - - - - - -
    - -
    -
    -
    -
    -
    -
    - ); -} - -export default App; diff --git a/src/old/_error.tsx b/src/old/_error.tsx deleted file mode 100644 index c5f35cc2f..000000000 --- a/src/old/_error.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import * as Sentry from '@sentry/nextjs'; -import Error from 'next/error'; - -import type { NextPage } from 'next'; -import type { ErrorProps } from 'next/error'; - -const CustomErrorComponent: NextPage = (props) => { - return ; -}; - -CustomErrorComponent.getInitialProps = async (contextData) => { - // In case this is running in a serverless function, await this in order to give Sentry - // time to send the error before the lambda exits - await Sentry.captureUnderscoreErrorException(contextData); - - // This will contain the status code of the response - return Error.getInitialProps(contextData); -}; - -export default CustomErrorComponent; diff --git a/src/old/api/integrations/[id].ts b/src/old/api/integrations/[id].ts deleted file mode 100644 index 674515f17..000000000 --- a/src/old/api/integrations/[id].ts +++ /dev/null @@ -1,51 +0,0 @@ -import { getToken } from 'next-auth/jwt'; - -import { getIdSchema } from '@/lib'; -import prisma from 'lib/prisma'; - -import type { NextApiRequest, NextApiResponse } from 'next'; - -export default async function handler( - req: NextApiRequest, - res: NextApiResponse, -) { - if (req.method === 'GET') { - try { - if (!req.query) { - return res - .status(404) - .json({ success: false, error: { message: `Tenant not found` } }); - } - const token = await getToken({ req }); - if (token) { - const result = getIdSchema.safeParse(req.query); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return res.status(422).json({ - success: false, - error: { message: 'Invalid request', errors }, - }); - } else { - const { id } = result.data; - const integrations = await prisma.integrations.findUnique({ - where: { tenantId: id as string }, - }); - return res.status(200).json(integrations); - } - } else { - return res.status(401).json({ - success: false, - error: { success: false, message: 'Not signed in' }, - }); - } - } catch (error) { - if (error instanceof Error) { - return res.status(404).json({ success: false, error: error.message }); - } - } - } else { - return res - .status(405) - .json({ success: false, error: { message: 'Method not allowed' } }); - } -} diff --git a/src/old/api/integrations/index.ts b/src/old/api/integrations/index.ts deleted file mode 100644 index 4d260d057..000000000 --- a/src/old/api/integrations/index.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { getToken } from 'next-auth/jwt'; - -import { createIntegrationServerSchema } from '@/lib'; -import prisma from 'lib/prisma'; - -import type { NextApiRequest, NextApiResponse } from 'next'; - -export default async function handler( - req: NextApiRequest, - res: NextApiResponse, -) { - if (req.method === 'POST') { - try { - if (!req.body) { - return res.status(404).json({ - success: false, - error: { message: `Form data not provided` }, - }); - } - const token = await getToken({ req }); - if (token) { - const result = createIntegrationServerSchema.safeParse(req.body); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return res.status(422).json({ - success: false, - error: { message: 'Invalid request', errors }, - }); - } else { - const { slack, tenantId } = result.data; - await prisma.integrations.upsert({ - where: { tenantId }, - update: { slack }, - create: { - slack, - tenantId, - }, - }); - return res.status(201).json({ - success: true, - message: 'Integrations updated successfully', - }); - } - } else { - return res - .status(401) - .json({ success: false, error: { message: 'Not signed in' } }); - } - } catch (error) { - if (error instanceof Error) { - return res.status(500).json({ success: false, error: error.message }); - } - } - } else { - return res - .status(405) - .json({ success: false, error: { message: 'Method not allowed' } }); - } -} diff --git a/src/old/api/integrations/slack/index.ts b/src/old/api/integrations/slack/index.ts deleted file mode 100644 index e07510a20..000000000 --- a/src/old/api/integrations/slack/index.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { IncomingWebhook } from '@slack/webhook'; -import { getToken } from 'next-auth/jwt'; - -import { slackIntegrationServerSchema } from '@/lib'; -import { dateOptions, timeOptions } from '@/utils'; - -import type { NextApiRequest, NextApiResponse } from 'next'; - -export default async function handler( - req: NextApiRequest, - res: NextApiResponse, -) { - if (req.method === 'POST') { - try { - if (!req.body) { - return res.status(404).json({ - success: false, - error: { message: `Form data not provided` }, - }); - } - const token = await getToken({ req }); - if (token) { - const result = slackIntegrationServerSchema.safeParse(req.body); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return res.status(422).json({ - success: false, - error: { message: 'Invalid request', errors }, - }); - } else { - const { url, text } = result.data; - const webhook = new IncomingWebhook(url); - await webhook.send({ - text, - blocks: [ - { - type: 'section', - text: { - type: 'mrkdwn', - text: `*${text}*`, - }, - }, - { - type: 'divider', - block_id: 'divider1', - }, - { - type: 'section', - text: { - type: 'mrkdwn', - text: `Asked on ${new Date().toLocaleDateString( - undefined, - dateOptions, - )} at ${new Date().toLocaleTimeString( - undefined, - timeOptions, - )}`, - }, - }, - ], - }); - return res - .status(200) - .json({ success: true, message: 'Question created successfully' }); - } - } else { - return res - .status(401) - .json({ success: false, error: { message: 'Not signed in' } }); - } - } catch (error) { - if (error instanceof Error) { - return res.status(500).json({ success: false, error: error.message }); - } - } - } else { - return res - .status(405) - .json({ success: false, error: { message: 'Method not allowed' } }); - } -} diff --git a/src/old/api/storage/logo.ts b/src/old/api/storage/logo.ts deleted file mode 100644 index f1bf97117..000000000 --- a/src/old/api/storage/logo.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { Storage } from '@google-cloud/storage'; -import { NextApiRequest, NextApiResponse } from 'next'; -import { getToken } from 'next-auth/jwt'; - -const bucketName = 'faqmaker'; - -export default async function handler( - req: NextApiRequest, - res: NextApiResponse, -) { - const token = await getToken({ req }); - if (req.method === 'POST') { - try { - if (token) { - const storage = new Storage({ - projectId: process.env.PROJECT_ID, - credentials: { - client_email: process.env.CLIENT_EMAIL, - private_key: process.env.PRIVATE_KEY.replace(/\\n/g, '\n'), - }, - }); - const bucket = storage.bucket(bucketName); - const file = bucket.file(`logos/${req.query.file as string}`); - const options = { - expires: Date.now() + 1 * 60 * 1000, // 1 minute, - fields: { 'x-goog-meta-test': 'data' }, - }; - const [response] = await file.generateSignedPostPolicyV4(options); - res.status(200).json(response); - } else { - return res - .status(401) - .json({ success: false, error: { message: 'Not signed in' } }); - } - } catch (error) { - if (error instanceof Error) { - return res.status(404).json({ success: false, error: error.message }); - } - } - } else { - return res - .status(405) - .json({ success: false, error: { message: 'Method not allowed' } }); - } -} diff --git a/src/old/index.tsx b/src/old/index.tsx deleted file mode 100644 index e03efb0ae..000000000 --- a/src/old/index.tsx +++ /dev/null @@ -1,128 +0,0 @@ -import { useEffect, useState } from 'react'; - -import { User } from '@prisma/client'; -import { QueryClient, dehydrate } from '@tanstack/react-query'; -import { GetServerSideProps } from 'next'; -import { useSearchParams } from 'next/navigation'; - -import { Pagination } from '@/components'; -import { - useNodes, - useNodesCount, - useSearchNodes, - useSearchTags, - useTags, -} from '@/hooks'; -import { getMe, getNodes, getNodesCount, getTags, ssrNcHandler } from '@/lib'; -import { List, Search } from '@/modules'; -import { ExtendedNode, Me } from '@/types'; -import { OFFSET, QueryKeys, Redirects } from '@/utils'; - -type Props = { - me: Me; -}; - -function Home({ me }: Props) { - const search = useSearchParams(); - const [searchQuery, setSearchQuery] = useState( - search.get('search') ?? null, - ); - const [searchTag, setSearchTag] = useState(null); - const [isLoading, setIsLoading] = useState(false); - const [page, setPage] = useState(0); - - let nodes: ExtendedNode[] = []; - let message = 'Ask a question'; - const { - data: initialNodes, - isPending, - isError, - error, - } = useNodes(me.tenantId, page); - const { data: filteredNodes, isLoading: isSearchLoading } = useSearchNodes( - me.tenantId, - searchQuery, - ); - const { data: filteredTags } = useSearchTags(me.tenantId, searchTag); - const { data: nodesCount, isPending: isNodesCountLoading } = useNodesCount( - me.tenantId, - ); - const { data: tags } = useTags(me.tenantId); - - if (searchQuery) { - if (filteredNodes && filteredNodes.length > 0) { - nodes = filteredNodes; - } else { - nodes = []; - message = 'No results'; - } - } else if (searchTag) { - if (filteredTags && filteredTags.length > 0) { - nodes = filteredTags; - } else { - nodes = []; - message = 'No results'; - } - } else { - nodes = initialNodes ?? []; - } - - useEffect(() => { - setIsLoading(isPending || isSearchLoading || isNodesCountLoading); - }, [isPending, isSearchLoading, isNodesCountLoading]); - - return ( - <> - - - {nodesCount > OFFSET && (nodes.length === OFFSET || page !== 0) && ( - - )} - - ); -} - -export default Home; - -export const getServerSideProps: GetServerSideProps = async ({ req, res }) => { - const callbackMe = async () => await getMe({ req }); - const me = await ssrNcHandler(req, res, callbackMe); - - if (!me) return Redirects.LOGIN; - - const queryClient = new QueryClient(); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.ME, me.id], - queryFn: () => me, - }); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.NODES, me.tenantId], - queryFn: () => getNodes(me.tenantId), - }); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.NODES_COUNT, me.tenantId], - queryFn: () => getNodesCount(me.tenantId), - }); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.TAGS, me.tenantId], - queryFn: () => getTags(me.tenantId), - }); - - return { - props: { - me: JSON.parse(JSON.stringify(me)), - dehydratedState: JSON.parse(JSON.stringify(dehydrate(queryClient))), - }, - }; -}; diff --git a/src/old/login.tsx b/src/old/login.tsx deleted file mode 100644 index 94b301f4b..000000000 --- a/src/old/login.tsx +++ /dev/null @@ -1,82 +0,0 @@ -import Image from 'next/image'; -import Link from 'next/link'; -import { useRouter } from 'next/navigation'; -import { signIn } from 'next-auth/react'; - -import googleIcon from '@/assets/google.svg'; -import { Button } from '@/components'; -import { Routes } from '@/utils'; - -function Login() { - const router = useRouter(); - const error = router.query.error as string; - - return ( -
    -
    -

    - Login -

    -

    Use your associated account

    -
    - - {error && } -

    - No client account ?{' '} - - Register - -

    -
    - ); -} - -export default Login; - -const errors = { - Signin: 'Try signing with a different account.', - OAuthSignin: 'Try signing with a different account.', - OAuthCallback: 'Try signing with a different account.', - OAuthCreateAccount: 'Try signing with a different account.', - EmailCreateAccount: 'Try signing with a different account.', - Callback: 'Try signing with a different account.', - OAuthAccountNotLinked: - 'To confirm your identity, sign in with the same account you used originally.', - EmailSignin: 'Check your email address.', - CredentialsSignin: - 'Sign in failed. Check the details you provided are correct.', - AccessDenied: 'User not found.', - default: 'Unable to sign in.', -}; - -type ErrorProps = { - error: string; -}; - -const LoginError = ({ error }: ErrorProps) => { - const errorMessage = error && (errors[error] ?? errors.default); - return
    {errorMessage}
    ; -}; diff --git a/src/old/profile.tsx b/src/old/profile.tsx deleted file mode 100644 index 1c72a7de6..000000000 --- a/src/old/profile.tsx +++ /dev/null @@ -1,74 +0,0 @@ -import { User } from '@prisma/client'; -import { QueryClient, dehydrate } from '@tanstack/react-query'; -import { GetServerSideProps } from 'next'; - -import { useUserAnswers, useUserQuestions } from '@/hooks'; -import { getMe, getUserAnswers, getUserQuestions, ssrNcHandler } from '@/lib'; -import { UpdateProfile, UserAnswers, UserQuestions } from '@/modules'; -import { Me } from '@/types'; -import { QueryKeys, Redirects } from '@/utils'; - -type Props = { - me: Me; -}; - -function Profile({ me }: Props) { - const { data: questions, isPending: isQuestionsLoading } = useUserQuestions( - me.id, - ); - const { data: answers, isPending: isAnswersLoading } = useUserAnswers(me.id); - - const sections = [ - { component: }, - { - component: ( - - ), - }, - { component: }, - ]; - - return ( -
    - {sections.map((section, index) => ( -
    {section.component}
    - ))} -
    - ); -} - -export default Profile; - -const Section = ({ children }) => ( -
    - {children} -
    -); - -export const getServerSideProps: GetServerSideProps = async ({ req, res }) => { - const callbackMe = async () => await getMe({ req }); - const me = await ssrNcHandler(req, res, callbackMe); - - if (!me) return Redirects.LOGIN; - - const queryClient = new QueryClient(); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.ME, me.id], - queryFn: () => me, - }); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.QUESTIONS, me.id], - queryFn: () => getUserQuestions(me.id), - }); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.ANSWERS, me.id], - queryFn: () => getUserAnswers(me.id), - }); - - return { - props: { - me: JSON.parse(JSON.stringify(me)), - dehydratedState: JSON.parse(JSON.stringify(dehydrate(queryClient))), - }, - }; -}; diff --git a/src/old/question/[id].tsx b/src/old/question/[id].tsx deleted file mode 100644 index c68040064..000000000 --- a/src/old/question/[id].tsx +++ /dev/null @@ -1,204 +0,0 @@ -import { User } from '@prisma/client'; -import { QueryClient, dehydrate } from '@tanstack/react-query'; -import { HelpCircle, LinkIcon, PenSquare } from 'lucide-react'; -import { GetServerSideProps } from 'next'; -import dynamic from 'next/dynamic'; -import Link from 'next/link'; -import { useRouter } from 'next/navigation'; - -import { - BackButton, - Badge, - DropdownMenu, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuTrigger, - Loader, - Tooltip, - TooltipContent, - TooltipTrigger, -} from '@/components'; -import { useNode } from '@/hooks'; -import { getMe, getNode, ssrNcHandler } from '@/lib'; -import { Me } from '@/types'; -import { QueryKeys, Redirects, Routes, dateOptions } from '@/utils'; -const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { - ssr: false, -}); - -type Props = { - me: Me; - id: string; -}; - -function QuestionPage({ me, id }: Props) { - const { data: node, isPending } = useNode(me.tenantId, id as string); - const { asPath } = useRouter(); - - return isPending ? ( - - ) : ( -
    -
    - - - - Edit - - - - - - Question - - - - - - Answer - - - - -
    -
    -
      - {node.tags.map((tag) => ( -
    • - - {tag.label} - -
    • - ))} -
    -
    -

    {node.question.text}

    - - - - - Copy url - -
    -
    - {node.answer ? ( - - ) : ( -

    No answer

    - )} -
    -
    -
    -

    - Asked by {node.question.user.name} -

    -

    - Asked on{' '} - - {new Date(node.question.createdAt).toLocaleDateString( - undefined, - dateOptions, - )} - -

    -

    - Updated on{' '} - - {new Date(node.question.updatedAt).toLocaleDateString( - undefined, - dateOptions, - )} - -

    -
    - {node.answer && ( -
    -

    - Answered by {node.answer.user.name} -

    -

    - Answered on{' '} - - {new Date(node.answer.createdAt).toLocaleDateString( - undefined, - dateOptions, - )} - -

    -

    - Updated on{' '} - - {new Date(node.answer.updatedAt).toLocaleDateString( - undefined, - dateOptions, - )} - -

    -
    - )} -
    -
    -
    - ); -} - -export default QuestionPage; - -export const getServerSideProps: GetServerSideProps = async ({ - req, - res, - query, -}) => { - const { id } = query; - const callbackMe = async () => await getMe({ req }); - const me = await ssrNcHandler(req, res, callbackMe); - - if (!me) return Redirects.LOGIN; - - const queryClient = new QueryClient(); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.ME, me.id], - queryFn: () => me, - }); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.NODE, me.tenantId, id], - queryFn: () => getNode(me.tenantId, id as string), - }); - - return { - props: { - id, - me: JSON.parse(JSON.stringify(me)), - dehydratedState: JSON.parse(JSON.stringify(dehydrate(queryClient))), - }, - }; -}; diff --git a/src/old/question/answer.tsx b/src/old/question/answer.tsx deleted file mode 100644 index 3a46ad16e..000000000 --- a/src/old/question/answer.tsx +++ /dev/null @@ -1,155 +0,0 @@ -import { useEffect, useState } from 'react'; - -import { zodResolver } from '@hookform/resolvers/zod'; -import { User } from '@prisma/client'; -import { QueryClient, dehydrate } from '@tanstack/react-query'; -import { GetServerSideProps } from 'next'; -import { useRouter } from 'next/navigation'; -import { Controller, SubmitHandler, useForm } from 'react-hook-form'; -import { z } from 'zod'; - -import { BackButton, Button, Editor, Loader } from '@/components'; -import { useCreateAnswer, useNode, useUpdateAnswer } from '@/hooks'; -import { answerClientSchema, getMe, getNode, ssrNcHandler } from '@/lib'; -import { Me } from '@/types'; -import { Limits, QueryKeys, Redirects } from '@/utils'; - -type Props = { - me: Me; - id: string; -}; - -type Schema = z.infer; - -function Answer({ me, id }: Props) { - const [disabled, setDisabled] = useState(true); - - const { data: node, isPending } = useNode(me.tenantId, id as string); - - const { - handleSubmit, - control, - watch, - formState: { isSubmitting, errors, isValid, isDirty }, - } = useForm({ - resolver: zodResolver(answerClientSchema), - mode: 'onBlur', - defaultValues: { - text: node?.answer?.text ?? '', - }, - }); - - const router = useRouter(); - const text = watch('text'); - - const { mutate: createAnswer } = useCreateAnswer( - id, - me.id, - me.tenantId, - router, - ); - - const { mutate: updateAnswer } = useUpdateAnswer( - me.id, - me.tenantId, - router, - node?.answer?.id, - ); - - const onSubmit: SubmitHandler = (values) => { - if (node?.answer) { - updateAnswer(values); - } else { - createAnswer(values); - } - }; - - useEffect(() => { - setDisabled(isSubmitting || !isValid || !isDirty); - }, [isSubmitting, isValid, isDirty]); - - return isPending ? ( - - ) : ( -
    - -
    -

    - {node.answer ? 'Edit the answer' : 'Answer'} -

    - -
    -

    - Question: {node.question.text} -

    - ( - - )} - /> -
    - {errors.text && ( - - {errors.text.message} - - )} - - {text.length} / {Limits.ANSWER} - -
    -
    - - -
    -
    - ); -} - -export default Answer; - -export const getServerSideProps: GetServerSideProps = async ({ - req, - res, - query, -}) => { - const { id } = query; - const callbackMe = async () => await getMe({ req }); - const me = await ssrNcHandler(req, res, callbackMe); - - if (!me) return Redirects.LOGIN; - - const queryClient = new QueryClient(); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.ME, me.id], - queryFn: () => me, - }); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.NODE, me.tenantId, id], - queryFn: () => getNode(me.tenantId, id as string), - }); - - return { - props: { - id, - me: JSON.parse(JSON.stringify(me)), - dehydratedState: JSON.parse(JSON.stringify(dehydrate(queryClient))), - }, - }; -}; diff --git a/src/old/question/edit.tsx b/src/old/question/edit.tsx deleted file mode 100644 index 5468d724e..000000000 --- a/src/old/question/edit.tsx +++ /dev/null @@ -1,173 +0,0 @@ -import { useEffect, useState } from 'react'; - -import { zodResolver } from '@hookform/resolvers/zod'; -import { User } from '@prisma/client'; -import { QueryClient, dehydrate } from '@tanstack/react-query'; -import { HelpCircle } from 'lucide-react'; -import { GetServerSideProps } from 'next'; -import { useRouter } from 'next/navigation'; -import { SubmitHandler, useForm } from 'react-hook-form'; -import { z } from 'zod'; - -import { BackButton, Button, Field, Input, Loader } from '@/components'; -import { useMediaQuery, useNode, useTags, useUpdateNode } from '@/hooks'; -import { - getMe, - getNode, - getTags, - questionClientSchema, - ssrNcHandler, -} from '@/lib'; -import { TagsList } from '@/modules'; -import { Me } from '@/types'; -import { Limits, QueryKeys, Redirects, arraysAreEqual } from '@/utils'; - -type Props = { - me: Me; - id: string; -}; - -type Schema = z.infer; - -function Edit({ me, id }: Props) { - const [disabled, setDisabled] = useState(true); - const [selectedTags, setSelectedTags] = useState([]); - const isDesktop = useMediaQuery('(min-width: 640px)'); - - const { data: tags, isPending: isTagsLoading } = useTags(me.tenantId); - const { data: node, isPending } = useNode(me.tenantId, id as string); - - const { - register, - handleSubmit, - watch, - formState: { isSubmitting, isDirty, isValid, errors }, - } = useForm({ - resolver: zodResolver(questionClientSchema), - mode: 'onBlur', - defaultValues: { - text: node?.question.text, - }, - }); - - const router = useRouter(); - const text = watch('text'); - - const { mutate } = useUpdateNode( - id, - me.tenantId, - me.id, - selectedTags, - router, - node?.question.id, - ); - - const onSubmit: SubmitHandler = (values) => { - mutate(values); - }; - - const tagsId = node?.tags?.map((tag) => tag.id); - - useEffect(() => { - setSelectedTags(node?.tags?.map((tag) => tag.id)); - setDisabled(isSubmitting || !isValid || !isDirty); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [isSubmitting, isValid, isDirty]); - - return isPending ? ( - - ) : ( -
    - -
    -
    -
    -
    - - Edit the question - -
    - - } - type="text" - id="question" - /> - -
    - - - -
    -
    - ); -} - -export default Edit; - -export const getServerSideProps: GetServerSideProps = async ({ - req, - res, - query, -}) => { - const { id } = query; - const callbackMe = async () => await getMe({ req }); - const me = await ssrNcHandler(req, res, callbackMe); - - if (!me) return Redirects.LOGIN; - - const queryClient = new QueryClient(); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.ME, me.id], - queryFn: () => me, - }); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.NODE, me.tenantId, id], - queryFn: () => getNode(me.tenantId, id as string), - }); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.TAGS, me.tenantId], - queryFn: () => getTags(me.tenantId), - }); - - return { - props: { - id, - me: JSON.parse(JSON.stringify(me)), - dehydratedState: JSON.parse(JSON.stringify(dehydrate(queryClient))), - }, - }; -}; diff --git a/src/old/question/new.tsx b/src/old/question/new.tsx deleted file mode 100644 index 8f9cfa7e2..000000000 --- a/src/old/question/new.tsx +++ /dev/null @@ -1,165 +0,0 @@ -import { useEffect, useState } from 'react'; - -import { zodResolver } from '@hookform/resolvers/zod'; -import { User } from '@prisma/client'; -import { dehydrate, QueryClient } from '@tanstack/react-query'; -import { HelpCircle, MoveRight } from 'lucide-react'; -import { GetServerSideProps } from 'next'; -import { useRouter } from 'next/navigation'; -import { SubmitHandler, useForm } from 'react-hook-form'; -import { z } from 'zod'; - -import { BackButton, Button, Field, Input } from '@/components'; -import { useCreateNode, useIntegration, useMediaQuery, useTags } from '@/hooks'; -import { - getIntegration, - getMe, - getTags, - questionClientSchema, - ssrNcHandler, -} from '@/lib'; -import { TagsList } from '@/modules'; -import { Me } from '@/types'; -import { Limits, QueryKeys, Redirects } from '@/utils'; - -type Props = { - me: Me; -}; - -type Schema = z.infer; - -function New({ me }: Props) { - const [disabled, setDisabled] = useState(true); - const [selectedTags, setSelectedTags] = useState([]); - const isDesktop = useMediaQuery('(min-width: 640px)'); - const withAnswer = true; - - const { - register, - handleSubmit, - watch, - formState: { isSubmitting, errors, isValid }, - } = useForm({ - resolver: zodResolver(questionClientSchema), - mode: 'onBlur', - defaultValues: { - text: '', - }, - }); - const router = useRouter(); - const text = watch('text'); - - const { data: tags, isPending } = useTags(me.tenantId); - const { data: integrations } = useIntegration(me.tenantId); - const { mutate } = useCreateNode(me, router, selectedTags, integrations); - - const onSubmit: SubmitHandler = (values) => { - mutate(values); - }; - - const onSubmitWithAnswer: SubmitHandler = (data) => { - const values = { ...data, withAnswer }; - mutate(values); - }; - - useEffect(() => { - setDisabled(isSubmitting || !isValid); - }, [isSubmitting, isValid]); - - return ( -
    - -
    -
    -
    -
    - - Ask a question - -
    - - } - type="text" - id="question" - placeholder="New question" - /> - - -
    -
    - - -
    -
    -
    -
    - ); -} - -export default New; - -export const getServerSideProps: GetServerSideProps = async ({ req, res }) => { - const callbackMe = async () => await getMe({ req }); - const me = await ssrNcHandler(req, res, callbackMe); - - if (!me) return Redirects.LOGIN; - - const queryClient = new QueryClient(); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.ME, me.id], - queryFn: () => me, - }); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.TAGS, me.tenantId], - queryFn: () => getTags(me.tenantId), - }); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.INTEGRATION, me.tenantId], - queryFn: () => getIntegration(me.tenantId), - }); - - return { - props: { - me: JSON.parse(JSON.stringify(me)), - dehydratedState: JSON.parse(JSON.stringify(dehydrate(queryClient))), - }, - }; -}; diff --git a/src/old/register/confirm.tsx b/src/old/register/confirm.tsx deleted file mode 100644 index 24e4c83e1..000000000 --- a/src/old/register/confirm.tsx +++ /dev/null @@ -1,132 +0,0 @@ -import { useEffect, useState } from 'react'; - -import { zodResolver } from '@hookform/resolvers/zod'; -import { useAtom } from 'jotai'; -import { MoveLeft } from 'lucide-react'; -import { useRouter } from 'next/navigation'; -import { SubmitHandler, useForm } from 'react-hook-form'; -import { z } from 'zod'; - -import { Button } from '@/components'; -import { useCreateCustomer, useCreateTenant } from '@/hooks'; -import { registerCompleteClientSchema } from '@/lib'; -import { registerAtom } from '@/store'; -import { Routes } from '@/utils'; - -type Schema = z.infer; - -function Confirm() { - const [disabled, setDisabled] = useState(true); - const [state, setState] = useAtom(registerAtom); - const router = useRouter(); - const { - handleSubmit, - formState: { isSubmitting, isValid }, - } = useForm({ - resolver: zodResolver(registerCompleteClientSchema), - defaultValues: state, - }); - - const { - data: customerId, - mutateAsync: mutateCustomer, - isSuccess: customerIsSuccess, - } = useCreateCustomer(); - const { mutateAsync: mutateTenant, isSuccess: tenantIsSuccess } = - useCreateTenant(); - - const onSubmit: SubmitHandler = async (values) => { - try { - await mutateTenant(values); - await mutateCustomer(values); - } catch (error) { - console.error(`Something went wrong: ${error}`); - } - }; - - useEffect(() => { - if (tenantIsSuccess && customerIsSuccess) { - setState({ ...state, customerId }); - router.push(Routes.SITE.REGISTER.PLAN); - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [tenantIsSuccess, customerIsSuccess, customerId]); - - useEffect(() => { - setDisabled(!isValid || isSubmitting); - }, [isValid, isSubmitting]); - - return ( -
    -
    -
    - - Confirm - -

    Confirm the information

    -
    -
    -

    Company

    -
    -

    Name

    -

    {state.company}

    -
    -
    -

    Email

    -

    {state.companyEmail}

    -
    -
    -

    Domain

    -

    - {state.domain || 'No domain'} -

    -
    -
    -
    -

    User

    -
    -

    Email

    -

    {state.email}

    -
    -
    -
    -
    - - -
    -
    - ); -} - -export default Confirm; diff --git a/src/old/register/index.tsx b/src/old/register/index.tsx deleted file mode 100644 index e3fdb4b51..000000000 --- a/src/old/register/index.tsx +++ /dev/null @@ -1,114 +0,0 @@ -import { zodResolver } from '@hookform/resolvers/zod'; -import { useAtom } from 'jotai'; -import { MoveRight } from 'lucide-react'; -import Link from 'next/link'; -import { useRouter } from 'next/navigation'; -import { SubmitHandler, useForm } from 'react-hook-form'; -import { z } from 'zod'; - -import { Button, Field, Input } from '@/components'; -import { registerCompanyClientSchema } from '@/lib'; -import { registerAtom } from '@/store'; -import { ITenantCreateFields } from '@/types'; -import { Routes } from '@/utils'; - -type Schema = z.infer; - -function Company() { - const [state, setState] = useAtom(registerAtom); - const router = useRouter(); - - const { - handleSubmit, - register, - formState: { errors, isValid }, - } = useForm({ - resolver: zodResolver(registerCompanyClientSchema), - mode: 'onBlur', - defaultValues: state, - }); - - const saveData: SubmitHandler = (values) => { - setState({ ...state, ...values }); - router.push(Routes.SITE.REGISTER.USER); - }; - - const fields: ITenantCreateFields[] = [ - { - label: 'Name', - value: 'company', - type: 'text', - }, - { - label: 'Email', - value: 'companyEmail', - type: 'email', - }, - { - label: 'Domain', - value: 'domain', - type: 'text', - info: `Fill this field if you have a personalized domain name used for your users' email`, - }, - ]; - - return ( -
    -
    -
    - - Company - -

    Your company details

    -
    - {fields.map((field) => ( - - - - ))} -
    - -

    - Already have an account ?{' '} - - Login - -

    -
    - ); -} - -export default Company; diff --git a/src/old/register/plan.tsx b/src/old/register/plan.tsx deleted file mode 100644 index 79a12be3e..000000000 --- a/src/old/register/plan.tsx +++ /dev/null @@ -1,173 +0,0 @@ -import { useEffect, useMemo } from 'react'; - -import { useAtom } from 'jotai'; -import { RESET } from 'jotai/utils'; -import { Check, Minus, MoveRight, Wallet } from 'lucide-react'; -import { useRouter } from 'next/navigation'; -import { useForm } from 'react-hook-form'; - -import { Button, errorToast, successToast } from '@/components'; -import { useCreateCheckout } from '@/hooks'; -import { registerAtom } from '@/store'; -import { IPlan } from '@/types'; -import { Routes } from '@/utils'; - -function Plan() { - const [state, setState] = useAtom(registerAtom); - - const { handleSubmit } = useForm(); - const router = useRouter(); - const { status } = router.query; - - const { mutate } = useCreateCheckout(state.customerId); - - const saveData = (value: IPlan['value'], lookup_key: string) => { - if (value === 'free') { - setState(RESET); - router.push(Routes.SITE.LOGIN); - } else { - return mutate(lookup_key); - } - }; - - const plans: IPlan[] = useMemo( - () => [ - { - label: 'Free', - value: 'free', - price: 0, - lookup_key: 'free_monthly', - message: 'Perfect to try out', - benefits: ['5 users', '3 tags', 'Unlimited questions'], - drawbacks: ['Slack integration'], - }, - { - label: 'Startup', - value: 'startup', - price: 19, - lookup_key: 'startup_monthly', - message: 'Perfect for startups', - benefits: [ - '100 users', - '10 tags', - 'Unlimited questions', - 'Slack integration', - ], - }, - { - label: 'Enterprise', - value: 'enterprise', - price: 29, - lookup_key: 'enterprise_monthly', - message: 'Perfect for big companies', - benefits: [ - 'Unlimited users', - 'Unlimited tags', - 'Unlimited questions', - 'Slack integration', - ], - }, - ], - [], - ); - - useEffect(() => { - if (status === 'success') { - successToast('Payment successful'); - setState(RESET); - router.push(Routes.SITE.LOGIN); - } else if (status === 'cancel') { - errorToast('Payment unsuccessful'); - } - - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [status, router.isReady]); - - return ( -
    -
    -

    - Plan -

    -

    Choose the right plan for you

    -
    -
    - {plans.map((plan, index) => ( -
    saveData(plan.value, plan.lookup_key))} - key={index} - className="w-full overflow-hidden rounded-md bg-grayA-3 p-4 text-center text-gray-12 shadow-sm shadow-tealA-7 transition-all duration-300 hover:shadow-tealA-8" - > -
    -

    - {plan.label} -

    -

    - ${plan.price}/mo -

    -
    -
    -

    - {plan.message} -

    -
    -
      - {plan.benefits.map((benefit, index) => ( -
    • - -

      {benefit}

      -
    • - ))} - {plan.drawbacks?.map((drawback, index) => ( -
    • - -

      {drawback}

      -
    • - ))} -
    -
    - {plan.value === 'free' ? ( - - ) : ( - - )} -
    -
    -
    - ))} -
    -
    - ); -} - -export default Plan; diff --git a/src/old/register/user.tsx b/src/old/register/user.tsx deleted file mode 100644 index 62fd7087a..000000000 --- a/src/old/register/user.tsx +++ /dev/null @@ -1,103 +0,0 @@ -import { zodResolver } from '@hookform/resolvers/zod'; -import { useAtom } from 'jotai'; -import { MoveLeft, MoveRight } from 'lucide-react'; -import Link from 'next/link'; -import { useRouter } from 'next/navigation'; -import { SubmitHandler, useForm } from 'react-hook-form'; -import { z } from 'zod'; - -import { Button, Field, Input } from '@/components'; -import { registerUserClientSchema } from '@/lib'; -import { registerAtom } from '@/store'; -import { Routes } from '@/utils'; - -type Schema = z.infer; - -function Register() { - const [state, setState] = useAtom(registerAtom); - const router = useRouter(); - - const { - register, - handleSubmit, - formState: { isValid, errors }, - } = useForm({ - resolver: zodResolver(registerUserClientSchema), - mode: 'onBlur', - defaultValues: state, - }); - - const saveData: SubmitHandler = (values) => { - setState({ ...state, ...values }); - router.push(Routes.SITE.REGISTER.CONFIRM); - }; - - return ( -
    -
    -
    - - User - -

    Your connection mail

    -
    - - - -
    -
    - - -
    -

    - Already have an account ?{' '} - - Login - -

    -
    - ); -} - -export default Register; diff --git a/src/old/settings.tsx b/src/old/settings.tsx deleted file mode 100644 index 1744cfe7f..000000000 --- a/src/old/settings.tsx +++ /dev/null @@ -1,135 +0,0 @@ -import { useMemo } from 'react'; - -import { User } from '@prisma/client'; -import { QueryClient, dehydrate } from '@tanstack/react-query'; -import { GetServerSideProps } from 'next'; - -import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components'; -import { useTenant } from '@/hooks'; -import { - getIntegration, - getMe, - getNodesCount, - getTags, - getTenant, - getUsersCount, - ssrNcHandler, -} from '@/lib'; -import { General, Payment, Tags, Users } from '@/modules'; -import { Me } from '@/types'; -import { QueryKeys, Redirects } from '@/utils'; - -type Props = { - me: Me; -}; - -function Settings({ me }: Props) { - const { data: tenant, isPending } = useTenant(me.tenantId); - - const tabs = useMemo( - () => [ - { - value: 'general', - label: 'General', - }, - { - value: 'tags', - label: 'Tags', - }, - { - value: 'users', - label: 'Users', - }, - ], - [], - ); - - return ( -
    -

    - Settings -

    - - - {tabs.map((tab, index) => ( - - {tab.label} - - ))} - {me.role === 'tenant' && ( - - Payment - - )} - - - - - - - - - - - - - - -
    - ); -} - -export default Settings; - -export const getServerSideProps: GetServerSideProps = async ({ req, res }) => { - const callbackMe = async () => await getMe({ req }); - const me = await ssrNcHandler(req, res, callbackMe); - - if (!me) return Redirects.LOGIN; - - if (me.role === 'user') return Redirects.HOME; - - const queryClient = new QueryClient(); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.ME, me.id], - queryFn: () => me, - }); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.NODES_COUNT, me.tenantId], - queryFn: () => getNodesCount(me.tenantId), - }); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.USERS_COUNT, me.tenantId], - queryFn: () => getUsersCount(me.tenantId), - }); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.TENANT, me.tenantId], - queryFn: () => getTenant(me.tenantId), - }); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.INTEGRATION, me.tenantId], - queryFn: () => getIntegration(me.tenantId), - }); - await queryClient.prefetchQuery({ - queryKey: [QueryKeys.TAGS, me.tenantId], - queryFn: () => getTags(me.tenantId), - }); - - return { - props: { - me: JSON.parse(JSON.stringify(me)), - dehydratedState: JSON.parse(JSON.stringify(dehydrate(queryClient))), - }, - }; -}; From 973e9943acd5f0995ebb8c468f1276c80e9b2ef3 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Tue, 16 Apr 2024 10:54:04 +0200 Subject: [PATCH 074/326] :heavy_plus_sign: install use-debounce package --- package.json | 1 + pnpm-lock.yaml | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/package.json b/package.json index e46468f69..b1f8021dc 100644 --- a/package.json +++ b/package.json @@ -75,6 +75,7 @@ "stripe": "^14.16.0", "tailwind-merge": "^2.2.0", "tailwindcss-animate": "^1.0.6", + "use-debounce": "^10.0.0", "uuid": "^9.0.1", "vaul": "^0.9.0", "wcag-contrast": "^3.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6cb34bd3c..55bb603d9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -137,6 +137,9 @@ dependencies: tailwindcss-animate: specifier: ^1.0.6 version: 1.0.6(tailwindcss@3.4.1) + use-debounce: + specifier: ^10.0.0 + version: 10.0.0(react@18.2.0) uuid: specifier: ^9.0.1 version: 9.0.1 @@ -8115,6 +8118,15 @@ packages: tslib: 2.6.2 dev: false + /use-debounce@10.0.0(react@18.2.0): + resolution: {integrity: sha512-XRjvlvCB46bah9IBXVnq/ACP2lxqXyZj0D9hj4K5OzNroMDpTEBg8Anuh1/UfRTRs7pLhQ+RiNxxwZu9+MVl1A==} + engines: {node: '>= 16.0.0'} + peerDependencies: + react: '>=16.8.0' + dependencies: + react: 18.2.0 + dev: false + /use-sidecar@1.1.2(@types/react@18.0.27)(react@18.2.0): resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} From 572ee3ba6955bda35bfa71b0639d2dc4c86d94f4 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Tue, 16 Apr 2024 10:55:06 +0200 Subject: [PATCH 075/326] :recycle: refacto search functionality --- src/actions/get-search-nodes/index.ts | 19 ++++++----- src/actions/get-search-nodes/schema.ts | 2 +- src/app/home.tsx | 42 +++++++++++------------- src/app/page.tsx | 11 ++++++- src/modules/search/Search.tsx | 45 +++++++++++--------------- 5 files changed, 58 insertions(+), 61 deletions(-) diff --git a/src/actions/get-search-nodes/index.ts b/src/actions/get-search-nodes/index.ts index 7ce57e1d5..b151ad913 100644 --- a/src/actions/get-search-nodes/index.ts +++ b/src/actions/get-search-nodes/index.ts @@ -5,32 +5,31 @@ import prisma from 'lib/prisma'; import { getSearchSchema } from './schema'; -type Props = { - tenantId: string; - searchQuery: string; -}; - -export const getSearchNodes = cache(async (body: Props) => { +export const getSearchNodes = cache(async (tenantId, query) => { try { - if (!body) { + if (!tenantId) { return { error: 'Tenant not found' }; } - const result = getSearchSchema.safeParse(body); + if (!query) { + return []; + } + const result = getSearchSchema.safeParse({ tenantId, query }); if (result.success === false) { const errors = result.error.formErrors.fieldErrors; return { error: 'Invalid request' + errors }; } else { - const { tenantId, searchQuery } = result.data; + const { tenantId, query } = result.data; const nodes = await prisma.node.findMany({ where: { tenantId: tenantId as string, question: { - text: { contains: searchQuery as string, mode: 'insensitive' }, + text: { contains: query as string, mode: 'insensitive' }, }, }, orderBy: { createdAt: 'desc' }, include: nodeModel, }); + if (!nodes) return []; return nodes; } } catch (error) { diff --git a/src/actions/get-search-nodes/schema.ts b/src/actions/get-search-nodes/schema.ts index b411adb54..b5eec9934 100644 --- a/src/actions/get-search-nodes/schema.ts +++ b/src/actions/get-search-nodes/schema.ts @@ -2,5 +2,5 @@ import { z } from 'zod'; export const getSearchSchema = z.object({ tenantId: z.string().cuid2(), - searchQuery: z.string().min(1, { message: 'Search query is required' }), + query: z.string().min(1, { message: 'Search query is required' }), }); diff --git a/src/app/home.tsx b/src/app/home.tsx index 620a2d3de..d4a285ce5 100644 --- a/src/app/home.tsx +++ b/src/app/home.tsx @@ -14,34 +14,35 @@ import { OFFSET } from '@/utils'; type Props = { me: Me; initialNodes: ExtendedNode[]; + filteredNodes: ExtendedNode[]; nodesCount: number; tags: Tag[]; }; -export default function Home({ me, initialNodes, nodesCount, tags }: Props) { - const search = useSearchParams(); - const [searchQuery, setSearchQuery] = useState( - search.get('search') ?? null, - ); - const [searchTag, setSearchTag] = useState(null); +export default function Home({ + me, + initialNodes, + filteredNodes, + nodesCount, + tags, +}: Props) { + const searchParams = useSearchParams(); + const query = searchParams.get('query') || ''; + const [searchTag, setSearchTag] = useState(''); const [page, setPage] = useState(0); let nodes: ExtendedNode[] = []; let message = 'Ask a question'; - // const { data: filteredNodes, isLoading: isSearchLoading } = useSearchNodes( - // me.tenantId, - // searchQuery, - // ); // const { data: filteredTags } = useSearchTags(me.tenantId, searchTag); - if (searchQuery) { - // if (filteredNodes && filteredNodes.length > 0) { - // nodes = filteredNodes; - // } else { - // nodes = []; - // message = 'No results'; - // } + if (query) { + if (filteredNodes && filteredNodes.length > 0) { + nodes = filteredNodes; + } else { + nodes = []; + message = 'No results'; + } // } else if (searchTag) { // if (filteredTags && filteredTags.length > 0) { // nodes = filteredTags; @@ -55,12 +56,7 @@ export default function Home({ me, initialNodes, nodesCount, tags }: Props) { return ( <> - + {nodesCount > OFFSET && (nodes.length === OFFSET || page !== 0) && ( diff --git a/src/app/page.tsx b/src/app/page.tsx index a9e1553c8..00c5dea1a 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,6 +1,12 @@ import { redirect } from 'next/navigation'; -import { getMe, getNodesCount, getPaginatedNodes, getTags } from '@/actions'; +import { + getMe, + getNodesCount, + getPaginatedNodes, + getSearchNodes, + getTags, +} from '@/actions'; import { Footer, Header } from '@/modules'; import { Routes } from '@/utils'; @@ -15,9 +21,11 @@ export default async function Page({ searchParams }) { const tenantId = me.tenantId; const page = Number(searchParams?.page) || 0; + const query = searchParams.query || ''; const body = { tenantId, page }; const initialNodes = await getPaginatedNodes(body); + const filteredNodes = await getSearchNodes(tenantId, query); const nodesCount = await getNodesCount(tenantId); const tags = await getTags(tenantId); @@ -28,6 +36,7 @@ export default async function Page({ searchParams }) { diff --git a/src/modules/search/Search.tsx b/src/modules/search/Search.tsx index 9a25f0a1e..a258493ff 100644 --- a/src/modules/search/Search.tsx +++ b/src/modules/search/Search.tsx @@ -2,10 +2,11 @@ import { Dispatch, MouseEvent, SetStateAction, useState } from 'react'; + import { Tag } from '@prisma/client'; import { SearchIcon, TagIcon } from 'lucide-react'; -import { useRouter } from 'next/navigation'; -import { useForm } from 'react-hook-form'; +import { usePathname, useRouter, useSearchParams } from 'next/navigation'; +import { useDebouncedCallback } from 'use-debounce'; import { DropdownMenu, @@ -18,32 +19,26 @@ import { type Props = { tags: Tag[]; - setSearchQuery: Dispatch>; setSearchTag: Dispatch>; setPage: Dispatch>; }; -export const Search = ({ - tags, - setSearchQuery, - setSearchTag, - setPage, -}: Props) => { - const router = useRouter(); - const { handleSubmit, register } = useForm(); +export const Search = ({ tags, setSearchTag, setPage }: Props) => { + const searchParams = useSearchParams(); + const pathname = usePathname(); + const { replace } = useRouter(); const [tagActive, setTagActive] = useState(null); - const onSearch = (values) => { - const { search } = values; - setSearchQuery(search); + const handleSearch = useDebouncedCallback((search) => { + const params = new URLSearchParams(searchParams); setPage(0); if (search) { - const encodedSearch = encodeURI(search); - router.push(`?search=${encodedSearch}`); + params.set('query', search); } else { - router.push(''); + params.delete('query'); } - }; + replace(`${pathname}?${params.toString()}`); + }, 300); const handleTagSearch = (label: string) => { setTagActive(label); @@ -53,16 +48,13 @@ export const Search = ({ const handleResetTag = () => { setTagActive(null); - setSearchTag(null); + setSearchTag(''); setPage(0); }; return (
    -
    +
    {tags.length > 0 && ( Date: Tue, 16 Apr 2024 10:55:59 +0200 Subject: [PATCH 076/326] :rewind: put back use of useMediaQuery hook --- src/app/question/new/new.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/app/question/new/new.tsx b/src/app/question/new/new.tsx index 28b665696..8a0f86adb 100644 --- a/src/app/question/new/new.tsx +++ b/src/app/question/new/new.tsx @@ -10,6 +10,7 @@ import { z } from 'zod'; import { createNode } from '@/actions'; import { BackButton, Button, Field, Input } from '@/components'; +import { useMediaQuery } from '@/hooks'; import { questionClientSchema } from '@/lib'; import { TagsList } from '@/modules'; import { Me } from '@/types'; @@ -26,6 +27,7 @@ type Schema = z.infer; export default function New({ me, tags, integrations }: Props) { const [disabled, setDisabled] = useState(true); const [selectedTags, setSelectedTags] = useState([]); + const isDesktop = useMediaQuery('(min-width: 640px)'); const withAnswer = true; const { @@ -84,7 +86,7 @@ export default function New({ me, tags, integrations }: Props) { > } type="text" id="question" From 4baabcd1e9808f2f52973a0c7aae025e83cbab42 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Tue, 16 Apr 2024 17:33:12 +0200 Subject: [PATCH 077/326] :recycle: functionning search + pagination with url params --- src/actions/get-nodes/index.ts | 4 +- src/actions/get-search-nodes/index.ts | 61 +++++++++++----------- src/actions/get-search-tags/index.ts | 64 ++++++++++++------------ src/actions/get-search-tags/schema.ts | 2 +- src/app/home.tsx | 32 ++++++------ src/app/page.tsx | 5 +- src/components/pagination/Pagination.tsx | 24 ++++----- src/modules/search/Search.tsx | 29 +++++------ 8 files changed, 110 insertions(+), 111 deletions(-) diff --git a/src/actions/get-nodes/index.ts b/src/actions/get-nodes/index.ts index adb9a6bf6..cd37d0313 100644 --- a/src/actions/get-nodes/index.ts +++ b/src/actions/get-nodes/index.ts @@ -12,7 +12,7 @@ type Props = { }; export const getPaginatedNodes = cache( - async (body: Props): Promise => { + async (body: Props): Promise => { try { if (!body) { throw new Error('Tenant not found'); @@ -30,7 +30,7 @@ export const getPaginatedNodes = cache( take: OFFSET, include: nodeModel, }); - if (!nodes) return null; + if (!nodes) return []; return nodes as ExtendedNode[]; } } catch (error) { diff --git a/src/actions/get-search-nodes/index.ts b/src/actions/get-search-nodes/index.ts index b151ad913..949e6f8a8 100644 --- a/src/actions/get-search-nodes/index.ts +++ b/src/actions/get-search-nodes/index.ts @@ -1,38 +1,41 @@ import { cache } from 'react'; +import { ExtendedNode } from '@/types'; import { nodeModel } from '@/utils'; import prisma from 'lib/prisma'; import { getSearchSchema } from './schema'; -export const getSearchNodes = cache(async (tenantId, query) => { - try { - if (!tenantId) { - return { error: 'Tenant not found' }; - } - if (!query) { - return []; - } - const result = getSearchSchema.safeParse({ tenantId, query }); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return { error: 'Invalid request' + errors }; - } else { - const { tenantId, query } = result.data; - const nodes = await prisma.node.findMany({ - where: { - tenantId: tenantId as string, - question: { - text: { contains: query as string, mode: 'insensitive' }, +export const getSearchNodes = cache( + async (tenantId, query): Promise => { + try { + if (!tenantId) { + throw new Error('Tenant not found'); + } + if (!query) { + return []; + } + const result = getSearchSchema.safeParse({ tenantId, query }); + if (result.success === false) { + const errors = result.error.formErrors.fieldErrors; + throw new Error('Invalid request' + errors); + } else { + const { tenantId, query } = result.data; + const nodes = await prisma.node.findMany({ + where: { + tenantId: tenantId as string, + question: { + text: { contains: query as string, mode: 'insensitive' }, + }, }, - }, - orderBy: { createdAt: 'desc' }, - include: nodeModel, - }); - if (!nodes) return []; - return nodes; + orderBy: { createdAt: 'desc' }, + include: nodeModel, + }); + if (!nodes) return []; + return nodes as ExtendedNode[]; + } + } catch (error) { + throw new Error('Error fetching results'); } - } catch (error) { - return { error: 'Error when looking for results' }; - } -}); + }, +); diff --git a/src/actions/get-search-tags/index.ts b/src/actions/get-search-tags/index.ts index 44de71a0b..e1ea2808a 100644 --- a/src/actions/get-search-tags/index.ts +++ b/src/actions/get-search-tags/index.ts @@ -1,41 +1,43 @@ import { cache } from 'react'; +import { ExtendedNode } from '@/types'; import { nodeModel } from '@/utils'; import prisma from 'lib/prisma'; import { getTagSearchSchema } from './schema'; -type Props = { - tenantId: string; - searchTag: string; -}; - -export const getSearchTags = cache(async (body: Props) => { - try { - if (!body) { - return { error: 'Tenant not found' }; - } - const result = getTagSearchSchema.safeParse(body); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return { error: 'Invalid request' + errors }; - } else { - const { tenantId, searchTag } = result.data; - const nodes = await prisma.node.findMany({ - where: { - tenantId: tenantId as string, - tags: { - some: { - label: { contains: searchTag as string, mode: 'insensitive' }, +export const getSearchTags = cache( + async (tenantId, tag): Promise => { + try { + if (!tenantId) { + throw new Error('Tenant not found'); + } + if (!tag) { + return []; + } + const result = getTagSearchSchema.safeParse({ tenantId, tag }); + if (result.success === false) { + const errors = result.error.formErrors.fieldErrors; + throw new Error('Invalid request' + errors); + } else { + const { tenantId, tag } = result.data; + const nodes = await prisma.node.findMany({ + where: { + tenantId: tenantId as string, + tags: { + some: { + label: { contains: tag as string, mode: 'insensitive' }, + }, }, }, - }, - orderBy: { createdAt: 'desc' }, - include: nodeModel, - }); - return nodes; + orderBy: { createdAt: 'desc' }, + include: nodeModel, + }); + if (!nodes) return []; + return nodes as ExtendedNode[]; + } + } catch (error) { + throw new Error('Error fetching results'); } - } catch (error) { - return { error: 'Error when looking for results' }; - } -}); + }, +); diff --git a/src/actions/get-search-tags/schema.ts b/src/actions/get-search-tags/schema.ts index 5abc8c334..be4c1a28e 100644 --- a/src/actions/get-search-tags/schema.ts +++ b/src/actions/get-search-tags/schema.ts @@ -2,5 +2,5 @@ import { z } from 'zod'; export const getTagSearchSchema = z.object({ tenantId: z.string().cuid2(), - searchTag: z.string().min(1, { message: 'Tag is required' }), + tag: z.string().min(1, { message: 'Tag is required' }), }); diff --git a/src/app/home.tsx b/src/app/home.tsx index d4a285ce5..3a0691c70 100644 --- a/src/app/home.tsx +++ b/src/app/home.tsx @@ -1,41 +1,37 @@ 'use client'; -import { useState } from 'react'; import { Tag } from '@prisma/client'; import { useSearchParams } from 'next/navigation'; import { Pagination } from '@/components'; -// import { useSearchNodes, useSearchTags } from '@/hooks'; import { List, Search } from '@/modules'; -import { ExtendedNode, Me } from '@/types'; +import { ExtendedNode } from '@/types'; import { OFFSET } from '@/utils'; type Props = { - me: Me; initialNodes: ExtendedNode[]; filteredNodes: ExtendedNode[]; + filteredTags: ExtendedNode[]; nodesCount: number; tags: Tag[]; }; export default function Home({ - me, initialNodes, filteredNodes, + filteredTags, nodesCount, tags, }: Props) { const searchParams = useSearchParams(); const query = searchParams.get('query') || ''; - const [searchTag, setSearchTag] = useState(''); - const [page, setPage] = useState(0); + const tag = searchParams.get('tag') || ''; + const page = searchParams.get('page') || 0; let nodes: ExtendedNode[] = []; let message = 'Ask a question'; - // const { data: filteredTags } = useSearchTags(me.tenantId, searchTag); - if (query) { if (filteredNodes && filteredNodes.length > 0) { nodes = filteredNodes; @@ -43,23 +39,23 @@ export default function Home({ nodes = []; message = 'No results'; } - // } else if (searchTag) { - // if (filteredTags && filteredTags.length > 0) { - // nodes = filteredTags; - // } else { - // nodes = []; - // message = 'No results'; - // } + } else if (tag) { + if (filteredTags && filteredTags.length > 0) { + nodes = filteredTags; + } else { + nodes = []; + message = 'No results'; + } } else { nodes = initialNodes ?? []; } return ( <> - + {nodesCount > OFFSET && (nodes.length === OFFSET || page !== 0) && ( - + )} ); diff --git a/src/app/page.tsx b/src/app/page.tsx index 00c5dea1a..115d2ef52 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -5,6 +5,7 @@ import { getNodesCount, getPaginatedNodes, getSearchNodes, + getSearchTags, getTags, } from '@/actions'; import { Footer, Header } from '@/modules'; @@ -22,10 +23,12 @@ export default async function Page({ searchParams }) { const tenantId = me.tenantId; const page = Number(searchParams?.page) || 0; const query = searchParams.query || ''; + const tag = searchParams.tag || ''; const body = { tenantId, page }; const initialNodes = await getPaginatedNodes(body); const filteredNodes = await getSearchNodes(tenantId, query); + const filteredTags = await getSearchTags(tenantId, tag); const nodesCount = await getNodesCount(tenantId); const tags = await getTags(tenantId); @@ -34,9 +37,9 @@ export default async function Page({ searchParams }) {
    diff --git a/src/components/pagination/Pagination.tsx b/src/components/pagination/Pagination.tsx index 8e973dfd1..3ebfadaff 100644 --- a/src/components/pagination/Pagination.tsx +++ b/src/components/pagination/Pagination.tsx @@ -1,31 +1,29 @@ 'use client'; -import { Dispatch, SetStateAction } from 'react'; -import { usePathname, useSearchParams } from 'next/navigation'; +import { usePathname, useRouter, useSearchParams } from 'next/navigation'; import ReactPaginate from 'react-paginate'; import { OFFSET } from '@/utils'; type Props = { - setPage: Dispatch>; nodesLength: number; }; -export const Pagination = ({ setPage, nodesLength }: Props) => { +export const Pagination = ({ nodesLength }: Props) => { const pathname = usePathname(); const searchParams = useSearchParams(); - const currentPage = Number(searchParams.get('page')) || 0; + const { replace } = useRouter(); const handlePageChange = (data: { selected: number }) => { - setPage(data.selected); - }; - - const createPageURL = (data: { selected: number }) => { const params = new URLSearchParams(searchParams); - const pageNumber = data.selected; - params.set('page', pageNumber.toString()); - return `${pathname}?${params.toString()}`; + const page = data.selected; + if (page > 0) { + params.set('page', page.toString()); + } else { + params.delete('page'); + } + replace(`${pathname}?${params.toString()}`); }; return ( @@ -39,7 +37,7 @@ export const Pagination = ({ setPage, nodesLength }: Props) => { nextClassName="font-semibold h-10 px-2 flex items-center justify-center rounded-md hover:bg-gray-4" disabledClassName="text-gray-11 hover:text-gray-11 hover:!bg-transparent" breakLabel="..." - onPageChange={createPageURL} + onPageChange={handlePageChange} nextLabel="Next →" pageRangeDisplayed={3} marginPagesDisplayed={2} diff --git a/src/modules/search/Search.tsx b/src/modules/search/Search.tsx index a258493ff..698879234 100644 --- a/src/modules/search/Search.tsx +++ b/src/modules/search/Search.tsx @@ -1,7 +1,6 @@ 'use client'; -import { Dispatch, MouseEvent, SetStateAction, useState } from 'react'; - +import { MouseEvent } from 'react'; import { Tag } from '@prisma/client'; import { SearchIcon, TagIcon } from 'lucide-react'; @@ -19,19 +18,17 @@ import { type Props = { tags: Tag[]; - setSearchTag: Dispatch>; - setPage: Dispatch>; }; -export const Search = ({ tags, setSearchTag, setPage }: Props) => { +export const Search = ({ tags }: Props) => { const searchParams = useSearchParams(); const pathname = usePathname(); const { replace } = useRouter(); - const [tagActive, setTagActive] = useState(null); + const params = new URLSearchParams(searchParams); + const currentTag = params.get('tag') || ''; const handleSearch = useDebouncedCallback((search) => { - const params = new URLSearchParams(searchParams); - setPage(0); + params.delete('page'); if (search) { params.set('query', search); } else { @@ -41,15 +38,15 @@ export const Search = ({ tags, setSearchTag, setPage }: Props) => { }, 300); const handleTagSearch = (label: string) => { - setTagActive(label); - setSearchTag(label); - setPage(0); + params.delete('page'); + params.set('tag', label); + replace(`${pathname}?${params.toString()}`); }; const handleResetTag = () => { - setTagActive(null); - setSearchTag(''); - setPage(0); + params.delete('page'); + params.delete('tag'); + replace(`${pathname}?${params.toString()}`); }; return ( @@ -85,7 +82,7 @@ export const Search = ({ tags, setSearchTag, setPage }: Props) => { {tags.map((tag) => ( { > {tag.label} - {tagActive === tag.label && ( + {currentTag === tag.label && ( )} From 81f91aa9d0cd6fec09fd6759072ed11d983495b8 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Tue, 16 Apr 2024 17:33:50 +0200 Subject: [PATCH 078/326] :wrench: remove domain from allowed images domains --- next.config.js | 1 - 1 file changed, 1 deletion(-) diff --git a/next.config.js b/next.config.js index e89dd5670..34b1aa5c2 100644 --- a/next.config.js +++ b/next.config.js @@ -8,7 +8,6 @@ const nextConfig = removeImports({ images: { domains: [ 'lh3.googleusercontent.com', - 'api.dicebear.com', 'storage.googleapis.com', ], }, From dd4af3c656ac148935967be2d4a9b8a6fb8d25a6 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Tue, 16 Apr 2024 20:23:37 +0200 Subject: [PATCH 079/326] :fire: remove migrated files --- src/old/api/tenant/[id].ts | 167 -------------------------------- src/old/api/tenant/index.ts | 99 ------------------- src/old/api/tenant/logo/[id].ts | 82 ---------------- 3 files changed, 348 deletions(-) delete mode 100644 src/old/api/tenant/[id].ts delete mode 100644 src/old/api/tenant/index.ts delete mode 100644 src/old/api/tenant/logo/[id].ts diff --git a/src/old/api/tenant/[id].ts b/src/old/api/tenant/[id].ts deleted file mode 100644 index 62188fe0f..000000000 --- a/src/old/api/tenant/[id].ts +++ /dev/null @@ -1,167 +0,0 @@ -import { Storage } from '@google-cloud/storage'; -import { getToken } from 'next-auth/jwt'; -import Stripe from 'stripe'; - -import { - deleteTenantServerSchema, - getIdSchema, - updateTenantServerSchema, -} from '@/lib'; -import prisma from 'lib/prisma'; - -import type { NextApiRequest, NextApiResponse } from 'next'; - -const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { - apiVersion: '2023-10-16', -}); - -export default async function handler( - req: NextApiRequest, - res: NextApiResponse, -) { - const token = await getToken({ req }); - if (req.method === 'GET') { - try { - if (!req.query) { - return res - .status(404) - .json({ success: false, error: { message: `Tenant not found` } }); - } - if (token) { - const result = getIdSchema.safeParse(req.query); - if (result.success === false) { - const { errors } = result.error; - return res.status(422).json({ - success: false, - error: { message: 'Invalid request', errors }, - }); - } else { - const { id } = result.data; - const tenant = await prisma.tenant.findUnique({ - where: { id: id as string }, - }); - return res.status(200).json(tenant); - } - } else { - return res - .status(401) - .json({ success: false, error: { message: 'Not signed in' } }); - } - } catch (error) { - if (error instanceof Error) { - return res.status(404).json({ success: false, error: error.message }); - } - } - } else if (req.method === 'PUT') { - try { - if (!req.query) { - return res - .status(404) - .json({ success: false, error: { message: `Tenant not found` } }); - } - if (token) { - const result = updateTenantServerSchema.safeParse({ - body: req.body, - query: req.query, - }); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return res.status(422).json({ - success: false, - error: { message: 'Invalid request', errors }, - }); - } else { - const { id } = result.data.query; - const data = result.data.body; - await prisma.tenant.update({ - where: { id }, - data, - }); - return res - .status(201) - .json({ success: true, message: 'Tenant updated successfully' }); - } - } else { - return res - .status(401) - .json({ success: false, error: { message: 'Not signed in' } }); - } - } catch (error) { - if (error instanceof Error) { - return res.status(500).json({ success: false, error: error.message }); - } - } - } else if (req.method === 'DELETE') { - try { - if (!req.query) { - return res - .status(404) - .json({ success: false, message: `User not found` }); - } - if (token) { - const result = deleteTenantServerSchema(req.body.company).safeParse({ - body: req.body, - query: req.query, - }); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return res.status(422).json({ - success: false, - error: { message: 'Invalid request', errors }, - }); - } else { - const { id } = result.data.query; - const { company } = result.data.body; - const { customerId, logo } = await prisma.tenant.findUnique({ - where: { id }, - select: { - customerId: true, - logo: true, - }, - }); - const storage = new Storage({ - projectId: process.env.PROJECT_ID, - credentials: { - client_email: process.env.CLIENT_EMAIL, - private_key: process.env.PRIVATE_KEY.replace(/\\n/g, '\n'), - }, - }); - const bucketName = 'faqmaker'; - const bucket = storage.bucket(bucketName); - if (logo) { - const fileName = logo.replace( - 'https://storage.googleapis.com/faqmaker/', - '', - ); - bucket.file(fileName).delete(); - } - if (!customerId) { - return res.status(404).json({ - success: false, - error: { message: `Customer not found` }, - }); - } - await prisma.tenant.delete({ - where: { id, company }, - }); - await stripe.customers.del(customerId); - return res - .status(200) - .json({ success: true, message: 'Tenant deleted successfully' }); - } - } else { - return res - .status(401) - .json({ success: false, error: { message: 'Not signed in' } }); - } - } catch (error) { - if (error instanceof Error) { - return res.status(500).json({ success: false, error: error.message }); - } - } - } else { - return res - .status(405) - .json({ success: false, error: { message: 'Method not allowed' } }); - } -} diff --git a/src/old/api/tenant/index.ts b/src/old/api/tenant/index.ts deleted file mode 100644 index 8b276fe8a..000000000 --- a/src/old/api/tenant/index.ts +++ /dev/null @@ -1,99 +0,0 @@ -import { Resend } from 'resend'; - -import { RegisterEmailTemplate } from '@/components'; -import { createTenantServerSchema } from '@/lib'; -import prisma from 'lib/prisma'; - -import type { NextApiRequest, NextApiResponse } from 'next'; - -const resend = new Resend(process.env.RESEND_API_KEY); -const { data: domains } = await resend.domains.list(); - -export default async function handler( - req: NextApiRequest, - res: NextApiResponse, -) { - if (req.method === 'POST') { - try { - if (!req.body) { - return res.status(404).json({ - success: false, - error: { message: `Information not provided` }, - }); - } - const result = createTenantServerSchema.safeParse(req.body); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return res.status(422).json({ - success: false, - error: { message: 'Invalid request', errors }, - }); - } else { - const { company, companyEmail, email, domain } = result.data; - const tenantExists = await prisma.tenant.findUnique({ - where: { email: companyEmail }, - }); - if (tenantExists) { - return res.status(409).json({ - success: false, - error: { - message: 'An account with the same company email already exists', - }, - }); - } - const userExists = await prisma.user.findUnique({ - where: { email }, - }); - if (userExists) { - return res.status(409).json({ - success: false, - error: { message: 'A user with the same email already exists' }, - }); - } - const tenant = await prisma.tenant.create({ - data: { - company, - email: companyEmail, - domain, - }, - }); - if (!tenant) { - return res.status(500).json({ - success: false, - error: { message: 'There was a problem when creating the account' }, - }); - } - const user = await prisma.user.create({ - data: { - email, - role: 'tenant', - tenant: { connect: { id: tenant.id } }, - }, - }); - if (!user) { - return res.status(500).json({ - success: false, - error: { message: 'There was a problem when creating the user' }, - }); - } - await resend.emails.send({ - from: `noreply@${domains.data[0].name}`, - to: [companyEmail], - subject: 'Welcome to FAQMaker', - react: RegisterEmailTemplate(), - }); - return res - .status(201) - .json({ success: true, message: 'Account created successfully' }); - } - } catch (error) { - if (error instanceof Error) { - return res.status(500).json({ success: false, error: error.message }); - } - } - } else { - return res - .status(405) - .json({ success: false, error: { message: 'Method not allowed' } }); - } -} diff --git a/src/old/api/tenant/logo/[id].ts b/src/old/api/tenant/logo/[id].ts deleted file mode 100644 index 2b24b0b69..000000000 --- a/src/old/api/tenant/logo/[id].ts +++ /dev/null @@ -1,82 +0,0 @@ -import { Storage } from '@google-cloud/storage'; -import { getToken } from 'next-auth/jwt'; - -import { updateLogoServerSchema } from '@/lib'; -import { bucketName } from '@/utils'; -import prisma from 'lib/prisma'; - -import type { NextApiRequest, NextApiResponse } from 'next'; - -export default async function handler( - req: NextApiRequest, - res: NextApiResponse, -) { - const token = await getToken({ req }); - if (req.method === 'PUT') { - try { - if (!req.query) { - return res - .status(404) - .json({ success: false, error: { message: `Tenant not found` } }); - } - if (token) { - const result = updateLogoServerSchema.safeParse({ - body: req.body, - query: req.query, - }); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return res.status(422).json({ - success: false, - error: { message: 'Invalid request', errors }, - }); - } else { - const { id } = result.data.query; - const { logoUrl } = result.data.body; - const { logo: oldLogo } = await prisma.tenant.findUnique({ - where: { id }, - select: { - logo: true, - }, - }); - if (oldLogo) { - const storage = new Storage({ - projectId: process.env.PROJECT_ID, - credentials: { - client_email: process.env.CLIENT_EMAIL, - private_key: process.env.PRIVATE_KEY.replace(/\\n/g, '\n'), - }, - }); - const bucket = storage.bucket(bucketName); - const fileName = oldLogo.replace( - 'https://storage.googleapis.com/faqmaker/', - '', - ); - bucket.file(fileName).delete(); - } - await prisma.tenant.update({ - where: { id }, - data: { - logo: logoUrl, - }, - }); - return res - .status(201) - .json({ success: true, message: 'Logo uploaded successfully' }); - } - } else { - return res - .status(401) - .json({ success: false, error: { message: 'Not signed in' } }); - } - } catch (error) { - if (error instanceof Error) { - return res.status(500).json({ success: false, error: error.message }); - } - } - } else { - return res - .status(405) - .json({ success: false, error: { message: 'Method not allowed' } }); - } -} From ac6a5529e2b42c1b73794f0dcec5bb5d4743eea5 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 2 May 2024 17:39:20 +0200 Subject: [PATCH 080/326] :truck: move stripe api files to app router --- src/app/api/stripe/billing/route.ts | 122 +++++++++++++++ src/{old => app}/api/stripe/checkout/[id].ts | 0 src/app/api/stripe/checkout/route.ts | 46 ++++++ .../api/stripe/customer/route.ts} | 0 .../api/stripe/webhooks/route.ts} | 0 src/lib/validations/index.ts | 1 + src/lib/validations/stripe.ts | 15 ++ src/old/api/stripe/billing/index.ts | 139 ------------------ src/old/api/stripe/checkout/index.ts | 61 -------- 9 files changed, 184 insertions(+), 200 deletions(-) create mode 100644 src/app/api/stripe/billing/route.ts rename src/{old => app}/api/stripe/checkout/[id].ts (100%) create mode 100644 src/app/api/stripe/checkout/route.ts rename src/{old/api/stripe/customer/index.ts => app/api/stripe/customer/route.ts} (100%) rename src/{old/api/stripe/webhooks/index.ts => app/api/stripe/webhooks/route.ts} (100%) create mode 100644 src/lib/validations/stripe.ts delete mode 100644 src/old/api/stripe/billing/index.ts delete mode 100644 src/old/api/stripe/checkout/index.ts diff --git a/src/app/api/stripe/billing/route.ts b/src/app/api/stripe/billing/route.ts new file mode 100644 index 000000000..6783e9ae0 --- /dev/null +++ b/src/app/api/stripe/billing/route.ts @@ -0,0 +1,122 @@ +import { NextRequest, NextResponse } from 'next/server'; +import Stripe from 'stripe'; + +import { getTenantIdSchema } from '@/lib'; +import prisma from 'lib/prisma'; + + +const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { + apiVersion: '2023-10-16', +}); + +export async function POST(req: NextRequest, res: NextResponse) { + try { + if (!req.body) { + return { error: 'Customer details not provided' }; + } + const result = getTenantIdSchema.safeParse(req.body); + if (result.success === false) { + const errors = result.error.flatten().fieldErrors; + return { error: errors }; + } else { + const { tenantId } = result.data; + const { customerId, plan } = await prisma.tenant.findUnique({ + where: { id: tenantId }, + select: { + customerId: true, + plan: true, + }, + }); + const usersCount = await prisma.user.count({ + where: { tenantId }, + }); + const tagsCount = await prisma.tag.count({ + where: { tenantId }, + }); + const productsList = await stripe.products.list({ + active: true, + }); + const [free, startup, enterprise] = productsList.data; + const products = []; + switch (plan) { + case 'free': + products.push( + { product: free.id, prices: [free.default_price] }, + { product: startup.id, prices: [startup.default_price] }, + { product: enterprise.id, prices: [enterprise.default_price] }, + ); + break; + case 'startup': + if (usersCount <= 5 && tagsCount <= 3) { + products.push( + { product: free.id, prices: [free.default_price] }, + { product: startup.id, prices: [startup.default_price] }, + { product: enterprise.id, prices: [enterprise.default_price] }, + ); + } else { + products.push( + { product: startup.id, prices: [startup.default_price] }, + { product: enterprise.id, prices: [enterprise.default_price] }, + ); + } + break; + case 'enterprise': + if (usersCount <= 5 && tagsCount <= 3) { + products.push( + { product: free.id, prices: [free.default_price] }, + { product: startup.id, prices: [startup.default_price] }, + { product: enterprise.id, prices: [enterprise.default_price] }, + ); + } else if (usersCount <= 100 && tagsCount <= 10) { + products.push( + { product: startup.id, prices: [startup.default_price] }, + { product: enterprise.id, prices: [enterprise.default_price] }, + ); + } else { + products.push({ + product: enterprise.id, + prices: [enterprise.default_price], + }); + } + break; + default: + break; + } + const configuration = await stripe.billingPortal.configurations.create({ + business_profile: { + privacy_policy_url: 'https://example.com/privacy', + terms_of_service_url: 'https://example.com/terms', + }, + default_return_url: process.env.NEXT_PUBLIC_SITE_URL, + features: { + customer_update: { + allowed_updates: ['name', 'email'], + enabled: true, + }, + invoice_history: { + enabled: true, + }, + payment_method_update: { + enabled: true, + }, + subscription_cancel: { + enabled: true, + mode: 'at_period_end', + }, + subscription_update: { + enabled: true, + default_allowed_updates: ['price', 'promotion_code'], + products: products, + }, + }, + }); + const { url } = await stripe.billingPortal.sessions.create({ + customer: customerId, + configuration: configuration.id, + }); + return NextResponse.json({ url }); + } + } catch (error) { + return NextResponse.json({ error: 'Error creating billing session' }); + } +} diff --git a/src/old/api/stripe/checkout/[id].ts b/src/app/api/stripe/checkout/[id].ts similarity index 100% rename from src/old/api/stripe/checkout/[id].ts rename to src/app/api/stripe/checkout/[id].ts diff --git a/src/app/api/stripe/checkout/route.ts b/src/app/api/stripe/checkout/route.ts new file mode 100644 index 000000000..8b1bd617b --- /dev/null +++ b/src/app/api/stripe/checkout/route.ts @@ -0,0 +1,46 @@ +import { NextRequest, NextResponse } from 'next/server'; +import Stripe from 'stripe'; + +import { createCheckoutSchema } from '@/lib'; +import { Routes } from '@/utils'; + +const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { + apiVersion: '2023-10-16', +}); + +export async function POST(req: NextRequest, res: NextResponse) { + try { + if (!req.body) { + return { error: 'Information not provided' }; + } + const result = createCheckoutSchema.safeParse(req.body); + if (result.success === false) { + const errors = result.error.flatten().fieldErrors; + return { error: errors }; + } else { + const { lookup_key, customerId } = result.data; + const prices = await stripe.prices.list({ + lookup_keys: [lookup_key], + }); + const session = await stripe.checkout.sessions.create({ + line_items: [ + { + price: prices.data[0].id, + quantity: 1, + }, + ], + customer: customerId, + customer_update: { + address: 'auto', + }, + mode: 'subscription', + success_url: `${process.env.NEXT_PUBLIC_SITE_URL}/${Routes.SITE.LOGIN}`, + cancel_url: `${process.env.NEXT_PUBLIC_SITE_URL}/register/plan?status=cancel`, + automatic_tax: { enabled: true }, + }); + return NextResponse.json({ id: session.id }); + } + } catch (error) { + return NextResponse.json({ error: 'Error creating checkout session' }); + } +} diff --git a/src/old/api/stripe/customer/index.ts b/src/app/api/stripe/customer/route.ts similarity index 100% rename from src/old/api/stripe/customer/index.ts rename to src/app/api/stripe/customer/route.ts diff --git a/src/old/api/stripe/webhooks/index.ts b/src/app/api/stripe/webhooks/route.ts similarity index 100% rename from src/old/api/stripe/webhooks/index.ts rename to src/app/api/stripe/webhooks/route.ts diff --git a/src/lib/validations/index.ts b/src/lib/validations/index.ts index c21fda6a5..9a452117c 100644 --- a/src/lib/validations/index.ts +++ b/src/lib/validations/index.ts @@ -6,3 +6,4 @@ export * from './register'; export * from './tag'; export * from './tenant'; export * from './user'; +export * from './stripe'; diff --git a/src/lib/validations/stripe.ts b/src/lib/validations/stripe.ts new file mode 100644 index 000000000..cf5d759da --- /dev/null +++ b/src/lib/validations/stripe.ts @@ -0,0 +1,15 @@ +import { z } from 'zod'; + +export const createCheckoutSchema = z.object({ + customerId: z.string(), + lookup_key: z.string(), +}); + +export const createCustomerSchema = z.object({ + company: z.string().trim().min(1, { message: 'Company name is required' }), + companyEmail: z + .string() + .trim() + .min(1, { message: 'Company email is required' }) + .email({ message: 'Invalid email' }), +}); diff --git a/src/old/api/stripe/billing/index.ts b/src/old/api/stripe/billing/index.ts deleted file mode 100644 index 26a79da7b..000000000 --- a/src/old/api/stripe/billing/index.ts +++ /dev/null @@ -1,139 +0,0 @@ -import Stripe from 'stripe'; - -import { getTenantIdSchema } from '@/lib'; -import prisma from 'lib/prisma'; - -import type { NextApiRequest, NextApiResponse } from 'next'; - -const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { - apiVersion: '2023-10-16', -}); - -export default async function handler( - req: NextApiRequest, - res: NextApiResponse, -) { - if (req.method === 'POST') { - try { - if (!req.body) { - return res.status(404).json({ - success: false, - error: { message: `Customer details not provided` }, - }); - } - const result = getTenantIdSchema.safeParse(req.body); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return res.status(422).json({ - success: false, - error: { message: 'Invalid request', errors }, - }); - } else { - const { tenantId } = result.data; - const { customerId, plan } = await prisma.tenant.findUnique({ - where: { id: tenantId }, - select: { - customerId: true, - plan: true, - }, - }); - const usersCount = await prisma.user.count({ - where: { tenantId }, - }); - const tagsCount = await prisma.tag.count({ - where: { tenantId }, - }); - const productsList = await stripe.products.list({ - active: true, - }); - const [free, startup, enterprise] = productsList.data; - const products = []; - switch (plan) { - case 'free': - products.push( - { product: free.id, prices: [free.default_price] }, - { product: startup.id, prices: [startup.default_price] }, - { product: enterprise.id, prices: [enterprise.default_price] }, - ); - break; - case 'startup': - if (usersCount <= 5 && tagsCount <= 3) { - products.push( - { product: free.id, prices: [free.default_price] }, - { product: startup.id, prices: [startup.default_price] }, - { product: enterprise.id, prices: [enterprise.default_price] }, - ); - } else { - products.push( - { product: startup.id, prices: [startup.default_price] }, - { product: enterprise.id, prices: [enterprise.default_price] }, - ); - } - break; - case 'enterprise': - if (usersCount <= 5 && tagsCount <= 3) { - products.push( - { product: free.id, prices: [free.default_price] }, - { product: startup.id, prices: [startup.default_price] }, - { product: enterprise.id, prices: [enterprise.default_price] }, - ); - } else if (usersCount <= 100 && tagsCount <= 10) { - products.push( - { product: startup.id, prices: [startup.default_price] }, - { product: enterprise.id, prices: [enterprise.default_price] }, - ); - } else { - products.push({ - product: enterprise.id, - prices: [enterprise.default_price], - }); - } - break; - default: - break; - } - const configuration = await stripe.billingPortal.configurations.create({ - business_profile: { - privacy_policy_url: 'https://example.com/privacy', - terms_of_service_url: 'https://example.com/terms', - }, - default_return_url: process.env.NEXT_PUBLIC_SITE_URL, - features: { - customer_update: { - allowed_updates: ['name', 'email'], - enabled: true, - }, - invoice_history: { - enabled: true, - }, - payment_method_update: { - enabled: true, - }, - subscription_cancel: { - enabled: true, - mode: 'at_period_end', - }, - subscription_update: { - enabled: true, - default_allowed_updates: ['price', 'promotion_code'], - products: products, - }, - }, - }); - const { url } = await stripe.billingPortal.sessions.create({ - customer: customerId, - configuration: configuration.id, - }); - return res.status(200).json({ url }); - } - } catch (error) { - if (error instanceof Error) { - res.status(500).json({ success: false, error: error.message }); - } - } - } else { - return res - .status(405) - .json({ success: false, error: { message: 'Method not allowed' } }); - } -} diff --git a/src/old/api/stripe/checkout/index.ts b/src/old/api/stripe/checkout/index.ts deleted file mode 100644 index 443683cae..000000000 --- a/src/old/api/stripe/checkout/index.ts +++ /dev/null @@ -1,61 +0,0 @@ -// import { NextApiRequest, NextApiResponse } from 'next'; -// import Stripe from 'stripe'; - -// import { Routes } from '@/utils'; - -// const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { -// apiVersion: '2023-10-16', -// }); - -// export default async function handler( -// req: NextApiRequest, -// res: NextApiResponse, -// ) { -// if (req.method === 'POST') { -// try { -// if (!req.body) { -// return res -// .status(404) -// .json({ success: false, message: `Information not provided` }); -// } -// const result = createCheckoutServerSchema.safeParse(req.body); -// if (result.success === false) { -// const errors = result.error.formErrors.fieldErrors; -// return res.status(422).json({ -// success: false, -// error: { message: 'Invalid request', errors }, -// }); -// } else { -// const { lookup_key, customerId } = result.data; -// const prices = await stripe.prices.list({ -// lookup_keys: [lookup_key], -// }); -// const session = await stripe.checkout.sessions.create({ -// line_items: [ -// { -// price: prices.data[0].id, -// quantity: 1, -// }, -// ], -// customer: customerId, -// customer_update: { -// address: 'auto', -// }, -// mode: 'subscription', -// success_url: `${process.env.NEXT_PUBLIC_SITE_URL}/${Routes.SITE.LOGIN}`, -// cancel_url: `${process.env.NEXT_PUBLIC_SITE_URL}/register/plan?status=cancel`, -// automatic_tax: { enabled: true }, -// }); -// return res.json({ id: session.id }); -// } -// } catch (error) { -// if (error instanceof Error) { -// return res.status(500).json({ success: false, error: error.message }); -// } -// } -// } else { -// return res -// .status(405) -// .json({ success: false, error: { message: 'Method not allowed' } }); -// } -// } From 2bb54a9c39f1e81bb78fd536ce49c23121a2e51f Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sat, 4 May 2024 10:37:32 +0200 Subject: [PATCH 081/326] :recycle: migrate billing portal --- src/app/api/stripe/billing/route.ts | 35 +++++++++++++------ src/hooks/queries/stripe/index.ts | 1 - .../queries/stripe/useCreateBillingPortal.ts | 21 ----------- src/lib/validations/other.ts | 4 +++ src/modules/settings/payment/Billing.tsx | 22 +++++++++--- 5 files changed, 46 insertions(+), 37 deletions(-) delete mode 100644 src/hooks/queries/stripe/useCreateBillingPortal.ts diff --git a/src/app/api/stripe/billing/route.ts b/src/app/api/stripe/billing/route.ts index 6783e9ae0..a69a86c2a 100644 --- a/src/app/api/stripe/billing/route.ts +++ b/src/app/api/stripe/billing/route.ts @@ -1,23 +1,33 @@ import { NextRequest, NextResponse } from 'next/server'; import Stripe from 'stripe'; -import { getTenantIdSchema } from '@/lib'; +import { tenantIdSchema } from '@/lib'; import prisma from 'lib/prisma'; - const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { apiVersion: '2023-10-16', }); -export async function POST(req: NextRequest, res: NextResponse) { +type Products = { + product: string; + prices: Stripe.Price[]; +}; + +export async function POST(req: NextRequest) { try { - if (!req.body) { - return { error: 'Customer details not provided' }; + const body = await req.json(); + if (!body) { + return NextResponse.json( + { + error: 'Customer details not provided', + }, + { status: 500 }, + ); } - const result = getTenantIdSchema.safeParse(req.body); + const result = tenantIdSchema.safeParse(body); if (result.success === false) { const errors = result.error.flatten().fieldErrors; - return { error: errors }; + return NextResponse.json({ error: errors }); } else { const { tenantId } = result.data; const { customerId, plan } = await prisma.tenant.findUnique({ @@ -37,7 +47,7 @@ export async function POST(req: NextRequest, res: NextResponse) { active: true, }); const [free, startup, enterprise] = productsList.data; - const products = []; + const products: Products[] = []; switch (plan) { case 'free': products.push( @@ -114,9 +124,14 @@ export async function POST(req: NextRequest, res: NextResponse) { customer: customerId, configuration: configuration.id, }); - return NextResponse.json({ url }); + return NextResponse.json({ url, customerId, plan }); } } catch (error) { - return NextResponse.json({ error: 'Error creating billing session' }); + return NextResponse.json( + { + error: 'Error creating billing session', + }, + { status: 500 }, + ); } } diff --git a/src/hooks/queries/stripe/index.ts b/src/hooks/queries/stripe/index.ts index a813ab7ef..05fd6aa3d 100644 --- a/src/hooks/queries/stripe/index.ts +++ b/src/hooks/queries/stripe/index.ts @@ -1,3 +1,2 @@ export * from './useCreateCheckout'; export * from './useCreateCustomer'; -export * from './useCreateBillingPortal'; diff --git a/src/hooks/queries/stripe/useCreateBillingPortal.ts b/src/hooks/queries/stripe/useCreateBillingPortal.ts deleted file mode 100644 index f32fb4051..000000000 --- a/src/hooks/queries/stripe/useCreateBillingPortal.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { useMutation } from '@tanstack/react-query'; -import axios from 'axios'; - -import { Routes } from '@/utils'; - -const createBillingPortal = async (tenantId: string) => { - const body = { tenantId }; - await axios.post(Routes.API.BILLING, body); - const { data } = await axios.post(Routes.API.BILLING, body); - return data; -}; - -export const useCreateBillingPortal = (tenantId: string) => { - const mutation = useMutation({ - mutationFn: () => createBillingPortal(tenantId), - onSuccess: (data) => { - window.location.assign(data.url); - }, - }); - return mutation; -}; diff --git a/src/lib/validations/other.ts b/src/lib/validations/other.ts index a7e33f68a..31b4cb216 100644 --- a/src/lib/validations/other.ts +++ b/src/lib/validations/other.ts @@ -3,3 +3,7 @@ import { z } from 'zod'; export const csvUploadClientSchema = z.object({ name: z.string().min(1, 'Column name is required'), }); + +export const tenantIdSchema = z.object({ + tenantId: z.string().cuid2(), +}); diff --git a/src/modules/settings/payment/Billing.tsx b/src/modules/settings/payment/Billing.tsx index 0f35cb13d..6b5fdcf63 100644 --- a/src/modules/settings/payment/Billing.tsx +++ b/src/modules/settings/payment/Billing.tsx @@ -3,8 +3,8 @@ import { Banknote } from 'lucide-react'; import { useForm } from 'react-hook-form'; -import { Button } from '@/components'; -import { useCreateBillingPortal } from '@/hooks'; +import { Button, errorToast } from '@/components'; +import { Routes } from '@/utils'; type Props = { tenantId: string; @@ -12,10 +12,22 @@ type Props = { export const Billing = ({ tenantId }: Props) => { const { handleSubmit } = useForm(); - const { mutate } = useCreateBillingPortal(tenantId); - const onSubmit = () => { - mutate(); + const onSubmit = async () => { + const body = { tenantId }; + const response = await fetch(Routes.API.BILLING, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(body), + }); + const data = await response.json(); + if (response.ok) { + window.location.assign(data.url); + } else { + errorToast(data.error); + } }; return ( From 449890fb6db48498b655937d42fe57eff2f88ed6 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sat, 4 May 2024 10:38:07 +0200 Subject: [PATCH 082/326] :rotating_light: run lint + prettier --- src/app/home.tsx | 1 - src/components/pagination/Pagination.tsx | 1 - 2 files changed, 2 deletions(-) diff --git a/src/app/home.tsx b/src/app/home.tsx index 3a0691c70..c3b4a1cef 100644 --- a/src/app/home.tsx +++ b/src/app/home.tsx @@ -1,6 +1,5 @@ 'use client'; - import { Tag } from '@prisma/client'; import { useSearchParams } from 'next/navigation'; diff --git a/src/components/pagination/Pagination.tsx b/src/components/pagination/Pagination.tsx index 3ebfadaff..5effc82e5 100644 --- a/src/components/pagination/Pagination.tsx +++ b/src/components/pagination/Pagination.tsx @@ -1,6 +1,5 @@ 'use client'; - import { usePathname, useRouter, useSearchParams } from 'next/navigation'; import ReactPaginate from 'react-paginate'; From aceee3b946016e6a1b72b717ce17e7d64263bb9f Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sat, 4 May 2024 10:49:08 +0200 Subject: [PATCH 083/326] :goal_net: add status --- src/app/api/stripe/billing/route.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/api/stripe/billing/route.ts b/src/app/api/stripe/billing/route.ts index a69a86c2a..0d864c208 100644 --- a/src/app/api/stripe/billing/route.ts +++ b/src/app/api/stripe/billing/route.ts @@ -27,7 +27,7 @@ export async function POST(req: NextRequest) { const result = tenantIdSchema.safeParse(body); if (result.success === false) { const errors = result.error.flatten().fieldErrors; - return NextResponse.json({ error: errors }); + return NextResponse.json({ error: errors }, { status: 500 }); } else { const { tenantId } = result.data; const { customerId, plan } = await prisma.tenant.findUnique({ From b83bcc816cc5944f357b27954ed1f01869eaec9f Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sat, 4 May 2024 10:49:37 +0200 Subject: [PATCH 084/326] :recycle: migrate checkout session --- src/app/api/stripe/checkout/route.ts | 19 +++++++++++++------ src/app/register/plan/form.tsx | 25 +++++++++++++++++++------ 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/src/app/api/stripe/checkout/route.ts b/src/app/api/stripe/checkout/route.ts index 8b1bd617b..3e38c246d 100644 --- a/src/app/api/stripe/checkout/route.ts +++ b/src/app/api/stripe/checkout/route.ts @@ -8,15 +8,19 @@ const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { apiVersion: '2023-10-16', }); -export async function POST(req: NextRequest, res: NextResponse) { +export async function POST(req: NextRequest) { try { - if (!req.body) { - return { error: 'Information not provided' }; + const body = await req.json(); + if (!body) { + return NextResponse.json( + { error: 'Information not provided' }, + { status: 500 }, + ); } - const result = createCheckoutSchema.safeParse(req.body); + const result = createCheckoutSchema.safeParse(body); if (result.success === false) { const errors = result.error.flatten().fieldErrors; - return { error: errors }; + return NextResponse.json({ error: errors }, { status: 500 }); } else { const { lookup_key, customerId } = result.data; const prices = await stripe.prices.list({ @@ -41,6 +45,9 @@ export async function POST(req: NextRequest, res: NextResponse) { return NextResponse.json({ id: session.id }); } } catch (error) { - return NextResponse.json({ error: 'Error creating checkout session' }); + return NextResponse.json( + { error: 'Error creating checkout session' }, + { status: 500 }, + ); } } diff --git a/src/app/register/plan/form.tsx b/src/app/register/plan/form.tsx index c67049694..4f4856bda 100644 --- a/src/app/register/plan/form.tsx +++ b/src/app/register/plan/form.tsx @@ -9,10 +9,9 @@ import { useParams, useRouter } from 'next/navigation'; import { useForm } from 'react-hook-form'; import { Button, errorToast, successToast } from '@/components'; -import { useCreateCheckout } from '@/hooks'; import { registerAtom } from '@/store'; import { IPlan } from '@/types'; -import { Routes } from '@/utils'; +import { Routes, getStripe } from '@/utils'; export default function Form() { const [state, setState] = useAtom(registerAtom); @@ -22,14 +21,28 @@ export default function Form() { const params = useParams(); const { status } = params; - const { mutate } = useCreateCheckout(state.customerId); - - const saveData = (value: IPlan['value'], lookup_key: string) => { + const saveData = async (value: IPlan['value'], lookup_key: string) => { if (value === 'free') { setState(RESET); router.push(Routes.SITE.LOGIN); } else { - return mutate(lookup_key); + const body = { customerId: state.customerId, lookup_key }; + const stripe = await getStripe(); + const response = await fetch(Routes.API.CHECKOUT, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(body), + }); + const checkoutSession = await response.json(); + if (response.ok) { + await stripe?.redirectToCheckout({ + sessionId: checkoutSession.data.id, + }); + } else { + errorToast(checkoutSession.error); + } } }; From bbed2b73afef19d0c5618e8b5548236934bfa5f6 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sat, 4 May 2024 11:13:11 +0200 Subject: [PATCH 085/326] :art: add missing key --- src/app/register/form.tsx | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/app/register/form.tsx b/src/app/register/form.tsx index f89109579..47ab0e20b 100644 --- a/src/app/register/form.tsx +++ b/src/app/register/form.tsx @@ -70,21 +70,23 @@ export default function Form() {

    Your company details

    {fields.map((field) => ( - - - +
    + + + +
    ))}
    -
    +

    FAQMaker

    diff --git a/src/app/login/layout.tsx b/src/app/login/layout.tsx index 8b54f371a..16a91c430 100644 --- a/src/app/login/layout.tsx +++ b/src/app/login/layout.tsx @@ -1,4 +1,4 @@ -import { ReactNode } from 'react'; +import type { ReactNode } from 'react'; import { ThemeToggle } from '@/modules'; diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index edccc3e21..b9bfa463c 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -3,6 +3,31 @@ import Link from 'next/link'; import { LoginButton } from '@/components'; import { Routes } from '@/utils'; +const errors = { + Signin: 'Try signing with a different account.', + OAuthSignin: 'Try signing with a different account.', + OAuthCallback: 'Try signing with a different account.', + OAuthCreateAccount: 'Try signing with a different account.', + EmailCreateAccount: 'Try signing with a different account.', + Callback: 'Try signing with a different account.', + OAuthAccountNotLinked: + 'To confirm your identity, sign in with the same account you used originally.', + EmailSignin: 'Check your email address.', + CredentialsSignin: + 'Sign in failed. Check the details you provided are correct.', + AccessDenied: 'User not found.', + default: 'Unable to sign in.', +}; + +type ErrorProps = { + error: string; +}; + +const LoginError = ({ error }: ErrorProps) => { + const errorMessage = error && (errors[error] ?? errors.default); + return
    {errorMessage}
    ; +}; + export default async function Page({ searchParams }) { const { error, callbackUrl } = searchParams; @@ -31,28 +56,3 @@ export default async function Page({ searchParams }) { ); } - -const errors = { - Signin: 'Try signing with a different account.', - OAuthSignin: 'Try signing with a different account.', - OAuthCallback: 'Try signing with a different account.', - OAuthCreateAccount: 'Try signing with a different account.', - EmailCreateAccount: 'Try signing with a different account.', - Callback: 'Try signing with a different account.', - OAuthAccountNotLinked: - 'To confirm your identity, sign in with the same account you used originally.', - EmailSignin: 'Check your email address.', - CredentialsSignin: - 'Sign in failed. Check the details you provided are correct.', - AccessDenied: 'User not found.', - default: 'Unable to sign in.', -}; - -type ErrorProps = { - error: string; -}; - -const LoginError = ({ error }: ErrorProps) => { - const errorMessage = error && (errors[error] ?? errors.default); - return
    {errorMessage}
    ; -}; diff --git a/src/app/page.tsx b/src/app/page.tsx index 115d2ef52..5c8c66772 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -20,7 +20,7 @@ export default async function Page({ searchParams }) { redirect(Routes.SITE.LOGIN); } - const tenantId = me.tenantId; + const { tenantId } = me; const page = Number(searchParams?.page) || 0; const query = searchParams.query || ''; const tag = searchParams.tag || ''; @@ -35,7 +35,7 @@ export default async function Page({ searchParams }) { return (
    -
    +
    -
    +
    diff --git a/src/app/profile/profile.tsx b/src/app/profile/profile.tsx index 1e94f608f..825fa3f7d 100644 --- a/src/app/profile/profile.tsx +++ b/src/app/profile/profile.tsx @@ -1,7 +1,12 @@ 'use client'; import { UpdateProfile, UserAnswers, UserQuestions } from '@/modules'; -import { Me, NodeWithQuestionAndAnswer, QuestionWithNodeId } from '@/types'; + +import type { + Me, + NodeWithQuestionAndAnswer, + QuestionWithNodeId, +} from '@/types'; type Props = { me: Me; @@ -9,26 +14,27 @@ type Props = { answers?: NodeWithQuestionAndAnswer[]; }; +const Section = ({ children }) => ( +
    + {children} +
    +); + export default function Profile({ me, questions, answers }: Props) { const sections = [ - { component: }, + { component: , id: 'updateProfile' }, { component: , + id: 'userQuestions', }, - { component: }, + { component: , id: 'userAnswers' }, ]; return (
    - {sections.map((section, index) => ( -
    {section.component}
    + {sections.map((section) => ( +
    {section.component}
    ))}
    ); } - -const Section = ({ children }) => ( -
    - {children} -
    -); diff --git a/src/app/providers.tsx b/src/app/providers.tsx index b1c57bf6c..3c67bded2 100644 --- a/src/app/providers.tsx +++ b/src/app/providers.tsx @@ -32,15 +32,14 @@ function makeQueryClient() { }); } -let browserQueryClient: QueryClient | undefined = undefined; +let browserQueryClient: QueryClient | undefined; function getQueryClient() { if (typeof window === 'undefined') { return makeQueryClient(); - } else { - if (!browserQueryClient) browserQueryClient = makeQueryClient(); - return browserQueryClient; } + if (!browserQueryClient) browserQueryClient = makeQueryClient(); + return browserQueryClient; } export default function Providers({ children }) { diff --git a/src/app/question/[id]/page.tsx b/src/app/question/[id]/page.tsx index 6fe022f1b..86754443e 100644 --- a/src/app/question/[id]/page.tsx +++ b/src/app/question/[id]/page.tsx @@ -10,14 +10,14 @@ export default async function Page({ params }) { const me = await getMe(); if (!me) return redirect(Routes.SITE.LOGIN); - const tenantId = me.tenantId; + const { tenantId } = me; const { id } = params; const node = await getNode(tenantId, id); return (
    -
    +
    diff --git a/src/app/question/[id]/question.tsx b/src/app/question/[id]/question.tsx index c61ef19d0..6434d8fe4 100644 --- a/src/app/question/[id]/question.tsx +++ b/src/app/question/[id]/question.tsx @@ -16,8 +16,10 @@ import { TooltipContent, TooltipTrigger, } from '@/components'; -import { ExtendedNode } from '@/types'; import { Routes, dateOptions } from '@/utils'; + +import type { ExtendedNode } from '@/types'; + const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { ssr: false, }); @@ -68,6 +70,8 @@ export default function Question({ node }: Props) {
    diff --git a/src/app/question/new/page.tsx b/src/app/question/new/page.tsx index 4d922e788..70f9e2473 100644 --- a/src/app/question/new/page.tsx +++ b/src/app/question/new/page.tsx @@ -10,14 +10,14 @@ export default async function Page() { const me = await getMe(); if (!me) return redirect(Routes.SITE.LOGIN); - const tenantId = me.tenantId; + const { tenantId } = me; const integrations = await getIntegration(tenantId); const tags = await getTags(tenantId); return (
    -
    +
    diff --git a/src/app/register/confirm/form.tsx b/src/app/register/confirm/form.tsx index 3bd7d969b..0719cd35d 100644 --- a/src/app/register/confirm/form.tsx +++ b/src/app/register/confirm/form.tsx @@ -6,8 +6,7 @@ import { zodResolver } from '@hookform/resolvers/zod'; import { useAtom } from 'jotai'; import { MoveLeft } from 'lucide-react'; import { useRouter } from 'next/navigation'; -import { SubmitHandler, useForm } from 'react-hook-form'; -import { z } from 'zod'; +import { useForm } from 'react-hook-form'; import { createTenant } from '@/actions'; import { Button } from '@/components'; @@ -16,6 +15,9 @@ import { registerCompleteClientSchema } from '@/lib'; import { registerAtom } from '@/store'; import { Routes } from '@/utils'; +import type { SubmitHandler } from 'react-hook-form'; +import type { z } from 'zod'; + type Schema = z.infer; export default function Form() { diff --git a/src/app/register/form.tsx b/src/app/register/form.tsx index 47ab0e20b..9e2d5db83 100644 --- a/src/app/register/form.tsx +++ b/src/app/register/form.tsx @@ -5,15 +5,17 @@ import { useAtom } from 'jotai'; import { MoveRight } from 'lucide-react'; import Link from 'next/link'; import { useRouter } from 'next/navigation'; -import { SubmitHandler, useForm } from 'react-hook-form'; -import { z } from 'zod'; +import { useForm } from 'react-hook-form'; import { Button, Field, Input } from '@/components'; import { registerCompanyClientSchema } from '@/lib'; import { registerAtom } from '@/store'; -import { ITenantCreateFields } from '@/types'; import { Routes } from '@/utils'; +import type { ITenantCreateFields } from '@/types'; +import type { SubmitHandler } from 'react-hook-form'; +import type { z } from 'zod'; + type Schema = z.infer; export default function Form() { diff --git a/src/app/register/layout.tsx b/src/app/register/layout.tsx index ff3da6f2a..53c8292bd 100644 --- a/src/app/register/layout.tsx +++ b/src/app/register/layout.tsx @@ -1,8 +1,9 @@ -import { ReactNode } from 'react'; +import type { ReactNode } from 'react'; import { Stepper } from '@/components'; import { ThemeToggle } from '@/modules'; -import { TSteps } from '@/types'; + +import type { TSteps } from '@/types'; type Props = { children: ReactNode; @@ -36,7 +37,7 @@ export default function AuthLayout({ {children}
    ) : ( - <>{children} + children )}
    ); diff --git a/src/app/register/plan/form.tsx b/src/app/register/plan/form.tsx index 4f4856bda..d3a0408bd 100644 --- a/src/app/register/plan/form.tsx +++ b/src/app/register/plan/form.tsx @@ -10,9 +10,10 @@ import { useForm } from 'react-hook-form'; import { Button, errorToast, successToast } from '@/components'; import { registerAtom } from '@/store'; -import { IPlan } from '@/types'; import { Routes, getStripe } from '@/utils'; +import type { IPlan } from '@/types'; + export default function Form() { const [state, setState] = useAtom(registerAtom); @@ -111,10 +112,10 @@ export default function Form() {

    Choose the right plan for you

    - {plans.map((plan, index) => ( + {plans.map((plan) => (
    saveData(plan.value, plan.lookup_key))} - key={index} + key={plan.value} className="w-full overflow-hidden rounded-md bg-grayA-3 p-4 text-center text-gray-12 shadow-sm shadow-tealA-7 transition-all duration-300 hover:shadow-tealA-8" >
    @@ -131,15 +132,15 @@ export default function Form() {

      - {plan.benefits.map((benefit, index) => ( -
    • + {plan.benefits.map((benefit) => ( +
    • {benefit}

    • ))} - {plan.drawbacks?.map((drawback, index) => ( + {plan.drawbacks?.map((drawback) => (
    • diff --git a/src/app/register/user/form.tsx b/src/app/register/user/form.tsx index 902061b67..bee696d73 100644 --- a/src/app/register/user/form.tsx +++ b/src/app/register/user/form.tsx @@ -5,14 +5,16 @@ import { useAtom } from 'jotai'; import { MoveLeft, MoveRight } from 'lucide-react'; import Link from 'next/link'; import { useRouter } from 'next/navigation'; -import { SubmitHandler, useForm } from 'react-hook-form'; -import { z } from 'zod'; +import { useForm } from 'react-hook-form'; import { Button, Field, Input } from '@/components'; import { registerUserClientSchema } from '@/lib'; import { registerAtom } from '@/store'; import { Routes } from '@/utils'; +import type { SubmitHandler } from 'react-hook-form'; +import type { z } from 'zod'; + type Schema = z.infer; export default function Form() { diff --git a/src/app/settings/page.tsx b/src/app/settings/page.tsx index a27796582..59532229c 100644 --- a/src/app/settings/page.tsx +++ b/src/app/settings/page.tsx @@ -21,7 +21,7 @@ export default async function Page() { if (!me) return redirect(Routes.SITE.LOGIN); if (me.role === 'user') return redirect(Routes.SITE.HOME); - const tenantId = me.tenantId; + const { tenantId } = me; const nodesCount = await getNodesCount(tenantId); const usersCount = await getUsersCount(tenantId); @@ -34,7 +34,7 @@ export default async function Page() { return (
      -
      +
      - {tabs.map((tab, index) => ( + {tabs.map((tab) => ( diff --git a/src/components/avatar/Avatar.tsx b/src/components/avatar/Avatar.tsx index c0f6572c3..c5c4ac333 100644 --- a/src/components/avatar/Avatar.tsx +++ b/src/components/avatar/Avatar.tsx @@ -1,6 +1,7 @@ 'use client'; -import { ComponentPropsWithoutRef, ElementRef, forwardRef } from 'react'; +import type { ComponentPropsWithoutRef, ElementRef } from 'react'; +import { forwardRef } from 'react'; import * as AvatarPrimitive from '@radix-ui/react-avatar'; diff --git a/src/components/badge/Badge.tsx b/src/components/badge/Badge.tsx index c96d53b56..df17525e4 100644 --- a/src/components/badge/Badge.tsx +++ b/src/components/badge/Badge.tsx @@ -1,4 +1,5 @@ -import { forwardRef, HTMLAttributes } from 'react'; +import type { HTMLAttributes } from 'react'; +import { forwardRef } from 'react'; import { cva, type VariantProps } from 'class-variance-authority'; @@ -7,14 +8,14 @@ import { cn } from '@/utils'; const badge = cva('text-xs font-semibold', { variants: { variant: { - primary: ['bg-gray-12 text-gray-1 text-center'], - disabled: ['bg-gray-11 text-gray-1 text-center'], + primary: ['bg-gray-12 text-center text-gray-1'], + disabled: ['bg-gray-11 text-center text-gray-1'], }, rounded: { full: ['rounded-full'], }, size: { - small: ['px-2 min-w-[40px]'], + small: ['min-w-[40px] px-2'], }, }, }); diff --git a/src/components/button/Button.tsx b/src/components/button/Button.tsx index 13a6d93b0..c8e5047f5 100644 --- a/src/components/button/Button.tsx +++ b/src/components/button/Button.tsx @@ -1,4 +1,5 @@ -import { ButtonHTMLAttributes, forwardRef } from 'react'; +import type { ButtonHTMLAttributes } from 'react'; +import { forwardRef } from 'react'; import { Slot } from '@radix-ui/react-slot'; import { cva, type VariantProps } from 'class-variance-authority'; @@ -9,26 +10,26 @@ const button = cva('transition-all duration-300', { variants: { variant: { primary: [ - 'bg-teal-9 hover:bg-teal-10 text-white shadow-sm shadow-transparent', + 'bg-teal-9 text-white shadow-sm shadow-transparent hover:bg-teal-10', ], ghost: [ - 'bg-gray-3 hover:bg-gray-4 shadow-sm shadow-grayA-8 text-gray-12', + 'bg-gray-3 text-gray-12 shadow-sm shadow-grayA-8 hover:bg-gray-4', ], secondary: [ - 'bg-transparent text-tealA-11 shadow shadow-sm shadow-tealA-7 hover:shadow-tealA-8', + 'bg-transparent text-tealA-11 shadow-sm shadow-tealA-7 hover:shadow-tealA-8', ], disabled: [ - 'bg-teal-surfaceLight dark:bg-teal-surfaceDark shadow-sm text-tealA-11 shadow-tealA-7 hover:shadow-tealA-8', + 'bg-teal-surfaceLight text-tealA-11 shadow-sm shadow-tealA-7 hover:shadow-tealA-8 dark:bg-teal-surfaceDark', ], disabledDestructive: [ - 'bg-red-surfaceLight dark:bg-red-surfaceDark shadow-sm text-redA-11 shadow-redA-7 hover:shadow-redA-8', + 'bg-red-surfaceLight text-redA-11 shadow-sm shadow-redA-7 hover:shadow-redA-8 dark:bg-red-surfaceDark', ], destructive: [ - 'bg-red-9 hover:bg-red-10 text-white shadow-sm shadow-transparent', + 'bg-red-9 text-white shadow-sm shadow-transparent hover:bg-red-10', ], }, icon: { - withIcon: ['flex justify-center items-center gap-1'], + withIcon: ['flex items-center justify-center gap-1'], }, font: { small: ['text-sm'], @@ -46,10 +47,10 @@ const button = cva('transition-all duration-300', { semibold: ['font-semibold'], }, size: { - small: ['py-1 px-2 w-fit'], - medium: ['py-2 px-4 w-fit'], - full: ['py-2 w-full'], - icon: ['h-6 w-6'], + small: ['w-fit px-2 py-1'], + medium: ['w-fit px-4 py-2'], + full: ['w-full py-2'], + icon: ['size-6'], }, }, defaultVariants: { diff --git a/src/components/button/LoginButton.tsx b/src/components/button/LoginButton.tsx index f3e1ffe2d..ea8e94e55 100644 --- a/src/components/button/LoginButton.tsx +++ b/src/components/button/LoginButton.tsx @@ -4,7 +4,8 @@ import Image from 'next/image'; import { signIn } from 'next-auth/react'; import googleIcon from '@/assets/google.svg'; -import { Button } from '@/components'; + +import { Button } from './Button'; type Props = { callbackUrl: string; diff --git a/src/components/dialog/Dialog.tsx b/src/components/dialog/Dialog.tsx index 70ee4b08f..bdadd2a78 100644 --- a/src/components/dialog/Dialog.tsx +++ b/src/components/dialog/Dialog.tsx @@ -46,7 +46,7 @@ const DialogContent = React.forwardRef< > {children} - + Close diff --git a/src/components/dropdown/Dropdown.tsx b/src/components/dropdown/Dropdown.tsx index 543bacc11..4b608b0dd 100644 --- a/src/components/dropdown/Dropdown.tsx +++ b/src/components/dropdown/Dropdown.tsx @@ -1,6 +1,7 @@ 'use client'; -import { ComponentPropsWithoutRef, ElementRef, forwardRef } from 'react'; +import type { ComponentPropsWithoutRef, ElementRef } from 'react'; +import { forwardRef } from 'react'; import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu'; diff --git a/src/components/field/Field.tsx b/src/components/field/Field.tsx index eca3921b1..807e9fd04 100644 --- a/src/components/field/Field.tsx +++ b/src/components/field/Field.tsx @@ -1,4 +1,4 @@ -import { ReactNode } from 'react'; +import type { ReactNode } from 'react'; import { HelpCircle } from 'lucide-react'; @@ -42,7 +42,7 @@ export const Field = ({ {info && ( - +

      {info}

      diff --git a/src/components/input/Input.tsx b/src/components/input/Input.tsx index 23f60462f..6f2b4c35c 100644 --- a/src/components/input/Input.tsx +++ b/src/components/input/Input.tsx @@ -1,4 +1,5 @@ -import { ReactNode, forwardRef } from 'react'; +import type { ReactNode } from 'react'; +import { forwardRef } from 'react'; import { cn } from '@/utils'; @@ -15,9 +16,7 @@ export const Input = forwardRef( ({ className, type, withIcon = false, icon, ...props }, ref) => { return withIcon ? (
      - - {icon} - + {icon} ( ({ className, size, border, color, ...props }, ref) => { - return ( - <> - {size === 'items' ? ( -
      -
      - - Loading... - -
      -
      - ) : ( -
      -
      - - Loading... - -
      -
      - )} - + return size === 'items' ? ( +
      +
      + + Loading... + +
      +
      + ) : ( +
      +
      + + Loading... + +
      +
      ); }, ); diff --git a/src/components/select/Select.tsx b/src/components/select/Select.tsx index b75ef35a8..1791d87ad 100644 --- a/src/components/select/Select.tsx +++ b/src/components/select/Select.tsx @@ -1,6 +1,7 @@ 'use client'; -import { forwardRef, ElementRef, ComponentPropsWithoutRef } from 'react'; +import type { ElementRef, ComponentPropsWithoutRef } from 'react'; +import { forwardRef } from 'react'; import * as SelectPrimitive from '@radix-ui/react-select'; import { Check, ChevronDown } from 'lucide-react'; @@ -25,7 +26,7 @@ const SelectTrigger = forwardRef< > {children} - + )); @@ -73,9 +74,9 @@ const SelectItem = forwardRef< )} {...props} > - + - + diff --git a/src/components/stepper/Stepper.tsx b/src/components/stepper/Stepper.tsx index ca6d874a1..14f3e7821 100644 --- a/src/components/stepper/Stepper.tsx +++ b/src/components/stepper/Stepper.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { BadgeCheck } from 'lucide-react'; -import { TSteps } from '@/types'; +import type { TSteps } from '@/types'; type Props = { steps: TSteps[]; @@ -17,7 +17,7 @@ export const Stepper = ({ steps, currentStep }: Props) => {
      {step.id < currentStep ? (

      -

      ) : ( diff --git a/src/components/tabs/Tabs.tsx b/src/components/tabs/Tabs.tsx index 34bed8366..e6632b108 100644 --- a/src/components/tabs/Tabs.tsx +++ b/src/components/tabs/Tabs.tsx @@ -1,6 +1,7 @@ 'use client'; -import { forwardRef, ElementRef, ComponentPropsWithoutRef } from 'react'; +import type { ElementRef, ComponentPropsWithoutRef } from 'react'; +import { forwardRef } from 'react'; import * as TabsPrimitive from '@radix-ui/react-tabs'; @@ -30,7 +31,7 @@ const TabsTrigger = forwardRef< { - return toast.error(error ? error : `Something went wrong`); + return toast.error(error || `Something went wrong`); }; export const successToast = (text: string) => { @@ -15,16 +16,15 @@ export const promiseToast = ( loading: string, ) => { return toast.promise(promise, { - loading: loading, + loading, success: (data: AxiosResponse['data']) => { return `${data.message}`; }, error: (data) => { if (data.response.data.error) { return `${data.response.data.error.message}`; - } else { - return 'Something went wrong'; } + return 'Something went wrong'; }, }); }; diff --git a/src/components/tooltip/Tooltip.tsx b/src/components/tooltip/Tooltip.tsx index 5621c92f5..53962f0eb 100644 --- a/src/components/tooltip/Tooltip.tsx +++ b/src/components/tooltip/Tooltip.tsx @@ -1,6 +1,7 @@ 'use client'; -import { forwardRef, ElementRef, ComponentPropsWithoutRef } from 'react'; +import type { ElementRef, ComponentPropsWithoutRef } from 'react'; +import { forwardRef } from 'react'; import * as TooltipPrimitive from '@radix-ui/react-tooltip'; diff --git a/src/hooks/queries/stripe/useCreateCustomer.ts b/src/hooks/queries/stripe/useCreateCustomer.ts index e433167c4..744389938 100644 --- a/src/hooks/queries/stripe/useCreateCustomer.ts +++ b/src/hooks/queries/stripe/useCreateCustomer.ts @@ -1,10 +1,11 @@ import { useMutation } from '@tanstack/react-query'; import axios from 'axios'; -import { z } from 'zod'; -import { registerCompleteClientSchema } from '@/lib'; import { Routes } from '@/utils'; +import type { registerCompleteClientSchema } from '@/lib'; +import type { z } from 'zod'; + type Schema = z.infer; const createCustomer = async (values: Schema) => { @@ -12,7 +13,7 @@ const createCustomer = async (values: Schema) => { ...values, }; const { data } = await axios.post(Routes.API.CUSTOMER, body); - const customerId = data.customerId; + const { customerId } = data; return customerId; }; diff --git a/src/hooks/useMediaQuery.tsx b/src/hooks/useMediaQuery.tsx index f311fff5e..7920132ad 100644 --- a/src/hooks/useMediaQuery.tsx +++ b/src/hooks/useMediaQuery.tsx @@ -3,10 +3,10 @@ import { useEffect, useState } from 'react'; export function useMediaQuery(query: string): boolean { - const getMatches = (query: string): boolean => { + const getMatches = (mediaQuery: string): boolean => { // Prevents SSR issues if (typeof window !== 'undefined') { - return window.matchMedia(query).matches; + return window.matchMedia(mediaQuery).matches; } return false; }; diff --git a/src/lib/SuspenseWrapper.tsx b/src/lib/SuspenseWrapper.tsx index 7b5205c8f..2ff3878ea 100644 --- a/src/lib/SuspenseWrapper.tsx +++ b/src/lib/SuspenseWrapper.tsx @@ -1,6 +1,9 @@ -import { ReactNode, Suspense } from 'react'; +import type { ReactNode } from 'react'; +import { Suspense } from 'react'; -import { Loader, LoaderProps } from '@/components'; +import { Loader } from '@/components'; + +import type { LoaderProps } from '@/components'; type Props = { children: ReactNode; diff --git a/src/modules/header/Header.tsx b/src/modules/header/Header.tsx index da307f860..8c5b4410e 100644 --- a/src/modules/header/Header.tsx +++ b/src/modules/header/Header.tsx @@ -17,11 +17,12 @@ import { TooltipContent, TooltipTrigger, } from '@/components'; -import { Me } from '@/types'; import { Routes } from '@/utils'; import { ThemeToggle } from '../theme'; +import type { Me } from '@/types'; + type Props = { user: Me; }; @@ -50,7 +51,7 @@ export const Header = ({ user }: Props) => { href={Routes.SITE.PROFILE} className="flex items-center gap-1 hover:text-gray-11" > - + {user.email[0]} @@ -85,6 +86,8 @@ export const Header = ({ user }: Props) => { @@ -124,7 +127,11 @@ export const Header = ({ user }: Props) => { Settings )} -
      diff --git a/src/modules/list/List.tsx b/src/modules/list/List.tsx index b1aaf9130..9edfab7e3 100644 --- a/src/modules/list/List.tsx +++ b/src/modules/list/List.tsx @@ -9,8 +9,10 @@ import { TooltipContent, TooltipTrigger, } from '@/components'; -import { ExtendedNode } from '@/types'; import { Routes, dateOptions, timeOptions } from '@/utils'; + +import type { ExtendedNode } from '@/types'; + const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { ssr: false, }); @@ -33,7 +35,7 @@ export const List = ({ nodes, message }: Props) => {
      -

      +

      { {!node.answer && ( - + Unanswered )} - +

      Asked by {node.question.user.name}

      @@ -87,7 +89,7 @@ export const List = ({ nodes, message }: Props) => { {node.answer && ( - +

      Answered by {node.answer.user.name}

      diff --git a/src/modules/profile/Answers.tsx b/src/modules/profile/Answers.tsx index d8fdd73b9..9ce97a4df 100644 --- a/src/modules/profile/Answers.tsx +++ b/src/modules/profile/Answers.tsx @@ -4,8 +4,10 @@ import { MoveRight } from 'lucide-react'; import dynamic from 'next/dynamic'; import Link from 'next/link'; -import { NodeWithQuestionAndAnswer } from '@/hooks'; import { Routes } from '@/utils'; + +import type { NodeWithQuestionAndAnswer } from '@/types'; + const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { ssr: false, }); @@ -24,11 +26,11 @@ export const UserAnswers = ({ nodes }: Props) => { Answers

      {nodes && nodes.length > 0 ? ( -
        - {nodes.map((node, index) => ( +
          + {nodes.map((node) => (
        • { const onSubmit: SubmitHandler = async (data) => { const formData = new FormData(); - for (const key in data) { + Object.keys(data).forEach((key) => { formData.append(key, data[key]); - } + }); formData.append('role', me.role); formData.append('id', me.id); formData.append('tenantId', me.tenantId); @@ -54,13 +56,13 @@ export const UpdateProfile = ({ me }: Props) => { label: 'Name', value: 'name', type: 'text', - icon: , + icon: , }, { label: 'Email', value: 'email', type: 'email', - icon: , + icon: , }, ], [], @@ -87,13 +89,13 @@ export const UpdateProfile = ({ me }: Props) => { {me.image ? ( {'Profile ) : ( - + )}
            {fields.map((field) => ( diff --git a/src/modules/question/TagsList.tsx b/src/modules/question/TagsList.tsx index ed607e289..18fcedc25 100644 --- a/src/modules/question/TagsList.tsx +++ b/src/modules/question/TagsList.tsx @@ -1,11 +1,11 @@ 'use client'; -import { Dispatch, SetStateAction } from 'react'; - -import { Tag } from '@prisma/client'; +import type { Dispatch, SetStateAction } from 'react'; import { Button } from '@/components'; +import type { Tag } from '@prisma/client'; + type Props = { tags: Tag[]; selectedTags: string[]; @@ -40,7 +40,6 @@ export const TagsList = ({ tags, selectedTags, setSelectedTags }: Props) => { ))}
          ); - } else { - return

          No tags

          ; } + return

          No tags

          ; }; diff --git a/src/modules/search/Search.tsx b/src/modules/search/Search.tsx index 698879234..353e90778 100644 --- a/src/modules/search/Search.tsx +++ b/src/modules/search/Search.tsx @@ -1,8 +1,7 @@ 'use client'; -import { MouseEvent } from 'react'; +import type { MouseEvent } from 'react'; -import { Tag } from '@prisma/client'; import { SearchIcon, TagIcon } from 'lucide-react'; import { usePathname, useRouter, useSearchParams } from 'next/navigation'; import { useDebouncedCallback } from 'use-debounce'; @@ -16,6 +15,8 @@ import { Label, } from '@/components'; +import type { Tag } from '@prisma/client'; + type Props = { tags: Tag[]; }; @@ -89,7 +90,8 @@ export const Search = ({ tags }: Props) => { key={tag.id} > {currentTag === tag.label && ( - + )} ))} diff --git a/src/modules/settings/general/Company.tsx b/src/modules/settings/general/Company.tsx index 471ccab3c..e6648097b 100644 --- a/src/modules/settings/general/Company.tsx +++ b/src/modules/settings/general/Company.tsx @@ -3,14 +3,16 @@ import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; -import { Tenant } from '@prisma/client'; -import { SubmitHandler, useForm } from 'react-hook-form'; -import { z } from 'zod'; +import { useForm } from 'react-hook-form'; import { updateTenant } from '@/actions'; import { Button, Field, Input } from '@/components'; import { updateTenantClientSchema } from '@/lib'; -import { ITenantUpdateFields } from '@/types'; + +import type { ITenantUpdateFields } from '@/types'; +import type { Tenant } from '@prisma/client'; +import type { SubmitHandler } from 'react-hook-form'; +import type { z } from 'zod'; type Props = { tenant: Tenant; @@ -36,9 +38,9 @@ export function Company({ tenant }: Props) { const onSubmit: SubmitHandler = async (data) => { const formData = new FormData(); - for (const key in data) { + Object.keys(data).forEach((key) => { formData.append(key, data[key]); - } + }); formData.append('id', tenant.id); await updateTenant(formData); }; diff --git a/src/modules/settings/general/Data.tsx b/src/modules/settings/general/Data.tsx index db8b00511..53109ecbd 100644 --- a/src/modules/settings/general/Data.tsx +++ b/src/modules/settings/general/Data.tsx @@ -1,13 +1,12 @@ import { HelpCircle, UserIcon, Wallet } from 'lucide-react'; type Props = { - tenantId: string; plan: string; nodesCount: number; usersCount: number; }; -export const Data = ({ tenantId, plan, nodesCount, usersCount }: Props) => { +export const Data = ({ plan, nodesCount, usersCount }: Props) => { const iconStyles = 'hidden h-9 w-9 xl:block'; const cards = [ @@ -29,23 +28,21 @@ export const Data = ({ tenantId, plan, nodesCount, usersCount }: Props) => { ]; return ( - <> -
            - {cards.map((card, index) => ( -
          • - {card.icon} -
            -

            {card.text}

            -

            - {card.value} -

            -
            -
          • - ))} -
          - +
            + {cards.map((card) => ( +
          • + {card.icon} +
            +

            {card.text}

            +

            + {card.value} +

            +
            +
          • + ))} +
          ); }; diff --git a/src/modules/settings/general/Files.tsx b/src/modules/settings/general/Files.tsx index 5bdb25e20..244dde413 100644 --- a/src/modules/settings/general/Files.tsx +++ b/src/modules/settings/general/Files.tsx @@ -3,18 +3,20 @@ import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; -import { Tenant } from '@prisma/client'; import { Upload } from 'lucide-react'; import Image from 'next/image'; import Dropzone from 'react-dropzone'; -import { Controller, SubmitHandler, useForm } from 'react-hook-form'; +import { Controller, useForm } from 'react-hook-form'; import { v4 as uuid } from 'uuid'; -import { z } from 'zod'; import { getSignedLogo, updateLogo } from '@/actions'; import { Button } from '@/components'; import { filesClientSchema } from '@/lib'; +import type { Tenant } from '@prisma/client'; +import type { SubmitHandler } from 'react-hook-form'; +import type { z } from 'zod'; + type Props = { tenant: Tenant; }; @@ -30,7 +32,7 @@ export const Files = ({ tenant }: Props) => { handleSubmit, control, reset, - formState: { isSubmitting, isDirty, isValid, errors }, + formState: { isSubmitting, isDirty, isValid }, } = useForm({ resolver: zodResolver(filesClientSchema), mode: 'onBlur', @@ -53,7 +55,7 @@ export const Files = ({ tenant }: Props) => { formData.forEach((_value, key) => { formData.delete(key); }); - const logoUrl = url + 'logos/' + logo; + const logoUrl = `${url}logos/${logo}`; formData.append('logoUrl', logoUrl); formData.append('id', tenant.id); await updateLogo(formData); @@ -82,7 +84,7 @@ export const Files = ({ tenant }: Props) => { onSubmit={handleSubmit(onSubmit)} > (
          @@ -112,13 +114,13 @@ export const Files = ({ tenant }: Props) => { {file?.name ) : ( -
          - +
          +
          )}

          diff --git a/src/modules/settings/general/General.tsx b/src/modules/settings/general/General.tsx index 0fdb439cc..3db4fae37 100644 --- a/src/modules/settings/general/General.tsx +++ b/src/modules/settings/general/General.tsx @@ -1,10 +1,10 @@ -import { Integrations as IntegrationsType, Tenant } from '@prisma/client'; - import { Company } from './Company'; import { Data } from './Data'; import { Files } from './Files'; import { Integrations } from './Integrations'; +import type { Integrations as IntegrationsType, Tenant } from '@prisma/client'; + type Props = { tenant: Tenant; integrations: IntegrationsType; @@ -35,7 +35,6 @@ export const General = ({ )}

          = async (data) => { const formData = new FormData(); - for (const key in data) { + Object.keys(data).forEach((key) => { formData.append(key, data[key]); - } + }); formData.append('tenantId', tenantId); await upsertIntegrations(formData); }; diff --git a/src/modules/settings/payment/Delete.tsx b/src/modules/settings/payment/Delete.tsx index bf7020a69..0c2d98894 100644 --- a/src/modules/settings/payment/Delete.tsx +++ b/src/modules/settings/payment/Delete.tsx @@ -4,7 +4,7 @@ import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; import { Flame } from 'lucide-react'; -import { SubmitHandler, useForm } from 'react-hook-form'; +import { useForm } from 'react-hook-form'; import { z } from 'zod'; import { deleteTenant } from '@/actions'; @@ -20,6 +20,8 @@ import { Input, } from '@/components'; +import type { SubmitHandler } from 'react-hook-form'; + type Props = { tenantId: string; company: string; @@ -45,9 +47,9 @@ export const Delete = ({ tenantId, company }: Props) => { const onSubmit: SubmitHandler = async (data) => { const formData = new FormData(); - for (const key in data) { + Object.keys(data).forEach((key) => { formData.append(key, data[key]); - } + }); formData.append('id', tenantId); formData.append('company', company); await deleteTenant(formData); diff --git a/src/modules/settings/tags/Create.tsx b/src/modules/settings/tags/Create.tsx index f10394dae..aeb28904a 100644 --- a/src/modules/settings/tags/Create.tsx +++ b/src/modules/settings/tags/Create.tsx @@ -1,10 +1,8 @@ import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; -import { $Enums } from '@prisma/client'; import { PlusCircle, Tag as TagIcon } from 'lucide-react'; -import { SubmitHandler, useForm } from 'react-hook-form'; -import { z } from 'zod'; +import { useForm } from 'react-hook-form'; import { createTag } from '@/actions'; import { @@ -25,6 +23,10 @@ import { import { useMediaQuery } from '@/hooks'; import { createTagClientSchema } from '@/lib'; +import type { $Enums } from '@prisma/client'; +import type { SubmitHandler } from 'react-hook-form'; +import type { z } from 'zod'; + type Props = { tenantId: string; plan: $Enums.Plan; @@ -33,64 +35,6 @@ type Props = { type Schema = z.infer; -export const CreateTag = ({ tenantId, plan, tagsCount }: Props) => { - const isDesktop = useMediaQuery('(min-width: 640px)'); - - if (isDesktop) { - return ( - - - - - - - New tag - - - - - ); - } - - return ( - - - - - -
          - - New tag - - -
          -
          -
          - ); -}; - const Form = ({ tenantId, plan, tagsCount }: Props) => { const [disabled, setDisabled] = useState(true); @@ -108,9 +52,9 @@ const Form = ({ tenantId, plan, tagsCount }: Props) => { const onSubmit: SubmitHandler = async (data) => { const formData = new FormData(); - for (const key in data) { + Object.keys(data).forEach((key) => { formData.append(key, data[key]); - } + }); formData.append('tagsCount', String(tagsCount)); formData.append('plan', plan); formData.append('tenantId', tenantId); @@ -150,3 +94,61 @@ const Form = ({ tenantId, plan, tagsCount }: Props) => { ); }; + +export const CreateTag = ({ tenantId, plan, tagsCount }: Props) => { + const isDesktop = useMediaQuery('(min-width: 640px)'); + + if (isDesktop) { + return ( + + + + + + + New tag + +
          + +
          + ); + } + + return ( + + + + + +
          + + New tag + + +
          +
          +
          + ); +}; diff --git a/src/modules/settings/tags/Tags.tsx b/src/modules/settings/tags/Tags.tsx index accb8bce1..8f54ccec3 100644 --- a/src/modules/settings/tags/Tags.tsx +++ b/src/modules/settings/tags/Tags.tsx @@ -2,13 +2,13 @@ import { useEffect, useState } from 'react'; -import { $Enums, Tag } from '@prisma/client'; - import { deleteTag } from '@/actions'; import { Button } from '@/components'; import { CreateTag } from './Create'; +import type { $Enums, Tag } from '@prisma/client'; + type Props = { tenantId: string; plan: $Enums.Plan; diff --git a/src/modules/settings/users/Create.tsx b/src/modules/settings/users/Create.tsx index b9fb89267..a43db9ca6 100644 --- a/src/modules/settings/users/Create.tsx +++ b/src/modules/settings/users/Create.tsx @@ -4,8 +4,7 @@ import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; import { AtSign, PlusCircle } from 'lucide-react'; -import { Controller, SubmitHandler, useForm } from 'react-hook-form'; -import { z } from 'zod'; +import { Controller, useForm } from 'react-hook-form'; import { createUser } from '@/actions'; import { @@ -32,6 +31,9 @@ import { import { useMediaQuery } from '@/hooks'; import { createUserClientSchema } from '@/lib'; +import type { SubmitHandler } from 'react-hook-form'; +import type { z } from 'zod'; + type Props = { tenantId: string; usersCount: number; @@ -39,64 +41,6 @@ type Props = { type Schema = z.infer; -export const CreateUser = ({ tenantId, usersCount }: Props) => { - const isDesktop = useMediaQuery('(min-width: 640px)'); - - if (isDesktop) { - return ( - - - - - - - New user - - - - - ); - } - - return ( - - - - - -
          - - New user - - -
          -
          -
          - ); -}; - const Form = ({ tenantId, usersCount }: Props) => { const [disabled, setDisabled] = useState(true); @@ -116,9 +60,9 @@ const Form = ({ tenantId, usersCount }: Props) => { const onSubmit: SubmitHandler = async (data) => { const formData = new FormData(); - for (const key in data) { + Object.keys(data).forEach((key) => { formData.append(key, data[key]); - } + }); formData.append('tenantId', tenantId); await createUser(formData); formData.append('usersCount', String(usersCount)); @@ -138,7 +82,7 @@ const Form = ({ tenantId, usersCount }: Props) => { } + icon={} type="email" id="email" placeholder="Email" @@ -186,3 +130,61 @@ const Form = ({ tenantId, usersCount }: Props) => { ); }; + +export const CreateUser = ({ tenantId, usersCount }: Props) => { + const isDesktop = useMediaQuery('(min-width: 640px)'); + + if (isDesktop) { + return ( + + + + + + + New user + +
          + +
          + ); + } + + return ( + + + + + +
          + + New user + + +
          +
          +
          + ); +}; diff --git a/src/modules/settings/users/FileInput.tsx b/src/modules/settings/users/FileInput.tsx index 29d5c7bec..504c0ece0 100644 --- a/src/modules/settings/users/FileInput.tsx +++ b/src/modules/settings/users/FileInput.tsx @@ -3,11 +3,9 @@ import { useEffect, useRef, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; -import { $Enums, User } from '@prisma/client'; import { FileUp } from 'lucide-react'; -import { SubmitHandler, useForm } from 'react-hook-form'; +import { useForm } from 'react-hook-form'; import { usePapaParse } from 'react-papaparse'; -import { z } from 'zod'; import { createUsers } from '@/actions'; import { @@ -29,6 +27,10 @@ import { import { useMediaQuery } from '@/hooks'; import { csvUploadClientSchema } from '@/lib'; +import type { $Enums, User } from '@prisma/client'; +import type { SubmitHandler } from 'react-hook-form'; +import type { z } from 'zod'; + type Props = { tenantId: string; users: User[]; @@ -160,7 +162,7 @@ export const FileInput = ({ tenantId, users, plan, usersCount }: Props) => { type="text" id="column" placeholder="Column name" - className="rounded-none rounded-tr-md px-1 outline-none md:rounded-none" + className="rounded-none rounded-tr-md px-1 outline-none md:rounded-none" /> {isDesktop ? ( @@ -189,8 +191,8 @@ export const FileInput = ({ tenantId, users, plan, usersCount }: Props) => {

          Already exists

            {existingUsersArray && - existingUsersArray.map((user, index) => ( -
          • {user}
          • + existingUsersArray.map((user) => ( +
          • {user}
          • ))}
          @@ -201,8 +203,8 @@ export const FileInput = ({ tenantId, users, plan, usersCount }: Props) => {

          New

            {newUsersArray && - newUsersArray.map((user, index) => ( -
          • {user}
          • + newUsersArray.map((user) => ( +
          • {user}
          • ))}
          @@ -215,8 +217,8 @@ export const FileInput = ({ tenantId, users, plan, usersCount }: Props) => {

          Not added

            {removedUsersArray && - removedUsersArray.map((user, index) => ( -
          • {user}
          • + removedUsersArray.map((user) => ( +
          • {user}
          • ))}
          @@ -277,8 +279,8 @@ export const FileInput = ({ tenantId, users, plan, usersCount }: Props) => {

          Already exists

            {existingUsersArray && - existingUsersArray.map((user, index) => ( -
          • {user}
          • + existingUsersArray.map((user) => ( +
          • {user}
          • ))}
      @@ -289,8 +291,8 @@ export const FileInput = ({ tenantId, users, plan, usersCount }: Props) => {

      New

        {newUsersArray && - newUsersArray.map((user, index) => ( -
      • {user}
      • + newUsersArray.map((user) => ( +
      • {user}
      • ))}
      @@ -303,8 +305,8 @@ export const FileInput = ({ tenantId, users, plan, usersCount }: Props) => {

      Not added

        {removedUsersArray && - removedUsersArray.map((user, index) => ( -
      • {user}
      • + removedUsersArray.map((user) => ( +
      • {user}
      • ))}
      diff --git a/src/modules/settings/users/Update.tsx b/src/modules/settings/users/Update.tsx index 10a886994..663dcb7e6 100644 --- a/src/modules/settings/users/Update.tsx +++ b/src/modules/settings/users/Update.tsx @@ -3,10 +3,8 @@ import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; -import { User } from '@prisma/client'; import { AtSign, UserIcon } from 'lucide-react'; -import { Controller, SubmitHandler, useForm } from 'react-hook-form'; -import { z } from 'zod'; +import { Controller, useForm } from 'react-hook-form'; import { updateUser } from '@/actions'; import { @@ -33,6 +31,10 @@ import { import { useMediaQuery } from '@/hooks'; import { updateUserClientSchema } from '@/lib'; +import type { User } from '@prisma/client'; +import type { SubmitHandler } from 'react-hook-form'; +import type { z } from 'zod'; + type Props = { user: User; tenantId: string; @@ -40,60 +42,6 @@ type Props = { type Schema = z.infer; -export const UpdateUser = ({ user, tenantId }: Props) => { - const isDesktop = useMediaQuery('(min-width: 640px)'); - - if (isDesktop) { - return ( - - - - - - - Modify user - - - - - ); - } - - return ( - - - - - -
      - - - Modify user - - - -
      -
      -
      - ); -}; - const Form = ({ user, tenantId }: Props) => { const [disabled, setDisabled] = useState(true); @@ -114,12 +62,12 @@ const Form = ({ user, tenantId }: Props) => { const onSubmit: SubmitHandler = async (data) => { const formData = new FormData(); - for (const key in data) { + Object.keys(data).forEach((key) => { formData.append(key, data[key]); - formData.append('id', user.id); - formData.append('tenantId', tenantId); - await updateUser(formData); - } + }); + formData.append('id', user.id); + formData.append('tenantId', tenantId); + await updateUser(formData); }; useEffect(() => { @@ -133,12 +81,12 @@ const Form = ({ user, tenantId }: Props) => { >
      - + } + icon={} type="name" id="name" placeholder="Name" @@ -146,12 +94,12 @@ const Form = ({ user, tenantId }: Props) => {
      - + } + icon={} type="email" id="email" placeholder="Email" @@ -202,3 +150,57 @@ const Form = ({ user, tenantId }: Props) => { ); }; + +export const UpdateUser = ({ user, tenantId }: Props) => { + const isDesktop = useMediaQuery('(min-width: 640px)'); + + if (isDesktop) { + return ( + + + + + + + Modify user + +
      + +
      + ); + } + + return ( + + + + + +
      + + + Modify user + + + +
      +
      +
      + ); +}; diff --git a/src/modules/settings/users/Users.tsx b/src/modules/settings/users/Users.tsx index 388e77541..b9fb3f6b2 100644 --- a/src/modules/settings/users/Users.tsx +++ b/src/modules/settings/users/Users.tsx @@ -1,7 +1,5 @@ 'use client'; -import { $Enums, User } from '@prisma/client'; - import { deleteUser } from '@/actions'; import { Avatar, AvatarFallback, AvatarImage, Button } from '@/components'; @@ -9,6 +7,8 @@ import { CreateUser } from './Create'; import { FileInput } from './FileInput'; import { UpdateUser } from './Update'; +import type { $Enums, User } from '@prisma/client'; + type Props = { userId: string; tenantId: string; @@ -17,6 +17,17 @@ type Props = { usersCount: number; }; +const UserAvatar = ({ id, email, image }) => { + const placeholderImage = `https://api.dicebear.com/7.x/bottts-neutral/svg?seed=${id}&radius=50`; + const avatar = image ?? placeholderImage; + return ( + + + {email[0].toUpperCase()} + + ); +}; + export const Users = ({ userId, tenantId, plan, users, usersCount }: Props) => { const handleDeleteUser = async (id: string) => { const formData = new FormData(); @@ -66,9 +77,9 @@ export const Users = ({ userId, tenantId, plan, users, usersCount }: Props) => { ))}
      -
      +

      or

      -
      +
      {
    ); }; - -const UserAvatar = ({ id, email, image }) => { - const placeholderImage = `https://api.dicebear.com/7.x/bottts-neutral/svg?seed=${id}&radius=50`; - const avatar = image ?? placeholderImage; - return ( - - - {email[0].toUpperCase()} - - ); -}; diff --git a/src/modules/theme/ThemeToggle.tsx b/src/modules/theme/ThemeToggle.tsx index b624eaa2b..60686f8d9 100644 --- a/src/modules/theme/ThemeToggle.tsx +++ b/src/modules/theme/ThemeToggle.tsx @@ -34,9 +34,9 @@ export const ThemeToggle = () => { diff --git a/src/store/register.ts b/src/store/register.ts index 9841a6a24..895a9f09a 100644 --- a/src/store/register.ts +++ b/src/store/register.ts @@ -1,6 +1,6 @@ import { atomWithStorage } from 'jotai/utils'; -import { RegisterInfo } from '@/types'; +import type { RegisterInfo } from '@/types'; export const registerAtom = atomWithStorage('register-data', { company: '', diff --git a/src/types/global.ts b/src/types/global.ts index 552e16ae0..f397e9ac2 100644 --- a/src/types/global.ts +++ b/src/types/global.ts @@ -1,8 +1,7 @@ -import { IncomingMessage } from 'http'; +import type { ReactElement } from 'react'; -import { ReactElement } from 'react'; - -import { NextApiRequestCookies } from 'next/dist/server/api-utils'; +import type { IncomingMessage } from 'http'; +import type { NextApiRequestCookies } from 'next/dist/server/api-utils'; export type FallbackType = 'screen' | 'page' | 'item'; export type QueryParamsType = Partial<{ diff --git a/src/types/models/node.ts b/src/types/models/node.ts index 3399878f2..3630078d3 100644 --- a/src/types/models/node.ts +++ b/src/types/models/node.ts @@ -1,4 +1,4 @@ -import { Answer, Node, Question, Tag, User } from '@prisma/client'; +import type { Answer, Node, Question, Tag, User } from '@prisma/client'; type ExtendedQuestion = Question & { user: User; diff --git a/src/types/models/user.ts b/src/types/models/user.ts index 0ced19e39..614513ee3 100644 --- a/src/types/models/user.ts +++ b/src/types/models/user.ts @@ -1,4 +1,4 @@ -import { User } from '@prisma/client'; +import type { User } from '@prisma/client'; export type Me = User & { tenant: { diff --git a/src/utils/routing.ts b/src/utils/routing.ts index a72fffbe8..e522f6d15 100644 --- a/src/utils/routing.ts +++ b/src/utils/routing.ts @@ -16,7 +16,6 @@ export const Routes = { CONFIRM: '/register/confirm', PLAN: '/register/plan', }, - _500: '/500', }, API: { USERS: { @@ -57,12 +56,6 @@ export const Redirects = { NOT_FOUND: { notFound: true, }, - _500: { - redirect: { - permanent: false, - destination: Routes.SITE._500, - }, - }, LOGIN: { redirect: { permanent: false, diff --git a/src/utils/stripe.ts b/src/utils/stripe.ts index 388ce25c9..c2bf1c8b4 100644 --- a/src/utils/stripe.ts +++ b/src/utils/stripe.ts @@ -1,4 +1,6 @@ -import { Stripe, loadStripe } from '@stripe/stripe-js'; +import { loadStripe } from '@stripe/stripe-js'; + +import type { Stripe } from '@stripe/stripe-js'; let stripePromise: Promise; export const getStripe = () => { From 34b71742c6d661893c247a639e5d71fa68a03894 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Tue, 11 Jun 2024 20:08:12 +0200 Subject: [PATCH 090/326] :construction: work on fixing lint problems --- src/actions/create-node/index.ts | 10 ++++++--- src/actions/create-users/index.ts | 26 ++++++++++++++++-------- src/actions/create-users/schema.ts | 2 +- src/modules/settings/users/FileInput.tsx | 26 +++++++++++------------- 4 files changed, 38 insertions(+), 26 deletions(-) diff --git a/src/actions/create-node/index.ts b/src/actions/create-node/index.ts index 4ef61f26c..7687ed4fa 100644 --- a/src/actions/create-node/index.ts +++ b/src/actions/create-node/index.ts @@ -29,7 +29,7 @@ export const slackNotification = async (body) => { } const { url, text } = result.data; const webhook = new IncomingWebhook(url); - await webhook.send({ + const message = await webhook.send({ text, blocks: [ { @@ -55,6 +55,10 @@ export const slackNotification = async (body) => { }, ], }); + if (!message.text) { + return { error: 'Slack notifications not sent' }; + } + return undefined; }; export const createNode = async (integrations, formData) => { @@ -108,9 +112,9 @@ export const createNode = async (integrations, formData) => { message: 'Question created successfully', }; } - } else { - return { error: 'Not signed in' }; + return { message: 'Question created successfully' }; } + return { error: 'Not signed in' }; } catch (error) { return { error: 'Error creating question' }; } diff --git a/src/actions/create-users/index.ts b/src/actions/create-users/index.ts index b971d2993..066cd9774 100644 --- a/src/actions/create-users/index.ts +++ b/src/actions/create-users/index.ts @@ -12,25 +12,32 @@ import { createUsersSchema } from './schema'; type CreateUsersData = { tenantId: string; usersCount: string | number; + usersArray: string; }; -export async function createUsers(newUsersArray, formData) { +type ErrorObject = { + email: string; + message: string; +}; + +export async function createUsers(usersArray, formData) { try { if (!formData) { return { error: 'Data not provided' }; } const data = Object.fromEntries(formData) as CreateUsersData; data.usersCount = Number(data.usersCount); + data.usersArray = usersArray; const session = await getServerSession(authOptions); if (session) { - const result = createUsersSchema.safeParse({ ...data, newUsersArray }); + const result = createUsersSchema.safeParse({ ...data }); if (result.success === false) { const errors = result.error.flatten().fieldErrors; return { error: errors }; } - const { newUsersArray, usersCount, tenantId } = result.data; - const errors = []; - for (const email of newUsersArray) { + const { usersArray, usersCount, tenantId } = result.data; + const errors: ErrorObject[] = []; + for (const email of usersArray) { if (!email) { errors.push({ email, @@ -55,13 +62,16 @@ export async function createUsers(newUsersArray, formData) { }); continue; } - const { plan } = await prisma.tenant.findUnique({ + const tenant = await prisma.tenant.findUnique({ where: { id: tenantId }, select: { plan: true }, }); + if (!tenant) { + return { error: 'Plan not found' }; + } if ( - (plan === 'free' && usersCount >= 5) || - (plan === 'startup' && usersCount >= 100) + (tenant.plan === 'free' && usersCount >= 5) || + (tenant.plan === 'startup' && usersCount >= 100) ) { errors.push({ email, diff --git a/src/actions/create-users/schema.ts b/src/actions/create-users/schema.ts index 28b7b3765..49664746b 100644 --- a/src/actions/create-users/schema.ts +++ b/src/actions/create-users/schema.ts @@ -3,5 +3,5 @@ import { z } from 'zod'; export const createUsersSchema = z.object({ tenantId: z.string().cuid2(), usersCount: z.number().min(0), - newUsersArray: z.array(z.string().email()).optional(), + usersArray: z.array(z.string().email()).optional(), }); diff --git a/src/modules/settings/users/FileInput.tsx b/src/modules/settings/users/FileInput.tsx index 504c0ece0..9826db2c7 100644 --- a/src/modules/settings/users/FileInput.tsx +++ b/src/modules/settings/users/FileInput.tsx @@ -52,7 +52,7 @@ export const FileInput = ({ tenantId, users, plan, usersCount }: Props) => { const fileInput = useRef(null); const { readRemoteFile } = usePapaParse(); const emails = users.map((user) => user.email); - const newUsersArray = newUsers + const usersArray = newUsers ?.filter((user) => !emails.includes(user)) .splice(0, limit); const removedUsersArray = newUsers @@ -114,7 +114,7 @@ export const FileInput = ({ tenantId, users, plan, usersCount }: Props) => { const formData = new FormData(); formData.append('tenantId', tenantId); formData.append('usersCount', String(usersCount)); - await createUsers(newUsersArray, formData); + await createUsers(usersArray, formData); }; useEffect(() => { @@ -198,12 +198,12 @@ export const FileInput = ({ tenantId, users, plan, usersCount }: Props) => {
    )}
    - {newUsersArray.length > 0 ? ( + {usersArray.length > 0 ? ( <>

    New

      - {newUsersArray && - newUsersArray.map((user) => ( + {usersArray && + usersArray.map((user) => (
    • {user}
    • ))}
    @@ -225,15 +225,13 @@ export const FileInput = ({ tenantId, users, plan, usersCount }: Props) => { )}
    @@ -286,12 +284,12 @@ export const FileInput = ({ tenantId, users, plan, usersCount }: Props) => {
    )}
    - {newUsersArray.length > 0 ? ( + {usersArray.length > 0 ? ( <>

    New

      - {newUsersArray && - newUsersArray.map((user) => ( + {usersArray && + usersArray.map((user) => (
    • {user}
    • ))}
    @@ -314,14 +312,14 @@ export const FileInput = ({ tenantId, users, plan, usersCount }: Props) => {
    From b7b16a6f619fb0c61f7ebb6e1636be41500a98fc Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Wed, 12 Jun 2024 21:00:55 +0200 Subject: [PATCH 091/326] :construction: work on adding login by password --- src/app/login/page.tsx | 98 ++++++++++++++++++++++++++++++- src/components/input/Password.tsx | 35 +++++++++++ src/components/input/index.ts | 1 + src/lib/validations/user.ts | 6 ++ src/types/global.ts | 3 + 5 files changed, 142 insertions(+), 1 deletion(-) create mode 100644 src/components/input/Password.tsx diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index b9bfa463c..410efd712 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -1,7 +1,17 @@ +'use client'; + import Link from 'next/link'; -import { LoginButton } from '@/components'; +import { Button, Field, Input, LoginButton, Password } from '@/components'; import { Routes } from '@/utils'; +import { useMediaQuery } from '@/hooks'; +import { userLoginClientSchema } from '@/lib'; +import { IUserLoginFields, IUserUpdateFields } from '@/types'; +import { zodResolver } from '@hookform/resolvers/zod'; +import { UserIcon, AtSign, Lock } from 'lucide-react'; +import { useState, useMemo, useEffect } from 'react'; +import { useForm, SubmitHandler } from 'react-hook-form'; +import { z } from 'zod'; const errors = { Signin: 'Try signing with a different account.', @@ -23,6 +33,8 @@ type ErrorProps = { error: string; }; +type Schema = z.infer; + const LoginError = ({ error }: ErrorProps) => { const errorMessage = error && (errors[error] ?? errors.default); return
    {errorMessage}
    ; @@ -30,6 +42,33 @@ const LoginError = ({ error }: ErrorProps) => { export default async function Page({ searchParams }) { const { error, callbackUrl } = searchParams; + const [disabled, setDisabled] = useState(true); + const isDesktop = useMediaQuery('(min-width: 640px)'); + + const { + register, + handleSubmit, + formState: { isSubmitting, isDirty, errors, isValid }, + } = useForm({ + resolver: zodResolver(userLoginClientSchema), + mode: 'onBlur', + defaultValues: { + email: '', + password: '', + }, + }); + + const onSubmit: SubmitHandler = async (data) => { + const formData = new FormData(); + Object.keys(data).forEach((key) => { + formData.append(key, data[key]); + }); + // await updateUser(formData); + }; + + useEffect(() => { + setDisabled(isSubmitting || !isDirty || !isValid); + }, [isDirty, isSubmitting, isValid]); return (
    @@ -42,6 +81,63 @@ export default async function Page({ searchParams }) {

    Use your associated account

    + +
    +
      +
    • + + } + type={'email'} + id={'email'} + placeholder={'Email'} + /> + +
    • +
    • + + } + type={'password'} + id={'password'} + placeholder={'Password'} + /> + +
    • +
    +
    + + +
    +
    + OR +
    +
    {error && }

    diff --git a/src/components/input/Password.tsx b/src/components/input/Password.tsx new file mode 100644 index 000000000..e1f86cd8b --- /dev/null +++ b/src/components/input/Password.tsx @@ -0,0 +1,35 @@ +import type { ReactNode } from 'react'; +import { forwardRef } from 'react'; + +import { cn } from '@/utils'; + +export interface PasswordProps + extends React.InputHTMLAttributes { + lockIcon?: ReactNode; + unlockIcon?: ReactNode; +} + +const styles = + 'shadow-sm shadow-grayA-7 focus:shadow-tealA-8 bg-gray-3 w-full rounded-md p-1 outline-none'; + +export const Password = forwardRef( + ({ className, type, lockIcon, ...props }, ref) => { + return ( +

    +
    + + {lockIcon} + + +
    + +
    + ); + }, +); +Password.displayName = 'Password'; diff --git a/src/components/input/index.ts b/src/components/input/index.ts index ba9fe7ebc..0433e32fe 100644 --- a/src/components/input/index.ts +++ b/src/components/input/index.ts @@ -1 +1,2 @@ export * from './Input'; +export * from './Password'; diff --git a/src/lib/validations/user.ts b/src/lib/validations/user.ts index 59d98d3d0..8a2fb6d58 100644 --- a/src/lib/validations/user.ts +++ b/src/lib/validations/user.ts @@ -11,6 +11,12 @@ export const userEmailClientSchema = z.object({ .optional(), }); +export const userLoginClientSchema = userEmailClientSchema.merge( + z.object({ + password: z.string().trim().min(1, { message: 'Password is required' }), + }), +); + export const userRoleClientSchema = z.object({ role: z.enum(ROLE).optional(), }); diff --git a/src/types/global.ts b/src/types/global.ts index f397e9ac2..5f09cdbf3 100644 --- a/src/types/global.ts +++ b/src/types/global.ts @@ -23,6 +23,9 @@ export interface IUserCreateFields extends IFields { value: 'email'; } +export interface IUserLoginFields extends IFields { + value: 'email' | 'password'; +} export interface IUserUpdateFields extends IFields { value: 'name' | 'email'; } From b799838d7b8dec73c9f0db2d0f93d9e1bc559e75 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Thu, 13 Jun 2024 20:22:03 +0200 Subject: [PATCH 092/326] :arrow_up: upgrade next-auth to v5 --- package.json | 2 +- pnpm-lock.yaml | 106 ++++++++++++++++++++++++++----------------------- 2 files changed, 57 insertions(+), 51 deletions(-) diff --git a/package.json b/package.json index 496a7ef24..c5ccc30f1 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "jotai": "^2.6.4", "lucide-react": "^0.344.0", "next": "14.1.0", - "next-auth": "^4.24.5", + "next-auth": "5.0.0-beta.19", "next-remove-imports": "^1.0.12", "next-themes": "^0.2.1", "react": "18.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 14776ca84..62c87c64c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,7 @@ dependencies: version: 3.3.4(react-hook-form@7.45.4) '@next-auth/prisma-adapter': specifier: ^1.0.7 - version: 1.0.7(@prisma/client@5.10.2)(next-auth@4.24.5) + version: 1.0.7(@prisma/client@5.10.2)(next-auth@5.0.0-beta.19) '@prisma/client': specifier: 5.10.2 version: 5.10.2(prisma@5.10.2) @@ -87,8 +87,8 @@ dependencies: specifier: 14.1.0 version: 14.1.0(@babel/core@7.22.17)(react-dom@18.2.0)(react@18.2.0) next-auth: - specifier: ^4.24.5 - version: 4.24.5(next@14.1.0)(react-dom@18.2.0)(react@18.2.0) + specifier: 5.0.0-beta.19 + version: 5.0.0-beta.19(next@14.1.0)(react@18.2.0) next-remove-imports: specifier: ^1.0.12 version: 1.0.12(webpack@5.89.0) @@ -264,6 +264,29 @@ packages: '@jridgewell/trace-mapping': 0.3.20 dev: false + /@auth/core@0.32.0: + resolution: {integrity: sha512-3+ssTScBd+1fd0/fscAyQN1tSygXzuhysuVVzB942ggU4mdfiTbv36P0ccVnExKWYJKvu3E2r3/zxXCCAmTOrg==} + peerDependencies: + '@simplewebauthn/browser': ^9.0.1 + '@simplewebauthn/server': ^9.0.2 + nodemailer: ^6.8.0 + peerDependenciesMeta: + '@simplewebauthn/browser': + optional: true + '@simplewebauthn/server': + optional: true + nodemailer: + optional: true + dependencies: + '@panva/hkdf': 1.1.1 + '@types/cookie': 0.6.0 + cookie: 0.6.0 + jose: 5.4.0 + oauth4webapi: 2.10.4 + preact: 10.11.3 + preact-render-to-string: 5.2.3(preact@10.11.3) + dev: false + /@babel/code-frame@7.22.13: resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} @@ -872,14 +895,14 @@ packages: read-yaml-file: 1.1.0 dev: true - /@next-auth/prisma-adapter@1.0.7(@prisma/client@5.10.2)(next-auth@4.24.5): + /@next-auth/prisma-adapter@1.0.7(@prisma/client@5.10.2)(next-auth@5.0.0-beta.19): resolution: {integrity: sha512-Cdko4KfcmKjsyHFrWwZ//lfLUbcLqlyFqjd/nYE2m3aZ7tjMNUjpks47iw7NTCnXf+5UWz5Ypyt1dSs1EP5QJw==} peerDependencies: '@prisma/client': '>=2.26.0 || >=3' next-auth: ^4 dependencies: '@prisma/client': 5.10.2(prisma@5.10.2) - next-auth: 4.24.5(next@14.1.0)(react-dom@18.2.0)(react@18.2.0) + next-auth: 5.0.0-beta.19(next@14.1.0)(react@18.2.0) dev: false /@next/env@14.1.0: @@ -2025,6 +2048,10 @@ packages: resolution: {integrity: sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==} dev: false + /@types/cookie@0.6.0: + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} + dev: false + /@types/debug@4.1.8: resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} dependencies: @@ -3427,8 +3454,8 @@ packages: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} dev: false - /cookie@0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + /cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} dev: false @@ -5712,8 +5739,8 @@ packages: resolution: {integrity: sha512-5eEbBDQT/jF1xg6l36P+mWGGoH9Spuy0PCdSr2dtWRDGC6ph/w9ZCL4lmESW8f8F7MwT3XKescfP0wnZWAKL9w==} hasBin: true - /jose@4.15.4: - resolution: {integrity: sha512-W+oqK4H+r5sITxfxpSU+MMdr/YSWGvgZMQDIsNoBDGGy4i7GBPTtvFKibQzW06n3U3TqHjhvBJsirShsEJ6eeQ==} + /jose@5.4.0: + resolution: {integrity: sha512-6rpxTHPAQyWMb9A35BroFl1Sp0ST3DpPcm5EVIxZxdH+e0Hv9fwhyB3XLKFUcHNpdSDnETmBfuPPTTlYz5+USw==} dev: false /jotai@2.6.4(@types/react@18.0.27)(react@18.2.0): @@ -6011,6 +6038,7 @@ packages: engines: {node: '>=10'} dependencies: yallist: 4.0.0 + dev: true /lucide-react@0.344.0(react@18.2.0): resolution: {integrity: sha512-6YyBnn91GB45VuVT96bYCOKElbJzUHqp65vX8cDcu55MQL9T969v4dhGClpljamuI/+KMO9P6w9Acq1CVQGvIQ==} @@ -6626,29 +6654,25 @@ packages: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: false - /next-auth@4.24.5(next@14.1.0)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-3RafV3XbfIKk6rF6GlLE4/KxjTcuMCifqrmD+98ejFq73SRoj2rmzoca8u764977lH/Q7jo6Xu6yM+Re1Mz/Og==} + /next-auth@5.0.0-beta.19(next@14.1.0)(react@18.2.0): + resolution: {integrity: sha512-YHu1igcAxZPh8ZB7GIM93dqgY6gcAzq66FOhQFheAdOx1raxNcApt05nNyNCSB6NegSiyJ4XOPsaNow4pfDmsg==} peerDependencies: - next: ^12.2.5 || ^13 || ^14 + '@simplewebauthn/browser': ^9.0.1 + '@simplewebauthn/server': ^9.0.2 + next: ^14 || ^15.0.0-0 nodemailer: ^6.6.5 - react: ^17.0.2 || ^18 - react-dom: ^17.0.2 || ^18 + react: ^18.2.0 || ^19.0.0-0 peerDependenciesMeta: + '@simplewebauthn/browser': + optional: true + '@simplewebauthn/server': + optional: true nodemailer: optional: true dependencies: - '@babel/runtime': 7.23.7 - '@panva/hkdf': 1.1.1 - cookie: 0.5.0 - jose: 4.15.4 + '@auth/core': 0.32.0 next: 14.1.0(@babel/core@7.22.17)(react-dom@18.2.0)(react@18.2.0) - oauth: 0.9.15 - openid-client: 5.6.2 - preact: 10.19.3 - preact-render-to-string: 5.2.6(preact@10.19.3) react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - uuid: 8.3.2 dev: false /next-remove-imports@1.0.12(webpack@5.89.0): @@ -6775,19 +6799,14 @@ packages: boolbase: 1.0.0 dev: false - /oauth@0.9.15: - resolution: {integrity: sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==} + /oauth4webapi@2.10.4: + resolution: {integrity: sha512-DSoj8QoChzOCQlJkRmYxAJCIpnXFW32R0Uq7avyghIeB6iJq0XAblOD7pcq3mx4WEBDwMuKr0Y1qveCBleG2Xw==} dev: false /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - /object-hash@2.2.0: - resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} - engines: {node: '>= 6'} - dev: false - /object-hash@3.0.0: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} @@ -6883,11 +6902,6 @@ packages: es-object-atoms: 1.0.0 dev: true - /oidc-token-hash@5.0.3: - resolution: {integrity: sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==} - engines: {node: ^10.13.0 || >=12.0.0} - dev: false - /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: @@ -6907,15 +6921,6 @@ packages: mimic-fn: 4.0.0 dev: true - /openid-client@5.6.2: - resolution: {integrity: sha512-TIVimoK/fAvpiISLcoGZyNJx2TOfd5AE6TXn58FFj6Y8qbU/jqky54Aws7sYKuCph1bLPWSRUa1r/Rd6K21bhg==} - dependencies: - jose: 4.15.4 - lru-cache: 6.0.0 - object-hash: 2.2.0 - oidc-token-hash: 5.0.3 - dev: false - /optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} @@ -7226,17 +7231,17 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 - /preact-render-to-string@5.2.6(preact@10.19.3): - resolution: {integrity: sha512-JyhErpYOvBV1hEPwIxc/fHWXPfnEGdRKxc8gFdAZ7XV4tlzyzG847XAyEZqoDnynP88akM4eaHcSOzNcLWFguw==} + /preact-render-to-string@5.2.3(preact@10.11.3): + resolution: {integrity: sha512-aPDxUn5o3GhWdtJtW0svRC2SS/l8D9MAgo2+AWml+BhDImb27ALf04Q2d+AHqUUOc6RdSXFIBVa2gxzgMKgtZA==} peerDependencies: preact: '>=10' dependencies: - preact: 10.19.3 + preact: 10.11.3 pretty-format: 3.8.0 dev: false - /preact@10.19.3: - resolution: {integrity: sha512-nHHTeFVBTHRGxJXKkKu5hT8C/YWBkPso4/Gad6xuj5dbptt9iF9NZr9pHbPhBrnT2klheu7mHTxTZ/LjwJiEiQ==} + /preact@10.11.3: + resolution: {integrity: sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==} dev: false /preferred-pm@3.0.3: @@ -9289,6 +9294,7 @@ packages: /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true /yaml@2.3.3: resolution: {integrity: sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==} From beff402b8b997d13b73c465dc8e66345d35dc502 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Thu, 13 Jun 2024 20:32:58 +0200 Subject: [PATCH 093/326] :heavy_plus_sign: install prisma adapter for auth.js --- package.json | 1 + pnpm-lock.yaml | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/package.json b/package.json index c5ccc30f1..e0157273c 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ "postinstall": "prisma generate" }, "dependencies": { + "@auth/prisma-adapter": "^2.2.0", "@google-cloud/storage": "^7.7.0", "@hookform/resolvers": "^3.3.4", "@next-auth/prisma-adapter": "^1.0.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 62c87c64c..1a4ab9c54 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,6 +5,9 @@ settings: excludeLinksFromLockfile: false dependencies: + '@auth/prisma-adapter': + specifier: ^2.2.0 + version: 2.2.0(@prisma/client@5.10.2) '@google-cloud/storage': specifier: ^7.7.0 version: 7.7.0 @@ -287,6 +290,19 @@ packages: preact-render-to-string: 5.2.3(preact@10.11.3) dev: false + /@auth/prisma-adapter@2.2.0(@prisma/client@5.10.2): + resolution: {integrity: sha512-DiXgyJfqBb/6TPhNJ5IcRw3klxcFD+qaa7qvOYopV6rYinSUvsQkJ30m+so2SRlEsuDA6PqMu+Mf5Sd+zr3g+Q==} + peerDependencies: + '@prisma/client': '>=2.26.0 || >=3 || >=4 || >=5' + dependencies: + '@auth/core': 0.32.0 + '@prisma/client': 5.10.2(prisma@5.10.2) + transitivePeerDependencies: + - '@simplewebauthn/browser' + - '@simplewebauthn/server' + - nodemailer + dev: false + /@babel/code-frame@7.22.13: resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} From 8030592374911e24338857a5ddd58c366052a36f Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Thu, 13 Jun 2024 20:33:48 +0200 Subject: [PATCH 094/326] :wrench: create auth.js config file --- src/auth.ts | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 src/auth.ts diff --git a/src/auth.ts b/src/auth.ts new file mode 100644 index 000000000..25144cd74 --- /dev/null +++ b/src/auth.ts @@ -0,0 +1,83 @@ +import { PrismaAdapter } from '@auth/prisma-adapter'; +import NextAuth from 'next-auth'; +import GoogleProvider from 'next-auth/providers/google'; +import { Routes } from './utils'; +import prisma from 'lib/prisma'; + +export const { auth, handlers, signIn, signOut } = NextAuth({ + adapter: PrismaAdapter(prisma), + providers: [ + GoogleProvider({ + clientId: process.env.GOOGLE_CLIENT_ID, + clientSecret: process.env.GOOGLE_CLIENT_SECRET, + allowDangerousEmailAccountLinking: true, + }), + ], + pages: { + signIn: Routes.SITE.LOGIN, + error: Routes.SITE.LOGIN, + }, + callbacks: { + async signIn({ profile, account }) { + const maybeUser = await prisma.user.findUnique({ + where: { email: profile.email }, + }); + if (!maybeUser) { + const domain = profile.email.split('@')[1]; + const tenant = await prisma.tenant.findUnique({ where: { domain } }); + if (!tenant) return false; + const usersCount = await prisma.user.count({ + where: { tenantId: tenant.id }, + }); + if ( + (tenant.plan === 'free' && usersCount >= 5) || + (tenant.plan === 'startup' && usersCount >= 100) + ) { + return false; + } + const newUser = await prisma.user.create({ + data: { + name: profile.name, + email: profile.email, + image: profile.picture, + role: 'user', + tenant: { connect: { id: tenant.id } }, + }, + }); + if (!newUser) { + return false; + } + return true; + } + if ( + account.provider === 'google' && + (!maybeUser.name || !maybeUser.image) + ) { + await prisma.user.update({ + where: { id: maybeUser.id }, + data: { + name: profile.name, + image: profile.picture, + }, + }); + } + return true; + }, + async jwt({ token, account, user }) { + if (account) { + token.accessToken = account.access_token; + token.id = user.id; + } + return token; + }, + async session({ session, token }) { + session.user.id = token.id as string; + return session; + }, + }, + session: { + strategy: `jwt`, + maxAge: 60 * 60, + }, + secret: process.env.NEXTAUTH_SECRET, +}); From 548f68fbd0cbdc923048c426a6b1b93c313712b0 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Fri, 14 Jun 2024 21:11:09 +0200 Subject: [PATCH 095/326] :arrow_up: update next version --- package.json | 2 +- pnpm-lock.yaml | 107 ++++++++++++++++++++++++++----------------------- 2 files changed, 57 insertions(+), 52 deletions(-) diff --git a/package.json b/package.json index e0157273c..f98e93af0 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "formidable": "^3.5.1", "jotai": "^2.6.4", "lucide-react": "^0.344.0", - "next": "14.1.0", + "next": "14.2.4", "next-auth": "5.0.0-beta.19", "next-remove-imports": "^1.0.12", "next-themes": "^0.2.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1a4ab9c54..4d9ab4b1f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -49,7 +49,7 @@ dependencies: version: 1.0.7(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) '@sentry/nextjs': specifier: ^7.102.1 - version: 7.102.1(next@14.1.0)(react@18.2.0)(webpack@5.89.0) + version: 7.102.1(next@14.2.4)(react@18.2.0)(webpack@5.89.0) '@slack/webhook': specifier: ^7.0.1 version: 7.0.1 @@ -87,17 +87,17 @@ dependencies: specifier: ^0.344.0 version: 0.344.0(react@18.2.0) next: - specifier: 14.1.0 - version: 14.1.0(@babel/core@7.22.17)(react-dom@18.2.0)(react@18.2.0) + specifier: 14.2.4 + version: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.41.1)(react-dom@18.2.0)(react@18.2.0) next-auth: specifier: 5.0.0-beta.19 - version: 5.0.0-beta.19(next@14.1.0)(react@18.2.0) + version: 5.0.0-beta.19(next@14.2.4)(react@18.2.0) next-remove-imports: specifier: ^1.0.12 version: 1.0.12(webpack@5.89.0) next-themes: specifier: ^0.2.1 - version: 0.2.1(next@14.1.0)(react-dom@18.2.0)(react@18.2.0) + version: 0.2.1(next@14.2.4)(react-dom@18.2.0)(react@18.2.0) react: specifier: 18.2.0 version: 18.2.0 @@ -918,11 +918,11 @@ packages: next-auth: ^4 dependencies: '@prisma/client': 5.10.2(prisma@5.10.2) - next-auth: 5.0.0-beta.19(next@14.1.0)(react@18.2.0) + next-auth: 5.0.0-beta.19(next@14.2.4)(react@18.2.0) dev: false - /@next/env@14.1.0: - resolution: {integrity: sha512-Py8zIo+02ht82brwwhTg36iogzFqGLPXlRGKQw5s+qP/kMNc4MAyDeEwBKDijk6zTIbegEgu8Qy7C1LboslQAw==} + /@next/env@14.2.4: + resolution: {integrity: sha512-3EtkY5VDkuV2+lNmKlbkibIJxcO4oIHEhBWne6PaAp+76J9KoSsGvNikp6ivzAT8dhhBMYrm6op2pS1ApG0Hzg==} dev: false /@next/eslint-plugin-next@14.1.0: @@ -931,8 +931,8 @@ packages: glob: 10.3.10 dev: true - /@next/swc-darwin-arm64@14.1.0: - resolution: {integrity: sha512-nUDn7TOGcIeyQni6lZHfzNoo9S0euXnu0jhsbMOmMJUBfgsnESdjN97kM7cBqQxZa8L/bM9om/S5/1dzCrW6wQ==} + /@next/swc-darwin-arm64@14.2.4: + resolution: {integrity: sha512-AH3mO4JlFUqsYcwFUHb1wAKlebHU/Hv2u2kb1pAuRanDZ7pD/A/KPD98RHZmwsJpdHQwfEc/06mgpSzwrJYnNg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -940,8 +940,8 @@ packages: dev: false optional: true - /@next/swc-darwin-x64@14.1.0: - resolution: {integrity: sha512-1jgudN5haWxiAl3O1ljUS2GfupPmcftu2RYJqZiMJmmbBT5M1XDffjUtRUzP4W3cBHsrvkfOFdQ71hAreNQP6g==} + /@next/swc-darwin-x64@14.2.4: + resolution: {integrity: sha512-QVadW73sWIO6E2VroyUjuAxhWLZWEpiFqHdZdoQ/AMpN9YWGuHV8t2rChr0ahy+irKX5mlDU7OY68k3n4tAZTg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -949,8 +949,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu@14.1.0: - resolution: {integrity: sha512-RHo7Tcj+jllXUbK7xk2NyIDod3YcCPDZxj1WLIYxd709BQ7WuRYl3OWUNG+WUfqeQBds6kvZYlc42NJJTNi4tQ==} + /@next/swc-linux-arm64-gnu@14.2.4: + resolution: {integrity: sha512-KT6GUrb3oyCfcfJ+WliXuJnD6pCpZiosx2X3k66HLR+DMoilRb76LpWPGb4tZprawTtcnyrv75ElD6VncVamUQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -958,8 +958,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl@14.1.0: - resolution: {integrity: sha512-v6kP8sHYxjO8RwHmWMJSq7VZP2nYCkRVQ0qolh2l6xroe9QjbgV8siTbduED4u0hlk0+tjS6/Tuy4n5XCp+l6g==} + /@next/swc-linux-arm64-musl@14.2.4: + resolution: {integrity: sha512-Alv8/XGSs/ytwQcbCHwze1HmiIkIVhDHYLjczSVrf0Wi2MvKn/blt7+S6FJitj3yTlMwMxII1gIJ9WepI4aZ/A==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -967,8 +967,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu@14.1.0: - resolution: {integrity: sha512-zJ2pnoFYB1F4vmEVlb/eSe+VH679zT1VdXlZKX+pE66grOgjmKJHKacf82g/sWE4MQ4Rk2FMBCRnX+l6/TVYzQ==} + /@next/swc-linux-x64-gnu@14.2.4: + resolution: {integrity: sha512-ze0ShQDBPCqxLImzw4sCdfnB3lRmN3qGMB2GWDRlq5Wqy4G36pxtNOo2usu/Nm9+V2Rh/QQnrRc2l94kYFXO6Q==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -976,8 +976,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl@14.1.0: - resolution: {integrity: sha512-rbaIYFt2X9YZBSbH/CwGAjbBG2/MrACCVu2X0+kSykHzHnYH5FjHxwXLkcoJ10cX0aWCEynpu+rP76x0914atg==} + /@next/swc-linux-x64-musl@14.2.4: + resolution: {integrity: sha512-8dwC0UJoc6fC7PX70csdaznVMNr16hQrTDAMPvLPloazlcaWfdPogq+UpZX6Drqb1OBlwowz8iG7WR0Tzk/diQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -985,8 +985,8 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc@14.1.0: - resolution: {integrity: sha512-o1N5TsYc8f/HpGt39OUQpQ9AKIGApd3QLueu7hXk//2xq5Z9OxmV6sQfNp8C7qYmiOlHYODOGqNNa0e9jvchGQ==} + /@next/swc-win32-arm64-msvc@14.2.4: + resolution: {integrity: sha512-jxyg67NbEWkDyvM+O8UDbPAyYRZqGLQDTPwvrBBeOSyVWW/jFQkQKQ70JDqDSYg1ZDdl+E3nkbFbq8xM8E9x8A==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -994,8 +994,8 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc@14.1.0: - resolution: {integrity: sha512-XXIuB1DBRCFwNO6EEzCTMHT5pauwaSj4SWs7CYnME57eaReAKBXCnkUE80p/pAZcewm7hs+vGvNqDPacEXHVkw==} + /@next/swc-win32-ia32-msvc@14.2.4: + resolution: {integrity: sha512-twrmN753hjXRdcrZmZttb/m5xaCBFa48Dt3FbeEItpJArxriYDunWxJn+QFXdJ3hPkm4u7CKxncVvnmgQMY1ag==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -1003,8 +1003,8 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc@14.1.0: - resolution: {integrity: sha512-9WEbVRRAqJ3YFVqEZIxUqkiO8l1nool1LmNxygr5HWF8AcSYsEpneUDhmjUVJEzO2A04+oPtZdombzzPPkTtgg==} + /@next/swc-win32-x64-msvc@14.2.4: + resolution: {integrity: sha512-tkLrjBzqFTP8DVrAAQmZelEahfR9OxWpFR++vAI9FBhCiIxtwHwBHC23SBHCTURBtwB4kc/x44imVOnkKGNVGg==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -1055,7 +1055,6 @@ packages: hasBin: true dependencies: playwright: 1.41.1 - dev: true /@prisma/client@5.10.2(prisma@5.10.2): resolution: {integrity: sha512-ef49hzB2yJZCvM5gFHMxSFL9KYrIP9udpT5rYo0CsHD4P9IKj473MbhU1gjKKftiwWBTIyrt9jukprzZXazyag==} @@ -1901,7 +1900,7 @@ packages: localforage: 1.10.0 dev: false - /@sentry/nextjs@7.102.1(next@14.1.0)(react@18.2.0)(webpack@5.89.0): + /@sentry/nextjs@7.102.1(next@14.2.4)(react@18.2.0)(webpack@5.89.0): resolution: {integrity: sha512-gOI/GD7DWhc3WucyYnepl8Nu5jmpa1YfR6jWDzTkPE2CV9zKK9zulTdqk+Aig9ch62SAmJOGkgejm5k9PE2XzQ==} engines: {node: '>=8'} peerDependencies: @@ -1922,7 +1921,7 @@ packages: '@sentry/vercel-edge': 7.102.1 '@sentry/webpack-plugin': 1.21.0 chalk: 3.0.0 - next: 14.1.0(@babel/core@7.22.17)(react-dom@18.2.0)(react@18.2.0) + next: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.41.1)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 resolve: 1.22.8 rollup: 2.78.0 @@ -2024,9 +2023,14 @@ packages: resolution: {integrity: sha512-CWV4W06GdfQo3cW3CoUM2fp7avH4Z/suR7SvECNJnQbr6Sa9U3p7o10nXjNv2zT6z09bbNUPM55HBw5Nwd24Iw==} dev: true - /@swc/helpers@0.5.2: - resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} + /@swc/counter@0.1.3: + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + dev: false + + /@swc/helpers@0.5.5: + resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} dependencies: + '@swc/counter': 0.1.3 tslib: 2.6.2 dev: false @@ -4757,7 +4761,6 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true - dev: true optional: true /fsevents@2.3.3: @@ -6670,7 +6673,7 @@ packages: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: false - /next-auth@5.0.0-beta.19(next@14.1.0)(react@18.2.0): + /next-auth@5.0.0-beta.19(next@14.2.4)(react@18.2.0): resolution: {integrity: sha512-YHu1igcAxZPh8ZB7GIM93dqgY6gcAzq66FOhQFheAdOx1raxNcApt05nNyNCSB6NegSiyJ4XOPsaNow4pfDmsg==} peerDependencies: '@simplewebauthn/browser': ^9.0.1 @@ -6687,7 +6690,7 @@ packages: optional: true dependencies: '@auth/core': 0.32.0 - next: 14.1.0(@babel/core@7.22.17)(react-dom@18.2.0)(react@18.2.0) + next: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.41.1)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 dev: false @@ -6702,35 +6705,39 @@ packages: - webpack dev: false - /next-themes@0.2.1(next@14.1.0)(react-dom@18.2.0)(react@18.2.0): + /next-themes@0.2.1(next@14.2.4)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==} peerDependencies: next: '*' react: '*' react-dom: '*' dependencies: - next: 14.1.0(@babel/core@7.22.17)(react-dom@18.2.0)(react@18.2.0) + next: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.41.1)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /next@14.1.0(@babel/core@7.22.17)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-wlzrsbfeSU48YQBjZhDzOwhWhGsy+uQycR8bHAOt1LY1bn3zZEcDyHQOEoN3aWzQ8LHCAJ1nqrWCc9XF2+O45Q==} + /next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.41.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-R8/V7vugY+822rsQGQCjoLhMuC9oFj9SOi4Cl4b2wjDrseD0LRZ10W7R6Czo4w9ZznVSshKjuIomsRjvm9EKJQ==} engines: {node: '>=18.17.0'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 react: ^18.2.0 react-dom: ^18.2.0 sass: ^1.3.0 peerDependenciesMeta: '@opentelemetry/api': optional: true + '@playwright/test': + optional: true sass: optional: true dependencies: - '@next/env': 14.1.0 - '@swc/helpers': 0.5.2 + '@next/env': 14.2.4 + '@playwright/test': 1.41.1 + '@swc/helpers': 0.5.5 busboy: 1.6.0 caniuse-lite: 1.0.30001587 graceful-fs: 4.2.11 @@ -6739,15 +6746,15 @@ packages: react-dom: 18.2.0(react@18.2.0) styled-jsx: 5.1.1(@babel/core@7.22.17)(react@18.2.0) optionalDependencies: - '@next/swc-darwin-arm64': 14.1.0 - '@next/swc-darwin-x64': 14.1.0 - '@next/swc-linux-arm64-gnu': 14.1.0 - '@next/swc-linux-arm64-musl': 14.1.0 - '@next/swc-linux-x64-gnu': 14.1.0 - '@next/swc-linux-x64-musl': 14.1.0 - '@next/swc-win32-arm64-msvc': 14.1.0 - '@next/swc-win32-ia32-msvc': 14.1.0 - '@next/swc-win32-x64-msvc': 14.1.0 + '@next/swc-darwin-arm64': 14.2.4 + '@next/swc-darwin-x64': 14.2.4 + '@next/swc-linux-arm64-gnu': 14.2.4 + '@next/swc-linux-arm64-musl': 14.2.4 + '@next/swc-linux-x64-gnu': 14.2.4 + '@next/swc-linux-x64-musl': 14.2.4 + '@next/swc-win32-arm64-msvc': 14.2.4 + '@next/swc-win32-ia32-msvc': 14.2.4 + '@next/swc-win32-x64-msvc': 14.2.4 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -7157,7 +7164,6 @@ packages: resolution: {integrity: sha512-/KPO5DzXSMlxSX77wy+HihKGOunh3hqndhqeo/nMxfigiKzogn8kfL0ZBDu0L1RKgan5XHCPmn6zXd2NUJgjhg==} engines: {node: '>=16'} hasBin: true - dev: true /playwright@1.41.1: resolution: {integrity: sha512-gdZAWG97oUnbBdRL3GuBvX3nDDmUOuqzV/D24dytqlKt+eI5KbwusluZRGljx1YoJKZ2NRPaeWiFTeGZO7SosQ==} @@ -7167,7 +7173,6 @@ packages: playwright-core: 1.41.1 optionalDependencies: fsevents: 2.3.2 - dev: true /possible-typed-array-names@1.0.0: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} From 4ccf0ea8bd24bdc8e94d5be6fac9231381954a32 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Fri, 14 Jun 2024 21:11:43 +0200 Subject: [PATCH 096/326] :wrench: remove use of jotai react-refresh --- next.config.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/next.config.js b/next.config.js index 34b1aa5c2..98a329a97 100644 --- a/next.config.js +++ b/next.config.js @@ -11,9 +11,9 @@ const nextConfig = removeImports({ 'storage.googleapis.com', ], }, - experimental: { - swcPlugins: [['@swc-jotai/react-refresh', {}]], - }, + // experimental: { + // swcPlugins: [['@swc-jotai/react-refresh', {}]], + // }, webpack: (config) => { config.experiments = { ...config.experiments, topLevelAwait: true }; return config; From 8e0b9724b6dbeca2fda2bcee621e9450771391aa Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Fri, 14 Jun 2024 21:12:59 +0200 Subject: [PATCH 097/326] :bug: turn into client component --- src/components/button/BackButton.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/button/BackButton.tsx b/src/components/button/BackButton.tsx index c4628b193..a25a334cb 100644 --- a/src/components/button/BackButton.tsx +++ b/src/components/button/BackButton.tsx @@ -1,3 +1,5 @@ +'use client'; + import { MoveLeft } from 'lucide-react'; import { useRouter } from 'next/navigation'; From ad0bb2ceeb7a8427801a016dd551b24405ce677b Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Fri, 14 Jun 2024 21:14:26 +0200 Subject: [PATCH 098/326] :construction: use next-auth v5 --- src/actions/create-answer/index.ts | 5 +- src/actions/create-node/index.ts | 9 +- src/actions/create-tag/index.ts | 5 +- src/actions/create-user/index.ts | 5 +- src/actions/create-users/index.ts | 5 +- src/actions/delete-tag/index.ts | 5 +- src/actions/delete-tenant/index.ts | 5 +- src/actions/delete-user/index.ts | 5 +- src/actions/get-me/index.ts | 8 +- src/actions/get-signed-logo/index.ts | 6 +- src/actions/index.ts | 1 + src/actions/login/index.ts | 15 ++ src/actions/update-answer/index.ts | 5 +- src/actions/update-logo/index.ts | 5 +- src/actions/update-node/index.ts | 5 +- src/actions/update-tenant/index.ts | 5 +- src/actions/update-user/index.ts | 5 +- src/actions/upsert-integrations/index.ts | 5 +- src/app/api/auth/[...nextauth]/route.ts | 173 ++++++++++++----------- src/app/loading.tsx | 48 ++++--- src/app/login/page.tsx | 75 ++++------ src/auth.ts | 5 + src/middleware.ts | 2 +- 23 files changed, 202 insertions(+), 205 deletions(-) create mode 100644 src/actions/login/index.ts diff --git a/src/actions/create-answer/index.ts b/src/actions/create-answer/index.ts index 3bda19afe..36e92e5e8 100644 --- a/src/actions/create-answer/index.ts +++ b/src/actions/create-answer/index.ts @@ -2,9 +2,8 @@ import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; -import { getServerSession } from 'next-auth'; +import { auth } from '@/auth'; -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; @@ -23,7 +22,7 @@ export async function createAnswer(formData: FormData) { return { error: 'Data not provided' }; } const data = Object.fromEntries(formData) as CreateAnswerData; - const session = await getServerSession(authOptions); + const session = await auth(); if (session) { const result = createAnswerSchema.safeParse(data); if (result.success === false) { diff --git a/src/actions/create-node/index.ts b/src/actions/create-node/index.ts index 7687ed4fa..868c33097 100644 --- a/src/actions/create-node/index.ts +++ b/src/actions/create-node/index.ts @@ -3,10 +3,9 @@ import { IncomingWebhook } from '@slack/webhook'; import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; -import { getServerSession } from 'next-auth'; +import { auth } from '@/auth'; import slugify from 'slugify'; -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import { Routes, dateOptions, timeOptions } from '@/utils'; import prisma from 'lib/prisma'; @@ -70,7 +69,7 @@ export const createNode = async (integrations, formData) => { if (data.tags) { data.tags = JSON.parse(data.tags); } - const session = await getServerSession(authOptions); + const session = await auth(); if (session) { const result = createNodeSchema.safeParse({ ...data }); if (result.success === false) { @@ -112,9 +111,9 @@ export const createNode = async (integrations, formData) => { message: 'Question created successfully', }; } - return { message: 'Question created successfully' }; + } else { + return { error: 'Not signed in' }; } - return { error: 'Not signed in' }; } catch (error) { return { error: 'Error creating question' }; } diff --git a/src/actions/create-tag/index.ts b/src/actions/create-tag/index.ts index fa333b7af..2319a7cbe 100644 --- a/src/actions/create-tag/index.ts +++ b/src/actions/create-tag/index.ts @@ -1,9 +1,8 @@ 'use server'; import { revalidatePath } from 'next/cache'; -import { getServerSession } from 'next-auth'; +import { auth } from '@/auth'; -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import prisma from 'lib/prisma'; import 'server-only'; @@ -23,7 +22,7 @@ export async function createTag(formData: FormData) { } const data = Object.fromEntries(formData) as CreateTagData; data.tagsCount = Number(data.tagsCount); - const session = await getServerSession(authOptions); + const session = await auth(); if (session) { const result = createTagSchema.safeParse(data); if (result.success === false) { diff --git a/src/actions/create-user/index.ts b/src/actions/create-user/index.ts index 79b2d42d0..4ec0482d4 100644 --- a/src/actions/create-user/index.ts +++ b/src/actions/create-user/index.ts @@ -1,9 +1,8 @@ 'use server'; import { revalidatePath } from 'next/cache'; -import { getServerSession } from 'next-auth'; +import { auth } from '@/auth'; -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import prisma from 'lib/prisma'; import 'server-only'; @@ -23,7 +22,7 @@ export async function createUser(formData: FormData) { } const data = Object.fromEntries(formData) as CreateUserData; data.usersCount = Number(data.usersCount); - const session = await getServerSession(authOptions); + const session = await auth(); if (session) { const result = createUserSchema.safeParse(data); if (result.success === false) { diff --git a/src/actions/create-users/index.ts b/src/actions/create-users/index.ts index 066cd9774..a6a21d7e3 100644 --- a/src/actions/create-users/index.ts +++ b/src/actions/create-users/index.ts @@ -1,9 +1,8 @@ 'use server'; import { revalidatePath } from 'next/cache'; -import { getServerSession } from 'next-auth'; +import { auth } from '@/auth'; -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import prisma from 'lib/prisma'; import 'server-only'; @@ -28,7 +27,7 @@ export async function createUsers(usersArray, formData) { const data = Object.fromEntries(formData) as CreateUsersData; data.usersCount = Number(data.usersCount); data.usersArray = usersArray; - const session = await getServerSession(authOptions); + const session = await auth(); if (session) { const result = createUsersSchema.safeParse({ ...data }); if (result.success === false) { diff --git a/src/actions/delete-tag/index.ts b/src/actions/delete-tag/index.ts index f264560e5..e3d17b518 100644 --- a/src/actions/delete-tag/index.ts +++ b/src/actions/delete-tag/index.ts @@ -1,9 +1,8 @@ 'use server'; import { revalidatePath } from 'next/cache'; -import { getServerSession } from 'next-auth'; +import { auth } from '@/auth'; -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import prisma from 'lib/prisma'; import 'server-only'; @@ -21,7 +20,7 @@ export async function deleteTag(formData: FormData) { return { error: 'Data not provided' }; } const data = Object.fromEntries(formData) as DeleteTagData; - const session = await getServerSession(authOptions); + const session = await auth(); if (session) { const result = deleteTagSchema.safeParse(data); if (result.success === false) { diff --git a/src/actions/delete-tenant/index.ts b/src/actions/delete-tenant/index.ts index b4f8cf94b..1d6556c2e 100644 --- a/src/actions/delete-tenant/index.ts +++ b/src/actions/delete-tenant/index.ts @@ -2,10 +2,9 @@ import { Storage } from '@google-cloud/storage'; import { redirect } from 'next/navigation'; -import { getServerSession } from 'next-auth'; +import { auth } from '@/auth'; import Stripe from 'stripe'; -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; @@ -28,7 +27,7 @@ export async function deleteTenant(formData: FormData) { return { error: 'Data not provided' }; } const data = Object.fromEntries(formData) as DeleteTenantData; - const session = await getServerSession(authOptions); + const session = await auth(); if (session) { const result = deleteTenantSchema(data.company).safeParse(data); if (result.success === false) { diff --git a/src/actions/delete-user/index.ts b/src/actions/delete-user/index.ts index 779748bdd..89083f646 100644 --- a/src/actions/delete-user/index.ts +++ b/src/actions/delete-user/index.ts @@ -1,9 +1,8 @@ 'use server'; import { revalidatePath } from 'next/cache'; -import { getServerSession } from 'next-auth'; +import { auth } from '@/auth'; -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import prisma from 'lib/prisma'; import 'server-only'; @@ -20,7 +19,7 @@ export async function deleteUser(formData: FormData) { return { error: 'Data not provided' }; } const data = Object.fromEntries(formData) as DeleteUserData; - const session = await getServerSession(authOptions); + const session = await auth(); if (session) { const result = deleteUserSchema.safeParse(data); if (result.success === false) { diff --git a/src/actions/get-me/index.ts b/src/actions/get-me/index.ts index 68e173571..b2c1ce244 100644 --- a/src/actions/get-me/index.ts +++ b/src/actions/get-me/index.ts @@ -1,15 +1,17 @@ import { cache } from 'react'; -import { getServerSession } from 'next-auth'; +import { auth } from '@/auth'; -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import prisma from 'lib/prisma'; import type { Me } from '@/types'; export const getMe = cache(async (): Promise => { try { - const session = await getServerSession(authOptions); + const session = await auth(); + if (!session) { + return null; + } const id = session?.user?.id; if (!id) { throw new Error('ID not found'); diff --git a/src/actions/get-signed-logo/index.ts b/src/actions/get-signed-logo/index.ts index 3902dd341..95ed371cd 100644 --- a/src/actions/get-signed-logo/index.ts +++ b/src/actions/get-signed-logo/index.ts @@ -1,9 +1,7 @@ 'use server'; import { Storage } from '@google-cloud/storage'; -import { getServerSession } from 'next-auth'; - -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import { auth } from '@/auth'; import 'server-only'; import { upsertLogoSchema } from './schema'; @@ -20,7 +18,7 @@ export async function getSignedLogo(formData: FormData) { return { error: 'Data not provided' }; } const data = Object.fromEntries(formData) as SignedLogoData; - const session = await getServerSession(authOptions); + const session = await auth(); if (session) { const result = upsertLogoSchema.safeParse(data); if (result.success === false) { diff --git a/src/actions/index.ts b/src/actions/index.ts index cf618b92f..01fb258cd 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -23,6 +23,7 @@ export * from './get-user-answers'; export * from './get-user-questions'; export * from './get-users'; export * from './get-users-count'; +export * from './login'; export * from './update-answer'; export * from './update-logo'; export * from './update-node'; diff --git a/src/actions/login/index.ts b/src/actions/login/index.ts new file mode 100644 index 000000000..8f9dd9e93 --- /dev/null +++ b/src/actions/login/index.ts @@ -0,0 +1,15 @@ +'use server'; + +import { signIn } from '@/auth'; +import { successToast } from '@/components'; +import 'server-only'; + +type EmailSignInData = { + email: string; +}; + +export async function emailSignIn(formData: FormData) { + const data = Object.fromEntries(formData) as EmailSignInData; + await signIn('resend', formData); + successToast(`Link sent to ${data.email}`); +} diff --git a/src/actions/update-answer/index.ts b/src/actions/update-answer/index.ts index beabc4b82..1e262692c 100644 --- a/src/actions/update-answer/index.ts +++ b/src/actions/update-answer/index.ts @@ -2,9 +2,8 @@ import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; -import { getServerSession } from 'next-auth'; +import { auth } from '@/auth'; -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; @@ -23,7 +22,7 @@ export async function updateAnswer(formData: FormData) { return { error: 'Data not provided' }; } const data = Object.fromEntries(formData) as UpdateAnswerData; - const session = await getServerSession(authOptions); + const session = await auth(); if (session) { const result = updateAnswerSchema.safeParse(data); if (result.success === false) { diff --git a/src/actions/update-logo/index.ts b/src/actions/update-logo/index.ts index c24f0fa1a..23a84bc15 100644 --- a/src/actions/update-logo/index.ts +++ b/src/actions/update-logo/index.ts @@ -3,9 +3,8 @@ import { Storage } from '@google-cloud/storage'; import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; -import { getServerSession } from 'next-auth'; +import { auth } from '@/auth'; -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import { Routes, bucketName } from '@/utils'; import prisma from 'lib/prisma'; @@ -23,7 +22,7 @@ export async function updateLogo(formData: FormData) { return { error: 'Data not provided' }; } const data = Object.fromEntries(formData) as UpdateLogoData; - const session = await getServerSession(authOptions); + const session = await auth(); if (session) { const result = updateLogoSchema.safeParse(data); if (result.success === false) { diff --git a/src/actions/update-node/index.ts b/src/actions/update-node/index.ts index 532534ef2..4ec358003 100644 --- a/src/actions/update-node/index.ts +++ b/src/actions/update-node/index.ts @@ -2,10 +2,9 @@ import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; -import { getServerSession } from 'next-auth'; +import { auth } from '@/auth'; import slugify from 'slugify'; -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; @@ -30,7 +29,7 @@ export async function updateNode(formData: FormData) { if (data.tags) { data.tags = JSON.parse(data.tags); } - const session = await getServerSession(authOptions); + const session = await auth(); if (session) { const result = updateNodeSchema.safeParse({ ...data }); if (result.success === false) { diff --git a/src/actions/update-tenant/index.ts b/src/actions/update-tenant/index.ts index a9a76ff35..f492ca801 100644 --- a/src/actions/update-tenant/index.ts +++ b/src/actions/update-tenant/index.ts @@ -2,9 +2,8 @@ import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; -import { getServerSession } from 'next-auth'; +import { auth } from '@/auth'; -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; @@ -23,7 +22,7 @@ export async function updateTenant(formData: FormData) { return { error: 'Data not provided' }; } const data = Object.fromEntries(formData) as UpdateTenantData; - const session = await getServerSession(authOptions); + const session = await auth(); if (session) { const result = updateTenantSchema.safeParse(data); if (result.success === false) { diff --git a/src/actions/update-user/index.ts b/src/actions/update-user/index.ts index c5c17cd46..6780cbcd2 100644 --- a/src/actions/update-user/index.ts +++ b/src/actions/update-user/index.ts @@ -1,9 +1,8 @@ 'use server'; import { revalidatePath } from 'next/cache'; -import { getServerSession } from 'next-auth'; +import { auth } from '@/auth'; -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import prisma from 'lib/prisma'; import 'server-only'; @@ -23,7 +22,7 @@ export async function updateUser(formData: FormData) { return { error: 'Data not provided' }; } const data = Object.fromEntries(formData) as UpdateUserData; - const session = await getServerSession(authOptions); + const session = await auth(); if (session) { const result = updateUserSchema.safeParse(data); if (result.success === false) { diff --git a/src/actions/upsert-integrations/index.ts b/src/actions/upsert-integrations/index.ts index 7919d2b8a..25f43a53b 100644 --- a/src/actions/upsert-integrations/index.ts +++ b/src/actions/upsert-integrations/index.ts @@ -2,9 +2,8 @@ import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; -import { getServerSession } from 'next-auth'; +import { auth } from '@/auth'; -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; @@ -22,7 +21,7 @@ export async function upsertIntegrations(formData: FormData) { return { error: 'Data not provided' }; } const data = Object.fromEntries(formData) as UpsertIntegrationsData; - const session = await getServerSession(authOptions); + const session = await auth(); if (session) { const result = upsertIntegrationsSchema.safeParse(data); if (result.success === false) { diff --git a/src/app/api/auth/[...nextauth]/route.ts b/src/app/api/auth/[...nextauth]/route.ts index 5d95053ba..83f952655 100644 --- a/src/app/api/auth/[...nextauth]/route.ts +++ b/src/app/api/auth/[...nextauth]/route.ts @@ -1,90 +1,93 @@ -import { PrismaAdapter } from '@next-auth/prisma-adapter'; -import NextAuth from 'next-auth'; -import GoogleProvider from 'next-auth/providers/google'; +// import { PrismaAdapter } from '@next-auth/prisma-adapter'; +// import NextAuth from 'next-auth'; +// import GoogleProvider from 'next-auth/providers/google'; -import { Routes } from '@/utils'; -import prisma from 'lib/prisma'; +// import { Routes } from '@/utils'; +// import prisma from 'lib/prisma'; -import type { NextAuthOptions } from 'next-auth'; +// import type { NextAuthOptions } from 'next-auth'; -export const authOptions: NextAuthOptions = { - adapter: PrismaAdapter(prisma), - providers: [ - GoogleProvider({ - clientId: process.env.GOOGLE_CLIENT_ID, - clientSecret: process.env.GOOGLE_CLIENT_SECRET, - allowDangerousEmailAccountLinking: true, - }), - ], - pages: { - signIn: Routes.SITE.LOGIN, - error: Routes.SITE.LOGIN, - }, - callbacks: { - async signIn({ profile, account }) { - const maybeUser = await prisma.user.findUnique({ - where: { email: profile.email }, - }); - if (!maybeUser) { - const domain = profile.email.split('@')[1]; - const tenant = await prisma.tenant.findUnique({ where: { domain } }); - if (!tenant) return false; - const usersCount = await prisma.user.count({ - where: { tenantId: tenant.id }, - }); - if ( - (tenant.plan === 'free' && usersCount >= 5) || - (tenant.plan === 'startup' && usersCount >= 100) - ) { - return false; - } - const newUser = await prisma.user.create({ - data: { - name: profile.name, - email: profile.email, - image: profile.picture, - role: 'user', - tenant: { connect: { id: tenant.id } }, - }, - }); - if (!newUser) { - return false; - } - return true; - } - if ( - account.provider === 'google' && - (!maybeUser.name || !maybeUser.image) - ) { - await prisma.user.update({ - where: { id: maybeUser.id }, - data: { - name: profile.name, - image: profile.picture, - }, - }); - } - return true; - }, - async jwt({ token, account, user }) { - if (account) { - token.accessToken = account.access_token; - token.id = user.id; - } - return token; - }, - async session({ session, token }) { - session.user.id = token.id as string; - return session; - }, - }, - session: { - strategy: `jwt`, - maxAge: 60 * 60, - }, - secret: process.env.NEXTAUTH_SECRET, -}; +// export const authOptions: NextAuthOptions = { +// adapter: PrismaAdapter(prisma), +// providers: [ +// GoogleProvider({ +// clientId: process.env.GOOGLE_CLIENT_ID, +// clientSecret: process.env.GOOGLE_CLIENT_SECRET, +// allowDangerousEmailAccountLinking: true, +// }), +// ], +// pages: { +// signIn: Routes.SITE.LOGIN, +// error: Routes.SITE.LOGIN, +// }, +// callbacks: { +// async signIn({ profile, account }) { +// const maybeUser = await prisma.user.findUnique({ +// where: { email: profile.email }, +// }); +// if (!maybeUser) { +// const domain = profile.email.split('@')[1]; +// const tenant = await prisma.tenant.findUnique({ where: { domain } }); +// if (!tenant) return false; +// const usersCount = await prisma.user.count({ +// where: { tenantId: tenant.id }, +// }); +// if ( +// (tenant.plan === 'free' && usersCount >= 5) || +// (tenant.plan === 'startup' && usersCount >= 100) +// ) { +// return false; +// } +// const newUser = await prisma.user.create({ +// data: { +// name: profile.name, +// email: profile.email, +// image: profile.picture, +// role: 'user', +// tenant: { connect: { id: tenant.id } }, +// }, +// }); +// if (!newUser) { +// return false; +// } +// return true; +// } +// if ( +// account.provider === 'google' && +// (!maybeUser.name || !maybeUser.image) +// ) { +// await prisma.user.update({ +// where: { id: maybeUser.id }, +// data: { +// name: profile.name, +// image: profile.picture, +// }, +// }); +// } +// return true; +// }, +// async jwt({ token, account, user }) { +// if (account) { +// token.accessToken = account.access_token; +// token.id = user.id; +// } +// return token; +// }, +// async session({ session, token }) { +// session.user.id = token.id as string; +// return session; +// }, +// }, +// session: { +// strategy: `jwt`, +// maxAge: 60 * 60, +// }, +// secret: process.env.NEXTAUTH_SECRET, +// }; -const handler = NextAuth(authOptions); +// const handler = NextAuth(authOptions); -export { handler as GET, handler as POST }; +// export { handler as GET, handler as POST }; + +import { handlers } from '@/auth'; +export const { GET, POST } = handlers; diff --git a/src/app/loading.tsx b/src/app/loading.tsx index e74f6ca7c..273b3b74d 100644 --- a/src/app/loading.tsx +++ b/src/app/loading.tsx @@ -1,23 +1,29 @@ +// export default function Loading() { +// return ( +//
    +//
    +//

    FAQMaker

    +//
    +//
    +//
      +//
    • +//
      +//
    • +//
    • +//
    • +//
    • +//
    • +//
    +//
    +//
    +//

    FAQMaker

    +//
    +//
    +// ); +// } + +import { Loader } from '@/components'; + export default function Loading() { - return ( -
    -
    -

    FAQMaker

    -
    -
    -
      -
    • -
      -
    • -
    • -
    • -
    • -
    • -
    -
    -
    -

    FAQMaker

    -
    -
    - ); + return ; } diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index 410efd712..5a886a5a8 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -2,15 +2,15 @@ import Link from 'next/link'; -import { Button, Field, Input, LoginButton, Password } from '@/components'; -import { Routes } from '@/utils'; +import { emailSignIn } from '@/actions'; +import { Button, Field, Input, LoginButton } from '@/components'; import { useMediaQuery } from '@/hooks'; -import { userLoginClientSchema } from '@/lib'; -import { IUserLoginFields, IUserUpdateFields } from '@/types'; +import { userEmailClientSchema } from '@/lib'; +import { Routes } from '@/utils'; import { zodResolver } from '@hookform/resolvers/zod'; -import { UserIcon, AtSign, Lock } from 'lucide-react'; -import { useState, useMemo, useEffect } from 'react'; -import { useForm, SubmitHandler } from 'react-hook-form'; +import { AtSign } from 'lucide-react'; +import { useEffect, useState } from 'react'; +import { SubmitHandler, useForm } from 'react-hook-form'; import { z } from 'zod'; const errors = { @@ -33,7 +33,7 @@ type ErrorProps = { error: string; }; -type Schema = z.infer; +type Schema = z.infer; const LoginError = ({ error }: ErrorProps) => { const errorMessage = error && (errors[error] ?? errors.default); @@ -50,11 +50,10 @@ export default async function Page({ searchParams }) { handleSubmit, formState: { isSubmitting, isDirty, errors, isValid }, } = useForm({ - resolver: zodResolver(userLoginClientSchema), + resolver: zodResolver(userEmailClientSchema), mode: 'onBlur', defaultValues: { email: '', - password: '', }, }); @@ -63,7 +62,7 @@ export default async function Page({ searchParams }) { Object.keys(data).forEach((key) => { formData.append(key, data[key]); }); - // await updateUser(formData); + await emailSignIn(formData); }; useEffect(() => { @@ -86,41 +85,23 @@ export default async function Page({ searchParams }) { className="flex flex-col items-center gap-4" >
    -
      -
    • - - } - type={'email'} - id={'email'} - placeholder={'Email'} - /> - -
    • -
    • - - } - type={'password'} - id={'password'} - placeholder={'Password'} - /> - -
    • -
    +
    + + } + type={'email'} + id={'email'} + placeholder={'Email'} + /> + +
    diff --git a/src/auth.ts b/src/auth.ts index 25144cd74..0c6888569 100644 --- a/src/auth.ts +++ b/src/auth.ts @@ -1,6 +1,7 @@ import { PrismaAdapter } from '@auth/prisma-adapter'; import NextAuth from 'next-auth'; import GoogleProvider from 'next-auth/providers/google'; +import ResendProvider from 'next-auth/providers/resend'; import { Routes } from './utils'; import prisma from 'lib/prisma'; @@ -12,6 +13,10 @@ export const { auth, handlers, signIn, signOut } = NextAuth({ clientSecret: process.env.GOOGLE_CLIENT_SECRET, allowDangerousEmailAccountLinking: true, }), + ResendProvider({ + apiKey: process.env.RESEND_API_KEY, + from: 'auth@faqmaker.co', + }), ], pages: { signIn: Routes.SITE.LOGIN, diff --git a/src/middleware.ts b/src/middleware.ts index 2509e89af..ca02fb634 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -1,4 +1,4 @@ -export { default } from 'next-auth/middleware'; +export { auth as middleware } from '@/auth'; export const config = { matcher: ['/', '/question', '/question/:path*', '/profile', '/settings'], From ca21d0711274b01c9a5396d3088463b988ff19f0 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 16 Jun 2024 16:18:26 +0200 Subject: [PATCH 099/326] :rewind: go back to next-auth v4 --- package.json | 4 +- pnpm-lock.yaml | 121 +++++++------- src/actions/create-answer/index.ts | 6 +- src/actions/create-node/index.ts | 6 +- src/actions/create-tag/index.ts | 6 +- src/actions/create-user/index.ts | 6 +- src/actions/create-users/index.ts | 6 +- src/actions/delete-tag/index.ts | 6 +- src/actions/delete-tenant/index.ts | 6 +- src/actions/delete-user/index.ts | 6 +- src/actions/get-me/index.ts | 9 +- src/actions/get-signed-logo/index.ts | 6 +- src/actions/login/index.ts | 3 +- src/actions/update-answer/index.ts | 6 +- src/actions/update-logo/index.ts | 6 +- src/actions/update-node/index.ts | 6 +- src/actions/update-tenant/index.ts | 6 +- src/actions/update-user/index.ts | 6 +- src/actions/upsert-integrations/index.ts | 6 +- src/app/api/auth/[...nextauth]/route.ts | 197 +++++++++++++---------- src/app/login/page.tsx | 2 +- src/auth.ts | 88 ---------- src/components/input/Password.tsx | 35 ---- src/components/input/index.ts | 1 - src/middleware.ts | 2 +- 25 files changed, 232 insertions(+), 320 deletions(-) delete mode 100644 src/auth.ts delete mode 100644 src/components/input/Password.tsx diff --git a/package.json b/package.json index f98e93af0..aed109b36 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,6 @@ "postinstall": "prisma generate" }, "dependencies": { - "@auth/prisma-adapter": "^2.2.0", "@google-cloud/storage": "^7.7.0", "@hookform/resolvers": "^3.3.4", "@next-auth/prisma-adapter": "^1.0.7", @@ -59,9 +58,10 @@ "jotai": "^2.6.4", "lucide-react": "^0.344.0", "next": "14.2.4", - "next-auth": "5.0.0-beta.19", + "next-auth": "^4.24.7", "next-remove-imports": "^1.0.12", "next-themes": "^0.2.1", + "nodemailer": "^6.9.13", "react": "18.2.0", "react-dom": "18.2.0", "react-dropzone": "^14.2.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4d9ab4b1f..9e434f3a2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,9 +5,6 @@ settings: excludeLinksFromLockfile: false dependencies: - '@auth/prisma-adapter': - specifier: ^2.2.0 - version: 2.2.0(@prisma/client@5.10.2) '@google-cloud/storage': specifier: ^7.7.0 version: 7.7.0 @@ -16,7 +13,7 @@ dependencies: version: 3.3.4(react-hook-form@7.45.4) '@next-auth/prisma-adapter': specifier: ^1.0.7 - version: 1.0.7(@prisma/client@5.10.2)(next-auth@5.0.0-beta.19) + version: 1.0.7(@prisma/client@5.10.2)(next-auth@4.24.7) '@prisma/client': specifier: 5.10.2 version: 5.10.2(prisma@5.10.2) @@ -90,14 +87,17 @@ dependencies: specifier: 14.2.4 version: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.41.1)(react-dom@18.2.0)(react@18.2.0) next-auth: - specifier: 5.0.0-beta.19 - version: 5.0.0-beta.19(next@14.2.4)(react@18.2.0) + specifier: ^4.24.7 + version: 4.24.7(next@14.2.4)(nodemailer@6.9.13)(react-dom@18.2.0)(react@18.2.0) next-remove-imports: specifier: ^1.0.12 version: 1.0.12(webpack@5.89.0) next-themes: specifier: ^0.2.1 version: 0.2.1(next@14.2.4)(react-dom@18.2.0)(react@18.2.0) + nodemailer: + specifier: ^6.9.13 + version: 6.9.13 react: specifier: 18.2.0 version: 18.2.0 @@ -267,42 +267,6 @@ packages: '@jridgewell/trace-mapping': 0.3.20 dev: false - /@auth/core@0.32.0: - resolution: {integrity: sha512-3+ssTScBd+1fd0/fscAyQN1tSygXzuhysuVVzB942ggU4mdfiTbv36P0ccVnExKWYJKvu3E2r3/zxXCCAmTOrg==} - peerDependencies: - '@simplewebauthn/browser': ^9.0.1 - '@simplewebauthn/server': ^9.0.2 - nodemailer: ^6.8.0 - peerDependenciesMeta: - '@simplewebauthn/browser': - optional: true - '@simplewebauthn/server': - optional: true - nodemailer: - optional: true - dependencies: - '@panva/hkdf': 1.1.1 - '@types/cookie': 0.6.0 - cookie: 0.6.0 - jose: 5.4.0 - oauth4webapi: 2.10.4 - preact: 10.11.3 - preact-render-to-string: 5.2.3(preact@10.11.3) - dev: false - - /@auth/prisma-adapter@2.2.0(@prisma/client@5.10.2): - resolution: {integrity: sha512-DiXgyJfqBb/6TPhNJ5IcRw3klxcFD+qaa7qvOYopV6rYinSUvsQkJ30m+so2SRlEsuDA6PqMu+Mf5Sd+zr3g+Q==} - peerDependencies: - '@prisma/client': '>=2.26.0 || >=3 || >=4 || >=5' - dependencies: - '@auth/core': 0.32.0 - '@prisma/client': 5.10.2(prisma@5.10.2) - transitivePeerDependencies: - - '@simplewebauthn/browser' - - '@simplewebauthn/server' - - nodemailer - dev: false - /@babel/code-frame@7.22.13: resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} @@ -911,14 +875,14 @@ packages: read-yaml-file: 1.1.0 dev: true - /@next-auth/prisma-adapter@1.0.7(@prisma/client@5.10.2)(next-auth@5.0.0-beta.19): + /@next-auth/prisma-adapter@1.0.7(@prisma/client@5.10.2)(next-auth@4.24.7): resolution: {integrity: sha512-Cdko4KfcmKjsyHFrWwZ//lfLUbcLqlyFqjd/nYE2m3aZ7tjMNUjpks47iw7NTCnXf+5UWz5Ypyt1dSs1EP5QJw==} peerDependencies: '@prisma/client': '>=2.26.0 || >=3' next-auth: ^4 dependencies: '@prisma/client': 5.10.2(prisma@5.10.2) - next-auth: 5.0.0-beta.19(next@14.2.4)(react@18.2.0) + next-auth: 4.24.7(next@14.2.4)(nodemailer@6.9.13)(react-dom@18.2.0)(react@18.2.0) dev: false /@next/env@14.2.4: @@ -2068,10 +2032,6 @@ packages: resolution: {integrity: sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==} dev: false - /@types/cookie@0.6.0: - resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} - dev: false - /@types/debug@4.1.8: resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} dependencies: @@ -3474,8 +3434,8 @@ packages: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} dev: false - /cookie@0.6.0: - resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + /cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} dev: false @@ -5758,8 +5718,8 @@ packages: resolution: {integrity: sha512-5eEbBDQT/jF1xg6l36P+mWGGoH9Spuy0PCdSr2dtWRDGC6ph/w9ZCL4lmESW8f8F7MwT3XKescfP0wnZWAKL9w==} hasBin: true - /jose@5.4.0: - resolution: {integrity: sha512-6rpxTHPAQyWMb9A35BroFl1Sp0ST3DpPcm5EVIxZxdH+e0Hv9fwhyB3XLKFUcHNpdSDnETmBfuPPTTlYz5+USw==} + /jose@4.15.5: + resolution: {integrity: sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==} dev: false /jotai@2.6.4(@types/react@18.0.27)(react@18.2.0): @@ -6057,7 +6017,6 @@ packages: engines: {node: '>=10'} dependencies: yallist: 4.0.0 - dev: true /lucide-react@0.344.0(react@18.2.0): resolution: {integrity: sha512-6YyBnn91GB45VuVT96bYCOKElbJzUHqp65vX8cDcu55MQL9T969v4dhGClpljamuI/+KMO9P6w9Acq1CVQGvIQ==} @@ -6673,25 +6632,30 @@ packages: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: false - /next-auth@5.0.0-beta.19(next@14.2.4)(react@18.2.0): - resolution: {integrity: sha512-YHu1igcAxZPh8ZB7GIM93dqgY6gcAzq66FOhQFheAdOx1raxNcApt05nNyNCSB6NegSiyJ4XOPsaNow4pfDmsg==} + /next-auth@4.24.7(next@14.2.4)(nodemailer@6.9.13)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-iChjE8ov/1K/z98gdKbn2Jw+2vLgJtVV39X+rCP5SGnVQuco7QOr19FRNGMIrD8d3LYhHWV9j9sKLzq1aDWWQQ==} peerDependencies: - '@simplewebauthn/browser': ^9.0.1 - '@simplewebauthn/server': ^9.0.2 - next: ^14 || ^15.0.0-0 + next: ^12.2.5 || ^13 || ^14 nodemailer: ^6.6.5 - react: ^18.2.0 || ^19.0.0-0 + react: ^17.0.2 || ^18 + react-dom: ^17.0.2 || ^18 peerDependenciesMeta: - '@simplewebauthn/browser': - optional: true - '@simplewebauthn/server': - optional: true nodemailer: optional: true dependencies: - '@auth/core': 0.32.0 + '@babel/runtime': 7.23.7 + '@panva/hkdf': 1.1.1 + cookie: 0.5.0 + jose: 4.15.5 next: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.41.1)(react-dom@18.2.0)(react@18.2.0) + nodemailer: 6.9.13 + oauth: 0.9.15 + openid-client: 5.6.5 + preact: 10.11.3 + preact-render-to-string: 5.2.3(preact@10.11.3) react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + uuid: 8.3.2 dev: false /next-remove-imports@1.0.12(webpack@5.89.0): @@ -6779,6 +6743,11 @@ packages: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} dev: false + /nodemailer@6.9.13: + resolution: {integrity: sha512-7o38Yogx6krdoBf3jCAqnIN4oSQFx+fMa0I7dK1D+me9kBxx12D+/33wSb+fhOCtIxvYJ+4x4IMEhmhCKfAiOA==} + engines: {node: '>=6.0.0'} + dev: false + /nopt@7.2.0: resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -6822,14 +6791,19 @@ packages: boolbase: 1.0.0 dev: false - /oauth4webapi@2.10.4: - resolution: {integrity: sha512-DSoj8QoChzOCQlJkRmYxAJCIpnXFW32R0Uq7avyghIeB6iJq0XAblOD7pcq3mx4WEBDwMuKr0Y1qveCBleG2Xw==} + /oauth@0.9.15: + resolution: {integrity: sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==} dev: false /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} + /object-hash@2.2.0: + resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} + engines: {node: '>= 6'} + dev: false + /object-hash@3.0.0: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} @@ -6925,6 +6899,11 @@ packages: es-object-atoms: 1.0.0 dev: true + /oidc-token-hash@5.0.3: + resolution: {integrity: sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==} + engines: {node: ^10.13.0 || >=12.0.0} + dev: false + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: @@ -6944,6 +6923,15 @@ packages: mimic-fn: 4.0.0 dev: true + /openid-client@5.6.5: + resolution: {integrity: sha512-5P4qO9nGJzB5PI0LFlhj4Dzg3m4odt0qsJTfyEtZyOlkgpILwEioOhVVJOrS1iVH494S4Ee5OCjjg6Bf5WOj3w==} + dependencies: + jose: 4.15.5 + lru-cache: 6.0.0 + object-hash: 2.2.0 + oidc-token-hash: 5.0.3 + dev: false + /optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} @@ -9315,7 +9303,6 @@ packages: /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true /yaml@2.3.3: resolution: {integrity: sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==} diff --git a/src/actions/create-answer/index.ts b/src/actions/create-answer/index.ts index 36e92e5e8..1f68d6958 100644 --- a/src/actions/create-answer/index.ts +++ b/src/actions/create-answer/index.ts @@ -2,7 +2,9 @@ import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; -import { auth } from '@/auth'; +import { getServerSession } from 'next-auth'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; @@ -22,7 +24,7 @@ export async function createAnswer(formData: FormData) { return { error: 'Data not provided' }; } const data = Object.fromEntries(formData) as CreateAnswerData; - const session = await auth(); + const session = await getServerSession(authOptions); if (session) { const result = createAnswerSchema.safeParse(data); if (result.success === false) { diff --git a/src/actions/create-node/index.ts b/src/actions/create-node/index.ts index 868c33097..ff752304a 100644 --- a/src/actions/create-node/index.ts +++ b/src/actions/create-node/index.ts @@ -3,7 +3,9 @@ import { IncomingWebhook } from '@slack/webhook'; import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; -import { auth } from '@/auth'; +import { getServerSession } from 'next-auth'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import slugify from 'slugify'; import { Routes, dateOptions, timeOptions } from '@/utils'; @@ -69,7 +71,7 @@ export const createNode = async (integrations, formData) => { if (data.tags) { data.tags = JSON.parse(data.tags); } - const session = await auth(); + const session = await getServerSession(authOptions); if (session) { const result = createNodeSchema.safeParse({ ...data }); if (result.success === false) { diff --git a/src/actions/create-tag/index.ts b/src/actions/create-tag/index.ts index 2319a7cbe..3087a3081 100644 --- a/src/actions/create-tag/index.ts +++ b/src/actions/create-tag/index.ts @@ -1,7 +1,9 @@ 'use server'; import { revalidatePath } from 'next/cache'; -import { auth } from '@/auth'; +import { getServerSession } from 'next-auth'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import prisma from 'lib/prisma'; @@ -22,7 +24,7 @@ export async function createTag(formData: FormData) { } const data = Object.fromEntries(formData) as CreateTagData; data.tagsCount = Number(data.tagsCount); - const session = await auth(); + const session = await getServerSession(authOptions); if (session) { const result = createTagSchema.safeParse(data); if (result.success === false) { diff --git a/src/actions/create-user/index.ts b/src/actions/create-user/index.ts index 4ec0482d4..160d9168f 100644 --- a/src/actions/create-user/index.ts +++ b/src/actions/create-user/index.ts @@ -1,7 +1,9 @@ 'use server'; import { revalidatePath } from 'next/cache'; -import { auth } from '@/auth'; +import { getServerSession } from 'next-auth'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import prisma from 'lib/prisma'; @@ -22,7 +24,7 @@ export async function createUser(formData: FormData) { } const data = Object.fromEntries(formData) as CreateUserData; data.usersCount = Number(data.usersCount); - const session = await auth(); + const session = await getServerSession(authOptions); if (session) { const result = createUserSchema.safeParse(data); if (result.success === false) { diff --git a/src/actions/create-users/index.ts b/src/actions/create-users/index.ts index a6a21d7e3..de3c8b55a 100644 --- a/src/actions/create-users/index.ts +++ b/src/actions/create-users/index.ts @@ -1,7 +1,9 @@ 'use server'; import { revalidatePath } from 'next/cache'; -import { auth } from '@/auth'; +import { getServerSession } from 'next-auth'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import prisma from 'lib/prisma'; @@ -27,7 +29,7 @@ export async function createUsers(usersArray, formData) { const data = Object.fromEntries(formData) as CreateUsersData; data.usersCount = Number(data.usersCount); data.usersArray = usersArray; - const session = await auth(); + const session = await getServerSession(authOptions); if (session) { const result = createUsersSchema.safeParse({ ...data }); if (result.success === false) { diff --git a/src/actions/delete-tag/index.ts b/src/actions/delete-tag/index.ts index e3d17b518..bacb4c672 100644 --- a/src/actions/delete-tag/index.ts +++ b/src/actions/delete-tag/index.ts @@ -1,7 +1,9 @@ 'use server'; import { revalidatePath } from 'next/cache'; -import { auth } from '@/auth'; +import { getServerSession } from 'next-auth'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import prisma from 'lib/prisma'; @@ -20,7 +22,7 @@ export async function deleteTag(formData: FormData) { return { error: 'Data not provided' }; } const data = Object.fromEntries(formData) as DeleteTagData; - const session = await auth(); + const session = await getServerSession(authOptions); if (session) { const result = deleteTagSchema.safeParse(data); if (result.success === false) { diff --git a/src/actions/delete-tenant/index.ts b/src/actions/delete-tenant/index.ts index 1d6556c2e..f604207f9 100644 --- a/src/actions/delete-tenant/index.ts +++ b/src/actions/delete-tenant/index.ts @@ -2,7 +2,9 @@ import { Storage } from '@google-cloud/storage'; import { redirect } from 'next/navigation'; -import { auth } from '@/auth'; +import { getServerSession } from 'next-auth'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import Stripe from 'stripe'; import { Routes } from '@/utils'; @@ -27,7 +29,7 @@ export async function deleteTenant(formData: FormData) { return { error: 'Data not provided' }; } const data = Object.fromEntries(formData) as DeleteTenantData; - const session = await auth(); + const session = await getServerSession(authOptions); if (session) { const result = deleteTenantSchema(data.company).safeParse(data); if (result.success === false) { diff --git a/src/actions/delete-user/index.ts b/src/actions/delete-user/index.ts index 89083f646..2a61f1132 100644 --- a/src/actions/delete-user/index.ts +++ b/src/actions/delete-user/index.ts @@ -1,7 +1,9 @@ 'use server'; import { revalidatePath } from 'next/cache'; -import { auth } from '@/auth'; +import { getServerSession } from 'next-auth'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import prisma from 'lib/prisma'; @@ -19,7 +21,7 @@ export async function deleteUser(formData: FormData) { return { error: 'Data not provided' }; } const data = Object.fromEntries(formData) as DeleteUserData; - const session = await auth(); + const session = await getServerSession(authOptions); if (session) { const result = deleteUserSchema.safeParse(data); if (result.success === false) { diff --git a/src/actions/get-me/index.ts b/src/actions/get-me/index.ts index b2c1ce244..bd75aeb94 100644 --- a/src/actions/get-me/index.ts +++ b/src/actions/get-me/index.ts @@ -1,6 +1,8 @@ import { cache } from 'react'; -import { auth } from '@/auth'; +import { getServerSession } from 'next-auth'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import prisma from 'lib/prisma'; @@ -8,10 +10,7 @@ import type { Me } from '@/types'; export const getMe = cache(async (): Promise => { try { - const session = await auth(); - if (!session) { - return null; - } + const session = await getServerSession(authOptions); const id = session?.user?.id; if (!id) { throw new Error('ID not found'); diff --git a/src/actions/get-signed-logo/index.ts b/src/actions/get-signed-logo/index.ts index 95ed371cd..3902dd341 100644 --- a/src/actions/get-signed-logo/index.ts +++ b/src/actions/get-signed-logo/index.ts @@ -1,7 +1,9 @@ 'use server'; import { Storage } from '@google-cloud/storage'; -import { auth } from '@/auth'; +import { getServerSession } from 'next-auth'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import 'server-only'; import { upsertLogoSchema } from './schema'; @@ -18,7 +20,7 @@ export async function getSignedLogo(formData: FormData) { return { error: 'Data not provided' }; } const data = Object.fromEntries(formData) as SignedLogoData; - const session = await auth(); + const session = await getServerSession(authOptions); if (session) { const result = upsertLogoSchema.safeParse(data); if (result.success === false) { diff --git a/src/actions/login/index.ts b/src/actions/login/index.ts index 8f9dd9e93..08390f347 100644 --- a/src/actions/login/index.ts +++ b/src/actions/login/index.ts @@ -1,6 +1,5 @@ 'use server'; -import { signIn } from '@/auth'; import { successToast } from '@/components'; import 'server-only'; @@ -10,6 +9,6 @@ type EmailSignInData = { export async function emailSignIn(formData: FormData) { const data = Object.fromEntries(formData) as EmailSignInData; - await signIn('resend', formData); + // await signIn('resend', formData); successToast(`Link sent to ${data.email}`); } diff --git a/src/actions/update-answer/index.ts b/src/actions/update-answer/index.ts index 1e262692c..95109f3b1 100644 --- a/src/actions/update-answer/index.ts +++ b/src/actions/update-answer/index.ts @@ -2,7 +2,9 @@ import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; -import { auth } from '@/auth'; +import { getServerSession } from 'next-auth'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; @@ -22,7 +24,7 @@ export async function updateAnswer(formData: FormData) { return { error: 'Data not provided' }; } const data = Object.fromEntries(formData) as UpdateAnswerData; - const session = await auth(); + const session = await getServerSession(authOptions); if (session) { const result = updateAnswerSchema.safeParse(data); if (result.success === false) { diff --git a/src/actions/update-logo/index.ts b/src/actions/update-logo/index.ts index 23a84bc15..811b00fc7 100644 --- a/src/actions/update-logo/index.ts +++ b/src/actions/update-logo/index.ts @@ -3,7 +3,9 @@ import { Storage } from '@google-cloud/storage'; import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; -import { auth } from '@/auth'; +import { getServerSession } from 'next-auth'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import { Routes, bucketName } from '@/utils'; import prisma from 'lib/prisma'; @@ -22,7 +24,7 @@ export async function updateLogo(formData: FormData) { return { error: 'Data not provided' }; } const data = Object.fromEntries(formData) as UpdateLogoData; - const session = await auth(); + const session = await getServerSession(authOptions); if (session) { const result = updateLogoSchema.safeParse(data); if (result.success === false) { diff --git a/src/actions/update-node/index.ts b/src/actions/update-node/index.ts index 4ec358003..66df69c53 100644 --- a/src/actions/update-node/index.ts +++ b/src/actions/update-node/index.ts @@ -2,7 +2,9 @@ import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; -import { auth } from '@/auth'; +import { getServerSession } from 'next-auth'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import slugify from 'slugify'; import { Routes } from '@/utils'; @@ -29,7 +31,7 @@ export async function updateNode(formData: FormData) { if (data.tags) { data.tags = JSON.parse(data.tags); } - const session = await auth(); + const session = await getServerSession(authOptions); if (session) { const result = updateNodeSchema.safeParse({ ...data }); if (result.success === false) { diff --git a/src/actions/update-tenant/index.ts b/src/actions/update-tenant/index.ts index f492ca801..72973e79f 100644 --- a/src/actions/update-tenant/index.ts +++ b/src/actions/update-tenant/index.ts @@ -2,7 +2,9 @@ import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; -import { auth } from '@/auth'; +import { getServerSession } from 'next-auth'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; @@ -22,7 +24,7 @@ export async function updateTenant(formData: FormData) { return { error: 'Data not provided' }; } const data = Object.fromEntries(formData) as UpdateTenantData; - const session = await auth(); + const session = await getServerSession(authOptions); if (session) { const result = updateTenantSchema.safeParse(data); if (result.success === false) { diff --git a/src/actions/update-user/index.ts b/src/actions/update-user/index.ts index 6780cbcd2..33c9f97f2 100644 --- a/src/actions/update-user/index.ts +++ b/src/actions/update-user/index.ts @@ -1,7 +1,9 @@ 'use server'; import { revalidatePath } from 'next/cache'; -import { auth } from '@/auth'; +import { getServerSession } from 'next-auth'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import prisma from 'lib/prisma'; @@ -22,7 +24,7 @@ export async function updateUser(formData: FormData) { return { error: 'Data not provided' }; } const data = Object.fromEntries(formData) as UpdateUserData; - const session = await auth(); + const session = await getServerSession(authOptions); if (session) { const result = updateUserSchema.safeParse(data); if (result.success === false) { diff --git a/src/actions/upsert-integrations/index.ts b/src/actions/upsert-integrations/index.ts index 25f43a53b..23da45560 100644 --- a/src/actions/upsert-integrations/index.ts +++ b/src/actions/upsert-integrations/index.ts @@ -2,7 +2,9 @@ import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; -import { auth } from '@/auth'; +import { getServerSession } from 'next-auth'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; @@ -21,7 +23,7 @@ export async function upsertIntegrations(formData: FormData) { return { error: 'Data not provided' }; } const data = Object.fromEntries(formData) as UpsertIntegrationsData; - const session = await auth(); + const session = await getServerSession(authOptions); if (session) { const result = upsertIntegrationsSchema.safeParse(data); if (result.success === false) { diff --git a/src/app/api/auth/[...nextauth]/route.ts b/src/app/api/auth/[...nextauth]/route.ts index 83f952655..5c88be4de 100644 --- a/src/app/api/auth/[...nextauth]/route.ts +++ b/src/app/api/auth/[...nextauth]/route.ts @@ -1,93 +1,114 @@ -// import { PrismaAdapter } from '@next-auth/prisma-adapter'; -// import NextAuth from 'next-auth'; -// import GoogleProvider from 'next-auth/providers/google'; +import { PrismaAdapter } from '@next-auth/prisma-adapter'; +import NextAuth from 'next-auth'; +import GoogleProvider from 'next-auth/providers/google'; +import EmailProvider from 'next-auth/providers/email'; +import nodemailer from 'nodemailer'; -// import { Routes } from '@/utils'; -// import prisma from 'lib/prisma'; +import { Routes } from '@/utils'; +import prisma from 'lib/prisma'; -// import type { NextAuthOptions } from 'next-auth'; +import type { NextAuthOptions } from 'next-auth'; -// export const authOptions: NextAuthOptions = { -// adapter: PrismaAdapter(prisma), -// providers: [ -// GoogleProvider({ -// clientId: process.env.GOOGLE_CLIENT_ID, -// clientSecret: process.env.GOOGLE_CLIENT_SECRET, -// allowDangerousEmailAccountLinking: true, -// }), -// ], -// pages: { -// signIn: Routes.SITE.LOGIN, -// error: Routes.SITE.LOGIN, -// }, -// callbacks: { -// async signIn({ profile, account }) { -// const maybeUser = await prisma.user.findUnique({ -// where: { email: profile.email }, -// }); -// if (!maybeUser) { -// const domain = profile.email.split('@')[1]; -// const tenant = await prisma.tenant.findUnique({ where: { domain } }); -// if (!tenant) return false; -// const usersCount = await prisma.user.count({ -// where: { tenantId: tenant.id }, -// }); -// if ( -// (tenant.plan === 'free' && usersCount >= 5) || -// (tenant.plan === 'startup' && usersCount >= 100) -// ) { -// return false; -// } -// const newUser = await prisma.user.create({ -// data: { -// name: profile.name, -// email: profile.email, -// image: profile.picture, -// role: 'user', -// tenant: { connect: { id: tenant.id } }, -// }, -// }); -// if (!newUser) { -// return false; -// } -// return true; -// } -// if ( -// account.provider === 'google' && -// (!maybeUser.name || !maybeUser.image) -// ) { -// await prisma.user.update({ -// where: { id: maybeUser.id }, -// data: { -// name: profile.name, -// image: profile.picture, -// }, -// }); -// } -// return true; -// }, -// async jwt({ token, account, user }) { -// if (account) { -// token.accessToken = account.access_token; -// token.id = user.id; -// } -// return token; -// }, -// async session({ session, token }) { -// session.user.id = token.id as string; -// return session; -// }, -// }, -// session: { -// strategy: `jwt`, -// maxAge: 60 * 60, -// }, -// secret: process.env.NEXTAUTH_SECRET, -// }; +export const authOptions: NextAuthOptions = { + adapter: PrismaAdapter(prisma), + providers: [ + GoogleProvider({ + clientId: process.env.GOOGLE_CLIENT_ID, + clientSecret: process.env.GOOGLE_CLIENT_SECRET, + allowDangerousEmailAccountLinking: true, + profile(profile) { + return { + id: profile.sub, + name: profile.name, + email: profile.email, + image: profile.picture, + }; + }, + }), + // EmailProvider({ + // server: { + // host: process.env.EMAIL_SERVER_HOST, + // port: process.env.EMAIL_SERVER_PORT, + // auth: { + // user: process.env.EMAIL_SERVER_USER, + // pass: process.env.EMAIL_SERVER_PASSWORD, + // }, + // }, + // from: process.env.EMAIL_FROM, + // }), + ], + pages: { + signIn: Routes.SITE.LOGIN, + error: Routes.SITE.LOGIN, + }, + callbacks: { + async signIn({ profile, account }) { + if (!profile || !account) { + return false; + } + const maybeUser = await prisma.user.findUnique({ + where: { email: profile.email }, + }); + if (!maybeUser) { + const domain = profile.email?.split('@')[1]; + const tenant = await prisma.tenant.findUnique({ where: { domain } }); + if (!tenant) return false; + const usersCount = await prisma.user.count({ + where: { tenantId: tenant.id }, + }); + if ( + (tenant.plan === 'free' && usersCount >= 5) || + (tenant.plan === 'startup' && usersCount >= 100) + ) { + return false; + } + const newUser = await prisma.user.create({ + data: { + name: profile.name, + email: profile.email, + image: profile.picture, + role: 'user', + tenant: { connect: { id: tenant.id } }, + }, + }); + if (!newUser) { + return false; + } + return true; + } + if ( + account.provider === 'google' && + (!maybeUser.name || !maybeUser.image) + ) { + await prisma.user.update({ + where: { id: maybeUser.id }, + data: { + name: profile.name, + image: profile.picture, + }, + }); + } + return true; + }, + async jwt({ token, account, user }) { + if (account) { + token.accessToken = account.access_token; + token.id = user.id; + } + return token; + }, + async session({ session, token }) { + session.user.id = token.id as string; + return session; + }, + }, + session: { + strategy: `jwt`, + maxAge: 60 * 60, + }, + secret: process.env.NEXTAUTH_SECRET, +}; -// const handler = NextAuth(authOptions); +const handler = NextAuth(authOptions); -// export { handler as GET, handler as POST }; - -import { handlers } from '@/auth'; -export const { GET, POST } = handlers; +export { handler as GET, handler as POST }; diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index 5a886a5a8..271e1e973 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -62,7 +62,7 @@ export default async function Page({ searchParams }) { Object.keys(data).forEach((key) => { formData.append(key, data[key]); }); - await emailSignIn(formData); + // await emailSignIn(formData); }; useEffect(() => { diff --git a/src/auth.ts b/src/auth.ts deleted file mode 100644 index 0c6888569..000000000 --- a/src/auth.ts +++ /dev/null @@ -1,88 +0,0 @@ -import { PrismaAdapter } from '@auth/prisma-adapter'; -import NextAuth from 'next-auth'; -import GoogleProvider from 'next-auth/providers/google'; -import ResendProvider from 'next-auth/providers/resend'; -import { Routes } from './utils'; -import prisma from 'lib/prisma'; - -export const { auth, handlers, signIn, signOut } = NextAuth({ - adapter: PrismaAdapter(prisma), - providers: [ - GoogleProvider({ - clientId: process.env.GOOGLE_CLIENT_ID, - clientSecret: process.env.GOOGLE_CLIENT_SECRET, - allowDangerousEmailAccountLinking: true, - }), - ResendProvider({ - apiKey: process.env.RESEND_API_KEY, - from: 'auth@faqmaker.co', - }), - ], - pages: { - signIn: Routes.SITE.LOGIN, - error: Routes.SITE.LOGIN, - }, - callbacks: { - async signIn({ profile, account }) { - const maybeUser = await prisma.user.findUnique({ - where: { email: profile.email }, - }); - if (!maybeUser) { - const domain = profile.email.split('@')[1]; - const tenant = await prisma.tenant.findUnique({ where: { domain } }); - if (!tenant) return false; - const usersCount = await prisma.user.count({ - where: { tenantId: tenant.id }, - }); - if ( - (tenant.plan === 'free' && usersCount >= 5) || - (tenant.plan === 'startup' && usersCount >= 100) - ) { - return false; - } - const newUser = await prisma.user.create({ - data: { - name: profile.name, - email: profile.email, - image: profile.picture, - role: 'user', - tenant: { connect: { id: tenant.id } }, - }, - }); - if (!newUser) { - return false; - } - return true; - } - if ( - account.provider === 'google' && - (!maybeUser.name || !maybeUser.image) - ) { - await prisma.user.update({ - where: { id: maybeUser.id }, - data: { - name: profile.name, - image: profile.picture, - }, - }); - } - return true; - }, - async jwt({ token, account, user }) { - if (account) { - token.accessToken = account.access_token; - token.id = user.id; - } - return token; - }, - async session({ session, token }) { - session.user.id = token.id as string; - return session; - }, - }, - session: { - strategy: `jwt`, - maxAge: 60 * 60, - }, - secret: process.env.NEXTAUTH_SECRET, -}); diff --git a/src/components/input/Password.tsx b/src/components/input/Password.tsx deleted file mode 100644 index e1f86cd8b..000000000 --- a/src/components/input/Password.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import type { ReactNode } from 'react'; -import { forwardRef } from 'react'; - -import { cn } from '@/utils'; - -export interface PasswordProps - extends React.InputHTMLAttributes { - lockIcon?: ReactNode; - unlockIcon?: ReactNode; -} - -const styles = - 'shadow-sm shadow-grayA-7 focus:shadow-tealA-8 bg-gray-3 w-full rounded-md p-1 outline-none'; - -export const Password = forwardRef( - ({ className, type, lockIcon, ...props }, ref) => { - return ( -
    -
    - - {lockIcon} - - -
    - -
    - ); - }, -); -Password.displayName = 'Password'; diff --git a/src/components/input/index.ts b/src/components/input/index.ts index 0433e32fe..ba9fe7ebc 100644 --- a/src/components/input/index.ts +++ b/src/components/input/index.ts @@ -1,2 +1 @@ export * from './Input'; -export * from './Password'; diff --git a/src/middleware.ts b/src/middleware.ts index ca02fb634..2509e89af 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -1,4 +1,4 @@ -export { auth as middleware } from '@/auth'; +export { default } from 'next-auth/middleware'; export const config = { matcher: ['/', '/question', '/question/:path*', '/profile', '/settings'], From 03f8b504db134c282bcd40e91502ea9dafeed3ac Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 16 Jun 2024 16:42:09 +0200 Subject: [PATCH 100/326] :card_file_box: create favorite table --- .../migration.sql | 18 +++++++++++++++ prisma/schema.prisma | 23 +++++++++++++++---- 2 files changed, 36 insertions(+), 5 deletions(-) create mode 100644 prisma/migrations/20240616144143_faqmaker_dev16/migration.sql diff --git a/prisma/migrations/20240616144143_faqmaker_dev16/migration.sql b/prisma/migrations/20240616144143_faqmaker_dev16/migration.sql new file mode 100644 index 000000000..0a7727e3e --- /dev/null +++ b/prisma/migrations/20240616144143_faqmaker_dev16/migration.sql @@ -0,0 +1,18 @@ +-- CreateTable +CREATE TABLE "Favorite" ( + "id" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "nodeId" TEXT NOT NULL, + "userId" TEXT NOT NULL, + + CONSTRAINT "Favorite_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "Favorite_userId_nodeId_key" ON "Favorite"("userId", "nodeId"); + +-- AddForeignKey +ALTER TABLE "Favorite" ADD CONSTRAINT "Favorite_nodeId_fkey" FOREIGN KEY ("nodeId") REFERENCES "Node"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Favorite" ADD CONSTRAINT "Favorite_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index ebd38bba2..f17040d21 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -37,19 +37,21 @@ model User { answers Answer[] accounts Account[] sessions Session[] + favorites Favorite[] @@index([tenantId]) } model Node { - id String @id @default(cuid()) - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt + id String @id @default(cuid()) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt question Question? answer Answer? tags Tag[] - tenant Tenant @relation(fields: [tenantId], references: [id], onDelete: Cascade) + tenant Tenant @relation(fields: [tenantId], references: [id], onDelete: Cascade) tenantId String + favorites Favorite[] @@index([tenantId]) } @@ -93,6 +95,17 @@ model Tag { @@index([tenantId]) } +model Favorite { + id String @id @default(cuid()) + createdAt DateTime @default(now()) + node Node @relation(fields: [nodeId], references: [id], onDelete: Cascade) + nodeId String + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + userId String + + @@unique([userId, nodeId]) +} + model Integrations { id String @id @default(cuid()) slack String @@ -139,4 +152,4 @@ model Session { userId String expires DateTime user User @relation(fields: [userId], references: [id], onDelete: Cascade) -} \ No newline at end of file +} From f76463e395df94aec52cbbd6e48bd3f88fe07bce Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 16 Jun 2024 16:42:37 +0200 Subject: [PATCH 101/326] :children_crossing: use tabs in profile page --- src/app/profile/profile.tsx | 54 ++++++++++++++++++++++--------- src/components/tabs/Tabs.tsx | 2 +- src/modules/profile/Answers.tsx | 2 +- src/modules/profile/Questions.tsx | 2 +- 4 files changed, 41 insertions(+), 19 deletions(-) diff --git a/src/app/profile/profile.tsx b/src/app/profile/profile.tsx index 825fa3f7d..da2d914a3 100644 --- a/src/app/profile/profile.tsx +++ b/src/app/profile/profile.tsx @@ -1,5 +1,6 @@ 'use client'; +import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components'; import { UpdateProfile, UserAnswers, UserQuestions } from '@/modules'; import type { @@ -14,27 +15,48 @@ type Props = { answers?: NodeWithQuestionAndAnswer[]; }; -const Section = ({ children }) => ( -
    - {children} -
    -); - export default function Profile({ me, questions, answers }: Props) { - const sections = [ - { component: , id: 'updateProfile' }, + const tabs = [ + { + value: 'profile', + label: 'Profile', + }, + { + value: 'questions', + label: 'Questions', + }, { - component: , - id: 'userQuestions', + value: 'answers', + label: 'Answers', }, - { component: , id: 'userAnswers' }, ]; return ( -
    - {sections.map((section) => ( -
    {section.component}
    - ))} -
    +
    + + + {tabs.map((tab) => ( + + {tab.label} + + ))} + +
    + + + + + + + + + +
    +
    +
    ); } diff --git a/src/components/tabs/Tabs.tsx b/src/components/tabs/Tabs.tsx index e6632b108..4066032bd 100644 --- a/src/components/tabs/Tabs.tsx +++ b/src/components/tabs/Tabs.tsx @@ -46,7 +46,7 @@ const TabsContent = forwardRef< { return ( <>

    Answers diff --git a/src/modules/profile/Questions.tsx b/src/modules/profile/Questions.tsx index 3878f9c9a..ccad40ab5 100644 --- a/src/modules/profile/Questions.tsx +++ b/src/modules/profile/Questions.tsx @@ -14,7 +14,7 @@ export const UserQuestions = ({ questions }: Props) => { return ( <>

    Questions From 96f76b0c1eb62a687336dc741f523d0f7b66268b Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 16 Jun 2024 19:24:33 +0200 Subject: [PATCH 102/326] :construction: work on adding favorite functionality --- src/actions/create-favorite/index.ts | 49 ++++++++++++++++ src/actions/create-favorite/schema.ts | 11 ++++ src/actions/index.ts | 1 + src/app/question/[id]/page.tsx | 2 +- src/app/question/[id]/question.tsx | 81 ++++++++++++++++++++------- src/app/question/answer/page.tsx | 3 +- src/lib/validations/favorite.ts | 6 ++ src/lib/validations/index.ts | 1 + 8 files changed, 132 insertions(+), 22 deletions(-) create mode 100644 src/actions/create-favorite/index.ts create mode 100644 src/actions/create-favorite/schema.ts create mode 100644 src/lib/validations/favorite.ts diff --git a/src/actions/create-favorite/index.ts b/src/actions/create-favorite/index.ts new file mode 100644 index 000000000..5d9c89770 --- /dev/null +++ b/src/actions/create-favorite/index.ts @@ -0,0 +1,49 @@ +'use server'; + +import { revalidatePath } from 'next/cache'; +import { redirect } from 'next/navigation'; +import { getServerSession } from 'next-auth'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; + +import { Routes } from '@/utils'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { createFavoriteSchema } from './schema'; + +type CreateFavoriteData = { + nodeId: string; + userId: string; +}; + +export async function createFavorite(formData: FormData) { + try { + if (!formData) { + return { error: 'Data not provided' }; + } + const data = Object.fromEntries(formData) as CreateFavoriteData; + const session = await getServerSession(authOptions); + if (session) { + const result = createFavoriteSchema.safeParse(data); + if (result.success === false) { + const errors = result.error.flatten().fieldErrors; + return { error: errors }; + } + const { nodeId, userId } = result.data; + await prisma.favorite.create({ + data: { + nodeId, + userId, + }, + }); + } else { + return { error: 'Not signed in' }; + } + } catch (error) { + return { error: 'Error creating answer' }; + } + revalidatePath(Routes.SITE.HOME); + redirect(Routes.SITE.HOME); + return { message: 'Answer created successfully' }; +} diff --git a/src/actions/create-favorite/schema.ts b/src/actions/create-favorite/schema.ts new file mode 100644 index 000000000..d55838f4c --- /dev/null +++ b/src/actions/create-favorite/schema.ts @@ -0,0 +1,11 @@ +import { z } from 'zod'; + +export const createFavoriteSchema = z.object({ + text: z + .string() + .trim() + .min(1, { message: 'Answer is required' }) + .max(1000, { message: 'Answer must be under 1000 characters long' }), + nodeId: z.string().cuid2(), + userId: z.string().cuid2(), +}); diff --git a/src/actions/index.ts b/src/actions/index.ts index 01fb258cd..24d46109b 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -1,4 +1,5 @@ export * from './create-answer'; +export * from './create-favorite'; export * from './create-node'; export * from './create-tag'; export * from './create-tenant'; diff --git a/src/app/question/[id]/page.tsx b/src/app/question/[id]/page.tsx index 86754443e..845aa5753 100644 --- a/src/app/question/[id]/page.tsx +++ b/src/app/question/[id]/page.tsx @@ -18,7 +18,7 @@ export default async function Page({ params }) {
    - +
    diff --git a/src/app/question/[id]/question.tsx b/src/app/question/[id]/question.tsx index 6434d8fe4..87946bab0 100644 --- a/src/app/question/[id]/question.tsx +++ b/src/app/question/[id]/question.tsx @@ -1,6 +1,6 @@ 'use client'; -import { HelpCircle, PenSquare, LinkIcon } from 'lucide-react'; +import { HelpCircle, PenSquare, LinkIcon, Heart, Bookmark } from 'lucide-react'; import dynamic from 'next/dynamic'; import Link from 'next/link'; import { usePathname } from 'next/navigation'; @@ -19,6 +19,11 @@ import { import { Routes, dateOptions } from '@/utils'; import type { ExtendedNode } from '@/types'; +import { SubmitHandler, useForm } from 'react-hook-form'; +import { createFavorite } from '@/actions'; +import { favoriteClientSchema } from '@/lib'; +import { zodResolver } from '@hookform/resolvers/zod'; +import { z } from 'zod'; const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { ssr: false, @@ -26,10 +31,31 @@ const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { type Props = { node: ExtendedNode; + userId: string; }; -export default function Question({ node }: Props) { +type Schema = z.infer; + +export default function Question({ node, userId }: Props) { const pathname = usePathname(); + + const { handleSubmit } = useForm({ + resolver: zodResolver(favoriteClientSchema), + mode: 'onBlur', + defaultValues: { + nodeId: node.id, + userId: userId, + }, + }); + + const onSubmit: SubmitHandler = async (data) => { + const formData = new FormData(); + Object.keys(data).forEach((key) => { + formData.append(key, data[key]); + }); + await createFavorite(formData); + }; + return (
    @@ -66,23 +92,40 @@ export default function Question({ node }: Props) {

    {node.question.text}

    - - - - - Copy url - +
    +
    + + + + + + Favorite + +
    + + + + + Copy URL + +
      {node.tags.map((tag) => ( diff --git a/src/app/question/answer/page.tsx b/src/app/question/answer/page.tsx index 18165ad15..05ed66a50 100644 --- a/src/app/question/answer/page.tsx +++ b/src/app/question/answer/page.tsx @@ -1,7 +1,6 @@ import { redirect } from 'next/navigation'; -import { getMe } from '@/actions'; -import { getNode } from '@/lib'; +import { getMe, getNode } from '@/actions'; import { Footer, Header } from '@/modules'; import { Routes } from '@/utils'; diff --git a/src/lib/validations/favorite.ts b/src/lib/validations/favorite.ts new file mode 100644 index 000000000..a8f741a2b --- /dev/null +++ b/src/lib/validations/favorite.ts @@ -0,0 +1,6 @@ +import { z } from 'zod'; + +export const favoriteClientSchema = z.object({ + userId: z.string().cuid2(), + nodeId: z.string().cuid2(), +}); diff --git a/src/lib/validations/index.ts b/src/lib/validations/index.ts index 9a452117c..3236b2ad4 100644 --- a/src/lib/validations/index.ts +++ b/src/lib/validations/index.ts @@ -1,5 +1,6 @@ export * from './answer'; export * from './integrations'; +export * from './favorite'; export * from './other'; export * from './question'; export * from './register'; From 6877712b944b09f7ee6924f539b5117bdf776e09 Mon Sep 17 00:00:00 2001 From: Thibaud Brault <77327446+thibaudbrault@users.noreply.github.com> Date: Mon, 17 Jun 2024 16:51:46 +0200 Subject: [PATCH 103/326] Update README.md --- README.md | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/README.md b/README.md index 415a98b0a..158966736 100644 --- a/README.md +++ b/README.md @@ -21,14 +21,7 @@ Explore the exciting features and functionalities available in FAQMaker. FAQMaker is built using a stack of cutting-edge technologies. -- React -- Next.js -- Typescript -- Tailwind CSS -- Prisma -- Railway -- Stripe -- Github Actions +![My Skills](https://skillicons.dev/icons?i=react,next,svelte,ts,tailwind,prisma,githubactions) ## License From 65ad718b8503e2a7c36087d95d54415b82d448ba Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Wed, 19 Jun 2024 20:20:47 +0200 Subject: [PATCH 104/326] :rotating_light: run prettier --- src/actions/create-answer/index.ts | 1 - src/actions/create-favorite/index.ts | 1 - src/actions/create-node/index.ts | 3 +-- src/actions/create-tag/index.ts | 1 - src/actions/create-user/index.ts | 1 - src/actions/create-users/index.ts | 1 - src/actions/delete-tag/index.ts | 1 - src/actions/delete-tenant/index.ts | 3 +-- src/actions/delete-user/index.ts | 1 - src/actions/get-me/index.ts | 1 - src/actions/update-answer/index.ts | 1 - src/actions/update-logo/index.ts | 1 - src/actions/update-node/index.ts | 3 +-- src/actions/update-tenant/index.ts | 1 - src/actions/update-user/index.ts | 1 - src/actions/upsert-integrations/index.ts | 1 - src/app/login/page.tsx | 28 +++++++++++------------- src/app/question/[id]/question.tsx | 15 +++++++------ 18 files changed, 24 insertions(+), 41 deletions(-) diff --git a/src/actions/create-answer/index.ts b/src/actions/create-answer/index.ts index 1f68d6958..3bda19afe 100644 --- a/src/actions/create-answer/index.ts +++ b/src/actions/create-answer/index.ts @@ -5,7 +5,6 @@ import { redirect } from 'next/navigation'; import { getServerSession } from 'next-auth'; import { authOptions } from '@/app/api/auth/[...nextauth]/route'; - import { Routes } from '@/utils'; import prisma from 'lib/prisma'; diff --git a/src/actions/create-favorite/index.ts b/src/actions/create-favorite/index.ts index 5d9c89770..8778e4c65 100644 --- a/src/actions/create-favorite/index.ts +++ b/src/actions/create-favorite/index.ts @@ -5,7 +5,6 @@ import { redirect } from 'next/navigation'; import { getServerSession } from 'next-auth'; import { authOptions } from '@/app/api/auth/[...nextauth]/route'; - import { Routes } from '@/utils'; import prisma from 'lib/prisma'; diff --git a/src/actions/create-node/index.ts b/src/actions/create-node/index.ts index ff752304a..598b224c0 100644 --- a/src/actions/create-node/index.ts +++ b/src/actions/create-node/index.ts @@ -4,10 +4,9 @@ import { IncomingWebhook } from '@slack/webhook'; import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; import { getServerSession } from 'next-auth'; - -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import slugify from 'slugify'; +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import { Routes, dateOptions, timeOptions } from '@/utils'; import prisma from 'lib/prisma'; diff --git a/src/actions/create-tag/index.ts b/src/actions/create-tag/index.ts index 3087a3081..fa333b7af 100644 --- a/src/actions/create-tag/index.ts +++ b/src/actions/create-tag/index.ts @@ -4,7 +4,6 @@ import { revalidatePath } from 'next/cache'; import { getServerSession } from 'next-auth'; import { authOptions } from '@/app/api/auth/[...nextauth]/route'; - import prisma from 'lib/prisma'; import 'server-only'; diff --git a/src/actions/create-user/index.ts b/src/actions/create-user/index.ts index 160d9168f..79b2d42d0 100644 --- a/src/actions/create-user/index.ts +++ b/src/actions/create-user/index.ts @@ -4,7 +4,6 @@ import { revalidatePath } from 'next/cache'; import { getServerSession } from 'next-auth'; import { authOptions } from '@/app/api/auth/[...nextauth]/route'; - import prisma from 'lib/prisma'; import 'server-only'; diff --git a/src/actions/create-users/index.ts b/src/actions/create-users/index.ts index de3c8b55a..066cd9774 100644 --- a/src/actions/create-users/index.ts +++ b/src/actions/create-users/index.ts @@ -4,7 +4,6 @@ import { revalidatePath } from 'next/cache'; import { getServerSession } from 'next-auth'; import { authOptions } from '@/app/api/auth/[...nextauth]/route'; - import prisma from 'lib/prisma'; import 'server-only'; diff --git a/src/actions/delete-tag/index.ts b/src/actions/delete-tag/index.ts index bacb4c672..f264560e5 100644 --- a/src/actions/delete-tag/index.ts +++ b/src/actions/delete-tag/index.ts @@ -4,7 +4,6 @@ import { revalidatePath } from 'next/cache'; import { getServerSession } from 'next-auth'; import { authOptions } from '@/app/api/auth/[...nextauth]/route'; - import prisma from 'lib/prisma'; import 'server-only'; diff --git a/src/actions/delete-tenant/index.ts b/src/actions/delete-tenant/index.ts index f604207f9..b4f8cf94b 100644 --- a/src/actions/delete-tenant/index.ts +++ b/src/actions/delete-tenant/index.ts @@ -3,10 +3,9 @@ import { Storage } from '@google-cloud/storage'; import { redirect } from 'next/navigation'; import { getServerSession } from 'next-auth'; - -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import Stripe from 'stripe'; +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; diff --git a/src/actions/delete-user/index.ts b/src/actions/delete-user/index.ts index 2a61f1132..779748bdd 100644 --- a/src/actions/delete-user/index.ts +++ b/src/actions/delete-user/index.ts @@ -4,7 +4,6 @@ import { revalidatePath } from 'next/cache'; import { getServerSession } from 'next-auth'; import { authOptions } from '@/app/api/auth/[...nextauth]/route'; - import prisma from 'lib/prisma'; import 'server-only'; diff --git a/src/actions/get-me/index.ts b/src/actions/get-me/index.ts index bd75aeb94..68e173571 100644 --- a/src/actions/get-me/index.ts +++ b/src/actions/get-me/index.ts @@ -3,7 +3,6 @@ import { cache } from 'react'; import { getServerSession } from 'next-auth'; import { authOptions } from '@/app/api/auth/[...nextauth]/route'; - import prisma from 'lib/prisma'; import type { Me } from '@/types'; diff --git a/src/actions/update-answer/index.ts b/src/actions/update-answer/index.ts index 95109f3b1..beabc4b82 100644 --- a/src/actions/update-answer/index.ts +++ b/src/actions/update-answer/index.ts @@ -5,7 +5,6 @@ import { redirect } from 'next/navigation'; import { getServerSession } from 'next-auth'; import { authOptions } from '@/app/api/auth/[...nextauth]/route'; - import { Routes } from '@/utils'; import prisma from 'lib/prisma'; diff --git a/src/actions/update-logo/index.ts b/src/actions/update-logo/index.ts index 811b00fc7..c24f0fa1a 100644 --- a/src/actions/update-logo/index.ts +++ b/src/actions/update-logo/index.ts @@ -6,7 +6,6 @@ import { redirect } from 'next/navigation'; import { getServerSession } from 'next-auth'; import { authOptions } from '@/app/api/auth/[...nextauth]/route'; - import { Routes, bucketName } from '@/utils'; import prisma from 'lib/prisma'; diff --git a/src/actions/update-node/index.ts b/src/actions/update-node/index.ts index 66df69c53..532534ef2 100644 --- a/src/actions/update-node/index.ts +++ b/src/actions/update-node/index.ts @@ -3,10 +3,9 @@ import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; import { getServerSession } from 'next-auth'; - -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import slugify from 'slugify'; +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; diff --git a/src/actions/update-tenant/index.ts b/src/actions/update-tenant/index.ts index 72973e79f..a9a76ff35 100644 --- a/src/actions/update-tenant/index.ts +++ b/src/actions/update-tenant/index.ts @@ -5,7 +5,6 @@ import { redirect } from 'next/navigation'; import { getServerSession } from 'next-auth'; import { authOptions } from '@/app/api/auth/[...nextauth]/route'; - import { Routes } from '@/utils'; import prisma from 'lib/prisma'; diff --git a/src/actions/update-user/index.ts b/src/actions/update-user/index.ts index 33c9f97f2..c5c17cd46 100644 --- a/src/actions/update-user/index.ts +++ b/src/actions/update-user/index.ts @@ -4,7 +4,6 @@ import { revalidatePath } from 'next/cache'; import { getServerSession } from 'next-auth'; import { authOptions } from '@/app/api/auth/[...nextauth]/route'; - import prisma from 'lib/prisma'; import 'server-only'; diff --git a/src/actions/upsert-integrations/index.ts b/src/actions/upsert-integrations/index.ts index 23da45560..7919d2b8a 100644 --- a/src/actions/upsert-integrations/index.ts +++ b/src/actions/upsert-integrations/index.ts @@ -5,7 +5,6 @@ import { redirect } from 'next/navigation'; import { getServerSession } from 'next-auth'; import { authOptions } from '@/app/api/auth/[...nextauth]/route'; - import { Routes } from '@/utils'; import prisma from 'lib/prisma'; diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index 271e1e973..c02983c66 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -1,17 +1,19 @@ 'use client'; +import { useEffect, useState } from 'react'; + +import { zodResolver } from '@hookform/resolvers/zod'; +import { AtSign } from 'lucide-react'; import Link from 'next/link'; +import { useForm } from 'react-hook-form'; -import { emailSignIn } from '@/actions'; import { Button, Field, Input, LoginButton } from '@/components'; import { useMediaQuery } from '@/hooks'; import { userEmailClientSchema } from '@/lib'; import { Routes } from '@/utils'; -import { zodResolver } from '@hookform/resolvers/zod'; -import { AtSign } from 'lucide-react'; -import { useEffect, useState } from 'react'; -import { SubmitHandler, useForm } from 'react-hook-form'; -import { z } from 'zod'; + +import type { SubmitHandler } from 'react-hook-form'; +import type { z } from 'zod'; const errors = { Signin: 'Try signing with a different account.', @@ -86,19 +88,15 @@ export default async function Page({ searchParams }) { >
      - + } - type={'email'} - id={'email'} - placeholder={'Email'} + type="email" + id="email" + placeholder="Email" />
      diff --git a/src/app/question/[id]/question.tsx b/src/app/question/[id]/question.tsx index 87946bab0..d6fd00a91 100644 --- a/src/app/question/[id]/question.tsx +++ b/src/app/question/[id]/question.tsx @@ -1,10 +1,13 @@ 'use client'; -import { HelpCircle, PenSquare, LinkIcon, Heart, Bookmark } from 'lucide-react'; +import { zodResolver } from '@hookform/resolvers/zod'; +import { HelpCircle, PenSquare, LinkIcon, Bookmark } from 'lucide-react'; import dynamic from 'next/dynamic'; import Link from 'next/link'; import { usePathname } from 'next/navigation'; +import { useForm } from 'react-hook-form'; +import { createFavorite } from '@/actions'; import { BackButton, Badge, @@ -16,14 +19,12 @@ import { TooltipContent, TooltipTrigger, } from '@/components'; +import { favoriteClientSchema } from '@/lib'; import { Routes, dateOptions } from '@/utils'; import type { ExtendedNode } from '@/types'; -import { SubmitHandler, useForm } from 'react-hook-form'; -import { createFavorite } from '@/actions'; -import { favoriteClientSchema } from '@/lib'; -import { zodResolver } from '@hookform/resolvers/zod'; -import { z } from 'zod'; +import type { SubmitHandler } from 'react-hook-form'; +import type { z } from 'zod'; const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { ssr: false, @@ -44,7 +45,7 @@ export default function Question({ node, userId }: Props) { mode: 'onBlur', defaultValues: { nodeId: node.id, - userId: userId, + userId, }, }); From b8bf9e4d95b1c05000b87cffd663ec1a838dda67 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Wed, 19 Jun 2024 20:25:12 +0200 Subject: [PATCH 105/326] :heavy_plus_sign: install next-safe-action --- package.json | 1 + pnpm-lock.yaml | 138 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 139 insertions(+) diff --git a/package.json b/package.json index aed109b36..b692c3ca0 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,7 @@ "next": "14.2.4", "next-auth": "^4.24.7", "next-remove-imports": "^1.0.12", + "next-safe-action": "^7.0.2", "next-themes": "^0.2.1", "nodemailer": "^6.9.13", "react": "18.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9e434f3a2..d1aaf7587 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -92,6 +92,9 @@ dependencies: next-remove-imports: specifier: ^1.0.12 version: 1.0.12(webpack@5.89.0) + next-safe-action: + specifier: ^7.0.2 + version: 7.0.2(next@14.2.4)(react-dom@18.2.0)(react@18.2.0)(zod@3.22.4) next-themes: specifier: ^0.2.1 version: 0.2.1(next@14.2.4)(react-dom@18.2.0)(react@18.2.0) @@ -2170,6 +2173,100 @@ packages: resolution: {integrity: sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==} dev: false + /@typeschema/core@0.13.2: + resolution: {integrity: sha512-pAt0MK249/9szYaoPuvzhSfOd3smrLhhwCCpUNB4onX32mRx5F3lzDIveIYGQkLYRq58xOX5sjoW+n72f/MLLw==} + peerDependencies: + '@types/json-schema': ^7.0.15 + peerDependenciesMeta: + '@types/json-schema': + optional: true + dev: false + + /@typeschema/main@0.13.10(@typeschema/zod@0.13.3): + resolution: {integrity: sha512-ArdFC4GbgdVWWgPKg2tymxx2KHMus3xZ8I2kHwqw/0P4FtWBXCmSNAiBqDtpoXXF8h9cbcm7fVpcs5ftoWT9+A==} + peerDependencies: + '@typeschema/arktype': 0.13.2 + '@typeschema/class-validator': 0.1.2 + '@typeschema/deepkit': 0.13.4 + '@typeschema/effect': 0.13.4 + '@typeschema/fastest-validator': 0.1.0 + '@typeschema/function': 0.13.2 + '@typeschema/io-ts': 0.13.3 + '@typeschema/joi': 0.13.3 + '@typeschema/json': 0.13.3 + '@typeschema/ow': 0.13.3 + '@typeschema/runtypes': 0.13.2 + '@typeschema/superstruct': 0.13.2 + '@typeschema/suretype': 0.1.0 + '@typeschema/typebox': 0.13.4 + '@typeschema/valibot': 0.13.5 + '@typeschema/valita': 0.1.0 + '@typeschema/vine': 0.1.0 + '@typeschema/yup': 0.13.3 + '@typeschema/zod': 0.13.3 + peerDependenciesMeta: + '@typeschema/arktype': + optional: true + '@typeschema/class-validator': + optional: true + '@typeschema/deepkit': + optional: true + '@typeschema/effect': + optional: true + '@typeschema/fastest-validator': + optional: true + '@typeschema/function': + optional: true + '@typeschema/io-ts': + optional: true + '@typeschema/joi': + optional: true + '@typeschema/json': + optional: true + '@typeschema/ow': + optional: true + '@typeschema/runtypes': + optional: true + '@typeschema/superstruct': + optional: true + '@typeschema/suretype': + optional: true + '@typeschema/typebox': + optional: true + '@typeschema/valibot': + optional: true + '@typeschema/valita': + optional: true + '@typeschema/vine': + optional: true + '@typeschema/yup': + optional: true + '@typeschema/zod': + optional: true + dependencies: + '@typeschema/core': 0.13.2 + '@typeschema/zod': 0.13.3(zod@3.22.4) + transitivePeerDependencies: + - '@types/json-schema' + dev: false + + /@typeschema/zod@0.13.3(zod@3.22.4): + resolution: {integrity: sha512-p5Hs22WIKkM/vZTAvw5QOLSA0EJ6QBUsQMGUrXlYnTAE2LSR/F5MLsDUb18O6S5VxGjrzU7x3VIznD5qOafJRw==} + peerDependencies: + zod: ^3.22.4 + zod-to-json-schema: ^3.22.4 + peerDependenciesMeta: + zod: + optional: true + zod-to-json-schema: + optional: true + dependencies: + '@typeschema/core': 0.13.2 + zod: 3.22.4 + transitivePeerDependencies: + - '@types/json-schema' + dev: false + /@typescript-eslint/eslint-plugin@7.12.0(@typescript-eslint/parser@7.12.0)(eslint@8.57.0)(typescript@5.3.3): resolution: {integrity: sha512-7F91fcbuDf/d3S8o21+r3ZncGIke/+eWk0EpO21LXhDfLahriZF9CGj4fbAetEjlaBdjdSm9a6VeXbpbT6Z40Q==} engines: {node: ^18.18.0 || >=20.0.0} @@ -6669,6 +6766,47 @@ packages: - webpack dev: false + /next-safe-action@7.0.2(next@14.2.4)(react-dom@18.2.0)(react@18.2.0)(zod@3.22.4): + resolution: {integrity: sha512-Zjxo5HhOV0vUxKP2zf4UE5d603oCwdr9CNadc4aImJnYrcpfed3S/mUf2gfXEHjTjRyPoTQ+s4oLMy5rATGuPQ==} + engines: {node: '>=18.17'} + peerDependencies: + next: '>= 14.0.0' + react: '>= 18.2.0' + react-dom: '>= 18.2.0' + zod: '>= 3.0.0' + peerDependenciesMeta: + zod: + optional: true + dependencies: + '@typeschema/main': 0.13.10(@typeschema/zod@0.13.3) + '@typeschema/zod': 0.13.3(zod@3.22.4) + next: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.41.1)(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + zod: 3.22.4 + transitivePeerDependencies: + - '@types/json-schema' + - '@typeschema/arktype' + - '@typeschema/class-validator' + - '@typeschema/deepkit' + - '@typeschema/effect' + - '@typeschema/fastest-validator' + - '@typeschema/function' + - '@typeschema/io-ts' + - '@typeschema/joi' + - '@typeschema/json' + - '@typeschema/ow' + - '@typeschema/runtypes' + - '@typeschema/superstruct' + - '@typeschema/suretype' + - '@typeschema/typebox' + - '@typeschema/valibot' + - '@typeschema/valita' + - '@typeschema/vine' + - '@typeschema/yup' + - zod-to-json-schema + dev: false + /next-themes@0.2.1(next@14.2.4)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==} peerDependencies: From c43d1afd0ffddcd23c1e1dc9c39af924b14bd488 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Wed, 19 Jun 2024 20:25:39 +0200 Subject: [PATCH 106/326] :wrench: initialize next-safe-action client --- src/lib/safe-actions.ts | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 src/lib/safe-actions.ts diff --git a/src/lib/safe-actions.ts b/src/lib/safe-actions.ts new file mode 100644 index 000000000..6873f96c7 --- /dev/null +++ b/src/lib/safe-actions.ts @@ -0,0 +1,3 @@ +import { createSafeActionClient } from "next-safe-action"; + +export const actionClient = createSafeActionClient(); \ No newline at end of file From 1fddfc032ed7651661f6a44d9cfad517163c2634 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 20 Jun 2024 17:31:03 +0200 Subject: [PATCH 107/326] :construction: use next-safe-action --- src/actions/create-answer/index.ts | 57 ++++-------- src/actions/create-answer/schema.ts | 1 - src/actions/create-favorite/index.ts | 56 +++--------- src/actions/create-favorite/schema.ts | 6 -- src/actions/create-node/index.ts | 51 +++-------- src/actions/create-node/schema.ts | 20 ++-- src/actions/create-tag/index.ts | 66 +++++--------- src/actions/create-tenant/index.ts | 39 +++----- src/actions/create-user/index.ts | 89 +++++++----------- src/actions/delete-tag/index.ts | 46 +++------- src/actions/delete-tenant/index.ts | 79 ++++++---------- src/actions/delete-user/index.ts | 47 +++------- src/actions/get-me/index.ts | 22 +++++ src/actions/update-answer/index.ts | 57 ++++-------- src/actions/update-answer/schema.ts | 1 - src/actions/update-logo/index.ts | 91 ++++++++----------- src/actions/update-logo/schema.ts | 2 + src/actions/update-node/index.ts | 54 ++++------- src/actions/update-tenant/index.ts | 59 ++++-------- src/actions/update-user/index.ts | 51 ++++------- src/actions/upsert-integrations/index.ts | 58 ++++-------- src/app/login/page.tsx | 5 +- src/app/question/[id]/page.tsx | 2 +- src/app/question/[id]/question.tsx | 17 +--- src/app/question/answer/answer.tsx | 41 +++++---- src/app/question/answer/page.tsx | 2 +- src/app/question/edit/edit.tsx | 31 ++----- src/app/question/new/new.tsx | 13 +-- src/app/register/confirm/form.tsx | 29 +++--- src/lib/safe-actions.ts | 32 ++++++- src/lib/validations/answer.ts | 10 -- src/lib/validations/index.ts | 1 - src/lib/validations/question.ts | 2 +- src/modules/profile/Update.tsx | 18 ++-- src/modules/settings/general/Company.tsx | 15 +-- src/modules/settings/general/Files.tsx | 9 +- src/modules/settings/general/Integrations.tsx | 15 +-- src/modules/settings/payment/Delete.tsx | 21 ++--- src/modules/settings/tags/Create.tsx | 19 ++-- src/modules/settings/tags/Tags.tsx | 5 +- src/modules/settings/users/Create.tsx | 17 ++-- src/modules/settings/users/FileInput.tsx | 2 +- src/modules/settings/users/Update.tsx | 20 ++-- src/modules/settings/users/Users.tsx | 5 +- 44 files changed, 475 insertions(+), 808 deletions(-) delete mode 100644 src/lib/validations/answer.ts diff --git a/src/actions/create-answer/index.ts b/src/actions/create-answer/index.ts index 3bda19afe..620b80161 100644 --- a/src/actions/create-answer/index.ts +++ b/src/actions/create-answer/index.ts @@ -1,50 +1,29 @@ -'use server'; +'use server' import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; -import { getServerSession } from 'next-auth'; -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import { authActionClient } from '@/lib/safe-actions'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; import 'server-only'; import { createAnswerSchema } from './schema'; -type CreateAnswerData = { - text: string; - nodeId: string; - userId: string; -}; +export * from './schema'; -export async function createAnswer(formData: FormData) { - try { - if (!formData) { - return { error: 'Data not provided' }; - } - const data = Object.fromEntries(formData) as CreateAnswerData; - const session = await getServerSession(authOptions); - if (session) { - const result = createAnswerSchema.safeParse(data); - if (result.success === false) { - const errors = result.error.flatten().fieldErrors; - return { error: errors }; - } - const { text, nodeId, userId } = result.data; - await prisma.answer.create({ - data: { - nodeId, - userId, - text, - }, - }); - } else { - return { error: 'Not signed in' }; - } - } catch (error) { - return { error: 'Error creating answer' }; - } - revalidatePath(Routes.SITE.HOME); - redirect(Routes.SITE.HOME); - return { message: 'Answer created successfully' }; -} +export const createAnswer = authActionClient + .metadata({ actionName: 'createAnswer' }) + .schema(createAnswerSchema) + .action(async ({ parsedInput: { text, nodeId }, ctx: { userId } }) => { + await prisma.answer.create({ + data: { + nodeId, + userId, + text, + }, + }); + revalidatePath(Routes.SITE.HOME); + redirect(Routes.SITE.HOME); + return { message: 'Answer created successfully' }; + }); diff --git a/src/actions/create-answer/schema.ts b/src/actions/create-answer/schema.ts index ea3cc827a..587c5605c 100644 --- a/src/actions/create-answer/schema.ts +++ b/src/actions/create-answer/schema.ts @@ -7,5 +7,4 @@ export const createAnswerSchema = z.object({ .min(1, { message: 'Answer is required' }) .max(1000, { message: 'Answer must be under 1000 characters long' }), nodeId: z.string().cuid2(), - userId: z.string().cuid2(), }); diff --git a/src/actions/create-favorite/index.ts b/src/actions/create-favorite/index.ts index 8778e4c65..a89f69b54 100644 --- a/src/actions/create-favorite/index.ts +++ b/src/actions/create-favorite/index.ts @@ -1,48 +1,22 @@ -'use server'; +'use server' -import { revalidatePath } from 'next/cache'; -import { redirect } from 'next/navigation'; -import { getServerSession } from 'next-auth'; - -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; -import { Routes } from '@/utils'; +import { authActionClient } from '@/lib/safe-actions'; import prisma from 'lib/prisma'; import 'server-only'; import { createFavoriteSchema } from './schema'; -type CreateFavoriteData = { - nodeId: string; - userId: string; -}; +export * from './schema'; -export async function createFavorite(formData: FormData) { - try { - if (!formData) { - return { error: 'Data not provided' }; - } - const data = Object.fromEntries(formData) as CreateFavoriteData; - const session = await getServerSession(authOptions); - if (session) { - const result = createFavoriteSchema.safeParse(data); - if (result.success === false) { - const errors = result.error.flatten().fieldErrors; - return { error: errors }; - } - const { nodeId, userId } = result.data; - await prisma.favorite.create({ - data: { - nodeId, - userId, - }, - }); - } else { - return { error: 'Not signed in' }; - } - } catch (error) { - return { error: 'Error creating answer' }; - } - revalidatePath(Routes.SITE.HOME); - redirect(Routes.SITE.HOME); - return { message: 'Answer created successfully' }; -} +export const createFavorite = authActionClient + .metadata({ actionName: 'createFavorite' }) + .schema(createFavoriteSchema) + .action(async ({ parsedInput: { nodeId }, ctx: { userId } }) => { + await prisma.favorite.create({ + data: { + nodeId, + userId, + }, + }); + return { message: 'Question added to favorites' }; + }); diff --git a/src/actions/create-favorite/schema.ts b/src/actions/create-favorite/schema.ts index d55838f4c..785ad75d6 100644 --- a/src/actions/create-favorite/schema.ts +++ b/src/actions/create-favorite/schema.ts @@ -1,11 +1,5 @@ import { z } from 'zod'; export const createFavoriteSchema = z.object({ - text: z - .string() - .trim() - .min(1, { message: 'Answer is required' }) - .max(1000, { message: 'Answer must be under 1000 characters long' }), nodeId: z.string().cuid2(), - userId: z.string().cuid2(), }); diff --git a/src/actions/create-node/index.ts b/src/actions/create-node/index.ts index 598b224c0..13ffe9cc0 100644 --- a/src/actions/create-node/index.ts +++ b/src/actions/create-node/index.ts @@ -3,23 +3,16 @@ import { IncomingWebhook } from '@slack/webhook'; import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; -import { getServerSession } from 'next-auth'; import slugify from 'slugify'; -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import { authActionClient } from '@/lib/safe-actions'; import { Routes, dateOptions, timeOptions } from '@/utils'; import prisma from 'lib/prisma'; import 'server-only'; import { createNodeSchema, slackIntegrationSchema } from './schema'; -type CreateNodeData = { - text: string; - tenantId: string; - userId: string; - withAnswer?: boolean; - tags: string; -}; +export * from './schema'; export const slackNotification = async (body) => { const result = slackIntegrationSchema.safeParse(body); @@ -61,23 +54,14 @@ export const slackNotification = async (body) => { return undefined; }; -export const createNode = async (integrations, formData) => { - try { - if (!formData) { - return { error: 'Data not provided' }; - } - const data = Object.fromEntries(formData) as CreateNodeData; - if (data.tags) { - data.tags = JSON.parse(data.tags); - } - const session = await getServerSession(authOptions); - if (session) { - const result = createNodeSchema.safeParse({ ...data }); - if (result.success === false) { - const errors = result.error.flatten().fieldErrors; - return { error: errors }; - } - const { text, tenantId, userId, tags, withAnswer } = result.data; +export const createNode = authActionClient + .metadata({ actionName: 'createNode' }) + .schema(createNodeSchema) + .action( + async ({ + parsedInput: { text, tenantId, tags, withAnswer, integrations }, + ctx: { userId }, + }) => { const duplicateQuestion = await prisma.node.findFirst({ where: { tenantId, question: { text } }, }); @@ -112,13 +96,8 @@ export const createNode = async (integrations, formData) => { message: 'Question created successfully', }; } - } else { - return { error: 'Not signed in' }; - } - } catch (error) { - return { error: 'Error creating question' }; - } - revalidatePath(Routes.SITE.HOME); - redirect(Routes.SITE.HOME); - return { message: 'Question created successfully' }; -}; + revalidatePath(Routes.SITE.HOME); + redirect(Routes.SITE.HOME); + return { message: 'Question created successfully' }; + }, + ); diff --git a/src/actions/create-node/schema.ts b/src/actions/create-node/schema.ts index 64a17c463..fa88d4529 100644 --- a/src/actions/create-node/schema.ts +++ b/src/actions/create-node/schema.ts @@ -1,5 +1,13 @@ import { z } from 'zod'; +export const slackIntegrationSchema = z.object({ + text: z + .string() + .trim() + .min(3, { message: 'Question must be at least 3 characters long' }), + url: z.string().trim().url({ message: 'Invalid URL' }), +}); + export const createNodeSchema = z.object({ text: z .string() @@ -7,15 +15,9 @@ export const createNodeSchema = z.object({ .min(3, { message: 'Question must be at least 3 characters long' }) .max(100, { message: 'Question must be under 100 characters long' }), tenantId: z.string().cuid2(), - userId: z.string().cuid2(), tags: z.array(z.string().cuid2()), withAnswer: z.boolean().optional(), -}); - -export const slackIntegrationSchema = z.object({ - text: z - .string() - .trim() - .min(3, { message: 'Question must be at least 3 characters long' }), - url: z.string().trim().url({ message: 'Invalid URL' }), + integrations: z.object({ + slack: z.string().trim().url({ message: 'Invalid URL' }), + }), }); diff --git a/src/actions/create-tag/index.ts b/src/actions/create-tag/index.ts index fa333b7af..c5263a6b8 100644 --- a/src/actions/create-tag/index.ts +++ b/src/actions/create-tag/index.ts @@ -1,54 +1,32 @@ -'use server'; +'use server' import { revalidatePath } from 'next/cache'; -import { getServerSession } from 'next-auth'; -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import { authActionClient } from '@/lib/safe-actions'; +import { Routes } from '@/utils'; import prisma from 'lib/prisma'; import 'server-only'; import { createTagSchema } from './schema'; -type CreateTagData = { - label: string; - tenantId: string; - plan: string; - tagsCount: string | number; -}; +export * from './schema'; -export async function createTag(formData: FormData) { - try { - if (!formData) { - return { error: 'Data not provided' }; +export const createTag = authActionClient + .metadata({ actionName: 'createTag' }) + .schema(createTagSchema) + .action(async ({ parsedInput: { label, tenantId, plan, tagsCount } }) => { + if ( + (plan === 'free' && tagsCount >= 3) || + (plan === 'startup' && tagsCount >= 10) + ) { + return { error: 'You reached the maximum number of tags.' }; } - const data = Object.fromEntries(formData) as CreateTagData; - data.tagsCount = Number(data.tagsCount); - const session = await getServerSession(authOptions); - if (session) { - const result = createTagSchema.safeParse(data); - if (result.success === false) { - const errors = result.error.flatten().fieldErrors; - return { error: errors }; - } - const { label, tenantId, plan, tagsCount } = result.data; - if ( - (plan === 'free' && tagsCount >= 3) || - (plan === 'startup' && tagsCount >= 10) - ) { - return { error: 'You reached the maximum number of tags.' }; - } - await prisma.tag.create({ - data: { - label, - tenantId, - }, - }); - } else { - return { error: 'Not signed in' }; - } - } catch (error) { - return { error: 'Error creating tag' }; - } - revalidatePath('/settings'); - return { message: 'Tag created successfully' }; -} + await prisma.tag.create({ + data: { + label, + tenantId, + }, + }); + revalidatePath(Routes.SITE.SETTINGS); + return { message: 'Tag created successfully' }; + }); diff --git a/src/actions/create-tenant/index.ts b/src/actions/create-tenant/index.ts index d39aa1667..b8a64efd3 100644 --- a/src/actions/create-tenant/index.ts +++ b/src/actions/create-tenant/index.ts @@ -1,34 +1,22 @@ -'use server'; +'use server' -import { Resend } from 'resend'; +// import { Resend } from 'resend'; +import { actionClient } from '@/lib/safe-actions'; import prisma from 'lib/prisma'; import 'server-only'; import { createTenantSchema } from './schema'; -const resend = new Resend(process.env.RESEND_API_KEY); -const { data: domains } = await resend.domains.list(); +export * from './schema'; -type CreateTenantData = { - company: string; - companyEmail: string; - domain: string; - email: string; -}; +// const resend = new Resend(process.env.RESEND_API_KEY); +// const { data: domains } = await resend.domains.list(); -export async function createTenant(formData: FormData) { - try { - if (!formData) { - return { error: 'Data not provided' }; - } - const data = Object.fromEntries(formData) as CreateTenantData; - const result = createTenantSchema.safeParse(data); - if (result.success === false) { - const errors = result.error.formErrors.fieldErrors; - return { error: errors }; - } - const { company, companyEmail, email, domain } = result.data; +export const createTenant = actionClient + .metadata({ actionName: 'createTenant' }) + .schema(createTenantSchema) + .action(async ({ parsedInput: { company, companyEmail, email, domain } }) => { const tenantExists = await prisma.tenant.findUnique({ where: { email: companyEmail }, }); @@ -69,8 +57,5 @@ export async function createTenant(formData: FormData) { // subject: 'Welcome to FAQMaker', // react: RegisterEmailTemplate(), // }); - } catch (error) { - return { error: 'Error creating account' }; - } - return { message: 'Account created successfully' }; -} + return { message: 'Account created successfully' }; + }); diff --git a/src/actions/create-user/index.ts b/src/actions/create-user/index.ts index 79b2d42d0..c80e24a60 100644 --- a/src/actions/create-user/index.ts +++ b/src/actions/create-user/index.ts @@ -1,65 +1,44 @@ -'use server'; +'use server' import { revalidatePath } from 'next/cache'; -import { getServerSession } from 'next-auth'; -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import { authActionClient } from '@/lib/safe-actions'; +import { Routes } from '@/utils'; import prisma from 'lib/prisma'; import 'server-only'; import { createUserSchema } from './schema'; -type CreateUserData = { - email: string; - role: string; - tenantId: string; - usersCount: string | number; -}; +export * from './schema'; -export async function createUser(formData: FormData) { - try { - if (!formData) { - return { error: 'Data not provided' }; +export const createUser = authActionClient + .metadata({ actionName: 'createUser' }) + .schema(createUserSchema) + .action(async ({ parsedInput: { email, role, usersCount, tenantId } }) => { + const userExists = await prisma.user.findUnique({ + where: { email, tenantId }, + }); + if (userExists) return { error: 'User already exists' }; + if (typeof usersCount !== 'number') + return { error: 'Could not find the number of users' }; + const tenant = await prisma.tenant.findUnique({ + where: { id: tenantId }, + select: { plan: true }, + }); + const plan = tenant?.plan; + if ( + (plan === 'free' && usersCount >= 5) || + (plan === 'startup' && usersCount >= 100) + ) { + return { error: 'You reached the maximum number of users' }; } - const data = Object.fromEntries(formData) as CreateUserData; - data.usersCount = Number(data.usersCount); - const session = await getServerSession(authOptions); - if (session) { - const result = createUserSchema.safeParse(data); - if (result.success === false) { - const errors = result.error.flatten().fieldErrors; - return { error: errors }; - } - const { email, role, usersCount, tenantId } = result.data; - const userExists = await prisma.user.findUnique({ - where: { email, tenantId }, - }); - if (userExists) return { error: 'User already exists' }; - if (typeof usersCount !== 'number') - return { error: 'Could not find the number of users' }; - const { plan } = await prisma.tenant.findUnique({ - where: { id: tenantId }, - select: { plan: true }, - }); - if ( - (plan === 'free' && usersCount >= 5) || - (plan === 'startup' && usersCount >= 100) - ) { - return { error: 'You reached the maximum number of users' }; - } - await prisma.user.create({ - data: { - email, - role, - tenantId, - }, - }); - } else { - return { error: 'Not signed in' }; - } - } catch (error) { - return { error: 'Error creating user' }; - } - revalidatePath('/settings'); - return { message: 'User created successfully' }; -} + await prisma.user.create({ + data: { + email, + role, + tenantId, + }, + }); + revalidatePath(Routes.SITE.SETTINGS); + return { message: 'User created successfully' }; + }); diff --git a/src/actions/delete-tag/index.ts b/src/actions/delete-tag/index.ts index f264560e5..81aee9d84 100644 --- a/src/actions/delete-tag/index.ts +++ b/src/actions/delete-tag/index.ts @@ -1,43 +1,23 @@ 'use server'; import { revalidatePath } from 'next/cache'; -import { getServerSession } from 'next-auth'; -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import { authActionClient } from '@/lib/safe-actions'; +import { Routes } from '@/utils'; import prisma from 'lib/prisma'; import 'server-only'; import { deleteTagSchema } from './schema'; -type DeleteTagData = { - text: string; - nodeId: string; - userId: string; -}; +export * from './schema'; -export async function deleteTag(formData: FormData) { - try { - if (!formData) { - return { error: 'Data not provided' }; - } - const data = Object.fromEntries(formData) as DeleteTagData; - const session = await getServerSession(authOptions); - if (session) { - const result = deleteTagSchema.safeParse(data); - if (result.success === false) { - const errors = result.error.flatten().fieldErrors; - return { error: errors }; - } - const { id, tenantId } = result.data; - await prisma.tag.delete({ - where: { id, tenantId }, - }); - } else { - return { error: 'Not signed in' }; - } - } catch (error) { - return { error: 'Error deleting tag' }; - } - revalidatePath('/settings'); - return { message: 'Tag deleted successfully' }; -} +export const deleteTag = authActionClient + .metadata({ actionName: 'deleteTag' }) + .schema(deleteTagSchema) + .action(async ({ parsedInput: { id, tenantId } }) => { + await prisma.tag.delete({ + where: { id, tenantId }, + }); + revalidatePath(Routes.SITE.SETTINGS); + return { message: 'Tag deleted successfully' }; + }); diff --git a/src/actions/delete-tenant/index.ts b/src/actions/delete-tenant/index.ts index b4f8cf94b..0491eac4f 100644 --- a/src/actions/delete-tenant/index.ts +++ b/src/actions/delete-tenant/index.ts @@ -1,48 +1,33 @@ -'use server'; - import { Storage } from '@google-cloud/storage'; import { redirect } from 'next/navigation'; -import { getServerSession } from 'next-auth'; import Stripe from 'stripe'; -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import { authActionClient } from '@/lib/safe-actions'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; import 'server-only'; import { deleteTenantSchema } from './schema'; +export * from './schema'; + const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { apiVersion: '2023-10-16', }); -type DeleteTenantData = { - text: string; - company: string; - id: string; -}; - -export async function deleteTenant(formData: FormData) { - try { - if (!formData) { - return { error: 'Data not provided' }; - } - const data = Object.fromEntries(formData) as DeleteTenantData; - const session = await getServerSession(authOptions); - if (session) { - const result = deleteTenantSchema(data.company).safeParse(data); - if (result.success === false) { - const errors = result.error.flatten().fieldErrors; - return { error: errors }; - } - const { id, company } = result.data; - const { customerId, logo } = await prisma.tenant.findUnique({ - where: { id, company }, - select: { - customerId: true, - logo: true, - }, - }); +export const deleteTenant = authActionClient + .metadata({ actionName: 'deleteTenant' }) + .schema(deleteTenantSchema(data.company)) + .action(async ({ parsedInput: { id, company } }) => { + const tenant = await prisma.tenant.findUnique({ + where: { id, company }, + select: { + customerId: true, + logo: true, + }, + }); + const { customerId, logo } = tenant; + if (logo) { const storage = new Storage({ projectId: process.env.PROJECT_ID, credentials: { @@ -52,24 +37,18 @@ export async function deleteTenant(formData: FormData) { }); const bucketName = 'faqmaker'; const bucket = storage.bucket(bucketName); - if (logo) { - const fileName = logo.replace( - 'https://storage.googleapis.com/faqmaker/', - '', - ); - bucket.file(fileName).delete(); - } - if (!customerId) return { error: `Customer not found` }; - await prisma.tenant.delete({ - where: { id, company }, - }); + const fileName = logo.replace( + 'https://storage.googleapis.com/faqmaker/', + '', + ); + bucket.file(fileName).delete(); + } + await prisma.tenant.delete({ + where: { id, company }, + }); + if (customerId) { await stripe.customers.del(customerId); - } else { - return { error: 'Not signed in' }; } - } catch (error) { - return { error: 'Error deleting tenant' }; - } - redirect(Routes.SITE.LOGIN); - return { message: 'Tenant deleted successfully' }; -} + redirect(Routes.SITE.LOGIN); + return { message: 'Account deleted successfully' }; + }); diff --git a/src/actions/delete-user/index.ts b/src/actions/delete-user/index.ts index 779748bdd..48f7d60c5 100644 --- a/src/actions/delete-user/index.ts +++ b/src/actions/delete-user/index.ts @@ -1,42 +1,23 @@ -'use server'; +'use server' import { revalidatePath } from 'next/cache'; -import { getServerSession } from 'next-auth'; -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import { authActionClient } from '@/lib/safe-actions'; +import { Routes } from '@/utils'; import prisma from 'lib/prisma'; import 'server-only'; import { deleteUserSchema } from './schema'; -type DeleteUserData = { - id: string; - tenantId: string; -}; +export * from './schema'; -export async function deleteUser(formData: FormData) { - try { - if (!formData) { - return { error: 'Data not provided' }; - } - const data = Object.fromEntries(formData) as DeleteUserData; - const session = await getServerSession(authOptions); - if (session) { - const result = deleteUserSchema.safeParse(data); - if (result.success === false) { - const errors = result.error.flatten().fieldErrors; - return { error: errors }; - } - const { id, tenantId } = result.data; - await prisma.user.delete({ - where: { id, tenantId }, - }); - } else { - return { error: 'Not signed in' }; - } - } catch (error) { - return { error: 'Error deleting tag' }; - } - revalidatePath('/settings'); - return { message: 'Tag deleted successfully' }; -} +export const deleteUser = authActionClient + .metadata({ actionName: 'deleteUser' }) + .schema(deleteUserSchema) + .action(async ({ parsedInput: { id, tenantId } }) => { + await prisma.user.delete({ + where: { id, tenantId }, + }); + revalidatePath(Routes.SITE.SETTINGS); + return { message: 'User deleted successfully' }; + }); diff --git a/src/actions/get-me/index.ts b/src/actions/get-me/index.ts index 68e173571..3de45a776 100644 --- a/src/actions/get-me/index.ts +++ b/src/actions/get-me/index.ts @@ -6,6 +6,7 @@ import { authOptions } from '@/app/api/auth/[...nextauth]/route'; import prisma from 'lib/prisma'; import type { Me } from '@/types'; +import type { Session } from 'next-auth'; export const getMe = cache(async (): Promise => { try { @@ -26,3 +27,24 @@ export const getMe = cache(async (): Promise => { throw new Error('Error fetching user'); } }); + +export const getUserId = cache( + async (session: Session): Promise => { + try { + const id = session?.user?.id; + if (!id) { + throw new Error('ID not found'); + } + const user = await prisma.user.findUnique({ + where: { id }, + select: { + id: true, + }, + }); + const userId = user?.id ?? null; + return userId as string; + } catch (error) { + throw new Error('Error fetching user'); + } + }, +); diff --git a/src/actions/update-answer/index.ts b/src/actions/update-answer/index.ts index beabc4b82..1e6b8fb6a 100644 --- a/src/actions/update-answer/index.ts +++ b/src/actions/update-answer/index.ts @@ -1,50 +1,29 @@ -'use server'; +'use server' import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; -import { getServerSession } from 'next-auth'; -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import { authActionClient } from '@/lib/safe-actions'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; import 'server-only'; import { updateAnswerSchema } from './schema'; -type UpdateAnswerData = { - text: string; - id: string; - userId: string; -}; +export * from './schema'; -export async function updateAnswer(formData: FormData) { - try { - if (!formData) { - return { error: 'Data not provided' }; - } - const data = Object.fromEntries(formData) as UpdateAnswerData; - const session = await getServerSession(authOptions); - if (session) { - const result = updateAnswerSchema.safeParse(data); - if (result.success === false) { - const errors = result.error.flatten().fieldErrors; - return { error: errors }; - } - const { text, id, userId } = result.data; - await prisma.answer.update({ - where: { id }, - data: { - text, - userId, - }, - }); - } else { - return { error: 'Not signed in' }; - } - } catch (error) { - return { error: 'Error updating answer' }; - } - revalidatePath(Routes.SITE.HOME); - redirect(Routes.SITE.HOME); - return { message: 'Answer updated successfully' }; -} +export const updateAnswer = authActionClient + .metadata({ actionName: 'updateAnswer' }) + .schema(updateAnswerSchema) + .action(async ({ parsedInput: { text, id }, ctx: { userId } }) => { + await prisma.answer.update({ + where: { id }, + data: { + text, + userId, + }, + }); + revalidatePath(Routes.SITE.HOME); + redirect(Routes.SITE.HOME); + return { message: 'Answer updated successfully' }; + }); diff --git a/src/actions/update-answer/schema.ts b/src/actions/update-answer/schema.ts index 9059a3356..2b6a1ab9b 100644 --- a/src/actions/update-answer/schema.ts +++ b/src/actions/update-answer/schema.ts @@ -6,6 +6,5 @@ export const updateAnswerSchema = z.object({ .trim() .min(1, { message: 'Answer is required' }) .max(1000, { message: 'Answer must be under 1000 characters long' }), - userId: z.string().cuid2(), id: z.string().cuid2(), }); diff --git a/src/actions/update-logo/index.ts b/src/actions/update-logo/index.ts index c24f0fa1a..52f681113 100644 --- a/src/actions/update-logo/index.ts +++ b/src/actions/update-logo/index.ts @@ -1,70 +1,51 @@ -'use server'; +'use server' import { Storage } from '@google-cloud/storage'; import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; -import { getServerSession } from 'next-auth'; -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import { authActionClient } from '@/lib/safe-actions'; import { Routes, bucketName } from '@/utils'; import prisma from 'lib/prisma'; import 'server-only'; import { updateLogoSchema } from './schema'; -type UpdateLogoData = { - logoUrl: string; - id: string; -}; +export * from './schema'; -export async function updateLogo(formData: FormData) { - try { - if (!formData) { - return { error: 'Data not provided' }; - } - const data = Object.fromEntries(formData) as UpdateLogoData; - const session = await getServerSession(authOptions); - if (session) { - const result = updateLogoSchema.safeParse(data); - if (result.success === false) { - const errors = result.error.flatten().fieldErrors; - return { error: errors }; - } - const { logoUrl, id } = result.data; - const { logo: oldLogo } = await prisma.tenant.findUnique({ - where: { id }, - select: { - logo: true, - }, - }); - if (oldLogo) { - const storage = new Storage({ - projectId: process.env.PROJECT_ID, - credentials: { - client_email: process.env.CLIENT_EMAIL, - private_key: process.env.PRIVATE_KEY.replace(/\\n/g, '\n'), - }, - }); - const bucket = storage.bucket(bucketName); - const fileName = oldLogo.replace( - 'https://storage.googleapis.com/faqmaker/', - '', - ); - bucket.file(fileName).delete(); - } - await prisma.tenant.update({ - where: { id }, - data: { - logo: logoUrl, +export const updateLogo = authActionClient + .metadata({ actionName: 'updateLogo' }) + .schema(updateLogoSchema) + .action(async ({ parsedInput: { logoUrl, id } }) => { + const tenant = await prisma.tenant.findUnique({ + where: { id }, + select: { + logo: true, + }, + }); + const oldLogo = tenant?.logo; + if (oldLogo) { + const storage = new Storage({ + projectId: process.env.PROJECT_ID, + credentials: { + client_email: process.env.CLIENT_EMAIL, + private_key: process.env.PRIVATE_KEY.replace(/\\n/g, '\n'), }, }); - } else { - return { error: 'Not signed in' }; + const bucket = storage.bucket(bucketName); + const fileName = oldLogo.replace( + 'https://storage.googleapis.com/faqmaker/', + '', + ); + bucket.file(fileName).delete(); } - } catch (error) { - return { error: 'Error updating answer' }; - } - revalidatePath(Routes.SITE.HOME); - redirect(Routes.SITE.HOME); - return { message: 'Answer updated successfully' }; -} + await prisma.tenant.update({ + where: { id }, + data: { + logo: logoUrl, + }, + }); + revalidatePath(Routes.SITE.HOME); + redirect(Routes.SITE.HOME); + return { message: 'Logo created successfully' }; + }); diff --git a/src/actions/update-logo/schema.ts b/src/actions/update-logo/schema.ts index dbe9aa65a..90c887680 100644 --- a/src/actions/update-logo/schema.ts +++ b/src/actions/update-logo/schema.ts @@ -7,3 +7,5 @@ export const updateLogoSchema = z.object({ .regex(/^https:\/\/storage\.googleapis\.com\/faqmaker\/logos/), id: z.string().cuid2(), }); + +export type UpdateLogo = z.infer; diff --git a/src/actions/update-node/index.ts b/src/actions/update-node/index.ts index 532534ef2..8488b6852 100644 --- a/src/actions/update-node/index.ts +++ b/src/actions/update-node/index.ts @@ -1,43 +1,26 @@ -'use server'; +'use server' import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; -import { getServerSession } from 'next-auth'; import slugify from 'slugify'; -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import { authActionClient } from '@/lib/safe-actions'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; import 'server-only'; import { updateNodeSchema } from './schema'; -type UpdateNodeData = { - text: string; - id: string; - userId: string; - tenantId: string; - questionId: string; - tags: string; -}; +export * from './schema'; -export async function updateNode(formData: FormData) { - try { - if (!formData) { - return { error: 'Data not provided' }; - } - const data = Object.fromEntries(formData) as UpdateNodeData; - if (data.tags) { - data.tags = JSON.parse(data.tags); - } - const session = await getServerSession(authOptions); - if (session) { - const result = updateNodeSchema.safeParse({ ...data }); - if (result.success === false) { - const errors = result.error.flatten().fieldErrors; - return { error: errors }; - } - const { tenantId, questionId, text, userId, tags, id } = result.data; +export const updateNode = authActionClient + .metadata({ actionName: 'updateNode' }) + .schema(updateNodeSchema) + .action( + async ({ + parsedInput: { tenantId, questionId, text, tags, id }, + ctx: { userId }, + }) => { const duplicateQuestion = await prisma.node.findFirst({ where: { tenantId, @@ -71,13 +54,8 @@ export async function updateNode(formData: FormData) { }, }, }); - } else { - return { error: 'Not signed in' }; - } - } catch (error) { - return { error: 'Error updating question' }; - } - revalidatePath(Routes.SITE.HOME); - redirect(Routes.SITE.HOME); - return { message: 'Question updated successfully' }; -} + revalidatePath(Routes.SITE.HOME); + redirect(Routes.SITE.HOME); + return { message: 'Question updated successfully' }; + }, + ); diff --git a/src/actions/update-tenant/index.ts b/src/actions/update-tenant/index.ts index a9a76ff35..c3503d6b1 100644 --- a/src/actions/update-tenant/index.ts +++ b/src/actions/update-tenant/index.ts @@ -1,51 +1,30 @@ -'use server'; +'use server' import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; -import { getServerSession } from 'next-auth'; -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import { authActionClient } from '@/lib/safe-actions'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; import 'server-only'; import { updateTenantSchema } from './schema'; -type UpdateTenantData = { - text: string; - id: string; - userId: string; -}; +export * from './schema'; -export async function updateTenant(formData: FormData) { - try { - if (!formData) { - return { error: 'Data not provided' }; - } - const data = Object.fromEntries(formData) as UpdateTenantData; - const session = await getServerSession(authOptions); - if (session) { - const result = updateTenantSchema.safeParse(data); - if (result.success === false) { - const errors = result.error.flatten().fieldErrors; - return { error: errors }; - } - const { company, id, email, domain } = result.data; - await prisma.tenant.update({ - where: { id }, - data: { - company, - email, - domain: domain || '', - }, - }); - } else { - return { error: 'Not signed in' }; - } - } catch (error) { - return { error: 'Error updating tenant' }; - } - revalidatePath(Routes.SITE.SETTINGS); - redirect(Routes.SITE.HOME); - return { message: 'Tenant updated successfully' }; -} +export const updateTenant = authActionClient + .metadata({ actionName: 'updateTenant' }) + .schema(updateTenantSchema) + .action(async ({ parsedInput: { company, id, email, domain } }) => { + await prisma.tenant.update({ + where: { id }, + data: { + company, + email, + domain: domain || '', + }, + }); + revalidatePath(Routes.SITE.SETTINGS); + redirect(Routes.SITE.HOME); + return { message: 'Tenant updated successfully' }; + }); diff --git a/src/actions/update-user/index.ts b/src/actions/update-user/index.ts index c5c17cd46..7f8162714 100644 --- a/src/actions/update-user/index.ts +++ b/src/actions/update-user/index.ts @@ -1,50 +1,33 @@ -'use server'; +'use server' import { revalidatePath } from 'next/cache'; -import { getServerSession } from 'next-auth'; -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import { authActionClient } from '@/lib/safe-actions'; +import { Routes } from '@/utils'; import prisma from 'lib/prisma'; import 'server-only'; import { updateUserSchema } from './schema'; -type UpdateUserData = { - tenantId: string; - id: string; - email: string; - name: string; - role: string; -}; +export * from './schema'; -export async function updateUser(formData: FormData) { - try { - if (!formData) { - return { error: 'Data not provided' }; - } - const data = Object.fromEntries(formData) as UpdateUserData; - const session = await getServerSession(authOptions); - if (session) { - const result = updateUserSchema.safeParse(data); - if (result.success === false) { - const errors = result.error.flatten().fieldErrors; - return { error: errors }; - } - const { id, tenantId, email, name, role } = result.data; +export const updateUser = authActionClient + .metadata({ actionName: 'updateUser' }) + .schema(updateUserSchema) + .action( + async ({ + parsedInput: { tenantId, email, name, role }, + ctx: { userId }, + }) => { await prisma.user.update({ - where: { id, tenantId }, + where: { id: userId, tenantId }, data: { email, name, role, }, }); - } else { - return { error: 'Not signed in' }; - } - } catch (error) { - return { error: 'Error updating user' }; - } - revalidatePath('/profile'); - return { message: 'User updated successfully' }; -} + revalidatePath(Routes.SITE.PROFILE); + return { message: 'User updated successfully' }; + }, + ); diff --git a/src/actions/upsert-integrations/index.ts b/src/actions/upsert-integrations/index.ts index 7919d2b8a..e1b848425 100644 --- a/src/actions/upsert-integrations/index.ts +++ b/src/actions/upsert-integrations/index.ts @@ -1,50 +1,30 @@ -'use server'; +'use server' import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; -import { getServerSession } from 'next-auth'; -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import { authActionClient } from '@/lib/safe-actions'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; import 'server-only'; import { upsertIntegrationsSchema } from './schema'; -type UpsertIntegrationsData = { - slack: string; - tenantId: string; -}; +export * from './schema'; -export async function upsertIntegrations(formData: FormData) { - try { - if (!formData) { - return { error: 'Data not provided' }; - } - const data = Object.fromEntries(formData) as UpsertIntegrationsData; - const session = await getServerSession(authOptions); - if (session) { - const result = upsertIntegrationsSchema.safeParse(data); - if (result.success === false) { - const errors = result.error.flatten().fieldErrors; - return { error: errors }; - } - const { slack, tenantId } = result.data; - await prisma.integrations.upsert({ - where: { tenantId }, - update: { slack }, - create: { - slack, - tenantId, - }, - }); - } else { - return { error: 'Not signed in' }; - } - } catch (error) { - return { error: 'Error updating integrations' }; - } - revalidatePath(Routes.SITE.SETTINGS); - redirect(Routes.SITE.HOME); - return { message: 'Integrations updated successfully' }; -} +export const upsertIntegrations = authActionClient + .metadata({ actionName: 'upsertIntegrations' }) + .schema(upsertIntegrationsSchema) + .action(async ({ parsedInput: { slack, tenantId } }) => { + await prisma.integrations.upsert({ + where: { tenantId }, + update: { slack }, + create: { + slack, + tenantId, + }, + }); + revalidatePath(Routes.SITE.SETTINGS); + redirect(Routes.SITE.HOME); + return { message: 'Integrations updated successfully' }; + }); diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index c02983c66..7c833d339 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -15,7 +15,7 @@ import { Routes } from '@/utils'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; -const errors = { +const loginErrors = { Signin: 'Try signing with a different account.', OAuthSignin: 'Try signing with a different account.', OAuthCallback: 'Try signing with a different account.', @@ -38,14 +38,13 @@ type ErrorProps = { type Schema = z.infer; const LoginError = ({ error }: ErrorProps) => { - const errorMessage = error && (errors[error] ?? errors.default); + const errorMessage = error && (loginErrors[error] ?? loginErrors.default); return
      {errorMessage}
      ; }; export default async function Page({ searchParams }) { const { error, callbackUrl } = searchParams; const [disabled, setDisabled] = useState(true); - const isDesktop = useMediaQuery('(min-width: 640px)'); const { register, diff --git a/src/app/question/[id]/page.tsx b/src/app/question/[id]/page.tsx index 845aa5753..86754443e 100644 --- a/src/app/question/[id]/page.tsx +++ b/src/app/question/[id]/page.tsx @@ -18,7 +18,7 @@ export default async function Page({ params }) {
      - +
      diff --git a/src/app/question/[id]/question.tsx b/src/app/question/[id]/question.tsx index d6fd00a91..fafad1e03 100644 --- a/src/app/question/[id]/question.tsx +++ b/src/app/question/[id]/question.tsx @@ -7,7 +7,7 @@ import Link from 'next/link'; import { usePathname } from 'next/navigation'; import { useForm } from 'react-hook-form'; -import { createFavorite } from '@/actions'; +import { createFavorite, createFavoriteSchema } from '@/actions'; import { BackButton, Badge, @@ -19,7 +19,6 @@ import { TooltipContent, TooltipTrigger, } from '@/components'; -import { favoriteClientSchema } from '@/lib'; import { Routes, dateOptions } from '@/utils'; import type { ExtendedNode } from '@/types'; @@ -32,29 +31,23 @@ const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { type Props = { node: ExtendedNode; - userId: string; }; -type Schema = z.infer; +type Schema = z.infer; -export default function Question({ node, userId }: Props) { +export default function Question({ node }: Props) { const pathname = usePathname(); const { handleSubmit } = useForm({ - resolver: zodResolver(favoriteClientSchema), + resolver: zodResolver(createFavoriteSchema), mode: 'onBlur', defaultValues: { nodeId: node.id, - userId, }, }); const onSubmit: SubmitHandler = async (data) => { - const formData = new FormData(); - Object.keys(data).forEach((key) => { - formData.append(key, data[key]); - }); - await createFavorite(formData); + await createFavorite(data); }; return ( diff --git a/src/app/question/answer/answer.tsx b/src/app/question/answer/answer.tsx index 17e0dc46f..c8ae8eb26 100644 --- a/src/app/question/answer/answer.tsx +++ b/src/app/question/answer/answer.tsx @@ -4,24 +4,30 @@ import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; import { Controller, useForm } from 'react-hook-form'; +import { z } from 'zod'; -import { createAnswer, updateAnswer } from '@/actions'; +import { + createAnswer, + createAnswerSchema, + updateAnswer, + updateAnswerSchema, +} from '@/actions'; import { BackButton, Button, Editor } from '@/components'; -import { answerClientSchema } from '@/lib'; import { Limits } from '@/utils'; -import type { ExtendedNode, Me } from '@/types'; +import type { ExtendedNode } from '@/types'; import type { SubmitHandler } from 'react-hook-form'; -import type { z } from 'zod'; type Props = { - me: Me; node: ExtendedNode; }; -type Schema = z.infer; +const answerSchema = z.union([createAnswerSchema, updateAnswerSchema]); +type Schema = z.infer; +type CreateAnswer = z.infer; +type UpdateAnswer = z.infer; -export default function Answer({ me, node }: Props) { +export default function Answer({ node }: Props) { const [disabled, setDisabled] = useState(true); const { @@ -30,27 +36,28 @@ export default function Answer({ me, node }: Props) { watch, formState: { isSubmitting, errors, isValid, isDirty }, } = useForm({ - resolver: zodResolver(answerClientSchema), + resolver: zodResolver(answerSchema), mode: 'onBlur', defaultValues: { text: node?.answer?.text ?? '', - userId: me.id, }, }); const text = watch('text'); const onSubmit: SubmitHandler = async (data) => { - const formData = new FormData(); - Object.keys(data).forEach((key) => { - formData.append(key, data[key]); - }); if (node?.answer) { - formData.append('id', node.answer.id); - await updateAnswer(formData); + const updateData: UpdateAnswer = { + text: data.text, + id: node.answer.id, + }; + await updateAnswer(updateData); } else { - formData.append('nodeId', node.id); - await createAnswer(formData); + const createData: CreateAnswer = { + text: data.text, + nodeId: node.id, + }; + await createAnswer(createData); } }; diff --git a/src/app/question/answer/page.tsx b/src/app/question/answer/page.tsx index 05ed66a50..d2c9f0d3a 100644 --- a/src/app/question/answer/page.tsx +++ b/src/app/question/answer/page.tsx @@ -18,7 +18,7 @@ export default async function Page({ searchParams }) {
      - +
      diff --git a/src/app/question/edit/edit.tsx b/src/app/question/edit/edit.tsx index f2743cbf0..6272172e1 100644 --- a/src/app/question/edit/edit.tsx +++ b/src/app/question/edit/edit.tsx @@ -6,10 +6,9 @@ import { zodResolver } from '@hookform/resolvers/zod'; import { HelpCircle } from 'lucide-react'; import { useForm } from 'react-hook-form'; -import { updateNode } from '@/actions'; +import { updateNode, updateNodeSchema } from '@/actions'; import { BackButton, Button, Field, Input } from '@/components'; import { useMediaQuery } from '@/hooks'; -import { createQuestionSchema } from '@/lib'; import { TagsList } from '@/modules'; import { Limits, arraysAreEqual } from '@/utils'; @@ -24,7 +23,7 @@ type Props = { tags: Tag[]; }; -type Schema = z.infer; +type Schema = z.infer; export default function Edit({ me, node, tags }: Props) { const [disabled, setDisabled] = useState(true); @@ -37,35 +36,21 @@ export default function Edit({ me, node, tags }: Props) { watch, formState: { isSubmitting, isDirty, isValid, errors }, } = useForm({ - resolver: zodResolver(createQuestionSchema), + resolver: zodResolver(updateNodeSchema), mode: 'onBlur', defaultValues: { text: node?.question.text, + id: node.id, + tenantId: me.tenantId, + questionId: node.question.id, }, }); const text = watch('text'); - // const { mutate } = useUpdateNode( - // id, - // me.tenantId, - // me.id, - // selectedTags, - // router, - // node?.question.id, - // ); - const onSubmit: SubmitHandler = async (data) => { - const formData = new FormData(); - Object.keys(data).forEach((key) => { - formData.append(key, data[key]); - }); - formData.append('id', node.id); - formData.append('tenantId', me.tenantId); - formData.append('userId', me.id); - formData.append('questionId', node.question.id); - formData.append('tags', JSON.stringify(selectedTags)); - await updateNode(formData); + data.tags = selectedTags; + await updateNode(data); }; const tagsId = node?.tags?.map((tag) => tag.id); diff --git a/src/app/question/new/new.tsx b/src/app/question/new/new.tsx index fbee0946d..432c1dda9 100644 --- a/src/app/question/new/new.tsx +++ b/src/app/question/new/new.tsx @@ -13,6 +13,7 @@ import { questionClientSchema } from '@/lib'; import { TagsList } from '@/modules'; import { Limits } from '@/utils'; +import type { createNodeSchema } from '@/actions'; import type { Me } from '@/types'; import type { Integrations, Tag } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; @@ -24,7 +25,7 @@ type Props = { integrations: Integrations; }; -type Schema = z.infer; +type Schema = z.infer; export default function New({ me, tags, integrations }: Props) { const [disabled, setDisabled] = useState(true); @@ -43,18 +44,14 @@ export default function New({ me, tags, integrations }: Props) { defaultValues: { text: '', tenantId: me.tenantId, - userId: me.id, + integrations, }, }); const text = watch('text'); const onSubmit: SubmitHandler = async (data) => { - const formData = new FormData(); - Object.keys(data).forEach((key) => { - formData.append(key, data[key]); - }); - formData.append('tags', JSON.stringify(selectedTags)); - await createNode(integrations, formData); + data.tags = selectedTags; + await createNode(data); }; const onSubmitWithAnswer: SubmitHandler = (data) => { diff --git a/src/app/register/confirm/form.tsx b/src/app/register/confirm/form.tsx index 0719cd35d..f06d46982 100644 --- a/src/app/register/confirm/form.tsx +++ b/src/app/register/confirm/form.tsx @@ -3,47 +3,42 @@ import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; -import { useAtom } from 'jotai'; +import { useAtom, useAtomValue } from 'jotai'; import { MoveLeft } from 'lucide-react'; import { useRouter } from 'next/navigation'; import { useForm } from 'react-hook-form'; -import { createTenant } from '@/actions'; +import { createTenant, createTenantSchema } from '@/actions'; import { Button } from '@/components'; -import { useCreateCustomer } from '@/hooks'; -import { registerCompleteClientSchema } from '@/lib'; import { registerAtom } from '@/store'; import { Routes } from '@/utils'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; -type Schema = z.infer; +type Schema = z.infer; export default function Form() { const [disabled, setDisabled] = useState(true); - const [state, setState] = useAtom(registerAtom); + // const [state, setState] = useAtom(registerAtom); + const state = useAtomValue(registerAtom); const router = useRouter(); const { handleSubmit, formState: { isSubmitting, isValid }, } = useForm({ - resolver: zodResolver(registerCompleteClientSchema), + resolver: zodResolver(createTenantSchema), defaultValues: state, }); - const { - data: customerId, - mutateAsync: mutateCustomer, - isSuccess: customerIsSuccess, - } = useCreateCustomer(); + // const { + // data: customerId, + // mutateAsync: mutateCustomer, + // isSuccess: customerIsSuccess, + // } = useCreateCustomer(); const onSubmit: SubmitHandler = async (data) => { - const formData = new FormData(); - for (const key in data) { - formData.append(key, data[key]); - } - await createTenant(formData); + await createTenant(data); // await mutateCustomer(data); }; diff --git a/src/lib/safe-actions.ts b/src/lib/safe-actions.ts index 6873f96c7..e72425845 100644 --- a/src/lib/safe-actions.ts +++ b/src/lib/safe-actions.ts @@ -1,3 +1,31 @@ -import { createSafeActionClient } from "next-safe-action"; +import { getServerSession } from 'next-auth'; +import { createSafeActionClient } from 'next-safe-action'; +import { z } from 'zod'; -export const actionClient = createSafeActionClient(); \ No newline at end of file +import { getUserId } from '@/actions/get-me'; +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; + +export const actionClient = createSafeActionClient({ + defaultValidationErrorsShape: 'flattened', + defineMetadataSchema() { + return z.object({ + actionName: z.string(), + }); + }, +}); + +export const authActionClient = actionClient.use(async ({ next }) => { + const session = await getServerSession(authOptions); + if (!session) { + throw new Error('Not signed in'); + } + const userId = await getUserId(session); + if (!userId) { + throw new Error('User does not exist'); + } + return next({ + ctx: { + userId, + }, + }); +}); diff --git a/src/lib/validations/answer.ts b/src/lib/validations/answer.ts deleted file mode 100644 index fa99601d8..000000000 --- a/src/lib/validations/answer.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { z } from 'zod'; - -export const answerClientSchema = z.object({ - text: z - .string() - .trim() - .min(1, { message: 'Answer is required' }) - .max(1000, { message: 'Answer must be under 1000 characters long' }), - userId: z.string().cuid2(), -}); diff --git a/src/lib/validations/index.ts b/src/lib/validations/index.ts index 3236b2ad4..f56a44f08 100644 --- a/src/lib/validations/index.ts +++ b/src/lib/validations/index.ts @@ -1,4 +1,3 @@ -export * from './answer'; export * from './integrations'; export * from './favorite'; export * from './other'; diff --git a/src/lib/validations/question.ts b/src/lib/validations/question.ts index e358e2099..3df057f8d 100644 --- a/src/lib/validations/question.ts +++ b/src/lib/validations/question.ts @@ -7,7 +7,7 @@ export const questionClientSchema = z.object({ .min(3, { message: 'Question must be at least 3 characters long' }) .max(100, { message: 'Question must be under 100 characters long' }), tenantId: z.string().cuid2(), - userId: z.string().cuid2(), + tags: z.array(z.string().cuid2()), withAnswer: z.boolean().optional(), }); diff --git a/src/modules/profile/Update.tsx b/src/modules/profile/Update.tsx index 922983ef9..45e7efe39 100644 --- a/src/modules/profile/Update.tsx +++ b/src/modules/profile/Update.tsx @@ -7,10 +7,9 @@ import { AtSign, UserIcon } from 'lucide-react'; import Image from 'next/image'; import { useForm } from 'react-hook-form'; -import { updateUser } from '@/actions'; +import { updateUser, updateUserSchema } from '@/actions'; import { Button, Field, Input } from '@/components'; import { useMediaQuery } from '@/hooks'; -import { updateUserClientSchema } from '@/lib'; import type { IUserUpdateFields, Me } from '@/types'; import type { SubmitHandler } from 'react-hook-form'; @@ -20,7 +19,7 @@ type Props = { me: Me; }; -type Schema = z.infer; +type Schema = z.infer; export const UpdateProfile = ({ me }: Props) => { const [disabled, setDisabled] = useState(true); @@ -31,23 +30,18 @@ export const UpdateProfile = ({ me }: Props) => { handleSubmit, formState: { isSubmitting, isDirty, errors, isValid }, } = useForm({ - resolver: zodResolver(updateUserClientSchema), + resolver: zodResolver(updateUserSchema), mode: 'onBlur', defaultValues: { name: me.name ?? '', email: me.email, + role: me.role, + tenantId: me.tenantId, }, }); const onSubmit: SubmitHandler = async (data) => { - const formData = new FormData(); - Object.keys(data).forEach((key) => { - formData.append(key, data[key]); - }); - formData.append('role', me.role); - formData.append('id', me.id); - formData.append('tenantId', me.tenantId); - await updateUser(formData); + await updateUser(data); }; const fields: IUserUpdateFields[] = useMemo( diff --git a/src/modules/settings/general/Company.tsx b/src/modules/settings/general/Company.tsx index e6648097b..902f1ddfb 100644 --- a/src/modules/settings/general/Company.tsx +++ b/src/modules/settings/general/Company.tsx @@ -5,9 +5,8 @@ import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; import { useForm } from 'react-hook-form'; -import { updateTenant } from '@/actions'; +import { updateTenant, updateTenantSchema } from '@/actions'; import { Button, Field, Input } from '@/components'; -import { updateTenantClientSchema } from '@/lib'; import type { ITenantUpdateFields } from '@/types'; import type { Tenant } from '@prisma/client'; @@ -18,7 +17,7 @@ type Props = { tenant: Tenant; }; -type Schema = z.infer; +type Schema = z.infer; export function Company({ tenant }: Props) { const [disabled, setDisabled] = useState(true); @@ -27,22 +26,18 @@ export function Company({ tenant }: Props) { handleSubmit, formState: { isSubmitting, isDirty, isValid, errors }, } = useForm({ - resolver: zodResolver(updateTenantClientSchema), + resolver: zodResolver(updateTenantSchema), mode: 'onBlur', defaultValues: { company: tenant.company, email: tenant.email, domain: tenant.domain, + id: tenant.id, }, }); const onSubmit: SubmitHandler = async (data) => { - const formData = new FormData(); - Object.keys(data).forEach((key) => { - formData.append(key, data[key]); - }); - formData.append('id', tenant.id); - await updateTenant(formData); + await updateTenant(data); }; const fields: ITenantUpdateFields[] = [ diff --git a/src/modules/settings/general/Files.tsx b/src/modules/settings/general/Files.tsx index 244dde413..11f104b68 100644 --- a/src/modules/settings/general/Files.tsx +++ b/src/modules/settings/general/Files.tsx @@ -13,6 +13,7 @@ import { getSignedLogo, updateLogo } from '@/actions'; import { Button } from '@/components'; import { filesClientSchema } from '@/lib'; +import type { UpdateLogo } from '@/actions'; import type { Tenant } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; @@ -56,9 +57,11 @@ export const Files = ({ tenant }: Props) => { formData.delete(key); }); const logoUrl = `${url}logos/${logo}`; - formData.append('logoUrl', logoUrl); - formData.append('id', tenant.id); - await updateLogo(formData); + const logoData: UpdateLogo = { + logoUrl, + id: tenant.id, + }; + await updateLogo(logoData); }; const handleReset = () => { diff --git a/src/modules/settings/general/Integrations.tsx b/src/modules/settings/general/Integrations.tsx index b34195f2a..3cdf3e51b 100644 --- a/src/modules/settings/general/Integrations.tsx +++ b/src/modules/settings/general/Integrations.tsx @@ -5,9 +5,8 @@ import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; import { useForm } from 'react-hook-form'; -import { upsertIntegrations } from '@/actions'; +import { upsertIntegrations, upsertIntegrationsSchema } from '@/actions'; import { Button, Field, Input } from '@/components'; -import { integrationsClientSchema } from '@/lib'; import type { IIntegrations } from '@/types'; import type { Integrations as IntegrationsType } from '@prisma/client'; @@ -19,7 +18,7 @@ type Props = { integrations: IntegrationsType; }; -type Schema = z.infer; +type Schema = z.infer; export function Integrations({ tenantId, integrations }: Props) { const [disabled, setDisabled] = useState(true); @@ -28,20 +27,16 @@ export function Integrations({ tenantId, integrations }: Props) { handleSubmit, formState: { errors, isSubmitting, isDirty, isValid }, } = useForm({ - resolver: zodResolver(integrationsClientSchema), + resolver: zodResolver(upsertIntegrationsSchema), mode: 'onBlur', defaultValues: { slack: integrations?.slack ?? '', + tenantId, }, }); const onSubmit: SubmitHandler = async (data) => { - const formData = new FormData(); - Object.keys(data).forEach((key) => { - formData.append(key, data[key]); - }); - formData.append('tenantId', tenantId); - await upsertIntegrations(formData); + await upsertIntegrations(data); }; const fields: IIntegrations[] = [ diff --git a/src/modules/settings/payment/Delete.tsx b/src/modules/settings/payment/Delete.tsx index 0c2d98894..a3fbe7e6e 100644 --- a/src/modules/settings/payment/Delete.tsx +++ b/src/modules/settings/payment/Delete.tsx @@ -5,9 +5,8 @@ import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; import { Flame } from 'lucide-react'; import { useForm } from 'react-hook-form'; -import { z } from 'zod'; -import { deleteTenant } from '@/actions'; +import { deleteTenant, deleteTenantSchema } from '@/actions'; import { Button, Dialog, @@ -21,6 +20,7 @@ import { } from '@/components'; import type { SubmitHandler } from 'react-hook-form'; +import type { z } from 'zod'; type Props = { tenantId: string; @@ -28,9 +28,7 @@ type Props = { }; export const Delete = ({ tenantId, company }: Props) => { - const deleteSchema = z.object({ - text: z.literal(`DELETE ${company}`), - }); + const deleteSchema = deleteTenantSchema(company); type Schema = z.infer; const [disabled, setDisabled] = useState(true); @@ -43,16 +41,15 @@ export const Delete = ({ tenantId, company }: Props) => { } = useForm({ resolver: zodResolver(deleteSchema), mode: 'onBlur', + defaultValues: { + text: '', + id: tenantId, + company, + }, }); const onSubmit: SubmitHandler = async (data) => { - const formData = new FormData(); - Object.keys(data).forEach((key) => { - formData.append(key, data[key]); - }); - formData.append('id', tenantId); - formData.append('company', company); - await deleteTenant(formData); + await deleteTenant(data); }; useEffect(() => { diff --git a/src/modules/settings/tags/Create.tsx b/src/modules/settings/tags/Create.tsx index aeb28904a..c588ad135 100644 --- a/src/modules/settings/tags/Create.tsx +++ b/src/modules/settings/tags/Create.tsx @@ -4,7 +4,7 @@ import { zodResolver } from '@hookform/resolvers/zod'; import { PlusCircle, Tag as TagIcon } from 'lucide-react'; import { useForm } from 'react-hook-form'; -import { createTag } from '@/actions'; +import { createTag, createTagSchema } from '@/actions'; import { Button, Dialog, @@ -21,7 +21,6 @@ import { Input, } from '@/components'; import { useMediaQuery } from '@/hooks'; -import { createTagClientSchema } from '@/lib'; import type { $Enums } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; @@ -33,7 +32,7 @@ type Props = { tagsCount: number; }; -type Schema = z.infer; +type Schema = z.infer; const Form = ({ tenantId, plan, tagsCount }: Props) => { const [disabled, setDisabled] = useState(true); @@ -43,22 +42,18 @@ const Form = ({ tenantId, plan, tagsCount }: Props) => { handleSubmit, formState: { errors, isSubmitting, isValid }, } = useForm({ - resolver: zodResolver(createTagClientSchema), + resolver: zodResolver(createTagSchema), mode: 'onBlur', defaultValues: { label: '', + tagsCount, + plan, + tenantId, }, }); const onSubmit: SubmitHandler = async (data) => { - const formData = new FormData(); - Object.keys(data).forEach((key) => { - formData.append(key, data[key]); - }); - formData.append('tagsCount', String(tagsCount)); - formData.append('plan', plan); - formData.append('tenantId', tenantId); - await createTag(formData); + await createTag(data); }; useEffect(() => { diff --git a/src/modules/settings/tags/Tags.tsx b/src/modules/settings/tags/Tags.tsx index 8f54ccec3..e77da1a8a 100644 --- a/src/modules/settings/tags/Tags.tsx +++ b/src/modules/settings/tags/Tags.tsx @@ -20,10 +20,7 @@ export const Tags = ({ tenantId, plan, tags, tagsCount }: Props) => { const [limit, setLimit] = useState(3); const handleDeleteTag = async (id: string) => { - const formData = new FormData(); - formData.append('tenantId', tenantId); - formData.append('id', id); - await deleteTag(formData); + await deleteTag({ id, tenantId }); }; useEffect(() => { diff --git a/src/modules/settings/users/Create.tsx b/src/modules/settings/users/Create.tsx index a43db9ca6..a522d2f1b 100644 --- a/src/modules/settings/users/Create.tsx +++ b/src/modules/settings/users/Create.tsx @@ -6,7 +6,7 @@ import { zodResolver } from '@hookform/resolvers/zod'; import { AtSign, PlusCircle } from 'lucide-react'; import { Controller, useForm } from 'react-hook-form'; -import { createUser } from '@/actions'; +import { createUser, createUserSchema } from '@/actions'; import { Button, Dialog, @@ -29,7 +29,6 @@ import { SelectValue, } from '@/components'; import { useMediaQuery } from '@/hooks'; -import { createUserClientSchema } from '@/lib'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; @@ -39,7 +38,7 @@ type Props = { usersCount: number; }; -type Schema = z.infer; +type Schema = z.infer; const Form = ({ tenantId, usersCount }: Props) => { const [disabled, setDisabled] = useState(true); @@ -50,22 +49,18 @@ const Form = ({ tenantId, usersCount }: Props) => { control, formState: { errors, isValid, isSubmitting }, } = useForm({ - resolver: zodResolver(createUserClientSchema), + resolver: zodResolver(createUserSchema), mode: 'onBlur', defaultValues: { email: '', role: 'user', + tenantId, + usersCount, }, }); const onSubmit: SubmitHandler = async (data) => { - const formData = new FormData(); - Object.keys(data).forEach((key) => { - formData.append(key, data[key]); - }); - formData.append('tenantId', tenantId); - await createUser(formData); - formData.append('usersCount', String(usersCount)); + await createUser(data); }; useEffect(() => { diff --git a/src/modules/settings/users/FileInput.tsx b/src/modules/settings/users/FileInput.tsx index 9826db2c7..cde098263 100644 --- a/src/modules/settings/users/FileInput.tsx +++ b/src/modules/settings/users/FileInput.tsx @@ -96,7 +96,7 @@ export const FileInput = ({ tenantId, users, plan, usersCount }: Props) => { complete: (results) => { let columnIndex: number = 0; const newUsersArray = []; - results.data.map((data) => { + results.data.forEach((data) => { columnIndex = Object.keys(data).indexOf(field); newUsersArray.push(Object.values(data)); }); diff --git a/src/modules/settings/users/Update.tsx b/src/modules/settings/users/Update.tsx index 663dcb7e6..951f5eb96 100644 --- a/src/modules/settings/users/Update.tsx +++ b/src/modules/settings/users/Update.tsx @@ -6,7 +6,7 @@ import { zodResolver } from '@hookform/resolvers/zod'; import { AtSign, UserIcon } from 'lucide-react'; import { Controller, useForm } from 'react-hook-form'; -import { updateUser } from '@/actions'; +import { updateUser, updateUserSchema } from '@/actions'; import { Button, Dialog, @@ -29,7 +29,6 @@ import { SelectValue, } from '@/components'; import { useMediaQuery } from '@/hooks'; -import { updateUserClientSchema } from '@/lib'; import type { User } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; @@ -40,7 +39,7 @@ type Props = { tenantId: string; }; -type Schema = z.infer; +type Schema = z.infer; const Form = ({ user, tenantId }: Props) => { const [disabled, setDisabled] = useState(true); @@ -51,23 +50,18 @@ const Form = ({ user, tenantId }: Props) => { control, formState: { isSubmitting, isDirty, isValid, errors }, } = useForm({ - resolver: zodResolver(updateUserClientSchema), + resolver: zodResolver(updateUserSchema), mode: 'onBlur', defaultValues: { - name: user.name, + name: user.name ?? '', email: user.email, role: user.role, + tenantId, }, }); const onSubmit: SubmitHandler = async (data) => { - const formData = new FormData(); - Object.keys(data).forEach((key) => { - formData.append(key, data[key]); - }); - formData.append('id', user.id); - formData.append('tenantId', tenantId); - await updateUser(formData); + await updateUser(data); }; useEffect(() => { @@ -85,7 +79,7 @@ const Form = ({ user, tenantId }: Props) => { } type="name" id="name" diff --git a/src/modules/settings/users/Users.tsx b/src/modules/settings/users/Users.tsx index b9fb3f6b2..5484bd073 100644 --- a/src/modules/settings/users/Users.tsx +++ b/src/modules/settings/users/Users.tsx @@ -30,10 +30,7 @@ const UserAvatar = ({ id, email, image }) => { export const Users = ({ userId, tenantId, plan, users, usersCount }: Props) => { const handleDeleteUser = async (id: string) => { - const formData = new FormData(); - formData.append('id', id); - formData.append('tenantId', tenantId); - await deleteUser(formData); + await deleteUser({ id, tenantId }); }; return ( From 8b6062f2b23a5137001239c2e6c3eb7a5d1e28d1 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 20 Jun 2024 18:29:03 +0200 Subject: [PATCH 108/326] :rotating_light: finish fixing lint errors --- src/actions/create-answer/index.ts | 2 +- src/actions/create-favorite/index.ts | 2 +- src/actions/create-tag/index.ts | 2 +- src/actions/create-tenant/index.ts | 2 +- src/actions/create-user/index.ts | 2 +- src/actions/create-users/index.ts | 121 ++++++++++++----------- src/actions/delete-user/index.ts | 2 +- src/actions/update-answer/index.ts | 2 +- src/actions/update-logo/index.ts | 2 +- src/actions/update-node/index.ts | 2 +- src/actions/update-tenant/index.ts | 2 +- src/actions/update-user/index.ts | 2 +- src/actions/upsert-integrations/index.ts | 2 +- src/app/login/page.tsx | 3 +- src/app/question/edit/edit.tsx | 4 +- src/app/question/new/new.tsx | 10 +- src/app/register/confirm/form.tsx | 2 +- 17 files changed, 85 insertions(+), 79 deletions(-) diff --git a/src/actions/create-answer/index.ts b/src/actions/create-answer/index.ts index 620b80161..358b1fb9a 100644 --- a/src/actions/create-answer/index.ts +++ b/src/actions/create-answer/index.ts @@ -1,4 +1,4 @@ -'use server' +'use server'; import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; diff --git a/src/actions/create-favorite/index.ts b/src/actions/create-favorite/index.ts index a89f69b54..c8bde2835 100644 --- a/src/actions/create-favorite/index.ts +++ b/src/actions/create-favorite/index.ts @@ -1,4 +1,4 @@ -'use server' +'use server'; import { authActionClient } from '@/lib/safe-actions'; import prisma from 'lib/prisma'; diff --git a/src/actions/create-tag/index.ts b/src/actions/create-tag/index.ts index c5263a6b8..847b426ce 100644 --- a/src/actions/create-tag/index.ts +++ b/src/actions/create-tag/index.ts @@ -1,4 +1,4 @@ -'use server' +'use server'; import { revalidatePath } from 'next/cache'; diff --git a/src/actions/create-tenant/index.ts b/src/actions/create-tenant/index.ts index b8a64efd3..ca117eea8 100644 --- a/src/actions/create-tenant/index.ts +++ b/src/actions/create-tenant/index.ts @@ -1,4 +1,4 @@ -'use server' +'use server'; // import { Resend } from 'resend'; diff --git a/src/actions/create-user/index.ts b/src/actions/create-user/index.ts index c80e24a60..71aa1dc47 100644 --- a/src/actions/create-user/index.ts +++ b/src/actions/create-user/index.ts @@ -1,4 +1,4 @@ -'use server' +'use server'; import { revalidatePath } from 'next/cache'; diff --git a/src/actions/create-users/index.ts b/src/actions/create-users/index.ts index 066cd9774..a02feda8f 100644 --- a/src/actions/create-users/index.ts +++ b/src/actions/create-users/index.ts @@ -29,73 +29,80 @@ export async function createUsers(usersArray, formData) { data.usersCount = Number(data.usersCount); data.usersArray = usersArray; const session = await getServerSession(authOptions); - if (session) { - const result = createUsersSchema.safeParse({ ...data }); - if (result.success === false) { - const errors = result.error.flatten().fieldErrors; - return { error: errors }; + if (!session) { + return { error: 'Not signed in' }; + } + const result = createUsersSchema.safeParse({ ...data }); + if (result.success === false) { + const errors = result.error.flatten().fieldErrors; + return { error: errors }; + } + const { usersArray: parsedUsersArray, usersCount, tenantId } = result.data; + const errors: ErrorObject[] = []; + const creationPromises = parsedUsersArray?.map(async (email) => { + if (!email) { + errors.push({ + email, + message: 'Empty email, skipping user creation', + }); + return; } - const { usersArray, usersCount, tenantId } = result.data; - const errors: ErrorObject[] = []; - for (const email of usersArray) { - if (!email) { - errors.push({ - email, - message: 'Empty email, skipping user creation', - }); - continue; - } - const userExists = await prisma.user.findUnique({ - where: { email, tenantId }, + const userExists = await prisma.user.findUnique({ + where: { email, tenantId }, + }); + if (userExists) { + errors.push({ + email, + message: 'User already exists', }); - if (userExists) { - errors.push({ - email, - message: 'User already exists', - }); - continue; - } - if (!usersCount) { - errors.push({ - email, - message: 'Could not find the number of users', - }); - continue; - } - const tenant = await prisma.tenant.findUnique({ - where: { id: tenantId }, - select: { plan: true }, + return; + } + if (!usersCount) { + errors.push({ + email, + message: 'Could not find the number of users', }); - if (!tenant) { - return { error: 'Plan not found' }; - } - if ( - (tenant.plan === 'free' && usersCount >= 5) || - (tenant.plan === 'startup' && usersCount >= 100) - ) { - errors.push({ - email, - message: 'You reached the maximum number of users.', - }); - continue; - } - await prisma.user.create({ - data: { - email, - role: 'user', - tenantId, - }, + return; + } + const tenant = await prisma.tenant.findUnique({ + where: { id: tenantId }, + select: { plan: true }, + }); + if (!tenant) { + errors.push({ + email, + message: 'Could not find the tenant', }); + return; } - if (errors.length > 0) { - return { message: 'Some users could not be created' }; + if ( + (tenant.plan === 'free' && usersCount >= 5) || + (tenant.plan === 'startup' && usersCount >= 100) + ) { + errors.push({ + email, + message: 'You reached the maximum number of users.', + }); + return; } - } else { - return { error: 'Not signed in' }; + await prisma.user.create({ + data: { + email, + role: 'user', + tenantId, + }, + }); + }); + + await Promise.all(creationPromises); + + if (errors.length > 0) { + return { message: 'Some users could not be created', errors }; } } catch (error) { return { error: 'Error creating users' }; } + revalidatePath('/settings'); return { message: 'Users created successfully' }; } diff --git a/src/actions/delete-user/index.ts b/src/actions/delete-user/index.ts index 48f7d60c5..a2d6aa0d0 100644 --- a/src/actions/delete-user/index.ts +++ b/src/actions/delete-user/index.ts @@ -1,4 +1,4 @@ -'use server' +'use server'; import { revalidatePath } from 'next/cache'; diff --git a/src/actions/update-answer/index.ts b/src/actions/update-answer/index.ts index 1e6b8fb6a..5463dd67a 100644 --- a/src/actions/update-answer/index.ts +++ b/src/actions/update-answer/index.ts @@ -1,4 +1,4 @@ -'use server' +'use server'; import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; diff --git a/src/actions/update-logo/index.ts b/src/actions/update-logo/index.ts index 52f681113..26b965d4e 100644 --- a/src/actions/update-logo/index.ts +++ b/src/actions/update-logo/index.ts @@ -1,4 +1,4 @@ -'use server' +'use server'; import { Storage } from '@google-cloud/storage'; import { revalidatePath } from 'next/cache'; diff --git a/src/actions/update-node/index.ts b/src/actions/update-node/index.ts index 8488b6852..f53104377 100644 --- a/src/actions/update-node/index.ts +++ b/src/actions/update-node/index.ts @@ -1,4 +1,4 @@ -'use server' +'use server'; import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; diff --git a/src/actions/update-tenant/index.ts b/src/actions/update-tenant/index.ts index c3503d6b1..0e5ba98b5 100644 --- a/src/actions/update-tenant/index.ts +++ b/src/actions/update-tenant/index.ts @@ -1,4 +1,4 @@ -'use server' +'use server'; import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; diff --git a/src/actions/update-user/index.ts b/src/actions/update-user/index.ts index 7f8162714..003f83ccc 100644 --- a/src/actions/update-user/index.ts +++ b/src/actions/update-user/index.ts @@ -1,4 +1,4 @@ -'use server' +'use server'; import { revalidatePath } from 'next/cache'; diff --git a/src/actions/upsert-integrations/index.ts b/src/actions/upsert-integrations/index.ts index e1b848425..51db1ee28 100644 --- a/src/actions/upsert-integrations/index.ts +++ b/src/actions/upsert-integrations/index.ts @@ -1,4 +1,4 @@ -'use server' +'use server'; import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index 7c833d339..da446feda 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -8,7 +8,6 @@ import Link from 'next/link'; import { useForm } from 'react-hook-form'; import { Button, Field, Input, LoginButton } from '@/components'; -import { useMediaQuery } from '@/hooks'; import { userEmailClientSchema } from '@/lib'; import { Routes } from '@/utils'; @@ -42,7 +41,7 @@ const LoginError = ({ error }: ErrorProps) => { return
      {errorMessage}
      ; }; -export default async function Page({ searchParams }) { +export default function Page({ searchParams }) { const { error, callbackUrl } = searchParams; const [disabled, setDisabled] = useState(true); diff --git a/src/app/question/edit/edit.tsx b/src/app/question/edit/edit.tsx index 6272172e1..b3fe1ebe6 100644 --- a/src/app/question/edit/edit.tsx +++ b/src/app/question/edit/edit.tsx @@ -49,8 +49,8 @@ export default function Edit({ me, node, tags }: Props) { const text = watch('text'); const onSubmit: SubmitHandler = async (data) => { - data.tags = selectedTags; - await updateNode(data); + const updatedData = { ...data, selectedTags }; + await updateNode(updatedData); }; const tagsId = node?.tags?.map((tag) => tag.id); diff --git a/src/app/question/new/new.tsx b/src/app/question/new/new.tsx index 432c1dda9..a150ad0e9 100644 --- a/src/app/question/new/new.tsx +++ b/src/app/question/new/new.tsx @@ -31,7 +31,7 @@ export default function New({ me, tags, integrations }: Props) { const [disabled, setDisabled] = useState(true); const [selectedTags, setSelectedTags] = useState([]); const isDesktop = useMediaQuery('(min-width: 640px)'); - const withAnswer = true; + // const withAnswer = true; const { register, @@ -50,12 +50,12 @@ export default function New({ me, tags, integrations }: Props) { const text = watch('text'); const onSubmit: SubmitHandler = async (data) => { - data.tags = selectedTags; - await createNode(data); + const updatedData = { ...data, tags: selectedTags }; + await createNode(updatedData); }; - const onSubmitWithAnswer: SubmitHandler = (data) => { - const values = { ...data, withAnswer }; + const onSubmitWithAnswer: SubmitHandler = (_data) => { + // const values = { ...data, withAnswer }; }; useEffect(() => { diff --git a/src/app/register/confirm/form.tsx b/src/app/register/confirm/form.tsx index f06d46982..94e04fc8c 100644 --- a/src/app/register/confirm/form.tsx +++ b/src/app/register/confirm/form.tsx @@ -3,7 +3,7 @@ import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; -import { useAtom, useAtomValue } from 'jotai'; +import { useAtomValue } from 'jotai'; import { MoveLeft } from 'lucide-react'; import { useRouter } from 'next/navigation'; import { useForm } from 'react-hook-form'; From 7da5af40a212682c397db06a07091baca5ad58b0 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Fri, 21 Jun 2024 17:01:42 +0200 Subject: [PATCH 109/326] :art: change architecture of actions folders --- src/actions/create-answer/action.ts | 26 +++++ src/actions/create-answer/index.ts | 29 +----- src/actions/create-favorite/action.ts | 20 ++++ src/actions/create-favorite/index.ts | 22 +---- src/actions/create-node/action.ts | 100 ++++++++++++++++++++ src/actions/create-node/index.ts | 103 +------------------- src/actions/create-node/schema.ts | 10 +- src/actions/create-tag/action.ts | 30 ++++++ src/actions/create-tag/index.ts | 32 +------ src/actions/create-tenant/action.ts | 59 ++++++++++++ src/actions/create-tenant/index.ts | 61 +----------- src/actions/create-user/action.ts | 42 +++++++++ src/actions/create-user/index.ts | 44 +-------- src/actions/create-users/action.ts | 108 +++++++++++++++++++++ src/actions/create-users/index.ts | 110 +--------------------- src/actions/delete-tag/action.ts | 21 +++++ src/actions/delete-tag/index.ts | 23 +---- src/actions/delete-tenant/action.ts | 88 +++++++++++++++++ src/actions/delete-tenant/index.ts | 54 +---------- src/actions/delete-user/action.ts | 21 +++++ src/actions/delete-user/index.ts | 23 +---- src/actions/update-answer/action.ts | 26 +++++ src/actions/update-answer/index.ts | 29 +----- src/actions/update-logo/action.ts | 48 ++++++++++ src/actions/update-logo/index.ts | 51 +--------- src/actions/update-node/action.ts | 58 ++++++++++++ src/actions/update-node/index.ts | 61 +----------- src/actions/update-tenant/action.ts | 27 ++++++ src/actions/update-tenant/index.ts | 30 +----- src/actions/update-user/action.ts | 31 ++++++ src/actions/update-user/index.ts | 33 +------ src/actions/upsert-integrations/action.ts | 27 ++++++ src/actions/upsert-integrations/index.ts | 30 +----- 33 files changed, 755 insertions(+), 722 deletions(-) create mode 100644 src/actions/create-answer/action.ts create mode 100644 src/actions/create-favorite/action.ts create mode 100644 src/actions/create-node/action.ts create mode 100644 src/actions/create-tag/action.ts create mode 100644 src/actions/create-tenant/action.ts create mode 100644 src/actions/create-user/action.ts create mode 100644 src/actions/create-users/action.ts create mode 100644 src/actions/delete-tag/action.ts create mode 100644 src/actions/delete-tenant/action.ts create mode 100644 src/actions/delete-user/action.ts create mode 100644 src/actions/update-answer/action.ts create mode 100644 src/actions/update-logo/action.ts create mode 100644 src/actions/update-node/action.ts create mode 100644 src/actions/update-tenant/action.ts create mode 100644 src/actions/update-user/action.ts create mode 100644 src/actions/upsert-integrations/action.ts diff --git a/src/actions/create-answer/action.ts b/src/actions/create-answer/action.ts new file mode 100644 index 000000000..4f81ba456 --- /dev/null +++ b/src/actions/create-answer/action.ts @@ -0,0 +1,26 @@ +'use server'; + +import { revalidatePath } from 'next/cache'; +import { redirect } from 'next/navigation'; + +import { authActionClient } from '@/lib/safe-actions'; +import { Routes } from '@/utils'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { createAnswerSchema } from './schema'; + +export const createAnswer = authActionClient + .metadata({ actionName: 'createAnswer' }) + .schema(createAnswerSchema) + .action(async ({ parsedInput: { text, nodeId }, ctx: { userId } }) => { + await prisma.answer.create({ + data: { + nodeId, + userId, + text, + }, + }); + revalidatePath(Routes.SITE.HOME); + redirect(Routes.SITE.HOME); + }); diff --git a/src/actions/create-answer/index.ts b/src/actions/create-answer/index.ts index 358b1fb9a..6df325825 100644 --- a/src/actions/create-answer/index.ts +++ b/src/actions/create-answer/index.ts @@ -1,29 +1,2 @@ -'use server'; - -import { revalidatePath } from 'next/cache'; -import { redirect } from 'next/navigation'; - -import { authActionClient } from '@/lib/safe-actions'; -import { Routes } from '@/utils'; -import prisma from 'lib/prisma'; - -import 'server-only'; -import { createAnswerSchema } from './schema'; - +export * from './action'; export * from './schema'; - -export const createAnswer = authActionClient - .metadata({ actionName: 'createAnswer' }) - .schema(createAnswerSchema) - .action(async ({ parsedInput: { text, nodeId }, ctx: { userId } }) => { - await prisma.answer.create({ - data: { - nodeId, - userId, - text, - }, - }); - revalidatePath(Routes.SITE.HOME); - redirect(Routes.SITE.HOME); - return { message: 'Answer created successfully' }; - }); diff --git a/src/actions/create-favorite/action.ts b/src/actions/create-favorite/action.ts new file mode 100644 index 000000000..f003a1607 --- /dev/null +++ b/src/actions/create-favorite/action.ts @@ -0,0 +1,20 @@ +'use server'; + +import { authActionClient } from '@/lib/safe-actions'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { createFavoriteSchema } from './schema'; + +export const createFavorite = authActionClient + .metadata({ actionName: 'createFavorite' }) + .schema(createFavoriteSchema) + .action(async ({ parsedInput: { nodeId }, ctx: { userId } }) => { + await prisma.favorite.create({ + data: { + nodeId, + userId, + }, + }); + return { message: 'Question added to favorites' }; + }); diff --git a/src/actions/create-favorite/index.ts b/src/actions/create-favorite/index.ts index c8bde2835..af29b4d52 100644 --- a/src/actions/create-favorite/index.ts +++ b/src/actions/create-favorite/index.ts @@ -1,22 +1,2 @@ -'use server'; - -import { authActionClient } from '@/lib/safe-actions'; -import prisma from 'lib/prisma'; - -import 'server-only'; -import { createFavoriteSchema } from './schema'; - export * from './schema'; - -export const createFavorite = authActionClient - .metadata({ actionName: 'createFavorite' }) - .schema(createFavoriteSchema) - .action(async ({ parsedInput: { nodeId }, ctx: { userId } }) => { - await prisma.favorite.create({ - data: { - nodeId, - userId, - }, - }); - return { message: 'Question added to favorites' }; - }); +export * from './action'; diff --git a/src/actions/create-node/action.ts b/src/actions/create-node/action.ts new file mode 100644 index 000000000..8a3b4061e --- /dev/null +++ b/src/actions/create-node/action.ts @@ -0,0 +1,100 @@ +'use server'; + +import { IncomingWebhook } from '@slack/webhook'; +import { revalidatePath } from 'next/cache'; +import { redirect } from 'next/navigation'; +import slugify from 'slugify'; + +import { ActionError, authActionClient } from '@/lib/safe-actions'; +import { Routes, dateOptions, timeOptions } from '@/utils'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { createNodeSchema, slackIntegrationSchema } from './schema'; + +export const slackNotification = async (body) => { + const result = slackIntegrationSchema.safeParse(body); + if (result.success === false) { + const errors = result.error.flatten().fieldErrors; + return { errors: `Invalid request${errors}` }; + } + const { url, text } = result.data; + const webhook = new IncomingWebhook(url); + const message = await webhook.send({ + text, + blocks: [ + { + type: 'section', + text: { + type: 'mrkdwn', + text: `*${text}*`, + }, + }, + { + type: 'divider', + block_id: 'divider1', + }, + { + type: 'section', + text: { + type: 'mrkdwn', + text: `Asked on ${new Date().toLocaleDateString( + undefined, + dateOptions, + )} at ${new Date().toLocaleTimeString(undefined, timeOptions)}`, + }, + }, + ], + }); + if (!message.text) { + return { error: 'Slack notifications not sent' }; + } + return undefined; +}; + +export const createNode = authActionClient + .metadata({ actionName: 'createNode' }) + .schema(createNodeSchema) + .action( + async ({ + parsedInput: { text, tenantId, tags, integrations }, + ctx: { userId }, + }) => { + const duplicateQuestion = await prisma.node.findFirst({ + where: { tenantId, question: { text } }, + }); + if (duplicateQuestion) { + throw new ActionError('This question already exists'); + } + if (integrations && integrations.slack) { + const slackBody = { + text, + url: integrations.slack, + }; + await slackNotification(slackBody); + } + await prisma.node.create({ + data: { + tenant: { connect: { id: tenantId } }, + question: { + create: { + text, + slug: slugify(text).toLowerCase(), + user: { connect: { id: userId } }, + }, + }, + tags: { + connect: tags?.map((tag) => ({ id: tag })), + }, + }, + }); + // if (withAnswer) { + // return { + // node, + // message: 'Question created successfully', + // }; + // } + revalidatePath(Routes.SITE.HOME); + redirect(Routes.SITE.HOME); + }, + ); diff --git a/src/actions/create-node/index.ts b/src/actions/create-node/index.ts index 13ffe9cc0..af29b4d52 100644 --- a/src/actions/create-node/index.ts +++ b/src/actions/create-node/index.ts @@ -1,103 +1,2 @@ -'use server'; - -import { IncomingWebhook } from '@slack/webhook'; -import { revalidatePath } from 'next/cache'; -import { redirect } from 'next/navigation'; -import slugify from 'slugify'; - -import { authActionClient } from '@/lib/safe-actions'; -import { Routes, dateOptions, timeOptions } from '@/utils'; -import prisma from 'lib/prisma'; - -import 'server-only'; -import { createNodeSchema, slackIntegrationSchema } from './schema'; - export * from './schema'; - -export const slackNotification = async (body) => { - const result = slackIntegrationSchema.safeParse(body); - if (result.success === false) { - const errors = result.error.flatten().fieldErrors; - return { errors: `Invalid request${errors}` }; - } - const { url, text } = result.data; - const webhook = new IncomingWebhook(url); - const message = await webhook.send({ - text, - blocks: [ - { - type: 'section', - text: { - type: 'mrkdwn', - text: `*${text}*`, - }, - }, - { - type: 'divider', - block_id: 'divider1', - }, - { - type: 'section', - text: { - type: 'mrkdwn', - text: `Asked on ${new Date().toLocaleDateString( - undefined, - dateOptions, - )} at ${new Date().toLocaleTimeString(undefined, timeOptions)}`, - }, - }, - ], - }); - if (!message.text) { - return { error: 'Slack notifications not sent' }; - } - return undefined; -}; - -export const createNode = authActionClient - .metadata({ actionName: 'createNode' }) - .schema(createNodeSchema) - .action( - async ({ - parsedInput: { text, tenantId, tags, withAnswer, integrations }, - ctx: { userId }, - }) => { - const duplicateQuestion = await prisma.node.findFirst({ - where: { tenantId, question: { text } }, - }); - if (duplicateQuestion) { - return { error: 'This question already exists' }; - } - if (integrations && integrations.slack) { - const slackBody = { - text, - url: integrations.slack, - }; - await slackNotification(slackBody); - } - const node = await prisma.node.create({ - data: { - tenant: { connect: { id: tenantId } }, - question: { - create: { - text, - slug: slugify(text).toLowerCase(), - user: { connect: { id: userId } }, - }, - }, - tags: { - connect: tags?.map((tag) => ({ id: tag })), - }, - }, - }); - if (withAnswer) { - return { - node, - message: 'Question created successfully', - }; - } - revalidatePath(Routes.SITE.HOME); - redirect(Routes.SITE.HOME); - return { message: 'Question created successfully' }; - }, - ); +export * from './action'; diff --git a/src/actions/create-node/schema.ts b/src/actions/create-node/schema.ts index fa88d4529..53e6b9c71 100644 --- a/src/actions/create-node/schema.ts +++ b/src/actions/create-node/schema.ts @@ -15,9 +15,11 @@ export const createNodeSchema = z.object({ .min(3, { message: 'Question must be at least 3 characters long' }) .max(100, { message: 'Question must be under 100 characters long' }), tenantId: z.string().cuid2(), - tags: z.array(z.string().cuid2()), + tags: z.array(z.string().cuid2()).optional(), withAnswer: z.boolean().optional(), - integrations: z.object({ - slack: z.string().trim().url({ message: 'Invalid URL' }), - }), + integrations: z + .object({ + slack: z.string().trim().url({ message: 'Invalid URL' }).optional(), + }) + .nullable(), }); diff --git a/src/actions/create-tag/action.ts b/src/actions/create-tag/action.ts new file mode 100644 index 000000000..36b9d876e --- /dev/null +++ b/src/actions/create-tag/action.ts @@ -0,0 +1,30 @@ +'use server'; + +import { revalidatePath } from 'next/cache'; + +import { ActionError, authActionClient } from '@/lib/safe-actions'; +import { Routes } from '@/utils'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { createTagSchema } from './schema'; + +export const createTag = authActionClient + .metadata({ actionName: 'createTag' }) + .schema(createTagSchema) + .action(async ({ parsedInput: { label, tenantId, plan, tagsCount } }) => { + if ( + (plan === 'free' && tagsCount >= 3) || + (plan === 'startup' && tagsCount >= 10) + ) { + throw new ActionError('You reached the maximum number of tags'); + } + await prisma.tag.create({ + data: { + label, + tenantId, + }, + }); + revalidatePath(Routes.SITE.SETTINGS); + return { message: 'Tag created successfully' }; + }); diff --git a/src/actions/create-tag/index.ts b/src/actions/create-tag/index.ts index 847b426ce..af29b4d52 100644 --- a/src/actions/create-tag/index.ts +++ b/src/actions/create-tag/index.ts @@ -1,32 +1,2 @@ -'use server'; - -import { revalidatePath } from 'next/cache'; - -import { authActionClient } from '@/lib/safe-actions'; -import { Routes } from '@/utils'; -import prisma from 'lib/prisma'; - -import 'server-only'; -import { createTagSchema } from './schema'; - export * from './schema'; - -export const createTag = authActionClient - .metadata({ actionName: 'createTag' }) - .schema(createTagSchema) - .action(async ({ parsedInput: { label, tenantId, plan, tagsCount } }) => { - if ( - (plan === 'free' && tagsCount >= 3) || - (plan === 'startup' && tagsCount >= 10) - ) { - return { error: 'You reached the maximum number of tags.' }; - } - await prisma.tag.create({ - data: { - label, - tenantId, - }, - }); - revalidatePath(Routes.SITE.SETTINGS); - return { message: 'Tag created successfully' }; - }); +export * from './action'; diff --git a/src/actions/create-tenant/action.ts b/src/actions/create-tenant/action.ts new file mode 100644 index 000000000..6aacd7b38 --- /dev/null +++ b/src/actions/create-tenant/action.ts @@ -0,0 +1,59 @@ +'use server'; + +// import { Resend } from 'resend'; + +import { ActionError, actionClient } from '@/lib/safe-actions'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { createTenantSchema } from './schema'; + +// const resend = new Resend(process.env.RESEND_API_KEY); +// const { data: domains } = await resend.domains.list(); + +export const createTenant = actionClient + .metadata({ actionName: 'createTenant' }) + .schema(createTenantSchema) + .action(async ({ parsedInput: { company, companyEmail, email, domain } }) => { + const tenantExists = await prisma.tenant.findUnique({ + where: { email: companyEmail }, + }); + if (tenantExists) { + throw new ActionError( + 'An account with the same company email already exists', + ); + } + const userExists = await prisma.user.findUnique({ + where: { email }, + }); + if (userExists) { + throw new ActionError('A user with the same email already exists'); + } + const tenant = await prisma.tenant.create({ + data: { + company, + email: companyEmail, + domain, + }, + }); + if (!tenant) { + throw new ActionError('There was a problem when creating the account'); + } + const user = await prisma.user.create({ + data: { + email, + role: 'tenant', + tenant: { connect: { id: tenant.id } }, + }, + }); + if (!user) { + throw new ActionError('There was a problem when creating the user'); + } + // await resend.emails.send({ + // from: `noreply@${domains?.data[0].name}`, + // to: [companyEmail], + // subject: 'Welcome to FAQMaker', + // react: RegisterEmailTemplate(), + // }); + return { message: 'Account created successfully' }; + }); diff --git a/src/actions/create-tenant/index.ts b/src/actions/create-tenant/index.ts index ca117eea8..af29b4d52 100644 --- a/src/actions/create-tenant/index.ts +++ b/src/actions/create-tenant/index.ts @@ -1,61 +1,2 @@ -'use server'; - -// import { Resend } from 'resend'; - -import { actionClient } from '@/lib/safe-actions'; -import prisma from 'lib/prisma'; - -import 'server-only'; -import { createTenantSchema } from './schema'; - export * from './schema'; - -// const resend = new Resend(process.env.RESEND_API_KEY); -// const { data: domains } = await resend.domains.list(); - -export const createTenant = actionClient - .metadata({ actionName: 'createTenant' }) - .schema(createTenantSchema) - .action(async ({ parsedInput: { company, companyEmail, email, domain } }) => { - const tenantExists = await prisma.tenant.findUnique({ - where: { email: companyEmail }, - }); - if (tenantExists) { - return { - error: 'An account with the same company email already exists', - }; - } - const userExists = await prisma.user.findUnique({ - where: { email }, - }); - if (userExists) { - return { error: 'A user with the same email already exists' }; - } - const tenant = await prisma.tenant.create({ - data: { - company, - email: companyEmail, - domain, - }, - }); - if (!tenant) { - return { error: 'There was a problem when creating the account' }; - } - const user = await prisma.user.create({ - data: { - email, - role: 'tenant', - tenant: { connect: { id: tenant.id } }, - }, - }); - if (!user) { - return { error: 'There was a problem when creating the user' }; - } - // await resend.emails.send({ - // from: `noreply@${domains?.data[0].name}`, - // to: [companyEmail], - // subject: 'Welcome to FAQMaker', - // react: RegisterEmailTemplate(), - // }); - return { message: 'Account created successfully' }; - }); +export * from './action'; diff --git a/src/actions/create-user/action.ts b/src/actions/create-user/action.ts new file mode 100644 index 000000000..96b11a5b5 --- /dev/null +++ b/src/actions/create-user/action.ts @@ -0,0 +1,42 @@ +'use server'; + +import { revalidatePath } from 'next/cache'; + +import { ActionError, authActionClient } from '@/lib/safe-actions'; +import { Routes } from '@/utils'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { createUserSchema } from './schema'; + +export const createUser = authActionClient + .metadata({ actionName: 'createUser' }) + .schema(createUserSchema) + .action(async ({ parsedInput: { email, role, usersCount, tenantId } }) => { + const userExists = await prisma.user.findUnique({ + where: { email, tenantId }, + }); + if (userExists) throw new ActionError('User already exists'); + if (typeof usersCount !== 'number') + throw new ActionError('Could not find the number of users'); + const tenant = await prisma.tenant.findUnique({ + where: { id: tenantId }, + select: { plan: true }, + }); + const plan = tenant?.plan; + if ( + (plan === 'free' && usersCount >= 5) || + (plan === 'startup' && usersCount >= 100) + ) { + throw new ActionError('You reached the maximum number of users'); + } + await prisma.user.create({ + data: { + email, + role, + tenantId, + }, + }); + revalidatePath(Routes.SITE.SETTINGS); + return { message: 'User created successfully' }; + }); diff --git a/src/actions/create-user/index.ts b/src/actions/create-user/index.ts index 71aa1dc47..af29b4d52 100644 --- a/src/actions/create-user/index.ts +++ b/src/actions/create-user/index.ts @@ -1,44 +1,2 @@ -'use server'; - -import { revalidatePath } from 'next/cache'; - -import { authActionClient } from '@/lib/safe-actions'; -import { Routes } from '@/utils'; -import prisma from 'lib/prisma'; - -import 'server-only'; -import { createUserSchema } from './schema'; - export * from './schema'; - -export const createUser = authActionClient - .metadata({ actionName: 'createUser' }) - .schema(createUserSchema) - .action(async ({ parsedInput: { email, role, usersCount, tenantId } }) => { - const userExists = await prisma.user.findUnique({ - where: { email, tenantId }, - }); - if (userExists) return { error: 'User already exists' }; - if (typeof usersCount !== 'number') - return { error: 'Could not find the number of users' }; - const tenant = await prisma.tenant.findUnique({ - where: { id: tenantId }, - select: { plan: true }, - }); - const plan = tenant?.plan; - if ( - (plan === 'free' && usersCount >= 5) || - (plan === 'startup' && usersCount >= 100) - ) { - return { error: 'You reached the maximum number of users' }; - } - await prisma.user.create({ - data: { - email, - role, - tenantId, - }, - }); - revalidatePath(Routes.SITE.SETTINGS); - return { message: 'User created successfully' }; - }); +export * from './action'; diff --git a/src/actions/create-users/action.ts b/src/actions/create-users/action.ts new file mode 100644 index 000000000..a02feda8f --- /dev/null +++ b/src/actions/create-users/action.ts @@ -0,0 +1,108 @@ +'use server'; + +import { revalidatePath } from 'next/cache'; +import { getServerSession } from 'next-auth'; + +import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { createUsersSchema } from './schema'; + +type CreateUsersData = { + tenantId: string; + usersCount: string | number; + usersArray: string; +}; + +type ErrorObject = { + email: string; + message: string; +}; + +export async function createUsers(usersArray, formData) { + try { + if (!formData) { + return { error: 'Data not provided' }; + } + const data = Object.fromEntries(formData) as CreateUsersData; + data.usersCount = Number(data.usersCount); + data.usersArray = usersArray; + const session = await getServerSession(authOptions); + if (!session) { + return { error: 'Not signed in' }; + } + const result = createUsersSchema.safeParse({ ...data }); + if (result.success === false) { + const errors = result.error.flatten().fieldErrors; + return { error: errors }; + } + const { usersArray: parsedUsersArray, usersCount, tenantId } = result.data; + const errors: ErrorObject[] = []; + const creationPromises = parsedUsersArray?.map(async (email) => { + if (!email) { + errors.push({ + email, + message: 'Empty email, skipping user creation', + }); + return; + } + const userExists = await prisma.user.findUnique({ + where: { email, tenantId }, + }); + if (userExists) { + errors.push({ + email, + message: 'User already exists', + }); + return; + } + if (!usersCount) { + errors.push({ + email, + message: 'Could not find the number of users', + }); + return; + } + const tenant = await prisma.tenant.findUnique({ + where: { id: tenantId }, + select: { plan: true }, + }); + if (!tenant) { + errors.push({ + email, + message: 'Could not find the tenant', + }); + return; + } + if ( + (tenant.plan === 'free' && usersCount >= 5) || + (tenant.plan === 'startup' && usersCount >= 100) + ) { + errors.push({ + email, + message: 'You reached the maximum number of users.', + }); + return; + } + await prisma.user.create({ + data: { + email, + role: 'user', + tenantId, + }, + }); + }); + + await Promise.all(creationPromises); + + if (errors.length > 0) { + return { message: 'Some users could not be created', errors }; + } + } catch (error) { + return { error: 'Error creating users' }; + } + + revalidatePath('/settings'); + return { message: 'Users created successfully' }; +} diff --git a/src/actions/create-users/index.ts b/src/actions/create-users/index.ts index a02feda8f..af29b4d52 100644 --- a/src/actions/create-users/index.ts +++ b/src/actions/create-users/index.ts @@ -1,108 +1,2 @@ -'use server'; - -import { revalidatePath } from 'next/cache'; -import { getServerSession } from 'next-auth'; - -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; -import prisma from 'lib/prisma'; - -import 'server-only'; -import { createUsersSchema } from './schema'; - -type CreateUsersData = { - tenantId: string; - usersCount: string | number; - usersArray: string; -}; - -type ErrorObject = { - email: string; - message: string; -}; - -export async function createUsers(usersArray, formData) { - try { - if (!formData) { - return { error: 'Data not provided' }; - } - const data = Object.fromEntries(formData) as CreateUsersData; - data.usersCount = Number(data.usersCount); - data.usersArray = usersArray; - const session = await getServerSession(authOptions); - if (!session) { - return { error: 'Not signed in' }; - } - const result = createUsersSchema.safeParse({ ...data }); - if (result.success === false) { - const errors = result.error.flatten().fieldErrors; - return { error: errors }; - } - const { usersArray: parsedUsersArray, usersCount, tenantId } = result.data; - const errors: ErrorObject[] = []; - const creationPromises = parsedUsersArray?.map(async (email) => { - if (!email) { - errors.push({ - email, - message: 'Empty email, skipping user creation', - }); - return; - } - const userExists = await prisma.user.findUnique({ - where: { email, tenantId }, - }); - if (userExists) { - errors.push({ - email, - message: 'User already exists', - }); - return; - } - if (!usersCount) { - errors.push({ - email, - message: 'Could not find the number of users', - }); - return; - } - const tenant = await prisma.tenant.findUnique({ - where: { id: tenantId }, - select: { plan: true }, - }); - if (!tenant) { - errors.push({ - email, - message: 'Could not find the tenant', - }); - return; - } - if ( - (tenant.plan === 'free' && usersCount >= 5) || - (tenant.plan === 'startup' && usersCount >= 100) - ) { - errors.push({ - email, - message: 'You reached the maximum number of users.', - }); - return; - } - await prisma.user.create({ - data: { - email, - role: 'user', - tenantId, - }, - }); - }); - - await Promise.all(creationPromises); - - if (errors.length > 0) { - return { message: 'Some users could not be created', errors }; - } - } catch (error) { - return { error: 'Error creating users' }; - } - - revalidatePath('/settings'); - return { message: 'Users created successfully' }; -} +export * from './schema'; +export * from './action'; diff --git a/src/actions/delete-tag/action.ts b/src/actions/delete-tag/action.ts new file mode 100644 index 000000000..4a3ce3645 --- /dev/null +++ b/src/actions/delete-tag/action.ts @@ -0,0 +1,21 @@ +'use server'; + +import { revalidatePath } from 'next/cache'; + +import { authActionClient } from '@/lib/safe-actions'; +import { Routes } from '@/utils'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { deleteTagSchema } from './schema'; + +export const deleteTag = authActionClient + .metadata({ actionName: 'deleteTag' }) + .schema(deleteTagSchema) + .action(async ({ parsedInput: { id, tenantId } }) => { + await prisma.tag.delete({ + where: { id, tenantId }, + }); + revalidatePath(Routes.SITE.SETTINGS); + return { message: 'Tag deleted successfully' }; + }); diff --git a/src/actions/delete-tag/index.ts b/src/actions/delete-tag/index.ts index 81aee9d84..af29b4d52 100644 --- a/src/actions/delete-tag/index.ts +++ b/src/actions/delete-tag/index.ts @@ -1,23 +1,2 @@ -'use server'; - -import { revalidatePath } from 'next/cache'; - -import { authActionClient } from '@/lib/safe-actions'; -import { Routes } from '@/utils'; -import prisma from 'lib/prisma'; - -import 'server-only'; -import { deleteTagSchema } from './schema'; - export * from './schema'; - -export const deleteTag = authActionClient - .metadata({ actionName: 'deleteTag' }) - .schema(deleteTagSchema) - .action(async ({ parsedInput: { id, tenantId } }) => { - await prisma.tag.delete({ - where: { id, tenantId }, - }); - revalidatePath(Routes.SITE.SETTINGS); - return { message: 'Tag deleted successfully' }; - }); +export * from './action'; diff --git a/src/actions/delete-tenant/action.ts b/src/actions/delete-tenant/action.ts new file mode 100644 index 000000000..c91847738 --- /dev/null +++ b/src/actions/delete-tenant/action.ts @@ -0,0 +1,88 @@ +'use server'; + +import { Storage } from '@google-cloud/storage'; +import { redirect } from 'next/navigation'; +import Stripe from 'stripe'; + +import { Routes } from '@/utils'; +import prisma from 'lib/prisma'; + +import 'server-only'; + +const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { + apiVersion: '2023-10-16', +}); + +// export const deleteTenant = authActionClient +// .metadata({ actionName: 'deleteTenant' }) +// .schema(deleteTenantSchema(data.company)) +// .action(async ({ parsedInput: { id, company } }) => { +// const tenant = await prisma.tenant.findUnique({ +// where: { id, company }, +// select: { +// customerId: true, +// logo: true, +// }, +// }); +// const { customerId, logo } = tenant; +// if (logo) { +// const storage = new Storage({ +// projectId: process.env.PROJECT_ID, +// credentials: { +// client_email: process.env.CLIENT_EMAIL, +// private_key: process.env.PRIVATE_KEY.replace(/\\n/g, '\n'), +// }, +// }); +// const bucketName = 'faqmaker'; +// const bucket = storage.bucket(bucketName); +// const fileName = logo.replace( +// 'https://storage.googleapis.com/faqmaker/', +// '', +// ); +// bucket.file(fileName).delete(); +// } +// await prisma.tenant.delete({ +// where: { id, company }, +// }); +// if (customerId) { +// await stripe.customers.del(customerId); +// } +// redirect(Routes.SITE.LOGIN); +// return { message: 'Account deleted successfully' }; +// }); + +export const deleteTenant = async (data) => { + const { id, company } = data; + const tenant = await prisma.tenant.findUnique({ + where: { id, company }, + select: { + customerId: true, + logo: true, + }, + }); + const { customerId, logo } = tenant; + if (logo) { + const storage = new Storage({ + projectId: process.env.PROJECT_ID, + credentials: { + client_email: process.env.CLIENT_EMAIL, + private_key: process.env.PRIVATE_KEY.replace(/\\n/g, '\n'), + }, + }); + const bucketName = 'faqmaker'; + const bucket = storage.bucket(bucketName); + const fileName = logo.replace( + 'https://storage.googleapis.com/faqmaker/', + '', + ); + bucket.file(fileName).delete(); + } + await prisma.tenant.delete({ + where: { id, company }, + }); + if (customerId) { + await stripe.customers.del(customerId); + } + redirect(Routes.SITE.LOGIN); + return { message: 'Account deleted successfully' }; +}; diff --git a/src/actions/delete-tenant/index.ts b/src/actions/delete-tenant/index.ts index 0491eac4f..af29b4d52 100644 --- a/src/actions/delete-tenant/index.ts +++ b/src/actions/delete-tenant/index.ts @@ -1,54 +1,2 @@ -import { Storage } from '@google-cloud/storage'; -import { redirect } from 'next/navigation'; -import Stripe from 'stripe'; - -import { authActionClient } from '@/lib/safe-actions'; -import { Routes } from '@/utils'; -import prisma from 'lib/prisma'; - -import 'server-only'; -import { deleteTenantSchema } from './schema'; - export * from './schema'; - -const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { - apiVersion: '2023-10-16', -}); - -export const deleteTenant = authActionClient - .metadata({ actionName: 'deleteTenant' }) - .schema(deleteTenantSchema(data.company)) - .action(async ({ parsedInput: { id, company } }) => { - const tenant = await prisma.tenant.findUnique({ - where: { id, company }, - select: { - customerId: true, - logo: true, - }, - }); - const { customerId, logo } = tenant; - if (logo) { - const storage = new Storage({ - projectId: process.env.PROJECT_ID, - credentials: { - client_email: process.env.CLIENT_EMAIL, - private_key: process.env.PRIVATE_KEY.replace(/\\n/g, '\n'), - }, - }); - const bucketName = 'faqmaker'; - const bucket = storage.bucket(bucketName); - const fileName = logo.replace( - 'https://storage.googleapis.com/faqmaker/', - '', - ); - bucket.file(fileName).delete(); - } - await prisma.tenant.delete({ - where: { id, company }, - }); - if (customerId) { - await stripe.customers.del(customerId); - } - redirect(Routes.SITE.LOGIN); - return { message: 'Account deleted successfully' }; - }); +export * from './action'; diff --git a/src/actions/delete-user/action.ts b/src/actions/delete-user/action.ts new file mode 100644 index 000000000..89dabaebc --- /dev/null +++ b/src/actions/delete-user/action.ts @@ -0,0 +1,21 @@ +'use server'; + +import { revalidatePath } from 'next/cache'; + +import { authActionClient } from '@/lib/safe-actions'; +import { Routes } from '@/utils'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { deleteUserSchema } from './schema'; + +export const deleteUser = authActionClient + .metadata({ actionName: 'deleteUser' }) + .schema(deleteUserSchema) + .action(async ({ parsedInput: { id, tenantId } }) => { + await prisma.user.delete({ + where: { id, tenantId }, + }); + revalidatePath(Routes.SITE.SETTINGS); + return { message: 'User deleted successfully' }; + }); diff --git a/src/actions/delete-user/index.ts b/src/actions/delete-user/index.ts index a2d6aa0d0..af29b4d52 100644 --- a/src/actions/delete-user/index.ts +++ b/src/actions/delete-user/index.ts @@ -1,23 +1,2 @@ -'use server'; - -import { revalidatePath } from 'next/cache'; - -import { authActionClient } from '@/lib/safe-actions'; -import { Routes } from '@/utils'; -import prisma from 'lib/prisma'; - -import 'server-only'; -import { deleteUserSchema } from './schema'; - export * from './schema'; - -export const deleteUser = authActionClient - .metadata({ actionName: 'deleteUser' }) - .schema(deleteUserSchema) - .action(async ({ parsedInput: { id, tenantId } }) => { - await prisma.user.delete({ - where: { id, tenantId }, - }); - revalidatePath(Routes.SITE.SETTINGS); - return { message: 'User deleted successfully' }; - }); +export * from './action'; diff --git a/src/actions/update-answer/action.ts b/src/actions/update-answer/action.ts new file mode 100644 index 000000000..cfd610c03 --- /dev/null +++ b/src/actions/update-answer/action.ts @@ -0,0 +1,26 @@ +'use server'; + +import { revalidatePath } from 'next/cache'; +import { redirect } from 'next/navigation'; + +import { authActionClient } from '@/lib/safe-actions'; +import { Routes } from '@/utils'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { updateAnswerSchema } from './schema'; + +export const updateAnswer = authActionClient + .metadata({ actionName: 'updateAnswer' }) + .schema(updateAnswerSchema) + .action(async ({ parsedInput: { text, id }, ctx: { userId } }) => { + await prisma.answer.update({ + where: { id }, + data: { + text, + userId, + }, + }); + revalidatePath(Routes.SITE.HOME); + redirect(Routes.SITE.HOME); + }); diff --git a/src/actions/update-answer/index.ts b/src/actions/update-answer/index.ts index 5463dd67a..af29b4d52 100644 --- a/src/actions/update-answer/index.ts +++ b/src/actions/update-answer/index.ts @@ -1,29 +1,2 @@ -'use server'; - -import { revalidatePath } from 'next/cache'; -import { redirect } from 'next/navigation'; - -import { authActionClient } from '@/lib/safe-actions'; -import { Routes } from '@/utils'; -import prisma from 'lib/prisma'; - -import 'server-only'; -import { updateAnswerSchema } from './schema'; - export * from './schema'; - -export const updateAnswer = authActionClient - .metadata({ actionName: 'updateAnswer' }) - .schema(updateAnswerSchema) - .action(async ({ parsedInput: { text, id }, ctx: { userId } }) => { - await prisma.answer.update({ - where: { id }, - data: { - text, - userId, - }, - }); - revalidatePath(Routes.SITE.HOME); - redirect(Routes.SITE.HOME); - return { message: 'Answer updated successfully' }; - }); +export * from './action'; diff --git a/src/actions/update-logo/action.ts b/src/actions/update-logo/action.ts new file mode 100644 index 000000000..dd658ca90 --- /dev/null +++ b/src/actions/update-logo/action.ts @@ -0,0 +1,48 @@ +'use server'; + +import { Storage } from '@google-cloud/storage'; +import { revalidatePath } from 'next/cache'; +import { redirect } from 'next/navigation'; + +import { authActionClient } from '@/lib/safe-actions'; +import { Routes, bucketName } from '@/utils'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { updateLogoSchema } from './schema'; + +export const updateLogo = authActionClient + .metadata({ actionName: 'updateLogo' }) + .schema(updateLogoSchema) + .action(async ({ parsedInput: { logoUrl, id } }) => { + const tenant = await prisma.tenant.findUnique({ + where: { id }, + select: { + logo: true, + }, + }); + const oldLogo = tenant?.logo; + if (oldLogo) { + const storage = new Storage({ + projectId: process.env.PROJECT_ID, + credentials: { + client_email: process.env.CLIENT_EMAIL, + private_key: process.env.PRIVATE_KEY.replace(/\\n/g, '\n'), + }, + }); + const bucket = storage.bucket(bucketName); + const fileName = oldLogo.replace( + 'https://storage.googleapis.com/faqmaker/', + '', + ); + bucket.file(fileName).delete(); + } + await prisma.tenant.update({ + where: { id }, + data: { + logo: logoUrl, + }, + }); + revalidatePath(Routes.SITE.HOME); + redirect(Routes.SITE.HOME); + }); diff --git a/src/actions/update-logo/index.ts b/src/actions/update-logo/index.ts index 26b965d4e..af29b4d52 100644 --- a/src/actions/update-logo/index.ts +++ b/src/actions/update-logo/index.ts @@ -1,51 +1,2 @@ -'use server'; - -import { Storage } from '@google-cloud/storage'; -import { revalidatePath } from 'next/cache'; -import { redirect } from 'next/navigation'; - -import { authActionClient } from '@/lib/safe-actions'; -import { Routes, bucketName } from '@/utils'; -import prisma from 'lib/prisma'; - -import 'server-only'; -import { updateLogoSchema } from './schema'; - export * from './schema'; - -export const updateLogo = authActionClient - .metadata({ actionName: 'updateLogo' }) - .schema(updateLogoSchema) - .action(async ({ parsedInput: { logoUrl, id } }) => { - const tenant = await prisma.tenant.findUnique({ - where: { id }, - select: { - logo: true, - }, - }); - const oldLogo = tenant?.logo; - if (oldLogo) { - const storage = new Storage({ - projectId: process.env.PROJECT_ID, - credentials: { - client_email: process.env.CLIENT_EMAIL, - private_key: process.env.PRIVATE_KEY.replace(/\\n/g, '\n'), - }, - }); - const bucket = storage.bucket(bucketName); - const fileName = oldLogo.replace( - 'https://storage.googleapis.com/faqmaker/', - '', - ); - bucket.file(fileName).delete(); - } - await prisma.tenant.update({ - where: { id }, - data: { - logo: logoUrl, - }, - }); - revalidatePath(Routes.SITE.HOME); - redirect(Routes.SITE.HOME); - return { message: 'Logo created successfully' }; - }); +export * from './action'; diff --git a/src/actions/update-node/action.ts b/src/actions/update-node/action.ts new file mode 100644 index 000000000..8bb969f5d --- /dev/null +++ b/src/actions/update-node/action.ts @@ -0,0 +1,58 @@ +'use server'; + +import { revalidatePath } from 'next/cache'; +import { redirect } from 'next/navigation'; +import slugify from 'slugify'; + +import { ActionError, authActionClient } from '@/lib/safe-actions'; +import { Routes } from '@/utils'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { updateNodeSchema } from './schema'; + +export const updateNode = authActionClient + .metadata({ actionName: 'updateNode' }) + .schema(updateNodeSchema) + .action( + async ({ + parsedInput: { tenantId, questionId, text, tags, id }, + ctx: { userId }, + }) => { + const duplicateQuestion = await prisma.node.findFirst({ + where: { + tenantId, + question: { text }, + tags: { every: { id: { in: tags }, tenantId }, some: {} }, + }, + }); + if (duplicateQuestion) { + throw new ActionError('This question already exists'); + } + await prisma.node.update({ + where: { id, tenantId: tenantId as string }, + data: { + question: { + update: { + where: { id: questionId as string }, + data: { + text: text as string, + slug: slugify(text).toLowerCase(), + user: { connect: { id: userId } }, + }, + }, + }, + tags: { + set: tags.map((tag: string) => { + return { + id: tag, + tenantId, + }; + }), + }, + }, + }); + revalidatePath(Routes.SITE.HOME); + redirect(Routes.SITE.HOME); + }, + ); diff --git a/src/actions/update-node/index.ts b/src/actions/update-node/index.ts index f53104377..af29b4d52 100644 --- a/src/actions/update-node/index.ts +++ b/src/actions/update-node/index.ts @@ -1,61 +1,2 @@ -'use server'; - -import { revalidatePath } from 'next/cache'; -import { redirect } from 'next/navigation'; -import slugify from 'slugify'; - -import { authActionClient } from '@/lib/safe-actions'; -import { Routes } from '@/utils'; -import prisma from 'lib/prisma'; - -import 'server-only'; -import { updateNodeSchema } from './schema'; - export * from './schema'; - -export const updateNode = authActionClient - .metadata({ actionName: 'updateNode' }) - .schema(updateNodeSchema) - .action( - async ({ - parsedInput: { tenantId, questionId, text, tags, id }, - ctx: { userId }, - }) => { - const duplicateQuestion = await prisma.node.findFirst({ - where: { - tenantId, - question: { text }, - tags: { every: { id: { in: tags }, tenantId }, some: {} }, - }, - }); - if (duplicateQuestion) { - return { error: 'This question already exists' }; - } - await prisma.node.update({ - where: { id, tenantId: tenantId as string }, - data: { - question: { - update: { - where: { id: questionId as string }, - data: { - text: text as string, - slug: slugify(text).toLowerCase(), - user: { connect: { id: userId } }, - }, - }, - }, - tags: { - set: tags.map((tag: string) => { - return { - id: tag, - tenantId, - }; - }), - }, - }, - }); - revalidatePath(Routes.SITE.HOME); - redirect(Routes.SITE.HOME); - return { message: 'Question updated successfully' }; - }, - ); +export * from './action'; diff --git a/src/actions/update-tenant/action.ts b/src/actions/update-tenant/action.ts new file mode 100644 index 000000000..fdba43534 --- /dev/null +++ b/src/actions/update-tenant/action.ts @@ -0,0 +1,27 @@ +'use server'; + +import { revalidatePath } from 'next/cache'; +import { redirect } from 'next/navigation'; + +import { authActionClient } from '@/lib/safe-actions'; +import { Routes } from '@/utils'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { updateTenantSchema } from './schema'; + +export const updateTenant = authActionClient + .metadata({ actionName: 'updateTenant' }) + .schema(updateTenantSchema) + .action(async ({ parsedInput: { company, id, email, domain } }) => { + await prisma.tenant.update({ + where: { id }, + data: { + company, + email, + domain: domain || '', + }, + }); + revalidatePath(Routes.SITE.SETTINGS); + redirect(Routes.SITE.HOME); + }); diff --git a/src/actions/update-tenant/index.ts b/src/actions/update-tenant/index.ts index 0e5ba98b5..af29b4d52 100644 --- a/src/actions/update-tenant/index.ts +++ b/src/actions/update-tenant/index.ts @@ -1,30 +1,2 @@ -'use server'; - -import { revalidatePath } from 'next/cache'; -import { redirect } from 'next/navigation'; - -import { authActionClient } from '@/lib/safe-actions'; -import { Routes } from '@/utils'; -import prisma from 'lib/prisma'; - -import 'server-only'; -import { updateTenantSchema } from './schema'; - export * from './schema'; - -export const updateTenant = authActionClient - .metadata({ actionName: 'updateTenant' }) - .schema(updateTenantSchema) - .action(async ({ parsedInput: { company, id, email, domain } }) => { - await prisma.tenant.update({ - where: { id }, - data: { - company, - email, - domain: domain || '', - }, - }); - revalidatePath(Routes.SITE.SETTINGS); - redirect(Routes.SITE.HOME); - return { message: 'Tenant updated successfully' }; - }); +export * from './action'; diff --git a/src/actions/update-user/action.ts b/src/actions/update-user/action.ts new file mode 100644 index 000000000..777ee9924 --- /dev/null +++ b/src/actions/update-user/action.ts @@ -0,0 +1,31 @@ +'use server'; + +import { revalidatePath } from 'next/cache'; + +import { authActionClient } from '@/lib/safe-actions'; +import { Routes } from '@/utils'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { updateUserSchema } from './schema'; + +export const updateUser = authActionClient + .metadata({ actionName: 'updateUser' }) + .schema(updateUserSchema) + .action( + async ({ + parsedInput: { tenantId, email, name, role }, + ctx: { userId }, + }) => { + await prisma.user.update({ + where: { id: userId, tenantId }, + data: { + email, + name, + role, + }, + }); + revalidatePath(Routes.SITE.PROFILE); + return { message: 'User updated successfully' }; + }, + ); diff --git a/src/actions/update-user/index.ts b/src/actions/update-user/index.ts index 003f83ccc..af29b4d52 100644 --- a/src/actions/update-user/index.ts +++ b/src/actions/update-user/index.ts @@ -1,33 +1,2 @@ -'use server'; - -import { revalidatePath } from 'next/cache'; - -import { authActionClient } from '@/lib/safe-actions'; -import { Routes } from '@/utils'; -import prisma from 'lib/prisma'; - -import 'server-only'; -import { updateUserSchema } from './schema'; - export * from './schema'; - -export const updateUser = authActionClient - .metadata({ actionName: 'updateUser' }) - .schema(updateUserSchema) - .action( - async ({ - parsedInput: { tenantId, email, name, role }, - ctx: { userId }, - }) => { - await prisma.user.update({ - where: { id: userId, tenantId }, - data: { - email, - name, - role, - }, - }); - revalidatePath(Routes.SITE.PROFILE); - return { message: 'User updated successfully' }; - }, - ); +export * from './action'; diff --git a/src/actions/upsert-integrations/action.ts b/src/actions/upsert-integrations/action.ts new file mode 100644 index 000000000..2f0a20458 --- /dev/null +++ b/src/actions/upsert-integrations/action.ts @@ -0,0 +1,27 @@ +'use server'; + +import { revalidatePath } from 'next/cache'; +import { redirect } from 'next/navigation'; + +import { authActionClient } from '@/lib/safe-actions'; +import { Routes } from '@/utils'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { upsertIntegrationsSchema } from './schema'; + +export const upsertIntegrations = authActionClient + .metadata({ actionName: 'upsertIntegrations' }) + .schema(upsertIntegrationsSchema) + .action(async ({ parsedInput: { slack, tenantId } }) => { + await prisma.integrations.upsert({ + where: { tenantId }, + update: { slack }, + create: { + slack, + tenantId, + }, + }); + revalidatePath(Routes.SITE.SETTINGS); + redirect(Routes.SITE.HOME); + }); diff --git a/src/actions/upsert-integrations/index.ts b/src/actions/upsert-integrations/index.ts index 51db1ee28..af29b4d52 100644 --- a/src/actions/upsert-integrations/index.ts +++ b/src/actions/upsert-integrations/index.ts @@ -1,30 +1,2 @@ -'use server'; - -import { revalidatePath } from 'next/cache'; -import { redirect } from 'next/navigation'; - -import { authActionClient } from '@/lib/safe-actions'; -import { Routes } from '@/utils'; -import prisma from 'lib/prisma'; - -import 'server-only'; -import { upsertIntegrationsSchema } from './schema'; - export * from './schema'; - -export const upsertIntegrations = authActionClient - .metadata({ actionName: 'upsertIntegrations' }) - .schema(upsertIntegrationsSchema) - .action(async ({ parsedInput: { slack, tenantId } }) => { - await prisma.integrations.upsert({ - where: { tenantId }, - update: { slack }, - create: { - slack, - tenantId, - }, - }); - revalidatePath(Routes.SITE.SETTINGS); - redirect(Routes.SITE.HOME); - return { message: 'Integrations updated successfully' }; - }); +export * from './action'; From 0b4e84c0090a5e18fcbc25219dfeb38e2699088f Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Fri, 21 Jun 2024 17:03:00 +0200 Subject: [PATCH 110/326] :children_crossing: add toasts back for success and error for server actions --- src/app/question/[id]/question.tsx | 4 +++- src/app/question/answer/answer.tsx | 24 +++++++++++-------- src/app/question/edit/edit.tsx | 5 ++-- src/app/question/new/new.tsx | 22 ++++++++++------- src/app/register/confirm/form.tsx | 5 ++-- src/components/toast/Toast.tsx | 13 ++++++++++ src/modules/profile/Update.tsx | 5 ++-- src/modules/settings/general/Company.tsx | 5 ++-- src/modules/settings/general/Files.tsx | 7 +++--- src/modules/settings/general/Integrations.tsx | 5 ++-- src/modules/settings/tags/Create.tsx | 4 +++- src/modules/settings/tags/Tags.tsx | 5 ++-- src/modules/settings/users/Create.tsx | 4 +++- src/modules/settings/users/Users.tsx | 11 +++++++-- 14 files changed, 80 insertions(+), 39 deletions(-) diff --git a/src/app/question/[id]/question.tsx b/src/app/question/[id]/question.tsx index fafad1e03..d1c04cf9e 100644 --- a/src/app/question/[id]/question.tsx +++ b/src/app/question/[id]/question.tsx @@ -18,6 +18,7 @@ import { Tooltip, TooltipContent, TooltipTrigger, + resultToast, } from '@/components'; import { Routes, dateOptions } from '@/utils'; @@ -47,7 +48,8 @@ export default function Question({ node }: Props) { }); const onSubmit: SubmitHandler = async (data) => { - await createFavorite(data); + const result = await createFavorite(data); + resultToast(result?.serverError, result?.data?.message); }; return ( diff --git a/src/app/question/answer/answer.tsx b/src/app/question/answer/answer.tsx index c8ae8eb26..5dc319212 100644 --- a/src/app/question/answer/answer.tsx +++ b/src/app/question/answer/answer.tsx @@ -6,15 +6,11 @@ import { zodResolver } from '@hookform/resolvers/zod'; import { Controller, useForm } from 'react-hook-form'; import { z } from 'zod'; -import { - createAnswer, - createAnswerSchema, - updateAnswer, - updateAnswerSchema, -} from '@/actions'; -import { BackButton, Button, Editor } from '@/components'; +import { createAnswer, updateAnswer } from '@/actions'; +import { BackButton, Button, Editor, resultToast } from '@/components'; import { Limits } from '@/utils'; +import type { createAnswerSchema, updateAnswerSchema } from '@/actions'; import type { ExtendedNode } from '@/types'; import type { SubmitHandler } from 'react-hook-form'; @@ -22,7 +18,13 @@ type Props = { node: ExtendedNode; }; -const answerSchema = z.union([createAnswerSchema, updateAnswerSchema]); +const answerSchema = z.object({ + text: z + .string() + .trim() + .min(1, { message: 'Answer is required' }) + .max(1000, { message: 'Answer must be under 1000 characters long' }), +}); type Schema = z.infer; type CreateAnswer = z.infer; type UpdateAnswer = z.infer; @@ -51,13 +53,15 @@ export default function Answer({ node }: Props) { text: data.text, id: node.answer.id, }; - await updateAnswer(updateData); + const result = await updateAnswer(updateData); + resultToast(result?.serverError, 'Answer updated successfully'); } else { const createData: CreateAnswer = { text: data.text, nodeId: node.id, }; - await createAnswer(createData); + const result = await createAnswer(createData); + resultToast(result?.serverError, 'Answer created successfully'); } }; diff --git a/src/app/question/edit/edit.tsx b/src/app/question/edit/edit.tsx index b3fe1ebe6..281b495f0 100644 --- a/src/app/question/edit/edit.tsx +++ b/src/app/question/edit/edit.tsx @@ -7,7 +7,7 @@ import { HelpCircle } from 'lucide-react'; import { useForm } from 'react-hook-form'; import { updateNode, updateNodeSchema } from '@/actions'; -import { BackButton, Button, Field, Input } from '@/components'; +import { BackButton, Button, Field, Input, resultToast } from '@/components'; import { useMediaQuery } from '@/hooks'; import { TagsList } from '@/modules'; import { Limits, arraysAreEqual } from '@/utils'; @@ -50,7 +50,8 @@ export default function Edit({ me, node, tags }: Props) { const onSubmit: SubmitHandler = async (data) => { const updatedData = { ...data, selectedTags }; - await updateNode(updatedData); + const result = await updateNode(updatedData); + resultToast(result?.serverError, 'Question updated successfully'); }; const tagsId = node?.tags?.map((tag) => tag.id); diff --git a/src/app/question/new/new.tsx b/src/app/question/new/new.tsx index a150ad0e9..fedae24b7 100644 --- a/src/app/question/new/new.tsx +++ b/src/app/question/new/new.tsx @@ -6,14 +6,12 @@ import { zodResolver } from '@hookform/resolvers/zod'; import { HelpCircle, MoveRight } from 'lucide-react'; import { useForm } from 'react-hook-form'; -import { createNode } from '@/actions'; -import { BackButton, Button, Field, Input } from '@/components'; +import { createNode, createNodeSchema } from '@/actions'; +import { BackButton, Button, Field, Input, resultToast } from '@/components'; import { useMediaQuery } from '@/hooks'; -import { questionClientSchema } from '@/lib'; import { TagsList } from '@/modules'; import { Limits } from '@/utils'; -import type { createNodeSchema } from '@/actions'; import type { Me } from '@/types'; import type { Integrations, Tag } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; @@ -31,7 +29,7 @@ export default function New({ me, tags, integrations }: Props) { const [disabled, setDisabled] = useState(true); const [selectedTags, setSelectedTags] = useState([]); const isDesktop = useMediaQuery('(min-width: 640px)'); - // const withAnswer = true; + const withAnswer = false; const { register, @@ -39,19 +37,21 @@ export default function New({ me, tags, integrations }: Props) { watch, formState: { isSubmitting, errors, isValid }, } = useForm({ - resolver: zodResolver(questionClientSchema), + resolver: zodResolver(createNodeSchema), mode: 'onBlur', defaultValues: { text: '', tenantId: me.tenantId, integrations, + withAnswer, }, }); const text = watch('text'); const onSubmit: SubmitHandler = async (data) => { const updatedData = { ...data, tags: selectedTags }; - await createNode(updatedData); + const result = await createNode(updatedData); + resultToast(result?.serverError, 'Question created successfully'); }; const onSubmitWithAnswer: SubmitHandler = (_data) => { @@ -66,7 +66,10 @@ export default function New({ me, tags, integrations }: Props) {
      -
      +
      Submit diff --git a/src/app/register/confirm/form.tsx b/src/app/register/confirm/form.tsx index 94e04fc8c..d65451f8b 100644 --- a/src/app/register/confirm/form.tsx +++ b/src/app/register/confirm/form.tsx @@ -9,7 +9,7 @@ import { useRouter } from 'next/navigation'; import { useForm } from 'react-hook-form'; import { createTenant, createTenantSchema } from '@/actions'; -import { Button } from '@/components'; +import { Button, resultToast } from '@/components'; import { registerAtom } from '@/store'; import { Routes } from '@/utils'; @@ -38,7 +38,8 @@ export default function Form() { // } = useCreateCustomer(); const onSubmit: SubmitHandler = async (data) => { - await createTenant(data); + const result = await createTenant(data); + resultToast(result?.serverError, result?.data?.message); // await mutateCustomer(data); }; diff --git a/src/components/toast/Toast.tsx b/src/components/toast/Toast.tsx index 64a70d532..8f4e6c65b 100644 --- a/src/components/toast/Toast.tsx +++ b/src/components/toast/Toast.tsx @@ -28,3 +28,16 @@ export const promiseToast = ( }, }); }; + +export const resultToast = ( + error: string | undefined, + success: string | undefined, +) => { + if (error) { + return errorToast(error); + } + if (success) { + return successToast(success); + } + return null; +}; diff --git a/src/modules/profile/Update.tsx b/src/modules/profile/Update.tsx index 45e7efe39..4a1d1d695 100644 --- a/src/modules/profile/Update.tsx +++ b/src/modules/profile/Update.tsx @@ -8,7 +8,7 @@ import Image from 'next/image'; import { useForm } from 'react-hook-form'; import { updateUser, updateUserSchema } from '@/actions'; -import { Button, Field, Input } from '@/components'; +import { Button, Field, Input, resultToast } from '@/components'; import { useMediaQuery } from '@/hooks'; import type { IUserUpdateFields, Me } from '@/types'; @@ -41,7 +41,8 @@ export const UpdateProfile = ({ me }: Props) => { }); const onSubmit: SubmitHandler = async (data) => { - await updateUser(data); + const result = await updateUser(data); + resultToast(result?.serverError, result?.data?.message); }; const fields: IUserUpdateFields[] = useMemo( diff --git a/src/modules/settings/general/Company.tsx b/src/modules/settings/general/Company.tsx index 902f1ddfb..9afa38e18 100644 --- a/src/modules/settings/general/Company.tsx +++ b/src/modules/settings/general/Company.tsx @@ -6,7 +6,7 @@ import { zodResolver } from '@hookform/resolvers/zod'; import { useForm } from 'react-hook-form'; import { updateTenant, updateTenantSchema } from '@/actions'; -import { Button, Field, Input } from '@/components'; +import { Button, Field, Input, resultToast } from '@/components'; import type { ITenantUpdateFields } from '@/types'; import type { Tenant } from '@prisma/client'; @@ -37,7 +37,8 @@ export function Company({ tenant }: Props) { }); const onSubmit: SubmitHandler = async (data) => { - await updateTenant(data); + const result = await updateTenant(data); + resultToast(result?.serverError, 'Tenant updated successfully'); }; const fields: ITenantUpdateFields[] = [ diff --git a/src/modules/settings/general/Files.tsx b/src/modules/settings/general/Files.tsx index 11f104b68..974fe1de3 100644 --- a/src/modules/settings/general/Files.tsx +++ b/src/modules/settings/general/Files.tsx @@ -10,7 +10,7 @@ import { Controller, useForm } from 'react-hook-form'; import { v4 as uuid } from 'uuid'; import { getSignedLogo, updateLogo } from '@/actions'; -import { Button } from '@/components'; +import { Button, resultToast } from '@/components'; import { filesClientSchema } from '@/lib'; import type { UpdateLogo } from '@/actions'; @@ -38,7 +38,7 @@ export const Files = ({ tenant }: Props) => { resolver: zodResolver(filesClientSchema), mode: 'onBlur', defaultValues: { - logo: null, + logo: undefined, }, }); @@ -61,7 +61,8 @@ export const Files = ({ tenant }: Props) => { logoUrl, id: tenant.id, }; - await updateLogo(logoData); + const result = await updateLogo(logoData); + resultToast(result?.serverError, 'Logo updated successfully'); }; const handleReset = () => { diff --git a/src/modules/settings/general/Integrations.tsx b/src/modules/settings/general/Integrations.tsx index 3cdf3e51b..5ccd9e068 100644 --- a/src/modules/settings/general/Integrations.tsx +++ b/src/modules/settings/general/Integrations.tsx @@ -6,7 +6,7 @@ import { zodResolver } from '@hookform/resolvers/zod'; import { useForm } from 'react-hook-form'; import { upsertIntegrations, upsertIntegrationsSchema } from '@/actions'; -import { Button, Field, Input } from '@/components'; +import { Button, Field, Input, resultToast } from '@/components'; import type { IIntegrations } from '@/types'; import type { Integrations as IntegrationsType } from '@prisma/client'; @@ -36,7 +36,8 @@ export function Integrations({ tenantId, integrations }: Props) { }); const onSubmit: SubmitHandler = async (data) => { - await upsertIntegrations(data); + const result = await upsertIntegrations(data); + resultToast(result?.serverError, 'Integrations updated successfully'); }; const fields: IIntegrations[] = [ diff --git a/src/modules/settings/tags/Create.tsx b/src/modules/settings/tags/Create.tsx index c588ad135..63c95501b 100644 --- a/src/modules/settings/tags/Create.tsx +++ b/src/modules/settings/tags/Create.tsx @@ -19,6 +19,7 @@ import { DrawerTrigger, Field, Input, + resultToast, } from '@/components'; import { useMediaQuery } from '@/hooks'; @@ -53,7 +54,8 @@ const Form = ({ tenantId, plan, tagsCount }: Props) => { }); const onSubmit: SubmitHandler = async (data) => { - await createTag(data); + const result = await createTag(data); + resultToast(result?.serverError, 'Tag created successfully'); }; useEffect(() => { diff --git a/src/modules/settings/tags/Tags.tsx b/src/modules/settings/tags/Tags.tsx index e77da1a8a..b1eca7df3 100644 --- a/src/modules/settings/tags/Tags.tsx +++ b/src/modules/settings/tags/Tags.tsx @@ -3,7 +3,7 @@ import { useEffect, useState } from 'react'; import { deleteTag } from '@/actions'; -import { Button } from '@/components'; +import { Button, resultToast } from '@/components'; import { CreateTag } from './Create'; @@ -20,7 +20,8 @@ export const Tags = ({ tenantId, plan, tags, tagsCount }: Props) => { const [limit, setLimit] = useState(3); const handleDeleteTag = async (id: string) => { - await deleteTag({ id, tenantId }); + const result = await deleteTag({ id, tenantId }); + resultToast(result?.serverError, result?.data?.message); }; useEffect(() => { diff --git a/src/modules/settings/users/Create.tsx b/src/modules/settings/users/Create.tsx index a522d2f1b..3c3512a9a 100644 --- a/src/modules/settings/users/Create.tsx +++ b/src/modules/settings/users/Create.tsx @@ -27,6 +27,7 @@ import { SelectItem, SelectTrigger, SelectValue, + resultToast, } from '@/components'; import { useMediaQuery } from '@/hooks'; @@ -60,7 +61,8 @@ const Form = ({ tenantId, usersCount }: Props) => { }); const onSubmit: SubmitHandler = async (data) => { - await createUser(data); + const result = await createUser(data); + resultToast(result?.serverError, result?.data?.message); }; useEffect(() => { diff --git a/src/modules/settings/users/Users.tsx b/src/modules/settings/users/Users.tsx index 5484bd073..028812fb4 100644 --- a/src/modules/settings/users/Users.tsx +++ b/src/modules/settings/users/Users.tsx @@ -1,7 +1,13 @@ 'use client'; import { deleteUser } from '@/actions'; -import { Avatar, AvatarFallback, AvatarImage, Button } from '@/components'; +import { + Avatar, + AvatarFallback, + AvatarImage, + Button, + resultToast, +} from '@/components'; import { CreateUser } from './Create'; import { FileInput } from './FileInput'; @@ -30,7 +36,8 @@ const UserAvatar = ({ id, email, image }) => { export const Users = ({ userId, tenantId, plan, users, usersCount }: Props) => { const handleDeleteUser = async (id: string) => { - await deleteUser({ id, tenantId }); + const result = await deleteUser({ id, tenantId }); + resultToast(result?.serverError, result?.data?.message); }; return ( From 66d0dd53e536476205e42c11f8ba00b0f35527d5 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Fri, 21 Jun 2024 17:04:33 +0200 Subject: [PATCH 111/326] :goal_net: handle error from server actions --- src/lib/safe-actions.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/lib/safe-actions.ts b/src/lib/safe-actions.ts index e72425845..fa3115325 100644 --- a/src/lib/safe-actions.ts +++ b/src/lib/safe-actions.ts @@ -5,8 +5,16 @@ import { z } from 'zod'; import { getUserId } from '@/actions/get-me'; import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +export class ActionError extends Error {} + export const actionClient = createSafeActionClient({ defaultValidationErrorsShape: 'flattened', + handleReturnedServerError(e) { + if (e instanceof ActionError) { + return e.message; + } + return 'Something went wrong'; + }, defineMetadataSchema() { return z.object({ actionName: z.string(), From f29380c325560f09d5edbcceb732c32017dd22a3 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 23 Jun 2024 10:56:46 +0200 Subject: [PATCH 112/326] :sparkles: working add to / remove from favorites functions --- .../migration.sql | 20 ++++++++++ prisma/schema.prisma | 8 ++-- src/actions/create-favorite/action.ts | 3 ++ src/actions/delete-favorite/action.ts | 21 ++++++++++ src/actions/delete-favorite/index.ts | 2 + src/actions/delete-favorite/schema.ts | 5 +++ src/actions/get-favorite/index.ts | 23 +++++++++++ src/actions/index.ts | 2 + src/app/question/[id]/page.tsx | 7 ++-- src/app/question/[id]/question.tsx | 38 +++++++++++++------ 10 files changed, 110 insertions(+), 19 deletions(-) create mode 100644 prisma/migrations/20240623080816_faqmaker_dev17/migration.sql create mode 100644 src/actions/delete-favorite/action.ts create mode 100644 src/actions/delete-favorite/index.ts create mode 100644 src/actions/delete-favorite/schema.ts create mode 100644 src/actions/get-favorite/index.ts diff --git a/prisma/migrations/20240623080816_faqmaker_dev17/migration.sql b/prisma/migrations/20240623080816_faqmaker_dev17/migration.sql new file mode 100644 index 000000000..d1bb86783 --- /dev/null +++ b/prisma/migrations/20240623080816_faqmaker_dev17/migration.sql @@ -0,0 +1,20 @@ +-- DropIndex +DROP INDEX "Answer_nodeId_idx"; + +-- DropIndex +DROP INDEX "Answer_userId_idx"; + +-- DropIndex +DROP INDEX "Question_nodeId_idx"; + +-- DropIndex +DROP INDEX "Question_userId_idx"; + +-- CreateIndex +CREATE INDEX "Answer_nodeId_userId_idx" ON "Answer"("nodeId", "userId"); + +-- CreateIndex +CREATE INDEX "Favorite_userId_nodeId_idx" ON "Favorite"("userId", "nodeId"); + +-- CreateIndex +CREATE INDEX "Question_nodeId_userId_idx" ON "Question"("nodeId", "userId"); diff --git a/prisma/schema.prisma b/prisma/schema.prisma index f17040d21..4a37d1f4b 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -67,8 +67,7 @@ model Question { user User @relation(fields: [userId], references: [id], onDelete: Cascade) userId String - @@index([nodeId]) - @@index([userId]) + @@index([nodeId, userId]) } model Answer { @@ -81,8 +80,7 @@ model Answer { user User @relation(fields: [userId], references: [id], onDelete: Cascade) userId String - @@index([nodeId]) - @@index([userId]) + @@index([nodeId, userId]) } model Tag { @@ -104,6 +102,7 @@ model Favorite { userId String @@unique([userId, nodeId]) + @@index([userId, nodeId]) } model Integrations { @@ -140,7 +139,6 @@ model Account { scope String? id_token String? @db.Text session_state String? - user User @relation(fields: [userId], references: [id], onDelete: Cascade) @@unique([provider, providerAccountId]) diff --git a/src/actions/create-favorite/action.ts b/src/actions/create-favorite/action.ts index f003a1607..8277e3381 100644 --- a/src/actions/create-favorite/action.ts +++ b/src/actions/create-favorite/action.ts @@ -1,6 +1,8 @@ 'use server'; +import { revalidatePath } from 'next/cache'; import { authActionClient } from '@/lib/safe-actions'; +import { Routes } from '@/utils'; import prisma from 'lib/prisma'; import 'server-only'; @@ -16,5 +18,6 @@ export const createFavorite = authActionClient userId, }, }); + revalidatePath(`${Routes.SITE.QUESTION}/${nodeId}`); return { message: 'Question added to favorites' }; }); diff --git a/src/actions/delete-favorite/action.ts b/src/actions/delete-favorite/action.ts new file mode 100644 index 000000000..7bfc8b79b --- /dev/null +++ b/src/actions/delete-favorite/action.ts @@ -0,0 +1,21 @@ +'use server'; + +import { revalidatePath } from 'next/cache'; + +import { authActionClient } from '@/lib/safe-actions'; +import { Routes } from '@/utils'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { deleteFavoriteSchema } from './schema'; + +export const deleteFavorite = authActionClient + .metadata({ actionName: 'deleteFavorite' }) + .schema(deleteFavoriteSchema) + .action(async ({ parsedInput: { nodeId }, ctx: { userId } }) => { + await prisma.favorite.deleteMany({ + where: { nodeId, userId }, + }); + revalidatePath(`${Routes.SITE.QUESTION}/${nodeId}`); + return { message: 'Question removed from favorites' }; + }); diff --git a/src/actions/delete-favorite/index.ts b/src/actions/delete-favorite/index.ts new file mode 100644 index 000000000..af29b4d52 --- /dev/null +++ b/src/actions/delete-favorite/index.ts @@ -0,0 +1,2 @@ +export * from './schema'; +export * from './action'; diff --git a/src/actions/delete-favorite/schema.ts b/src/actions/delete-favorite/schema.ts new file mode 100644 index 000000000..92c5e34ca --- /dev/null +++ b/src/actions/delete-favorite/schema.ts @@ -0,0 +1,5 @@ +import { z } from 'zod'; + +export const deleteFavoriteSchema = z.object({ + nodeId: z.string().cuid2(), +}); diff --git a/src/actions/get-favorite/index.ts b/src/actions/get-favorite/index.ts new file mode 100644 index 000000000..aed49e719 --- /dev/null +++ b/src/actions/get-favorite/index.ts @@ -0,0 +1,23 @@ +import { cache } from 'react'; + +import { Favorite } from '@prisma/client'; +import prisma from 'lib/prisma'; + +export const getFavorite = cache( + async (userId: string, nodeId: string): Promise => { + try { + if (!nodeId) { + throw new Error('Node not found'); + } + const favorite = await prisma.favorite.findFirst({ + where: { nodeId: nodeId as string, userId: userId as string }, + select: { + nodeId: true, + }, + }); + return favorite as Favorite; + } catch (error) { + throw new Error('Error fetching favorite'); + } + }, +); diff --git a/src/actions/index.ts b/src/actions/index.ts index 24d46109b..3c48088a7 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -5,9 +5,11 @@ export * from './create-tag'; export * from './create-tenant'; export * from './create-user'; export * from './create-users'; +export * from './delete-favorite'; export * from './delete-tag'; export * from './delete-tenant'; export * from './delete-user'; +export * from './get-favorite'; export * from './get-integration'; export * from './get-me'; export * from './get-node'; diff --git a/src/app/question/[id]/page.tsx b/src/app/question/[id]/page.tsx index 86754443e..d7fbfd889 100644 --- a/src/app/question/[id]/page.tsx +++ b/src/app/question/[id]/page.tsx @@ -1,6 +1,6 @@ import { redirect } from 'next/navigation'; -import { getMe, getNode } from '@/actions'; +import { getFavorite, getMe, getNode } from '@/actions'; import { Footer, Header } from '@/modules'; import { Routes } from '@/utils'; @@ -10,15 +10,16 @@ export default async function Page({ params }) { const me = await getMe(); if (!me) return redirect(Routes.SITE.LOGIN); - const { tenantId } = me; + const { tenantId, id: userId } = me; const { id } = params; const node = await getNode(tenantId, id); + const favorite = await getFavorite(userId, node.id); return (
      - +
      diff --git a/src/app/question/[id]/question.tsx b/src/app/question/[id]/question.tsx index d1c04cf9e..425a0972a 100644 --- a/src/app/question/[id]/question.tsx +++ b/src/app/question/[id]/question.tsx @@ -7,7 +7,11 @@ import Link from 'next/link'; import { usePathname } from 'next/navigation'; import { useForm } from 'react-hook-form'; -import { createFavorite, createFavoriteSchema } from '@/actions'; +import { + createFavorite, + createFavoriteSchema, + deleteFavorite, +} from '@/actions'; import { BackButton, Badge, @@ -25,6 +29,7 @@ import { Routes, dateOptions } from '@/utils'; import type { ExtendedNode } from '@/types'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; +import { Favorite } from '@prisma/client'; const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { ssr: false, @@ -32,11 +37,12 @@ const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { type Props = { node: ExtendedNode; + favorite: Favorite; }; type Schema = z.infer; -export default function Question({ node }: Props) { +export default function Question({ node, favorite }: Props) { const pathname = usePathname(); const { handleSubmit } = useForm({ @@ -48,8 +54,13 @@ export default function Question({ node }: Props) { }); const onSubmit: SubmitHandler = async (data) => { - const result = await createFavorite(data); - resultToast(result?.serverError, result?.data?.message); + if (favorite?.nodeId === node.id) { + const result = await deleteFavorite(data); + resultToast(result?.serverError, result?.data?.message); + } else { + const result = await createFavorite(data); + resultToast(result?.serverError, result?.data?.message); + } }; return ( @@ -88,20 +99,25 @@ export default function Question({ node }: Props) {

      {node.question.text}

      -
      - - +
      + - Favorite + + {favorite?.nodeId === node.id + ? 'Remove from favorites' + : 'Add to favorites'} + From e75b5f60d99ee9f3a85e456765ebb1c83f0ad797 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 23 Jun 2024 10:59:37 +0200 Subject: [PATCH 113/326] :rotating_light: run lint --- src/actions/create-favorite/action.ts | 1 + src/actions/get-favorite/index.ts | 3 ++- src/app/question/[id]/question.tsx | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/actions/create-favorite/action.ts b/src/actions/create-favorite/action.ts index 8277e3381..07bd1fef6 100644 --- a/src/actions/create-favorite/action.ts +++ b/src/actions/create-favorite/action.ts @@ -1,6 +1,7 @@ 'use server'; import { revalidatePath } from 'next/cache'; + import { authActionClient } from '@/lib/safe-actions'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; diff --git a/src/actions/get-favorite/index.ts b/src/actions/get-favorite/index.ts index aed49e719..1f38ad550 100644 --- a/src/actions/get-favorite/index.ts +++ b/src/actions/get-favorite/index.ts @@ -1,8 +1,9 @@ import { cache } from 'react'; -import { Favorite } from '@prisma/client'; import prisma from 'lib/prisma'; +import type { Favorite } from '@prisma/client'; + export const getFavorite = cache( async (userId: string, nodeId: string): Promise => { try { diff --git a/src/app/question/[id]/question.tsx b/src/app/question/[id]/question.tsx index 425a0972a..13111481e 100644 --- a/src/app/question/[id]/question.tsx +++ b/src/app/question/[id]/question.tsx @@ -27,9 +27,9 @@ import { import { Routes, dateOptions } from '@/utils'; import type { ExtendedNode } from '@/types'; +import type { Favorite } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; -import { Favorite } from '@prisma/client'; const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { ssr: false, From e1e7e61b2ef5b36374be710d62882743a7a4ed78 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 23 Jun 2024 17:25:29 +0200 Subject: [PATCH 114/326] :sparkles: create favorites tab in user profile --- src/actions/get-favorites/index.ts | 31 +++++++++++++++++++ src/actions/index.ts | 1 + src/app/profile/page.tsx | 15 ++++++++-- src/app/profile/profile.tsx | 18 +++++++++-- src/modules/profile/Favorites.tsx | 48 ++++++++++++++++++++++++++++++ src/modules/profile/index.ts | 1 + src/types/models/node.ts | 15 +++++++++- 7 files changed, 124 insertions(+), 5 deletions(-) create mode 100644 src/actions/get-favorites/index.ts create mode 100644 src/modules/profile/Favorites.tsx diff --git a/src/actions/get-favorites/index.ts b/src/actions/get-favorites/index.ts new file mode 100644 index 000000000..87d784ed6 --- /dev/null +++ b/src/actions/get-favorites/index.ts @@ -0,0 +1,31 @@ +import { cache } from 'react'; + +import prisma from 'lib/prisma'; + +import type { ExtendedFavorite } from '@/types'; + +export const getFavorites = cache( + async (userId: string): Promise => { + try { + if (!userId) { + throw new Error('User not found'); + } + const favorites = await prisma.favorite.findMany({ + where: { userId }, + include: { + node: { + include: { + question: true, + }, + }, + }, + }); + + if (!favorites) return []; + + return favorites; + } catch (error) { + throw new Error('Error fetching favorites'); + } + }, +); diff --git a/src/actions/index.ts b/src/actions/index.ts index 3c48088a7..7a100cc8c 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -10,6 +10,7 @@ export * from './delete-tag'; export * from './delete-tenant'; export * from './delete-user'; export * from './get-favorite'; +export * from './get-favorites'; export * from './get-integration'; export * from './get-me'; export * from './get-node'; diff --git a/src/app/profile/page.tsx b/src/app/profile/page.tsx index cf319ebf3..1c5bfd671 100644 --- a/src/app/profile/page.tsx +++ b/src/app/profile/page.tsx @@ -1,6 +1,11 @@ import { redirect } from 'next/navigation'; -import { getMe, getUserAnswers, getUserQuestions } from '@/actions'; +import { + getFavorites, + getMe, + getUserAnswers, + getUserQuestions, +} from '@/actions'; import { Footer, Header } from '@/modules'; import { Routes } from '@/utils'; @@ -13,11 +18,17 @@ export default async function Page() { const questions = await getUserQuestions(me.id); const answers = await getUserAnswers(me.id); + const favorites = await getFavorites(me.id); return (
      - +
      diff --git a/src/app/profile/profile.tsx b/src/app/profile/profile.tsx index da2d914a3..594318566 100644 --- a/src/app/profile/profile.tsx +++ b/src/app/profile/profile.tsx @@ -1,9 +1,15 @@ 'use client'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components'; -import { UpdateProfile, UserAnswers, UserQuestions } from '@/modules'; +import { + UpdateProfile, + UserAnswers, + UserFavorites, + UserQuestions, +} from '@/modules'; import type { + ExtendedFavorite, Me, NodeWithQuestionAndAnswer, QuestionWithNodeId, @@ -13,9 +19,10 @@ type Props = { me: Me; questions?: QuestionWithNodeId[]; answers?: NodeWithQuestionAndAnswer[]; + favorites?: ExtendedFavorite[]; }; -export default function Profile({ me, questions, answers }: Props) { +export default function Profile({ me, questions, answers, favorites }: Props) { const tabs = [ { value: 'profile', @@ -29,6 +36,10 @@ export default function Profile({ me, questions, answers }: Props) { value: 'answers', label: 'Answers', }, + { + value: 'favorites', + label: 'Favorites', + }, ]; return ( @@ -55,6 +66,9 @@ export default function Profile({ me, questions, answers }: Props) { + + +
      diff --git a/src/modules/profile/Favorites.tsx b/src/modules/profile/Favorites.tsx new file mode 100644 index 000000000..d818170c8 --- /dev/null +++ b/src/modules/profile/Favorites.tsx @@ -0,0 +1,48 @@ +import Link from 'next/link'; + +import { Routes, dateOptions } from '@/utils'; + +import type { ExtendedFavorite } from '@/types'; + +type Props = { + favorites?: ExtendedFavorite[]; +}; + +export const UserFavorites = ({ favorites }: Props) => { + console.log('🚀 ~ UserFavorites ~ favorites:', favorites); + return ( + <> +

      + Favorites +

      + {favorites && favorites.length > 0 ? ( +
        + {favorites.map((favorite) => ( +
      • +

        + + {favorite.node.question.text} + +

        +

        + Asked on{' '} + {new Date(favorite.node.question.createdAt).toLocaleDateString( + undefined, + dateOptions, + )} +

        +
      • + ))} +
      + ) : ( +

      No answers

      + )} + + ); +}; diff --git a/src/modules/profile/index.ts b/src/modules/profile/index.ts index b644b6ef8..0dc315a6e 100644 --- a/src/modules/profile/index.ts +++ b/src/modules/profile/index.ts @@ -1,3 +1,4 @@ export * from './Update'; export * from './Questions'; export * from './Answers'; +export * from './Favorites'; diff --git a/src/types/models/node.ts b/src/types/models/node.ts index 3630078d3..a9b354cf3 100644 --- a/src/types/models/node.ts +++ b/src/types/models/node.ts @@ -1,4 +1,11 @@ -import type { Answer, Node, Question, Tag, User } from '@prisma/client'; +import type { + Answer, + Favorite, + Node, + Question, + Tag, + User, +} from '@prisma/client'; type ExtendedQuestion = Question & { user: User; @@ -30,3 +37,9 @@ export type QuestionWithNodeId = Question & { id: string; }; }; + +export type ExtendedFavorite = Favorite & { + node: Node & { + question: Question; + }; +}; From 05e6976f605d87755b92560e6cc4f1b8c9871020 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 23 Jun 2024 17:27:01 +0200 Subject: [PATCH 115/326] :dizzy: add border animation on hover --- src/modules/profile/Answers.tsx | 2 +- src/modules/profile/Questions.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/profile/Answers.tsx b/src/modules/profile/Answers.tsx index a63e1dfbc..1b6fedd58 100644 --- a/src/modules/profile/Answers.tsx +++ b/src/modules/profile/Answers.tsx @@ -29,7 +29,7 @@ export const UserAnswers = ({ nodes }: Props) => {
        {nodes.map((node) => (
      • {
          {questions?.map((question) => (
        • From 3e242685e6296efeddc0ac8e5684397797c1c58e Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 23 Jun 2024 17:29:21 +0200 Subject: [PATCH 116/326] :label: update zod schema for user update --- src/actions/update-user/schema.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/actions/update-user/schema.ts b/src/actions/update-user/schema.ts index 29f411404..ada7161e4 100644 --- a/src/actions/update-user/schema.ts +++ b/src/actions/update-user/schema.ts @@ -8,8 +8,9 @@ export const updateUserSchema = z.object({ .string() .trim() .min(1, { message: 'User email is required' }) - .email({ message: 'Invalid email' }), + .email({ message: 'Invalid email' }) + .optional(), name: z.string().trim().optional(), - role: z.enum(ROLE), + role: z.enum(ROLE).optional(), id: z.string().cuid2(), }); From 81482ff6cd4f17f8f0c80a7e82bfe734a7d75aa2 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 23 Jun 2024 17:30:40 +0200 Subject: [PATCH 117/326] :wrench: add general transition and duration --- src/styles/globals.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/styles/globals.css b/src/styles/globals.css index cb152bd9a..3078b0f17 100644 --- a/src/styles/globals.css +++ b/src/styles/globals.css @@ -17,6 +17,10 @@ @import '@radix-ui/colors/red-dark'; @import '@radix-ui/colors/red-dark-alpha'; +* { + @apply transition-all duration-300 ease-in-out; +} + td, th { @apply border border-gray-7 p-1; From 5d8a94becdd805072b9681dee35387fa596cfc58 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 23 Jun 2024 17:32:20 +0200 Subject: [PATCH 118/326] :bug: add missing field --- src/modules/profile/Update.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/modules/profile/Update.tsx b/src/modules/profile/Update.tsx index 4a1d1d695..d8d140419 100644 --- a/src/modules/profile/Update.tsx +++ b/src/modules/profile/Update.tsx @@ -37,6 +37,7 @@ export const UpdateProfile = ({ me }: Props) => { email: me.email, role: me.role, tenantId: me.tenantId, + id: me.id, }, }); @@ -66,6 +67,7 @@ export const UpdateProfile = ({ me }: Props) => { useEffect(() => { setDisabled(isSubmitting || !isDirty || !isValid); }, [isDirty, isSubmitting, isValid]); + console.log('🚀 ~ UpdateProfile ~ isValid:', isValid); return (
          Date: Sun, 23 Jun 2024 17:35:38 +0200 Subject: [PATCH 119/326] :label: update props types --- src/app/settings/settings.tsx | 2 +- src/modules/settings/tags/Tags.tsx | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/app/settings/settings.tsx b/src/app/settings/settings.tsx index 199a74f43..0fbdce0c6 100644 --- a/src/app/settings/settings.tsx +++ b/src/app/settings/settings.tsx @@ -87,7 +87,7 @@ export default function Settings({ userId={me.id} usersCount={usersCount} tenantId={me.tenantId} - plan={tenant.plan} + plan={tenant?.plan} /> diff --git a/src/modules/settings/tags/Tags.tsx b/src/modules/settings/tags/Tags.tsx index b1eca7df3..65c0ba91c 100644 --- a/src/modules/settings/tags/Tags.tsx +++ b/src/modules/settings/tags/Tags.tsx @@ -12,7 +12,7 @@ import type { $Enums, Tag } from '@prisma/client'; type Props = { tenantId: string; plan: $Enums.Plan; - tags: Tag[]; + tags: Tag[] | null; tagsCount: number; }; @@ -32,7 +32,7 @@ export const Tags = ({ tenantId, plan, tags, tagsCount }: Props) => { return (
          - {tags.length > 0 ? ( + {tags && tags.length > 0 ? (
            {tags.map((tag) => (
          • {

            No tags

            )} - {tags.length > 0 && plan !== 'enterprise' && ( + {tags && tags.length > 0 && plan !== 'enterprise' && (

            Tags limit: {tags.length} /{' '} {limit} From 6c567da13988d9c3cac3c8cc649e1b50933bd496 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 23 Jun 2024 20:21:16 +0200 Subject: [PATCH 120/326] :wrench: update tsconfig file include --- tsconfig.json | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/tsconfig.json b/tsconfig.json index dc229df1b..2f8735c25 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -26,12 +26,6 @@ ], "strictNullChecks": true }, - "include": [ - "next-env.d.ts", - "src/**/*.ts", - "src/**/*.tsx", - ".next/types/**/*.ts", - "src/app/login" - ], + "include": ["next-env.d.ts", "src/**/*.ts", "src/**/*.tsx"], "exclude": ["node_modules"] } From 1fd666903148f4090889f76923d89473d2e539a5 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 23 Jun 2024 20:21:38 +0200 Subject: [PATCH 121/326] :hammer: remove --pretty for type command --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b692c3ca0..3a3fa2e0c 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "generate": "prisma generate", "push": "prisma db push", "format": "prisma format", - "type": "tsc --noEmit --pretty", + "type": "tsc --noEmit", "lint": "eslint \"src/**/*.+(ts|js|tsx)\"", "lint:fix": "eslint \"src/**/*.+(ts|js|tsx)\" --fix", "prettier": "prettier \"src/**/*.+(ts|js|tsx)\"", From 23e944bc55402c084b339934e326a2692b8e4468 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 23 Jun 2024 20:22:07 +0200 Subject: [PATCH 122/326] :label: work on fixing type errors --- src/actions/get-tags/index.ts | 30 ++++++++--------- src/actions/get-tenant/index.ts | 33 ++++++++++--------- src/actions/get-user-answers/index.ts | 4 +-- src/actions/get-users/index.ts | 28 ++++++++-------- src/app/api/auth/[...nextauth]/route.ts | 2 +- src/app/question/new/new.tsx | 2 +- src/app/settings/settings.tsx | 4 +-- src/modules/header/Header.tsx | 2 +- src/modules/settings/general/General.tsx | 2 +- src/modules/settings/general/Integrations.tsx | 2 +- src/modules/settings/users/Users.tsx | 2 +- 11 files changed, 52 insertions(+), 59 deletions(-) diff --git a/src/actions/get-tags/index.ts b/src/actions/get-tags/index.ts index f62415ca6..a13cda8cc 100644 --- a/src/actions/get-tags/index.ts +++ b/src/actions/get-tags/index.ts @@ -4,21 +4,17 @@ import prisma from 'lib/prisma'; import type { Tag } from '@prisma/client'; -export const getTags = cache( - async (tenantId: string): Promise => { - try { - if (!tenantId) { - throw new Error('Tenant not found'); - } - const tags = await prisma.tag.findMany({ - where: { tenantId }, - }); - - if (!tags) return null; - - return tags; - } catch (error) { - throw new Error('Error fetching tags'); +export const getTags = cache(async (tenantId: string): Promise => { + try { + if (!tenantId) { + throw new Error('Tenant not found'); } - }, -); + const tags = await prisma.tag.findMany({ + where: { tenantId }, + }); + if (!tags) return []; + return tags; + } catch (error) { + throw new Error('Error fetching tags'); + } +}); diff --git a/src/actions/get-tenant/index.ts b/src/actions/get-tenant/index.ts index fe3397bea..723958d0b 100644 --- a/src/actions/get-tenant/index.ts +++ b/src/actions/get-tenant/index.ts @@ -1,24 +1,25 @@ import { cache } from 'react'; +import { redirect } from 'next/navigation'; + +import { Routes } from '@/utils'; import prisma from 'lib/prisma'; import type { Tenant } from '@prisma/client'; -export const getTenant = cache( - async (tenantId: string): Promise => { - try { - if (!tenantId) { - throw new Error('User not found'); - } - const tenant = await prisma.tenant.findUnique({ - where: { id: tenantId }, - }); +export const getTenant = cache(async (tenantId: string): Promise => { + try { + if (!tenantId) { + throw new Error('User not found'); + } + const tenant = await prisma.tenant.findUnique({ + where: { id: tenantId }, + }); - if (!tenant) return null; + if (!tenant) redirect(Routes.SITE.HOME); - return tenant; - } catch (error) { - throw new Error('Error fetching tenant'); - } - }, -); + return tenant; + } catch (error) { + throw new Error('Error fetching tenant'); + } +}); diff --git a/src/actions/get-user-answers/index.ts b/src/actions/get-user-answers/index.ts index 1a3434c46..28483a09e 100644 --- a/src/actions/get-user-answers/index.ts +++ b/src/actions/get-user-answers/index.ts @@ -27,10 +27,8 @@ export const getUserAnswers = cache( }, }, }); - if (!answers) return []; - - return answers; + return answers as NodeWithQuestionAndAnswer[]; } catch (error) { throw new Error('Error fetching answers'); } diff --git a/src/actions/get-users/index.ts b/src/actions/get-users/index.ts index 162c68198..fb8ddd185 100644 --- a/src/actions/get-users/index.ts +++ b/src/actions/get-users/index.ts @@ -4,19 +4,17 @@ import prisma from 'lib/prisma'; import type { User } from '@prisma/client'; -export const getUsers = cache( - async (tenantId: string): Promise => { - try { - if (!tenantId) { - throw new Error('User not found'); - } - const users = await prisma.user.findMany({ - where: { tenantId }, - }); - if (!users) return null; - return users; - } catch (error) { - throw new Error('Error fetching users'); +export const getUsers = cache(async (tenantId: string): Promise => { + try { + if (!tenantId) { + throw new Error('User not found'); } - }, -); + const users = await prisma.user.findMany({ + where: { tenantId }, + }); + if (!users) return []; + return users; + } catch (error) { + throw new Error('Error fetching users'); + } +}); diff --git a/src/app/api/auth/[...nextauth]/route.ts b/src/app/api/auth/[...nextauth]/route.ts index 5c88be4de..be70b5970 100644 --- a/src/app/api/auth/[...nextauth]/route.ts +++ b/src/app/api/auth/[...nextauth]/route.ts @@ -43,7 +43,7 @@ export const authOptions: NextAuthOptions = { }, callbacks: { async signIn({ profile, account }) { - if (!profile || !account) { + if (!profile?.email || !account) { return false; } const maybeUser = await prisma.user.findUnique({ diff --git a/src/app/question/new/new.tsx b/src/app/question/new/new.tsx index fedae24b7..e3395fc37 100644 --- a/src/app/question/new/new.tsx +++ b/src/app/question/new/new.tsx @@ -20,7 +20,7 @@ import type { z } from 'zod'; type Props = { me: Me; tags: Tag[]; - integrations: Integrations; + integrations: Integrations | null; }; type Schema = z.infer; diff --git a/src/app/settings/settings.tsx b/src/app/settings/settings.tsx index 0fbdce0c6..5499a0f43 100644 --- a/src/app/settings/settings.tsx +++ b/src/app/settings/settings.tsx @@ -9,7 +9,7 @@ type Props = { usersCount: number; nodesCount: number; tagsCount: number; - tenant: Tenant | null; + tenant: Tenant; integrations: Integrations | null; tags: Tag[] | null; users: User[] | null; @@ -87,7 +87,7 @@ export default function Settings({ userId={me.id} usersCount={usersCount} tenantId={me.tenantId} - plan={tenant?.plan} + plan={tenant.plan} /> diff --git a/src/modules/header/Header.tsx b/src/modules/header/Header.tsx index 8c5b4410e..0f060b83c 100644 --- a/src/modules/header/Header.tsx +++ b/src/modules/header/Header.tsx @@ -52,7 +52,7 @@ export const Header = ({ user }: Props) => { className="flex items-center gap-1 hover:text-gray-11" > - + {user.email[0]} diff --git a/src/modules/settings/general/General.tsx b/src/modules/settings/general/General.tsx index 3db4fae37..33c4e7222 100644 --- a/src/modules/settings/general/General.tsx +++ b/src/modules/settings/general/General.tsx @@ -7,7 +7,7 @@ import type { Integrations as IntegrationsType, Tenant } from '@prisma/client'; type Props = { tenant: Tenant; - integrations: IntegrationsType; + integrations: IntegrationsType | null; nodesCount: number; usersCount: number; }; diff --git a/src/modules/settings/general/Integrations.tsx b/src/modules/settings/general/Integrations.tsx index 5ccd9e068..75848dd01 100644 --- a/src/modules/settings/general/Integrations.tsx +++ b/src/modules/settings/general/Integrations.tsx @@ -15,7 +15,7 @@ import type { z } from 'zod'; type Props = { tenantId: string; - integrations: IntegrationsType; + integrations: IntegrationsType | null; }; type Schema = z.infer; diff --git a/src/modules/settings/users/Users.tsx b/src/modules/settings/users/Users.tsx index 028812fb4..d80890323 100644 --- a/src/modules/settings/users/Users.tsx +++ b/src/modules/settings/users/Users.tsx @@ -19,7 +19,7 @@ type Props = { userId: string; tenantId: string; plan: $Enums.Plan; - users: User[] | null; + users: User[]; usersCount: number; }; From 1032e1cddaa8a5807fe26725aa4372b911d0bdbf Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 24 Jun 2024 12:44:50 +0200 Subject: [PATCH 123/326] :children_crossing: add create/remove favorite in home page --- src/app/home.tsx | 6 ++- src/app/page.tsx | 5 ++- src/modules/list/List.tsx | 88 +++++++++++++++++++++++++++++++++++++-- 3 files changed, 93 insertions(+), 6 deletions(-) diff --git a/src/app/home.tsx b/src/app/home.tsx index b896e1f3f..173750d2b 100644 --- a/src/app/home.tsx +++ b/src/app/home.tsx @@ -6,7 +6,7 @@ import { Pagination } from '@/components'; import { List, Search } from '@/modules'; import { OFFSET } from '@/utils'; -import type { ExtendedNode } from '@/types'; +import type { ExtendedFavorites, ExtendedNode } from '@/types'; import type { Tag } from '@prisma/client'; type Props = { @@ -15,6 +15,7 @@ type Props = { filteredTags: ExtendedNode[]; nodesCount: number; tags: Tag[]; + favorites: ExtendedFavorites[]; }; export default function Home({ @@ -23,6 +24,7 @@ export default function Home({ filteredTags, nodesCount, tags, + favorites, }: Props) { const searchParams = useSearchParams(); const query = searchParams.get('query') || ''; @@ -53,7 +55,7 @@ export default function Home({ return ( <> - + {nodesCount > OFFSET && (nodes.length === OFFSET || page !== 0) && ( )} diff --git a/src/app/page.tsx b/src/app/page.tsx index 5c8c66772..fa08e94c4 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,6 +1,7 @@ import { redirect } from 'next/navigation'; import { + getFavorites, getMe, getNodesCount, getPaginatedNodes, @@ -20,7 +21,7 @@ export default async function Page({ searchParams }) { redirect(Routes.SITE.LOGIN); } - const { tenantId } = me; + const { tenantId, id: userId } = me; const page = Number(searchParams?.page) || 0; const query = searchParams.query || ''; const tag = searchParams.tag || ''; @@ -31,6 +32,7 @@ export default async function Page({ searchParams }) { const filteredTags = await getSearchTags(tenantId, tag); const nodesCount = await getNodesCount(tenantId); const tags = await getTags(tenantId); + const favorites = await getFavorites(userId); return (

            @@ -42,6 +44,7 @@ export default async function Page({ searchParams }) { filteredTags={filteredTags} nodesCount={nodesCount} tags={tags} + favorites={favorites} />

    diff --git a/src/modules/list/List.tsx b/src/modules/list/List.tsx index 9edfab7e3..21995ca03 100644 --- a/src/modules/list/List.tsx +++ b/src/modules/list/List.tsx @@ -1,17 +1,36 @@ -import { BadgeCheck, BadgeHelp, BadgeInfo, ChevronDown } from 'lucide-react'; +'use client'; + +import { zodResolver } from '@hookform/resolvers/zod'; +import { + BadgeCheck, + BadgeHelp, + BadgeInfo, + Bookmark, + BookmarkCheck, + ChevronDown, +} from 'lucide-react'; import dynamic from 'next/dynamic'; import Link from 'next/link'; +import { useForm } from 'react-hook-form'; +import { + createFavorite, + createFavoriteSchema, + deleteFavorite, +} from '@/actions'; import { Badge, Button, Tooltip, TooltipContent, TooltipTrigger, + resultToast, } from '@/components'; import { Routes, dateOptions, timeOptions } from '@/utils'; -import type { ExtendedNode } from '@/types'; +import type { ExtendedFavorites, ExtendedNode } from '@/types'; +import type { SubmitHandler } from 'react-hook-form'; +import type { z } from 'zod'; const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { ssr: false, @@ -20,9 +39,27 @@ const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { type Props = { nodes: ExtendedNode[]; message: string; + favorites: ExtendedFavorites[]; }; -export const List = ({ nodes, message }: Props) => { +type Schema = z.infer; + +export const List = ({ nodes, message, favorites }: Props) => { + const { handleSubmit, register } = useForm({ + resolver: zodResolver(createFavoriteSchema), + mode: 'onBlur', + }); + + const onSubmit: SubmitHandler = async (data) => { + if (favorites.some((favorite) => favorite.nodeId === data.nodeId)) { + const result = await deleteFavorite(data); + resultToast(result?.serverError, result?.data?.message); + } else { + const result = await createFavorite(data); + resultToast(result?.serverError, result?.data?.message); + } + }; + return (
    {nodes.length > 0 ? ( @@ -141,6 +178,51 @@ export const List = ({ nodes, message }: Props) => {
    )} +
    +
    + {/* + + + + + + + */} + + + + + + + + {favorites.some( + (favorite) => favorite.nodeId === node.id, + ) + ? 'Remove from favorites' + : 'Add to favorites'} + + + +
    ))} From e32dcc64e296f3e3d4389c601ffbe2614c31c0f6 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 24 Jun 2024 12:46:32 +0200 Subject: [PATCH 124/326] :truck: rename type ExtendedFavorite in ExtendedFavorites --- src/actions/get-favorites/index.ts | 6 +++--- src/app/profile/profile.tsx | 4 ++-- src/modules/profile/Favorites.tsx | 5 ++--- src/types/models/node.ts | 2 +- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/actions/get-favorites/index.ts b/src/actions/get-favorites/index.ts index 87d784ed6..00dff17c1 100644 --- a/src/actions/get-favorites/index.ts +++ b/src/actions/get-favorites/index.ts @@ -2,10 +2,10 @@ import { cache } from 'react'; import prisma from 'lib/prisma'; -import type { ExtendedFavorite } from '@/types'; +import type { ExtendedFavorites } from '@/types'; export const getFavorites = cache( - async (userId: string): Promise => { + async (userId: string): Promise => { try { if (!userId) { throw new Error('User not found'); @@ -23,7 +23,7 @@ export const getFavorites = cache( if (!favorites) return []; - return favorites; + return favorites as ExtendedFavorites[]; } catch (error) { throw new Error('Error fetching favorites'); } diff --git a/src/app/profile/profile.tsx b/src/app/profile/profile.tsx index 594318566..46c7c2e3e 100644 --- a/src/app/profile/profile.tsx +++ b/src/app/profile/profile.tsx @@ -9,7 +9,7 @@ import { } from '@/modules'; import type { - ExtendedFavorite, + ExtendedFavorites, Me, NodeWithQuestionAndAnswer, QuestionWithNodeId, @@ -19,7 +19,7 @@ type Props = { me: Me; questions?: QuestionWithNodeId[]; answers?: NodeWithQuestionAndAnswer[]; - favorites?: ExtendedFavorite[]; + favorites?: ExtendedFavorites[]; }; export default function Profile({ me, questions, answers, favorites }: Props) { diff --git a/src/modules/profile/Favorites.tsx b/src/modules/profile/Favorites.tsx index d818170c8..12678bd40 100644 --- a/src/modules/profile/Favorites.tsx +++ b/src/modules/profile/Favorites.tsx @@ -2,14 +2,13 @@ import Link from 'next/link'; import { Routes, dateOptions } from '@/utils'; -import type { ExtendedFavorite } from '@/types'; +import type { ExtendedFavorites } from '@/types'; type Props = { - favorites?: ExtendedFavorite[]; + favorites?: ExtendedFavorites[]; }; export const UserFavorites = ({ favorites }: Props) => { - console.log('🚀 ~ UserFavorites ~ favorites:', favorites); return ( <>

    Date: Mon, 24 Jun 2024 12:47:20 +0200 Subject: [PATCH 125/326] :art: create popover component --- src/components/index.ts | 1 + src/components/popover/Popover.tsx | 35 ++++++++++++++++++++++++++++++ src/components/popover/index.ts | 1 + 3 files changed, 37 insertions(+) create mode 100644 src/components/popover/Popover.tsx create mode 100644 src/components/popover/index.ts diff --git a/src/components/index.ts b/src/components/index.ts index aa888565b..6d285dcc6 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -11,6 +11,7 @@ export * from './input'; export * from './label'; export * from './loader'; export * from './pagination'; +export * from './popover'; export * from './select'; export * from './stepper'; export * from './tabs'; diff --git a/src/components/popover/Popover.tsx b/src/components/popover/Popover.tsx new file mode 100644 index 000000000..9de6fa7a5 --- /dev/null +++ b/src/components/popover/Popover.tsx @@ -0,0 +1,35 @@ +'use client'; + +import type { ComponentPropsWithoutRef, ElementRef } from 'react'; +import { forwardRef } from 'react'; + +import * as PopoverPrimitive from '@radix-ui/react-popover'; + +import { cn } from '@/utils'; + +const Popover = PopoverPrimitive.Root; + +const PopoverTrigger = PopoverPrimitive.Trigger; + +const PopoverAnchor = PopoverPrimitive.Anchor; + +const PopoverContent = forwardRef< + ElementRef, + ComponentPropsWithoutRef +>(({ className, align = 'center', sideOffset = 4, ...props }, ref) => ( + + + +)); +PopoverContent.displayName = PopoverPrimitive.Content.displayName; + +export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }; diff --git a/src/components/popover/index.ts b/src/components/popover/index.ts new file mode 100644 index 000000000..8f473de4b --- /dev/null +++ b/src/components/popover/index.ts @@ -0,0 +1 @@ +export * from './Popover'; From 5e04cd8e4f64a67f83b322fdfc2b4c5d88509dbb Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 24 Jun 2024 12:47:56 +0200 Subject: [PATCH 126/326] :lipstick: update icon for favorited question --- src/app/question/[id]/question.tsx | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/app/question/[id]/question.tsx b/src/app/question/[id]/question.tsx index 13111481e..b91bb4cb4 100644 --- a/src/app/question/[id]/question.tsx +++ b/src/app/question/[id]/question.tsx @@ -1,7 +1,13 @@ 'use client'; import { zodResolver } from '@hookform/resolvers/zod'; -import { HelpCircle, PenSquare, LinkIcon, Bookmark } from 'lucide-react'; +import { + HelpCircle, + PenSquare, + LinkIcon, + Bookmark, + BookmarkCheck, +} from 'lucide-react'; import dynamic from 'next/dynamic'; import Link from 'next/link'; import { usePathname } from 'next/navigation'; @@ -104,13 +110,15 @@ export default function Question({ node, favorite }: Props) { From 69f1b4e6581e37424265842f55a8b82d3075e239 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 24 Jun 2024 12:48:28 +0200 Subject: [PATCH 127/326] :lipstick: change transition to colors --- src/styles/globals.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/styles/globals.css b/src/styles/globals.css index 3078b0f17..978eda586 100644 --- a/src/styles/globals.css +++ b/src/styles/globals.css @@ -18,7 +18,7 @@ @import '@radix-ui/colors/red-dark-alpha'; * { - @apply transition-all duration-300 ease-in-out; + @apply transition-colors duration-300 ease-in-out; } td, From 941d6a1e87ce923894027e9754b1ca8556dc9544 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 24 Jun 2024 12:50:59 +0200 Subject: [PATCH 128/326] :fire: remove some unused animation --- src/components/tooltip/Tooltip.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/tooltip/Tooltip.tsx b/src/components/tooltip/Tooltip.tsx index 53962f0eb..aedc9fa47 100644 --- a/src/components/tooltip/Tooltip.tsx +++ b/src/components/tooltip/Tooltip.tsx @@ -21,7 +21,7 @@ const TooltipContent = forwardRef< ref={ref} sideOffset={sideOffset} className={cn( - 'z-50 overflow-hidden rounded-md border border-gray-6 bg-gray-3 px-3 py-1.5 text-sm font-semibold text-gray-12 shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2', + 'z-50 overflow-hidden rounded-md border border-gray-6 bg-gray-3 px-3 py-1.5 text-sm font-semibold text-gray-12 shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95', className, )} {...props} From 234ebd4d3a0caa627013b2fa5663fa08fb488553 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 24 Jun 2024 12:51:41 +0200 Subject: [PATCH 129/326] :heavy_plus_sign: install emoji-mart --- package.json | 4 + pnpm-lock.yaml | 389 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 393 insertions(+) diff --git a/package.json b/package.json index 3a3fa2e0c..272b4ce48 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,8 @@ "postinstall": "prisma generate" }, "dependencies": { + "@emoji-mart/data": "^1.2.1", + "@emoji-mart/react": "^1.1.1", "@google-cloud/storage": "^7.7.0", "@hookform/resolvers": "^3.3.4", "@next-auth/prisma-adapter": "^1.0.7", @@ -40,6 +42,7 @@ "@radix-ui/react-dialog": "^1.0.5", "@radix-ui/react-dropdown-menu": "^2.0.6", "@radix-ui/react-label": "^2.0.2", + "@radix-ui/react-popover": "^1.1.1", "@radix-ui/react-select": "^2.0.0", "@radix-ui/react-slot": "^1.0.2", "@radix-ui/react-tabs": "^1.0.4", @@ -54,6 +57,7 @@ "axios": "^1.5.0", "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", + "emoji-mart": "^5.6.0", "formidable": "^3.5.1", "jotai": "^2.6.4", "lucide-react": "^0.344.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d1aaf7587..50c37bca4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,6 +5,12 @@ settings: excludeLinksFromLockfile: false dependencies: + '@emoji-mart/data': + specifier: ^1.2.1 + version: 1.2.1 + '@emoji-mart/react': + specifier: ^1.1.1 + version: 1.1.1(emoji-mart@5.6.0)(react@18.2.0) '@google-cloud/storage': specifier: ^7.7.0 version: 7.7.0 @@ -32,6 +38,9 @@ dependencies: '@radix-ui/react-label': specifier: ^2.0.2 version: 2.0.2(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-popover': + specifier: ^1.1.1 + version: 1.1.1(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-select': specifier: ^2.0.0 version: 2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) @@ -74,6 +83,9 @@ dependencies: clsx: specifier: ^2.1.0 version: 2.1.0 + emoji-mart: + specifier: ^5.6.0 + version: 5.6.0 formidable: specifier: ^3.5.1 version: 3.5.1 @@ -667,6 +679,20 @@ packages: dependencies: '@jridgewell/trace-mapping': 0.3.9 + /@emoji-mart/data@1.2.1: + resolution: {integrity: sha512-no2pQMWiBy6gpBEiqGeU77/bFejDqUTRY7KX+0+iur13op3bqUsXdnwoZs6Xb1zbv0gAj5VvS1PWoUUckSr5Dw==} + dev: false + + /@emoji-mart/react@1.1.1(emoji-mart@5.6.0)(react@18.2.0): + resolution: {integrity: sha512-NMlFNeWgv1//uPsvLxvGQoIerPuVdXwK/EUek8OOkJ6wVOWPUizRBJU0hDqWZCOROVpfBgCemaC3m6jDOXi03g==} + peerDependencies: + emoji-mart: ^5.2 + react: ^16.8 || ^17 || ^18 + dependencies: + emoji-mart: 5.6.0 + react: 18.2.0 + dev: false + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1079,6 +1105,10 @@ packages: '@babel/runtime': 7.23.7 dev: false + /@radix-ui/primitive@1.1.0: + resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} + dev: false + /@radix-ui/react-arrow@1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} peerDependencies: @@ -1099,6 +1129,25 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false + /@radix-ui/react-arrow@1.1.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /@radix-ui/react-avatar@1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-kVK2K7ZD3wwj3qhle0ElXhOjbezIgyl2hVvgwfIdexL3rN6zJmy5AqqIf+D31lxVppdzV8CjAfZ6PklkmInZLw==} peerDependencies: @@ -1159,6 +1208,19 @@ packages: react: 18.2.0 dev: false + /@radix-ui/react-compose-refs@1.1.0(@types/react@18.0.27)(react@18.2.0): + resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.0.27 + react: 18.2.0 + dev: false + /@radix-ui/react-context@1.0.1(@types/react@18.0.27)(react@18.2.0): resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} peerDependencies: @@ -1173,6 +1235,19 @@ packages: react: 18.2.0 dev: false + /@radix-ui/react-context@1.1.0(@types/react@18.0.27)(react@18.2.0): + resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.0.27 + react: 18.2.0 + dev: false + /@radix-ui/react-dialog@1.0.5(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==} peerDependencies: @@ -1244,6 +1319,29 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false + /@radix-ui/react-dismissable-layer@1.1.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /@radix-ui/react-dropdown-menu@2.0.6(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==} peerDependencies: @@ -1284,6 +1382,19 @@ packages: react: 18.2.0 dev: false + /@radix-ui/react-focus-guards@1.1.0(@types/react@18.0.27)(react@18.2.0): + resolution: {integrity: sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.0.27 + react: 18.2.0 + dev: false + /@radix-ui/react-focus-scope@1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} peerDependencies: @@ -1306,6 +1417,27 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false + /@radix-ui/react-focus-scope@1.1.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /@radix-ui/react-id@1.0.1(@types/react@18.0.27)(react@18.2.0): resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} peerDependencies: @@ -1321,6 +1453,20 @@ packages: react: 18.2.0 dev: false + /@radix-ui/react-id@1.1.0(@types/react@18.0.27)(react@18.2.0): + resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + dev: false + /@radix-ui/react-label@2.0.2(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-N5ehvlM7qoTLx7nWPodsPYPgMzA5WM8zZChQg8nyFJKnDO5WHdba1vv5/H6IO5LtJMfD2Q3wh1qHFGNtK0w3bQ==} peerDependencies: @@ -1378,6 +1524,39 @@ packages: react-remove-scroll: 2.5.5(@types/react@18.0.27)(react@18.2.0) dev: false + /@radix-ui/react-popover@1.1.1(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-3y1A3isulwnWhvTTwmIreiB8CF4L+qRjZnK1wYLO7pplddzXKby/GnZ2M7OZY3qgnl6p9AodUIHRYGXNah8Y7g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.1.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.1.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-popper': 1.2.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.1.1(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.1.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.0.27 + aria-hidden: 1.2.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.7(@types/react@18.0.27)(react@18.2.0) + dev: false + /@radix-ui/react-popper@1.1.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==} peerDependencies: @@ -1407,6 +1586,34 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false + /@radix-ui/react-popper@1.2.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@floating-ui/react-dom': 2.0.2(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-arrow': 1.1.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-rect': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/rect': 1.1.0 + '@types/react': 18.0.27 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /@radix-ui/react-portal@1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} peerDependencies: @@ -1427,6 +1634,26 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false + /@radix-ui/react-portal@1.1.1(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /@radix-ui/react-presence@1.0.1(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} peerDependencies: @@ -1448,6 +1675,26 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false + /@radix-ui/react-presence@1.1.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /@radix-ui/react-primitive@1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} peerDependencies: @@ -1468,6 +1715,25 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false + /@radix-ui/react-primitive@2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/react-slot': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /@radix-ui/react-roving-focus@1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} peerDependencies: @@ -1551,6 +1817,20 @@ packages: react: 18.2.0 dev: false + /@radix-ui/react-slot@1.1.0(@types/react@18.0.27)(react@18.2.0): + resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + dev: false + /@radix-ui/react-tabs@1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-egZfYY/+wRNCflXNHx+dePvnz9FbmssDTJBtgRfDY7e8SE5oIo3Py2eCB1ckAbh1Q7cQ/6yJZThJ++sgbxibog==} peerDependencies: @@ -1623,6 +1903,19 @@ packages: react: 18.2.0 dev: false + /@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.0.27)(react@18.2.0): + resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.0.27 + react: 18.2.0 + dev: false + /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.0.27)(react@18.2.0): resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} peerDependencies: @@ -1638,6 +1931,20 @@ packages: react: 18.2.0 dev: false + /@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.0.27)(react@18.2.0): + resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + dev: false + /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.0.27)(react@18.2.0): resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} peerDependencies: @@ -1653,6 +1960,20 @@ packages: react: 18.2.0 dev: false + /@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.0.27)(react@18.2.0): + resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + dev: false + /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.0.27)(react@18.2.0): resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} peerDependencies: @@ -1667,6 +1988,19 @@ packages: react: 18.2.0 dev: false + /@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.0.27)(react@18.2.0): + resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.0.27 + react: 18.2.0 + dev: false + /@radix-ui/react-use-previous@1.0.1(@types/react@18.0.27)(react@18.2.0): resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} peerDependencies: @@ -1696,6 +2030,20 @@ packages: react: 18.2.0 dev: false + /@radix-ui/react-use-rect@1.1.0(@types/react@18.0.27)(react@18.2.0): + resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@radix-ui/rect': 1.1.0 + '@types/react': 18.0.27 + react: 18.2.0 + dev: false + /@radix-ui/react-use-size@1.0.1(@types/react@18.0.27)(react@18.2.0): resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} peerDependencies: @@ -1711,6 +2059,20 @@ packages: react: 18.2.0 dev: false + /@radix-ui/react-use-size@1.1.0(@types/react@18.0.27)(react@18.2.0): + resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + dev: false + /@radix-ui/react-visually-hidden@1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} peerDependencies: @@ -1737,6 +2099,10 @@ packages: '@babel/runtime': 7.23.7 dev: false + /@radix-ui/rect@1.1.0: + resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} + dev: false + /@react-email/render@0.0.12: resolution: {integrity: sha512-S8WRv/PqECEi6x0QJBj0asnAb5GFtJaHlnByxLETLkgJjc76cxMYDH4r9wdbuJ4sjkcbpwP3LPnVzwS+aIjT7g==} engines: {node: '>=18.0.0'} @@ -3837,6 +4203,10 @@ packages: resolution: {integrity: sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==} dev: false + /emoji-mart@5.6.0: + resolution: {integrity: sha512-eJp3QRe79pjwa+duv+n7+5YsNhRcMl812EcFVwrnRvYKoNPoQb5qxU8DG6Bgwji0akHdp6D4Ln6tYLG58MFSow==} + dev: false + /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -7662,6 +8032,25 @@ packages: use-sidecar: 1.1.2(@types/react@18.0.27)(react@18.2.0) dev: false + /react-remove-scroll@2.5.7(@types/react@18.0.27)(react@18.2.0): + resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.0.27 + react: 18.2.0 + react-remove-scroll-bar: 2.3.4(@types/react@18.0.27)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.0.27)(react@18.2.0) + tslib: 2.6.2 + use-callback-ref: 1.3.0(@types/react@18.0.27)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.0.27)(react@18.2.0) + dev: false + /react-style-singleton@2.2.1(@types/react@18.0.27)(react@18.2.0): resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} From 3e981f1549499efc04d71bbb5c9e37d4de4c7dab Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 24 Jun 2024 12:52:08 +0200 Subject: [PATCH 130/326] :rotating_light: run lint + prettier --- tsconfig.json | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/tsconfig.json b/tsconfig.json index 2f8735c25..1427b1b5c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,11 @@ { "compilerOptions": { "target": "ESNext", - "lib": ["dom", "dom.iterable", "esnext"], + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], "allowJs": true, "skipLibCheck": true, "strict": false, @@ -16,8 +20,12 @@ "incremental": true, "baseUrl": ".", "paths": { - "@/*": ["./src/*"], - "@/public/*": ["./public/*"] + "@/*": [ + "./src/*" + ], + "@/public/*": [ + "./public/*" + ] }, "plugins": [ { @@ -26,6 +34,13 @@ ], "strictNullChecks": true }, - "include": ["next-env.d.ts", "src/**/*.ts", "src/**/*.tsx"], - "exclude": ["node_modules"] + "include": [ + "next-env.d.ts", + "src/**/*.ts", + "src/**/*.tsx", + ".next/types/**/*.ts" + ], + "exclude": [ + "node_modules" + ] } From 957fc24fadb9db5340319fdf18ae2ef64d0eb242 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 24 Jun 2024 16:13:44 +0200 Subject: [PATCH 131/326] :fire: remove unused validations files --- src/lib/validations/favorite.ts | 6 ----- src/lib/validations/index.ts | 9 ------- src/lib/validations/integrations.ts | 5 ---- src/lib/validations/other.ts | 9 ------- src/lib/validations/question.ts | 20 --------------- src/lib/validations/register.ts | 23 ----------------- src/lib/validations/stripe.ts | 15 ----------- src/lib/validations/tag.ts | 5 ---- src/lib/validations/tenant.ts | 28 --------------------- src/lib/validations/user.ts | 39 ----------------------------- 10 files changed, 159 deletions(-) delete mode 100644 src/lib/validations/favorite.ts delete mode 100644 src/lib/validations/index.ts delete mode 100644 src/lib/validations/integrations.ts delete mode 100644 src/lib/validations/other.ts delete mode 100644 src/lib/validations/question.ts delete mode 100644 src/lib/validations/register.ts delete mode 100644 src/lib/validations/stripe.ts delete mode 100644 src/lib/validations/tag.ts delete mode 100644 src/lib/validations/tenant.ts delete mode 100644 src/lib/validations/user.ts diff --git a/src/lib/validations/favorite.ts b/src/lib/validations/favorite.ts deleted file mode 100644 index a8f741a2b..000000000 --- a/src/lib/validations/favorite.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { z } from 'zod'; - -export const favoriteClientSchema = z.object({ - userId: z.string().cuid2(), - nodeId: z.string().cuid2(), -}); diff --git a/src/lib/validations/index.ts b/src/lib/validations/index.ts deleted file mode 100644 index f56a44f08..000000000 --- a/src/lib/validations/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -export * from './integrations'; -export * from './favorite'; -export * from './other'; -export * from './question'; -export * from './register'; -export * from './tag'; -export * from './tenant'; -export * from './user'; -export * from './stripe'; diff --git a/src/lib/validations/integrations.ts b/src/lib/validations/integrations.ts deleted file mode 100644 index 2aef99fba..000000000 --- a/src/lib/validations/integrations.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { z } from 'zod'; - -export const integrationsClientSchema = z.object({ - slack: z.string().trim().url({ message: 'Invalid URL' }), -}); diff --git a/src/lib/validations/other.ts b/src/lib/validations/other.ts deleted file mode 100644 index 31b4cb216..000000000 --- a/src/lib/validations/other.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { z } from 'zod'; - -export const csvUploadClientSchema = z.object({ - name: z.string().min(1, 'Column name is required'), -}); - -export const tenantIdSchema = z.object({ - tenantId: z.string().cuid2(), -}); diff --git a/src/lib/validations/question.ts b/src/lib/validations/question.ts deleted file mode 100644 index 3df057f8d..000000000 --- a/src/lib/validations/question.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { z } from 'zod'; - -export const questionClientSchema = z.object({ - text: z - .string() - .trim() - .min(3, { message: 'Question must be at least 3 characters long' }) - .max(100, { message: 'Question must be under 100 characters long' }), - tenantId: z.string().cuid2(), - tags: z.array(z.string().cuid2()), - withAnswer: z.boolean().optional(), -}); - -export const createQuestionSchema = z.object({ - text: z - .string() - .trim() - .min(3, { message: 'Question must be at least 3 characters long' }) - .max(100, { message: 'Question must be under 100 characters long' }), -}); diff --git a/src/lib/validations/register.ts b/src/lib/validations/register.ts deleted file mode 100644 index 783e3a9b0..000000000 --- a/src/lib/validations/register.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { z } from 'zod'; - -export const registerCompanyClientSchema = z.object({ - company: z.string().min(1, { message: 'Company name is required' }), - companyEmail: z - .string() - .trim() - .min(1, { message: 'Company email is required' }) - .email({ message: 'Invalid email' }), - domain: z.string().trim().nullable(), -}); - -export const registerUserClientSchema = z.object({ - email: z - .string() - .trim() - .min(1, { message: 'User email is required' }) - .email({ message: 'Invalid email' }), -}); - -export const registerCompleteClientSchema = registerCompanyClientSchema.merge( - registerUserClientSchema, -); diff --git a/src/lib/validations/stripe.ts b/src/lib/validations/stripe.ts deleted file mode 100644 index cf5d759da..000000000 --- a/src/lib/validations/stripe.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { z } from 'zod'; - -export const createCheckoutSchema = z.object({ - customerId: z.string(), - lookup_key: z.string(), -}); - -export const createCustomerSchema = z.object({ - company: z.string().trim().min(1, { message: 'Company name is required' }), - companyEmail: z - .string() - .trim() - .min(1, { message: 'Company email is required' }) - .email({ message: 'Invalid email' }), -}); diff --git a/src/lib/validations/tag.ts b/src/lib/validations/tag.ts deleted file mode 100644 index a90bfeb1a..000000000 --- a/src/lib/validations/tag.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { z } from 'zod'; - -export const createTagClientSchema = z.object({ - label: z.string().trim().min(1, { message: 'Tag name is required' }), -}); diff --git a/src/lib/validations/tenant.ts b/src/lib/validations/tenant.ts deleted file mode 100644 index 9c859ad65..000000000 --- a/src/lib/validations/tenant.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { z } from 'zod'; - -import { ACCEPTED_IMAGE_TYPES, MAX_FILE_SIZE } from '@/utils'; - -export const updateTenantClientSchema = z.object({ - company: z.string().trim().min(1, { message: 'Company name is required' }), - email: z - .string() - .trim() - .min(1, { message: 'Company email is required' }) - .email({ message: 'Invalid email' }), - domain: z.string().trim().nullable(), -}); - -export const deleteSchema = (company: string) => - z.object({ - text: z.literal(`DELETE ${company}`), - }); - -export const filesClientSchema = z.object({ - logo: z - .custom((file) => file instanceof File, 'Please upload a file') - .refine((file) => file?.size <= MAX_FILE_SIZE, 'File must be under 5MB') - .refine( - (file) => ACCEPTED_IMAGE_TYPES.includes(file?.type), - 'Wrong format', - ), -}); diff --git a/src/lib/validations/user.ts b/src/lib/validations/user.ts deleted file mode 100644 index 8a2fb6d58..000000000 --- a/src/lib/validations/user.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { z } from 'zod'; - -import { ROLE } from '@/utils'; - -export const userEmailClientSchema = z.object({ - email: z - .string() - .trim() - .min(1, { message: 'User email is required' }) - .email({ message: 'Invalid email' }) - .optional(), -}); - -export const userLoginClientSchema = userEmailClientSchema.merge( - z.object({ - password: z.string().trim().min(1, { message: 'Password is required' }), - }), -); - -export const userRoleClientSchema = z.object({ - role: z.enum(ROLE).optional(), -}); - -export const createUserClientSchema = z.object({ - email: z - .string() - .trim() - .min(1, { message: 'User email is required' }) - .email({ message: 'Invalid email' }) - .optional(), - role: z.enum(ROLE).optional(), - usersCount: z.number().min(0), -}); - -export const updateUserClientSchema = createUserClientSchema.merge( - z.object({ - name: z.string().trim().optional(), - }), -); From 74ca8c5411a3de34c6ce34fa87f1a94c4aa813f4 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 24 Jun 2024 16:21:19 +0200 Subject: [PATCH 132/326] :art: update origin of schema folder --- src/app/api/stripe/checkout/route.ts | 2 +- src/app/login/page.tsx | 6 ++--- src/app/register/form.tsx | 6 ++--- src/app/register/user/form.tsx | 6 ++--- src/lib/validations.ts | 31 ++++++++++++++++++++++++ src/modules/settings/general/Files.tsx | 6 ++--- src/modules/settings/users/FileInput.tsx | 6 ++--- 7 files changed, 47 insertions(+), 16 deletions(-) create mode 100644 src/lib/validations.ts diff --git a/src/app/api/stripe/checkout/route.ts b/src/app/api/stripe/checkout/route.ts index 8d30d2c09..0aaa38c64 100644 --- a/src/app/api/stripe/checkout/route.ts +++ b/src/app/api/stripe/checkout/route.ts @@ -1,10 +1,10 @@ import { NextResponse } from 'next/server'; import Stripe from 'stripe'; -import { createCheckoutSchema } from '@/lib'; import { Routes } from '@/utils'; import type { NextRequest } from 'next/server'; +import { createCheckoutSchema } from '@/lib/validations'; const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { apiVersion: '2023-10-16', diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index da446feda..cd29b8f7f 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -8,7 +8,7 @@ import Link from 'next/link'; import { useForm } from 'react-hook-form'; import { Button, Field, Input, LoginButton } from '@/components'; -import { userEmailClientSchema } from '@/lib'; +import { userEmailSchema } from '@/lib/validations'; import { Routes } from '@/utils'; import type { SubmitHandler } from 'react-hook-form'; @@ -34,7 +34,7 @@ type ErrorProps = { error: string; }; -type Schema = z.infer; +type Schema = z.infer; const LoginError = ({ error }: ErrorProps) => { const errorMessage = error && (loginErrors[error] ?? loginErrors.default); @@ -50,7 +50,7 @@ export default function Page({ searchParams }) { handleSubmit, formState: { isSubmitting, isDirty, errors, isValid }, } = useForm({ - resolver: zodResolver(userEmailClientSchema), + resolver: zodResolver(userEmailSchema), mode: 'onBlur', defaultValues: { email: '', diff --git a/src/app/register/form.tsx b/src/app/register/form.tsx index 9e2d5db83..18a67ce8c 100644 --- a/src/app/register/form.tsx +++ b/src/app/register/form.tsx @@ -7,8 +7,8 @@ import Link from 'next/link'; import { useRouter } from 'next/navigation'; import { useForm } from 'react-hook-form'; +import { createTenantCompanySchema } from '@/actions'; import { Button, Field, Input } from '@/components'; -import { registerCompanyClientSchema } from '@/lib'; import { registerAtom } from '@/store'; import { Routes } from '@/utils'; @@ -16,7 +16,7 @@ import type { ITenantCreateFields } from '@/types'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; -type Schema = z.infer; +type Schema = z.infer; export default function Form() { const [state, setState] = useAtom(registerAtom); @@ -27,7 +27,7 @@ export default function Form() { register, formState: { errors, isValid }, } = useForm({ - resolver: zodResolver(registerCompanyClientSchema), + resolver: zodResolver(createTenantCompanySchema), mode: 'onBlur', defaultValues: state, }); diff --git a/src/app/register/user/form.tsx b/src/app/register/user/form.tsx index bee696d73..d872f2eb0 100644 --- a/src/app/register/user/form.tsx +++ b/src/app/register/user/form.tsx @@ -7,15 +7,15 @@ import Link from 'next/link'; import { useRouter } from 'next/navigation'; import { useForm } from 'react-hook-form'; +import { createTenantUserSchema } from '@/actions'; import { Button, Field, Input } from '@/components'; -import { registerUserClientSchema } from '@/lib'; import { registerAtom } from '@/store'; import { Routes } from '@/utils'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; -type Schema = z.infer; +type Schema = z.infer; export default function Form() { const [state, setState] = useAtom(registerAtom); @@ -26,7 +26,7 @@ export default function Form() { handleSubmit, formState: { isValid, errors }, } = useForm({ - resolver: zodResolver(registerUserClientSchema), + resolver: zodResolver(createTenantUserSchema), mode: 'onBlur', defaultValues: state, }); diff --git a/src/lib/validations.ts b/src/lib/validations.ts new file mode 100644 index 000000000..0a186e709 --- /dev/null +++ b/src/lib/validations.ts @@ -0,0 +1,31 @@ +import { z } from 'zod'; + +import { ACCEPTED_IMAGE_TYPES, MAX_FILE_SIZE } from '@/utils'; + +export const userEmailSchema = z.object({ + email: z + .string() + .trim() + .min(1, { message: 'User email is required' }) + .email({ message: 'Invalid email' }) + .optional(), +}); + +export const filesSchema = z.object({ + logo: z + .custom((file) => file instanceof File, 'Please upload a file') + .refine((file) => file?.size <= MAX_FILE_SIZE, 'File must be under 5MB') + .refine( + (file) => ACCEPTED_IMAGE_TYPES.includes(file?.type), + 'Wrong format', + ), +}); + +export const csvUploadSchema = z.object({ + name: z.string().min(1, 'Column name is required'), +}); + +export const createCheckoutSchema = z.object({ + customerId: z.string(), + lookup_key: z.string(), +}); diff --git a/src/modules/settings/general/Files.tsx b/src/modules/settings/general/Files.tsx index 974fe1de3..f5e210daf 100644 --- a/src/modules/settings/general/Files.tsx +++ b/src/modules/settings/general/Files.tsx @@ -11,7 +11,7 @@ import { v4 as uuid } from 'uuid'; import { getSignedLogo, updateLogo } from '@/actions'; import { Button, resultToast } from '@/components'; -import { filesClientSchema } from '@/lib'; +import { filesSchema } from '@/lib/validations'; import type { UpdateLogo } from '@/actions'; import type { Tenant } from '@prisma/client'; @@ -22,7 +22,7 @@ type Props = { tenant: Tenant; }; -type Schema = z.infer; +type Schema = z.infer; export const Files = ({ tenant }: Props) => { const [disabled, setDisabled] = useState(true); @@ -35,7 +35,7 @@ export const Files = ({ tenant }: Props) => { reset, formState: { isSubmitting, isDirty, isValid }, } = useForm({ - resolver: zodResolver(filesClientSchema), + resolver: zodResolver(filesSchema), mode: 'onBlur', defaultValues: { logo: undefined, diff --git a/src/modules/settings/users/FileInput.tsx b/src/modules/settings/users/FileInput.tsx index cde098263..ea0ac07be 100644 --- a/src/modules/settings/users/FileInput.tsx +++ b/src/modules/settings/users/FileInput.tsx @@ -25,7 +25,7 @@ import { Input, } from '@/components'; import { useMediaQuery } from '@/hooks'; -import { csvUploadClientSchema } from '@/lib'; +import { csvUploadSchema } from '@/lib/validations'; import type { $Enums, User } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; @@ -38,7 +38,7 @@ type Props = { usersCount: number; }; -type Schema = z.infer; +type Schema = z.infer; export const FileInput = ({ tenantId, users, plan, usersCount }: Props) => { const isDesktop = useMediaQuery('(min-width: 640px)'); @@ -66,7 +66,7 @@ export const FileInput = ({ tenantId, users, plan, usersCount }: Props) => { handleSubmit, formState: { isSubmitting }, } = useForm({ - resolver: zodResolver(csvUploadClientSchema), + resolver: zodResolver(csvUploadSchema), defaultValues: { name: '', }, From b07b3228296bb93cad8de3f41c1d98ef8e26c0e9 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 24 Jun 2024 16:23:06 +0200 Subject: [PATCH 133/326] :sparkles: merge createCustomer and createTenant functions --- src/actions/create-tenant/action.ts | 34 ++++++++++++++++++++++++++++- src/actions/create-tenant/schema.ts | 11 ++++++++-- src/app/register/confirm/form.tsx | 24 ++++++-------------- 3 files changed, 49 insertions(+), 20 deletions(-) diff --git a/src/actions/create-tenant/action.ts b/src/actions/create-tenant/action.ts index 6aacd7b38..e61120ca0 100644 --- a/src/actions/create-tenant/action.ts +++ b/src/actions/create-tenant/action.ts @@ -1,6 +1,7 @@ 'use server'; // import { Resend } from 'resend'; +import Stripe from 'stripe'; import { ActionError, actionClient } from '@/lib/safe-actions'; import prisma from 'lib/prisma'; @@ -8,6 +9,10 @@ import prisma from 'lib/prisma'; import 'server-only'; import { createTenantSchema } from './schema'; +const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { + apiVersion: '2023-10-16', +}); + // const resend = new Resend(process.env.RESEND_API_KEY); // const { data: domains } = await resend.domains.list(); @@ -55,5 +60,32 @@ export const createTenant = actionClient // subject: 'Welcome to FAQMaker', // react: RegisterEmailTemplate(), // }); - return { message: 'Account created successfully' }; + const customerExists = await stripe.customers.search({ + query: `email:'${companyEmail}'`, + }); + if (customerExists.data.length > 0) { + throw new ActionError( + 'A customer with the same company email already exists', + ); + } + const customer = await stripe.customers.create({ + email: companyEmail, + name: company, + }); + if (!customer) { + throw new ActionError('There was a problem creating the customer'); + } + const updatedTenant = await prisma.tenant.update({ + where: { email: companyEmail }, + data: { + customerId: customer.id, + }, + }); + if (!updatedTenant) { + throw new ActionError('There was a problem updating the tenant'); + } + return { + customerId: customer.id, + message: 'Your account has successfully been created', + }; }); diff --git a/src/actions/create-tenant/schema.ts b/src/actions/create-tenant/schema.ts index 25bc2f0af..04e643a03 100644 --- a/src/actions/create-tenant/schema.ts +++ b/src/actions/create-tenant/schema.ts @@ -1,16 +1,23 @@ import { z } from 'zod'; -export const createTenantSchema = z.object({ - company: z.string().trim().min(1, { message: 'Company name is required' }), +export const createTenantCompanySchema = z.object({ + company: z.string().min(1, { message: 'Company name is required' }), companyEmail: z .string() .trim() .min(1, { message: 'Company email is required' }) .email({ message: 'Invalid email' }), domain: z.string().trim().nullable(), +}); + +export const createTenantUserSchema = z.object({ email: z .string() .trim() .min(1, { message: 'User email is required' }) .email({ message: 'Invalid email' }), }); + +export const createTenantSchema = createTenantCompanySchema.merge( + createTenantUserSchema, +); diff --git a/src/app/register/confirm/form.tsx b/src/app/register/confirm/form.tsx index d65451f8b..f829acc87 100644 --- a/src/app/register/confirm/form.tsx +++ b/src/app/register/confirm/form.tsx @@ -3,7 +3,7 @@ import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; -import { useAtomValue } from 'jotai'; +import { useAtom } from 'jotai'; import { MoveLeft } from 'lucide-react'; import { useRouter } from 'next/navigation'; import { useForm } from 'react-hook-form'; @@ -20,8 +20,7 @@ type Schema = z.infer; export default function Form() { const [disabled, setDisabled] = useState(true); - // const [state, setState] = useAtom(registerAtom); - const state = useAtomValue(registerAtom); + const [state, setState] = useAtom(registerAtom); const router = useRouter(); const { handleSubmit, @@ -31,25 +30,16 @@ export default function Form() { defaultValues: state, }); - // const { - // data: customerId, - // mutateAsync: mutateCustomer, - // isSuccess: customerIsSuccess, - // } = useCreateCustomer(); - const onSubmit: SubmitHandler = async (data) => { const result = await createTenant(data); resultToast(result?.serverError, result?.data?.message); - // await mutateCustomer(data); + if (!result?.serverError && result?.data?.customerId) { + const { customerId } = result.data; + setState({ ...state, customerId }); + router.push(Routes.SITE.REGISTER.PLAN); + } }; - // useEffect(() => { - // if (customerIsSuccess) { - // setState({ ...state, customerId }); - // router.push(Routes.SITE.REGISTER.PLAN); - // } - // }, [customerIsSuccess, customerId]); - useEffect(() => { setDisabled(!isValid || isSubmitting); }, [isValid, isSubmitting]); From a58e92129f747b1f4e2b5e34e868e2db4d06b52d Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 24 Jun 2024 16:23:49 +0200 Subject: [PATCH 134/326] :fire: remove unused useCreateCustomer file --- src/hooks/queries/stripe/index.ts | 1 - src/hooks/queries/stripe/useCreateCustomer.ts | 25 ------------------- 2 files changed, 26 deletions(-) delete mode 100644 src/hooks/queries/stripe/useCreateCustomer.ts diff --git a/src/hooks/queries/stripe/index.ts b/src/hooks/queries/stripe/index.ts index 05fd6aa3d..3e62c836a 100644 --- a/src/hooks/queries/stripe/index.ts +++ b/src/hooks/queries/stripe/index.ts @@ -1,2 +1 @@ export * from './useCreateCheckout'; -export * from './useCreateCustomer'; diff --git a/src/hooks/queries/stripe/useCreateCustomer.ts b/src/hooks/queries/stripe/useCreateCustomer.ts deleted file mode 100644 index 744389938..000000000 --- a/src/hooks/queries/stripe/useCreateCustomer.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { useMutation } from '@tanstack/react-query'; -import axios from 'axios'; - -import { Routes } from '@/utils'; - -import type { registerCompleteClientSchema } from '@/lib'; -import type { z } from 'zod'; - -type Schema = z.infer; - -const createCustomer = async (values: Schema) => { - const body = { - ...values, - }; - const { data } = await axios.post(Routes.API.CUSTOMER, body); - const { customerId } = data; - return customerId; -}; - -export const useCreateCustomer = () => { - const mutation = useMutation({ - mutationFn: (values: Schema) => createCustomer(values), - }); - return mutation; -}; From f4b2c8d359cea26527101469ff1fa6aa27ac604b Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 24 Jun 2024 16:24:19 +0200 Subject: [PATCH 135/326] :fire: remove parsing of tenantId --- src/app/api/stripe/billing/route.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/app/api/stripe/billing/route.ts b/src/app/api/stripe/billing/route.ts index d3f9da375..ee13286a3 100644 --- a/src/app/api/stripe/billing/route.ts +++ b/src/app/api/stripe/billing/route.ts @@ -26,12 +26,7 @@ export async function POST(req: NextRequest) { { status: 500 }, ); } - const result = tenantIdSchema.safeParse(body); - if (result.success === false) { - const errors = result.error.flatten().fieldErrors; - return NextResponse.json({ error: errors }, { status: 500 }); - } - const { tenantId } = result.data; + const { tenantId } = body; const { customerId, plan } = await prisma.tenant.findUnique({ where: { id: tenantId }, select: { From 9b3594e67ad901f824c1d346c451650c01f177d5 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 24 Jun 2024 16:24:49 +0200 Subject: [PATCH 136/326] :mute: remove console.log --- src/modules/profile/Update.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/modules/profile/Update.tsx b/src/modules/profile/Update.tsx index d8d140419..54065a6a3 100644 --- a/src/modules/profile/Update.tsx +++ b/src/modules/profile/Update.tsx @@ -67,7 +67,6 @@ export const UpdateProfile = ({ me }: Props) => { useEffect(() => { setDisabled(isSubmitting || !isDirty || !isValid); }, [isDirty, isSubmitting, isValid]); - console.log('🚀 ~ UpdateProfile ~ isValid:', isValid); return (
    Date: Mon, 24 Jun 2024 16:25:44 +0200 Subject: [PATCH 137/326] :label: add min length --- src/actions/create-user/schema.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/actions/create-user/schema.ts b/src/actions/create-user/schema.ts index 46aba0b9b..36f33ad5b 100644 --- a/src/actions/create-user/schema.ts +++ b/src/actions/create-user/schema.ts @@ -3,7 +3,11 @@ import { z } from 'zod'; import { ROLE } from '@/utils'; export const createUserSchema = z.object({ - email: z.string().trim().email({ message: 'Invalid email' }), + email: z + .string() + .trim() + .min(1, { message: 'User email is required' }) + .email({ message: 'Invalid email' }), role: z.enum(ROLE), tenantId: z.string().cuid2(), usersCount: z.number().min(0), From 8787e7d0bda4820925bae5e7c208b919b6698710 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 24 Jun 2024 16:26:25 +0200 Subject: [PATCH 138/326] :card_file_box: create reaction table --- .../migration.sql | 42 +++++++++++++++++++ prisma/schema.prisma | 40 ++++++++++++++---- 2 files changed, 73 insertions(+), 9 deletions(-) create mode 100644 prisma/migrations/20240624124858_faqmaker_dev18/migration.sql diff --git a/prisma/migrations/20240624124858_faqmaker_dev18/migration.sql b/prisma/migrations/20240624124858_faqmaker_dev18/migration.sql new file mode 100644 index 000000000..da55d0bd3 --- /dev/null +++ b/prisma/migrations/20240624124858_faqmaker_dev18/migration.sql @@ -0,0 +1,42 @@ +/* + Warnings: + + - A unique constraint covering the columns `[email,domain,logo,customerId]` on the table `Tenant` will be added. If there are existing duplicate values, this will fail. + +*/ +-- DropIndex +DROP INDEX "Tenant_customerId_key"; + +-- DropIndex +DROP INDEX "Tenant_domain_key"; + +-- DropIndex +DROP INDEX "Tenant_email_key"; + +-- DropIndex +DROP INDEX "Tenant_logo_key"; + +-- CreateTable +CREATE TABLE "Reaction" ( + "id" TEXT NOT NULL, + "emoji" TEXT NOT NULL, + "nodeId" TEXT NOT NULL, + "userId" TEXT NOT NULL, + + CONSTRAINT "Reaction_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE INDEX "Reaction_userId_nodeId_idx" ON "Reaction"("userId", "nodeId"); + +-- CreateIndex +CREATE UNIQUE INDEX "Reaction_userId_nodeId_key" ON "Reaction"("userId", "nodeId"); + +-- CreateIndex +CREATE UNIQUE INDEX "Tenant_email_domain_logo_customerId_key" ON "Tenant"("email", "domain", "logo", "customerId"); + +-- AddForeignKey +ALTER TABLE "Reaction" ADD CONSTRAINT "Reaction_nodeId_fkey" FOREIGN KEY ("nodeId") REFERENCES "Node"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Reaction" ADD CONSTRAINT "Reaction_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 4a37d1f4b..3b8ba673f 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -10,25 +10,27 @@ generator client { model Tenant { id String @id @default(cuid()) createdAt DateTime @default(now()) - email String @unique + email String plan Plan @default(free) company String - domain String? @unique - logo String? @unique - customerId String? @unique + domain String? + logo String? + customerId String? isActive Boolean @default(false) subscriptionId String? users User[] nodes Node[] tags Tag[] integrations Integrations? + + @@unique([email, domain, logo, customerId]) } model User { id String @id @default(cuid()) createdAt DateTime @default(now()) name String? - email String @unique + email String image String? role Role @default(user) tenant Tenant @relation(fields: [tenantId], references: [id], onDelete: Cascade) @@ -38,7 +40,9 @@ model User { accounts Account[] sessions Session[] favorites Favorite[] + reactions Reaction[] + @@unique([email]) @@index([tenantId]) } @@ -52,6 +56,7 @@ model Node { tenant Tenant @relation(fields: [tenantId], references: [id], onDelete: Cascade) tenantId String favorites Favorite[] + reactions Reaction[] @@index([tenantId]) } @@ -63,10 +68,11 @@ model Question { text String slug String node Node @relation(fields: [nodeId], references: [id], onDelete: Cascade) - nodeId String @unique + nodeId String user User @relation(fields: [userId], references: [id], onDelete: Cascade) userId String + @@unique([nodeId]) @@index([nodeId, userId]) } @@ -76,10 +82,11 @@ model Answer { updatedAt DateTime @updatedAt text String node Node @relation(fields: [nodeId], references: [id], onDelete: Cascade) - nodeId String @unique + nodeId String user User @relation(fields: [userId], references: [id], onDelete: Cascade) userId String + @@unique([nodeId]) @@index([nodeId, userId]) } @@ -105,12 +112,25 @@ model Favorite { @@index([userId, nodeId]) } +model Reaction { + id String @id @default(cuid()) + emoji String + node Node @relation(fields: [nodeId], references: [id], onDelete: Cascade) + nodeId String + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + userId String + + @@unique([userId, nodeId]) + @@index([userId, nodeId]) +} + model Integrations { id String @id @default(cuid()) slack String tenant Tenant @relation(fields: [tenantId], references: [id], onDelete: Cascade) - tenantId String @unique + tenantId String + @@unique([tenantId]) @@index([tenantId]) } @@ -146,8 +166,10 @@ model Account { model Session { id String @id @default(cuid()) - sessionToken String @unique + sessionToken String userId String expires DateTime user User @relation(fields: [userId], references: [id], onDelete: Cascade) + + @@unique([sessionToken]) } From 0566ab2b87fbd32ba541b8a504d6ce43c56c3784 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 24 Jun 2024 16:27:02 +0200 Subject: [PATCH 139/326] :construction: add reaction functionality --- src/modules/list/List.tsx | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/modules/list/List.tsx b/src/modules/list/List.tsx index 21995ca03..2ad12fbcd 100644 --- a/src/modules/list/List.tsx +++ b/src/modules/list/List.tsx @@ -1,5 +1,7 @@ 'use client'; +import EmojiData from '@emoji-mart/data'; +import Picker from '@emoji-mart/react'; import { zodResolver } from '@hookform/resolvers/zod'; import { BadgeCheck, @@ -21,6 +23,9 @@ import { import { Badge, Button, + Popover, + PopoverContent, + PopoverTrigger, Tooltip, TooltipContent, TooltipTrigger, @@ -60,6 +65,10 @@ export const List = ({ nodes, message, favorites }: Props) => { } }; + const onEmojiSelect = (emoji) => { + console.log(emoji.native); + }; + return (
    {nodes.length > 0 ? ( @@ -180,16 +189,25 @@ export const List = ({ nodes, message, favorites }: Props) => { )}
    - {/* + - - + - */} + Date: Mon, 24 Jun 2024 17:05:18 +0200 Subject: [PATCH 140/326] :fire: remove useCreateCheckout file --- src/hooks/index.ts | 1 - src/hooks/queries/index.ts | 1 - src/hooks/queries/stripe/index.ts | 1 - src/hooks/queries/stripe/useCreateCheckout.ts | 24 ------------------- 4 files changed, 27 deletions(-) delete mode 100644 src/hooks/queries/index.ts delete mode 100644 src/hooks/queries/stripe/index.ts delete mode 100644 src/hooks/queries/stripe/useCreateCheckout.ts diff --git a/src/hooks/index.ts b/src/hooks/index.ts index e4c49bd7a..4248015e1 100644 --- a/src/hooks/index.ts +++ b/src/hooks/index.ts @@ -1,2 +1 @@ -export * from './queries'; export * from './useMediaQuery'; diff --git a/src/hooks/queries/index.ts b/src/hooks/queries/index.ts deleted file mode 100644 index 0b84edbd8..000000000 --- a/src/hooks/queries/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './stripe'; diff --git a/src/hooks/queries/stripe/index.ts b/src/hooks/queries/stripe/index.ts deleted file mode 100644 index 3e62c836a..000000000 --- a/src/hooks/queries/stripe/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './useCreateCheckout'; diff --git a/src/hooks/queries/stripe/useCreateCheckout.ts b/src/hooks/queries/stripe/useCreateCheckout.ts deleted file mode 100644 index 90dfff8e2..000000000 --- a/src/hooks/queries/stripe/useCreateCheckout.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { useMutation } from '@tanstack/react-query'; -import axios from 'axios'; - -import { Routes, getStripe } from '@/utils'; - -const createCheckout = async (lookup_key: string, customerId: string) => { - const stripe = await getStripe(); - const body = { - lookup_key, - customerId, - }; - const checkoutSession = await axios.post(Routes.API.CHECKOUT, body); - const result = await stripe?.redirectToCheckout({ - sessionId: checkoutSession.data.id, - }); - return result; -}; - -export const useCreateCheckout = (customerId: string) => { - const mutation = useMutation({ - mutationFn: (lookup_key: string) => createCheckout(lookup_key, customerId), - }); - return mutation; -}; From c990bf075b59ba133df911ac757301b6aa278a56 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 24 Jun 2024 17:06:56 +0200 Subject: [PATCH 141/326] :heavy_minus_sign: uninstall axios --- package.json | 1 - pnpm-lock.yaml | 13 ------------- src/components/toast/Toast.tsx | 4 +--- 3 files changed, 1 insertion(+), 17 deletions(-) diff --git a/package.json b/package.json index 272b4ce48..4c1f0dddd 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,6 @@ "@uiw/react-color-sketch": "^2.0.8", "@uiw/react-markdown-preview": "^5.0.6", "@uiw/react-md-editor": "^4.0.3", - "axios": "^1.5.0", "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", "emoji-mart": "^5.6.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 50c37bca4..e0dbfe53a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -74,9 +74,6 @@ dependencies: '@uiw/react-md-editor': specifier: ^4.0.3 version: 4.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - axios: - specifier: ^1.5.0 - version: 1.5.0 class-variance-authority: specifier: ^0.7.0 version: 0.7.0 @@ -3492,16 +3489,6 @@ packages: engines: {node: '>=4'} dev: true - /axios@1.5.0: - resolution: {integrity: sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==} - dependencies: - follow-redirects: 1.15.2 - form-data: 4.0.0 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - dev: false - /axios@1.6.2: resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==} dependencies: diff --git a/src/components/toast/Toast.tsx b/src/components/toast/Toast.tsx index 8f4e6c65b..80c0bc3f4 100644 --- a/src/components/toast/Toast.tsx +++ b/src/components/toast/Toast.tsx @@ -1,7 +1,5 @@ import { toast } from 'sonner'; -import type { AxiosResponse } from 'axios'; - export const errorToast = (error?: string) => { return toast.error(error || `Something went wrong`); }; @@ -17,7 +15,7 @@ export const promiseToast = ( ) => { return toast.promise(promise, { loading, - success: (data: AxiosResponse['data']) => { + success: (data) => { return `${data.message}`; }, error: (data) => { From 08520885faec0a5d137165de35e421718ecde8f4 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Fri, 28 Jun 2024 11:15:01 +0200 Subject: [PATCH 142/326] :heavy_minus_sign: uninstall react-query --- package.json | 1 - pnpm-lock.yaml | 16 ---------------- 2 files changed, 17 deletions(-) diff --git a/package.json b/package.json index 4c1f0dddd..f114c00cf 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,6 @@ "@sentry/nextjs": "^7.102.1", "@slack/webhook": "^7.0.1", "@stripe/stripe-js": "^2.4.0", - "@tanstack/react-query": "^5.20.1", "@uiw/react-color-sketch": "^2.0.8", "@uiw/react-markdown-preview": "^5.0.6", "@uiw/react-md-editor": "^4.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e0dbfe53a..bab972db1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -62,9 +62,6 @@ dependencies: '@stripe/stripe-js': specifier: ^2.4.0 version: 2.4.0 - '@tanstack/react-query': - specifier: ^5.20.1 - version: 5.20.1(react@18.2.0) '@uiw/react-color-sketch': specifier: ^2.0.8 version: 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) @@ -2364,19 +2361,6 @@ packages: tslib: 2.6.2 dev: false - /@tanstack/query-core@5.20.1: - resolution: {integrity: sha512-OONHHYG5vzjob4An+EfzbW7TRyb+sCA0AEgHzUIMlV9NYlF7wIwbla3PUfB3ocnaK1gZyROf0Lux/CBSu0exBQ==} - dev: false - - /@tanstack/react-query@5.20.1(react@18.2.0): - resolution: {integrity: sha512-KRkOtJ47tv9B3EXfjHkbPkiFzOzYCOid8BrYBozk0rm9JpDB2xSf71q8w1PRudlQW6QUQIEDI9E6NIMh6AlLUw==} - peerDependencies: - react: ^18.0.0 - dependencies: - '@tanstack/query-core': 5.20.1 - react: 18.2.0 - dev: false - /@tootallnate/once@2.0.0: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} From 3ff3f11b0e8e21c9cfeeb011f56bae492608ad4c Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Fri, 28 Jun 2024 11:15:23 +0200 Subject: [PATCH 143/326] :fire: remove react-query provider --- src/app/providers.tsx | 72 +++++++++++++------------------------------ 1 file changed, 22 insertions(+), 50 deletions(-) diff --git a/src/app/providers.tsx b/src/app/providers.tsx index 3c67bded2..bd23739f9 100644 --- a/src/app/providers.tsx +++ b/src/app/providers.tsx @@ -1,7 +1,6 @@ 'use client'; import '@/styles/globals.css'; -import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { Inter, Merriweather } from 'next/font/google'; import { SessionProvider } from 'next-auth/react'; import { Toaster } from 'sonner'; @@ -19,58 +18,31 @@ const inter = Inter({ variable: '--font-inter', }); -function makeQueryClient() { - return new QueryClient({ - defaultOptions: { - queries: { - gcTime: 60 * 1000, - staleTime: 60 * 1000, - retry: false, - throwOnError: true, - }, - }, - }); -} - -let browserQueryClient: QueryClient | undefined; - -function getQueryClient() { - if (typeof window === 'undefined') { - return makeQueryClient(); - } - if (!browserQueryClient) browserQueryClient = makeQueryClient(); - return browserQueryClient; -} - export default function Providers({ children }) { - const queryClient = getQueryClient(); - return ( - - - - -
    - {children} -
    -
    -
    -
    + + + +
    + {children} +
    +
    +
    ); } From c24bcb2ce8030299fa634506416de39b9e739d2b Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sat, 29 Jun 2024 11:47:25 +0200 Subject: [PATCH 144/326] :card_file_box: remove domain field in tenant --- .../20240628144111_faqmaker_dev19/migration.sql | 15 +++++++++++++++ prisma/schema.prisma | 3 +-- src/actions/create-tenant/schema.ts | 1 - src/actions/update-tenant/action.ts | 3 +-- src/actions/update-tenant/schema.ts | 1 - src/app/register/confirm/form.tsx | 8 -------- src/app/register/form.tsx | 6 ------ src/modules/settings/general/Company.tsx | 6 ------ src/store/register.ts | 1 - src/types/global.ts | 4 ++-- src/types/models/user.ts | 1 - 11 files changed, 19 insertions(+), 30 deletions(-) create mode 100644 prisma/migrations/20240628144111_faqmaker_dev19/migration.sql diff --git a/prisma/migrations/20240628144111_faqmaker_dev19/migration.sql b/prisma/migrations/20240628144111_faqmaker_dev19/migration.sql new file mode 100644 index 000000000..7a9a56246 --- /dev/null +++ b/prisma/migrations/20240628144111_faqmaker_dev19/migration.sql @@ -0,0 +1,15 @@ +/* + Warnings: + + - You are about to drop the column `domain` on the `Tenant` table. All the data in the column will be lost. + - A unique constraint covering the columns `[email,logo,customerId]` on the table `Tenant` will be added. If there are existing duplicate values, this will fail. + +*/ +-- DropIndex +DROP INDEX "Tenant_email_domain_logo_customerId_key"; + +-- AlterTable +ALTER TABLE "Tenant" DROP COLUMN "domain"; + +-- CreateIndex +CREATE UNIQUE INDEX "Tenant_email_logo_customerId_key" ON "Tenant"("email", "logo", "customerId"); diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 3b8ba673f..1ac532d5b 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -13,7 +13,6 @@ model Tenant { email String plan Plan @default(free) company String - domain String? logo String? customerId String? isActive Boolean @default(false) @@ -23,7 +22,7 @@ model Tenant { tags Tag[] integrations Integrations? - @@unique([email, domain, logo, customerId]) + @@unique([email, logo, customerId]) } model User { diff --git a/src/actions/create-tenant/schema.ts b/src/actions/create-tenant/schema.ts index 04e643a03..3bfdb2d65 100644 --- a/src/actions/create-tenant/schema.ts +++ b/src/actions/create-tenant/schema.ts @@ -7,7 +7,6 @@ export const createTenantCompanySchema = z.object({ .trim() .min(1, { message: 'Company email is required' }) .email({ message: 'Invalid email' }), - domain: z.string().trim().nullable(), }); export const createTenantUserSchema = z.object({ diff --git a/src/actions/update-tenant/action.ts b/src/actions/update-tenant/action.ts index fdba43534..93ff88abc 100644 --- a/src/actions/update-tenant/action.ts +++ b/src/actions/update-tenant/action.ts @@ -13,13 +13,12 @@ import { updateTenantSchema } from './schema'; export const updateTenant = authActionClient .metadata({ actionName: 'updateTenant' }) .schema(updateTenantSchema) - .action(async ({ parsedInput: { company, id, email, domain } }) => { + .action(async ({ parsedInput: { company, id, email } }) => { await prisma.tenant.update({ where: { id }, data: { company, email, - domain: domain || '', }, }); revalidatePath(Routes.SITE.SETTINGS); diff --git a/src/actions/update-tenant/schema.ts b/src/actions/update-tenant/schema.ts index f4e9a0b8c..536cf8f81 100644 --- a/src/actions/update-tenant/schema.ts +++ b/src/actions/update-tenant/schema.ts @@ -7,6 +7,5 @@ export const updateTenantSchema = z.object({ .trim() .min(1, { message: 'Email is required' }) .email({ message: 'Invalid email' }), - domain: z.string().trim().nullable(), id: z.string().cuid2(), }); diff --git a/src/app/register/confirm/form.tsx b/src/app/register/confirm/form.tsx index f829acc87..b1baccc05 100644 --- a/src/app/register/confirm/form.tsx +++ b/src/app/register/confirm/form.tsx @@ -69,14 +69,6 @@ export default function Form() {

    Email

    {state.companyEmail}

    -
    -

    Domain

    -

    - {state.domain || 'No domain'} -

    -

    User

    diff --git a/src/app/register/form.tsx b/src/app/register/form.tsx index 18a67ce8c..968d82576 100644 --- a/src/app/register/form.tsx +++ b/src/app/register/form.tsx @@ -48,12 +48,6 @@ export default function Form() { value: 'companyEmail', type: 'email', }, - { - label: 'Domain', - value: 'domain', - type: 'text', - info: `Fill this field if you have a personalized domain name used for your users' email`, - }, ]; return ( diff --git a/src/modules/settings/general/Company.tsx b/src/modules/settings/general/Company.tsx index 9afa38e18..6914ad106 100644 --- a/src/modules/settings/general/Company.tsx +++ b/src/modules/settings/general/Company.tsx @@ -31,7 +31,6 @@ export function Company({ tenant }: Props) { defaultValues: { company: tenant.company, email: tenant.email, - domain: tenant.domain, id: tenant.id, }, }); @@ -52,11 +51,6 @@ export function Company({ tenant }: Props) { value: 'email', type: 'email', }, - { - label: 'Domain', - value: 'domain', - type: 'text', - }, ]; useEffect(() => { diff --git a/src/store/register.ts b/src/store/register.ts index 895a9f09a..63a73c12b 100644 --- a/src/store/register.ts +++ b/src/store/register.ts @@ -5,7 +5,6 @@ import type { RegisterInfo } from '@/types'; export const registerAtom = atomWithStorage('register-data', { company: '', companyEmail: '', - domain: null, email: '', plan: 'free', }); diff --git a/src/types/global.ts b/src/types/global.ts index 5f09cdbf3..ac446b0c5 100644 --- a/src/types/global.ts +++ b/src/types/global.ts @@ -31,11 +31,11 @@ export interface IUserUpdateFields extends IFields { } export interface ITenantCreateFields extends IFields { - value: 'company' | 'companyEmail' | 'domain'; + value: 'company' | 'companyEmail'; } export interface ITenantUpdateFields extends IFields { - value: 'company' | 'email' | 'domain'; + value: 'company' | 'email'; } export interface IIntegrations extends IFields { diff --git a/src/types/models/user.ts b/src/types/models/user.ts index 614513ee3..c9b1a1f38 100644 --- a/src/types/models/user.ts +++ b/src/types/models/user.ts @@ -10,7 +10,6 @@ export type Me = User & { export type RegisterInfo = { company: string; companyEmail: string; - domain?: string | null; email: string; customerId?: string; plan: 'free' | 'startup' | 'enterprise'; From 1b144817be70310ecb00baafa2445ec362580cd9 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sat, 29 Jun 2024 11:48:41 +0200 Subject: [PATCH 145/326] :bug: fix problems when creating tenant --- src/actions/create-tenant/action.ts | 8 ++++---- src/app/register/plan/form.tsx | 2 +- src/components/stepper/Stepper.tsx | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/actions/create-tenant/action.ts b/src/actions/create-tenant/action.ts index e61120ca0..73baac391 100644 --- a/src/actions/create-tenant/action.ts +++ b/src/actions/create-tenant/action.ts @@ -19,8 +19,9 @@ const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { export const createTenant = actionClient .metadata({ actionName: 'createTenant' }) .schema(createTenantSchema) - .action(async ({ parsedInput: { company, companyEmail, email, domain } }) => { - const tenantExists = await prisma.tenant.findUnique({ + .action(async ({ parsedInput: { company, companyEmail, email } }) => { + console.log(companyEmail, company, email); + const tenantExists = await prisma.tenant.findFirst({ where: { email: companyEmail }, }); if (tenantExists) { @@ -38,7 +39,6 @@ export const createTenant = actionClient data: { company, email: companyEmail, - domain, }, }); if (!tenant) { @@ -76,7 +76,7 @@ export const createTenant = actionClient throw new ActionError('There was a problem creating the customer'); } const updatedTenant = await prisma.tenant.update({ - where: { email: companyEmail }, + where: { email: companyEmail, id: tenant.id }, data: { customerId: customer.id, }, diff --git a/src/app/register/plan/form.tsx b/src/app/register/plan/form.tsx index d3a0408bd..792384c78 100644 --- a/src/app/register/plan/form.tsx +++ b/src/app/register/plan/form.tsx @@ -39,7 +39,7 @@ export default function Form() { const checkoutSession = await response.json(); if (response.ok) { await stripe?.redirectToCheckout({ - sessionId: checkoutSession.data.id, + sessionId: checkoutSession.id, }); } else { errorToast(checkoutSession.error); diff --git a/src/components/stepper/Stepper.tsx b/src/components/stepper/Stepper.tsx index 14f3e7821..733617dfb 100644 --- a/src/components/stepper/Stepper.tsx +++ b/src/components/stepper/Stepper.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { Fragment } from 'react'; import { BadgeCheck } from 'lucide-react'; @@ -13,8 +13,8 @@ export const Stepper = ({ steps, currentStep }: Props) => { return ( ); From 8a2b71a1e23a4235954d1f4ee34e25359c0eef87 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sat, 29 Jun 2024 20:29:04 +0200 Subject: [PATCH 146/326] :bug: fix question submit withAnswer not working --- src/actions/create-node/action.ts | 13 +++++-------- src/app/question/new/new.tsx | 8 +++++--- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/actions/create-node/action.ts b/src/actions/create-node/action.ts index 8a3b4061e..7d6b975da 100644 --- a/src/actions/create-node/action.ts +++ b/src/actions/create-node/action.ts @@ -57,7 +57,7 @@ export const createNode = authActionClient .schema(createNodeSchema) .action( async ({ - parsedInput: { text, tenantId, tags, integrations }, + parsedInput: { text, tenantId, tags, integrations, withAnswer }, ctx: { userId }, }) => { const duplicateQuestion = await prisma.node.findFirst({ @@ -73,7 +73,7 @@ export const createNode = authActionClient }; await slackNotification(slackBody); } - await prisma.node.create({ + const node = await prisma.node.create({ data: { tenant: { connect: { id: tenantId } }, question: { @@ -88,12 +88,9 @@ export const createNode = authActionClient }, }, }); - // if (withAnswer) { - // return { - // node, - // message: 'Question created successfully', - // }; - // } + if (withAnswer) { + redirect(`${Routes.SITE.ANSWER}?id=${node.id}`); + } revalidatePath(Routes.SITE.HOME); redirect(Routes.SITE.HOME); }, diff --git a/src/app/question/new/new.tsx b/src/app/question/new/new.tsx index e3395fc37..7a3951f73 100644 --- a/src/app/question/new/new.tsx +++ b/src/app/question/new/new.tsx @@ -54,8 +54,10 @@ export default function New({ me, tags, integrations }: Props) { resultToast(result?.serverError, 'Question created successfully'); }; - const onSubmitWithAnswer: SubmitHandler = (_data) => { - // const values = { ...data, withAnswer }; + const onSubmitWithAnswer: SubmitHandler = async (data) => { + const updatedData = { ...data, tags: selectedTags, withAnswer: true }; + const result = await createNode(updatedData); + resultToast(result?.serverError, 'Question created successfully'); }; useEffect(() => { @@ -110,7 +112,6 @@ export default function New({ me, tags, integrations }: Props) { style={{ fontVariant: 'small-caps' }} disabled={disabled} type="submit" - // onClick={handleSubmit(onSubmit)} > Submit @@ -121,6 +122,7 @@ export default function New({ me, tags, integrations }: Props) { className="lowercase" style={{ fontVariant: 'small-caps' }} disabled={disabled} + type="submit" onClick={handleSubmit(onSubmitWithAnswer)} > Answer From 9daec8ca413f7786296f0cea87ea6c1776f2781a Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sat, 29 Jun 2024 20:33:52 +0200 Subject: [PATCH 147/326] :construction: send email when adding a new user --- src/actions/create-user/action.ts | 16 +++++++++++++++- src/components/email/NewUser.tsx | 6 ++++++ src/components/email/index.ts | 1 + 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 src/components/email/NewUser.tsx diff --git a/src/actions/create-user/action.ts b/src/actions/create-user/action.ts index 96b11a5b5..d749e2945 100644 --- a/src/actions/create-user/action.ts +++ b/src/actions/create-user/action.ts @@ -1,14 +1,18 @@ 'use server'; import { revalidatePath } from 'next/cache'; +// import { Resend } from 'resend'; import { ActionError, authActionClient } from '@/lib/safe-actions'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; +// import { NewUserEmailTemplate } from '@/components'; import 'server-only'; import { createUserSchema } from './schema'; +// const resend = new Resend(process.env.RESEND_API_KEY); + export const createUser = authActionClient .metadata({ actionName: 'createUser' }) .schema(createUserSchema) @@ -30,13 +34,23 @@ export const createUser = authActionClient ) { throw new ActionError('You reached the maximum number of users'); } - await prisma.user.create({ + const newUser = await prisma.user.create({ data: { email, role, tenantId, }, }); + if (!newUser) { + throw new ActionError('User could not be created'); + } + // const { data: domains } = await resend.domains.list(); + // await resend.emails.send({ + // from: `noreply@${domains?.data[0].name}`, + // to: [email], + // subject: 'Welcome to FAQMaker', + // react: NewUserEmailTemplate(), + // }); revalidatePath(Routes.SITE.SETTINGS); return { message: 'User created successfully' }; }); diff --git a/src/components/email/NewUser.tsx b/src/components/email/NewUser.tsx new file mode 100644 index 000000000..d1ed9399e --- /dev/null +++ b/src/components/email/NewUser.tsx @@ -0,0 +1,6 @@ +export const NewUserEmailTemplate = () => ( +
    +

    You have now access to FAQMaker

    + Login +
    +); diff --git a/src/components/email/index.ts b/src/components/email/index.ts index 7eb55fd55..95fd743ad 100644 --- a/src/components/email/index.ts +++ b/src/components/email/index.ts @@ -1 +1,2 @@ export * from './Register'; +export * from './NewUser'; From e9fa2295b66011d0578e232c5d8fc2119a17e85c Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sat, 29 Jun 2024 20:37:51 +0200 Subject: [PATCH 148/326] :construction: work on connection with magic link --- src/actions/login/index.ts | 4 +- src/app/api/auth/[...nextauth]/route.ts | 57 ++++++++++--------- src/app/login/EmailForm.tsx | 75 +++++++++++++++++++++++++ src/app/login/page.tsx | 71 +---------------------- src/lib/index.ts | 1 + src/lib/resend.ts | 25 +++++++++ 6 files changed, 136 insertions(+), 97 deletions(-) create mode 100644 src/app/login/EmailForm.tsx create mode 100644 src/lib/resend.ts diff --git a/src/actions/login/index.ts b/src/actions/login/index.ts index 08390f347..0b59d3073 100644 --- a/src/actions/login/index.ts +++ b/src/actions/login/index.ts @@ -1,5 +1,7 @@ 'use server'; +import { signIn } from 'next-auth/react'; + import { successToast } from '@/components'; import 'server-only'; @@ -9,6 +11,6 @@ type EmailSignInData = { export async function emailSignIn(formData: FormData) { const data = Object.fromEntries(formData) as EmailSignInData; - // await signIn('resend', formData); + await signIn('email', data); successToast(`Link sent to ${data.email}`); } diff --git a/src/app/api/auth/[...nextauth]/route.ts b/src/app/api/auth/[...nextauth]/route.ts index be70b5970..419b7da62 100644 --- a/src/app/api/auth/[...nextauth]/route.ts +++ b/src/app/api/auth/[...nextauth]/route.ts @@ -2,12 +2,12 @@ import { PrismaAdapter } from '@next-auth/prisma-adapter'; import NextAuth from 'next-auth'; import GoogleProvider from 'next-auth/providers/google'; import EmailProvider from 'next-auth/providers/email'; -import nodemailer from 'nodemailer'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; import type { NextAuthOptions } from 'next-auth'; +import { sendVerificationRequest } from '@/lib'; export const authOptions: NextAuthOptions = { adapter: PrismaAdapter(prisma), @@ -35,6 +35,7 @@ export const authOptions: NextAuthOptions = { // }, // }, // from: process.env.EMAIL_FROM, + // sendVerificationRequest, // }), ], pages: { @@ -49,33 +50,33 @@ export const authOptions: NextAuthOptions = { const maybeUser = await prisma.user.findUnique({ where: { email: profile.email }, }); - if (!maybeUser) { - const domain = profile.email?.split('@')[1]; - const tenant = await prisma.tenant.findUnique({ where: { domain } }); - if (!tenant) return false; - const usersCount = await prisma.user.count({ - where: { tenantId: tenant.id }, - }); - if ( - (tenant.plan === 'free' && usersCount >= 5) || - (tenant.plan === 'startup' && usersCount >= 100) - ) { - return false; - } - const newUser = await prisma.user.create({ - data: { - name: profile.name, - email: profile.email, - image: profile.picture, - role: 'user', - tenant: { connect: { id: tenant.id } }, - }, - }); - if (!newUser) { - return false; - } - return true; - } + // if (!maybeUser) { + // const domain = profile.email?.split('@')[1]; + // const tenant = await prisma.tenant.findUnique({ where: { domain } }); + // if (!tenant) return false; + // const usersCount = await prisma.user.count({ + // where: { tenantId: tenant.id }, + // }); + // if ( + // (tenant.plan === 'free' && usersCount >= 5) || + // (tenant.plan === 'startup' && usersCount >= 100) + // ) { + // return false; + // } + // const newUser = await prisma.user.create({ + // data: { + // name: profile.name, + // email: profile.email, + // image: profile.picture, + // role: 'user', + // tenant: { connect: { id: tenant.id } }, + // }, + // }); + // if (!newUser) { + // return false; + // } + // return true; + // } if ( account.provider === 'google' && (!maybeUser.name || !maybeUser.image) diff --git a/src/app/login/EmailForm.tsx b/src/app/login/EmailForm.tsx new file mode 100644 index 000000000..0a89ffd13 --- /dev/null +++ b/src/app/login/EmailForm.tsx @@ -0,0 +1,75 @@ +'use client'; + +import { useEffect, useState } from 'react'; + +import { zodResolver } from '@hookform/resolvers/zod'; +import { AtSign } from 'lucide-react'; +import { useForm } from 'react-hook-form'; + +import { Button, Field, Input } from '@/components'; +import { userEmailSchema } from '@/lib/validations'; + +import type { SubmitHandler } from 'react-hook-form'; +import type { z } from 'zod'; + +type Schema = z.infer; + +export default function EmailForm() { + const [disabled, setDisabled] = useState(true); + + const { + register, + handleSubmit, + formState: { isSubmitting, isDirty, errors, isValid }, + } = useForm({ + resolver: zodResolver(userEmailSchema), + mode: 'onBlur', + defaultValues: { + email: '', + }, + }); + + const onSubmit: SubmitHandler = async (data) => { + const formData = new FormData(); + Object.keys(data).forEach((key) => { + formData.append(key, data[key]); + }); + // await emailSignIn(formData); + }; + + useEffect(() => { + setDisabled(isSubmitting || !isDirty || !isValid); + }, [isDirty, isSubmitting, isValid]); + return ( + +
    +
    + + } + type="email" + id="email" + placeholder="john.doe@email.com" + /> + +
    +
    + + + ); +} diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index cd29b8f7f..c4685a2d6 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -1,18 +1,9 @@ -'use client'; - -import { useEffect, useState } from 'react'; - -import { zodResolver } from '@hookform/resolvers/zod'; -import { AtSign } from 'lucide-react'; import Link from 'next/link'; -import { useForm } from 'react-hook-form'; -import { Button, Field, Input, LoginButton } from '@/components'; -import { userEmailSchema } from '@/lib/validations'; +import { LoginButton } from '@/components'; import { Routes } from '@/utils'; -import type { SubmitHandler } from 'react-hook-form'; -import type { z } from 'zod'; +import EmailForm from './EmailForm'; const loginErrors = { Signin: 'Try signing with a different account.', @@ -34,8 +25,6 @@ type ErrorProps = { error: string; }; -type Schema = z.infer; - const LoginError = ({ error }: ErrorProps) => { const errorMessage = error && (loginErrors[error] ?? loginErrors.default); return
    {errorMessage}
    ; @@ -43,31 +32,6 @@ const LoginError = ({ error }: ErrorProps) => { export default function Page({ searchParams }) { const { error, callbackUrl } = searchParams; - const [disabled, setDisabled] = useState(true); - - const { - register, - handleSubmit, - formState: { isSubmitting, isDirty, errors, isValid }, - } = useForm({ - resolver: zodResolver(userEmailSchema), - mode: 'onBlur', - defaultValues: { - email: '', - }, - }); - - const onSubmit: SubmitHandler = async (data) => { - const formData = new FormData(); - Object.keys(data).forEach((key) => { - formData.append(key, data[key]); - }); - // await emailSignIn(formData); - }; - - useEffect(() => { - setDisabled(isSubmitting || !isDirty || !isValid); - }, [isDirty, isSubmitting, isValid]); return (
    @@ -80,36 +44,7 @@ export default function Page({ searchParams }) {

    Use your associated account

    -
    -
    -
    - - } - type="email" - id="email" - placeholder="Email" - /> - -
    -
    - -
    +

    OR diff --git a/src/lib/index.ts b/src/lib/index.ts index a975e9c06..89b9126ef 100644 --- a/src/lib/index.ts +++ b/src/lib/index.ts @@ -1,2 +1,3 @@ export * from './SuspenseWrapper'; export * from './validations'; +export * from './resend'; diff --git a/src/lib/resend.ts b/src/lib/resend.ts new file mode 100644 index 000000000..f409cf965 --- /dev/null +++ b/src/lib/resend.ts @@ -0,0 +1,25 @@ +import { Resend } from 'resend'; + +import type { SendVerificationRequestParams } from 'next-auth/providers'; + +export const sendVerificationRequest = async ( + params: SendVerificationRequestParams, +) => { + const { + identifier: email, + url, + provider: { from }, + } = params; + try { + const resend = new Resend(process.env.RESEND_API_KEY!); + await resend.emails.send({ + from, + to: email, + subject: 'Login Link to your Account', + html: `

    Click the magic link below to sign in to your account:

    \ +

    Sign in

    `, + }); + } catch (error) { + console.log({ error }); + } +}; From 9b3634fe887ab56968df77cd21a1a99ef345dcac Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sat, 29 Jun 2024 20:38:54 +0200 Subject: [PATCH 149/326] :arrow_up: upgrade deps + add typescript eslint --- package.json | 5 +- pnpm-lock.yaml | 12021 ++++++++++++++++++++++++++--------------------- 2 files changed, 6732 insertions(+), 5294 deletions(-) diff --git a/package.json b/package.json index f114c00cf..89a36ebfa 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,7 @@ "next-remove-imports": "^1.0.12", "next-safe-action": "^7.0.2", "next-themes": "^0.2.1", - "nodemailer": "^6.9.13", + "nodemailer": "^6.9.14", "react": "18.2.0", "react-dom": "18.2.0", "react-dropzone": "^14.2.3", @@ -87,11 +87,12 @@ }, "devDependencies": { "@changesets/cli": "^2.27.1", - "@playwright/test": "^1.41.1", + "@playwright/test": "^1.45.0", "@swc-jotai/react-refresh": "^0.1.0", "@types/formidable": "^3.4.5", "@types/node": "^20.5.6", "@types/react": "^18.0.27", + "@typescript-eslint/eslint-plugin": "^7.14.1", "autoprefixer": "^10.4.16", "dotenv": "^16.4.5", "eslint": "8.57.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bab972db1..549d6e07f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,1109 +1,682 @@ -lockfileVersion: '6.0' +lockfileVersion: '9.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false -dependencies: - '@emoji-mart/data': - specifier: ^1.2.1 - version: 1.2.1 - '@emoji-mart/react': - specifier: ^1.1.1 - version: 1.1.1(emoji-mart@5.6.0)(react@18.2.0) - '@google-cloud/storage': - specifier: ^7.7.0 - version: 7.7.0 - '@hookform/resolvers': - specifier: ^3.3.4 - version: 3.3.4(react-hook-form@7.45.4) - '@next-auth/prisma-adapter': - specifier: ^1.0.7 - version: 1.0.7(@prisma/client@5.10.2)(next-auth@4.24.7) - '@prisma/client': - specifier: 5.10.2 - version: 5.10.2(prisma@5.10.2) - '@radix-ui/colors': - specifier: ^3.0.0 - version: 3.0.0 - '@radix-ui/react-avatar': - specifier: ^1.0.4 - version: 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-dialog': - specifier: ^1.0.5 - version: 1.0.5(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-dropdown-menu': - specifier: ^2.0.6 - version: 2.0.6(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-label': - specifier: ^2.0.2 - version: 2.0.2(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-popover': - specifier: ^1.1.1 - version: 1.1.1(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-select': - specifier: ^2.0.0 - version: 2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': - specifier: ^1.0.2 - version: 1.0.2(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-tabs': - specifier: ^1.0.4 - version: 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-tooltip': - specifier: ^1.0.7 - version: 1.0.7(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@sentry/nextjs': - specifier: ^7.102.1 - version: 7.102.1(next@14.2.4)(react@18.2.0)(webpack@5.89.0) - '@slack/webhook': - specifier: ^7.0.1 - version: 7.0.1 - '@stripe/stripe-js': - specifier: ^2.4.0 - version: 2.4.0 - '@uiw/react-color-sketch': - specifier: ^2.0.8 - version: 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) - '@uiw/react-markdown-preview': - specifier: ^5.0.6 - version: 5.0.6(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@uiw/react-md-editor': - specifier: ^4.0.3 - version: 4.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - class-variance-authority: - specifier: ^0.7.0 - version: 0.7.0 - clsx: - specifier: ^2.1.0 - version: 2.1.0 - emoji-mart: - specifier: ^5.6.0 - version: 5.6.0 - formidable: - specifier: ^3.5.1 - version: 3.5.1 - jotai: - specifier: ^2.6.4 - version: 2.6.4(@types/react@18.0.27)(react@18.2.0) - lucide-react: - specifier: ^0.344.0 - version: 0.344.0(react@18.2.0) - next: - specifier: 14.2.4 - version: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.41.1)(react-dom@18.2.0)(react@18.2.0) - next-auth: - specifier: ^4.24.7 - version: 4.24.7(next@14.2.4)(nodemailer@6.9.13)(react-dom@18.2.0)(react@18.2.0) - next-remove-imports: - specifier: ^1.0.12 - version: 1.0.12(webpack@5.89.0) - next-safe-action: - specifier: ^7.0.2 - version: 7.0.2(next@14.2.4)(react-dom@18.2.0)(react@18.2.0)(zod@3.22.4) - next-themes: - specifier: ^0.2.1 - version: 0.2.1(next@14.2.4)(react-dom@18.2.0)(react@18.2.0) - nodemailer: - specifier: ^6.9.13 - version: 6.9.13 - react: - specifier: 18.2.0 - version: 18.2.0 - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) - react-dropzone: - specifier: ^14.2.3 - version: 14.2.3(react@18.2.0) - react-error-boundary: - specifier: ^4.0.12 - version: 4.0.12(react@18.2.0) - react-hook-form: - specifier: ^7.45.4 - version: 7.45.4(react@18.2.0) - react-paginate: - specifier: ^8.2.0 - version: 8.2.0(react@18.2.0) - react-papaparse: - specifier: ^4.4.0 - version: 4.4.0 - rehype-sanitize: - specifier: ^6.0.0 - version: 6.0.0 - resend: - specifier: ^3.2.0 - version: 3.2.0 - slugify: - specifier: ^1.6.6 - version: 1.6.6 - sonner: - specifier: ^1.4.0 - version: 1.4.0(react-dom@18.2.0)(react@18.2.0) - stripe: - specifier: ^14.16.0 - version: 14.16.0 - tailwind-merge: - specifier: ^2.2.0 - version: 2.2.0 - tailwindcss-animate: - specifier: ^1.0.6 - version: 1.0.6(tailwindcss@3.4.1) - use-debounce: - specifier: ^10.0.0 - version: 10.0.0(react@18.2.0) - uuid: - specifier: ^9.0.1 - version: 9.0.1 - vaul: - specifier: ^0.9.0 - version: 0.9.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - wcag-contrast: - specifier: ^3.0.0 - version: 3.0.0 - zod: - specifier: ^3.22.4 - version: 3.22.4 - -devDependencies: - '@changesets/cli': - specifier: ^2.27.1 - version: 2.27.1 - '@playwright/test': - specifier: ^1.41.1 - version: 1.41.1 - '@swc-jotai/react-refresh': - specifier: ^0.1.0 - version: 0.1.0 - '@types/formidable': - specifier: ^3.4.5 - version: 3.4.5 - '@types/node': - specifier: ^20.5.6 - version: 20.5.6 - '@types/react': - specifier: ^18.0.27 - version: 18.0.27 - autoprefixer: - specifier: ^10.4.16 - version: 10.4.16(postcss@8.4.28) - dotenv: - specifier: ^16.4.5 - version: 16.4.5 - eslint: - specifier: 8.57.0 - version: 8.57.0 - eslint-config-airbnb: - specifier: ^19.0.4 - version: 19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.34.2)(eslint@8.57.0) - eslint-config-airbnb-typescript: - specifier: ^18.0.0 - version: 18.0.0(@typescript-eslint/eslint-plugin@7.12.0)(@typescript-eslint/parser@7.12.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0) - eslint-config-next: - specifier: 14.1.0 - version: 14.1.0(eslint@8.57.0)(typescript@5.3.3) - eslint-config-prettier: - specifier: ^9.0.0 - version: 9.0.0(eslint@8.57.0) - eslint-plugin-import: - specifier: ^2.29.1 - version: 2.29.1(@typescript-eslint/parser@7.12.0)(eslint@8.57.0) - eslint-plugin-jsx-a11y: - specifier: ^6.8.0 - version: 6.8.0(eslint@8.57.0) - eslint-plugin-playwright: - specifier: ^1.6.2 - version: 1.6.2(eslint@8.57.0) - eslint-plugin-prettier: - specifier: ^5.1.3 - version: 5.1.3(eslint-config-prettier@9.0.0)(eslint@8.57.0)(prettier@3.2.5) - eslint-plugin-react: - specifier: ^7.34.2 - version: 7.34.2(eslint@8.57.0) - eslint-plugin-react-hooks: - specifier: ^4.6.2 - version: 4.6.2(eslint@8.57.0) - eslint-plugin-tailwindcss: - specifier: ^3.17.3 - version: 3.17.3(tailwindcss@3.4.1) - eslint-plugin-unused-imports: - specifier: ^4.0.0 - version: 4.0.0(@typescript-eslint/eslint-plugin@7.12.0)(eslint@8.57.0) - husky: - specifier: ^9.0.11 - version: 9.0.11 - lint-staged: - specifier: ^15.0.2 - version: 15.0.2 - postcss: - specifier: ^8.4.28 - version: 8.4.28 - prettier: - specifier: ^3.2.5 - version: 3.2.5 - prettier-plugin-tailwindcss: - specifier: ^0.6.2 - version: 0.6.2(prettier@3.2.5) - prisma: - specifier: 5.10.2 - version: 5.10.2 - tailwindcss: - specifier: ^3.4.1 - version: 3.4.1(ts-node@10.9.1) - ts-node: - specifier: ^10.9.1 - version: 10.9.1(@types/node@20.5.6)(typescript@5.3.3) - typescript: - specifier: ^5.3.3 - version: 5.3.3 +importers: + + .: + dependencies: + '@emoji-mart/data': + specifier: ^1.2.1 + version: 1.2.1 + '@emoji-mart/react': + specifier: ^1.1.1 + version: 1.1.1(emoji-mart@5.6.0)(react@18.2.0) + '@google-cloud/storage': + specifier: ^7.7.0 + version: 7.7.0 + '@hookform/resolvers': + specifier: ^3.3.4 + version: 3.3.4(react-hook-form@7.45.4(react@18.2.0)) + '@next-auth/prisma-adapter': + specifier: ^1.0.7 + version: 1.0.7(@prisma/client@5.10.2(prisma@5.10.2))(next-auth@4.24.7(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) + '@prisma/client': + specifier: 5.10.2 + version: 5.10.2(prisma@5.10.2) + '@radix-ui/colors': + specifier: ^3.0.0 + version: 3.0.0 + '@radix-ui/react-avatar': + specifier: ^1.0.4 + version: 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-dialog': + specifier: ^1.0.5 + version: 1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-dropdown-menu': + specifier: ^2.0.6 + version: 2.0.6(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-label': + specifier: ^2.0.2 + version: 2.0.2(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-popover': + specifier: ^1.1.1 + version: 1.1.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-select': + specifier: ^2.0.0 + version: 2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': + specifier: ^1.0.2 + version: 1.0.2(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-tabs': + specifier: ^1.0.4 + version: 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-tooltip': + specifier: ^1.0.7 + version: 1.0.7(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@sentry/nextjs': + specifier: ^7.102.1 + version: 7.102.1(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0)(webpack@5.89.0) + '@slack/webhook': + specifier: ^7.0.1 + version: 7.0.1 + '@stripe/stripe-js': + specifier: ^2.4.0 + version: 2.4.0 + '@uiw/react-color-sketch': + specifier: ^2.0.8 + version: 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@uiw/react-markdown-preview': + specifier: ^5.0.6 + version: 5.0.6(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@uiw/react-md-editor': + specifier: ^4.0.3 + version: 4.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + class-variance-authority: + specifier: ^0.7.0 + version: 0.7.0 + clsx: + specifier: ^2.1.0 + version: 2.1.0 + emoji-mart: + specifier: ^5.6.0 + version: 5.6.0 + formidable: + specifier: ^3.5.1 + version: 3.5.1 + jotai: + specifier: ^2.6.4 + version: 2.6.4(@types/react@18.0.27)(react@18.2.0) + lucide-react: + specifier: ^0.344.0 + version: 0.344.0(react@18.2.0) + next: + specifier: 14.2.4 + version: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + next-auth: + specifier: ^4.24.7 + version: 4.24.7(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + next-remove-imports: + specifier: ^1.0.12 + version: 1.0.12(webpack@5.89.0) + next-safe-action: + specifier: ^7.0.2 + version: 7.0.2(@types/json-schema@7.0.15)(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(zod@3.22.4) + next-themes: + specifier: ^0.2.1 + version: 0.2.1(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + nodemailer: + specifier: ^6.9.14 + version: 6.9.14 + react: + specifier: 18.2.0 + version: 18.2.0 + react-dom: + specifier: 18.2.0 + version: 18.2.0(react@18.2.0) + react-dropzone: + specifier: ^14.2.3 + version: 14.2.3(react@18.2.0) + react-error-boundary: + specifier: ^4.0.12 + version: 4.0.12(react@18.2.0) + react-hook-form: + specifier: ^7.45.4 + version: 7.45.4(react@18.2.0) + react-paginate: + specifier: ^8.2.0 + version: 8.2.0(react@18.2.0) + react-papaparse: + specifier: ^4.4.0 + version: 4.4.0 + rehype-sanitize: + specifier: ^6.0.0 + version: 6.0.0 + resend: + specifier: ^3.2.0 + version: 3.2.0 + slugify: + specifier: ^1.6.6 + version: 1.6.6 + sonner: + specifier: ^1.4.0 + version: 1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + stripe: + specifier: ^14.16.0 + version: 14.16.0 + tailwind-merge: + specifier: ^2.2.0 + version: 2.2.0 + tailwindcss-animate: + specifier: ^1.0.6 + version: 1.0.6(tailwindcss@3.4.1(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3))) + use-debounce: + specifier: ^10.0.0 + version: 10.0.0(react@18.2.0) + uuid: + specifier: ^9.0.1 + version: 9.0.1 + vaul: + specifier: ^0.9.0 + version: 0.9.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + wcag-contrast: + specifier: ^3.0.0 + version: 3.0.0 + zod: + specifier: ^3.22.4 + version: 3.22.4 + devDependencies: + '@changesets/cli': + specifier: ^2.27.1 + version: 2.27.1 + '@playwright/test': + specifier: ^1.45.0 + version: 1.45.0 + '@swc-jotai/react-refresh': + specifier: ^0.1.0 + version: 0.1.0 + '@types/formidable': + specifier: ^3.4.5 + version: 3.4.5 + '@types/node': + specifier: ^20.5.6 + version: 20.5.6 + '@types/react': + specifier: ^18.0.27 + version: 18.0.27 + '@typescript-eslint/eslint-plugin': + specifier: ^7.14.1 + version: 7.14.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3) + autoprefixer: + specifier: ^10.4.16 + version: 10.4.16(postcss@8.4.28) + dotenv: + specifier: ^16.4.5 + version: 16.4.5 + eslint: + specifier: 8.57.0 + version: 8.57.0 + eslint-config-airbnb: + specifier: ^19.0.4 + version: 19.0.4(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.0))(eslint-plugin-react@7.34.2(eslint@8.57.0))(eslint@8.57.0) + eslint-config-airbnb-typescript: + specifier: ^18.0.0 + version: 18.0.0(@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3))(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint@8.57.0) + eslint-config-next: + specifier: 14.1.0 + version: 14.1.0(eslint@8.57.0)(typescript@5.3.3) + eslint-config-prettier: + specifier: ^9.0.0 + version: 9.0.0(eslint@8.57.0) + eslint-plugin-import: + specifier: ^2.29.1 + version: 2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0) + eslint-plugin-jsx-a11y: + specifier: ^6.8.0 + version: 6.8.0(eslint@8.57.0) + eslint-plugin-playwright: + specifier: ^1.6.2 + version: 1.6.2(eslint@8.57.0) + eslint-plugin-prettier: + specifier: ^5.1.3 + version: 5.1.3(@types/eslint@8.56.0)(eslint-config-prettier@9.0.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.2.5) + eslint-plugin-react: + specifier: ^7.34.2 + version: 7.34.2(eslint@8.57.0) + eslint-plugin-react-hooks: + specifier: ^4.6.2 + version: 4.6.2(eslint@8.57.0) + eslint-plugin-tailwindcss: + specifier: ^3.17.3 + version: 3.17.3(tailwindcss@3.4.1(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3))) + eslint-plugin-unused-imports: + specifier: ^4.0.0 + version: 4.0.0(@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0) + husky: + specifier: ^9.0.11 + version: 9.0.11 + lint-staged: + specifier: ^15.0.2 + version: 15.0.2 + postcss: + specifier: ^8.4.28 + version: 8.4.28 + prettier: + specifier: ^3.2.5 + version: 3.2.5 + prettier-plugin-tailwindcss: + specifier: ^0.6.2 + version: 0.6.2(prettier@3.2.5) + prisma: + specifier: 5.10.2 + version: 5.10.2 + tailwindcss: + specifier: ^3.4.1 + version: 3.4.1(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3)) + ts-node: + specifier: ^10.9.1 + version: 10.9.1(@types/node@20.5.6)(typescript@5.3.3) + typescript: + specifier: ^5.3.3 + version: 5.3.3 packages: - /@aashutoshrathi/word-wrap@1.2.6: + '@aashutoshrathi/word-wrap@1.2.6': resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} engines: {node: '>=0.10.0'} - dev: true - /@alloc/quick-lru@5.2.0: + '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} - /@ampproject/remapping@2.2.1: + '@ampproject/remapping@2.2.1': resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 - dev: false - /@babel/code-frame@7.22.13: + '@babel/code-frame@7.22.13': resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.22.13 - chalk: 2.4.2 - /@babel/compat-data@7.22.9: + '@babel/compat-data@7.22.9': resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} engines: {node: '>=6.9.0'} - dev: false - /@babel/core@7.22.17: + '@babel/core@7.22.17': resolution: {integrity: sha512-2EENLmhpwplDux5PSsZnSbnSkB3tZ6QTksgO25xwEL7pIDcNOMhF5v/s6RzwjMZzZzw9Ofc30gHv5ChCC8pifQ==} engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.22.15 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-module-transforms': 7.22.17(@babel/core@7.22.17) - '@babel/helpers': 7.22.15 - '@babel/parser': 7.22.16 - '@babel/template': 7.22.15 - '@babel/traverse': 7.22.17 - '@babel/types': 7.22.17 - convert-source-map: 1.9.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/generator@7.22.15: + '@babel/generator@7.22.15': resolution: {integrity: sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.17 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 - jsesc: 2.5.2 - dev: false - /@babel/helper-compilation-targets@7.22.15: + '@babel/helper-compilation-targets@7.22.15': resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/compat-data': 7.22.9 - '@babel/helper-validator-option': 7.22.15 - browserslist: 4.21.10 - lru-cache: 5.1.1 - semver: 6.3.1 - dev: false - /@babel/helper-environment-visitor@7.22.5: + '@babel/helper-environment-visitor@7.22.5': resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} engines: {node: '>=6.9.0'} - dev: false - /@babel/helper-function-name@7.22.5: + '@babel/helper-function-name@7.22.5': resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.15 - '@babel/types': 7.22.17 - dev: false - /@babel/helper-hoist-variables@7.22.5: + '@babel/helper-hoist-variables@7.22.5': resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.17 - dev: false - /@babel/helper-module-imports@7.22.15: + '@babel/helper-module-imports@7.22.15': resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.17 - dev: false - /@babel/helper-module-transforms@7.22.17(@babel/core@7.22.17): + '@babel/helper-module-transforms@7.22.17': resolution: {integrity: sha512-XouDDhQESrLHTpnBtCKExJdyY4gJCdrvH2Pyv8r8kovX2U8G0dRUOT45T9XlbLtuu9CLXP15eusnkprhoPV5iQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.17 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.15 - dev: false - /@babel/helper-simple-access@7.22.5: + '@babel/helper-simple-access@7.22.5': resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.17 - dev: false - /@babel/helper-split-export-declaration@7.22.6: + '@babel/helper-split-export-declaration@7.22.6': resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.17 - dev: false - /@babel/helper-string-parser@7.22.5: + '@babel/helper-string-parser@7.22.5': resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} - dev: false - /@babel/helper-validator-identifier@7.22.15: + '@babel/helper-validator-identifier@7.22.15': resolution: {integrity: sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.22.15: + '@babel/helper-validator-option@7.22.15': resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} engines: {node: '>=6.9.0'} - dev: false - /@babel/helpers@7.22.15: + '@babel/helpers@7.22.15': resolution: {integrity: sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.15 - '@babel/traverse': 7.22.17 - '@babel/types': 7.22.17 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/highlight@7.22.13: + '@babel/highlight@7.22.13': resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.22.15 - chalk: 2.4.2 - js-tokens: 4.0.0 - /@babel/parser@7.22.16: + '@babel/parser@7.22.16': resolution: {integrity: sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==} engines: {node: '>=6.0.0'} hasBin: true - dependencies: - '@babel/types': 7.22.17 - dev: false - /@babel/runtime@7.22.11: + '@babel/runtime@7.22.11': resolution: {integrity: sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA==} engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.1 - dev: false - /@babel/runtime@7.23.6: + '@babel/runtime@7.23.6': resolution: {integrity: sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==} engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.1 - dev: false - /@babel/runtime@7.23.7: + '@babel/runtime@7.23.7': resolution: {integrity: sha512-w06OXVOFso7LcbzMiDGt+3X7Rh7Ho8MmgPoWU3rarH+8upf+wSU/grlGbWzQyr3DkdN6ZeuMFjpdwW0Q+HxobA==} engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.1 - /@babel/template@7.22.15: + '@babel/template@7.22.15': resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.22.13 - '@babel/parser': 7.22.16 - '@babel/types': 7.22.17 - dev: false - /@babel/traverse@7.22.17: + '@babel/traverse@7.22.17': resolution: {integrity: sha512-xK4Uwm0JnAMvxYZxOVecss85WxTEIbTa7bnGyf/+EgCL5Zt3U7htUpEOWv9detPlamGKuRzCqw74xVglDWpPdg==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.22.15 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.22.16 - '@babel/types': 7.22.17 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/types@7.22.17: + '@babel/types@7.22.17': resolution: {integrity: sha512-YSQPHLFtQNE5xN9tHuZnzu8vPr61wVTBZdfv1meex1NBosa4iT05k/Jw06ddJugi4bk7The/oSwQGFcksmEJQg==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.15 - to-fast-properties: 2.0.0 - dev: false - /@changesets/apply-release-plan@7.0.0: + '@changesets/apply-release-plan@7.0.0': resolution: {integrity: sha512-vfi69JR416qC9hWmFGSxj7N6wA5J222XNBmezSVATPWDVPIF7gkd4d8CpbEbXmRWbVrkoli3oerGS6dcL/BGsQ==} - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/config': 3.0.0 - '@changesets/get-version-range-type': 0.4.0 - '@changesets/git': 3.0.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - detect-indent: 6.1.0 - fs-extra: 7.0.1 - lodash.startcase: 4.4.0 - outdent: 0.5.0 - prettier: 2.8.8 - resolve-from: 5.0.0 - semver: 7.5.4 - dev: true - /@changesets/assemble-release-plan@6.0.0: + '@changesets/assemble-release-plan@6.0.0': resolution: {integrity: sha512-4QG7NuisAjisbW4hkLCmGW2lRYdPrKzro+fCtZaILX+3zdUELSvYjpL4GTv0E4aM9Mef3PuIQp89VmHJ4y2bfw==} - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.0.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - semver: 7.5.4 - dev: true - /@changesets/changelog-git@0.2.0: + '@changesets/changelog-git@0.2.0': resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==} - dependencies: - '@changesets/types': 6.0.0 - dev: true - /@changesets/cli@2.27.1: + '@changesets/cli@2.27.1': resolution: {integrity: sha512-iJ91xlvRnnrJnELTp4eJJEOPjgpF3NOh4qeQehM6Ugiz9gJPRZ2t+TsXun6E3AMN4hScZKjqVXl0TX+C7AB3ZQ==} hasBin: true - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/apply-release-plan': 7.0.0 - '@changesets/assemble-release-plan': 6.0.0 - '@changesets/changelog-git': 0.2.0 - '@changesets/config': 3.0.0 - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.0.0 - '@changesets/get-release-plan': 4.0.0 - '@changesets/git': 3.0.0 - '@changesets/logger': 0.1.0 - '@changesets/pre': 2.0.0 - '@changesets/read': 0.6.0 - '@changesets/types': 6.0.0 - '@changesets/write': 0.3.0 - '@manypkg/get-packages': 1.1.3 - '@types/semver': 7.5.1 - ansi-colors: 4.1.3 - chalk: 2.4.2 - ci-info: 3.8.0 - enquirer: 2.4.1 - external-editor: 3.1.0 - fs-extra: 7.0.1 - human-id: 1.0.2 - meow: 6.1.1 - outdent: 0.5.0 - p-limit: 2.3.0 - preferred-pm: 3.0.3 - resolve-from: 5.0.0 - semver: 7.5.4 - spawndamnit: 2.0.0 - term-size: 2.2.1 - tty-table: 4.2.1 - dev: true - /@changesets/config@3.0.0: + '@changesets/config@3.0.0': resolution: {integrity: sha512-o/rwLNnAo/+j9Yvw9mkBQOZySDYyOr/q+wptRLcAVGlU6djOeP9v1nlalbL9MFsobuBVQbZCTp+dIzdq+CLQUA==} - dependencies: - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.0.0 - '@changesets/logger': 0.1.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - fs-extra: 7.0.1 - micromatch: 4.0.5 - dev: true - /@changesets/errors@0.2.0: + '@changesets/errors@0.2.0': resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} - dependencies: - extendable-error: 0.1.7 - dev: true - /@changesets/get-dependents-graph@2.0.0: + '@changesets/get-dependents-graph@2.0.0': resolution: {integrity: sha512-cafUXponivK4vBgZ3yLu944mTvam06XEn2IZGjjKc0antpenkYANXiiE6GExV/yKdsCnE8dXVZ25yGqLYZmScA==} - dependencies: - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - chalk: 2.4.2 - fs-extra: 7.0.1 - semver: 7.5.4 - dev: true - /@changesets/get-release-plan@4.0.0: + '@changesets/get-release-plan@4.0.0': resolution: {integrity: sha512-9L9xCUeD/Tb6L/oKmpm8nyzsOzhdNBBbt/ZNcjynbHC07WW4E1eX8NMGC5g5SbM5z/V+MOrYsJ4lRW41GCbg3w==} - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/assemble-release-plan': 6.0.0 - '@changesets/config': 3.0.0 - '@changesets/pre': 2.0.0 - '@changesets/read': 0.6.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - dev: true - /@changesets/get-version-range-type@0.4.0: + '@changesets/get-version-range-type@0.4.0': resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} - dev: true - /@changesets/git@3.0.0: + '@changesets/git@3.0.0': resolution: {integrity: sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==} - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/errors': 0.2.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - is-subdir: 1.2.0 - micromatch: 4.0.5 - spawndamnit: 2.0.0 - dev: true - /@changesets/logger@0.1.0: + '@changesets/logger@0.1.0': resolution: {integrity: sha512-pBrJm4CQm9VqFVwWnSqKEfsS2ESnwqwH+xR7jETxIErZcfd1u2zBSqrHbRHR7xjhSgep9x2PSKFKY//FAshA3g==} - dependencies: - chalk: 2.4.2 - dev: true - /@changesets/parse@0.4.0: + '@changesets/parse@0.4.0': resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==} - dependencies: - '@changesets/types': 6.0.0 - js-yaml: 3.14.1 - dev: true - /@changesets/pre@2.0.0: + '@changesets/pre@2.0.0': resolution: {integrity: sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==} - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/errors': 0.2.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - fs-extra: 7.0.1 - dev: true - /@changesets/read@0.6.0: + '@changesets/read@0.6.0': resolution: {integrity: sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==} - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/git': 3.0.0 - '@changesets/logger': 0.1.0 - '@changesets/parse': 0.4.0 - '@changesets/types': 6.0.0 - chalk: 2.4.2 - fs-extra: 7.0.1 - p-filter: 2.1.0 - dev: true - /@changesets/types@4.1.0: + '@changesets/types@4.1.0': resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} - dev: true - /@changesets/types@6.0.0: + '@changesets/types@6.0.0': resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==} - dev: true - /@changesets/write@0.3.0: + '@changesets/write@0.3.0': resolution: {integrity: sha512-slGLb21fxZVUYbyea+94uFiD6ntQW0M2hIKNznFizDhZPDgn2c/fv1UzzlW43RVzh1BEDuIqW6hzlJ1OflNmcw==} - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/types': 6.0.0 - fs-extra: 7.0.1 - human-id: 1.0.2 - prettier: 2.8.8 - dev: true - /@cspotcode/source-map-support@0.8.1: + '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - /@emoji-mart/data@1.2.1: + '@emoji-mart/data@1.2.1': resolution: {integrity: sha512-no2pQMWiBy6gpBEiqGeU77/bFejDqUTRY7KX+0+iur13op3bqUsXdnwoZs6Xb1zbv0gAj5VvS1PWoUUckSr5Dw==} - dev: false - /@emoji-mart/react@1.1.1(emoji-mart@5.6.0)(react@18.2.0): + '@emoji-mart/react@1.1.1': resolution: {integrity: sha512-NMlFNeWgv1//uPsvLxvGQoIerPuVdXwK/EUek8OOkJ6wVOWPUizRBJU0hDqWZCOROVpfBgCemaC3m6jDOXi03g==} peerDependencies: emoji-mart: ^5.2 react: ^16.8 || ^17 || ^18 - dependencies: - emoji-mart: 5.6.0 - react: 18.2.0 - dev: false - /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): + '@eslint-community/eslint-utils@4.4.0': resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 8.57.0 - eslint-visitor-keys: 3.4.3 - dev: true - /@eslint-community/regexpp@4.10.1: - resolution: {integrity: sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==} + '@eslint-community/regexpp@4.11.0': + resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: true - /@eslint-community/regexpp@4.8.0: + '@eslint-community/regexpp@4.8.0': resolution: {integrity: sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: true - /@eslint/eslintrc@2.1.4: + '@eslint/eslintrc@2.1.4': resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 9.6.1 - globals: 13.21.0 - ignore: 5.2.4 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - /@eslint/js@8.57.0: + '@eslint/js@8.57.0': resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - /@floating-ui/core@1.4.1: + '@floating-ui/core@1.4.1': resolution: {integrity: sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ==} - dependencies: - '@floating-ui/utils': 0.1.1 - dev: false - /@floating-ui/dom@1.5.1: + '@floating-ui/dom@1.5.1': resolution: {integrity: sha512-KwvVcPSXg6mQygvA1TjbN/gh///36kKtllIF8SUm0qpFj8+rvYrpvlYdL1JoA71SHpDqgSSdGOSoQ0Mp3uY5aw==} - dependencies: - '@floating-ui/core': 1.4.1 - '@floating-ui/utils': 0.1.1 - dev: false - /@floating-ui/react-dom@2.0.2(react-dom@18.2.0)(react@18.2.0): + '@floating-ui/react-dom@2.0.2': resolution: {integrity: sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' - dependencies: - '@floating-ui/dom': 1.5.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@floating-ui/utils@0.1.1: + '@floating-ui/utils@0.1.1': resolution: {integrity: sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw==} - dev: false - /@google-cloud/paginator@5.0.0: + '@google-cloud/paginator@5.0.0': resolution: {integrity: sha512-87aeg6QQcEPxGCOthnpUjvw4xAZ57G7pL8FS0C4e/81fr3FjkpUpibf1s2v5XGyGhUVGF4Jfg7yEcxqn2iUw1w==} engines: {node: '>=14.0.0'} - dependencies: - arrify: 2.0.1 - extend: 3.0.2 - dev: false - /@google-cloud/projectify@4.0.0: + '@google-cloud/projectify@4.0.0': resolution: {integrity: sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==} engines: {node: '>=14.0.0'} - dev: false - /@google-cloud/promisify@4.0.0: + '@google-cloud/promisify@4.0.0': resolution: {integrity: sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==} engines: {node: '>=14'} - dev: false - /@google-cloud/storage@7.7.0: + '@google-cloud/storage@7.7.0': resolution: {integrity: sha512-EMCEY+6JiIkx7Dt8NXVGGjy1vRdSGdHkoqZoqjJw7cEBkT7ZkX0c7puedfn1MamnzW5SX4xoa2jVq5u7OWBmkQ==} engines: {node: '>=14'} - dependencies: - '@google-cloud/paginator': 5.0.0 - '@google-cloud/projectify': 4.0.0 - '@google-cloud/promisify': 4.0.0 - abort-controller: 3.0.0 - async-retry: 1.3.3 - compressible: 2.0.18 - duplexify: 4.1.2 - ent: 2.2.0 - fast-xml-parser: 4.3.4 - gaxios: 6.2.0 - google-auth-library: 9.6.3 - mime: 3.0.0 - mime-types: 2.1.35 - p-limit: 3.1.0 - retry-request: 7.0.2 - teeny-request: 9.0.0 - uuid: 8.3.2 - transitivePeerDependencies: - - encoding - - supports-color - dev: false - /@hookform/resolvers@3.3.4(react-hook-form@7.45.4): + '@hookform/resolvers@3.3.4': resolution: {integrity: sha512-o5cgpGOuJYrd+iMKvkttOclgwRW86EsWJZZRC23prf0uU2i48Htq4PuT73AVb9ionFyZrwYEITuOFGF+BydEtQ==} peerDependencies: react-hook-form: ^7.0.0 - dependencies: - react-hook-form: 7.45.4(react@18.2.0) - dev: false - /@humanwhocodes/config-array@0.11.14: + '@humanwhocodes/config-array@0.11.14': resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} - dependencies: - '@humanwhocodes/object-schema': 2.0.2 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - /@humanwhocodes/module-importer@1.0.1: + '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - dev: true - /@humanwhocodes/object-schema@2.0.2: + '@humanwhocodes/object-schema@2.0.2': resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} - dev: true - /@isaacs/cliui@8.0.2: + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} - dependencies: - string-width: 5.1.2 - string-width-cjs: /string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: /strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: /wrap-ansi@7.0.0 - /@jridgewell/gen-mapping@0.3.3: + '@jridgewell/gen-mapping@0.3.3': resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.20 - /@jridgewell/resolve-uri@3.1.1: + '@jridgewell/resolve-uri@3.1.1': resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} - /@jridgewell/set-array@1.1.2: + '@jridgewell/set-array@1.1.2': resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} - /@jridgewell/source-map@0.3.5: + '@jridgewell/source-map@0.3.5': resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 - dev: false - /@jridgewell/sourcemap-codec@1.4.15: + '@jridgewell/sourcemap-codec@1.4.15': resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - /@jridgewell/trace-mapping@0.3.20: + '@jridgewell/trace-mapping@0.3.20': resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 - /@jridgewell/trace-mapping@0.3.9: + '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 - /@manypkg/find-root@1.1.0: + '@manypkg/find-root@1.1.0': resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} - dependencies: - '@babel/runtime': 7.23.7 - '@types/node': 12.20.55 - find-up: 4.1.0 - fs-extra: 8.1.0 - dev: true - /@manypkg/get-packages@1.1.3: + '@manypkg/get-packages@1.1.3': resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/types': 4.1.0 - '@manypkg/find-root': 1.1.0 - fs-extra: 8.1.0 - globby: 11.1.0 - read-yaml-file: 1.1.0 - dev: true - /@next-auth/prisma-adapter@1.0.7(@prisma/client@5.10.2)(next-auth@4.24.7): + '@next-auth/prisma-adapter@1.0.7': resolution: {integrity: sha512-Cdko4KfcmKjsyHFrWwZ//lfLUbcLqlyFqjd/nYE2m3aZ7tjMNUjpks47iw7NTCnXf+5UWz5Ypyt1dSs1EP5QJw==} peerDependencies: '@prisma/client': '>=2.26.0 || >=3' next-auth: ^4 - dependencies: - '@prisma/client': 5.10.2(prisma@5.10.2) - next-auth: 4.24.7(next@14.2.4)(nodemailer@6.9.13)(react-dom@18.2.0)(react@18.2.0) - dev: false - /@next/env@14.2.4: + '@next/env@14.2.4': resolution: {integrity: sha512-3EtkY5VDkuV2+lNmKlbkibIJxcO4oIHEhBWne6PaAp+76J9KoSsGvNikp6ivzAT8dhhBMYrm6op2pS1ApG0Hzg==} - dev: false - /@next/eslint-plugin-next@14.1.0: + '@next/eslint-plugin-next@14.1.0': resolution: {integrity: sha512-x4FavbNEeXx/baD/zC/SdrvkjSby8nBn8KcCREqk6UuwvwoAPZmaV8TFCAuo/cpovBRTIY67mHhe86MQQm/68Q==} - dependencies: - glob: 10.3.10 - dev: true - /@next/swc-darwin-arm64@14.2.4: + '@next/swc-darwin-arm64@14.2.4': resolution: {integrity: sha512-AH3mO4JlFUqsYcwFUHb1wAKlebHU/Hv2u2kb1pAuRanDZ7pD/A/KPD98RHZmwsJpdHQwfEc/06mgpSzwrJYnNg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - requiresBuild: true - dev: false - optional: true - /@next/swc-darwin-x64@14.2.4: + '@next/swc-darwin-x64@14.2.4': resolution: {integrity: sha512-QVadW73sWIO6E2VroyUjuAxhWLZWEpiFqHdZdoQ/AMpN9YWGuHV8t2rChr0ahy+irKX5mlDU7OY68k3n4tAZTg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - requiresBuild: true - dev: false - optional: true - /@next/swc-linux-arm64-gnu@14.2.4: + '@next/swc-linux-arm64-gnu@14.2.4': resolution: {integrity: sha512-KT6GUrb3oyCfcfJ+WliXuJnD6pCpZiosx2X3k66HLR+DMoilRb76LpWPGb4tZprawTtcnyrv75ElD6VncVamUQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@next/swc-linux-arm64-musl@14.2.4: + '@next/swc-linux-arm64-musl@14.2.4': resolution: {integrity: sha512-Alv8/XGSs/ytwQcbCHwze1HmiIkIVhDHYLjczSVrf0Wi2MvKn/blt7+S6FJitj3yTlMwMxII1gIJ9WepI4aZ/A==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@next/swc-linux-x64-gnu@14.2.4: + '@next/swc-linux-x64-gnu@14.2.4': resolution: {integrity: sha512-ze0ShQDBPCqxLImzw4sCdfnB3lRmN3qGMB2GWDRlq5Wqy4G36pxtNOo2usu/Nm9+V2Rh/QQnrRc2l94kYFXO6Q==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@next/swc-linux-x64-musl@14.2.4: + '@next/swc-linux-x64-musl@14.2.4': resolution: {integrity: sha512-8dwC0UJoc6fC7PX70csdaznVMNr16hQrTDAMPvLPloazlcaWfdPogq+UpZX6Drqb1OBlwowz8iG7WR0Tzk/diQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@next/swc-win32-arm64-msvc@14.2.4: + '@next/swc-win32-arm64-msvc@14.2.4': resolution: {integrity: sha512-jxyg67NbEWkDyvM+O8UDbPAyYRZqGLQDTPwvrBBeOSyVWW/jFQkQKQ70JDqDSYg1ZDdl+E3nkbFbq8xM8E9x8A==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - requiresBuild: true - dev: false - optional: true - /@next/swc-win32-ia32-msvc@14.2.4: + '@next/swc-win32-ia32-msvc@14.2.4': resolution: {integrity: sha512-twrmN753hjXRdcrZmZttb/m5xaCBFa48Dt3FbeEItpJArxriYDunWxJn+QFXdJ3hPkm4u7CKxncVvnmgQMY1ag==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] - requiresBuild: true - dev: false - optional: true - /@next/swc-win32-x64-msvc@14.2.4: + '@next/swc-win32-x64-msvc@14.2.4': resolution: {integrity: sha512-tkLrjBzqFTP8DVrAAQmZelEahfR9OxWpFR++vAI9FBhCiIxtwHwBHC23SBHCTURBtwB4kc/x44imVOnkKGNVGg==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - requiresBuild: true - dev: false - optional: true - /@nodelib/fs.scandir@2.1.5: + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - /@nodelib/fs.stat@2.0.5: + '@nodelib/fs.stat@2.0.5': resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} - /@nodelib/fs.walk@1.2.8: + '@nodelib/fs.walk@1.2.8': resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 - /@one-ini/wasm@0.1.1: + '@one-ini/wasm@0.1.1': resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} - dev: false - /@panva/hkdf@1.1.1: + '@panva/hkdf@1.1.1': resolution: {integrity: sha512-dhPeilub1NuIG0X5Kvhh9lH4iW3ZsHlnzwgwbOlgwQ2wG1IqFzsgHqmKPk3WzsdWAeaxKJxgM0+W433RmN45GA==} - dev: false - /@pkgjs/parseargs@0.11.0: + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - requiresBuild: true - optional: true - /@pkgr/core@0.1.1: + '@pkgr/core@0.1.1': resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - dev: true - /@playwright/test@1.41.1: - resolution: {integrity: sha512-9g8EWTjiQ9yFBXc6HjCWe41msLpxEX0KhmfmPl9RPLJdfzL4F0lg2BdJ91O9azFdl11y1pmpwdjBiSxvqc+btw==} - engines: {node: '>=16'} + '@playwright/test@1.45.0': + resolution: {integrity: sha512-TVYsfMlGAaxeUllNkywbwek67Ncf8FRGn8ZlRdO291OL3NjG9oMbfVhyP82HQF0CZLMrYsvesqoUekxdWuF9Qw==} + engines: {node: '>=18'} hasBin: true - dependencies: - playwright: 1.41.1 - /@prisma/client@5.10.2(prisma@5.10.2): + '@prisma/client@5.10.2': resolution: {integrity: sha512-ef49hzB2yJZCvM5gFHMxSFL9KYrIP9udpT5rYo0CsHD4P9IKj473MbhU1gjKKftiwWBTIyrt9jukprzZXazyag==} engines: {node: '>=16.13'} - requiresBuild: true peerDependencies: prisma: '*' peerDependenciesMeta: prisma: optional: true - dependencies: - prisma: 5.10.2 - dev: false - /@prisma/debug@5.10.2: + '@prisma/debug@5.10.2': resolution: {integrity: sha512-bkBOmH9dpEBbMKFJj8V+Zp8IZHIBjy3fSyhLhxj4FmKGb/UBSt9doyfA6k1UeUREsMJft7xgPYBbHSOYBr8XCA==} - /@prisma/engines-version@5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9: + '@prisma/engines-version@5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9': resolution: {integrity: sha512-uCy/++3Jx/O3ufM+qv2H1L4tOemTNqcP/gyEVOlZqTpBvYJUe0tWtW0y3o2Ueq04mll4aM5X3f6ugQftOSLdFQ==} - /@prisma/engines@5.10.2: + '@prisma/engines@5.10.2': resolution: {integrity: sha512-HkSJvix6PW8YqEEt3zHfCYYJY69CXsNdhU+wna+4Y7EZ+AwzeupMnUThmvaDA7uqswiHkgm5/SZ6/4CStjaGmw==} - requiresBuild: true - dependencies: - '@prisma/debug': 5.10.2 - '@prisma/engines-version': 5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9 - '@prisma/fetch-engine': 5.10.2 - '@prisma/get-platform': 5.10.2 - /@prisma/fetch-engine@5.10.2: + '@prisma/fetch-engine@5.10.2': resolution: {integrity: sha512-dSmXcqSt6DpTmMaLQ9K8ZKzVAMH3qwGCmYEZr/uVnzVhxRJ1EbT/w2MMwIdBNq1zT69Rvh0h75WMIi0mrIw7Hg==} - dependencies: - '@prisma/debug': 5.10.2 - '@prisma/engines-version': 5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9 - '@prisma/get-platform': 5.10.2 - /@prisma/get-platform@5.10.2: + '@prisma/get-platform@5.10.2': resolution: {integrity: sha512-nqXP6vHiY2PIsebBAuDeWiUYg8h8mfjBckHh6Jezuwej0QJNnjDiOq30uesmg+JXxGk99nqyG3B7wpcOODzXvg==} - dependencies: - '@prisma/debug': 5.10.2 - /@radix-ui/colors@3.0.0: + '@radix-ui/colors@3.0.0': resolution: {integrity: sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg==} - dev: false - /@radix-ui/number@1.0.1: + '@radix-ui/number@1.0.1': resolution: {integrity: sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==} - dependencies: - '@babel/runtime': 7.23.7 - dev: false - /@radix-ui/primitive@1.0.1: + '@radix-ui/primitive@1.0.1': resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} - dependencies: - '@babel/runtime': 7.23.7 - dev: false - /@radix-ui/primitive@1.1.0: + '@radix-ui/primitive@1.1.0': resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} - dev: false - /@radix-ui/react-arrow@1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-arrow@1.0.3': resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} peerDependencies: '@types/react': '*' @@ -1115,15 +688,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-arrow@1.1.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-arrow@1.1.0': resolution: {integrity: sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==} peerDependencies: '@types/react': '*' @@ -1135,14 +701,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-avatar@1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-avatar@1.0.4': resolution: {integrity: sha512-kVK2K7ZD3wwj3qhle0ElXhOjbezIgyl2hVvgwfIdexL3rN6zJmy5AqqIf+D31lxVppdzV8CjAfZ6PklkmInZLw==} peerDependencies: '@types/react': '*' @@ -1154,18 +714,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-collection@1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-collection@1.0.3': resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} peerDependencies: '@types/react': '*' @@ -1177,18 +727,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-compose-refs@1.0.1(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-compose-refs@1.0.1': resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} peerDependencies: '@types/react': '*' @@ -1196,13 +736,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-compose-refs@1.1.0(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-compose-refs@1.1.0': resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} peerDependencies: '@types/react': '*' @@ -1210,12 +745,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-context@1.0.1(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-context@1.0.1': resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} peerDependencies: '@types/react': '*' @@ -1223,13 +754,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-context@1.1.0(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-context@1.1.0': resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==} peerDependencies: '@types/react': '*' @@ -1237,12 +763,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-dialog@1.0.5(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-dialog@1.0.5': resolution: {integrity: sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==} peerDependencies: '@types/react': '*' @@ -1254,28 +776,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - aria-hidden: 1.2.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.0.27)(react@18.2.0) - dev: false - /@radix-ui/react-direction@1.0.1(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-direction@1.0.1': resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} peerDependencies: '@types/react': '*' @@ -1283,13 +785,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-dismissable-layer@1.0.5(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-dismissable-layer@1.0.5': resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} peerDependencies: '@types/react': '*' @@ -1301,19 +798,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-dismissable-layer@1.1.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-dismissable-layer@1.1.0': resolution: {integrity: sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==} peerDependencies: '@types/react': '*' @@ -1325,18 +811,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-dropdown-menu@2.0.6(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-dropdown-menu@2.0.6': resolution: {integrity: sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==} peerDependencies: '@types/react': '*' @@ -1348,21 +824,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-menu': 2.0.6(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-focus-guards@1.0.1(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-focus-guards@1.0.1': resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} peerDependencies: '@types/react': '*' @@ -1370,13 +833,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-focus-guards@1.1.0(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-focus-guards@1.1.0': resolution: {integrity: sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==} peerDependencies: '@types/react': '*' @@ -1384,12 +842,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-focus-scope@1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-focus-scope@1.0.4': resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} peerDependencies: '@types/react': '*' @@ -1401,17 +855,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-focus-scope@1.1.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-focus-scope@1.1.0': resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==} peerDependencies: '@types/react': '*' @@ -1423,16 +868,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-id@1.0.1(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-id@1.0.1': resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} peerDependencies: '@types/react': '*' @@ -1440,14 +877,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-id@1.1.0(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-id@1.1.0': resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} peerDependencies: '@types/react': '*' @@ -1455,13 +886,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-label@2.0.2(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-label@2.0.2': resolution: {integrity: sha512-N5ehvlM7qoTLx7nWPodsPYPgMzA5WM8zZChQg8nyFJKnDO5WHdba1vv5/H6IO5LtJMfD2Q3wh1qHFGNtK0w3bQ==} peerDependencies: '@types/react': '*' @@ -1473,15 +899,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-menu@2.0.6(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-menu@2.0.6': resolution: {integrity: sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==} peerDependencies: '@types/react': '*' @@ -1493,32 +912,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - aria-hidden: 1.2.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.0.27)(react@18.2.0) - dev: false - /@radix-ui/react-popover@1.1.1(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-popover@1.1.1': resolution: {integrity: sha512-3y1A3isulwnWhvTTwmIreiB8CF4L+qRjZnK1wYLO7pplddzXKby/GnZ2M7OZY3qgnl6p9AodUIHRYGXNah8Y7g==} peerDependencies: '@types/react': '*' @@ -1530,28 +925,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.1.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.1.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-popper': 1.2.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.1.1(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.1.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - aria-hidden: 1.2.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.7(@types/react@18.0.27)(react@18.2.0) - dev: false - /@radix-ui/react-popper@1.1.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-popper@1.1.3': resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==} peerDependencies: '@types/react': '*' @@ -1563,24 +938,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@floating-ui/react-dom': 2.0.2(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-arrow': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-rect': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/rect': 1.0.1 - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-popper@1.2.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-popper@1.2.0': resolution: {integrity: sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==} peerDependencies: '@types/react': '*' @@ -1592,23 +951,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@floating-ui/react-dom': 2.0.2(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-arrow': 1.1.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-rect': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-size': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/rect': 1.1.0 - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-portal@1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-portal@1.0.4': resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} peerDependencies: '@types/react': '*' @@ -1620,15 +964,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-portal@1.1.1(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-portal@1.1.1': resolution: {integrity: sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==} peerDependencies: '@types/react': '*' @@ -1640,15 +977,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-presence@1.0.1(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-presence@1.0.1': resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} peerDependencies: '@types/react': '*' @@ -1660,16 +990,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-presence@1.1.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-presence@1.1.0': resolution: {integrity: sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==} peerDependencies: '@types/react': '*' @@ -1681,15 +1003,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-primitive@1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-primitive@1.0.3': resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} peerDependencies: '@types/react': '*' @@ -1701,15 +1016,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-primitive@2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-primitive@2.0.0': resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} peerDependencies: '@types/react': '*' @@ -1721,14 +1029,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/react-slot': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-roving-focus@1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-roving-focus@1.0.4': resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} peerDependencies: '@types/react': '*' @@ -1740,23 +1042,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-select@2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-select@2.0.0': resolution: {integrity: sha512-RH5b7af4oHtkcHS7pG6Sgv5rk5Wxa7XI8W5gvB1N/yiuDGZxko1ynvOiVhFM7Cis2A8zxF9bTOUVbRDzPepe6w==} peerDependencies: '@types/react': '*' @@ -1768,35 +1055,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/number': 1.0.1 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.0.27 - aria-hidden: 1.2.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.0.27)(react@18.2.0) - dev: false - /@radix-ui/react-slot@1.0.2(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-slot@1.0.2': resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} peerDependencies: '@types/react': '*' @@ -1804,14 +1064,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-slot@1.1.0(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-slot@1.1.0': resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} peerDependencies: '@types/react': '*' @@ -1819,13 +1073,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-tabs@1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-tabs@1.0.4': resolution: {integrity: sha512-egZfYY/+wRNCflXNHx+dePvnz9FbmssDTJBtgRfDY7e8SE5oIo3Py2eCB1ckAbh1Q7cQ/6yJZThJ++sgbxibog==} peerDependencies: '@types/react': '*' @@ -1837,22 +1086,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-tooltip@1.0.7(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-tooltip@1.0.7': resolution: {integrity: sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw==} peerDependencies: '@types/react': '*' @@ -1864,26 +1099,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-use-callback-ref@1.0.1': resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} peerDependencies: '@types/react': '*' @@ -1891,13 +1108,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-use-callback-ref@1.1.0': resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} peerDependencies: '@types/react': '*' @@ -1905,12 +1117,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-use-controllable-state@1.0.1': resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} peerDependencies: '@types/react': '*' @@ -1918,14 +1126,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-use-controllable-state@1.1.0': resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} peerDependencies: '@types/react': '*' @@ -1933,13 +1135,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-use-escape-keydown@1.0.3': resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} peerDependencies: '@types/react': '*' @@ -1947,14 +1144,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-use-escape-keydown@1.1.0': resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} peerDependencies: '@types/react': '*' @@ -1962,13 +1153,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-use-layout-effect@1.0.1': resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} peerDependencies: '@types/react': '*' @@ -1976,13 +1162,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-use-layout-effect@1.1.0': resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} peerDependencies: '@types/react': '*' @@ -1990,12 +1171,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-use-previous@1.0.1(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-use-previous@1.0.1': resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} peerDependencies: '@types/react': '*' @@ -2003,13 +1180,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-use-rect@1.0.1(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-use-rect@1.0.1': resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} peerDependencies: '@types/react': '*' @@ -2017,14 +1189,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/rect': 1.0.1 - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-use-rect@1.1.0(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-use-rect@1.1.0': resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} peerDependencies: '@types/react': '*' @@ -2032,13 +1198,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@radix-ui/rect': 1.1.0 - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-use-size@1.0.1(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-use-size@1.0.1': resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} peerDependencies: '@types/react': '*' @@ -2046,75 +1207,5176 @@ packages: peerDependenciesMeta: '@types/react': optional: true + + '@radix-ui/react-use-size@1.1.0': + resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-visually-hidden@1.0.3': + resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/rect@1.0.1': + resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} + + '@radix-ui/rect@1.1.0': + resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} + + '@react-email/render@0.0.12': + resolution: {integrity: sha512-S8WRv/PqECEi6x0QJBj0asnAb5GFtJaHlnByxLETLkgJjc76cxMYDH4r9wdbuJ4sjkcbpwP3LPnVzwS+aIjT7g==} + engines: {node: '>=18.0.0'} + + '@rollup/plugin-commonjs@24.0.0': + resolution: {integrity: sha512-0w0wyykzdyRRPHOb0cQt14mIBLujfAv6GgP6g8nvg/iBxEm112t3YPPq+Buqe2+imvElTka+bjNlJ/gB56TD8g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.68.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/pluginutils@5.1.0': + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rushstack/eslint-patch@1.6.1': + resolution: {integrity: sha512-UY+FGM/2jjMkzQLn8pxcHGMaVLh9aEitG3zY2CiY7XHdLiz3bZOwa6oDxNqEMv7zZkV+cj5DOdz0cQ1BP5Hjgw==} + + '@selderee/plugin-htmlparser2@0.11.0': + resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} + + '@sentry-internal/feedback@7.102.1': + resolution: {integrity: sha512-vY4hpLLMNLjICtWiizc7KeGbWOTUMGrF7C+9dPCztZww3CLgzWy9A7DvPj5hodRiYzpdRnAMl8yQnMFbYXh7bA==} + engines: {node: '>=12'} + + '@sentry-internal/replay-canvas@7.102.1': + resolution: {integrity: sha512-GUX4RWI10uRjdjeyvCLtAAhWRVqnAnG6+yNxWfqUQ3qMA7B7XxG43KT2UhSnulmErNzODQ6hA68rGPwwYeRIww==} + engines: {node: '>=12'} + + '@sentry-internal/tracing@7.102.1': + resolution: {integrity: sha512-RkFlFyAC0fQOvBbBqnq0CLmFW5m3JJz9pKbZd5vXPraWAlniKSb1bC/4DF9SlNx0FN1LWG+IU3ISdpzwwTeAGg==} + engines: {node: '>=8'} + + '@sentry/browser@7.102.1': + resolution: {integrity: sha512-7BOfPBiM7Kp6q/iy0JIbsBTxIASV+zWXByqqjuEMWGj3X2u4oRIfm3gv4erPU/l+CORQUVQZLSPGoIoM1gbB/A==} + engines: {node: '>=8'} + + '@sentry/cli@1.77.3': + resolution: {integrity: sha512-c3eDqcDRmy4TFz2bFU5Y6QatlpoBPPa8cxBooaS4aMQpnIdLYPF1xhyyiW0LQlDUNc3rRjNF7oN5qKoaRoMTQQ==} + engines: {node: '>= 8'} + hasBin: true + + '@sentry/core@7.102.1': + resolution: {integrity: sha512-QjY+LSP3du3J/C8x/FfEbRxgZgsWd0jfTJ4P7s9f219I1csK4OeBMC3UA1HwEa0pY/9OF6H/egW2CjOcMM5Pdg==} + engines: {node: '>=8'} + + '@sentry/integrations@7.102.1': + resolution: {integrity: sha512-Its3Ru6xCAqpaLE3cTxW/b91js2SIFoXa8LWtQDJ7tmTdwPAbT8Pij1F4bOhhaqLYbjLtCXGl/NR2cffsiRLww==} + engines: {node: '>=8'} + + '@sentry/nextjs@7.102.1': + resolution: {integrity: sha512-gOI/GD7DWhc3WucyYnepl8Nu5jmpa1YfR6jWDzTkPE2CV9zKK9zulTdqk+Aig9ch62SAmJOGkgejm5k9PE2XzQ==} + engines: {node: '>=8'} + peerDependencies: + next: ^10.0.8 || ^11.0 || ^12.0 || ^13.0 || ^14.0 + react: 16.x || 17.x || 18.x + webpack: '>= 4.0.0' + peerDependenciesMeta: + webpack: + optional: true + + '@sentry/node@7.102.1': + resolution: {integrity: sha512-mb3vmM3SGuCruckPiv/Vafeh89UQavTfpPFoU6Jwe6dSpQ39BO8fO8k8Zev+/nP6r/FKLtX17mJobErHECXsYw==} + engines: {node: '>=8'} + + '@sentry/react@7.102.1': + resolution: {integrity: sha512-X4j2DgbktlEifnd21YJKCayAmff5hnaS+9MNz9OonEwD0ARi0ks7bo0wtWHMjPK20992MO+JwczVg/1BXJYDdQ==} + engines: {node: '>=8'} + peerDependencies: + react: 15.x || 16.x || 17.x || 18.x + + '@sentry/replay@7.102.1': + resolution: {integrity: sha512-HR/j9dGIvbrId8fh8mQlODx7JrhRmawEd9e9P3laPtogWCg/5TI+XPb2VGSaXOX9VWtb/6Z2UjHsaGjgg6YcuA==} + engines: {node: '>=12'} + + '@sentry/types@7.102.1': + resolution: {integrity: sha512-htKorf3t/D0XYtM7foTcmG+rM47rDP6XdbvCcX5gBCuCYlzpM1vqCt2rl3FLktZC6TaIpFRJw1TLfx6m+x5jdA==} + engines: {node: '>=8'} + + '@sentry/utils@7.102.1': + resolution: {integrity: sha512-+8WcFjHVV/HROXSAwMuUzveElBFC43EiTG7SNEBNgOUeQzQVTmbUZXyTVgLrUmtoWqvnIxCacoLxtZo1o67kdg==} + engines: {node: '>=8'} + + '@sentry/vercel-edge@7.102.1': + resolution: {integrity: sha512-iB6KCSxrvO172VjfQHGiYpyXPKNbx6Cz01GA1YDByRiUSgSpAq0qAFRY4lvd736w5KX4s9hen+XmZ7Gmqj8Pag==} + engines: {node: '>=8'} + + '@sentry/webpack-plugin@1.21.0': + resolution: {integrity: sha512-x0PYIMWcsTauqxgl7vWUY6sANl+XGKtx7DCVnnY7aOIIlIna0jChTAPANTfA2QrK+VK+4I/4JxatCEZBnXh3Og==} + engines: {node: '>= 8'} + + '@slack/types@2.10.0': + resolution: {integrity: sha512-JXY9l49rf7dDgvfMZi0maFyugzGkvq0s5u+kDlD68WaRUhjZNLBDKZcsrycMsVVDFfyOK0R1UKkYGmy9Ph069Q==} + engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} + + '@slack/webhook@7.0.1': + resolution: {integrity: sha512-0Uj/GQ1H8nmeAVEx+7zcWb6/q/zsSOrlIaGi6zFnwgMSxjmV6xGsVwv8w6DaAdkUbtqa43v1cirWjySeZaCOIA==} + engines: {node: '>= 18', npm: '>= 8.6.0'} + + '@stripe/stripe-js@2.4.0': + resolution: {integrity: sha512-WFkQx1mbs2b5+7looI9IV1BLa3bIApuN3ehp9FP58xGg7KL9hCHDECgW3BwO9l9L+xBPVAD7Yjn1EhGe6EDTeA==} + + '@swc-jotai/react-refresh@0.1.0': + resolution: {integrity: sha512-CWV4W06GdfQo3cW3CoUM2fp7avH4Z/suR7SvECNJnQbr6Sa9U3p7o10nXjNv2zT6z09bbNUPM55HBw5Nwd24Iw==} + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/helpers@0.5.5': + resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} + + '@tootallnate/once@2.0.0': + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + + '@tsconfig/node10@1.0.9': + resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + + '@types/caseless@0.12.5': + resolution: {integrity: sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==} + + '@types/debug@4.1.8': + resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} + + '@types/eslint-scope@3.7.7': + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + + '@types/eslint@8.56.0': + resolution: {integrity: sha512-FlsN0p4FhuYRjIxpbdXovvHQhtlG05O1GG/RNWvdAxTboR438IOTwmrY/vLA+Xfgg06BTkP045M3vpFwTMv1dg==} + + '@types/estree-jsx@1.0.3': + resolution: {integrity: sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==} + + '@types/estree@1.0.5': + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + + '@types/formidable@3.4.5': + resolution: {integrity: sha512-s7YPsNVfnsng5L8sKnG/Gbb2tiwwJTY1conOkJzTMRvJAlLFW1nEua+ADsJQu8N1c0oTHx9+d5nqg10WuT9gHQ==} + + '@types/hast@2.3.5': + resolution: {integrity: sha512-SvQi0L/lNpThgPoleH53cdjB3y9zpLlVjRbqB3rH8hx1jiRSBGAhyjV3H+URFjNVRqt2EdYNrbZE5IsGlNfpRg==} + + '@types/hast@3.0.0': + resolution: {integrity: sha512-SoytUJRuf68HXYqcXicQIhCrLQjqeYU2anikr4G3p3Iz+OZO5QDQpDj++gv+RenHsnUBwNZ2dumBArF8VLSk2Q==} + + '@types/json-schema@7.0.12': + resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + '@types/mdast@4.0.3': + resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} + + '@types/minimist@1.2.2': + resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} + + '@types/ms@0.7.31': + resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} + + '@types/node@12.20.55': + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + + '@types/node@20.10.6': + resolution: {integrity: sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw==} + + '@types/node@20.5.6': + resolution: {integrity: sha512-Gi5wRGPbbyOTX+4Y2iULQ27oUPrefaB0PxGQJnfyWN3kvEDGM3mIB5M/gQLmitZf7A9FmLeaqxD3L1CXpm3VKQ==} + + '@types/normalize-package-data@2.4.1': + resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} + + '@types/papaparse@5.3.14': + resolution: {integrity: sha512-LxJ4iEFcpqc6METwp9f6BV6VVc43m6MfH0VqFosHvrUgfXiFe6ww7R3itkOQ+TCK6Y+Iv/+RnnvtRZnkc5Kc9g==} + + '@types/prismjs@1.26.0': + resolution: {integrity: sha512-ZTaqn/qSqUuAq1YwvOFQfVW1AR/oQJlLSZVustdjwI+GZ8kr0MSHBj0tsXPW1EqHubx50gtBEjbPGsdZwQwCjQ==} + + '@types/prop-types@15.7.5': + resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + + '@types/react@18.0.27': + resolution: {integrity: sha512-3vtRKHgVxu3Jp9t718R9BuzoD4NcQ8YJ5XRzsSKxNDiDonD2MXIT1TmSkenxuCycZJoQT5d2vE8LwWJxBC1gmA==} + + '@types/request@2.48.12': + resolution: {integrity: sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==} + + '@types/scheduler@0.16.3': + resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} + + '@types/semver@7.5.1': + resolution: {integrity: sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==} + + '@types/tough-cookie@4.0.5': + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + + '@types/unist@2.0.8': + resolution: {integrity: sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==} + + '@types/unist@3.0.0': + resolution: {integrity: sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==} + + '@typeschema/core@0.13.2': + resolution: {integrity: sha512-pAt0MK249/9szYaoPuvzhSfOd3smrLhhwCCpUNB4onX32mRx5F3lzDIveIYGQkLYRq58xOX5sjoW+n72f/MLLw==} + peerDependencies: + '@types/json-schema': ^7.0.15 + peerDependenciesMeta: + '@types/json-schema': + optional: true + + '@typeschema/main@0.13.10': + resolution: {integrity: sha512-ArdFC4GbgdVWWgPKg2tymxx2KHMus3xZ8I2kHwqw/0P4FtWBXCmSNAiBqDtpoXXF8h9cbcm7fVpcs5ftoWT9+A==} + peerDependencies: + '@typeschema/arktype': 0.13.2 + '@typeschema/class-validator': 0.1.2 + '@typeschema/deepkit': 0.13.4 + '@typeschema/effect': 0.13.4 + '@typeschema/fastest-validator': 0.1.0 + '@typeschema/function': 0.13.2 + '@typeschema/io-ts': 0.13.3 + '@typeschema/joi': 0.13.3 + '@typeschema/json': 0.13.3 + '@typeschema/ow': 0.13.3 + '@typeschema/runtypes': 0.13.2 + '@typeschema/superstruct': 0.13.2 + '@typeschema/suretype': 0.1.0 + '@typeschema/typebox': 0.13.4 + '@typeschema/valibot': 0.13.5 + '@typeschema/valita': 0.1.0 + '@typeschema/vine': 0.1.0 + '@typeschema/yup': 0.13.3 + '@typeschema/zod': 0.13.3 + peerDependenciesMeta: + '@typeschema/arktype': + optional: true + '@typeschema/class-validator': + optional: true + '@typeschema/deepkit': + optional: true + '@typeschema/effect': + optional: true + '@typeschema/fastest-validator': + optional: true + '@typeschema/function': + optional: true + '@typeschema/io-ts': + optional: true + '@typeschema/joi': + optional: true + '@typeschema/json': + optional: true + '@typeschema/ow': + optional: true + '@typeschema/runtypes': + optional: true + '@typeschema/superstruct': + optional: true + '@typeschema/suretype': + optional: true + '@typeschema/typebox': + optional: true + '@typeschema/valibot': + optional: true + '@typeschema/valita': + optional: true + '@typeschema/vine': + optional: true + '@typeschema/yup': + optional: true + '@typeschema/zod': + optional: true + + '@typeschema/zod@0.13.3': + resolution: {integrity: sha512-p5Hs22WIKkM/vZTAvw5QOLSA0EJ6QBUsQMGUrXlYnTAE2LSR/F5MLsDUb18O6S5VxGjrzU7x3VIznD5qOafJRw==} + peerDependencies: + zod: ^3.22.4 + zod-to-json-schema: ^3.22.4 + peerDependenciesMeta: + zod: + optional: true + zod-to-json-schema: + optional: true + + '@typescript-eslint/eslint-plugin@7.14.1': + resolution: {integrity: sha512-aAJd6bIf2vvQRjUG3ZkNXkmBpN+J7Wd0mfQiiVCJMu9Z5GcZZdcc0j8XwN/BM97Fl7e3SkTXODSk4VehUv7CGw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@6.17.0': + resolution: {integrity: sha512-C4bBaX2orvhK+LlwrY8oWGmSl4WolCfYm513gEccdWZj0CwGadbIADb0FtVEcI+WzUyjyoBj2JRP8g25E6IB8A==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@7.12.0': + resolution: {integrity: sha512-dm/J2UDY3oV3TKius2OUZIFHsomQmpHtsV0FTh1WO8EKgHLQ1QCADUqscPgTpU+ih1e21FQSRjXckHn3txn6kQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@6.17.0': + resolution: {integrity: sha512-RX7a8lwgOi7am0k17NUO0+ZmMOX4PpjLtLRgLmT1d3lBYdWH4ssBUbwdmc5pdRX8rXon8v9x8vaoOSpkHfcXGA==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/scope-manager@7.12.0': + resolution: {integrity: sha512-itF1pTnN6F3unPak+kutH9raIkL3lhH1YRPGgt7QQOh43DQKVJXmWkpb+vpc/TiDHs6RSd9CTbDsc/Y+Ygq7kg==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/scope-manager@7.14.1': + resolution: {integrity: sha512-gPrFSsoYcsffYXTOZ+hT7fyJr95rdVe4kGVX1ps/dJ+DfmlnjFN/GcMxXcVkeHDKqsq6uAcVaQaIi3cFffmAbA==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/type-utils@7.14.1': + resolution: {integrity: sha512-/MzmgNd3nnbDbOi3LfasXWWe292+iuo+umJ0bCCMCPc1jLO/z2BQmWUUUXvXLbrQey/JgzdF/OV+I5bzEGwJkQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@6.17.0': + resolution: {integrity: sha512-qRKs9tvc3a4RBcL/9PXtKSehI/q8wuU9xYJxe97WFxnzH8NWWtcW3ffNS+EWg8uPvIerhjsEZ+rHtDqOCiH57A==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/types@7.12.0': + resolution: {integrity: sha512-o+0Te6eWp2ppKY3mLCU+YA9pVJxhUJE15FV7kxuD9jgwIAa+w/ycGJBMrYDTpVGUM/tgpa9SeMOugSabWFq7bg==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/types@7.14.1': + resolution: {integrity: sha512-mL7zNEOQybo5R3AavY+Am7KLv8BorIv7HCYS5rKoNZKQD9tsfGUpO4KdAn3sSUvTiS4PQkr2+K0KJbxj8H9NDg==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/typescript-estree@6.17.0': + resolution: {integrity: sha512-gVQe+SLdNPfjlJn5VNGhlOhrXz4cajwFd5kAgWtZ9dCZf4XJf8xmgCTLIqec7aha3JwgLI2CK6GY1043FRxZwg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/typescript-estree@7.12.0': + resolution: {integrity: sha512-5bwqLsWBULv1h6pn7cMW5dXX/Y2amRqLaKqsASVwbBHMZSnHqE/HN4vT4fE0aFsiwxYvr98kqOWh1a8ZKXalCQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/typescript-estree@7.14.1': + resolution: {integrity: sha512-k5d0VuxViE2ulIO6FbxxSZaxqDVUyMbXcidC8rHvii0I56XZPv8cq+EhMns+d/EVIL41sMXqRbK3D10Oza1bbA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@7.14.1': + resolution: {integrity: sha512-CMmVVELns3nak3cpJhZosDkm63n+DwBlDX8g0k4QUa9BMnF+lH2lr3d130M1Zt1xxmB3LLk3NV7KQCq86ZBBhQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + + '@typescript-eslint/visitor-keys@6.17.0': + resolution: {integrity: sha512-H6VwB/k3IuIeQOyYczyyKN8wH6ed8EwliaYHLxOIhyF0dYEIsN8+Bk3GE19qafeMKyZJJHP8+O1HiFhFLUNKSg==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/visitor-keys@7.12.0': + resolution: {integrity: sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/visitor-keys@7.14.1': + resolution: {integrity: sha512-Crb+F75U1JAEtBeQGxSKwI60hZmmzaqA3z9sYsVm8X7W5cwLEm5bRe0/uXS6+MR/y8CVpKSR/ontIAIEPFcEkA==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@uiw/color-convert@2.0.8': + resolution: {integrity: sha512-yh0Q91FwTNCl5rMpNSQSlpazMz65V6V0LMIyssHk0ris4af9xQi+t01snLP+Dbjbk4HaSy7b8AptTP3NudggdQ==} + peerDependencies: + '@babel/runtime': '>=7.19.0' + + '@uiw/copy-to-clipboard@1.0.15': + resolution: {integrity: sha512-1bbGZ3T+SGmA07BoVPK4UCUDcowDN/moctviJGQexfOc9qL8TMLDQPr7mTPvDKhgJkgnlKkAQNFU8PiarIi9sQ==} + + '@uiw/react-color-alpha@2.0.8': + resolution: {integrity: sha512-QppWrb7QBTIi0xZ6Q818tSi0LpZfkB323Q4F36a/vH4chzqOJAj6aCFM18d1CqjcLT4R1gnDhBSlW2dVD/4YoQ==} + peerDependencies: + '@babel/runtime': '>=7.19.0' + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@uiw/react-color-editable-input-rgba@2.0.8': + resolution: {integrity: sha512-3bPmbyc1u6T++ap0pKl9w+x4+llDtLAuXY41NgNEUKhd63rMZjnVbVnFnzvIUDL92JRB5m+a+3Rr3n1TheeFew==} + peerDependencies: + '@babel/runtime': '>=7.19.0' + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@uiw/react-color-editable-input@2.0.8': + resolution: {integrity: sha512-WpehDwnIRTIOUYAnchSVjZu+TwJjA1vCiK+tMkgta/Nu2qI3bLLPTwKmIF1cQgcrEEKvfgaqOD3yP7BvjjKFJA==} + peerDependencies: + '@babel/runtime': '>=7.19.0' + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@uiw/react-color-hue@2.0.8': + resolution: {integrity: sha512-h3EKzc87/leSq94dBchAqN+0liPQZismqjlGOM2LsZadGqgn9pO4+3+SlO4kD5IdQIybCRXmK3zVUVGDdxOIYg==} + peerDependencies: + '@babel/runtime': '>=7.19.0' + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@uiw/react-color-saturation@2.0.8': + resolution: {integrity: sha512-cBZ5Al4YrHOYTcWiRQzjYiT5Llgv7pnFEZPy07dQ5NSL+FlzQmDfjVmQynXUqYG3IqQrx0Md4jJLLhhLP9Q5MQ==} + peerDependencies: + '@babel/runtime': '>=7.19.0' + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@uiw/react-color-sketch@2.0.8': + resolution: {integrity: sha512-4b4mDMJHTsxuab75bmcH5OvDOvcam8irkYapIbcVLJzrBurWiuxflMdmsht37hKegPOsRp6m0NONfEGcUtg1fQ==} + peerDependencies: + '@babel/runtime': '>=7.19.0' + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@uiw/react-color-swatch@2.0.8': + resolution: {integrity: sha512-ZURW9tsTNv8ea5TJqYvN2gqoljrhtjPpzs4UC9C7vfI6JvDdjAzIyMwRwRVCftekOtvLvdGZzXYXbGxPF4BvTQ==} + peerDependencies: + '@babel/runtime': '>=7.19.0' + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@uiw/react-drag-event-interactive@2.0.8': + resolution: {integrity: sha512-Z8awDfUV7970Q6GfJmx6x7fx5KeHn6RPinQVRYRAnKS7QP6XgQOIvVn8bYKe5vd4vQeBbzIVYYySjYRWjA5heA==} + peerDependencies: + '@babel/runtime': '>=7.19.0' + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@uiw/react-markdown-preview@5.0.6': + resolution: {integrity: sha512-zd+T02xFhy6K75XPdkF3RRAWKzVzJctZ6CCpFDcn/CgdQlEj8Z+Z9k11nkPspzbznB43UYdoe4qQvnjgG6TfZw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@uiw/react-md-editor@4.0.3': + resolution: {integrity: sha512-TvChXxUBUS21Rk0cVC0aeJoWcFZ/G0xN/Hc4Lv9FGFK8wPOHESd7Bcq4jNRHJ6lEzE/+d4Wh00lEVNKj+rQyBw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@ungap/structured-clone@1.2.0': + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + + '@webassemblyjs/ast@1.11.6': + resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + + '@webassemblyjs/floating-point-hex-parser@1.11.6': + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + + '@webassemblyjs/helper-api-error@1.11.6': + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + + '@webassemblyjs/helper-buffer@1.11.6': + resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + + '@webassemblyjs/helper-numbers@1.11.6': + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + + '@webassemblyjs/helper-wasm-bytecode@1.11.6': + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + + '@webassemblyjs/helper-wasm-section@1.11.6': + resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} + + '@webassemblyjs/ieee754@1.11.6': + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + + '@webassemblyjs/leb128@1.11.6': + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + + '@webassemblyjs/utf8@1.11.6': + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + + '@webassemblyjs/wasm-edit@1.11.6': + resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} + + '@webassemblyjs/wasm-gen@1.11.6': + resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + + '@webassemblyjs/wasm-opt@1.11.6': + resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + + '@webassemblyjs/wasm-parser@1.11.6': + resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + + '@webassemblyjs/wast-printer@1.11.6': + resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + abbrev@2.0.0: + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + + acorn-import-assertions@1.9.0: + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + peerDependencies: + acorn: ^8 + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@8.3.0: + resolution: {integrity: sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==} + engines: {node: '>=0.4.0'} + + acorn@8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + agent-base@7.1.0: + resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} + engines: {node: '>= 14'} + + ajv-formats@2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + + ajv-keywords@5.1.0: + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + ansi-escapes@5.0.0: + resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} + engines: {node: '>=12'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-hidden@1.2.3: + resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==} + engines: {node: '>=10'} + + aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + + array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + + array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + + array-includes@3.1.7: + resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + engines: {node: '>= 0.4'} + + array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlastindex@1.2.3: + resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + + array.prototype.toreversed@1.1.2: + resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} + + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.2: + resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + + arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + + arrify@2.0.1: + resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} + engines: {node: '>=8'} + + asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + + ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + + async-retry@1.3.3: + resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} + + asynciterator.prototype@1.0.0: + resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + attr-accept@2.2.2: + resolution: {integrity: sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==} + engines: {node: '>=4'} + + autoprefixer@10.4.16: + resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + available-typed-arrays@1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + axe-core@4.7.0: + resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} + engines: {node: '>=4'} + + axios@1.6.2: + resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==} + + axobject-query@3.2.1: + resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} + + babel-loader@9.1.3: + resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} + engines: {node: '>= 14.15.0'} + peerDependencies: + '@babel/core': ^7.12.0 + webpack: '>=5' + + babel-plugin-transform-remove-imports@1.7.0: + resolution: {integrity: sha512-gprmWf6ry5qrnxMyiDaxZpXzZJP6R9FRA+p0AImLIWRmSEGtlKcFprHKeGMZYkII9rJR6Q1hYou+n1fk6rWf2g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + bcp-47-match@2.0.3: + resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} + + better-path-resolve@1.0.0: + resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} + engines: {node: '>=4'} + + bignumber.js@9.1.2: + resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} + + binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + + breakword@1.0.6: + resolution: {integrity: sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==} + + browserslist@4.21.10: + resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + browserslist@4.22.2: + resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + + call-bind@1.0.5: + resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + + camelcase-keys@6.2.2: + resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} + engines: {node: '>=8'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + caniuse-lite@1.0.30001572: + resolution: {integrity: sha512-1Pbh5FLmn5y4+QhNyJE9j3/7dK44dGB83/ZMjv/qJk86TvDbjk0LosiZo0i0WB0Vx607qMX9jYrn1VLHCkN4rw==} + + caniuse-lite@1.0.30001587: + resolution: {integrity: sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA==} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + + chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + + chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + + chrome-trace-event@1.0.3: + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + engines: {node: '>=6.0'} + + ci-info@3.8.0: + resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} + engines: {node: '>=8'} + + class-variance-authority@0.7.0: + resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} + + cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + cli-truncate@3.1.0: + resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + + cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + clsx@2.0.0: + resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} + engines: {node: '>=6'} + + clsx@2.1.0: + resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} + engines: {node: '>=6'} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + + commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + common-path-prefix@3.0.0: + resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} + + commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + + confusing-browser-globals@1.0.11: + resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + cross-spawn@5.1.0: + resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + css-selector-parser@3.0.4: + resolution: {integrity: sha512-pnmS1dbKsz6KA4EW4BznyPL2xxkNDRg62hcD0v8g6DEw2W7hxOln5M953jsp9hmw5Dg57S6o/A8GOn37mbAgcQ==} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + + csv-generate@3.4.3: + resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} + + csv-parse@4.16.3: + resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} + + csv-stringify@5.6.5: + resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} + + csv@5.5.3: + resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} + engines: {node: '>= 0.1.90'} + + damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + + data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize-keys@1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} + engines: {node: '>=0.10.0'} + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decode-named-character-reference@1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + dezalgo@1.0.4: + resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} + + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + direction@2.0.1: + resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} + hasBin: true + + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + + dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} + + duplexify@4.1.2: + resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + + editorconfig@1.0.4: + resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==} + engines: {node: '>=14'} + hasBin: true + + electron-to-chromium@1.4.503: + resolution: {integrity: sha512-LF2IQit4B0VrUHFeQkWhZm97KuJSGF2WJqq1InpY+ECpFRkXd8yTIaTtJxsO0OKDmiBYwWqcrNaXOurn2T2wiA==} + + electron-to-chromium@1.4.616: + resolution: {integrity: sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==} + + emoji-mart@5.6.0: + resolution: {integrity: sha512-eJp3QRe79pjwa+duv+n7+5YsNhRcMl812EcFVwrnRvYKoNPoQb5qxU8DG6Bgwji0akHdp6D4Ln6tYLG58MFSow==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + + enhanced-resolve@5.15.0: + resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} + engines: {node: '>=10.13.0'} + + enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + + ent@2.2.0: + resolution: {integrity: sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-abstract@1.22.3: + resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} + engines: {node: '>= 0.4'} + + es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-iterator-helpers@1.0.15: + resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} + + es-iterator-helpers@1.0.19: + resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.4.1: + resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} + + es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.0.2: + resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + + es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + + escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + eslint-config-airbnb-base@15.0.0: + resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.2 + + eslint-config-airbnb-typescript@18.0.0: + resolution: {integrity: sha512-oc+Lxzgzsu8FQyFVa4QFaVKiitTYiiW3frB9KYW5OWdPrqFc7FzxgB20hP4cHMlr+MBzGcLl3jnCOVOydL9mIg==} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^7.0.0 + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + + eslint-config-airbnb@19.0.4: + resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==} + engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.3 + eslint-plugin-jsx-a11y: ^6.5.1 + eslint-plugin-react: ^7.28.0 + eslint-plugin-react-hooks: ^4.3.0 + + eslint-config-next@14.1.0: + resolution: {integrity: sha512-SBX2ed7DoRFXC6CQSLc/SbLY9Ut6HxNB2wPTcoIWjUMd7aF7O/SIE7111L8FdZ9TXsNV4pulUDnfthpyPtbFUg==} + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + + eslint-config-prettier@9.0.0: + resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-import-resolver-typescript@3.6.1: + resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + + eslint-module-utils@2.8.0: + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-import@2.29.1: + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-jsx-a11y@6.8.0: + resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + + eslint-plugin-playwright@1.6.2: + resolution: {integrity: sha512-mraN4Em3b5jLt01q7qWPyLg0Q5v3KAWfJSlEWwldyUXoa7DSPrBR4k6B6LROLqipsG8ndkwWMdjl1Ffdh15tag==} + engines: {node: '>=16.6.0'} + peerDependencies: + eslint: '>=8.40.0' + eslint-plugin-jest: '>=25' + peerDependenciesMeta: + eslint-plugin-jest: + optional: true + + eslint-plugin-prettier@5.1.3: + resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + + eslint-plugin-react-hooks@4.6.2: + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + + eslint-plugin-react@7.34.2: + resolution: {integrity: sha512-2HCmrU+/JNigDN6tg55cRDKCQWicYAPB38JGSFDQt95jDm8rrvSUo7YPkOIm5l6ts1j1zCvysNcasvfTMQzUOw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + + eslint-plugin-tailwindcss@3.17.3: + resolution: {integrity: sha512-DVMVVUFQ+lPraRSuUk2I41XMnusXT6b3WaQZYlUHduULnERaqe9sNfmpRY1IyxlzmKoQxSbZ8IHRhl9ePo8PeA==} + engines: {node: '>=18.12.0'} + peerDependencies: + tailwindcss: ^3.4.0 + + eslint-plugin-unused-imports@4.0.0: + resolution: {integrity: sha512-mzM+y2B7XYpQryVa1usT+Y/BdNAtAZiXzwpSyDCboFoJN/LZRN67TNvQxKtuTK/Aplya3sLNQforiubzPPaIcQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': '8' + eslint: '9' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + + eslint-rule-composer@0.3.0: + resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} + engines: {node: '>=4.0.0'} + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + + esm@3.2.25: + resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} + engines: {node: '>=6'} + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + extendable-error@0.1.7: + resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} + + external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-xml-parser@4.3.4: + resolution: {integrity: sha512-utnwm92SyozgA3hhH2I8qldf2lBqm6qHOICawRNRFu1qMe3+oqr+GcXjGqTmXTMGE5T4eC03kr/rlh5C1IRdZA==} + hasBin: true + + fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + file-selector@0.6.0: + resolution: {integrity: sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==} + engines: {node: '>= 12'} + + fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + + find-cache-dir@4.0.0: + resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} + engines: {node: '>=14.16'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + find-up@6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + find-yarn-workspace-root2@1.2.16: + resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} + + flat-cache@3.1.0: + resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} + engines: {node: '>=12.0.0'} + + flatted@3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + + follow-redirects@1.15.2: + resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + + foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + + form-data@2.5.1: + resolution: {integrity: sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==} + engines: {node: '>= 0.12'} + + form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + + formidable@3.5.1: + resolution: {integrity: sha512-WJWKelbRHN41m5dumb0/k8TeAx7Id/y3a+Z7QfhxP/htI9Js5zYaEDtG8uMgG0vM0lOlqnmjE99/kfpOYi/0Og==} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + gaxios@6.2.0: + resolution: {integrity: sha512-H6+bHeoEAU5D6XNc6mPKeN5dLZqEDs9Gpk6I+SZBEzK5So58JVrHPmevNi35fRl1J9Y5TaeLW0kYx3pCJ1U2mQ==} + engines: {node: '>=14'} + + gcp-metadata@6.1.0: + resolution: {integrity: sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==} + engines: {node: '>=14'} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.2.2: + resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + + get-symbol-description@1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + + get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.7.2: + resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + + github-slugger@2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + glob@7.1.6: + resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + + glob@7.1.7: + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + + glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@13.21.0: + resolution: {integrity: sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==} + engines: {node: '>=8'} + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + google-auth-library@9.6.3: + resolution: {integrity: sha512-4CacM29MLC2eT9Cey5GDVK4Q8t+MMp8+OEdOaqD9MG6b0dOyLORaaeJMPQ7EESVgm/+z5EKYyFLxgzBJlJgyHQ==} + engines: {node: '>=14'} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + grapheme-splitter@1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + gtoken@7.1.0: + resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} + engines: {node: '>=14.0.0'} + + hard-rejection@2.1.0: + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + engines: {node: '>=6'} + + has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.1: + resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hast-util-from-html@2.0.1: + resolution: {integrity: sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==} + + hast-util-from-parse5@7.1.2: + resolution: {integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==} + + hast-util-from-parse5@8.0.1: + resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} + + hast-util-has-property@3.0.0: + resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} + + hast-util-heading-rank@3.0.0: + resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} + + hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + + hast-util-parse-selector@3.1.1: + resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} + + hast-util-parse-selector@4.0.0: + resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} + + hast-util-raw@9.0.1: + resolution: {integrity: sha512-5m1gmba658Q+lO5uqL5YNGQWeh1MYWZbZmWrM5lncdcuiXuo5E2HT/CIOp0rLF8ksfSwiCVJ3twlgVRyTGThGA==} + + hast-util-sanitize@5.0.0: + resolution: {integrity: sha512-L0g/qhOA82zG2hA3O29hnlv4mLU7YVVT1if5JZSr2tKO1ywkQbuMDcN05btgX0HtpqDXQniAM0ar0K+Lv4MDBQ==} + + hast-util-select@6.0.2: + resolution: {integrity: sha512-hT/SD/d/Meu+iobvgkffo1QecV8WeKWxwsNMzcTJsKw1cKTQKSR/7ArJeURLNJF9HDjp9nVoORyNNJxrvBye8Q==} + + hast-util-to-html@9.0.0: + resolution: {integrity: sha512-IVGhNgg7vANuUA2XKrT6sOIIPgaYZnmLx3l/CCOAK0PtgfoHrZwX7jCSYyFxHTrGmC6S9q8aQQekjp4JPZF+cw==} + + hast-util-to-jsx-runtime@2.3.0: + resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} + + hast-util-to-parse5@8.0.0: + resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} + + hast-util-to-string@2.0.0: + resolution: {integrity: sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==} + + hast-util-to-string@3.0.0: + resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + hastscript@7.2.0: + resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} + + hastscript@8.0.0: + resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} + + hexoid@1.0.0: + resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==} + engines: {node: '>=8'} + + hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + html-to-text@9.0.5: + resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} + engines: {node: '>=14'} + + html-url-attributes@3.0.0: + resolution: {integrity: sha512-/sXbVCWayk6GDVg3ctOX6nxaVj7So40FcFAnWlWGNAB1LpYKcV5Cd10APjPjW80O7zYW2MsjBV4zZ7IZO5fVow==} + + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + + htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + + http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + https-proxy-agent@7.0.2: + resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} + engines: {node: '>= 14'} + + human-id@1.0.2: + resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + husky@9.0.11: + resolution: {integrity: sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==} + engines: {node: '>=18'} + hasBin: true + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + ignore@5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + + ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + + immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + inline-style-parser@0.2.2: + resolution: {integrity: sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==} + + internal-slot@1.0.6: + resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} + engines: {node: '>= 0.4'} + + internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + + invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + + is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + + is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + + is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + + is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + + is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + + is-buffer@2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + + is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + + is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + + is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + + is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + + is-map@2.0.2: + resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + + is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + + is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-reference@1.2.1: + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + + is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + + is-set@2.0.2: + resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + + is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + + is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + + is-subdir@1.2.0: + resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} + engines: {node: '>=4'} + + is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + + is-weakmap@2.0.1: + resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + + is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + + is-weakset@2.0.2: + resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + + jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + jiti@1.19.3: + resolution: {integrity: sha512-5eEbBDQT/jF1xg6l36P+mWGGoH9Spuy0PCdSr2dtWRDGC6ph/w9ZCL4lmESW8f8F7MwT3XKescfP0wnZWAKL9w==} + hasBin: true + + jose@4.15.5: + resolution: {integrity: sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==} + + jotai@2.6.4: + resolution: {integrity: sha512-RniwQPX4893YlNR1muOtyUGHYaTD1fhEN4qnOuZJSrDHj6xdEMrqlRSN/hCm2fshwk78ruecB/P2l+NCVWe6TQ==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=17.0.0' + react: '>=17.0.0' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + + js-beautify@1.14.11: + resolution: {integrity: sha512-rPogWqAfoYh1Ryqqh2agUpVfbxAhbjuN1SmU86dskQUKouRiggUTCO4+2ym9UPXllc2WAp0J+T5qxn7Um3lCdw==} + engines: {node: '>=14'} + hasBin: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + json-bigint@1.0.0: + resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + + jwa@2.0.0: + resolution: {integrity: sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==} + + jws@4.0.0: + resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} + + keyv@4.5.3: + resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + + language-subtag-registry@0.3.22: + resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} + + language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} + + leac@0.6.0: + resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lie@3.1.1: + resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + lint-staged@15.0.2: + resolution: {integrity: sha512-vnEy7pFTHyVuDmCAIFKR5QDO8XLVlPFQQyujQ/STOxe40ICWqJ6knS2wSJ/ffX/Lw0rz83luRDh+ET7toN+rOw==} + engines: {node: '>=18.12.0'} + hasBin: true + + listr2@7.0.2: + resolution: {integrity: sha512-rJysbR9GKIalhTbVL2tYbF2hVyDnrf7pFUZBwjPaMIdadYHmeT+EVi/Bu3qd7ETQPahTotg2WRCatXwRBW554g==} + engines: {node: '>=16.0.0'} + + load-yaml-file@0.2.0: + resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} + engines: {node: '>=6'} + + loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + + localforage@1.10.0: + resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + + log-update@5.0.1: + resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lru-cache@10.2.0: + resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} + engines: {node: 14 || >=16.14} + + lru-cache@4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + lucide-react@0.344.0: + resolution: {integrity: sha512-6YyBnn91GB45VuVT96bYCOKElbJzUHqp65vX8cDcu55MQL9T969v4dhGClpljamuI/+KMO9P6w9Acq1CVQGvIQ==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 + + magic-string@0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + map-obj@1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + + map-obj@4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} + + markdown-table@3.0.3: + resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} + + mdast-util-find-and-replace@3.0.1: + resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} + + mdast-util-from-markdown@2.0.0: + resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} + + mdast-util-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} + + mdast-util-gfm-footnote@2.0.0: + resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} + + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + + mdast-util-gfm@3.0.0: + resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} + + mdast-util-mdx-expression@2.0.0: + resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} + + mdast-util-mdx-jsx@3.0.0: + resolution: {integrity: sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==} + + mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + + mdast-util-phrasing@4.0.0: + resolution: {integrity: sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==} + + mdast-util-to-hast@13.0.2: + resolution: {integrity: sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==} + + mdast-util-to-markdown@2.1.0: + resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + + meow@6.1.1: + resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} + engines: {node: '>=8'} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromark-core-commonmark@2.0.0: + resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==} + + micromark-extension-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} + + micromark-extension-gfm-footnote@2.0.0: + resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==} + + micromark-extension-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==} + + micromark-extension-gfm-table@2.0.0: + resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==} + + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + + micromark-extension-gfm-task-list-item@2.0.1: + resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==} + + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + + micromark-factory-destination@2.0.0: + resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} + + micromark-factory-label@2.0.0: + resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} + + micromark-factory-space@2.0.0: + resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} + + micromark-factory-title@2.0.0: + resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} + + micromark-factory-whitespace@2.0.0: + resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} + + micromark-util-character@2.0.1: + resolution: {integrity: sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==} + + micromark-util-chunked@2.0.0: + resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} + + micromark-util-classify-character@2.0.0: + resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + + micromark-util-combine-extensions@2.0.0: + resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} + + micromark-util-decode-numeric-character-reference@2.0.1: + resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} + + micromark-util-decode-string@2.0.0: + resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} + + micromark-util-encode@2.0.0: + resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} + + micromark-util-html-tag-name@2.0.0: + resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} + + micromark-util-normalize-identifier@2.0.0: + resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} + + micromark-util-resolve-all@2.0.0: + resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} + + micromark-util-sanitize-uri@2.0.0: + resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} + + micromark-util-subtokenize@2.0.0: + resolution: {integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==} + + micromark-util-symbol@2.0.0: + resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} + + micromark-util-types@2.0.0: + resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} + + micromark@4.0.0: + resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} + + micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + + minimatch@9.0.1: + resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} + engines: {node: '>=16 || 14 >=14.17'} + + minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + + minimatch@9.0.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist-options@4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + + mixme@0.5.9: + resolution: {integrity: sha512-VC5fg6ySUscaWUpI4gxCBTQMH2RdUpNrk+MsbpCYtIvf9SBJdiUey4qE7BXviJsJR4nDQxCZ+3yaYNW3guz/Pw==} + engines: {node: '>= 8.0.0'} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + next-auth@4.24.7: + resolution: {integrity: sha512-iChjE8ov/1K/z98gdKbn2Jw+2vLgJtVV39X+rCP5SGnVQuco7QOr19FRNGMIrD8d3LYhHWV9j9sKLzq1aDWWQQ==} + peerDependencies: + next: ^12.2.5 || ^13 || ^14 + nodemailer: ^6.6.5 + react: ^17.0.2 || ^18 + react-dom: ^17.0.2 || ^18 + peerDependenciesMeta: + nodemailer: + optional: true + + next-remove-imports@1.0.12: + resolution: {integrity: sha512-3tdL6VuSykJ/mcUwxfjQ+Fd4OpEmrwWVHtLZ/fhNcSaToWCutUp7nrfIww7/4CURe9I7BDCQE9AWl4fkY3YZOQ==} + + next-safe-action@7.0.2: + resolution: {integrity: sha512-Zjxo5HhOV0vUxKP2zf4UE5d603oCwdr9CNadc4aImJnYrcpfed3S/mUf2gfXEHjTjRyPoTQ+s4oLMy5rATGuPQ==} + engines: {node: '>=18.17'} + peerDependencies: + next: '>= 14.0.0' + react: '>= 18.2.0' + react-dom: '>= 18.2.0' + zod: '>= 3.0.0' + peerDependenciesMeta: + zod: + optional: true + + next-themes@0.2.1: + resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==} + peerDependencies: + next: '*' + react: '*' + react-dom: '*' + + next@14.2.4: + resolution: {integrity: sha512-R8/V7vugY+822rsQGQCjoLhMuC9oFj9SOi4Cl4b2wjDrseD0LRZ10W7R6Czo4w9ZznVSshKjuIomsRjvm9EKJQ==} + engines: {node: '>=18.17.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + sass: + optional: true + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-releases@2.0.13: + resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + + node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + + nodemailer@6.9.14: + resolution: {integrity: sha512-Dobp/ebDKBvz91sbtRKhcznLThrKxKt97GI2FAlAyy+fk19j73Uz3sBXolVtmcXjaorivqsbbbjDY+Jkt4/bQA==} + engines: {node: '>=6.0.0'} + + nopt@7.2.0: + resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + not@0.1.0: + resolution: {integrity: sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==} + + npm-run-path@5.1.0: + resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + oauth@0.9.15: + resolution: {integrity: sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-hash@2.2.0: + resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} + engines: {node: '>= 6'} + + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + + object.entries@1.1.7: + resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} + engines: {node: '>= 0.4'} + + object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.7: + resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.groupby@1.0.1: + resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} + + object.hasown@1.1.4: + resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} + engines: {node: '>= 0.4'} + + object.values@1.1.7: + resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + engines: {node: '>= 0.4'} + + object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} + engines: {node: '>= 0.4'} + + oidc-token-hash@5.0.3: + resolution: {integrity: sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==} + engines: {node: ^10.13.0 || >=12.0.0} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + openid-client@5.6.5: + resolution: {integrity: sha512-5P4qO9nGJzB5PI0LFlhj4Dzg3m4odt0qsJTfyEtZyOlkgpILwEioOhVVJOrS1iVH494S4Ee5OCjjg6Bf5WOj3w==} + + optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + outdent@0.5.0: + resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} + + p-filter@2.1.0: + resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} + engines: {node: '>=8'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-map@2.1.0: + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + engines: {node: '>=6'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + papaparse@5.4.1: + resolution: {integrity: sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-entities@4.0.1: + resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-numeric-range@1.3.0: + resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} + + parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + + parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + + parseley@0.12.1: + resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + peberminta@0.9.0: + resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} + + picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pkg-dir@7.0.0: + resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} + engines: {node: '>=14.16'} + + playwright-core@1.45.0: + resolution: {integrity: sha512-lZmHlFQ0VYSpAs43dRq1/nJ9G/6SiTI7VPqidld9TDefL9tX87bTKExWZZUF5PeRyqtXqd8fQi2qmfIedkwsNQ==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.45.0: + resolution: {integrity: sha512-4z3ac3plDfYzGB6r0Q3LF8POPR20Z8D0aXcxbJvmfMgSSq1hkcgvFRXJk9rUq5H/MJ0Ktal869hhOdI/zUTeLA==} + engines: {node: '>=18'} + hasBin: true + + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.0.1: + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-load-config@4.0.1: + resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-nested@6.0.1: + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-selector-parser@6.0.13: + resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.28: + resolution: {integrity: sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==} + engines: {node: ^10 || ^12 || >=14} + + postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + + preact-render-to-string@5.2.3: + resolution: {integrity: sha512-aPDxUn5o3GhWdtJtW0svRC2SS/l8D9MAgo2+AWml+BhDImb27ALf04Q2d+AHqUUOc6RdSXFIBVa2gxzgMKgtZA==} + peerDependencies: + preact: '>=10' + + preact@10.11.3: + resolution: {integrity: sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==} + + preferred-pm@3.0.3: + resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} + engines: {node: '>=10'} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + + prettier-plugin-tailwindcss@0.6.2: + resolution: {integrity: sha512-eFefm4cg+1c2B57+H274Qm//CTWBdtQN9ansl0YTP/8TC8x3bugCTQSS/e4FC5Ctl9djhTzsbcMrZ7x2/abIow==} + engines: {node: '>=14.21.3'} + peerDependencies: + '@ianvs/prettier-plugin-sort-imports': '*' + '@prettier/plugin-pug': '*' + '@shopify/prettier-plugin-liquid': '*' + '@trivago/prettier-plugin-sort-imports': '*' + '@zackad/prettier-plugin-twig-melody': '*' + prettier: ^3.0 + prettier-plugin-astro: '*' + prettier-plugin-css-order: '*' + prettier-plugin-import-sort: '*' + prettier-plugin-jsdoc: '*' + prettier-plugin-marko: '*' + prettier-plugin-organize-attributes: '*' + prettier-plugin-organize-imports: '*' + prettier-plugin-sort-imports: '*' + prettier-plugin-style-order: '*' + prettier-plugin-svelte: '*' + peerDependenciesMeta: + '@ianvs/prettier-plugin-sort-imports': + optional: true + '@prettier/plugin-pug': + optional: true + '@shopify/prettier-plugin-liquid': + optional: true + '@trivago/prettier-plugin-sort-imports': + optional: true + '@zackad/prettier-plugin-twig-melody': + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-css-order: + optional: true + prettier-plugin-import-sort: + optional: true + prettier-plugin-jsdoc: + optional: true + prettier-plugin-marko: + optional: true + prettier-plugin-organize-attributes: + optional: true + prettier-plugin-organize-imports: + optional: true + prettier-plugin-sort-imports: + optional: true + prettier-plugin-style-order: + optional: true + prettier-plugin-svelte: + optional: true + + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} + engines: {node: '>=14'} + hasBin: true + + pretty-format@3.8.0: + resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==} + + prisma@5.10.2: + resolution: {integrity: sha512-hqb/JMz9/kymRE25pMWCxkdyhbnIWrq+h7S6WysJpdnCvhstbJSNP/S6mScEcqiB8Qv2F+0R3yG+osRaWqZacQ==} + engines: {node: '>=16.13'} + hasBin: true + + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + property-information@6.2.0: + resolution: {integrity: sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==} + + proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + pseudomap@1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + + punycode@2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} + + qs@6.11.2: + resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} + engines: {node: '>=0.6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + quick-lru@4.0.1: + resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} + engines: {node: '>=8'} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + react-dom@18.2.0: + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 + + react-dropzone@14.2.3: + resolution: {integrity: sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==} + engines: {node: '>= 10.13'} + peerDependencies: + react: '>= 16.8 || 18.0.0' + + react-error-boundary@4.0.12: + resolution: {integrity: sha512-kJdxdEYlb7CPC1A0SeUY38cHpjuu6UkvzKiAmqmOFL21VRfMhOcWxTCBgLVCO0VEMh9JhFNcVaXlV4/BTpiwOA==} + peerDependencies: + react: '>=16.13.1' + + react-hook-form@7.45.4: + resolution: {integrity: sha512-HGDV1JOOBPZj10LB3+OZgfDBTn+IeEsNOKiq/cxbQAIbKaiJUe/KV8DBUzsx0Gx/7IG/orWqRRm736JwOfUSWQ==} + engines: {node: '>=12.22.0'} + peerDependencies: + react: ^16.8.0 || ^17 || ^18 + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-markdown@9.0.1: + resolution: {integrity: sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==} + peerDependencies: + '@types/react': '>=18' + react: '>=18' + + react-paginate@8.2.0: + resolution: {integrity: sha512-sJCz1PW+9PNIjUSn919nlcRVuleN2YPoFBOvL+6TPgrH/3lwphqiSOgdrLafLdyLDxsgK+oSgviqacF4hxsDIw==} + peerDependencies: + react: ^16 || ^17 || ^18 + + react-papaparse@4.4.0: + resolution: {integrity: sha512-xTEwHZYJ+1dh9mQDQjjwJXmWyX20DdZ52u+ddw75V+Xm5qsjXSvWmC7c8K82vRwMjKAOH2S9uFyGpHEyEztkUQ==} + engines: {node: '>=8', npm: '>=5'} + + react-remove-scroll-bar@2.3.4: + resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.5.5: + resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.5.7: + resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-style-singleton@2.2.1: + resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + + read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + + read-yaml-file@1.1.0: + resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} + engines: {node: '>=6'} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + + reflect.getprototypeof@1.0.4: + resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} + engines: {node: '>= 0.4'} + + refractor@4.8.1: + resolution: {integrity: sha512-/fk5sI0iTgFYlmVGYVew90AoYnNMP6pooClx/XKqyeeCQXrL0Kvgn8V0VEht5ccdljbzzF1i3Q213gcntkRExg==} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regexp.prototype.flags@1.5.1: + resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + engines: {node: '>= 0.4'} + + regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} + + rehype-attr@3.0.3: + resolution: {integrity: sha512-Up50Xfra8tyxnkJdCzLBIBtxOcB2M1xdeKe1324U06RAvSjYm7ULSeoM+b/nYPQPVd7jsXJ9+39IG1WAJPXONw==} + engines: {node: '>=16'} + + rehype-autolink-headings@7.1.0: + resolution: {integrity: sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw==} + + rehype-ignore@2.0.2: + resolution: {integrity: sha512-BpAT/3lU9DMJ2siYVD/dSR0A/zQgD6Fb+fxkJd4j+wDVy6TYbYpK+FZqu8eM9EuNKGvi4BJR7XTZ/+zF02Dq8w==} + engines: {node: '>=16'} + + rehype-parse@8.0.5: + resolution: {integrity: sha512-Ds3RglaY/+clEX2U2mHflt7NlMA72KspZ0JLUJgBBLpRddBcEw3H8uYZQliQriku22NZpYMfjDdSgHcjxue24A==} + + rehype-parse@9.0.0: + resolution: {integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==} + + rehype-prism-plus@1.6.3: + resolution: {integrity: sha512-F6tn376zimnvy+xW0bSnryul+rvVL7NhDIkavc9kAuzDx5zIZW04A6jdXPkcFBhojcqZB8b6pHt6CLqiUx+Tbw==} + + rehype-prism-plus@2.0.0: + resolution: {integrity: sha512-FeM/9V2N7EvDZVdR2dqhAzlw5YI49m9Tgn7ZrYJeYHIahM6gcXpH0K1y2gNnKanZCydOMluJvX2cB9z3lhY8XQ==} + + rehype-raw@7.0.0: + resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} + + rehype-rewrite@4.0.2: + resolution: {integrity: sha512-rjLJ3z6fIV11phwCqHp/KRo8xuUCO8o9bFJCNw5o6O2wlLk6g8r323aRswdGBQwfXPFYeSuZdAjp4tzo6RGqEg==} + engines: {node: '>=16.0.0'} + + rehype-sanitize@6.0.0: + resolution: {integrity: sha512-CsnhKNsyI8Tub6L4sm5ZFsme4puGfc6pYylvXo1AeqaGbjOYyzNv3qZPwvs0oMJ39eryyeOdmxwUIo94IpEhqg==} + + rehype-slug@6.0.0: + resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} + + rehype-stringify@10.0.0: + resolution: {integrity: sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==} + + rehype@13.0.1: + resolution: {integrity: sha512-AcSLS2mItY+0fYu9xKxOu1LhUZeBZZBx8//5HKzF+0XP+eP8+6a5MXn2+DW2kfXR6Dtp1FEXMVrjyKAcvcU8vg==} + + relative-luminance@2.0.1: + resolution: {integrity: sha512-wFuITNthJilFPwkK7gNJcULxXBcfFZvZORsvdvxeOdO44wCeZnuQkf3nFFzOR/dpJNxYsdRZJLsepWbyKhnMww==} + + remark-gfm@4.0.0: + resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} + + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + + remark-rehype@11.0.0: + resolution: {integrity: sha512-vx8x2MDMcxuE4lBmQ46zYUDfcFMmvg80WYX+UNLeG6ixjdCCLcw1lrgAukwBTuOFsS78eoAedHGn9sNM0w7TPw==} + + remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + + resend@3.2.0: + resolution: {integrity: sha512-lDHhexiFYPoLXy7zRlJ8D5eKxoXy6Tr9/elN3+Vv7PkUoYuSSD1fpiIfa/JYXEWyiyN2UczkCTLpkT8dDPJ4Pg==} + engines: {node: '>=18'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve@1.22.4: + resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} + hasBin: true + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + + restore-cursor@4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + retry-request@7.0.2: + resolution: {integrity: sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==} + engines: {node: '>=14'} + + retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.3.0: + resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + + rollup@2.78.0: + resolution: {integrity: sha512-4+YfbQC9QEVvKTanHhIAFVUFSRsezvQF8vFOJwtGfb9Bb+r014S+qryr9PSmw8x6sMnPkmFBGAvIFVQxvJxjtg==} + engines: {node: '>=10.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-array-concat@1.0.1: + resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} + engines: {node: '>=0.4'} + + safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-regex-test@1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + + safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + scheduler@0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + + schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + + schema-utils@4.2.0: + resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} + engines: {node: '>= 12.13.0'} + + selderee@0.11.0: + resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + + semver@7.6.2: + resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} + engines: {node: '>=10'} + hasBin: true + + serialize-javascript@6.0.1: + resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + set-function-length@1.1.1: + resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} + engines: {node: '>= 0.4'} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.1: + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + + slugify@1.6.6: + resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} + engines: {node: '>=8.0.0'} + + smartwrap@2.0.2: + resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} + engines: {node: '>=6'} + hasBin: true + + sonner@1.4.0: + resolution: {integrity: sha512-nvkTsIuOmi9e5Wz5If8ldasJjZNVfwiXYijBi2dbijvTQnQppvMcXTFNxL/NUFWlI2yJ1JX7TREDsg+gYm9WyA==} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + + source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + spawndamnit@2.0.0: + resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.13: + resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + stacktrace-parser@0.1.10: + resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} + engines: {node: '>=6'} + + stream-events@1.0.5: + resolution: {integrity: sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==} + + stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + + stream-transform@2.1.3: + resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} + + streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string.prototype.matchall@4.0.11: + resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} + engines: {node: '>= 0.4'} + + string.prototype.trim@1.2.8: + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + engines: {node: '>= 0.4'} + + string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.7: + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + + string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + + string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + stringify-entities@4.0.3: + resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + stripe@14.16.0: + resolution: {integrity: sha512-1gOr2LzafWV84cPIO5Md/QPh4XVPLKULVuRpBVOV3Plq3seiHmg/eeOktX+hDl8jpNZuORHYaUJGrNqrABLwdg==} + engines: {node: '>=12.*'} + + strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + + stubs@3.0.0: + resolution: {integrity: sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==} + + style-to-object@1.0.5: + resolution: {integrity: sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==} + + styled-jsx@5.1.1: + resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + + sucrase@3.34.0: + resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} + engines: {node: '>=8'} + hasBin: true + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + synckit@0.8.8: + resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} + engines: {node: ^14.18.0 || >=16.0.0} + + tailwind-merge@2.2.0: + resolution: {integrity: sha512-SqqhhaL0T06SW59+JVNfAqKdqLs0497esifRrZ7jOaefP3o64fdFNDMrAQWZFMxTLJPiHVjRLUywT8uFz1xNWQ==} + + tailwindcss-animate@1.0.6: + resolution: {integrity: sha512-4WigSGMvbl3gCCact62ZvOngA+PRqhAn7si3TQ3/ZuPuQZcIEtVap+ENSXbzWhpojKB8CpvnIsrwBu8/RnHtuw==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + + tailwindcss@3.4.1: + resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==} + engines: {node: '>=14.0.0'} + hasBin: true + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + teeny-request@9.0.0: + resolution: {integrity: sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==} + engines: {node: '>=14'} + + term-size@2.2.1: + resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} + engines: {node: '>=8'} + + terser-webpack-plugin@5.3.10: + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + + terser@5.26.0: + resolution: {integrity: sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ==} + engines: {node: '>=10'} + hasBin: true + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + trim-newlines@3.0.1: + resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} + engines: {node: '>=8'} + + trough@2.1.0: + resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} + + ts-api-utils@1.3.0: + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + ts-node@10.9.1: + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + + tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + + tty-table@4.2.1: + resolution: {integrity: sha512-xz0uKo+KakCQ+Dxj1D/tKn2FSyreSYWzdkL/BYhgN6oMW808g8QRMuh1atAV9fjTPbWBjfbkKQpI/5rEcnAc7g==} + engines: {node: '>=8.0.0'} + hasBin: true + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@0.13.1: + resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} + engines: {node: '>=10'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + + type-fest@0.7.1: + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} + + type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + + type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + + typed-array-buffer@1.0.0: + resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + engines: {node: '>= 0.4'} + + typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.0: + resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.0: + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + + typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} + + typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} + hasBin: true + + unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + unified@10.1.2: + resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} + + unified@11.0.4: + resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} + + unist-util-filter@4.0.1: + resolution: {integrity: sha512-RynicUM/vbOSTSiUK+BnaK9XMfmQUh6gyi7L6taNgc7FIf84GukXVV3ucGzEN/PhUUkdP5hb1MmXc+3cvPUm5Q==} + + unist-util-filter@5.0.1: + resolution: {integrity: sha512-pHx7D4Zt6+TsfwylH9+lYhBhzyhEnCXs/lbq/Hstxno5z4gVdyc2WEW0asfjGKPyG4pEKrnBv5hdkO6+aRnQJw==} + + unist-util-is@5.2.1: + resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} + + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-remove-position@5.0.0: + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} + + unist-util-stringify-position@3.0.3: + resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@5.1.3: + resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@4.1.2: + resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + update-browserslist-db@1.0.11: + resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + update-browserslist-db@1.0.13: + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + use-callback-ref@1.3.0: + resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-debounce@10.0.0: + resolution: {integrity: sha512-XRjvlvCB46bah9IBXVnq/ACP2lxqXyZj0D9hj4K5OzNroMDpTEBg8Anuh1/UfRTRs7pLhQ+RiNxxwZu9+MVl1A==} + engines: {node: '>= 16.0.0'} + peerDependencies: + react: '>=16.8.0' + + use-sidecar@1.1.2: + resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + vaul@0.9.0: + resolution: {integrity: sha512-bZSySGbAHiTXmZychprnX/dE0EsSige88xtyyL3/MCRbrFotRPQZo7UdydGXZWw+CKbNOw5Ow8gwAo93/nB/Cg==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + + vfile-location@4.1.0: + resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==} + + vfile-location@5.0.2: + resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} + + vfile-message@3.1.4: + resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} + + vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + + vfile@5.3.7: + resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} + + vfile@6.0.1: + resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} + + watchpack@2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} + + wcag-contrast@3.0.0: + resolution: {integrity: sha512-RWbpg/S7FOXDCwqC2oFhN/vh8dHzj0OS6dpyOSDHyQFSmqmR+lAUStV/ziTT1GzDqL9wol+nZQB4vCi5yEak+w==} + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + web-namespaces@2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + + webpack@5.89.0: + resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + + which-builtin-type@1.1.3: + resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + engines: {node: '>= 0.4'} + + which-collection@1.0.1: + resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} + + which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + + which-pm@2.0.0: + resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} + engines: {node: '>=8.15'} + + which-typed-array@1.1.13: + resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml@2.3.3: + resolution: {integrity: sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==} + engines: {node: '>= 14'} + + yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + + zod@3.22.4: + resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@aashutoshrathi/word-wrap@1.2.6': {} + + '@alloc/quick-lru@5.2.0': {} + + '@ampproject/remapping@2.2.1': + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + + '@babel/code-frame@7.22.13': + dependencies: + '@babel/highlight': 7.22.13 + chalk: 2.4.2 + + '@babel/compat-data@7.22.9': {} + + '@babel/core@7.22.17': + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.22.15 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-module-transforms': 7.22.17(@babel/core@7.22.17) + '@babel/helpers': 7.22.15 + '@babel/parser': 7.22.16 + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.17 + '@babel/types': 7.22.17 + convert-source-map: 1.9.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.22.15': + dependencies: + '@babel/types': 7.22.17 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + jsesc: 2.5.2 + + '@babel/helper-compilation-targets@7.22.15': + dependencies: + '@babel/compat-data': 7.22.9 + '@babel/helper-validator-option': 7.22.15 + browserslist: 4.21.10 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-environment-visitor@7.22.5': {} + + '@babel/helper-function-name@7.22.5': + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.22.17 + + '@babel/helper-hoist-variables@7.22.5': + dependencies: + '@babel/types': 7.22.17 + + '@babel/helper-module-imports@7.22.15': + dependencies: + '@babel/types': 7.22.17 + + '@babel/helper-module-transforms@7.22.17(@babel/core@7.22.17)': + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.15 + + '@babel/helper-simple-access@7.22.5': + dependencies: + '@babel/types': 7.22.17 + + '@babel/helper-split-export-declaration@7.22.6': + dependencies: + '@babel/types': 7.22.17 + + '@babel/helper-string-parser@7.22.5': {} + + '@babel/helper-validator-identifier@7.22.15': {} + + '@babel/helper-validator-option@7.22.15': {} + + '@babel/helpers@7.22.15': + dependencies: + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.17 + '@babel/types': 7.22.17 + transitivePeerDependencies: + - supports-color + + '@babel/highlight@7.22.13': + dependencies: + '@babel/helper-validator-identifier': 7.22.15 + chalk: 2.4.2 + js-tokens: 4.0.0 + + '@babel/parser@7.22.16': + dependencies: + '@babel/types': 7.22.17 + + '@babel/runtime@7.22.11': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/runtime@7.23.6': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/runtime@7.23.7': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/template@7.22.15': + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/parser': 7.22.16 + '@babel/types': 7.22.17 + + '@babel/traverse@7.22.17': + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.22.15 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.22.16 + '@babel/types': 7.22.17 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.22.17': + dependencies: + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.15 + to-fast-properties: 2.0.0 + + '@changesets/apply-release-plan@7.0.0': + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/config': 3.0.0 + '@changesets/get-version-range-type': 0.4.0 + '@changesets/git': 3.0.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + detect-indent: 6.1.0 + fs-extra: 7.0.1 + lodash.startcase: 4.4.0 + outdent: 0.5.0 + prettier: 2.8.8 + resolve-from: 5.0.0 + semver: 7.5.4 + + '@changesets/assemble-release-plan@6.0.0': + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.0.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + semver: 7.5.4 + + '@changesets/changelog-git@0.2.0': + dependencies: + '@changesets/types': 6.0.0 + + '@changesets/cli@2.27.1': + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/apply-release-plan': 7.0.0 + '@changesets/assemble-release-plan': 6.0.0 + '@changesets/changelog-git': 0.2.0 + '@changesets/config': 3.0.0 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.0.0 + '@changesets/get-release-plan': 4.0.0 + '@changesets/git': 3.0.0 + '@changesets/logger': 0.1.0 + '@changesets/pre': 2.0.0 + '@changesets/read': 0.6.0 + '@changesets/types': 6.0.0 + '@changesets/write': 0.3.0 + '@manypkg/get-packages': 1.1.3 + '@types/semver': 7.5.1 + ansi-colors: 4.1.3 + chalk: 2.4.2 + ci-info: 3.8.0 + enquirer: 2.4.1 + external-editor: 3.1.0 + fs-extra: 7.0.1 + human-id: 1.0.2 + meow: 6.1.1 + outdent: 0.5.0 + p-limit: 2.3.0 + preferred-pm: 3.0.3 + resolve-from: 5.0.0 + semver: 7.5.4 + spawndamnit: 2.0.0 + term-size: 2.2.1 + tty-table: 4.2.1 + + '@changesets/config@3.0.0': + dependencies: + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.0.0 + '@changesets/logger': 0.1.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + micromatch: 4.0.5 + + '@changesets/errors@0.2.0': + dependencies: + extendable-error: 0.1.7 + + '@changesets/get-dependents-graph@2.0.0': + dependencies: + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + chalk: 2.4.2 + fs-extra: 7.0.1 + semver: 7.5.4 + + '@changesets/get-release-plan@4.0.0': + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/assemble-release-plan': 6.0.0 + '@changesets/config': 3.0.0 + '@changesets/pre': 2.0.0 + '@changesets/read': 0.6.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + + '@changesets/get-version-range-type@0.4.0': {} + + '@changesets/git@3.0.0': + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/errors': 0.2.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + is-subdir: 1.2.0 + micromatch: 4.0.5 + spawndamnit: 2.0.0 + + '@changesets/logger@0.1.0': + dependencies: + chalk: 2.4.2 + + '@changesets/parse@0.4.0': + dependencies: + '@changesets/types': 6.0.0 + js-yaml: 3.14.1 + + '@changesets/pre@2.0.0': + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/errors': 0.2.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + + '@changesets/read@0.6.0': + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/git': 3.0.0 + '@changesets/logger': 0.1.0 + '@changesets/parse': 0.4.0 + '@changesets/types': 6.0.0 + chalk: 2.4.2 + fs-extra: 7.0.1 + p-filter: 2.1.0 + + '@changesets/types@4.1.0': {} + + '@changesets/types@6.0.0': {} + + '@changesets/write@0.3.0': + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/types': 6.0.0 + fs-extra: 7.0.1 + human-id: 1.0.2 + prettier: 2.8.8 + + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + + '@emoji-mart/data@1.2.1': {} + + '@emoji-mart/react@1.1.1(emoji-mart@5.6.0)(react@18.2.0)': + dependencies: + emoji-mart: 5.6.0 + react: 18.2.0 + + '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': + dependencies: + eslint: 8.57.0 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.11.0': {} + + '@eslint-community/regexpp@4.8.0': {} + + '@eslint/eslintrc@2.1.4': + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.21.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@8.57.0': {} + + '@floating-ui/core@1.4.1': + dependencies: + '@floating-ui/utils': 0.1.1 + + '@floating-ui/dom@1.5.1': + dependencies: + '@floating-ui/core': 1.4.1 + '@floating-ui/utils': 0.1.1 + + '@floating-ui/react-dom@2.0.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@floating-ui/dom': 1.5.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@floating-ui/utils@0.1.1': {} + + '@google-cloud/paginator@5.0.0': + dependencies: + arrify: 2.0.1 + extend: 3.0.2 + + '@google-cloud/projectify@4.0.0': {} + + '@google-cloud/promisify@4.0.0': {} + + '@google-cloud/storage@7.7.0': + dependencies: + '@google-cloud/paginator': 5.0.0 + '@google-cloud/projectify': 4.0.0 + '@google-cloud/promisify': 4.0.0 + abort-controller: 3.0.0 + async-retry: 1.3.3 + compressible: 2.0.18 + duplexify: 4.1.2 + ent: 2.2.0 + fast-xml-parser: 4.3.4 + gaxios: 6.2.0 + google-auth-library: 9.6.3 + mime: 3.0.0 + mime-types: 2.1.35 + p-limit: 3.1.0 + retry-request: 7.0.2 + teeny-request: 9.0.0 + uuid: 8.3.2 + transitivePeerDependencies: + - encoding + - supports-color + + '@hookform/resolvers@3.3.4(react-hook-form@7.45.4(react@18.2.0))': + dependencies: + react-hook-form: 7.45.4(react@18.2.0) + + '@humanwhocodes/config-array@0.11.14': + dependencies: + '@humanwhocodes/object-schema': 2.0.2 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/object-schema@2.0.2': {} + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@jridgewell/gen-mapping@0.3.3': + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.20 + + '@jridgewell/resolve-uri@3.1.1': {} + + '@jridgewell/set-array@1.1.2': {} + + '@jridgewell/source-map@0.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + + '@jridgewell/sourcemap-codec@1.4.15': {} + + '@jridgewell/trace-mapping@0.3.20': + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + + '@manypkg/find-root@1.1.0': + dependencies: + '@babel/runtime': 7.23.7 + '@types/node': 12.20.55 + find-up: 4.1.0 + fs-extra: 8.1.0 + + '@manypkg/get-packages@1.1.3': + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/types': 4.1.0 + '@manypkg/find-root': 1.1.0 + fs-extra: 8.1.0 + globby: 11.1.0 + read-yaml-file: 1.1.0 + + '@next-auth/prisma-adapter@1.0.7(@prisma/client@5.10.2(prisma@5.10.2))(next-auth@4.24.7(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))': + dependencies: + '@prisma/client': 5.10.2(prisma@5.10.2) + next-auth: 4.24.7(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + + '@next/env@14.2.4': {} + + '@next/eslint-plugin-next@14.1.0': + dependencies: + glob: 10.3.10 + + '@next/swc-darwin-arm64@14.2.4': + optional: true + + '@next/swc-darwin-x64@14.2.4': + optional: true + + '@next/swc-linux-arm64-gnu@14.2.4': + optional: true + + '@next/swc-linux-arm64-musl@14.2.4': + optional: true + + '@next/swc-linux-x64-gnu@14.2.4': + optional: true + + '@next/swc-linux-x64-musl@14.2.4': + optional: true + + '@next/swc-win32-arm64-msvc@14.2.4': + optional: true + + '@next/swc-win32-ia32-msvc@14.2.4': + optional: true + + '@next/swc-win32-x64-msvc@14.2.4': + optional: true + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + + '@one-ini/wasm@0.1.1': {} + + '@panva/hkdf@1.1.1': {} + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@pkgr/core@0.1.1': {} + + '@playwright/test@1.45.0': + dependencies: + playwright: 1.45.0 + + '@prisma/client@5.10.2(prisma@5.10.2)': + optionalDependencies: + prisma: 5.10.2 + + '@prisma/debug@5.10.2': {} + + '@prisma/engines-version@5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9': {} + + '@prisma/engines@5.10.2': + dependencies: + '@prisma/debug': 5.10.2 + '@prisma/engines-version': 5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9 + '@prisma/fetch-engine': 5.10.2 + '@prisma/get-platform': 5.10.2 + + '@prisma/fetch-engine@5.10.2': + dependencies: + '@prisma/debug': 5.10.2 + '@prisma/engines-version': 5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9 + '@prisma/get-platform': 5.10.2 + + '@prisma/get-platform@5.10.2': + dependencies: + '@prisma/debug': 5.10.2 + + '@radix-ui/colors@3.0.0': {} + + '@radix-ui/number@1.0.1': + dependencies: + '@babel/runtime': 7.23.7 + + '@radix-ui/primitive@1.0.1': + dependencies: + '@babel/runtime': 7.23.7 + + '@radix-ui/primitive@1.1.0': {} + + '@radix-ui/react-arrow@1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-arrow@1.1.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-avatar@1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-collection@1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-compose-refs@1.0.1(@types/react@18.0.27)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-compose-refs@1.1.0(@types/react@18.0.27)(react@18.2.0)': + dependencies: + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-context@1.0.1(@types/react@18.0.27)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-context@1.1.0(@types/react@18.0.27)(react@18.2.0)': + dependencies: + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-dialog@1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) + aria-hidden: 1.2.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.0.27)(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-direction@1.0.1(@types/react@18.0.27)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-dismissable-layer@1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-dismissable-layer@1.1.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-dropdown-menu@2.0.6(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-menu': 2.0.6(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-focus-guards@1.0.1(@types/react@18.0.27)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-focus-guards@1.1.0(@types/react@18.0.27)(react@18.2.0)': + dependencies: + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-focus-scope@1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-focus-scope@1.1.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-id@1.0.1(@types/react@18.0.27)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-id@1.1.0(@types/react@18.0.27)(react@18.2.0)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-label@2.0.2(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-menu@2.0.6(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) + aria-hidden: 1.2.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.0.27)(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-popover@1.1.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.1.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.1.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-id': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-popper': 1.2.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-portal': 1.1.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-presence': 1.1.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.0.27)(react@18.2.0) + aria-hidden: 1.2.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.7(@types/react@18.0.27)(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-popper@1.1.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@floating-ui/react-dom': 2.0.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-arrow': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-rect': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/rect': 1.0.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-popper@1.2.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@floating-ui/react-dom': 2.0.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-arrow': 1.1.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-rect': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/rect': 1.1.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-portal@1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-portal@1.1.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-presence@1.0.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-presence@1.1.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-primitive@1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-primitive@2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/react-slot': 1.1.0(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-roving-focus@1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-select@2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/number': 1.0.1 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + aria-hidden: 1.2.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.0.27)(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-slot@1.0.2(@types/react@18.0.27)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-slot@1.1.0(@types/react@18.0.27)(react@18.2.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-tabs@1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-tooltip@1.0.7(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.0.27)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.0.27)(react@18.2.0)': + dependencies: + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.0.27)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.0.27)(react@18.2.0)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.0.27)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.0.27)(react@18.2.0)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.0.27)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.0.27)(react@18.2.0)': + dependencies: + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-use-previous@1.0.1(@types/react@18.0.27)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-use-rect@1.0.1(@types/react@18.0.27)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/rect': 1.0.1 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-use-rect@1.1.0(@types/react@18.0.27)(react@18.2.0)': + dependencies: + '@radix-ui/rect': 1.1.0 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-use-size@1.0.1(@types/react@18.0.27)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.7 '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 react: 18.2.0 - dev: false + optionalDependencies: + '@types/react': 18.0.27 - /@radix-ui/react-use-size@1.1.0(@types/react@18.0.27)(react@18.2.0): - resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-size@1.1.0(@types/react@18.0.27)(react@18.2.0)': dependencies: '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 react: 18.2.0 - dev: false + optionalDependencies: + '@types/react': 18.0.27 - /@radix-ui/react-visually-hidden@1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + '@radix-ui/react-visually-hidden@1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.23.7 - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.0.27 + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: false + optionalDependencies: + '@types/react': 18.0.27 - /@radix-ui/rect@1.0.1: - resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} + '@radix-ui/rect@1.0.1': dependencies: '@babel/runtime': 7.23.7 - dev: false - /@radix-ui/rect@1.1.0: - resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} - dev: false + '@radix-ui/rect@1.1.0': {} - /@react-email/render@0.0.12: - resolution: {integrity: sha512-S8WRv/PqECEi6x0QJBj0asnAb5GFtJaHlnByxLETLkgJjc76cxMYDH4r9wdbuJ4sjkcbpwP3LPnVzwS+aIjT7g==} - engines: {node: '>=18.0.0'} + '@react-email/render@0.0.12': dependencies: html-to-text: 9.0.5 js-beautify: 1.14.11 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: false - /@rollup/plugin-commonjs@24.0.0(rollup@2.78.0): - resolution: {integrity: sha512-0w0wyykzdyRRPHOb0cQt14mIBLujfAv6GgP6g8nvg/iBxEm112t3YPPq+Buqe2+imvElTka+bjNlJ/gB56TD8g==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.68.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true + '@rollup/plugin-commonjs@24.0.0(rollup@2.78.0)': dependencies: '@rollup/pluginutils': 5.1.0(rollup@2.78.0) commondir: 1.0.1 @@ -2122,66 +6384,44 @@ packages: glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.27.0 + optionalDependencies: rollup: 2.78.0 - dev: false - /@rollup/pluginutils@5.1.0(rollup@2.78.0): - resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true + '@rollup/pluginutils@5.1.0(rollup@2.78.0)': dependencies: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 + optionalDependencies: rollup: 2.78.0 - dev: false - /@rushstack/eslint-patch@1.6.1: - resolution: {integrity: sha512-UY+FGM/2jjMkzQLn8pxcHGMaVLh9aEitG3zY2CiY7XHdLiz3bZOwa6oDxNqEMv7zZkV+cj5DOdz0cQ1BP5Hjgw==} - dev: true + '@rushstack/eslint-patch@1.6.1': {} - /@selderee/plugin-htmlparser2@0.11.0: - resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} + '@selderee/plugin-htmlparser2@0.11.0': dependencies: domhandler: 5.0.3 selderee: 0.11.0 - dev: false - /@sentry-internal/feedback@7.102.1: - resolution: {integrity: sha512-vY4hpLLMNLjICtWiizc7KeGbWOTUMGrF7C+9dPCztZww3CLgzWy9A7DvPj5hodRiYzpdRnAMl8yQnMFbYXh7bA==} - engines: {node: '>=12'} + '@sentry-internal/feedback@7.102.1': dependencies: '@sentry/core': 7.102.1 '@sentry/types': 7.102.1 '@sentry/utils': 7.102.1 - dev: false - /@sentry-internal/replay-canvas@7.102.1: - resolution: {integrity: sha512-GUX4RWI10uRjdjeyvCLtAAhWRVqnAnG6+yNxWfqUQ3qMA7B7XxG43KT2UhSnulmErNzODQ6hA68rGPwwYeRIww==} - engines: {node: '>=12'} + '@sentry-internal/replay-canvas@7.102.1': dependencies: '@sentry/core': 7.102.1 '@sentry/replay': 7.102.1 '@sentry/types': 7.102.1 '@sentry/utils': 7.102.1 - dev: false - /@sentry-internal/tracing@7.102.1: - resolution: {integrity: sha512-RkFlFyAC0fQOvBbBqnq0CLmFW5m3JJz9pKbZd5vXPraWAlniKSb1bC/4DF9SlNx0FN1LWG+IU3ISdpzwwTeAGg==} - engines: {node: '>=8'} + '@sentry-internal/tracing@7.102.1': dependencies: '@sentry/core': 7.102.1 '@sentry/types': 7.102.1 '@sentry/utils': 7.102.1 - dev: false - /@sentry/browser@7.102.1: - resolution: {integrity: sha512-7BOfPBiM7Kp6q/iy0JIbsBTxIASV+zWXByqqjuEMWGj3X2u4oRIfm3gv4erPU/l+CORQUVQZLSPGoIoM1gbB/A==} - engines: {node: '>=8'} + '@sentry/browser@7.102.1': dependencies: '@sentry-internal/feedback': 7.102.1 '@sentry-internal/replay-canvas': 7.102.1 @@ -2190,13 +6430,8 @@ packages: '@sentry/replay': 7.102.1 '@sentry/types': 7.102.1 '@sentry/utils': 7.102.1 - dev: false - /@sentry/cli@1.77.3: - resolution: {integrity: sha512-c3eDqcDRmy4TFz2bFU5Y6QatlpoBPPa8cxBooaS4aMQpnIdLYPF1xhyyiW0LQlDUNc3rRjNF7oN5qKoaRoMTQQ==} - engines: {node: '>= 8'} - hasBin: true - requiresBuild: true + '@sentry/cli@1.77.3': dependencies: https-proxy-agent: 5.0.1 mkdirp: 0.5.6 @@ -2207,36 +6442,20 @@ packages: transitivePeerDependencies: - encoding - supports-color - dev: false - /@sentry/core@7.102.1: - resolution: {integrity: sha512-QjY+LSP3du3J/C8x/FfEbRxgZgsWd0jfTJ4P7s9f219I1csK4OeBMC3UA1HwEa0pY/9OF6H/egW2CjOcMM5Pdg==} - engines: {node: '>=8'} + '@sentry/core@7.102.1': dependencies: '@sentry/types': 7.102.1 '@sentry/utils': 7.102.1 - dev: false - /@sentry/integrations@7.102.1: - resolution: {integrity: sha512-Its3Ru6xCAqpaLE3cTxW/b91js2SIFoXa8LWtQDJ7tmTdwPAbT8Pij1F4bOhhaqLYbjLtCXGl/NR2cffsiRLww==} - engines: {node: '>=8'} + '@sentry/integrations@7.102.1': dependencies: '@sentry/core': 7.102.1 '@sentry/types': 7.102.1 '@sentry/utils': 7.102.1 localforage: 1.10.0 - dev: false - /@sentry/nextjs@7.102.1(next@14.2.4)(react@18.2.0)(webpack@5.89.0): - resolution: {integrity: sha512-gOI/GD7DWhc3WucyYnepl8Nu5jmpa1YfR6jWDzTkPE2CV9zKK9zulTdqk+Aig9ch62SAmJOGkgejm5k9PE2XzQ==} - engines: {node: '>=8'} - peerDependencies: - next: ^10.0.8 || ^11.0 || ^12.0 || ^13.0 || ^14.0 - react: 16.x || 17.x || 18.x - webpack: '>= 4.0.0' - peerDependenciesMeta: - webpack: - optional: true + '@sentry/nextjs@7.102.1(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0)(webpack@5.89.0)': dependencies: '@rollup/plugin-commonjs': 24.0.0(rollup@2.78.0) '@sentry/core': 7.102.1 @@ -2248,32 +6467,25 @@ packages: '@sentry/vercel-edge': 7.102.1 '@sentry/webpack-plugin': 1.21.0 chalk: 3.0.0 - next: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.41.1)(react-dom@18.2.0)(react@18.2.0) + next: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 resolve: 1.22.8 rollup: 2.78.0 stacktrace-parser: 0.1.10 + optionalDependencies: webpack: 5.89.0 transitivePeerDependencies: - encoding - supports-color - dev: false - /@sentry/node@7.102.1: - resolution: {integrity: sha512-mb3vmM3SGuCruckPiv/Vafeh89UQavTfpPFoU6Jwe6dSpQ39BO8fO8k8Zev+/nP6r/FKLtX17mJobErHECXsYw==} - engines: {node: '>=8'} + '@sentry/node@7.102.1': dependencies: '@sentry-internal/tracing': 7.102.1 '@sentry/core': 7.102.1 '@sentry/types': 7.102.1 '@sentry/utils': 7.102.1 - dev: false - /@sentry/react@7.102.1(react@18.2.0): - resolution: {integrity: sha512-X4j2DgbktlEifnd21YJKCayAmff5hnaS+9MNz9OonEwD0ARi0ks7bo0wtWHMjPK20992MO+JwczVg/1BXJYDdQ==} - engines: {node: '>=8'} - peerDependencies: - react: 15.x || 16.x || 17.x || 18.x + '@sentry/react@7.102.1(react@18.2.0)': dependencies: '@sentry/browser': 7.102.1 '@sentry/core': 7.102.1 @@ -2281,375 +6493,194 @@ packages: '@sentry/utils': 7.102.1 hoist-non-react-statics: 3.3.2 react: 18.2.0 - dev: false - /@sentry/replay@7.102.1: - resolution: {integrity: sha512-HR/j9dGIvbrId8fh8mQlODx7JrhRmawEd9e9P3laPtogWCg/5TI+XPb2VGSaXOX9VWtb/6Z2UjHsaGjgg6YcuA==} - engines: {node: '>=12'} + '@sentry/replay@7.102.1': dependencies: '@sentry-internal/tracing': 7.102.1 '@sentry/core': 7.102.1 '@sentry/types': 7.102.1 '@sentry/utils': 7.102.1 - dev: false - /@sentry/types@7.102.1: - resolution: {integrity: sha512-htKorf3t/D0XYtM7foTcmG+rM47rDP6XdbvCcX5gBCuCYlzpM1vqCt2rl3FLktZC6TaIpFRJw1TLfx6m+x5jdA==} - engines: {node: '>=8'} - dev: false + '@sentry/types@7.102.1': {} - /@sentry/utils@7.102.1: - resolution: {integrity: sha512-+8WcFjHVV/HROXSAwMuUzveElBFC43EiTG7SNEBNgOUeQzQVTmbUZXyTVgLrUmtoWqvnIxCacoLxtZo1o67kdg==} - engines: {node: '>=8'} + '@sentry/utils@7.102.1': dependencies: '@sentry/types': 7.102.1 - dev: false - /@sentry/vercel-edge@7.102.1: - resolution: {integrity: sha512-iB6KCSxrvO172VjfQHGiYpyXPKNbx6Cz01GA1YDByRiUSgSpAq0qAFRY4lvd736w5KX4s9hen+XmZ7Gmqj8Pag==} - engines: {node: '>=8'} + '@sentry/vercel-edge@7.102.1': dependencies: '@sentry-internal/tracing': 7.102.1 '@sentry/core': 7.102.1 '@sentry/types': 7.102.1 '@sentry/utils': 7.102.1 - dev: false - /@sentry/webpack-plugin@1.21.0: - resolution: {integrity: sha512-x0PYIMWcsTauqxgl7vWUY6sANl+XGKtx7DCVnnY7aOIIlIna0jChTAPANTfA2QrK+VK+4I/4JxatCEZBnXh3Og==} - engines: {node: '>= 8'} + '@sentry/webpack-plugin@1.21.0': dependencies: '@sentry/cli': 1.77.3 webpack-sources: 3.2.3 transitivePeerDependencies: - encoding - supports-color - dev: false - /@slack/types@2.10.0: - resolution: {integrity: sha512-JXY9l49rf7dDgvfMZi0maFyugzGkvq0s5u+kDlD68WaRUhjZNLBDKZcsrycMsVVDFfyOK0R1UKkYGmy9Ph069Q==} - engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} - dev: false + '@slack/types@2.10.0': {} - /@slack/webhook@7.0.1: - resolution: {integrity: sha512-0Uj/GQ1H8nmeAVEx+7zcWb6/q/zsSOrlIaGi6zFnwgMSxjmV6xGsVwv8w6DaAdkUbtqa43v1cirWjySeZaCOIA==} - engines: {node: '>= 18', npm: '>= 8.6.0'} + '@slack/webhook@7.0.1': dependencies: '@slack/types': 2.10.0 '@types/node': 20.5.6 axios: 1.6.2 transitivePeerDependencies: - debug - dev: false - /@stripe/stripe-js@2.4.0: - resolution: {integrity: sha512-WFkQx1mbs2b5+7looI9IV1BLa3bIApuN3ehp9FP58xGg7KL9hCHDECgW3BwO9l9L+xBPVAD7Yjn1EhGe6EDTeA==} - dev: false + '@stripe/stripe-js@2.4.0': {} - /@swc-jotai/react-refresh@0.1.0: - resolution: {integrity: sha512-CWV4W06GdfQo3cW3CoUM2fp7avH4Z/suR7SvECNJnQbr6Sa9U3p7o10nXjNv2zT6z09bbNUPM55HBw5Nwd24Iw==} - dev: true + '@swc-jotai/react-refresh@0.1.0': {} - /@swc/counter@0.1.3: - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - dev: false + '@swc/counter@0.1.3': {} - /@swc/helpers@0.5.5: - resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} + '@swc/helpers@0.5.5': dependencies: '@swc/counter': 0.1.3 tslib: 2.6.2 - dev: false - /@tootallnate/once@2.0.0: - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} - dev: false + '@tootallnate/once@2.0.0': {} - /@tsconfig/node10@1.0.9: - resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + '@tsconfig/node10@1.0.9': {} - /@tsconfig/node12@1.0.11: - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + '@tsconfig/node12@1.0.11': {} - /@tsconfig/node14@1.0.3: - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + '@tsconfig/node14@1.0.3': {} - /@tsconfig/node16@1.0.4: - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + '@tsconfig/node16@1.0.4': {} - /@types/caseless@0.12.5: - resolution: {integrity: sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==} - dev: false + '@types/caseless@0.12.5': {} - /@types/debug@4.1.8: - resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} + '@types/debug@4.1.8': dependencies: '@types/ms': 0.7.31 - dev: false - /@types/eslint-scope@3.7.7: - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + '@types/eslint-scope@3.7.7': dependencies: '@types/eslint': 8.56.0 '@types/estree': 1.0.5 - dev: false - - /@types/eslint@8.56.0: - resolution: {integrity: sha512-FlsN0p4FhuYRjIxpbdXovvHQhtlG05O1GG/RNWvdAxTboR438IOTwmrY/vLA+Xfgg06BTkP045M3vpFwTMv1dg==} - dependencies: - '@types/estree': 1.0.5 - '@types/json-schema': 7.0.15 - dev: false - - /@types/estree-jsx@1.0.3: - resolution: {integrity: sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==} - dependencies: - '@types/estree': 1.0.5 - dev: false - - /@types/estree@1.0.5: - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - dev: false - - /@types/formidable@3.4.5: - resolution: {integrity: sha512-s7YPsNVfnsng5L8sKnG/Gbb2tiwwJTY1conOkJzTMRvJAlLFW1nEua+ADsJQu8N1c0oTHx9+d5nqg10WuT9gHQ==} - dependencies: - '@types/node': 20.10.6 - dev: true - - /@types/hast@2.3.5: - resolution: {integrity: sha512-SvQi0L/lNpThgPoleH53cdjB3y9zpLlVjRbqB3rH8hx1jiRSBGAhyjV3H+URFjNVRqt2EdYNrbZE5IsGlNfpRg==} - dependencies: - '@types/unist': 2.0.8 - dev: false - - /@types/hast@3.0.0: - resolution: {integrity: sha512-SoytUJRuf68HXYqcXicQIhCrLQjqeYU2anikr4G3p3Iz+OZO5QDQpDj++gv+RenHsnUBwNZ2dumBArF8VLSk2Q==} - dependencies: - '@types/unist': 3.0.0 - dev: false - - /@types/json-schema@7.0.12: - resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} - dev: false - - /@types/json-schema@7.0.15: - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - dev: false - - /@types/json5@0.0.29: - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - dev: true - - /@types/mdast@4.0.3: - resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} - dependencies: - '@types/unist': 3.0.0 - dev: false - - /@types/minimist@1.2.2: - resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} - dev: true - - /@types/ms@0.7.31: - resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} - dev: false - - /@types/node@12.20.55: - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - dev: true - - /@types/node@20.10.6: - resolution: {integrity: sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw==} - dependencies: - undici-types: 5.26.5 - - /@types/node@20.5.6: - resolution: {integrity: sha512-Gi5wRGPbbyOTX+4Y2iULQ27oUPrefaB0PxGQJnfyWN3kvEDGM3mIB5M/gQLmitZf7A9FmLeaqxD3L1CXpm3VKQ==} - - /@types/normalize-package-data@2.4.1: - resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} - dev: true - - /@types/papaparse@5.3.14: - resolution: {integrity: sha512-LxJ4iEFcpqc6METwp9f6BV6VVc43m6MfH0VqFosHvrUgfXiFe6ww7R3itkOQ+TCK6Y+Iv/+RnnvtRZnkc5Kc9g==} - dependencies: - '@types/node': 20.10.6 - dev: false - - /@types/prismjs@1.26.0: - resolution: {integrity: sha512-ZTaqn/qSqUuAq1YwvOFQfVW1AR/oQJlLSZVustdjwI+GZ8kr0MSHBj0tsXPW1EqHubx50gtBEjbPGsdZwQwCjQ==} - dev: false - - /@types/prop-types@15.7.5: - resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} - - /@types/react@18.0.27: - resolution: {integrity: sha512-3vtRKHgVxu3Jp9t718R9BuzoD4NcQ8YJ5XRzsSKxNDiDonD2MXIT1TmSkenxuCycZJoQT5d2vE8LwWJxBC1gmA==} - dependencies: - '@types/prop-types': 15.7.5 - '@types/scheduler': 0.16.3 - csstype: 3.1.2 - - /@types/request@2.48.12: - resolution: {integrity: sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==} - dependencies: - '@types/caseless': 0.12.5 - '@types/node': 20.10.6 - '@types/tough-cookie': 4.0.5 - form-data: 2.5.1 - dev: false - - /@types/scheduler@0.16.3: - resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} - - /@types/semver@7.5.1: - resolution: {integrity: sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==} - dev: true - - /@types/tough-cookie@4.0.5: - resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} - dev: false - - /@types/unist@2.0.8: - resolution: {integrity: sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==} - dev: false - - /@types/unist@3.0.0: - resolution: {integrity: sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==} - dev: false - - /@typeschema/core@0.13.2: - resolution: {integrity: sha512-pAt0MK249/9szYaoPuvzhSfOd3smrLhhwCCpUNB4onX32mRx5F3lzDIveIYGQkLYRq58xOX5sjoW+n72f/MLLw==} - peerDependencies: - '@types/json-schema': ^7.0.15 - peerDependenciesMeta: - '@types/json-schema': - optional: true - dev: false - /@typeschema/main@0.13.10(@typeschema/zod@0.13.3): - resolution: {integrity: sha512-ArdFC4GbgdVWWgPKg2tymxx2KHMus3xZ8I2kHwqw/0P4FtWBXCmSNAiBqDtpoXXF8h9cbcm7fVpcs5ftoWT9+A==} - peerDependencies: - '@typeschema/arktype': 0.13.2 - '@typeschema/class-validator': 0.1.2 - '@typeschema/deepkit': 0.13.4 - '@typeschema/effect': 0.13.4 - '@typeschema/fastest-validator': 0.1.0 - '@typeschema/function': 0.13.2 - '@typeschema/io-ts': 0.13.3 - '@typeschema/joi': 0.13.3 - '@typeschema/json': 0.13.3 - '@typeschema/ow': 0.13.3 - '@typeschema/runtypes': 0.13.2 - '@typeschema/superstruct': 0.13.2 - '@typeschema/suretype': 0.1.0 - '@typeschema/typebox': 0.13.4 - '@typeschema/valibot': 0.13.5 - '@typeschema/valita': 0.1.0 - '@typeschema/vine': 0.1.0 - '@typeschema/yup': 0.13.3 - '@typeschema/zod': 0.13.3 - peerDependenciesMeta: - '@typeschema/arktype': - optional: true - '@typeschema/class-validator': - optional: true - '@typeschema/deepkit': - optional: true - '@typeschema/effect': - optional: true - '@typeschema/fastest-validator': - optional: true - '@typeschema/function': - optional: true - '@typeschema/io-ts': - optional: true - '@typeschema/joi': - optional: true - '@typeschema/json': - optional: true - '@typeschema/ow': - optional: true - '@typeschema/runtypes': - optional: true - '@typeschema/superstruct': - optional: true - '@typeschema/suretype': - optional: true - '@typeschema/typebox': - optional: true - '@typeschema/valibot': - optional: true - '@typeschema/valita': - optional: true - '@typeschema/vine': - optional: true - '@typeschema/yup': - optional: true - '@typeschema/zod': - optional: true + '@types/eslint@8.56.0': dependencies: - '@typeschema/core': 0.13.2 - '@typeschema/zod': 0.13.3(zod@3.22.4) + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 + + '@types/estree-jsx@1.0.3': + dependencies: + '@types/estree': 1.0.5 + + '@types/estree@1.0.5': {} + + '@types/formidable@3.4.5': + dependencies: + '@types/node': 20.10.6 + + '@types/hast@2.3.5': + dependencies: + '@types/unist': 2.0.8 + + '@types/hast@3.0.0': + dependencies: + '@types/unist': 3.0.0 + + '@types/json-schema@7.0.12': {} + + '@types/json-schema@7.0.15': {} + + '@types/json5@0.0.29': {} + + '@types/mdast@4.0.3': + dependencies: + '@types/unist': 3.0.0 + + '@types/minimist@1.2.2': {} + + '@types/ms@0.7.31': {} + + '@types/node@12.20.55': {} + + '@types/node@20.10.6': + dependencies: + undici-types: 5.26.5 + + '@types/node@20.5.6': {} + + '@types/normalize-package-data@2.4.1': {} + + '@types/papaparse@5.3.14': + dependencies: + '@types/node': 20.10.6 + + '@types/prismjs@1.26.0': {} + + '@types/prop-types@15.7.5': {} + + '@types/react@18.0.27': + dependencies: + '@types/prop-types': 15.7.5 + '@types/scheduler': 0.16.3 + csstype: 3.1.2 + + '@types/request@2.48.12': + dependencies: + '@types/caseless': 0.12.5 + '@types/node': 20.10.6 + '@types/tough-cookie': 4.0.5 + form-data: 2.5.1 + + '@types/scheduler@0.16.3': {} + + '@types/semver@7.5.1': {} + + '@types/tough-cookie@4.0.5': {} + + '@types/unist@2.0.8': {} + + '@types/unist@3.0.0': {} + + '@typeschema/core@0.13.2(@types/json-schema@7.0.15)': + optionalDependencies: + '@types/json-schema': 7.0.15 + + '@typeschema/main@0.13.10(@types/json-schema@7.0.15)(@typeschema/zod@0.13.3(@types/json-schema@7.0.15)(zod@3.22.4))': + dependencies: + '@typeschema/core': 0.13.2(@types/json-schema@7.0.15) + optionalDependencies: + '@typeschema/zod': 0.13.3(@types/json-schema@7.0.15)(zod@3.22.4) transitivePeerDependencies: - '@types/json-schema' - dev: false - /@typeschema/zod@0.13.3(zod@3.22.4): - resolution: {integrity: sha512-p5Hs22WIKkM/vZTAvw5QOLSA0EJ6QBUsQMGUrXlYnTAE2LSR/F5MLsDUb18O6S5VxGjrzU7x3VIznD5qOafJRw==} - peerDependencies: - zod: ^3.22.4 - zod-to-json-schema: ^3.22.4 - peerDependenciesMeta: - zod: - optional: true - zod-to-json-schema: - optional: true + '@typeschema/zod@0.13.3(@types/json-schema@7.0.15)(zod@3.22.4)': dependencies: - '@typeschema/core': 0.13.2 + '@typeschema/core': 0.13.2(@types/json-schema@7.0.15) + optionalDependencies: zod: 3.22.4 transitivePeerDependencies: - '@types/json-schema' - dev: false - /@typescript-eslint/eslint-plugin@7.12.0(@typescript-eslint/parser@7.12.0)(eslint@8.57.0)(typescript@5.3.3): - resolution: {integrity: sha512-7F91fcbuDf/d3S8o21+r3ZncGIke/+eWk0EpO21LXhDfLahriZF9CGj4fbAetEjlaBdjdSm9a6VeXbpbT6Z40Q==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3)': dependencies: - '@eslint-community/regexpp': 4.10.1 + '@eslint-community/regexpp': 4.11.0 '@typescript-eslint/parser': 7.12.0(eslint@8.57.0)(typescript@5.3.3) - '@typescript-eslint/scope-manager': 7.12.0 - '@typescript-eslint/type-utils': 7.12.0(eslint@8.57.0)(typescript@5.3.3) - '@typescript-eslint/utils': 7.12.0(eslint@8.57.0)(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 7.12.0 + '@typescript-eslint/scope-manager': 7.14.1 + '@typescript-eslint/type-utils': 7.14.1(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/utils': 7.14.1(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 7.14.1 eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 ts-api-utils: 1.3.0(typescript@5.3.3) + optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3): - resolution: {integrity: sha512-C4bBaX2orvhK+LlwrY8oWGmSl4WolCfYm513gEccdWZj0CwGadbIADb0FtVEcI+WzUyjyoBj2JRP8g25E6IB8A==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3)': dependencies: '@typescript-eslint/scope-manager': 6.17.0 '@typescript-eslint/types': 6.17.0 @@ -2657,20 +6688,12 @@ packages: '@typescript-eslint/visitor-keys': 6.17.0 debug: 4.3.4 eslint: 8.57.0 + optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3): - resolution: {integrity: sha512-dm/J2UDY3oV3TKius2OUZIFHsomQmpHtsV0FTh1WO8EKgHLQ1QCADUqscPgTpU+ih1e21FQSRjXckHn3txn6kQ==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3)': dependencies: '@typescript-eslint/scope-manager': 7.12.0 '@typescript-eslint/types': 7.12.0 @@ -2678,65 +6701,45 @@ packages: '@typescript-eslint/visitor-keys': 7.12.0 debug: 4.3.4 eslint: 8.57.0 + optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/scope-manager@6.17.0: - resolution: {integrity: sha512-RX7a8lwgOi7am0k17NUO0+ZmMOX4PpjLtLRgLmT1d3lBYdWH4ssBUbwdmc5pdRX8rXon8v9x8vaoOSpkHfcXGA==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/scope-manager@6.17.0': dependencies: '@typescript-eslint/types': 6.17.0 '@typescript-eslint/visitor-keys': 6.17.0 - dev: true - /@typescript-eslint/scope-manager@7.12.0: - resolution: {integrity: sha512-itF1pTnN6F3unPak+kutH9raIkL3lhH1YRPGgt7QQOh43DQKVJXmWkpb+vpc/TiDHs6RSd9CTbDsc/Y+Ygq7kg==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/scope-manager@7.12.0': dependencies: '@typescript-eslint/types': 7.12.0 '@typescript-eslint/visitor-keys': 7.12.0 - dev: true - /@typescript-eslint/type-utils@7.12.0(eslint@8.57.0)(typescript@5.3.3): - resolution: {integrity: sha512-lib96tyRtMhLxwauDWUp/uW3FMhLA6D0rJ8T7HmH7x23Gk1Gwwu8UZ94NMXBvOELn6flSPiBrCKlehkiXyaqwA==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/scope-manager@7.14.1': dependencies: - '@typescript-eslint/typescript-estree': 7.12.0(typescript@5.3.3) - '@typescript-eslint/utils': 7.12.0(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/types': 7.14.1 + '@typescript-eslint/visitor-keys': 7.14.1 + + '@typescript-eslint/type-utils@7.14.1(eslint@8.57.0)(typescript@5.3.3)': + dependencies: + '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.3.3) + '@typescript-eslint/utils': 7.14.1(eslint@8.57.0)(typescript@5.3.3) debug: 4.3.4 eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.3.3) + optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/types@6.17.0: - resolution: {integrity: sha512-qRKs9tvc3a4RBcL/9PXtKSehI/q8wuU9xYJxe97WFxnzH8NWWtcW3ffNS+EWg8uPvIerhjsEZ+rHtDqOCiH57A==} - engines: {node: ^16.0.0 || >=18.0.0} - dev: true + '@typescript-eslint/types@6.17.0': {} - /@typescript-eslint/types@7.12.0: - resolution: {integrity: sha512-o+0Te6eWp2ppKY3mLCU+YA9pVJxhUJE15FV7kxuD9jgwIAa+w/ycGJBMrYDTpVGUM/tgpa9SeMOugSabWFq7bg==} - engines: {node: ^18.18.0 || >=20.0.0} - dev: true + '@typescript-eslint/types@7.12.0': {} - /@typescript-eslint/typescript-estree@6.17.0(typescript@5.3.3): - resolution: {integrity: sha512-gVQe+SLdNPfjlJn5VNGhlOhrXz4cajwFd5kAgWtZ9dCZf4XJf8xmgCTLIqec7aha3JwgLI2CK6GY1043FRxZwg==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/types@7.14.1': {} + + '@typescript-eslint/typescript-estree@6.17.0(typescript@5.3.3)': dependencies: '@typescript-eslint/types': 6.17.0 '@typescript-eslint/visitor-keys': 6.17.0 @@ -2745,20 +6748,13 @@ packages: is-glob: 4.0.3 minimatch: 9.0.3 semver: 7.6.2 - ts-api-utils: 1.0.3(typescript@5.3.3) + ts-api-utils: 1.3.0(typescript@5.3.3) + optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/typescript-estree@7.12.0(typescript@5.3.3): - resolution: {integrity: sha512-5bwqLsWBULv1h6pn7cMW5dXX/Y2amRqLaKqsASVwbBHMZSnHqE/HN4vT4fE0aFsiwxYvr98kqOWh1a8ZKXalCQ==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/typescript-estree@7.12.0(typescript@5.3.3)': dependencies: '@typescript-eslint/types': 7.12.0 '@typescript-eslint/visitor-keys': 7.12.0 @@ -2768,172 +6764,123 @@ packages: minimatch: 9.0.4 semver: 7.6.2 ts-api-utils: 1.3.0(typescript@5.3.3) + optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/utils@7.12.0(eslint@8.57.0)(typescript@5.3.3): - resolution: {integrity: sha512-Y6hhwxwDx41HNpjuYswYp6gDbkiZ8Hin9Bf5aJQn1bpTs3afYY4GX+MPYxma8jtoIV2GRwTM/UJm/2uGCVv+DQ==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 + '@typescript-eslint/typescript-estree@7.14.1(typescript@5.3.3)': + dependencies: + '@typescript-eslint/types': 7.14.1 + '@typescript-eslint/visitor-keys': 7.14.1 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.4 + semver: 7.6.2 + ts-api-utils: 1.3.0(typescript@5.3.3) + optionalDependencies: + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@7.14.1(eslint@8.57.0)(typescript@5.3.3)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@typescript-eslint/scope-manager': 7.12.0 - '@typescript-eslint/types': 7.12.0 - '@typescript-eslint/typescript-estree': 7.12.0(typescript@5.3.3) + '@typescript-eslint/scope-manager': 7.14.1 + '@typescript-eslint/types': 7.14.1 + '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.3.3) eslint: 8.57.0 transitivePeerDependencies: - supports-color - typescript - dev: true - /@typescript-eslint/visitor-keys@6.17.0: - resolution: {integrity: sha512-H6VwB/k3IuIeQOyYczyyKN8wH6ed8EwliaYHLxOIhyF0dYEIsN8+Bk3GE19qafeMKyZJJHP8+O1HiFhFLUNKSg==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/visitor-keys@6.17.0': dependencies: '@typescript-eslint/types': 6.17.0 eslint-visitor-keys: 3.4.3 - dev: true - /@typescript-eslint/visitor-keys@7.12.0: - resolution: {integrity: sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/visitor-keys@7.12.0': dependencies: '@typescript-eslint/types': 7.12.0 eslint-visitor-keys: 3.4.3 - dev: true - /@uiw/color-convert@2.0.8(@babel/runtime@7.23.7): - resolution: {integrity: sha512-yh0Q91FwTNCl5rMpNSQSlpazMz65V6V0LMIyssHk0ris4af9xQi+t01snLP+Dbjbk4HaSy7b8AptTP3NudggdQ==} - peerDependencies: - '@babel/runtime': '>=7.19.0' + '@typescript-eslint/visitor-keys@7.14.1': + dependencies: + '@typescript-eslint/types': 7.14.1 + eslint-visitor-keys: 3.4.3 + + '@uiw/color-convert@2.0.8(@babel/runtime@7.23.7)': dependencies: '@babel/runtime': 7.23.7 - dev: false - /@uiw/copy-to-clipboard@1.0.15: - resolution: {integrity: sha512-1bbGZ3T+SGmA07BoVPK4UCUDcowDN/moctviJGQexfOc9qL8TMLDQPr7mTPvDKhgJkgnlKkAQNFU8PiarIi9sQ==} - dev: false + '@uiw/copy-to-clipboard@1.0.15': {} - /@uiw/react-color-alpha@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-QppWrb7QBTIi0xZ6Q818tSi0LpZfkB323Q4F36a/vH4chzqOJAj6aCFM18d1CqjcLT4R1gnDhBSlW2dVD/4YoQ==} - peerDependencies: - '@babel/runtime': '>=7.19.0' - react: '>=16.9.0' - react-dom: '>=16.9.0' + '@uiw/react-color-alpha@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.23.7 '@uiw/color-convert': 2.0.8(@babel/runtime@7.23.7) - '@uiw/react-drag-event-interactive': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) + '@uiw/react-drag-event-interactive': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: false - /@uiw/react-color-editable-input-rgba@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-3bPmbyc1u6T++ap0pKl9w+x4+llDtLAuXY41NgNEUKhd63rMZjnVbVnFnzvIUDL92JRB5m+a+3Rr3n1TheeFew==} - peerDependencies: - '@babel/runtime': '>=7.19.0' - react: '>=16.9.0' - react-dom: '>=16.9.0' + '@uiw/react-color-editable-input-rgba@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.23.7 '@uiw/color-convert': 2.0.8(@babel/runtime@7.23.7) - '@uiw/react-color-editable-input': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) + '@uiw/react-color-editable-input': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: false - /@uiw/react-color-editable-input@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-WpehDwnIRTIOUYAnchSVjZu+TwJjA1vCiK+tMkgta/Nu2qI3bLLPTwKmIF1cQgcrEEKvfgaqOD3yP7BvjjKFJA==} - peerDependencies: - '@babel/runtime': '>=7.19.0' - react: '>=16.9.0' - react-dom: '>=16.9.0' + '@uiw/react-color-editable-input@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.23.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: false - /@uiw/react-color-hue@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-h3EKzc87/leSq94dBchAqN+0liPQZismqjlGOM2LsZadGqgn9pO4+3+SlO4kD5IdQIybCRXmK3zVUVGDdxOIYg==} - peerDependencies: - '@babel/runtime': '>=7.19.0' - react: '>=16.9.0' - react-dom: '>=16.9.0' + '@uiw/react-color-hue@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.23.7 '@uiw/color-convert': 2.0.8(@babel/runtime@7.23.7) - '@uiw/react-color-alpha': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) + '@uiw/react-color-alpha': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: false - /@uiw/react-color-saturation@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-cBZ5Al4YrHOYTcWiRQzjYiT5Llgv7pnFEZPy07dQ5NSL+FlzQmDfjVmQynXUqYG3IqQrx0Md4jJLLhhLP9Q5MQ==} - peerDependencies: - '@babel/runtime': '>=7.19.0' - react: '>=16.9.0' - react-dom: '>=16.9.0' + '@uiw/react-color-saturation@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.23.7 '@uiw/color-convert': 2.0.8(@babel/runtime@7.23.7) - '@uiw/react-drag-event-interactive': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) + '@uiw/react-drag-event-interactive': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: false - /@uiw/react-color-sketch@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-4b4mDMJHTsxuab75bmcH5OvDOvcam8irkYapIbcVLJzrBurWiuxflMdmsht37hKegPOsRp6m0NONfEGcUtg1fQ==} - peerDependencies: - '@babel/runtime': '>=7.19.0' - react: '>=16.9.0' - react-dom: '>=16.9.0' + '@uiw/react-color-sketch@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.23.7 '@uiw/color-convert': 2.0.8(@babel/runtime@7.23.7) - '@uiw/react-color-alpha': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) - '@uiw/react-color-editable-input': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) - '@uiw/react-color-editable-input-rgba': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) - '@uiw/react-color-hue': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) - '@uiw/react-color-saturation': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) - '@uiw/react-color-swatch': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) + '@uiw/react-color-alpha': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@uiw/react-color-editable-input': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@uiw/react-color-editable-input-rgba': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@uiw/react-color-hue': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@uiw/react-color-saturation': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@uiw/react-color-swatch': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: false - /@uiw/react-color-swatch@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-ZURW9tsTNv8ea5TJqYvN2gqoljrhtjPpzs4UC9C7vfI6JvDdjAzIyMwRwRVCftekOtvLvdGZzXYXbGxPF4BvTQ==} - peerDependencies: - '@babel/runtime': '>=7.19.0' - react: '>=16.9.0' - react-dom: '>=16.9.0' + '@uiw/react-color-swatch@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.23.7 '@uiw/color-convert': 2.0.8(@babel/runtime@7.23.7) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: false - /@uiw/react-drag-event-interactive@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Z8awDfUV7970Q6GfJmx6x7fx5KeHn6RPinQVRYRAnKS7QP6XgQOIvVn8bYKe5vd4vQeBbzIVYYySjYRWjA5heA==} - peerDependencies: - '@babel/runtime': '>=7.19.0' - react: '>=16.9.0' - react-dom: '>=16.9.0' + '@uiw/react-drag-event-interactive@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.23.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: false - /@uiw/react-markdown-preview@5.0.6(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-zd+T02xFhy6K75XPdkF3RRAWKzVzJctZ6CCpFDcn/CgdQlEj8Z+Z9k11nkPspzbznB43UYdoe4qQvnjgG6TfZw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' + '@uiw/react-markdown-preview@5.0.6(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.22.11 '@uiw/copy-to-clipboard': 1.0.15 @@ -2952,16 +6899,11 @@ packages: transitivePeerDependencies: - '@types/react' - supports-color - dev: false - /@uiw/react-md-editor@4.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-TvChXxUBUS21Rk0cVC0aeJoWcFZ/G0xN/Hc4Lv9FGFK8wPOHESd7Bcq4jNRHJ6lEzE/+d4Wh00lEVNKj+rQyBw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' + '@uiw/react-md-editor@4.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.23.7 - '@uiw/react-markdown-preview': 5.0.6(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@uiw/react-markdown-preview': 5.0.6(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) rehype: 13.0.1 @@ -2969,69 +6911,46 @@ packages: transitivePeerDependencies: - '@types/react' - supports-color - dev: false - /@ungap/structured-clone@1.2.0: - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + '@ungap/structured-clone@1.2.0': {} - /@webassemblyjs/ast@1.11.6: - resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + '@webassemblyjs/ast@1.11.6': dependencies: '@webassemblyjs/helper-numbers': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - dev: false - /@webassemblyjs/floating-point-hex-parser@1.11.6: - resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} - dev: false + '@webassemblyjs/floating-point-hex-parser@1.11.6': {} - /@webassemblyjs/helper-api-error@1.11.6: - resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} - dev: false + '@webassemblyjs/helper-api-error@1.11.6': {} - /@webassemblyjs/helper-buffer@1.11.6: - resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} - dev: false + '@webassemblyjs/helper-buffer@1.11.6': {} - /@webassemblyjs/helper-numbers@1.11.6: - resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + '@webassemblyjs/helper-numbers@1.11.6': dependencies: '@webassemblyjs/floating-point-hex-parser': 1.11.6 '@webassemblyjs/helper-api-error': 1.11.6 '@xtuc/long': 4.2.2 - dev: false - /@webassemblyjs/helper-wasm-bytecode@1.11.6: - resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} - dev: false + '@webassemblyjs/helper-wasm-bytecode@1.11.6': {} - /@webassemblyjs/helper-wasm-section@1.11.6: - resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} + '@webassemblyjs/helper-wasm-section@1.11.6': dependencies: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/helper-buffer': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/wasm-gen': 1.11.6 - dev: false - /@webassemblyjs/ieee754@1.11.6: - resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + '@webassemblyjs/ieee754@1.11.6': dependencies: '@xtuc/ieee754': 1.2.0 - dev: false - /@webassemblyjs/leb128@1.11.6: - resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + '@webassemblyjs/leb128@1.11.6': dependencies: '@xtuc/long': 4.2.2 - dev: false - /@webassemblyjs/utf8@1.11.6: - resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} - dev: false + '@webassemblyjs/utf8@1.11.6': {} - /@webassemblyjs/wasm-edit@1.11.6: - resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} + '@webassemblyjs/wasm-edit@1.11.6': dependencies: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/helper-buffer': 1.11.6 @@ -3041,29 +6960,23 @@ packages: '@webassemblyjs/wasm-opt': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 '@webassemblyjs/wast-printer': 1.11.6 - dev: false - /@webassemblyjs/wasm-gen@1.11.6: - resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + '@webassemblyjs/wasm-gen@1.11.6': dependencies: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 - dev: false - /@webassemblyjs/wasm-opt@1.11.6: - resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + '@webassemblyjs/wasm-opt@1.11.6': dependencies: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/helper-buffer': 1.11.6 '@webassemblyjs/wasm-gen': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 - dev: false - /@webassemblyjs/wasm-parser@1.11.6: - resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + '@webassemblyjs/wasm-parser@1.11.6': dependencies: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/helper-api-error': 1.11.6 @@ -3071,232 +6984,139 @@ packages: '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 - dev: false - /@webassemblyjs/wast-printer@1.11.6: - resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + '@webassemblyjs/wast-printer@1.11.6': dependencies: '@webassemblyjs/ast': 1.11.6 '@xtuc/long': 4.2.2 - dev: false - /@xtuc/ieee754@1.2.0: - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - dev: false + '@xtuc/ieee754@1.2.0': {} - /@xtuc/long@4.2.2: - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - dev: false + '@xtuc/long@4.2.2': {} - /abbrev@2.0.0: - resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: false + abbrev@2.0.0: {} - /abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} + abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 - dev: false - /acorn-import-assertions@1.9.0(acorn@8.11.3): - resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} - peerDependencies: - acorn: ^8 + acorn-import-assertions@1.9.0(acorn@8.11.3): dependencies: acorn: 8.11.3 - dev: false - /acorn-jsx@5.3.2(acorn@8.11.3): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-jsx@5.3.2(acorn@8.11.3): dependencies: acorn: 8.11.3 - dev: true - /acorn-walk@8.3.0: - resolution: {integrity: sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==} - engines: {node: '>=0.4.0'} + acorn-walk@8.3.0: {} - /acorn@8.10.0: - resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} - engines: {node: '>=0.4.0'} - hasBin: true + acorn@8.10.0: {} - /acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} - engines: {node: '>=0.4.0'} - hasBin: true + acorn@8.11.3: {} - /agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} + agent-base@6.0.2: dependencies: debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: false - /agent-base@7.1.0: - resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} - engines: {node: '>= 14'} + agent-base@7.1.0: dependencies: debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: false - /ajv-formats@2.1.1(ajv@8.12.0): - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - dependencies: + ajv-formats@2.1.1(ajv@8.12.0): + optionalDependencies: ajv: 8.12.0 - dev: false - /ajv-keywords@3.5.2(ajv@6.12.6): - resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} - peerDependencies: - ajv: ^6.9.1 + ajv-keywords@3.5.2(ajv@6.12.6): dependencies: ajv: 6.12.6 - dev: false - /ajv-keywords@5.1.0(ajv@8.12.0): - resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} - peerDependencies: - ajv: ^8.8.2 + ajv-keywords@5.1.0(ajv@8.12.0): dependencies: ajv: 8.12.0 fast-deep-equal: 3.1.3 - dev: false - /ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - /ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + ajv@8.12.0: dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 uri-js: 4.4.1 - dev: false - /ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - dev: true + ansi-colors@4.1.3: {} - /ansi-escapes@5.0.0: - resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} - engines: {node: '>=12'} + ansi-escapes@5.0.0: dependencies: type-fest: 1.4.0 - dev: true - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} + ansi-regex@5.0.1: {} - /ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} + ansi-regex@6.0.1: {} - /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} + ansi-styles@3.2.1: dependencies: color-convert: 1.9.3 - /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 - /ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} + ansi-styles@6.2.1: {} - /any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + any-promise@1.3.0: {} - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - /arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + arg@4.1.3: {} - /arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + arg@5.0.2: {} - /argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + argparse@1.0.10: dependencies: sprintf-js: 1.0.3 - dev: true - /argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true + argparse@2.0.1: {} - /aria-hidden@1.2.3: - resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==} - engines: {node: '>=10'} + aria-hidden@1.2.3: dependencies: tslib: 2.6.2 - dev: false - /aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + aria-query@5.3.0: dependencies: dequal: 2.0.3 - dev: true - /array-buffer-byte-length@1.0.0: - resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + array-buffer-byte-length@1.0.0: dependencies: call-bind: 1.0.5 is-array-buffer: 3.0.2 - dev: true - /array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} - engines: {node: '>= 0.4'} + array-buffer-byte-length@1.0.1: dependencies: call-bind: 1.0.7 is-array-buffer: 3.0.4 - dev: true - /array-includes@3.1.7: - resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} - engines: {node: '>= 0.4'} + array-includes@3.1.7: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 get-intrinsic: 1.2.2 is-string: 1.0.7 - dev: true - /array-includes@3.1.8: - resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} - engines: {node: '>= 0.4'} + array-includes@3.1.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -3304,16 +7124,10 @@ packages: es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 is-string: 1.0.7 - dev: true - /array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - dev: true + array-union@2.1.0: {} - /array.prototype.findlast@1.2.5: - resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} - engines: {node: '>= 0.4'} + array.prototype.findlast@1.2.5: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -3321,62 +7135,45 @@ packages: es-errors: 1.3.0 es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 - dev: true - /array.prototype.findlastindex@1.2.3: - resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} - engines: {node: '>= 0.4'} + array.prototype.findlastindex@1.2.3: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 es-shim-unscopables: 1.0.2 get-intrinsic: 1.2.2 - dev: true - /array.prototype.flat@1.3.2: - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} - engines: {node: '>= 0.4'} + array.prototype.flat@1.3.2: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 es-shim-unscopables: 1.0.2 - dev: true - /array.prototype.flatmap@1.3.2: - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} - engines: {node: '>= 0.4'} + array.prototype.flatmap@1.3.2: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 es-shim-unscopables: 1.0.2 - dev: true - /array.prototype.toreversed@1.1.2: - resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} + array.prototype.toreversed@1.1.2: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 es-shim-unscopables: 1.0.2 - dev: true - /array.prototype.tosorted@1.1.4: - resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} - engines: {node: '>= 0.4'} + array.prototype.tosorted@1.1.4: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-errors: 1.3.0 es-shim-unscopables: 1.0.2 - dev: true - /arraybuffer.prototype.slice@1.0.2: - resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} - engines: {node: '>= 0.4'} + arraybuffer.prototype.slice@1.0.2: dependencies: array-buffer-byte-length: 1.0.0 call-bind: 1.0.5 @@ -3385,11 +7182,8 @@ packages: get-intrinsic: 1.2.2 is-array-buffer: 3.0.2 is-shared-array-buffer: 1.0.2 - dev: true - /arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} - engines: {node: '>= 0.4'} + arraybuffer.prototype.slice@1.0.3: dependencies: array-buffer-byte-length: 1.0.1 call-bind: 1.0.7 @@ -3399,53 +7193,28 @@ packages: get-intrinsic: 1.2.4 is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.3 - dev: true - /arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - dev: true + arrify@1.0.1: {} - /arrify@2.0.1: - resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} - engines: {node: '>=8'} - dev: false + arrify@2.0.1: {} - /asap@2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - dev: false + asap@2.0.6: {} - /ast-types-flow@0.0.8: - resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} - dev: true + ast-types-flow@0.0.8: {} - /async-retry@1.3.3: - resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} + async-retry@1.3.3: dependencies: retry: 0.13.1 - dev: false - /asynciterator.prototype@1.0.0: - resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} + asynciterator.prototype@1.0.0: dependencies: has-symbols: 1.0.3 - dev: true - /asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: false + asynckit@0.4.0: {} - /attr-accept@2.2.2: - resolution: {integrity: sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==} - engines: {node: '>=4'} - dev: false + attr-accept@2.2.2: {} - /autoprefixer@10.4.16(postcss@8.4.28): - resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 + autoprefixer@10.4.16(postcss@8.4.28): dependencies: browserslist: 4.21.10 caniuse-lite: 1.0.30001572 @@ -3454,259 +7223,156 @@ packages: picocolors: 1.0.0 postcss: 8.4.28 postcss-value-parser: 4.2.0 - dev: true - /available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} - engines: {node: '>= 0.4'} - dev: true + available-typed-arrays@1.0.5: {} - /available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} + available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.0.0 - dev: true - /axe-core@4.7.0: - resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} - engines: {node: '>=4'} - dev: true + axe-core@4.7.0: {} - /axios@1.6.2: - resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==} + axios@1.6.2: dependencies: follow-redirects: 1.15.2 form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug - dev: false - /axobject-query@3.2.1: - resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} + axobject-query@3.2.1: dependencies: dequal: 2.0.3 - dev: true - /babel-loader@9.1.3(@babel/core@7.22.17)(webpack@5.89.0): - resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} - engines: {node: '>= 14.15.0'} - peerDependencies: - '@babel/core': ^7.12.0 - webpack: '>=5' + babel-loader@9.1.3(@babel/core@7.22.17)(webpack@5.89.0): dependencies: '@babel/core': 7.22.17 find-cache-dir: 4.0.0 schema-utils: 4.2.0 webpack: 5.89.0 - dev: false - /babel-plugin-transform-remove-imports@1.7.0(@babel/core@7.22.17): - resolution: {integrity: sha512-gprmWf6ry5qrnxMyiDaxZpXzZJP6R9FRA+p0AImLIWRmSEGtlKcFprHKeGMZYkII9rJR6Q1hYou+n1fk6rWf2g==} - peerDependencies: - '@babel/core': ^7.0.0-0 + babel-plugin-transform-remove-imports@1.7.0(@babel/core@7.22.17): dependencies: '@babel/core': 7.22.17 - dev: false - /bail@2.0.2: - resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - dev: false + bail@2.0.2: {} - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@1.0.2: {} - /base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: false + base64-js@1.5.1: {} - /bcp-47-match@2.0.3: - resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} - dev: false + bcp-47-match@2.0.3: {} - /better-path-resolve@1.0.0: - resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} - engines: {node: '>=4'} + better-path-resolve@1.0.0: dependencies: is-windows: 1.0.2 - dev: true - /bignumber.js@9.1.2: - resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} - dev: false + bignumber.js@9.1.2: {} - /binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} + binary-extensions@2.2.0: {} - /boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - dev: false + boolbase@1.0.0: {} - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - /brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + brace-expansion@2.0.1: dependencies: balanced-match: 1.0.2 - /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} + braces@3.0.2: dependencies: fill-range: 7.0.1 - /breakword@1.0.6: - resolution: {integrity: sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==} + breakword@1.0.6: dependencies: wcwidth: 1.0.1 - dev: true - /browserslist@4.21.10: - resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true + browserslist@4.21.10: dependencies: caniuse-lite: 1.0.30001572 electron-to-chromium: 1.4.503 node-releases: 2.0.13 update-browserslist-db: 1.0.11(browserslist@4.21.10) - /browserslist@4.22.2: - resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true + browserslist@4.22.2: dependencies: caniuse-lite: 1.0.30001587 electron-to-chromium: 1.4.616 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.22.2) - dev: false - /buffer-equal-constant-time@1.0.1: - resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} - dev: false + buffer-equal-constant-time@1.0.1: {} - /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: false + buffer-from@1.1.2: {} - /busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} + busboy@1.6.0: dependencies: streamsearch: 1.1.0 - dev: false - /call-bind@1.0.5: - resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + call-bind@1.0.5: dependencies: function-bind: 1.1.2 get-intrinsic: 1.2.2 set-function-length: 1.1.1 - /call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} + call-bind@1.0.7: dependencies: es-define-property: 1.0.0 es-errors: 1.3.0 function-bind: 1.1.2 get-intrinsic: 1.2.4 set-function-length: 1.2.2 - dev: true - /callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - dev: true + callsites@3.1.0: {} - /camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} + camelcase-css@2.0.1: {} - /camelcase-keys@6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} - engines: {node: '>=8'} + camelcase-keys@6.2.2: dependencies: camelcase: 5.3.1 map-obj: 4.3.0 quick-lru: 4.0.1 - dev: true - /camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - dev: true + camelcase@5.3.1: {} - /caniuse-lite@1.0.30001572: - resolution: {integrity: sha512-1Pbh5FLmn5y4+QhNyJE9j3/7dK44dGB83/ZMjv/qJk86TvDbjk0LosiZo0i0WB0Vx607qMX9jYrn1VLHCkN4rw==} + caniuse-lite@1.0.30001572: {} - /caniuse-lite@1.0.30001587: - resolution: {integrity: sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA==} - dev: false + caniuse-lite@1.0.30001587: {} - /ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - dev: false + ccount@2.0.1: {} - /chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} + chalk@2.4.2: dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 - /chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} + chalk@3.0.0: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - dev: false - /chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - dev: true - /chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - dev: true + chalk@5.3.0: {} - /character-entities-html4@2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - dev: false + character-entities-html4@2.1.0: {} - /character-entities-legacy@3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - dev: false + character-entities-legacy@3.0.0: {} - /character-entities@2.0.2: - resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - dev: false + character-entities@2.0.2: {} - /character-reference-invalid@2.0.1: - resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - dev: false + character-reference-invalid@2.0.1: {} - /chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - dev: true + chardet@0.7.0: {} - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} + chokidar@3.5.3: dependencies: anymatch: 3.1.3 braces: 3.0.2 @@ -3718,511 +7384,300 @@ packages: optionalDependencies: fsevents: 2.3.3 - /chrome-trace-event@1.0.3: - resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} - engines: {node: '>=6.0'} - dev: false + chrome-trace-event@1.0.3: {} - /ci-info@3.8.0: - resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} - engines: {node: '>=8'} - dev: true + ci-info@3.8.0: {} - /class-variance-authority@0.7.0: - resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} + class-variance-authority@0.7.0: dependencies: clsx: 2.0.0 - dev: false - /cli-cursor@4.0.0: - resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + cli-cursor@4.0.0: dependencies: restore-cursor: 4.0.0 - dev: true - /cli-truncate@3.1.0: - resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + cli-truncate@3.1.0: dependencies: slice-ansi: 5.0.0 string-width: 5.1.2 - dev: true - /client-only@0.0.1: - resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - dev: false + client-only@0.0.1: {} - /cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + cliui@6.0.0: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 6.2.0 - dev: true - /cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} + cliui@8.0.1: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - dev: true - /clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - dev: true + clone@1.0.4: {} - /clsx@2.0.0: - resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} - engines: {node: '>=6'} - dev: false + clsx@2.0.0: {} - /clsx@2.1.0: - resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} - engines: {node: '>=6'} - dev: false + clsx@2.1.0: {} - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + color-convert@1.9.3: dependencies: color-name: 1.1.3 - /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} + color-convert@2.0.1: dependencies: color-name: 1.1.4 - /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + color-name@1.1.3: {} - /color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + color-name@1.1.4: {} - /colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - dev: true + colorette@2.0.20: {} - /combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} + combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 - dev: false - /comma-separated-tokens@2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - dev: false + comma-separated-tokens@2.0.3: {} - /commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} - dev: false + commander@10.0.1: {} - /commander@11.1.0: - resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} - engines: {node: '>=16'} - dev: true + commander@11.1.0: {} - /commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - dev: false + commander@2.20.3: {} - /commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} + commander@4.1.1: {} - /common-path-prefix@3.0.0: - resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} - dev: false + common-path-prefix@3.0.0: {} - /commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - dev: false + commondir@1.0.1: {} - /compressible@2.0.18: - resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} - engines: {node: '>= 0.6'} + compressible@2.0.18: dependencies: mime-db: 1.52.0 - dev: false - /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + concat-map@0.0.1: {} - /config-chain@1.1.13: - resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + config-chain@1.1.13: dependencies: ini: 1.3.8 proto-list: 1.2.4 - dev: false - /confusing-browser-globals@1.0.11: - resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} - dev: true + confusing-browser-globals@1.0.11: {} - /convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - dev: false + convert-source-map@1.9.0: {} - /cookie@0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} - engines: {node: '>= 0.6'} - dev: false + cookie@0.5.0: {} - /create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + create-require@1.1.1: {} - /cross-spawn@5.1.0: - resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} + cross-spawn@5.1.0: dependencies: lru-cache: 4.1.5 shebang-command: 1.2.0 which: 1.3.1 - dev: true - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} + cross-spawn@7.0.3: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - /css-selector-parser@3.0.4: - resolution: {integrity: sha512-pnmS1dbKsz6KA4EW4BznyPL2xxkNDRg62hcD0v8g6DEw2W7hxOln5M953jsp9hmw5Dg57S6o/A8GOn37mbAgcQ==} - dev: false + css-selector-parser@3.0.4: {} - /cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true + cssesc@3.0.0: {} - /csstype@3.1.2: - resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + csstype@3.1.2: {} - /csv-generate@3.4.3: - resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} - dev: true + csv-generate@3.4.3: {} - /csv-parse@4.16.3: - resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} - dev: true + csv-parse@4.16.3: {} - /csv-stringify@5.6.5: - resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} - dev: true + csv-stringify@5.6.5: {} - /csv@5.5.3: - resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} - engines: {node: '>= 0.1.90'} + csv@5.5.3: dependencies: csv-generate: 3.4.3 csv-parse: 4.16.3 csv-stringify: 5.6.5 stream-transform: 2.1.3 - dev: true - /damerau-levenshtein@1.0.8: - resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - dev: true + damerau-levenshtein@1.0.8: {} - /data-view-buffer@1.0.1: - resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} - engines: {node: '>= 0.4'} + data-view-buffer@1.0.1: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 - dev: true - /data-view-byte-length@1.0.1: - resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} - engines: {node: '>= 0.4'} + data-view-byte-length@1.0.1: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 - dev: true - /data-view-byte-offset@1.0.0: - resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} - engines: {node: '>= 0.4'} + data-view-byte-offset@1.0.0: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 - dev: true - /debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + debug@3.2.7: dependencies: ms: 2.1.2 - dev: true - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + debug@4.3.4: dependencies: ms: 2.1.2 - /decamelize-keys@1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} - engines: {node: '>=0.10.0'} + decamelize-keys@1.1.1: dependencies: decamelize: 1.2.0 map-obj: 1.0.1 - dev: true - /decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - dev: true + decamelize@1.2.0: {} - /decode-named-character-reference@1.0.2: - resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + decode-named-character-reference@1.0.2: dependencies: character-entities: 2.0.2 - dev: false - /deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: true + deep-is@0.1.4: {} - /deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - dev: false + deepmerge@4.3.1: {} - /defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + defaults@1.0.4: dependencies: clone: 1.0.4 - dev: true - /define-data-property@1.1.1: - resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} - engines: {node: '>= 0.4'} + define-data-property@1.1.1: dependencies: get-intrinsic: 1.2.2 gopd: 1.0.1 has-property-descriptors: 1.0.1 - /define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} + define-data-property@1.1.4: dependencies: es-define-property: 1.0.0 es-errors: 1.3.0 gopd: 1.0.1 - dev: true - /define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} + define-properties@1.2.1: dependencies: define-data-property: 1.1.1 has-property-descriptors: 1.0.1 object-keys: 1.1.1 - dev: true - /delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - dev: false + delayed-stream@1.0.0: {} - /dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} + dequal@2.0.3: {} - /detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - dev: true + detect-indent@6.1.0: {} - /detect-node-es@1.1.0: - resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} - dev: false + detect-node-es@1.1.0: {} - /devlop@1.1.0: - resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + devlop@1.1.0: dependencies: dequal: 2.0.3 - dev: false - /dezalgo@1.0.4: - resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} + dezalgo@1.0.4: dependencies: asap: 2.0.6 wrappy: 1.0.2 - dev: false - /didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + didyoumean@1.2.2: {} - /diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} + diff@4.0.2: {} - /dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} + dir-glob@3.0.1: dependencies: path-type: 4.0.0 - dev: true - /direction@2.0.1: - resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} - hasBin: true - dev: false + direction@2.0.1: {} - /dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dlv@1.1.3: {} - /doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} + doctrine@2.1.0: dependencies: esutils: 2.0.3 - dev: true - /doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} + doctrine@3.0.0: dependencies: esutils: 2.0.3 - dev: true - /dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + dom-serializer@2.0.0: dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 entities: 4.5.0 - dev: false - /domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - dev: false + domelementtype@2.3.0: {} - /domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} + domhandler@5.0.3: dependencies: domelementtype: 2.3.0 - dev: false - /domutils@3.1.0: - resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + domutils@3.1.0: dependencies: dom-serializer: 2.0.0 domelementtype: 2.3.0 domhandler: 5.0.3 - dev: false - /dotenv@16.4.5: - resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} - engines: {node: '>=12'} - dev: true + dotenv@16.4.5: {} - /duplexify@4.1.2: - resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==} + duplexify@4.1.2: dependencies: end-of-stream: 1.4.4 inherits: 2.0.4 readable-stream: 3.6.2 stream-shift: 1.0.3 - dev: false - /eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + eastasianwidth@0.2.0: {} - /ecdsa-sig-formatter@1.0.11: - resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + ecdsa-sig-formatter@1.0.11: dependencies: safe-buffer: 5.2.1 - dev: false - /editorconfig@1.0.4: - resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==} - engines: {node: '>=14'} - hasBin: true + editorconfig@1.0.4: dependencies: '@one-ini/wasm': 0.1.1 commander: 10.0.1 minimatch: 9.0.1 semver: 7.6.2 - dev: false - /electron-to-chromium@1.4.503: - resolution: {integrity: sha512-LF2IQit4B0VrUHFeQkWhZm97KuJSGF2WJqq1InpY+ECpFRkXd8yTIaTtJxsO0OKDmiBYwWqcrNaXOurn2T2wiA==} + electron-to-chromium@1.4.503: {} - /electron-to-chromium@1.4.616: - resolution: {integrity: sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==} - dev: false + electron-to-chromium@1.4.616: {} - /emoji-mart@5.6.0: - resolution: {integrity: sha512-eJp3QRe79pjwa+duv+n7+5YsNhRcMl812EcFVwrnRvYKoNPoQb5qxU8DG6Bgwji0akHdp6D4Ln6tYLG58MFSow==} - dev: false + emoji-mart@5.6.0: {} - /emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + emoji-regex@8.0.0: {} - /emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + emoji-regex@9.2.2: {} - /end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + end-of-stream@1.4.4: dependencies: once: 1.4.0 - dev: false - /enhanced-resolve@5.15.0: - resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} - engines: {node: '>=10.13.0'} + enhanced-resolve@5.15.0: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 - /enquirer@2.4.1: - resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} - engines: {node: '>=8.6'} + enquirer@2.4.1: dependencies: ansi-colors: 4.1.3 strip-ansi: 6.0.1 - dev: true - /ent@2.2.0: - resolution: {integrity: sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==} - dev: false + ent@2.2.0: {} - /entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - dev: false + entities@4.5.0: {} - /error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 - dev: true - /es-abstract@1.22.3: - resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} - engines: {node: '>= 0.4'} + es-abstract@1.22.3: dependencies: array-buffer-byte-length: 1.0.0 arraybuffer.prototype.slice: 1.0.2 @@ -4263,11 +7718,8 @@ packages: typed-array-length: 1.0.4 unbox-primitive: 1.0.2 which-typed-array: 1.1.13 - dev: true - /es-abstract@1.23.3: - resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} - engines: {node: '>= 0.4'} + es-abstract@1.23.3: dependencies: array-buffer-byte-length: 1.0.1 arraybuffer.prototype.slice: 1.0.3 @@ -4315,22 +7767,14 @@ packages: typed-array-length: 1.0.6 unbox-primitive: 1.0.2 which-typed-array: 1.1.15 - dev: true - /es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} + es-define-property@1.0.0: dependencies: get-intrinsic: 1.2.4 - dev: true - /es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - dev: true + es-errors@1.3.0: {} - /es-iterator-helpers@1.0.15: - resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} + es-iterator-helpers@1.0.15: dependencies: asynciterator.prototype: 1.0.0 call-bind: 1.0.5 @@ -4346,11 +7790,8 @@ packages: internal-slot: 1.0.6 iterator.prototype: 1.1.2 safe-array-concat: 1.0.1 - dev: true - /es-iterator-helpers@1.0.19: - resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} - engines: {node: '>= 0.4'} + es-iterator-helpers@1.0.19: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -4366,176 +7807,109 @@ packages: internal-slot: 1.0.7 iterator.prototype: 1.1.2 safe-array-concat: 1.1.2 - dev: true - /es-module-lexer@1.4.1: - resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} - dev: false + es-module-lexer@1.4.1: {} - /es-object-atoms@1.0.0: - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} - engines: {node: '>= 0.4'} + es-object-atoms@1.0.0: dependencies: es-errors: 1.3.0 - dev: true - /es-set-tostringtag@2.0.2: - resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} - engines: {node: '>= 0.4'} + es-set-tostringtag@2.0.2: dependencies: get-intrinsic: 1.2.2 has-tostringtag: 1.0.0 hasown: 2.0.0 - dev: true - /es-set-tostringtag@2.0.3: - resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} - engines: {node: '>= 0.4'} + es-set-tostringtag@2.0.3: dependencies: get-intrinsic: 1.2.4 has-tostringtag: 1.0.2 hasown: 2.0.2 - dev: true - /es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + es-shim-unscopables@1.0.2: dependencies: hasown: 2.0.0 - dev: true - /es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} + es-to-primitive@1.2.1: dependencies: is-callable: 1.2.7 is-date-object: 1.0.5 is-symbol: 1.0.4 - dev: true - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} + escalade@3.1.1: {} - /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} + escape-string-regexp@1.0.5: {} - /escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - dev: true + escape-string-regexp@4.0.0: {} - /escape-string-regexp@5.0.0: - resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} - engines: {node: '>=12'} - dev: false + escape-string-regexp@5.0.0: {} - /eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.0): - resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - eslint: ^7.32.0 || ^8.2.0 - eslint-plugin-import: ^2.25.2 + eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint@8.57.0): dependencies: confusing-browser-globals: 1.0.11 eslint: 8.57.0 - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.12.0)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0) object.assign: 4.1.5 object.entries: 1.1.7 semver: 6.3.1 - dev: true - /eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@7.12.0)(@typescript-eslint/parser@7.12.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0): - resolution: {integrity: sha512-oc+Lxzgzsu8FQyFVa4QFaVKiitTYiiW3frB9KYW5OWdPrqFc7FzxgB20hP4cHMlr+MBzGcLl3jnCOVOydL9mIg==} - peerDependencies: - '@typescript-eslint/eslint-plugin': ^7.0.0 - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 + eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3))(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint@8.57.0): dependencies: - '@typescript-eslint/eslint-plugin': 7.12.0(@typescript-eslint/parser@7.12.0)(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/eslint-plugin': 7.14.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3) '@typescript-eslint/parser': 7.12.0(eslint@8.57.0)(typescript@5.3.3) eslint: 8.57.0 - eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint@8.57.0) transitivePeerDependencies: - eslint-plugin-import - dev: true - /eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.34.2)(eslint@8.57.0): - resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==} - engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^7.32.0 || ^8.2.0 - eslint-plugin-import: ^2.25.3 - eslint-plugin-jsx-a11y: ^6.5.1 - eslint-plugin-react: ^7.28.0 - eslint-plugin-react-hooks: ^4.3.0 + eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.0))(eslint-plugin-react@7.34.2(eslint@8.57.0))(eslint@8.57.0): dependencies: eslint: 8.57.0 - eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.12.0)(eslint@8.57.0) + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) eslint-plugin-react: 7.34.2(eslint@8.57.0) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) object.assign: 4.1.5 object.entries: 1.1.7 - dev: true - /eslint-config-next@14.1.0(eslint@8.57.0)(typescript@5.3.3): - resolution: {integrity: sha512-SBX2ed7DoRFXC6CQSLc/SbLY9Ut6HxNB2wPTcoIWjUMd7aF7O/SIE7111L8FdZ9TXsNV4pulUDnfthpyPtbFUg==} - peerDependencies: - eslint: ^7.23.0 || ^8.0.0 - typescript: '>=3.3.1' - peerDependenciesMeta: - typescript: - optional: true + eslint-config-next@14.1.0(eslint@8.57.0)(typescript@5.3.3): dependencies: '@next/eslint-plugin-next': 14.1.0 '@rushstack/eslint-patch': 1.6.1 '@typescript-eslint/parser': 6.17.0(eslint@8.57.0)(typescript@5.3.3) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) eslint-plugin-react: 7.34.2(eslint@8.57.0) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) + optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - eslint-import-resolver-webpack - supports-color - dev: true - /eslint-config-prettier@9.0.0(eslint@8.57.0): - resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' + eslint-config-prettier@9.0.0(eslint@8.57.0): dependencies: eslint: 8.57.0 - dev: true - /eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7 is-core-module: 2.13.1 resolve: 1.22.8 transitivePeerDependencies: - supports-color - dev: true - /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0): - resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: '*' - eslint-plugin-import: '*' + eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0): dependencies: debug: 4.3.4 enhanced-resolve: 5.15.0 eslint: 8.57.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) fast-glob: 3.3.2 get-tsconfig: 4.7.2 is-core-module: 2.13.1 @@ -4545,78 +7919,30 @@ packages: - eslint-import-resolver-node - eslint-import-resolver-webpack - supports-color - dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true + eslint-module-utils@2.8.0(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0): dependencies: - '@typescript-eslint/parser': 6.17.0(eslint@8.57.0)(typescript@5.3.3) debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 6.17.0(eslint@8.57.0)(typescript@5.3.3) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) transitivePeerDependencies: - supports-color - dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@7.12.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true + eslint-module-utils@2.8.0(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): dependencies: - '@typescript-eslint/parser': 7.12.0(eslint@8.57.0)(typescript@5.3.3) debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 7.12.0(eslint@8.57.0)(typescript@5.3.3) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): - resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true + eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): dependencies: - '@typescript-eslint/parser': 6.17.0(eslint@8.57.0)(typescript@5.3.3) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 @@ -4625,7 +7951,7 @@ packages: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -4635,23 +7961,15 @@ packages: object.values: 1.1.7 semver: 6.3.1 tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 6.17.0(eslint@8.57.0)(typescript@5.3.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0)(eslint@8.57.0): - resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true + eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0): dependencies: - '@typescript-eslint/parser': 7.12.0(eslint@8.57.0)(typescript@5.3.3) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 @@ -4660,7 +7978,7 @@ packages: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.12.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -4670,17 +7988,14 @@ packages: object.values: 1.1.7 semver: 6.3.1 tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 7.12.0(eslint@8.57.0)(typescript@5.3.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - dev: true - /eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0): - resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0): dependencies: '@babel/runtime': 7.23.7 aria-query: 5.3.0 @@ -4699,57 +8014,27 @@ packages: minimatch: 3.1.2 object.entries: 1.1.7 object.fromentries: 2.0.7 - dev: true - /eslint-plugin-playwright@1.6.2(eslint@8.57.0): - resolution: {integrity: sha512-mraN4Em3b5jLt01q7qWPyLg0Q5v3KAWfJSlEWwldyUXoa7DSPrBR4k6B6LROLqipsG8ndkwWMdjl1Ffdh15tag==} - engines: {node: '>=16.6.0'} - peerDependencies: - eslint: '>=8.40.0' - eslint-plugin-jest: '>=25' - peerDependenciesMeta: - eslint-plugin-jest: - optional: true + eslint-plugin-playwright@1.6.2(eslint@8.57.0): dependencies: eslint: 8.57.0 globals: 13.24.0 - dev: true - /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.0.0)(eslint@8.57.0)(prettier@3.2.5): - resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - '@types/eslint': '>=8.0.0' - eslint: '>=8.0.0' - eslint-config-prettier: '*' - prettier: '>=3.0.0' - peerDependenciesMeta: - '@types/eslint': - optional: true - eslint-config-prettier: - optional: true + eslint-plugin-prettier@5.1.3(@types/eslint@8.56.0)(eslint-config-prettier@9.0.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.2.5): dependencies: eslint: 8.57.0 - eslint-config-prettier: 9.0.0(eslint@8.57.0) prettier: 3.2.5 prettier-linter-helpers: 1.0.0 synckit: 0.8.8 - dev: true + optionalDependencies: + '@types/eslint': 8.56.0 + eslint-config-prettier: 9.0.0(eslint@8.57.0) - /eslint-plugin-react-hooks@4.6.2(eslint@8.57.0): - resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + eslint-plugin-react-hooks@4.6.2(eslint@8.57.0): dependencies: eslint: 8.57.0 - dev: true - /eslint-plugin-react@7.34.2(eslint@8.57.0): - resolution: {integrity: sha512-2HCmrU+/JNigDN6tg55cRDKCQWicYAPB38JGSFDQt95jDm8rrvSUo7YPkOIm5l6ts1j1zCvysNcasvfTMQzUOw==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + eslint-plugin-react@7.34.2(eslint@8.57.0): dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 @@ -4770,64 +8055,35 @@ packages: resolve: 2.0.0-next.5 semver: 6.3.1 string.prototype.matchall: 4.0.11 - dev: true - /eslint-plugin-tailwindcss@3.17.3(tailwindcss@3.4.1): - resolution: {integrity: sha512-DVMVVUFQ+lPraRSuUk2I41XMnusXT6b3WaQZYlUHduULnERaqe9sNfmpRY1IyxlzmKoQxSbZ8IHRhl9ePo8PeA==} - engines: {node: '>=18.12.0'} - peerDependencies: - tailwindcss: ^3.4.0 + eslint-plugin-tailwindcss@3.17.3(tailwindcss@3.4.1(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3))): dependencies: fast-glob: 3.3.2 postcss: 8.4.31 - tailwindcss: 3.4.1(ts-node@10.9.1) - dev: true + tailwindcss: 3.4.1(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3)) - /eslint-plugin-unused-imports@4.0.0(@typescript-eslint/eslint-plugin@7.12.0)(eslint@8.57.0): - resolution: {integrity: sha512-mzM+y2B7XYpQryVa1usT+Y/BdNAtAZiXzwpSyDCboFoJN/LZRN67TNvQxKtuTK/Aplya3sLNQforiubzPPaIcQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/eslint-plugin': '8' - eslint: '9' - peerDependenciesMeta: - '@typescript-eslint/eslint-plugin': - optional: true + eslint-plugin-unused-imports@4.0.0(@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0): dependencies: - '@typescript-eslint/eslint-plugin': 7.12.0(@typescript-eslint/parser@7.12.0)(eslint@8.57.0)(typescript@5.3.3) eslint: 8.57.0 eslint-rule-composer: 0.3.0 - dev: true + optionalDependencies: + '@typescript-eslint/eslint-plugin': 7.14.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3) - /eslint-rule-composer@0.3.0: - resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} - engines: {node: '>=4.0.0'} - dev: true + eslint-rule-composer@0.3.0: {} - /eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} + eslint-scope@5.1.1: dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 - dev: false - /eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-scope@7.2.2: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - dev: true - /eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true + eslint-visitor-keys@3.4.3: {} - /eslint@8.57.0: - resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true + eslint@8.57.0: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@eslint-community/regexpp': 4.8.0 @@ -4869,80 +8125,42 @@ packages: text-table: 0.2.0 transitivePeerDependencies: - supports-color - dev: true - /esm@3.2.25: - resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} - engines: {node: '>=6'} - dev: false + esm@3.2.25: {} - /espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + espree@9.6.1: dependencies: acorn: 8.11.3 acorn-jsx: 5.3.2(acorn@8.11.3) eslint-visitor-keys: 3.4.3 - dev: true - /esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - dev: true + esprima@4.0.1: {} - /esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} + esquery@1.5.0: dependencies: estraverse: 5.3.0 - dev: true - /esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} + esrecurse@4.3.0: dependencies: estraverse: 5.3.0 - /estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - dev: false + estraverse@4.3.0: {} - /estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} + estraverse@5.3.0: {} - /estree-util-is-identifier-name@3.0.0: - resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} - dev: false + estree-util-is-identifier-name@3.0.0: {} - /estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - dev: false + estree-walker@2.0.2: {} - /esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - dev: true + esutils@2.0.3: {} - /event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - dev: false + event-target-shim@5.0.1: {} - /eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - dev: true + eventemitter3@5.0.1: {} - /events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - dev: false + events@3.3.0: {} - /execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} + execa@8.0.1: dependencies: cross-spawn: 7.0.3 get-stream: 8.0.1 @@ -4953,35 +8171,22 @@ packages: onetime: 6.0.0 signal-exit: 4.1.0 strip-final-newline: 3.0.0 - dev: true - /extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - dev: false + extend@3.0.2: {} - /extendable-error@0.1.7: - resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} - dev: true + extendable-error@0.1.7: {} - /external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} + external-editor@3.1.0: dependencies: chardet: 0.7.0 iconv-lite: 0.4.24 tmp: 0.0.33 - dev: true - /fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-deep-equal@3.1.3: {} - /fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - dev: true + fast-diff@1.3.0: {} - /fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} + fast-glob@3.3.2: dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 @@ -4989,205 +8194,126 @@ packages: merge2: 1.4.1 micromatch: 4.0.5 - /fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + fast-json-stable-stringify@2.1.0: {} - /fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - dev: true + fast-levenshtein@2.0.6: {} - /fast-xml-parser@4.3.4: - resolution: {integrity: sha512-utnwm92SyozgA3hhH2I8qldf2lBqm6qHOICawRNRFu1qMe3+oqr+GcXjGqTmXTMGE5T4eC03kr/rlh5C1IRdZA==} - hasBin: true + fast-xml-parser@4.3.4: dependencies: strnum: 1.0.5 - dev: false - /fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + fastq@1.15.0: dependencies: reusify: 1.0.4 - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + file-entry-cache@6.0.1: dependencies: flat-cache: 3.1.0 - dev: true - /file-selector@0.6.0: - resolution: {integrity: sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==} - engines: {node: '>= 12'} + file-selector@0.6.0: dependencies: tslib: 2.6.2 - dev: false - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} + fill-range@7.0.1: dependencies: to-regex-range: 5.0.1 - /find-cache-dir@4.0.0: - resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} - engines: {node: '>=14.16'} + find-cache-dir@4.0.0: dependencies: common-path-prefix: 3.0.0 pkg-dir: 7.0.0 - dev: false - /find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} + find-up@4.1.0: dependencies: locate-path: 5.0.0 path-exists: 4.0.0 - dev: true - /find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} + find-up@5.0.0: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - dev: true - /find-up@6.3.0: - resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + find-up@6.3.0: dependencies: locate-path: 7.2.0 path-exists: 5.0.0 - dev: false - /find-yarn-workspace-root2@1.2.16: - resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} + find-yarn-workspace-root2@1.2.16: dependencies: micromatch: 4.0.5 pkg-dir: 4.2.0 - dev: true - /flat-cache@3.1.0: - resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} - engines: {node: '>=12.0.0'} + flat-cache@3.1.0: dependencies: flatted: 3.2.7 keyv: 4.5.3 rimraf: 3.0.2 - dev: true - /flatted@3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - dev: true + flatted@3.2.7: {} - /follow-redirects@1.15.2: - resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dev: false + follow-redirects@1.15.2: {} - /for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + for-each@0.3.3: dependencies: is-callable: 1.2.7 - dev: true - /foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} - engines: {node: '>=14'} + foreground-child@3.1.1: dependencies: cross-spawn: 7.0.3 signal-exit: 4.1.0 - /form-data@2.5.1: - resolution: {integrity: sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==} - engines: {node: '>= 0.12'} + form-data@2.5.1: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - dev: false - /form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} + form-data@4.0.0: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - dev: false - /formidable@3.5.1: - resolution: {integrity: sha512-WJWKelbRHN41m5dumb0/k8TeAx7Id/y3a+Z7QfhxP/htI9Js5zYaEDtG8uMgG0vM0lOlqnmjE99/kfpOYi/0Og==} + formidable@3.5.1: dependencies: dezalgo: 1.0.4 hexoid: 1.0.0 once: 1.4.0 - dev: false - /fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - dev: true + fraction.js@4.3.7: {} - /fs-extra@7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} + fs-extra@7.0.1: dependencies: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 - dev: true - /fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} + fs-extra@8.1.0: dependencies: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 - dev: true - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + fs.realpath@1.0.0: {} - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true + fsevents@2.3.2: optional: true - /fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true + fsevents@2.3.3: optional: true - /function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + function-bind@1.1.2: {} - /function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} - engines: {node: '>= 0.4'} + function.prototype.name@1.1.6: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 functions-have-names: 1.2.3 - dev: true - /functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: true + functions-have-names@1.2.3: {} - /gaxios@6.2.0: - resolution: {integrity: sha512-H6+bHeoEAU5D6XNc6mPKeN5dLZqEDs9Gpk6I+SZBEzK5So58JVrHPmevNi35fRl1J9Y5TaeLW0kYx3pCJ1U2mQ==} - engines: {node: '>=14'} + gaxios@6.2.0: dependencies: extend: 3.0.2 https-proxy-agent: 7.0.2 @@ -5196,105 +8322,66 @@ packages: transitivePeerDependencies: - encoding - supports-color - dev: false - /gcp-metadata@6.1.0: - resolution: {integrity: sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==} - engines: {node: '>=14'} + gcp-metadata@6.1.0: dependencies: gaxios: 6.2.0 json-bigint: 1.0.0 transitivePeerDependencies: - encoding - supports-color - dev: false - /gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - dev: false + gensync@1.0.0-beta.2: {} - /get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - dev: true + get-caller-file@2.0.5: {} - /get-intrinsic@1.2.2: - resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + get-intrinsic@1.2.2: dependencies: function-bind: 1.1.2 has-proto: 1.0.1 has-symbols: 1.0.3 hasown: 2.0.0 - /get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} + get-intrinsic@1.2.4: dependencies: es-errors: 1.3.0 function-bind: 1.1.2 has-proto: 1.0.1 has-symbols: 1.0.3 hasown: 2.0.0 - dev: true - /get-nonce@1.0.1: - resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} - engines: {node: '>=6'} - dev: false + get-nonce@1.0.1: {} - /get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - dev: true + get-stream@8.0.1: {} - /get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} - engines: {node: '>= 0.4'} + get-symbol-description@1.0.0: dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 - dev: true - /get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} - engines: {node: '>= 0.4'} + get-symbol-description@1.0.2: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 - dev: true - /get-tsconfig@4.7.2: - resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + get-tsconfig@4.7.2: dependencies: resolve-pkg-maps: 1.0.0 - dev: true - /github-slugger@2.0.0: - resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} - dev: false + github-slugger@2.0.0: {} - /glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 - /glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} + glob-parent@6.0.2: dependencies: is-glob: 4.0.3 - /glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - dev: false + glob-to-regexp@0.4.1: {} - /glob@10.3.10: - resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true + glob@10.3.10: dependencies: foreground-child: 3.1.1 jackspeak: 2.3.6 @@ -5302,8 +8389,7 @@ packages: minipass: 7.0.4 path-scurry: 1.10.1 - /glob@7.1.6: - resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + glob@7.1.6: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -5312,8 +8398,7 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 - /glob@7.1.7: - resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + glob@7.1.7: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -5321,48 +8406,30 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 - dev: true - /glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} + glob@8.1.0: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 minimatch: 5.1.6 once: 1.4.0 - dev: false - /globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - dev: false + globals@11.12.0: {} - /globals@13.21.0: - resolution: {integrity: sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==} - engines: {node: '>=8'} + globals@13.21.0: dependencies: type-fest: 0.20.2 - dev: true - /globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} + globals@13.24.0: dependencies: type-fest: 0.20.2 - dev: true - /globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} - engines: {node: '>= 0.4'} + globalthis@1.0.3: dependencies: define-properties: 1.2.1 - dev: true - /globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} + globby@11.1.0: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 @@ -5370,11 +8437,8 @@ packages: ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 - dev: true - /google-auth-library@9.6.3: - resolution: {integrity: sha512-4CacM29MLC2eT9Cey5GDVK4Q8t+MMp8+OEdOaqD9MG6b0dOyLORaaeJMPQ7EESVgm/+z5EKYyFLxgzBJlJgyHQ==} - engines: {node: '>=14'} + google-auth-library@9.6.3: dependencies: base64-js: 1.5.1 ecdsa-sig-formatter: 1.0.11 @@ -5385,105 +8449,64 @@ packages: transitivePeerDependencies: - encoding - supports-color - dev: false - /gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + gopd@1.0.1: dependencies: get-intrinsic: 1.2.2 - /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + graceful-fs@4.2.11: {} - /grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: true + grapheme-splitter@1.0.4: {} - /graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - dev: true + graphemer@1.4.0: {} - /gtoken@7.1.0: - resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} - engines: {node: '>=14.0.0'} + gtoken@7.1.0: dependencies: gaxios: 6.2.0 jws: 4.0.0 transitivePeerDependencies: - encoding - supports-color - dev: false - /hard-rejection@2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} - dev: true + hard-rejection@2.1.0: {} - /has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - dev: true + has-bigints@1.0.2: {} - /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} + has-flag@3.0.0: {} - /has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} + has-flag@4.0.0: {} - /has-property-descriptors@1.0.1: - resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + has-property-descriptors@1.0.1: dependencies: get-intrinsic: 1.2.2 - /has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.0 - dev: true - /has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} - engines: {node: '>= 0.4'} + has-proto@1.0.1: {} - /has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} - dev: true + has-proto@1.0.3: {} - /has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} + has-symbols@1.0.3: {} - /has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} - engines: {node: '>= 0.4'} + has-tostringtag@1.0.0: dependencies: has-symbols: 1.0.3 - dev: true - /has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} + has-tostringtag@1.0.2: dependencies: has-symbols: 1.0.3 - dev: true - /hasown@2.0.0: - resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} - engines: {node: '>= 0.4'} + hasown@2.0.0: dependencies: function-bind: 1.1.2 - /hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} + hasown@2.0.2: dependencies: function-bind: 1.1.2 - dev: true - /hast-util-from-html@2.0.1: - resolution: {integrity: sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==} + hast-util-from-html@2.0.1: dependencies: '@types/hast': 3.0.0 devlop: 1.1.0 @@ -5491,10 +8514,8 @@ packages: parse5: 7.1.2 vfile: 6.0.1 vfile-message: 4.0.2 - dev: false - /hast-util-from-parse5@7.1.2: - resolution: {integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==} + hast-util-from-parse5@7.1.2: dependencies: '@types/hast': 2.3.5 '@types/unist': 2.0.8 @@ -5503,10 +8524,8 @@ packages: vfile: 5.3.7 vfile-location: 4.1.0 web-namespaces: 2.0.1 - dev: false - /hast-util-from-parse5@8.0.1: - resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} + hast-util-from-parse5@8.0.1: dependencies: '@types/hast': 3.0.0 '@types/unist': 3.0.0 @@ -5516,40 +8535,28 @@ packages: vfile: 6.0.1 vfile-location: 5.0.2 web-namespaces: 2.0.1 - dev: false - /hast-util-has-property@3.0.0: - resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} + hast-util-has-property@3.0.0: dependencies: '@types/hast': 3.0.0 - dev: false - /hast-util-heading-rank@3.0.0: - resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} + hast-util-heading-rank@3.0.0: dependencies: '@types/hast': 3.0.0 - dev: false - /hast-util-is-element@3.0.0: - resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + hast-util-is-element@3.0.0: dependencies: '@types/hast': 3.0.0 - dev: false - /hast-util-parse-selector@3.1.1: - resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} + hast-util-parse-selector@3.1.1: dependencies: '@types/hast': 2.3.5 - dev: false - /hast-util-parse-selector@4.0.0: - resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} + hast-util-parse-selector@4.0.0: dependencies: '@types/hast': 3.0.0 - dev: false - /hast-util-raw@9.0.1: - resolution: {integrity: sha512-5m1gmba658Q+lO5uqL5YNGQWeh1MYWZbZmWrM5lncdcuiXuo5E2HT/CIOp0rLF8ksfSwiCVJ3twlgVRyTGThGA==} + hast-util-raw@9.0.1: dependencies: '@types/hast': 3.0.0 '@types/unist': 3.0.0 @@ -5564,18 +8571,14 @@ packages: vfile: 6.0.1 web-namespaces: 2.0.1 zwitch: 2.0.4 - dev: false - /hast-util-sanitize@5.0.0: - resolution: {integrity: sha512-L0g/qhOA82zG2hA3O29hnlv4mLU7YVVT1if5JZSr2tKO1ywkQbuMDcN05btgX0HtpqDXQniAM0ar0K+Lv4MDBQ==} + hast-util-sanitize@5.0.0: dependencies: '@types/hast': 3.0.0 '@ungap/structured-clone': 1.2.0 unist-util-position: 5.0.0 - dev: false - /hast-util-select@6.0.2: - resolution: {integrity: sha512-hT/SD/d/Meu+iobvgkffo1QecV8WeKWxwsNMzcTJsKw1cKTQKSR/7ArJeURLNJF9HDjp9nVoORyNNJxrvBye8Q==} + hast-util-select@6.0.2: dependencies: '@types/hast': 3.0.0 '@types/unist': 3.0.0 @@ -5593,10 +8596,8 @@ packages: space-separated-tokens: 2.0.2 unist-util-visit: 5.0.0 zwitch: 2.0.4 - dev: false - /hast-util-to-html@9.0.0: - resolution: {integrity: sha512-IVGhNgg7vANuUA2XKrT6sOIIPgaYZnmLx3l/CCOAK0PtgfoHrZwX7jCSYyFxHTrGmC6S9q8aQQekjp4JPZF+cw==} + hast-util-to-html@9.0.0: dependencies: '@types/hast': 3.0.0 '@types/unist': 3.0.0 @@ -5610,10 +8611,8 @@ packages: space-separated-tokens: 2.0.2 stringify-entities: 4.0.3 zwitch: 2.0.4 - dev: false - /hast-util-to-jsx-runtime@2.3.0: - resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} + hast-util-to-jsx-runtime@2.3.0: dependencies: '@types/estree': 1.0.5 '@types/hast': 3.0.0 @@ -5632,10 +8631,8 @@ packages: vfile-message: 4.0.2 transitivePeerDependencies: - supports-color - dev: false - /hast-util-to-parse5@8.0.0: - resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} + hast-util-to-parse5@8.0.0: dependencies: '@types/hast': 3.0.0 comma-separated-tokens: 2.0.3 @@ -5644,697 +8641,410 @@ packages: space-separated-tokens: 2.0.2 web-namespaces: 2.0.1 zwitch: 2.0.4 - dev: false - /hast-util-to-string@2.0.0: - resolution: {integrity: sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==} + hast-util-to-string@2.0.0: dependencies: '@types/hast': 2.3.5 - dev: false - /hast-util-to-string@3.0.0: - resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} + hast-util-to-string@3.0.0: dependencies: '@types/hast': 3.0.0 - dev: false - /hast-util-whitespace@3.0.0: - resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + hast-util-whitespace@3.0.0: dependencies: '@types/hast': 3.0.0 - dev: false - /hastscript@7.2.0: - resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} + hastscript@7.2.0: dependencies: '@types/hast': 2.3.5 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 3.1.1 property-information: 6.2.0 space-separated-tokens: 2.0.2 - dev: false - /hastscript@8.0.0: - resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} + hastscript@8.0.0: dependencies: '@types/hast': 3.0.0 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 4.0.0 property-information: 6.2.0 space-separated-tokens: 2.0.2 - dev: false - /hexoid@1.0.0: - resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==} - engines: {node: '>=8'} - dev: false + hexoid@1.0.0: {} - /hoist-non-react-statics@3.3.2: - resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + hoist-non-react-statics@3.3.2: dependencies: react-is: 16.13.1 - dev: false - /hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - dev: true + hosted-git-info@2.8.9: {} - /html-to-text@9.0.5: - resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} - engines: {node: '>=14'} + html-to-text@9.0.5: dependencies: '@selderee/plugin-htmlparser2': 0.11.0 deepmerge: 4.3.1 dom-serializer: 2.0.0 htmlparser2: 8.0.2 selderee: 0.11.0 - dev: false - /html-url-attributes@3.0.0: - resolution: {integrity: sha512-/sXbVCWayk6GDVg3ctOX6nxaVj7So40FcFAnWlWGNAB1LpYKcV5Cd10APjPjW80O7zYW2MsjBV4zZ7IZO5fVow==} - dev: false + html-url-attributes@3.0.0: {} - /html-void-elements@3.0.0: - resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - dev: false + html-void-elements@3.0.0: {} - /htmlparser2@8.0.2: - resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + htmlparser2@8.0.2: dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 domutils: 3.1.0 entities: 4.5.0 - dev: false - /http-proxy-agent@5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} + http-proxy-agent@5.0.0: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: false - /https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} + https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: false - /https-proxy-agent@7.0.2: - resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} - engines: {node: '>= 14'} + https-proxy-agent@7.0.2: dependencies: agent-base: 7.1.0 debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: false - /human-id@1.0.2: - resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} - dev: true + human-id@1.0.2: {} - /human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - dev: true + human-signals@5.0.0: {} - /husky@9.0.11: - resolution: {integrity: sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==} - engines: {node: '>=18'} - hasBin: true - dev: true + husky@9.0.11: {} - /iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} + iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 - dev: true - /ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} - engines: {node: '>= 4'} - dev: true + ignore@5.2.4: {} - /ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} - engines: {node: '>= 4'} - dev: true + ignore@5.3.1: {} - /immediate@3.0.6: - resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - dev: false + immediate@3.0.6: {} - /import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} + import-fresh@3.3.0: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - dev: true - /imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - dev: true + imurmurhash@0.1.4: {} - /indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - dev: true + indent-string@4.0.0: {} - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + inflight@1.0.6: dependencies: once: 1.4.0 wrappy: 1.0.2 - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + inherits@2.0.4: {} - /ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - dev: false + ini@1.3.8: {} - /inline-style-parser@0.2.2: - resolution: {integrity: sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==} - dev: false + inline-style-parser@0.2.2: {} - /internal-slot@1.0.6: - resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} - engines: {node: '>= 0.4'} + internal-slot@1.0.6: dependencies: get-intrinsic: 1.2.2 hasown: 2.0.0 side-channel: 1.0.4 - dev: true - /internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} - engines: {node: '>= 0.4'} + internal-slot@1.0.7: dependencies: es-errors: 1.3.0 hasown: 2.0.0 side-channel: 1.0.4 - dev: true - /invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + invariant@2.2.4: dependencies: loose-envify: 1.4.0 - dev: false - /is-alphabetical@2.0.1: - resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} - dev: false + is-alphabetical@2.0.1: {} - /is-alphanumerical@2.0.1: - resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + is-alphanumerical@2.0.1: dependencies: is-alphabetical: 2.0.1 is-decimal: 2.0.1 - dev: false - /is-array-buffer@3.0.2: - resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + is-array-buffer@3.0.2: dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 is-typed-array: 1.1.12 - dev: true - /is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} - engines: {node: '>= 0.4'} + is-array-buffer@3.0.4: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 - dev: true - /is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - dev: true + is-arrayish@0.2.1: {} - /is-async-function@2.0.0: - resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} - engines: {node: '>= 0.4'} + is-async-function@2.0.0: dependencies: has-tostringtag: 1.0.0 - dev: true - /is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + is-bigint@1.0.4: dependencies: has-bigints: 1.0.2 - dev: true - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} + is-binary-path@2.1.0: dependencies: binary-extensions: 2.2.0 - /is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} + is-boolean-object@1.1.2: dependencies: call-bind: 1.0.5 has-tostringtag: 1.0.0 - dev: true - /is-buffer@2.0.5: - resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} - engines: {node: '>=4'} - dev: false + is-buffer@2.0.5: {} - /is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - dev: true + is-callable@1.2.7: {} - /is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + is-core-module@2.13.1: dependencies: hasown: 2.0.0 - /is-data-view@1.0.1: - resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} - engines: {node: '>= 0.4'} + is-data-view@1.0.1: dependencies: is-typed-array: 1.1.13 - dev: true - /is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} + is-date-object@1.0.5: dependencies: has-tostringtag: 1.0.0 - dev: true - /is-decimal@2.0.1: - resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - dev: false + is-decimal@2.0.1: {} - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} + is-extglob@2.1.1: {} - /is-finalizationregistry@1.0.2: - resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + is-finalizationregistry@1.0.2: dependencies: call-bind: 1.0.5 - dev: true - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} + is-fullwidth-code-point@3.0.0: {} - /is-fullwidth-code-point@4.0.0: - resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} - engines: {node: '>=12'} - dev: true + is-fullwidth-code-point@4.0.0: {} - /is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} + is-generator-function@1.0.10: dependencies: has-tostringtag: 1.0.0 - dev: true - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 - /is-hexadecimal@2.0.1: - resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - dev: false + is-hexadecimal@2.0.1: {} - /is-map@2.0.2: - resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} - dev: true + is-map@2.0.2: {} - /is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} - engines: {node: '>= 0.4'} - dev: true + is-negative-zero@2.0.2: {} - /is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - dev: true + is-negative-zero@2.0.3: {} - /is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} + is-number-object@1.0.7: dependencies: has-tostringtag: 1.0.0 - dev: true - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} + is-number@7.0.0: {} - /is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - dev: true + is-path-inside@3.0.3: {} - /is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} - dev: true + is-plain-obj@1.1.0: {} - /is-plain-obj@4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} - engines: {node: '>=12'} - dev: false + is-plain-obj@4.1.0: {} - /is-reference@1.2.1: - resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + is-reference@1.2.1: dependencies: '@types/estree': 1.0.5 - dev: false - /is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} + is-regex@1.1.4: dependencies: call-bind: 1.0.5 has-tostringtag: 1.0.0 - dev: true - /is-set@2.0.2: - resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} - dev: true + is-set@2.0.2: {} - /is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + is-shared-array-buffer@1.0.2: dependencies: call-bind: 1.0.5 - dev: true - /is-shared-array-buffer@1.0.3: - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} - engines: {node: '>= 0.4'} + is-shared-array-buffer@1.0.3: dependencies: call-bind: 1.0.7 - dev: true - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: false + is-stream@2.0.1: {} - /is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true + is-stream@3.0.0: {} - /is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} + is-string@1.0.7: dependencies: has-tostringtag: 1.0.0 - dev: true - /is-subdir@1.2.0: - resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} - engines: {node: '>=4'} + is-subdir@1.2.0: dependencies: better-path-resolve: 1.0.0 - dev: true - - /is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} + + is-symbol@1.0.4: dependencies: has-symbols: 1.0.3 - dev: true - /is-typed-array@1.1.12: - resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} - engines: {node: '>= 0.4'} + is-typed-array@1.1.12: dependencies: which-typed-array: 1.1.13 - dev: true - /is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} + is-typed-array@1.1.13: dependencies: which-typed-array: 1.1.15 - dev: true - /is-weakmap@2.0.1: - resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} - dev: true + is-weakmap@2.0.1: {} - /is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + is-weakref@1.0.2: dependencies: call-bind: 1.0.5 - dev: true - /is-weakset@2.0.2: - resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + is-weakset@2.0.2: dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 - dev: true - /is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - dev: true + is-windows@1.0.2: {} - /isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - dev: true + isarray@2.0.5: {} - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isexe@2.0.0: {} - /iterator.prototype@1.1.2: - resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + iterator.prototype@1.1.2: dependencies: define-properties: 1.2.1 get-intrinsic: 1.2.2 has-symbols: 1.0.3 reflect.getprototypeof: 1.0.4 set-function-name: 2.0.1 - dev: true - /jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} + jackspeak@2.3.6: dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 - /jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} + jest-worker@27.5.1: dependencies: '@types/node': 20.10.6 merge-stream: 2.0.0 supports-color: 8.1.1 - dev: false - /jiti@1.19.3: - resolution: {integrity: sha512-5eEbBDQT/jF1xg6l36P+mWGGoH9Spuy0PCdSr2dtWRDGC6ph/w9ZCL4lmESW8f8F7MwT3XKescfP0wnZWAKL9w==} - hasBin: true + jiti@1.19.3: {} - /jose@4.15.5: - resolution: {integrity: sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==} - dev: false + jose@4.15.5: {} - /jotai@2.6.4(@types/react@18.0.27)(react@18.2.0): - resolution: {integrity: sha512-RniwQPX4893YlNR1muOtyUGHYaTD1fhEN4qnOuZJSrDHj6xdEMrqlRSN/hCm2fshwk78ruecB/P2l+NCVWe6TQ==} - engines: {node: '>=12.20.0'} - peerDependencies: - '@types/react': '>=17.0.0' - react: '>=17.0.0' - peerDependenciesMeta: - '@types/react': - optional: true - react: - optional: true - dependencies: + jotai@2.6.4(@types/react@18.0.27)(react@18.2.0): + optionalDependencies: '@types/react': 18.0.27 react: 18.2.0 - dev: false - /js-beautify@1.14.11: - resolution: {integrity: sha512-rPogWqAfoYh1Ryqqh2agUpVfbxAhbjuN1SmU86dskQUKouRiggUTCO4+2ym9UPXllc2WAp0J+T5qxn7Um3lCdw==} - engines: {node: '>=14'} - hasBin: true + js-beautify@1.14.11: dependencies: config-chain: 1.1.13 editorconfig: 1.0.4 glob: 10.3.10 nopt: 7.2.0 - dev: false - /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + js-tokens@4.0.0: {} - /js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true + js-yaml@3.14.1: dependencies: argparse: 1.0.10 esprima: 4.0.1 - dev: true - /js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true + js-yaml@4.1.0: dependencies: argparse: 2.0.1 - dev: true - /jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - dev: false + jsesc@2.5.2: {} - /json-bigint@1.0.0: - resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} + json-bigint@1.0.0: dependencies: bignumber.js: 9.1.2 - dev: false - /json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - dev: true + json-buffer@3.0.1: {} - /json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + json-parse-even-better-errors@2.3.1: {} - /json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + json-schema-traverse@0.4.1: {} - /json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - dev: false + json-schema-traverse@1.0.0: {} - /json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: true + json-stable-stringify-without-jsonify@1.0.1: {} - /json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true + json5@1.0.2: dependencies: minimist: 1.2.8 - dev: true - /json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - dev: false + json5@2.2.3: {} - /jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 - dev: true - /jsx-ast-utils@3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} - engines: {node: '>=4.0'} + jsx-ast-utils@3.3.5: dependencies: array-includes: 3.1.7 array.prototype.flat: 1.3.2 object.assign: 4.1.5 object.values: 1.1.7 - dev: true - /jwa@2.0.0: - resolution: {integrity: sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==} + jwa@2.0.0: dependencies: buffer-equal-constant-time: 1.0.1 ecdsa-sig-formatter: 1.0.11 safe-buffer: 5.2.1 - dev: false - /jws@4.0.0: - resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} + jws@4.0.0: dependencies: jwa: 2.0.0 safe-buffer: 5.2.1 - dev: false - /keyv@4.5.3: - resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} + keyv@4.5.3: dependencies: json-buffer: 3.0.1 - dev: true - /kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - dev: true + kind-of@6.0.3: {} - /kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - dev: true + kleur@4.1.5: {} - /language-subtag-registry@0.3.22: - resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} - dev: true + language-subtag-registry@0.3.22: {} - /language-tags@1.0.9: - resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} - engines: {node: '>=0.10'} + language-tags@1.0.9: dependencies: language-subtag-registry: 0.3.22 - dev: true - /leac@0.6.0: - resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} - dev: false + leac@0.6.0: {} - /levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} + levn@0.4.1: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 - dev: true - /lie@3.1.1: - resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} + lie@3.1.1: dependencies: immediate: 3.0.6 - dev: false - /lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} + lilconfig@2.1.0: {} - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + lines-and-columns@1.2.4: {} - /lint-staged@15.0.2: - resolution: {integrity: sha512-vnEy7pFTHyVuDmCAIFKR5QDO8XLVlPFQQyujQ/STOxe40ICWqJ6knS2wSJ/ffX/Lw0rz83luRDh+ET7toN+rOw==} - engines: {node: '>=18.12.0'} - hasBin: true + lint-staged@15.0.2: dependencies: chalk: 5.3.0 commander: 11.1.0 @@ -6348,11 +9058,8 @@ packages: yaml: 2.3.3 transitivePeerDependencies: - supports-color - dev: true - /listr2@7.0.2: - resolution: {integrity: sha512-rJysbR9GKIalhTbVL2tYbF2hVyDnrf7pFUZBwjPaMIdadYHmeT+EVi/Bu3qd7ETQPahTotg2WRCatXwRBW554g==} - engines: {node: '>=16.0.0'} + listr2@7.0.2: dependencies: cli-truncate: 3.1.0 colorette: 2.0.20 @@ -6360,145 +9067,89 @@ packages: log-update: 5.0.1 rfdc: 1.3.0 wrap-ansi: 8.1.0 - dev: true - /load-yaml-file@0.2.0: - resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} - engines: {node: '>=6'} + load-yaml-file@0.2.0: dependencies: graceful-fs: 4.2.11 js-yaml: 3.14.1 pify: 4.0.1 strip-bom: 3.0.0 - dev: true - /loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} - engines: {node: '>=6.11.5'} - dev: false + loader-runner@4.3.0: {} - /localforage@1.10.0: - resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} + localforage@1.10.0: dependencies: lie: 3.1.1 - dev: false - /locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} + locate-path@5.0.0: dependencies: p-locate: 4.1.0 - dev: true - /locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} + locate-path@6.0.0: dependencies: p-locate: 5.0.0 - dev: true - /locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + locate-path@7.2.0: dependencies: p-locate: 6.0.0 - dev: false - /lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: true + lodash.merge@4.6.2: {} - /lodash.startcase@4.4.0: - resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - dev: true + lodash.startcase@4.4.0: {} - /log-update@5.0.1: - resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + log-update@5.0.1: dependencies: ansi-escapes: 5.0.0 cli-cursor: 4.0.0 slice-ansi: 5.0.0 strip-ansi: 7.1.0 wrap-ansi: 8.1.0 - dev: true - /longest-streak@3.1.0: - resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - dev: false + longest-streak@3.1.0: {} - /loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true + loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 - /lru-cache@10.2.0: - resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} - engines: {node: 14 || >=16.14} + lru-cache@10.2.0: {} - /lru-cache@4.1.5: - resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + lru-cache@4.1.5: dependencies: pseudomap: 1.0.2 yallist: 2.1.2 - dev: true - /lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 - dev: false - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} + lru-cache@6.0.0: dependencies: yallist: 4.0.0 - /lucide-react@0.344.0(react@18.2.0): - resolution: {integrity: sha512-6YyBnn91GB45VuVT96bYCOKElbJzUHqp65vX8cDcu55MQL9T969v4dhGClpljamuI/+KMO9P6w9Acq1CVQGvIQ==} - peerDependencies: - react: ^16.5.1 || ^17.0.0 || ^18.0.0 + lucide-react@0.344.0(react@18.2.0): dependencies: react: 18.2.0 - dev: false - /magic-string@0.27.0: - resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} - engines: {node: '>=12'} + magic-string@0.27.0: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - dev: false - /make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + make-error@1.3.6: {} - /map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} - dev: true + map-obj@1.0.1: {} - /map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} - dev: true + map-obj@4.3.0: {} - /markdown-table@3.0.3: - resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} - dev: false + markdown-table@3.0.3: {} - /mdast-util-find-and-replace@3.0.1: - resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} + mdast-util-find-and-replace@3.0.1: dependencies: '@types/mdast': 4.0.3 escape-string-regexp: 5.0.0 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - dev: false - /mdast-util-from-markdown@2.0.0: - resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} + mdast-util-from-markdown@2.0.0: dependencies: '@types/mdast': 4.0.3 '@types/unist': 3.0.0 @@ -6514,20 +9165,16 @@ packages: unist-util-stringify-position: 4.0.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-gfm-autolink-literal@2.0.0: - resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} + mdast-util-gfm-autolink-literal@2.0.0: dependencies: '@types/mdast': 4.0.3 ccount: 2.0.1 devlop: 1.1.0 mdast-util-find-and-replace: 3.0.1 micromark-util-character: 2.0.1 - dev: false - /mdast-util-gfm-footnote@2.0.0: - resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} + mdast-util-gfm-footnote@2.0.0: dependencies: '@types/mdast': 4.0.3 devlop: 1.1.0 @@ -6536,20 +9183,16 @@ packages: micromark-util-normalize-identifier: 2.0.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + mdast-util-gfm-strikethrough@2.0.0: dependencies: '@types/mdast': 4.0.3 mdast-util-from-markdown: 2.0.0 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-gfm-table@2.0.0: - resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + mdast-util-gfm-table@2.0.0: dependencies: '@types/mdast': 4.0.3 devlop: 1.1.0 @@ -6558,10 +9201,8 @@ packages: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-gfm-task-list-item@2.0.0: - resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + mdast-util-gfm-task-list-item@2.0.0: dependencies: '@types/mdast': 4.0.3 devlop: 1.1.0 @@ -6569,10 +9210,8 @@ packages: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-gfm@3.0.0: - resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} + mdast-util-gfm@3.0.0: dependencies: mdast-util-from-markdown: 2.0.0 mdast-util-gfm-autolink-literal: 2.0.0 @@ -6583,10 +9222,8 @@ packages: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-mdx-expression@2.0.0: - resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} + mdast-util-mdx-expression@2.0.0: dependencies: '@types/estree-jsx': 1.0.3 '@types/hast': 3.0.0 @@ -6596,10 +9233,8 @@ packages: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-mdx-jsx@3.0.0: - resolution: {integrity: sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==} + mdast-util-mdx-jsx@3.0.0: dependencies: '@types/estree-jsx': 1.0.3 '@types/hast': 3.0.0 @@ -6616,10 +9251,8 @@ packages: vfile-message: 4.0.2 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-mdxjs-esm@2.0.1: - resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + mdast-util-mdxjs-esm@2.0.1: dependencies: '@types/estree-jsx': 1.0.3 '@types/hast': 3.0.0 @@ -6629,17 +9262,13 @@ packages: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-phrasing@4.0.0: - resolution: {integrity: sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==} + mdast-util-phrasing@4.0.0: dependencies: '@types/mdast': 4.0.3 unist-util-is: 6.0.0 - dev: false - /mdast-util-to-hast@13.0.2: - resolution: {integrity: sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==} + mdast-util-to-hast@13.0.2: dependencies: '@types/hast': 3.0.0 '@types/mdast': 4.0.3 @@ -6649,10 +9278,8 @@ packages: trim-lines: 3.0.1 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 - dev: false - /mdast-util-to-markdown@2.1.0: - resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} + mdast-util-to-markdown@2.1.0: dependencies: '@types/mdast': 4.0.3 '@types/unist': 3.0.0 @@ -6662,17 +9289,12 @@ packages: micromark-util-decode-string: 2.0.0 unist-util-visit: 5.0.0 zwitch: 2.0.4 - dev: false - /mdast-util-to-string@4.0.0: - resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + mdast-util-to-string@4.0.0: dependencies: '@types/mdast': 4.0.3 - dev: false - /meow@6.1.1: - resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} - engines: {node: '>=8'} + meow@6.1.1: dependencies: '@types/minimist': 1.2.2 camelcase-keys: 6.2.2 @@ -6685,17 +9307,12 @@ packages: trim-newlines: 3.0.1 type-fest: 0.13.1 yargs-parser: 18.1.3 - dev: true - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + merge-stream@2.0.0: {} - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} + merge2@1.4.1: {} - /micromark-core-commonmark@2.0.0: - resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==} + micromark-core-commonmark@2.0.0: dependencies: decode-named-character-reference: 1.0.2 devlop: 1.1.0 @@ -6713,19 +9330,15 @@ packages: micromark-util-subtokenize: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-extension-gfm-autolink-literal@2.0.0: - resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} + micromark-extension-gfm-autolink-literal@2.0.0: dependencies: micromark-util-character: 2.0.1 micromark-util-sanitize-uri: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-extension-gfm-footnote@2.0.0: - resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==} + micromark-extension-gfm-footnote@2.0.0: dependencies: devlop: 1.1.0 micromark-core-commonmark: 2.0.0 @@ -6735,10 +9348,8 @@ packages: micromark-util-sanitize-uri: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-extension-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==} + micromark-extension-gfm-strikethrough@2.0.0: dependencies: devlop: 1.1.0 micromark-util-chunked: 2.0.0 @@ -6746,36 +9357,28 @@ packages: micromark-util-resolve-all: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-extension-gfm-table@2.0.0: - resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==} + micromark-extension-gfm-table@2.0.0: dependencies: devlop: 1.1.0 micromark-factory-space: 2.0.0 micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-extension-gfm-tagfilter@2.0.0: - resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + micromark-extension-gfm-tagfilter@2.0.0: dependencies: micromark-util-types: 2.0.0 - dev: false - /micromark-extension-gfm-task-list-item@2.0.1: - resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==} + micromark-extension-gfm-task-list-item@2.0.1: dependencies: devlop: 1.1.0 micromark-factory-space: 2.0.0 micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-extension-gfm@3.0.0: - resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + micromark-extension-gfm@3.0.0: dependencies: micromark-extension-gfm-autolink-literal: 2.0.0 micromark-extension-gfm-footnote: 2.0.0 @@ -6785,140 +9388,100 @@ packages: micromark-extension-gfm-task-list-item: 2.0.1 micromark-util-combine-extensions: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-factory-destination@2.0.0: - resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} + micromark-factory-destination@2.0.0: dependencies: micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-factory-label@2.0.0: - resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} + micromark-factory-label@2.0.0: dependencies: devlop: 1.1.0 micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-factory-space@2.0.0: - resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} + micromark-factory-space@2.0.0: dependencies: micromark-util-character: 2.0.1 micromark-util-types: 2.0.0 - dev: false - /micromark-factory-title@2.0.0: - resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} + micromark-factory-title@2.0.0: dependencies: micromark-factory-space: 2.0.0 micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-factory-whitespace@2.0.0: - resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} + micromark-factory-whitespace@2.0.0: dependencies: micromark-factory-space: 2.0.0 micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-util-character@2.0.1: - resolution: {integrity: sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==} + micromark-util-character@2.0.1: dependencies: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-util-chunked@2.0.0: - resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} + micromark-util-chunked@2.0.0: dependencies: micromark-util-symbol: 2.0.0 - dev: false - /micromark-util-classify-character@2.0.0: - resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + micromark-util-classify-character@2.0.0: dependencies: micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-util-combine-extensions@2.0.0: - resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} + micromark-util-combine-extensions@2.0.0: dependencies: micromark-util-chunked: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-util-decode-numeric-character-reference@2.0.1: - resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} + micromark-util-decode-numeric-character-reference@2.0.1: dependencies: micromark-util-symbol: 2.0.0 - dev: false - /micromark-util-decode-string@2.0.0: - resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} + micromark-util-decode-string@2.0.0: dependencies: decode-named-character-reference: 1.0.2 micromark-util-character: 2.0.1 micromark-util-decode-numeric-character-reference: 2.0.1 micromark-util-symbol: 2.0.0 - dev: false - /micromark-util-encode@2.0.0: - resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} - dev: false + micromark-util-encode@2.0.0: {} - /micromark-util-html-tag-name@2.0.0: - resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} - dev: false + micromark-util-html-tag-name@2.0.0: {} - /micromark-util-normalize-identifier@2.0.0: - resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} + micromark-util-normalize-identifier@2.0.0: dependencies: micromark-util-symbol: 2.0.0 - dev: false - /micromark-util-resolve-all@2.0.0: - resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} + micromark-util-resolve-all@2.0.0: dependencies: micromark-util-types: 2.0.0 - dev: false - /micromark-util-sanitize-uri@2.0.0: - resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} + micromark-util-sanitize-uri@2.0.0: dependencies: micromark-util-character: 2.0.1 micromark-util-encode: 2.0.0 micromark-util-symbol: 2.0.0 - dev: false - /micromark-util-subtokenize@2.0.0: - resolution: {integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==} + micromark-util-subtokenize@2.0.0: dependencies: devlop: 1.1.0 micromark-util-chunked: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-util-symbol@2.0.0: - resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} - dev: false + micromark-util-symbol@2.0.0: {} - /micromark-util-types@2.0.0: - resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} - dev: false + micromark-util-types@2.0.0: {} - /micromark@4.0.0: - resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} + micromark@4.0.0: dependencies: '@types/debug': 4.1.8 debug: 4.3.4 @@ -6939,154 +9502,85 @@ packages: micromark-util-types: 2.0.0 transitivePeerDependencies: - supports-color - dev: false - /micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} + micromatch@4.0.5: dependencies: braces: 3.0.2 picomatch: 2.3.1 - /mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - dev: false + mime-db@1.52.0: {} - /mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} + mime-types@2.1.35: dependencies: mime-db: 1.52.0 - dev: false - /mime@3.0.0: - resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} - engines: {node: '>=10.0.0'} - hasBin: true - dev: false + mime@3.0.0: {} - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - dev: true + mimic-fn@2.1.0: {} - /mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - dev: true + mimic-fn@4.0.0: {} - /min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - dev: true + min-indent@1.0.1: {} - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 - /minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} + minimatch@5.1.6: dependencies: brace-expansion: 2.0.1 - dev: false - /minimatch@9.0.1: - resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} - engines: {node: '>=16 || 14 >=14.17'} + minimatch@9.0.1: dependencies: brace-expansion: 2.0.1 - dev: false - /minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} + minimatch@9.0.3: dependencies: brace-expansion: 2.0.1 - dev: true - /minimatch@9.0.4: - resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} - engines: {node: '>=16 || 14 >=14.17'} + minimatch@9.0.4: dependencies: brace-expansion: 2.0.1 - /minimist-options@4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} + minimist-options@4.1.0: dependencies: arrify: 1.0.1 is-plain-obj: 1.1.0 kind-of: 6.0.3 - dev: true - /minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + minimist@1.2.8: {} - /minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} - engines: {node: '>=16 || 14 >=14.17'} + minipass@7.0.4: {} - /mixme@0.5.9: - resolution: {integrity: sha512-VC5fg6ySUscaWUpI4gxCBTQMH2RdUpNrk+MsbpCYtIvf9SBJdiUey4qE7BXviJsJR4nDQxCZ+3yaYNW3guz/Pw==} - engines: {node: '>= 8.0.0'} - dev: true + mixme@0.5.9: {} - /mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true + mkdirp@0.5.6: dependencies: minimist: 1.2.8 - dev: false - /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + ms@2.1.2: {} - /mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + mz@2.7.0: dependencies: any-promise: 1.3.0 object-assign: 4.1.1 thenify-all: 1.6.0 - /nanoid@3.3.6: - resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: true + nanoid@3.3.6: {} - /nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true + nanoid@3.3.7: {} - /natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - dev: true + natural-compare@1.4.0: {} - /neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - dev: false + neo-async@2.6.2: {} - /next-auth@4.24.7(next@14.2.4)(nodemailer@6.9.13)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-iChjE8ov/1K/z98gdKbn2Jw+2vLgJtVV39X+rCP5SGnVQuco7QOr19FRNGMIrD8d3LYhHWV9j9sKLzq1aDWWQQ==} - peerDependencies: - next: ^12.2.5 || ^13 || ^14 - nodemailer: ^6.6.5 - react: ^17.0.2 || ^18 - react-dom: ^17.0.2 || ^18 - peerDependenciesMeta: - nodemailer: - optional: true + next-auth@4.24.7(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@babel/runtime': 7.23.7 '@panva/hkdf': 1.1.1 cookie: 0.5.0 jose: 4.15.5 - next: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.41.1)(react-dom@18.2.0)(react@18.2.0) - nodemailer: 6.9.13 + next: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) oauth: 0.9.15 openid-client: 5.6.5 preact: 10.11.3 @@ -7094,10 +9588,10 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) uuid: 8.3.2 - dev: false + optionalDependencies: + nodemailer: 6.9.14 - /next-remove-imports@1.0.12(webpack@5.89.0): - resolution: {integrity: sha512-3tdL6VuSykJ/mcUwxfjQ+Fd4OpEmrwWVHtLZ/fhNcSaToWCutUp7nrfIww7/4CURe9I7BDCQE9AWl4fkY3YZOQ==} + next-remove-imports@1.0.12(webpack@5.89.0): dependencies: '@babel/core': 7.22.17 babel-loader: 9.1.3(@babel/core@7.22.17)(webpack@5.89.0) @@ -7105,25 +9599,15 @@ packages: transitivePeerDependencies: - supports-color - webpack - dev: false - /next-safe-action@7.0.2(next@14.2.4)(react-dom@18.2.0)(react@18.2.0)(zod@3.22.4): - resolution: {integrity: sha512-Zjxo5HhOV0vUxKP2zf4UE5d603oCwdr9CNadc4aImJnYrcpfed3S/mUf2gfXEHjTjRyPoTQ+s4oLMy5rATGuPQ==} - engines: {node: '>=18.17'} - peerDependencies: - next: '>= 14.0.0' - react: '>= 18.2.0' - react-dom: '>= 18.2.0' - zod: '>= 3.0.0' - peerDependenciesMeta: - zod: - optional: true + next-safe-action@7.0.2(@types/json-schema@7.0.15)(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(zod@3.22.4): dependencies: - '@typeschema/main': 0.13.10(@typeschema/zod@0.13.3) - '@typeschema/zod': 0.13.3(zod@3.22.4) - next: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.41.1)(react-dom@18.2.0)(react@18.2.0) + '@typeschema/main': 0.13.10(@types/json-schema@7.0.15)(@typeschema/zod@0.13.3(@types/json-schema@7.0.15)(zod@3.22.4)) + '@typeschema/zod': 0.13.3(@types/json-schema@7.0.15)(zod@3.22.4) + next: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + optionalDependencies: zod: 3.22.4 transitivePeerDependencies: - '@types/json-schema' @@ -7146,40 +9630,16 @@ packages: - '@typeschema/vine' - '@typeschema/yup' - zod-to-json-schema - dev: false - /next-themes@0.2.1(next@14.2.4)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==} - peerDependencies: - next: '*' - react: '*' - react-dom: '*' + next-themes@0.2.1(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: - next: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.41.1)(react-dom@18.2.0)(react@18.2.0) + next: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: false - /next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.41.1)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-R8/V7vugY+822rsQGQCjoLhMuC9oFj9SOi4Cl4b2wjDrseD0LRZ10W7R6Czo4w9ZznVSshKjuIomsRjvm9EKJQ==} - engines: {node: '>=18.17.0'} - hasBin: true - peerDependencies: - '@opentelemetry/api': ^1.1.0 - '@playwright/test': ^1.41.2 - react: ^18.2.0 - react-dom: ^18.2.0 - sass: ^1.3.0 - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - '@playwright/test': - optional: true - sass: - optional: true + next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@next/env': 14.2.4 - '@playwright/test': 1.41.1 '@swc/helpers': 0.5.5 busboy: 1.6.0 caniuse-lite: 1.0.30001587 @@ -7198,222 +9658,137 @@ packages: '@next/swc-win32-arm64-msvc': 14.2.4 '@next/swc-win32-ia32-msvc': 14.2.4 '@next/swc-win32-x64-msvc': 14.2.4 + '@playwright/test': 1.45.0 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - dev: false - /node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true + node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 - dev: false - /node-releases@2.0.13: - resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + node-releases@2.0.13: {} - /node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - dev: false + node-releases@2.0.14: {} - /nodemailer@6.9.13: - resolution: {integrity: sha512-7o38Yogx6krdoBf3jCAqnIN4oSQFx+fMa0I7dK1D+me9kBxx12D+/33wSb+fhOCtIxvYJ+4x4IMEhmhCKfAiOA==} - engines: {node: '>=6.0.0'} - dev: false + nodemailer@6.9.14: {} - /nopt@7.2.0: - resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - hasBin: true + nopt@7.2.0: dependencies: abbrev: 2.0.0 - dev: false - /normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + normalize-package-data@2.5.0: dependencies: hosted-git-info: 2.8.9 resolve: 1.22.8 semver: 5.7.2 validate-npm-package-license: 3.0.4 - dev: true - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} + normalize-path@3.0.0: {} - /normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - dev: true + normalize-range@0.1.2: {} - /not@0.1.0: - resolution: {integrity: sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==} - dev: false + not@0.1.0: {} - /npm-run-path@5.1.0: - resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + npm-run-path@5.1.0: dependencies: path-key: 4.0.0 - dev: true - /nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + nth-check@2.1.1: dependencies: boolbase: 1.0.0 - dev: false - /oauth@0.9.15: - resolution: {integrity: sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==} - dev: false + oauth@0.9.15: {} - /object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} + object-assign@4.1.1: {} - /object-hash@2.2.0: - resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} - engines: {node: '>= 6'} - dev: false + object-hash@2.2.0: {} - /object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} + object-hash@3.0.0: {} - /object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + object-inspect@1.13.1: {} - /object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - dev: true + object-keys@1.1.1: {} - /object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} - engines: {node: '>= 0.4'} + object.assign@4.1.5: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 - dev: true - /object.entries@1.1.7: - resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} - engines: {node: '>= 0.4'} + object.entries@1.1.7: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - dev: true - /object.entries@1.1.8: - resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} - engines: {node: '>= 0.4'} + object.entries@1.1.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 - dev: true - /object.fromentries@2.0.7: - resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} - engines: {node: '>= 0.4'} + object.fromentries@2.0.7: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - dev: true - /object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} + object.fromentries@2.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-object-atoms: 1.0.0 - dev: true - /object.groupby@1.0.1: - resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} + object.groupby@1.0.1: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 get-intrinsic: 1.2.2 - dev: true - /object.hasown@1.1.4: - resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} - engines: {node: '>= 0.4'} + object.hasown@1.1.4: dependencies: define-properties: 1.2.1 es-abstract: 1.23.3 es-object-atoms: 1.0.0 - dev: true - /object.values@1.1.7: - resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} - engines: {node: '>= 0.4'} + object.values@1.1.7: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - dev: true - /object.values@1.2.0: - resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} - engines: {node: '>= 0.4'} + object.values@1.2.0: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 - dev: true - /oidc-token-hash@5.0.3: - resolution: {integrity: sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==} - engines: {node: ^10.13.0 || >=12.0.0} - dev: false + oidc-token-hash@5.0.3: {} - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + once@1.4.0: dependencies: wrappy: 1.0.2 - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} + onetime@5.1.2: dependencies: mimic-fn: 2.1.0 - dev: true - /onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} + onetime@6.0.0: dependencies: mimic-fn: 4.0.0 - dev: true - /openid-client@5.6.5: - resolution: {integrity: sha512-5P4qO9nGJzB5PI0LFlhj4Dzg3m4odt0qsJTfyEtZyOlkgpILwEioOhVVJOrS1iVH494S4Ee5OCjjg6Bf5WOj3w==} + openid-client@5.6.5: dependencies: jose: 4.15.5 lru-cache: 6.0.0 object-hash: 2.2.0 oidc-token-hash: 5.0.3 - dev: false - /optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} - engines: {node: '>= 0.8.0'} + optionator@0.9.3: dependencies: '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 @@ -7421,88 +9796,50 @@ packages: levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 - dev: true - /os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - dev: true + os-tmpdir@1.0.2: {} - /outdent@0.5.0: - resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} - dev: true + outdent@0.5.0: {} - /p-filter@2.1.0: - resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} - engines: {node: '>=8'} + p-filter@2.1.0: dependencies: p-map: 2.1.0 - dev: true - /p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} + p-limit@2.3.0: dependencies: p-try: 2.2.0 - dev: true - /p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 - /p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-limit@4.0.0: dependencies: yocto-queue: 1.0.0 - dev: false - /p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} + p-locate@4.1.0: dependencies: p-limit: 2.3.0 - dev: true - /p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} + p-locate@5.0.0: dependencies: p-limit: 3.1.0 - dev: true - /p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-locate@6.0.0: dependencies: p-limit: 4.0.0 - dev: false - /p-map@2.1.0: - resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} - engines: {node: '>=6'} - dev: true + p-map@2.1.0: {} - /p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - dev: true + p-try@2.2.0: {} - /papaparse@5.4.1: - resolution: {integrity: sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw==} - dev: false + papaparse@5.4.1: {} - /parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} + parent-module@1.0.1: dependencies: callsites: 3.1.0 - dev: true - /parse-entities@4.0.1: - resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} + parse-entities@4.0.1: dependencies: '@types/unist': 2.0.8 character-entities: 2.0.2 @@ -7512,428 +9849,211 @@ packages: is-alphanumerical: 2.0.1 is-decimal: 2.0.1 is-hexadecimal: 2.0.1 - dev: false - /parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} + parse-json@5.2.0: dependencies: '@babel/code-frame': 7.22.13 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - dev: true - /parse-numeric-range@1.3.0: - resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} - dev: false + parse-numeric-range@1.3.0: {} - /parse5@6.0.1: - resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - dev: false + parse5@6.0.1: {} - /parse5@7.1.2: - resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + parse5@7.1.2: dependencies: entities: 4.5.0 - dev: false - /parseley@0.12.1: - resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==} + parseley@0.12.1: dependencies: leac: 0.6.0 peberminta: 0.9.0 - dev: false - /path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - dev: true + path-exists@4.0.0: {} - /path-exists@5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: false + path-exists@5.0.0: {} - /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} + path-is-absolute@1.0.1: {} - /path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} + path-key@3.1.1: {} - /path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - dev: true + path-key@4.0.0: {} - /path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-parse@1.0.7: {} - /path-scurry@1.10.1: - resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} - engines: {node: '>=16 || 14 >=14.17'} + path-scurry@1.10.1: dependencies: lru-cache: 10.2.0 minipass: 7.0.4 - /path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - dev: true + path-type@4.0.0: {} - /peberminta@0.9.0: - resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} - dev: false + peberminta@0.9.0: {} - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + picocolors@1.0.0: {} - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} + picomatch@2.3.1: {} - /pidtree@0.6.0: - resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} - engines: {node: '>=0.10'} - hasBin: true - dev: true + pidtree@0.6.0: {} - /pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} + pify@2.3.0: {} - /pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - dev: true + pify@4.0.1: {} - /pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} + pirates@4.0.6: {} - /pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} + pkg-dir@4.2.0: dependencies: find-up: 4.1.0 - dev: true - /pkg-dir@7.0.0: - resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} - engines: {node: '>=14.16'} + pkg-dir@7.0.0: dependencies: find-up: 6.3.0 - dev: false - /playwright-core@1.41.1: - resolution: {integrity: sha512-/KPO5DzXSMlxSX77wy+HihKGOunh3hqndhqeo/nMxfigiKzogn8kfL0ZBDu0L1RKgan5XHCPmn6zXd2NUJgjhg==} - engines: {node: '>=16'} - hasBin: true + playwright-core@1.45.0: {} - /playwright@1.41.1: - resolution: {integrity: sha512-gdZAWG97oUnbBdRL3GuBvX3nDDmUOuqzV/D24dytqlKt+eI5KbwusluZRGljx1YoJKZ2NRPaeWiFTeGZO7SosQ==} - engines: {node: '>=16'} - hasBin: true + playwright@1.45.0: dependencies: - playwright-core: 1.41.1 + playwright-core: 1.45.0 optionalDependencies: fsevents: 2.3.2 - /possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} - dev: true + possible-typed-array-names@1.0.0: {} - /postcss-import@15.1.0(postcss@8.4.31): - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 + postcss-import@15.1.0(postcss@8.4.31): dependencies: postcss: 8.4.31 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - /postcss-js@4.0.1(postcss@8.4.31): - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 + postcss-js@4.0.1(postcss@8.4.31): dependencies: camelcase-css: 2.0.1 postcss: 8.4.31 - /postcss-load-config@4.0.1(postcss@8.4.31)(ts-node@10.9.1): - resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true + postcss-load-config@4.0.1(postcss@8.4.31)(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3)): dependencies: lilconfig: 2.1.0 + yaml: 2.3.3 + optionalDependencies: postcss: 8.4.31 ts-node: 10.9.1(@types/node@20.5.6)(typescript@5.3.3) - yaml: 2.3.3 - /postcss-nested@6.0.1(postcss@8.4.31): - resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 + postcss-nested@6.0.1(postcss@8.4.31): dependencies: postcss: 8.4.31 postcss-selector-parser: 6.0.13 - /postcss-selector-parser@6.0.13: - resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} - engines: {node: '>=4'} + postcss-selector-parser@6.0.13: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - /postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + postcss-value-parser@4.2.0: {} - /postcss@8.4.28: - resolution: {integrity: sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==} - engines: {node: ^10 || ^12 || >=14} + postcss@8.4.28: dependencies: nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 - dev: true - /postcss@8.4.31: - resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} - engines: {node: ^10 || ^12 || >=14} + postcss@8.4.31: dependencies: nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.0.2 - /preact-render-to-string@5.2.3(preact@10.11.3): - resolution: {integrity: sha512-aPDxUn5o3GhWdtJtW0svRC2SS/l8D9MAgo2+AWml+BhDImb27ALf04Q2d+AHqUUOc6RdSXFIBVa2gxzgMKgtZA==} - peerDependencies: - preact: '>=10' + preact-render-to-string@5.2.3(preact@10.11.3): dependencies: preact: 10.11.3 pretty-format: 3.8.0 - dev: false - /preact@10.11.3: - resolution: {integrity: sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==} - dev: false + preact@10.11.3: {} - /preferred-pm@3.0.3: - resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} - engines: {node: '>=10'} + preferred-pm@3.0.3: dependencies: find-up: 5.0.0 find-yarn-workspace-root2: 1.2.16 path-exists: 4.0.0 which-pm: 2.0.0 - dev: true - /prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - dev: true + prelude-ls@1.2.1: {} - /prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} + prettier-linter-helpers@1.0.0: dependencies: fast-diff: 1.3.0 - dev: true - /prettier-plugin-tailwindcss@0.6.2(prettier@3.2.5): - resolution: {integrity: sha512-eFefm4cg+1c2B57+H274Qm//CTWBdtQN9ansl0YTP/8TC8x3bugCTQSS/e4FC5Ctl9djhTzsbcMrZ7x2/abIow==} - engines: {node: '>=14.21.3'} - peerDependencies: - '@ianvs/prettier-plugin-sort-imports': '*' - '@prettier/plugin-pug': '*' - '@shopify/prettier-plugin-liquid': '*' - '@trivago/prettier-plugin-sort-imports': '*' - '@zackad/prettier-plugin-twig-melody': '*' - prettier: ^3.0 - prettier-plugin-astro: '*' - prettier-plugin-css-order: '*' - prettier-plugin-import-sort: '*' - prettier-plugin-jsdoc: '*' - prettier-plugin-marko: '*' - prettier-plugin-organize-attributes: '*' - prettier-plugin-organize-imports: '*' - prettier-plugin-sort-imports: '*' - prettier-plugin-style-order: '*' - prettier-plugin-svelte: '*' - peerDependenciesMeta: - '@ianvs/prettier-plugin-sort-imports': - optional: true - '@prettier/plugin-pug': - optional: true - '@shopify/prettier-plugin-liquid': - optional: true - '@trivago/prettier-plugin-sort-imports': - optional: true - '@zackad/prettier-plugin-twig-melody': - optional: true - prettier-plugin-astro: - optional: true - prettier-plugin-css-order: - optional: true - prettier-plugin-import-sort: - optional: true - prettier-plugin-jsdoc: - optional: true - prettier-plugin-marko: - optional: true - prettier-plugin-organize-attributes: - optional: true - prettier-plugin-organize-imports: - optional: true - prettier-plugin-sort-imports: - optional: true - prettier-plugin-style-order: - optional: true - prettier-plugin-svelte: - optional: true + prettier-plugin-tailwindcss@0.6.2(prettier@3.2.5): dependencies: prettier: 3.2.5 - dev: true - /prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - dev: true + prettier@2.8.8: {} - /prettier@3.2.5: - resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} - engines: {node: '>=14'} - hasBin: true - dev: true + prettier@3.2.5: {} - /pretty-format@3.8.0: - resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==} - dev: false + pretty-format@3.8.0: {} - /prisma@5.10.2: - resolution: {integrity: sha512-hqb/JMz9/kymRE25pMWCxkdyhbnIWrq+h7S6WysJpdnCvhstbJSNP/S6mScEcqiB8Qv2F+0R3yG+osRaWqZacQ==} - engines: {node: '>=16.13'} - hasBin: true - requiresBuild: true + prisma@5.10.2: dependencies: '@prisma/engines': 5.10.2 - /progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} - dev: false + progress@2.0.3: {} - /prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + prop-types@15.8.1: dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 - /property-information@6.2.0: - resolution: {integrity: sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==} - dev: false + property-information@6.2.0: {} - /proto-list@1.2.4: - resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} - dev: false + proto-list@1.2.4: {} - /proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - dev: false + proxy-from-env@1.1.0: {} - /pseudomap@1.0.2: - resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - dev: true + pseudomap@1.0.2: {} - /punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} - engines: {node: '>=6'} + punycode@2.3.0: {} - /qs@6.11.2: - resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} - engines: {node: '>=0.6'} + qs@6.11.2: dependencies: side-channel: 1.0.4 - dev: false - /queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + queue-microtask@1.2.3: {} - /quick-lru@4.0.1: - resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} - engines: {node: '>=8'} - dev: true + quick-lru@4.0.1: {} - /randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 - dev: false - /react-dom@18.2.0(react@18.2.0): - resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} - peerDependencies: - react: ^18.2.0 + react-dom@18.2.0(react@18.2.0): dependencies: loose-envify: 1.4.0 react: 18.2.0 scheduler: 0.23.0 - dev: false - /react-dropzone@14.2.3(react@18.2.0): - resolution: {integrity: sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==} - engines: {node: '>= 10.13'} - peerDependencies: - react: '>= 16.8 || 18.0.0' + react-dropzone@14.2.3(react@18.2.0): dependencies: attr-accept: 2.2.2 file-selector: 0.6.0 prop-types: 15.8.1 react: 18.2.0 - dev: false - /react-error-boundary@4.0.12(react@18.2.0): - resolution: {integrity: sha512-kJdxdEYlb7CPC1A0SeUY38cHpjuu6UkvzKiAmqmOFL21VRfMhOcWxTCBgLVCO0VEMh9JhFNcVaXlV4/BTpiwOA==} - peerDependencies: - react: '>=16.13.1' + react-error-boundary@4.0.12(react@18.2.0): dependencies: '@babel/runtime': 7.23.7 react: 18.2.0 - dev: false - /react-hook-form@7.45.4(react@18.2.0): - resolution: {integrity: sha512-HGDV1JOOBPZj10LB3+OZgfDBTn+IeEsNOKiq/cxbQAIbKaiJUe/KV8DBUzsx0Gx/7IG/orWqRRm736JwOfUSWQ==} - engines: {node: '>=12.22.0'} - peerDependencies: - react: ^16.8.0 || ^17 || ^18 + react-hook-form@7.45.4(react@18.2.0): dependencies: react: 18.2.0 - dev: false - /react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + react-is@16.13.1: {} - /react-markdown@9.0.1(@types/react@18.0.27)(react@18.2.0): - resolution: {integrity: sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==} - peerDependencies: - '@types/react': '>=18' - react: '>=18' + react-markdown@9.0.1(@types/react@18.0.27)(react@18.2.0): dependencies: '@types/hast': 3.0.0 '@types/react': 18.0.27 @@ -7949,163 +10069,100 @@ packages: vfile: 6.0.1 transitivePeerDependencies: - supports-color - dev: false - /react-paginate@8.2.0(react@18.2.0): - resolution: {integrity: sha512-sJCz1PW+9PNIjUSn919nlcRVuleN2YPoFBOvL+6TPgrH/3lwphqiSOgdrLafLdyLDxsgK+oSgviqacF4hxsDIw==} - peerDependencies: - react: ^16 || ^17 || ^18 + react-paginate@8.2.0(react@18.2.0): dependencies: prop-types: 15.8.1 react: 18.2.0 - dev: false - /react-papaparse@4.4.0: - resolution: {integrity: sha512-xTEwHZYJ+1dh9mQDQjjwJXmWyX20DdZ52u+ddw75V+Xm5qsjXSvWmC7c8K82vRwMjKAOH2S9uFyGpHEyEztkUQ==} - engines: {node: '>=8', npm: '>=5'} + react-papaparse@4.4.0: dependencies: '@types/papaparse': 5.3.14 papaparse: 5.4.1 - dev: false - /react-remove-scroll-bar@2.3.4(@types/react@18.0.27)(react@18.2.0): - resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + react-remove-scroll-bar@2.3.4(@types/react@18.0.27)(react@18.2.0): dependencies: - '@types/react': 18.0.27 react: 18.2.0 react-style-singleton: 2.2.1(@types/react@18.0.27)(react@18.2.0) tslib: 2.6.2 - dev: false + optionalDependencies: + '@types/react': 18.0.27 - /react-remove-scroll@2.5.5(@types/react@18.0.27)(react@18.2.0): - resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + react-remove-scroll@2.5.5(@types/react@18.0.27)(react@18.2.0): dependencies: - '@types/react': 18.0.27 react: 18.2.0 react-remove-scroll-bar: 2.3.4(@types/react@18.0.27)(react@18.2.0) react-style-singleton: 2.2.1(@types/react@18.0.27)(react@18.2.0) tslib: 2.6.2 use-callback-ref: 1.3.0(@types/react@18.0.27)(react@18.2.0) use-sidecar: 1.1.2(@types/react@18.0.27)(react@18.2.0) - dev: false + optionalDependencies: + '@types/react': 18.0.27 - /react-remove-scroll@2.5.7(@types/react@18.0.27)(react@18.2.0): - resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + react-remove-scroll@2.5.7(@types/react@18.0.27)(react@18.2.0): dependencies: - '@types/react': 18.0.27 react: 18.2.0 react-remove-scroll-bar: 2.3.4(@types/react@18.0.27)(react@18.2.0) react-style-singleton: 2.2.1(@types/react@18.0.27)(react@18.2.0) tslib: 2.6.2 use-callback-ref: 1.3.0(@types/react@18.0.27)(react@18.2.0) use-sidecar: 1.1.2(@types/react@18.0.27)(react@18.2.0) - dev: false + optionalDependencies: + '@types/react': 18.0.27 - /react-style-singleton@2.2.1(@types/react@18.0.27)(react@18.2.0): - resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + react-style-singleton@2.2.1(@types/react@18.0.27)(react@18.2.0): dependencies: - '@types/react': 18.0.27 get-nonce: 1.0.1 invariant: 2.2.4 react: 18.2.0 tslib: 2.6.2 - dev: false + optionalDependencies: + '@types/react': 18.0.27 - /react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} - engines: {node: '>=0.10.0'} + react@18.2.0: dependencies: loose-envify: 1.4.0 - dev: false - /read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + read-cache@1.0.0: dependencies: pify: 2.3.0 - /read-pkg-up@7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} + read-pkg-up@7.0.1: dependencies: find-up: 4.1.0 read-pkg: 5.2.0 type-fest: 0.8.1 - dev: true - /read-pkg@5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} + read-pkg@5.2.0: dependencies: '@types/normalize-package-data': 2.4.1 normalize-package-data: 2.5.0 parse-json: 5.2.0 type-fest: 0.6.0 - dev: true - /read-yaml-file@1.1.0: - resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} - engines: {node: '>=6'} + read-yaml-file@1.1.0: dependencies: graceful-fs: 4.2.11 js-yaml: 3.14.1 pify: 4.0.1 strip-bom: 3.0.0 - dev: true - /readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} + readable-stream@3.6.2: dependencies: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - dev: false - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} + readdirp@3.6.0: dependencies: picomatch: 2.3.1 - /redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} + redent@3.0.0: dependencies: indent-string: 4.0.0 strip-indent: 3.0.0 - dev: true - /reflect.getprototypeof@1.0.4: - resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} - engines: {node: '>= 0.4'} + reflect.getprototypeof@1.0.4: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 @@ -8113,49 +10170,35 @@ packages: get-intrinsic: 1.2.2 globalthis: 1.0.3 which-builtin-type: 1.1.3 - dev: true - /refractor@4.8.1: - resolution: {integrity: sha512-/fk5sI0iTgFYlmVGYVew90AoYnNMP6pooClx/XKqyeeCQXrL0Kvgn8V0VEht5ccdljbzzF1i3Q213gcntkRExg==} + refractor@4.8.1: dependencies: '@types/hast': 2.3.5 '@types/prismjs': 1.26.0 hastscript: 7.2.0 parse-entities: 4.0.1 - dev: false - /regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + regenerator-runtime@0.14.1: {} - /regexp.prototype.flags@1.5.1: - resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} - engines: {node: '>= 0.4'} + regexp.prototype.flags@1.5.1: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 set-function-name: 2.0.1 - dev: true - /regexp.prototype.flags@1.5.2: - resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} - engines: {node: '>= 0.4'} + regexp.prototype.flags@1.5.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-errors: 1.3.0 set-function-name: 2.0.2 - dev: true - /rehype-attr@3.0.3: - resolution: {integrity: sha512-Up50Xfra8tyxnkJdCzLBIBtxOcB2M1xdeKe1324U06RAvSjYm7ULSeoM+b/nYPQPVd7jsXJ9+39IG1WAJPXONw==} - engines: {node: '>=16'} + rehype-attr@3.0.3: dependencies: unified: 11.0.4 unist-util-visit: 5.0.0 - dev: false - /rehype-autolink-headings@7.1.0: - resolution: {integrity: sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw==} + rehype-autolink-headings@7.1.0: dependencies: '@types/hast': 3.0.0 '@ungap/structured-clone': 1.2.0 @@ -8163,36 +10206,27 @@ packages: hast-util-is-element: 3.0.0 unified: 11.0.4 unist-util-visit: 5.0.0 - dev: false - /rehype-ignore@2.0.2: - resolution: {integrity: sha512-BpAT/3lU9DMJ2siYVD/dSR0A/zQgD6Fb+fxkJd4j+wDVy6TYbYpK+FZqu8eM9EuNKGvi4BJR7XTZ/+zF02Dq8w==} - engines: {node: '>=16'} + rehype-ignore@2.0.2: dependencies: hast-util-select: 6.0.2 unified: 11.0.4 unist-util-visit: 5.0.0 - dev: false - /rehype-parse@8.0.5: - resolution: {integrity: sha512-Ds3RglaY/+clEX2U2mHflt7NlMA72KspZ0JLUJgBBLpRddBcEw3H8uYZQliQriku22NZpYMfjDdSgHcjxue24A==} + rehype-parse@8.0.5: dependencies: '@types/hast': 2.3.5 hast-util-from-parse5: 7.1.2 parse5: 6.0.1 unified: 10.1.2 - dev: false - /rehype-parse@9.0.0: - resolution: {integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==} + rehype-parse@9.0.0: dependencies: '@types/hast': 3.0.0 hast-util-from-html: 2.0.1 unified: 11.0.4 - dev: false - /rehype-prism-plus@1.6.3: - resolution: {integrity: sha512-F6tn376zimnvy+xW0bSnryul+rvVL7NhDIkavc9kAuzDx5zIZW04A6jdXPkcFBhojcqZB8b6pHt6CLqiUx+Tbw==} + rehype-prism-plus@1.6.3: dependencies: hast-util-to-string: 2.0.0 parse-numeric-range: 1.3.0 @@ -8200,10 +10234,8 @@ packages: rehype-parse: 8.0.5 unist-util-filter: 4.0.1 unist-util-visit: 4.1.2 - dev: false - /rehype-prism-plus@2.0.0: - resolution: {integrity: sha512-FeM/9V2N7EvDZVdR2dqhAzlw5YI49m9Tgn7ZrYJeYHIahM6gcXpH0K1y2gNnKanZCydOMluJvX2cB9z3lhY8XQ==} + rehype-prism-plus@2.0.0: dependencies: hast-util-to-string: 3.0.0 parse-numeric-range: 1.3.0 @@ -8211,67 +10243,50 @@ packages: rehype-parse: 9.0.0 unist-util-filter: 5.0.1 unist-util-visit: 5.0.0 - dev: false - /rehype-raw@7.0.0: - resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} + rehype-raw@7.0.0: dependencies: '@types/hast': 3.0.0 hast-util-raw: 9.0.1 vfile: 6.0.1 - dev: false - /rehype-rewrite@4.0.2: - resolution: {integrity: sha512-rjLJ3z6fIV11phwCqHp/KRo8xuUCO8o9bFJCNw5o6O2wlLk6g8r323aRswdGBQwfXPFYeSuZdAjp4tzo6RGqEg==} - engines: {node: '>=16.0.0'} + rehype-rewrite@4.0.2: dependencies: hast-util-select: 6.0.2 unified: 11.0.4 unist-util-visit: 5.0.0 - dev: false - /rehype-sanitize@6.0.0: - resolution: {integrity: sha512-CsnhKNsyI8Tub6L4sm5ZFsme4puGfc6pYylvXo1AeqaGbjOYyzNv3qZPwvs0oMJ39eryyeOdmxwUIo94IpEhqg==} + rehype-sanitize@6.0.0: dependencies: '@types/hast': 3.0.0 hast-util-sanitize: 5.0.0 - dev: false - /rehype-slug@6.0.0: - resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} + rehype-slug@6.0.0: dependencies: '@types/hast': 3.0.0 github-slugger: 2.0.0 hast-util-heading-rank: 3.0.0 hast-util-to-string: 3.0.0 unist-util-visit: 5.0.0 - dev: false - /rehype-stringify@10.0.0: - resolution: {integrity: sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==} + rehype-stringify@10.0.0: dependencies: '@types/hast': 3.0.0 hast-util-to-html: 9.0.0 unified: 11.0.4 - dev: false - /rehype@13.0.1: - resolution: {integrity: sha512-AcSLS2mItY+0fYu9xKxOu1LhUZeBZZBx8//5HKzF+0XP+eP8+6a5MXn2+DW2kfXR6Dtp1FEXMVrjyKAcvcU8vg==} + rehype@13.0.1: dependencies: '@types/hast': 3.0.0 rehype-parse: 9.0.0 rehype-stringify: 10.0.0 unified: 11.0.4 - dev: false - /relative-luminance@2.0.1: - resolution: {integrity: sha512-wFuITNthJilFPwkK7gNJcULxXBcfFZvZORsvdvxeOdO44wCeZnuQkf3nFFzOR/dpJNxYsdRZJLsepWbyKhnMww==} + relative-luminance@2.0.1: dependencies: esm: 3.2.25 - dev: false - /remark-gfm@4.0.0: - resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} + remark-gfm@4.0.0: dependencies: '@types/mdast': 4.0.3 mdast-util-gfm: 3.0.0 @@ -8281,10 +10296,8 @@ packages: unified: 11.0.4 transitivePeerDependencies: - supports-color - dev: false - /remark-parse@11.0.0: - resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + remark-parse@11.0.0: dependencies: '@types/mdast': 4.0.3 mdast-util-from-markdown: 2.0.0 @@ -8292,97 +10305,61 @@ packages: unified: 11.0.4 transitivePeerDependencies: - supports-color - dev: false - /remark-rehype@11.0.0: - resolution: {integrity: sha512-vx8x2MDMcxuE4lBmQ46zYUDfcFMmvg80WYX+UNLeG6ixjdCCLcw1lrgAukwBTuOFsS78eoAedHGn9sNM0w7TPw==} + remark-rehype@11.0.0: dependencies: '@types/hast': 3.0.0 '@types/mdast': 4.0.3 mdast-util-to-hast: 13.0.2 unified: 11.0.4 vfile: 6.0.1 - dev: false - /remark-stringify@11.0.0: - resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + remark-stringify@11.0.0: dependencies: '@types/mdast': 4.0.3 mdast-util-to-markdown: 2.1.0 unified: 11.0.4 - dev: false - /require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - dev: true + require-directory@2.1.1: {} - /require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - dev: false + require-from-string@2.0.2: {} - /require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - dev: true + require-main-filename@2.0.0: {} - /resend@3.2.0: - resolution: {integrity: sha512-lDHhexiFYPoLXy7zRlJ8D5eKxoXy6Tr9/elN3+Vv7PkUoYuSSD1fpiIfa/JYXEWyiyN2UczkCTLpkT8dDPJ4Pg==} - engines: {node: '>=18'} + resend@3.2.0: dependencies: '@react-email/render': 0.0.12 - dev: false - /resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - dev: true + resolve-from@4.0.0: {} - /resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: true + resolve-from@5.0.0: {} - /resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - dev: true + resolve-pkg-maps@1.0.0: {} - /resolve@1.22.4: - resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} - hasBin: true + resolve@1.22.4: dependencies: is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - /resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true + resolve@1.22.8: dependencies: is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - /resolve@2.0.0-next.5: - resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} - hasBin: true + resolve@2.0.0-next.5: dependencies: is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: true - /restore-cursor@4.0.0: - resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + restore-cursor@4.0.0: dependencies: onetime: 5.1.2 signal-exit: 3.0.7 - dev: true - /retry-request@7.0.2: - resolution: {integrity: sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==} - engines: {node: '>=14'} + retry-request@7.0.2: dependencies: '@types/request': 2.48.12 extend: 3.0.2 @@ -8390,161 +10367,100 @@ packages: transitivePeerDependencies: - encoding - supports-color - dev: false - /retry@0.13.1: - resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} - engines: {node: '>= 4'} - dev: false + retry@0.13.1: {} - /reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + reusify@1.0.4: {} - /rfdc@1.3.0: - resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} - dev: true + rfdc@1.3.0: {} - /rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true + rimraf@3.0.2: dependencies: glob: 7.1.7 - dev: true - /rollup@2.78.0: - resolution: {integrity: sha512-4+YfbQC9QEVvKTanHhIAFVUFSRsezvQF8vFOJwtGfb9Bb+r014S+qryr9PSmw8x6sMnPkmFBGAvIFVQxvJxjtg==} - engines: {node: '>=10.0.0'} - hasBin: true + rollup@2.78.0: optionalDependencies: fsevents: 2.3.3 - dev: false - /run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 - /safe-array-concat@1.0.1: - resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} - engines: {node: '>=0.4'} + safe-array-concat@1.0.1: dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 has-symbols: 1.0.3 isarray: 2.0.5 - dev: true - /safe-array-concat@1.1.2: - resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} - engines: {node: '>=0.4'} + safe-array-concat@1.1.2: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 has-symbols: 1.0.3 isarray: 2.0.5 - dev: true - /safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: false + safe-buffer@5.2.1: {} - /safe-regex-test@1.0.0: - resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + safe-regex-test@1.0.0: dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 is-regex: 1.1.4 - dev: true - /safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} - engines: {node: '>= 0.4'} + safe-regex-test@1.0.3: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-regex: 1.1.4 - dev: true - /safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: true + safer-buffer@2.1.2: {} - /scheduler@0.23.0: - resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + scheduler@0.23.0: dependencies: loose-envify: 1.4.0 - dev: false - /schema-utils@3.3.0: - resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} - engines: {node: '>= 10.13.0'} + schema-utils@3.3.0: dependencies: '@types/json-schema': 7.0.15 ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) - dev: false - /schema-utils@4.2.0: - resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} - engines: {node: '>= 12.13.0'} + schema-utils@4.2.0: dependencies: '@types/json-schema': 7.0.12 ajv: 8.12.0 ajv-formats: 2.1.1(ajv@8.12.0) ajv-keywords: 5.1.0(ajv@8.12.0) - dev: false - /selderee@0.11.0: - resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==} + selderee@0.11.0: dependencies: parseley: 0.12.1 - dev: false - /semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true - dev: true + semver@5.7.2: {} - /semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true + semver@6.3.1: {} - /semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} - engines: {node: '>=10'} - hasBin: true + semver@7.5.4: dependencies: lru-cache: 6.0.0 - dev: true - /semver@7.6.2: - resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} - engines: {node: '>=10'} - hasBin: true + semver@7.6.2: {} - /serialize-javascript@6.0.1: - resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} + serialize-javascript@6.0.1: dependencies: randombytes: 2.1.0 - dev: false - /set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - dev: true + set-blocking@2.0.0: {} - /set-function-length@1.1.1: - resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} - engines: {node: '>= 0.4'} + set-function-length@1.1.1: dependencies: define-data-property: 1.1.1 get-intrinsic: 1.2.2 gopd: 1.0.1 has-property-descriptors: 1.0.1 - /set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 @@ -8552,96 +10468,59 @@ packages: get-intrinsic: 1.2.4 gopd: 1.0.1 has-property-descriptors: 1.0.2 - dev: true - /set-function-name@2.0.1: - resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} - engines: {node: '>= 0.4'} + set-function-name@2.0.1: dependencies: define-data-property: 1.1.1 functions-have-names: 1.2.3 has-property-descriptors: 1.0.1 - dev: true - /set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} + set-function-name@2.0.2: dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 - dev: true - /shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} + shebang-command@1.2.0: dependencies: shebang-regex: 1.0.0 - dev: true - /shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 - /shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - dev: true + shebang-regex@1.0.0: {} - /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} + shebang-regex@3.0.0: {} - /side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + side-channel@1.0.4: dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 object-inspect: 1.13.1 - /side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} - engines: {node: '>= 0.4'} + side-channel@1.0.6: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 object-inspect: 1.13.1 - dev: true - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: true + signal-exit@3.0.7: {} - /signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} + signal-exit@4.1.0: {} - /slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - dev: true + slash@3.0.0: {} - /slice-ansi@5.0.0: - resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} - engines: {node: '>=12'} + slice-ansi@5.0.0: dependencies: ansi-styles: 6.2.1 is-fullwidth-code-point: 4.0.0 - dev: true - /slugify@1.6.6: - resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} - engines: {node: '>=8.0.0'} - dev: false + slugify@1.6.6: {} - /smartwrap@2.0.2: - resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} - engines: {node: '>=6'} - hasBin: true + smartwrap@2.0.2: dependencies: array.prototype.flat: 1.3.2 breakword: 1.0.6 @@ -8649,123 +10528,75 @@ packages: strip-ansi: 6.0.1 wcwidth: 1.0.1 yargs: 15.4.1 - dev: true - /sonner@1.4.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-nvkTsIuOmi9e5Wz5If8ldasJjZNVfwiXYijBi2dbijvTQnQppvMcXTFNxL/NUFWlI2yJ1JX7TREDsg+gYm9WyA==} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 + sonner@1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: false - /source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} + source-map-js@1.0.2: {} - /source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - dev: false - /source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - dev: false + source-map@0.6.1: {} - /space-separated-tokens@2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - dev: false + space-separated-tokens@2.0.2: {} - /spawndamnit@2.0.0: - resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} + spawndamnit@2.0.0: dependencies: cross-spawn: 5.1.0 signal-exit: 3.0.7 - dev: true - /spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.13 - dev: true - /spdx-exceptions@2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} - dev: true + spdx-exceptions@2.3.0: {} - /spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + spdx-expression-parse@3.0.1: dependencies: spdx-exceptions: 2.3.0 spdx-license-ids: 3.0.13 - dev: true - /spdx-license-ids@3.0.13: - resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} - dev: true + spdx-license-ids@3.0.13: {} - /sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: true + sprintf-js@1.0.3: {} - /stacktrace-parser@0.1.10: - resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} - engines: {node: '>=6'} + stacktrace-parser@0.1.10: dependencies: type-fest: 0.7.1 - dev: false - /stream-events@1.0.5: - resolution: {integrity: sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==} + stream-events@1.0.5: dependencies: stubs: 3.0.0 - dev: false - /stream-shift@1.0.3: - resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} - dev: false + stream-shift@1.0.3: {} - /stream-transform@2.1.3: - resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} + stream-transform@2.1.3: dependencies: mixme: 0.5.9 - dev: true - /streamsearch@1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} - dev: false + streamsearch@1.1.0: {} - /string-argv@0.3.2: - resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} - engines: {node: '>=0.6.19'} - dev: true + string-argv@0.3.2: {} - /string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - /string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} + string-width@5.1.2: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.1.0 - /string.prototype.matchall@4.0.11: - resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} - engines: {node: '>= 0.4'} + string.prototype.matchall@4.0.11: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -8779,151 +10610,92 @@ packages: regexp.prototype.flags: 1.5.2 set-function-name: 2.0.2 side-channel: 1.0.6 - dev: true - /string.prototype.trim@1.2.8: - resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} - engines: {node: '>= 0.4'} + string.prototype.trim@1.2.8: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - dev: true - /string.prototype.trim@1.2.9: - resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} - engines: {node: '>= 0.4'} + string.prototype.trim@1.2.9: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-object-atoms: 1.0.0 - dev: true - /string.prototype.trimend@1.0.7: - resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + string.prototype.trimend@1.0.7: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - dev: true - /string.prototype.trimend@1.0.8: - resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + string.prototype.trimend@1.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 - dev: true - /string.prototype.trimstart@1.0.7: - resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + string.prototype.trimstart@1.0.7: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - dev: true - /string.prototype.trimstart@1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} + string.prototype.trimstart@1.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 - dev: true - /string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 - dev: false - /stringify-entities@4.0.3: - resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} + stringify-entities@4.0.3: dependencies: character-entities-html4: 2.1.0 character-entities-legacy: 3.0.0 - dev: false - /strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 - /strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} + strip-ansi@7.1.0: dependencies: ansi-regex: 6.0.1 - /strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - dev: true + strip-bom@3.0.0: {} - /strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - dev: true + strip-final-newline@3.0.0: {} - /strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} + strip-indent@3.0.0: dependencies: min-indent: 1.0.1 - dev: true - /strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - dev: true + strip-json-comments@3.1.1: {} - /stripe@14.16.0: - resolution: {integrity: sha512-1gOr2LzafWV84cPIO5Md/QPh4XVPLKULVuRpBVOV3Plq3seiHmg/eeOktX+hDl8jpNZuORHYaUJGrNqrABLwdg==} - engines: {node: '>=12.*'} + stripe@14.16.0: dependencies: '@types/node': 20.10.6 qs: 6.11.2 - dev: false - /strnum@1.0.5: - resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} - dev: false + strnum@1.0.5: {} - /stubs@3.0.0: - resolution: {integrity: sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==} - dev: false + stubs@3.0.0: {} - /style-to-object@1.0.5: - resolution: {integrity: sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==} + style-to-object@1.0.5: dependencies: - inline-style-parser: 0.2.2 - dev: false - - /styled-jsx@5.1.1(@babel/core@7.22.17)(react@18.2.0): - resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@babel/core': '*' - babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' - peerDependenciesMeta: - '@babel/core': - optional: true - babel-plugin-macros: - optional: true + inline-style-parser: 0.2.2 + + styled-jsx@5.1.1(@babel/core@7.22.17)(react@18.2.0): dependencies: - '@babel/core': 7.22.17 client-only: 0.0.1 react: 18.2.0 - dev: false + optionalDependencies: + '@babel/core': 7.22.17 - /sucrase@3.34.0: - resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} - engines: {node: '>=8'} - hasBin: true + sucrase@3.34.0: dependencies: '@jridgewell/gen-mapping': 0.3.3 commander: 4.1.1 @@ -8933,55 +10705,34 @@ packages: pirates: 4.0.6 ts-interface-checker: 0.1.13 - /supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} + supports-color@5.5.0: dependencies: has-flag: 3.0.0 - /supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} + supports-color@7.2.0: dependencies: has-flag: 4.0.0 - /supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} + supports-color@8.1.1: dependencies: has-flag: 4.0.0 - dev: false - /supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} + supports-preserve-symlinks-flag@1.0.0: {} - /synckit@0.8.8: - resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} - engines: {node: ^14.18.0 || >=16.0.0} + synckit@0.8.8: dependencies: '@pkgr/core': 0.1.1 tslib: 2.6.2 - dev: true - /tailwind-merge@2.2.0: - resolution: {integrity: sha512-SqqhhaL0T06SW59+JVNfAqKdqLs0497esifRrZ7jOaefP3o64fdFNDMrAQWZFMxTLJPiHVjRLUywT8uFz1xNWQ==} + tailwind-merge@2.2.0: dependencies: '@babel/runtime': 7.23.6 - dev: false - /tailwindcss-animate@1.0.6(tailwindcss@3.4.1): - resolution: {integrity: sha512-4WigSGMvbl3gCCact62ZvOngA+PRqhAn7si3TQ3/ZuPuQZcIEtVap+ENSXbzWhpojKB8CpvnIsrwBu8/RnHtuw==} - peerDependencies: - tailwindcss: '>=3.0.0 || insiders' + tailwindcss-animate@1.0.6(tailwindcss@3.4.1(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3))): dependencies: - tailwindcss: 3.4.1(ts-node@10.9.1) - dev: false + tailwindcss: 3.4.1(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3)) - /tailwindcss@3.4.1(ts-node@10.9.1): - resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==} - engines: {node: '>=14.0.0'} - hasBin: true + tailwindcss@3.4.1(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -9000,7 +10751,7 @@ packages: postcss: 8.4.31 postcss-import: 15.1.0(postcss@8.4.31) postcss-js: 4.0.1(postcss@8.4.31) - postcss-load-config: 4.0.1(postcss@8.4.31)(ts-node@10.9.1) + postcss-load-config: 4.0.1(postcss@8.4.31)(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3)) postcss-nested: 6.0.1(postcss@8.4.31) postcss-selector-parser: 6.0.13 resolve: 1.22.4 @@ -9008,13 +10759,9 @@ packages: transitivePeerDependencies: - ts-node - /tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} + tapable@2.2.1: {} - /teeny-request@9.0.0: - resolution: {integrity: sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==} - engines: {node: '>=14'} + teeny-request@9.0.0: dependencies: http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 @@ -9024,28 +10771,10 @@ packages: transitivePeerDependencies: - encoding - supports-color - dev: false - /term-size@2.2.1: - resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} - engines: {node: '>=8'} - dev: true + term-size@2.2.1: {} - /terser-webpack-plugin@5.3.10(webpack@5.89.0): - resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true + terser-webpack-plugin@5.3.10(webpack@5.89.0): dependencies: '@jridgewell/trace-mapping': 0.3.20 jest-worker: 27.5.1 @@ -9053,103 +10782,49 @@ packages: serialize-javascript: 6.0.1 terser: 5.26.0 webpack: 5.89.0 - dev: false - /terser@5.26.0: - resolution: {integrity: sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ==} - engines: {node: '>=10'} - hasBin: true + terser@5.26.0: dependencies: '@jridgewell/source-map': 0.3.5 acorn: 8.11.3 commander: 2.20.3 source-map-support: 0.5.21 - dev: false - /text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: true + text-table@0.2.0: {} - /thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} + thenify-all@1.6.0: dependencies: thenify: 3.3.1 - /thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + thenify@3.3.1: dependencies: any-promise: 1.3.0 - /tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} + tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 - dev: true - /to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - dev: false + to-fast-properties@2.0.0: {} - /to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 - /tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: false - - /trim-lines@3.0.1: - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - dev: false + tr46@0.0.3: {} - /trim-newlines@3.0.1: - resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} - engines: {node: '>=8'} - dev: true + trim-lines@3.0.1: {} - /trough@2.1.0: - resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} - dev: false + trim-newlines@3.0.1: {} - /ts-api-utils@1.0.3(typescript@5.3.3): - resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} - engines: {node: '>=16.13.0'} - peerDependencies: - typescript: '>=4.2.0' - dependencies: - typescript: 5.3.3 - dev: true + trough@2.1.0: {} - /ts-api-utils@1.3.0(typescript@5.3.3): - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' + ts-api-utils@1.3.0(typescript@5.3.3): dependencies: typescript: 5.3.3 - dev: true - /ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + ts-interface-checker@0.1.13: {} - /ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3): - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true + ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 @@ -9167,22 +10842,16 @@ packages: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - /tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + tsconfig-paths@3.15.0: dependencies: '@types/json5': 0.0.29 json5: 1.0.2 minimist: 1.2.8 strip-bom: 3.0.0 - dev: true - /tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + tslib@2.6.2: {} - /tty-table@4.2.1: - resolution: {integrity: sha512-xz0uKo+KakCQ+Dxj1D/tKn2FSyreSYWzdkL/BYhgN6oMW808g8QRMuh1atAV9fjTPbWBjfbkKQpI/5rEcnAc7g==} - engines: {node: '>=8.0.0'} - hasBin: true + tty-table@4.2.1: dependencies: chalk: 4.1.2 csv: 5.5.3 @@ -9191,98 +10860,59 @@ packages: strip-ansi: 6.0.1 wcwidth: 1.0.1 yargs: 17.7.2 - dev: true - /type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 - dev: true - /type-fest@0.13.1: - resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} - engines: {node: '>=10'} - dev: true + type-fest@0.13.1: {} - /type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: true + type-fest@0.20.2: {} - /type-fest@0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} - dev: true + type-fest@0.6.0: {} - /type-fest@0.7.1: - resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} - engines: {node: '>=8'} - dev: false + type-fest@0.7.1: {} - /type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - dev: true + type-fest@0.8.1: {} - /type-fest@1.4.0: - resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} - engines: {node: '>=10'} - dev: true + type-fest@1.4.0: {} - /typed-array-buffer@1.0.0: - resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} - engines: {node: '>= 0.4'} + typed-array-buffer@1.0.0: dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 is-typed-array: 1.1.12 - dev: true - /typed-array-buffer@1.0.2: - resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} - engines: {node: '>= 0.4'} + typed-array-buffer@1.0.2: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-typed-array: 1.1.13 - dev: true - /typed-array-byte-length@1.0.0: - resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} - engines: {node: '>= 0.4'} + typed-array-byte-length@1.0.0: dependencies: call-bind: 1.0.5 for-each: 0.3.3 has-proto: 1.0.1 is-typed-array: 1.1.12 - dev: true - /typed-array-byte-length@1.0.1: - resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} - engines: {node: '>= 0.4'} + typed-array-byte-length@1.0.1: dependencies: call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 has-proto: 1.0.3 is-typed-array: 1.1.13 - dev: true - /typed-array-byte-offset@1.0.0: - resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} - engines: {node: '>= 0.4'} + typed-array-byte-offset@1.0.0: dependencies: available-typed-arrays: 1.0.5 call-bind: 1.0.5 for-each: 0.3.3 has-proto: 1.0.1 is-typed-array: 1.1.12 - dev: true - /typed-array-byte-offset@1.0.2: - resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} - engines: {node: '>= 0.4'} + typed-array-byte-offset@1.0.2: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.7 @@ -9290,19 +10920,14 @@ packages: gopd: 1.0.1 has-proto: 1.0.3 is-typed-array: 1.1.13 - dev: true - /typed-array-length@1.0.4: - resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + typed-array-length@1.0.4: dependencies: call-bind: 1.0.5 for-each: 0.3.3 is-typed-array: 1.1.12 - dev: true - /typed-array-length@1.0.6: - resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} - engines: {node: '>= 0.4'} + typed-array-length@1.0.6: dependencies: call-bind: 1.0.7 for-each: 0.3.3 @@ -9310,27 +10935,19 @@ packages: has-proto: 1.0.3 is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 - dev: true - /typescript@5.3.3: - resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} - engines: {node: '>=14.17'} - hasBin: true + typescript@5.3.3: {} - /unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + unbox-primitive@1.0.2: dependencies: call-bind: 1.0.5 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 - dev: true - /undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + undici-types@5.26.5: {} - /unified@10.1.2: - resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} + unified@10.1.2: dependencies: '@types/unist': 2.0.8 bail: 2.0.2 @@ -9339,10 +10956,8 @@ packages: is-plain-obj: 4.1.0 trough: 2.1.0 vfile: 5.3.7 - dev: false - /unified@11.0.4: - resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} + unified@11.0.4: dependencies: '@types/unist': 3.0.0 bail: 2.0.2 @@ -9351,286 +10966,178 @@ packages: is-plain-obj: 4.1.0 trough: 2.1.0 vfile: 6.0.1 - dev: false - /unist-util-filter@4.0.1: - resolution: {integrity: sha512-RynicUM/vbOSTSiUK+BnaK9XMfmQUh6gyi7L6taNgc7FIf84GukXVV3ucGzEN/PhUUkdP5hb1MmXc+3cvPUm5Q==} + unist-util-filter@4.0.1: dependencies: '@types/unist': 2.0.8 unist-util-is: 5.2.1 unist-util-visit-parents: 5.1.3 - dev: false - /unist-util-filter@5.0.1: - resolution: {integrity: sha512-pHx7D4Zt6+TsfwylH9+lYhBhzyhEnCXs/lbq/Hstxno5z4gVdyc2WEW0asfjGKPyG4pEKrnBv5hdkO6+aRnQJw==} + unist-util-filter@5.0.1: dependencies: '@types/unist': 3.0.0 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - dev: false - /unist-util-is@5.2.1: - resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} + unist-util-is@5.2.1: dependencies: '@types/unist': 2.0.8 - dev: false - /unist-util-is@6.0.0: - resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + unist-util-is@6.0.0: dependencies: '@types/unist': 3.0.0 - dev: false - /unist-util-position@5.0.0: - resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + unist-util-position@5.0.0: dependencies: '@types/unist': 3.0.0 - dev: false - /unist-util-remove-position@5.0.0: - resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} + unist-util-remove-position@5.0.0: dependencies: '@types/unist': 3.0.0 unist-util-visit: 5.0.0 - dev: false - /unist-util-stringify-position@3.0.3: - resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} + unist-util-stringify-position@3.0.3: dependencies: '@types/unist': 2.0.8 - dev: false - /unist-util-stringify-position@4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + unist-util-stringify-position@4.0.0: dependencies: '@types/unist': 3.0.0 - dev: false - /unist-util-visit-parents@5.1.3: - resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} + unist-util-visit-parents@5.1.3: dependencies: '@types/unist': 2.0.8 unist-util-is: 5.2.1 - dev: false - /unist-util-visit-parents@6.0.1: - resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + unist-util-visit-parents@6.0.1: dependencies: '@types/unist': 3.0.0 unist-util-is: 6.0.0 - dev: false - /unist-util-visit@4.1.2: - resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} + unist-util-visit@4.1.2: dependencies: '@types/unist': 2.0.8 unist-util-is: 5.2.1 unist-util-visit-parents: 5.1.3 - dev: false - /unist-util-visit@5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + unist-util-visit@5.0.0: dependencies: '@types/unist': 3.0.0 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - dev: false - /universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - dev: true + universalify@0.1.2: {} - /update-browserslist-db@1.0.11(browserslist@4.21.10): - resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' + update-browserslist-db@1.0.11(browserslist@4.21.10): dependencies: browserslist: 4.21.10 escalade: 3.1.1 picocolors: 1.0.0 - /update-browserslist-db@1.0.13(browserslist@4.22.2): - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' + update-browserslist-db@1.0.13(browserslist@4.22.2): dependencies: browserslist: 4.22.2 escalade: 3.1.1 picocolors: 1.0.0 - dev: false - /uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + uri-js@4.4.1: dependencies: punycode: 2.3.0 - /use-callback-ref@1.3.0(@types/react@18.0.27)(react@18.2.0): - resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + use-callback-ref@1.3.0(@types/react@18.0.27)(react@18.2.0): dependencies: - '@types/react': 18.0.27 react: 18.2.0 tslib: 2.6.2 - dev: false + optionalDependencies: + '@types/react': 18.0.27 - /use-debounce@10.0.0(react@18.2.0): - resolution: {integrity: sha512-XRjvlvCB46bah9IBXVnq/ACP2lxqXyZj0D9hj4K5OzNroMDpTEBg8Anuh1/UfRTRs7pLhQ+RiNxxwZu9+MVl1A==} - engines: {node: '>= 16.0.0'} - peerDependencies: - react: '>=16.8.0' + use-debounce@10.0.0(react@18.2.0): dependencies: react: 18.2.0 - dev: false - /use-sidecar@1.1.2(@types/react@18.0.27)(react@18.2.0): - resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + use-sidecar@1.1.2(@types/react@18.0.27)(react@18.2.0): dependencies: - '@types/react': 18.0.27 detect-node-es: 1.1.0 react: 18.2.0 tslib: 2.6.2 - dev: false + optionalDependencies: + '@types/react': 18.0.27 - /util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + util-deprecate@1.0.2: {} - /uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - dev: false + uuid@8.3.2: {} - /uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - dev: false + uuid@9.0.1: {} - /v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + v8-compile-cache-lib@3.0.1: {} - /validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - dev: true - /vaul@0.9.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-bZSySGbAHiTXmZychprnX/dE0EsSige88xtyyL3/MCRbrFotRPQZo7UdydGXZWw+CKbNOw5Ow8gwAo93/nB/Cg==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + vaul@0.9.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: - '@radix-ui/react-dialog': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-dialog': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: - '@types/react' - '@types/react-dom' - dev: false - /vfile-location@4.1.0: - resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==} + vfile-location@4.1.0: dependencies: '@types/unist': 2.0.8 vfile: 5.3.7 - dev: false - /vfile-location@5.0.2: - resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} + vfile-location@5.0.2: dependencies: '@types/unist': 3.0.0 vfile: 6.0.1 - dev: false - /vfile-message@3.1.4: - resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} + vfile-message@3.1.4: dependencies: '@types/unist': 2.0.8 unist-util-stringify-position: 3.0.3 - dev: false - /vfile-message@4.0.2: - resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + vfile-message@4.0.2: dependencies: '@types/unist': 3.0.0 unist-util-stringify-position: 4.0.0 - dev: false - /vfile@5.3.7: - resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} + vfile@5.3.7: dependencies: '@types/unist': 2.0.8 is-buffer: 2.0.5 unist-util-stringify-position: 3.0.3 vfile-message: 3.1.4 - dev: false - /vfile@6.0.1: - resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} + vfile@6.0.1: dependencies: '@types/unist': 3.0.0 unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - dev: false - /watchpack@2.4.0: - resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} - engines: {node: '>=10.13.0'} + watchpack@2.4.0: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 - dev: false - /wcag-contrast@3.0.0: - resolution: {integrity: sha512-RWbpg/S7FOXDCwqC2oFhN/vh8dHzj0OS6dpyOSDHyQFSmqmR+lAUStV/ziTT1GzDqL9wol+nZQB4vCi5yEak+w==} + wcag-contrast@3.0.0: dependencies: relative-luminance: 2.0.1 - dev: false - /wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + wcwidth@1.0.1: dependencies: defaults: 1.0.4 - dev: true - /web-namespaces@2.0.1: - resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - dev: false + web-namespaces@2.0.1: {} - /webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: false + webidl-conversions@3.0.1: {} - /webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} - engines: {node: '>=10.13.0'} - dev: false + webpack-sources@3.2.3: {} - /webpack@5.89.0: - resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true + webpack@5.89.0: dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -9660,28 +11167,21 @@ packages: - '@swc/core' - esbuild - uglify-js - dev: false - /whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - dev: false - /which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + which-boxed-primitive@1.0.2: dependencies: is-bigint: 1.0.4 is-boolean-object: 1.1.2 is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 - dev: true - /which-builtin-type@1.1.3: - resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} - engines: {node: '>= 0.4'} + which-builtin-type@1.1.3: dependencies: function.prototype.name: 1.1.6 has-tostringtag: 1.0.0 @@ -9695,133 +11195,85 @@ packages: which-boxed-primitive: 1.0.2 which-collection: 1.0.1 which-typed-array: 1.1.13 - dev: true - /which-collection@1.0.1: - resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} + which-collection@1.0.1: dependencies: is-map: 2.0.2 is-set: 2.0.2 is-weakmap: 2.0.1 is-weakset: 2.0.2 - dev: true - /which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - dev: true + which-module@2.0.1: {} - /which-pm@2.0.0: - resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} - engines: {node: '>=8.15'} + which-pm@2.0.0: dependencies: load-yaml-file: 0.2.0 path-exists: 4.0.0 - dev: true - /which-typed-array@1.1.13: - resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} - engines: {node: '>= 0.4'} + which-typed-array@1.1.13: dependencies: available-typed-arrays: 1.0.5 call-bind: 1.0.5 for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.0 - dev: true - /which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} - engines: {node: '>= 0.4'} + which-typed-array@1.1.15: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.2 - dev: true - /which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true + which@1.3.1: dependencies: isexe: 2.0.0 - dev: true - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true + which@2.0.2: dependencies: isexe: 2.0.0 - /wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} + wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: true - /wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - /wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} + wrap-ansi@8.1.0: dependencies: ansi-styles: 6.2.1 string-width: 5.1.2 strip-ansi: 7.1.0 - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + wrappy@1.0.2: {} - /y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - dev: true + y18n@4.0.3: {} - /y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - dev: true + y18n@5.0.8: {} - /yallist@2.1.2: - resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - dev: true + yallist@2.1.2: {} - /yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - dev: false + yallist@3.1.1: {} - /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yallist@4.0.0: {} - /yaml@2.3.3: - resolution: {integrity: sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==} - engines: {node: '>= 14'} + yaml@2.3.3: {} - /yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} + yargs-parser@18.1.3: dependencies: camelcase: 5.3.1 decamelize: 1.2.0 - dev: true - /yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - dev: true + yargs-parser@21.1.1: {} - /yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} + yargs@15.4.1: dependencies: cliui: 6.0.0 decamelize: 1.2.0 @@ -9834,11 +11286,8 @@ packages: which-module: 2.0.1 y18n: 4.0.3 yargs-parser: 18.1.3 - dev: true - /yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} + yargs@17.7.2: dependencies: cliui: 8.0.1 escalade: 3.1.1 @@ -9847,25 +11296,13 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 21.1.1 - dev: true - /yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} + yn@3.1.1: {} - /yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} + yocto-queue@0.1.0: {} - /yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} - dev: false + yocto-queue@1.0.0: {} - /zod@3.22.4: - resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} - dev: false + zod@3.22.4: {} - /zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - dev: false + zwitch@2.0.4: {} From 529ef54cd6e474fe7559c4a71b77e9e39ace2550 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 30 Jun 2024 10:56:51 +0200 Subject: [PATCH 150/326] :fire: remove react import --- src/components/dialog/Dialog.tsx | 29 ++++++++++++++++----------- src/components/drawer/Drawer.tsx | 32 ++++++++++++++++++------------ src/components/input/Input.tsx | 5 ++--- src/components/stepper/Stepper.tsx | 2 +- src/modules/footer/Footer.tsx | 2 -- 5 files changed, 39 insertions(+), 31 deletions(-) diff --git a/src/components/dialog/Dialog.tsx b/src/components/dialog/Dialog.tsx index bdadd2a78..e6f4a1882 100644 --- a/src/components/dialog/Dialog.tsx +++ b/src/components/dialog/Dialog.tsx @@ -1,6 +1,11 @@ 'use client'; -import * as React from 'react'; +import type { + ElementRef, + ComponentPropsWithoutRef, + HTMLAttributes, +} from 'react'; +import { forwardRef } from 'react'; import * as DialogPrimitive from '@radix-ui/react-dialog'; import { X } from 'lucide-react'; @@ -15,9 +20,9 @@ const DialogPortal = DialogPrimitive.Portal; const DialogClose = DialogPrimitive.Close; -const DialogOverlay = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef +const DialogOverlay = forwardRef< + ElementRef, + ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( , - React.ComponentPropsWithoutRef +const DialogContent = forwardRef< + ElementRef, + ComponentPropsWithoutRef >(({ className, children, ...props }, ref) => ( @@ -57,7 +62,7 @@ DialogContent.displayName = DialogPrimitive.Content.displayName; const DialogHeader = ({ className, ...props -}: React.HTMLAttributes) => ( +}: HTMLAttributes) => (
    ) => ( +}: HTMLAttributes) => (
    ); DialogFooter.displayName = 'DialogFooter'; -const DialogTitle = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef +const DialogTitle = forwardRef< + ElementRef, + ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( ) => ( +}: ComponentProps) => ( , - React.ComponentPropsWithoutRef +const DrawerOverlay = forwardRef< + ElementRef, + ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( , - React.ComponentPropsWithoutRef +const DrawerContent = forwardRef< + ElementRef, + ComponentPropsWithoutRef >(({ className, children, ...props }, ref) => ( @@ -57,7 +63,7 @@ DrawerContent.displayName = 'DrawerContent'; const DrawerHeader = ({ className, ...props -}: React.HTMLAttributes) => ( +}: HTMLAttributes) => (
    ) => ( +}: HTMLAttributes) => (
    , - React.ComponentPropsWithoutRef +const DrawerTitle = forwardRef< + ElementRef, + ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( { +export interface InputProps extends InputHTMLAttributes { withIcon?: boolean; icon?: ReactNode; } diff --git a/src/components/stepper/Stepper.tsx b/src/components/stepper/Stepper.tsx index 733617dfb..2985f92ef 100644 --- a/src/components/stepper/Stepper.tsx +++ b/src/components/stepper/Stepper.tsx @@ -1,4 +1,4 @@ -import React, { Fragment } from 'react'; +import { Fragment } from 'react'; import { BadgeCheck } from 'lucide-react'; diff --git a/src/modules/footer/Footer.tsx b/src/modules/footer/Footer.tsx index 84f10b14f..778ac9b05 100644 --- a/src/modules/footer/Footer.tsx +++ b/src/modules/footer/Footer.tsx @@ -1,5 +1,3 @@ -import React from 'react'; - type Props = { company: string; }; From 228c9173499878b9ce21167d3caae072fb7a249e Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 30 Jun 2024 15:14:17 +0200 Subject: [PATCH 151/326] :art: change export --- src/actions/index.ts | 82 +++++++++++++++++++++++++------------------- 1 file changed, 46 insertions(+), 36 deletions(-) diff --git a/src/actions/index.ts b/src/actions/index.ts index 7a100cc8c..9dbac9d16 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -1,36 +1,46 @@ -export * from './create-answer'; -export * from './create-favorite'; -export * from './create-node'; -export * from './create-tag'; -export * from './create-tenant'; -export * from './create-user'; -export * from './create-users'; -export * from './delete-favorite'; -export * from './delete-tag'; -export * from './delete-tenant'; -export * from './delete-user'; -export * from './get-favorite'; -export * from './get-favorites'; -export * from './get-integration'; -export * from './get-me'; -export * from './get-node'; -export * from './get-nodes'; -export * from './get-nodes-count'; -export * from './get-search-nodes'; -export * from './get-search-tags'; -export * from './get-signed-logo'; -export * from './get-tags'; -export * from './get-tags-count'; -export * from './get-tenant'; -export * from './get-user'; -export * from './get-user-answers'; -export * from './get-user-questions'; -export * from './get-users'; -export * from './get-users-count'; -export * from './login'; -export * from './update-answer'; -export * from './update-logo'; -export * from './update-node'; -export * from './update-tenant'; -export * from './update-user'; -export * from './upsert-integrations'; +export { createAnswer, createAnswerSchema } from './create-answer'; +export { createFavorite, createFavoriteSchema } from './create-favorite'; +export { createNode, createNodeSchema } from './create-node'; +export { createReaction, createReactionSchema } from './create-reaction'; +export { createTag, createTagSchema } from './create-tag'; +export { + createTenant, + createTenantCompanySchema, + createTenantUserSchema, + createTenantSchema, +} from './create-tenant'; +export { createUser, createUserSchema } from './create-user'; +export { createUsers, createUsersSchema } from './create-users'; +export { deleteFavorite, deleteFavoriteSchema } from './delete-favorite'; +export { deleteTag, deleteTagSchema } from './delete-tag'; +export { deleteTenant, deleteTenantSchema } from './delete-tenant'; +export { deleteUser, deleteUserSchema } from './delete-user'; +export { getFavorite } from './get-favorite'; +export { getFavorites } from './get-favorites'; +export { getIntegration } from './get-integration'; +export { getMe } from './get-me'; +export { getNode } from './get-node'; +export { getPaginatedNodes } from './get-nodes'; +export { getNodesCount } from './get-nodes-count'; +export { getReactions } from './get-reactions'; +export { getSearchNodes } from './get-search-nodes'; +export { getSearchTags } from './get-search-tags'; +export { getSignedLogo } from './get-signed-logo'; +export { getTags } from './get-tags'; +export { getTagsCount } from './get-tags-count'; +export { getTenant } from './get-tenant'; +export { getUser } from './get-user'; +export { getUserAnswers } from './get-user-answers'; +export { getUserQuestions } from './get-user-questions'; +export { getUsers } from './get-users'; +export { getUsersCount } from './get-users-count'; +export { emailSignIn } from './login'; +export { updateAnswer, updateAnswerSchema } from './update-answer'; +export { updateLogo, updateLogoSchema } from './update-logo'; +export { updateNode, updateNodeSchema } from './update-node'; +export { updateTenant, updateTenantSchema } from './update-tenant'; +export { updateUser, updateUserSchema } from './update-user'; +export { + upsertIntegrations, + upsertIntegrationsSchema, +} from './upsert-integrations'; From 55b8d7eaa67b4d47feeb508718780412fee56e44 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 30 Jun 2024 16:30:02 +0200 Subject: [PATCH 152/326] :card_file_box: rename reaction emoji to shortcode --- .../migration.sql | 10 ++++++++ prisma/schema.prisma | 24 +++++++++---------- 2 files changed, 22 insertions(+), 12 deletions(-) create mode 100644 prisma/migrations/20240630142921_faqmaker_dev20/migration.sql diff --git a/prisma/migrations/20240630142921_faqmaker_dev20/migration.sql b/prisma/migrations/20240630142921_faqmaker_dev20/migration.sql new file mode 100644 index 000000000..c54862d12 --- /dev/null +++ b/prisma/migrations/20240630142921_faqmaker_dev20/migration.sql @@ -0,0 +1,10 @@ +/* + Warnings: + + - You are about to drop the column `emoji` on the `Reaction` table. All the data in the column will be lost. + - Added the required column `shortcode` to the `Reaction` table without a default value. This is not possible if the table is not empty. + +*/ +-- AlterTable +ALTER TABLE "Reaction" DROP COLUMN "emoji", +ADD COLUMN "shortcode" TEXT NOT NULL; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 1ac532d5b..e6e054ea0 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -10,11 +10,11 @@ generator client { model Tenant { id String @id @default(cuid()) createdAt DateTime @default(now()) - email String + email String plan Plan @default(free) company String - logo String? - customerId String? + logo String? + customerId String? isActive Boolean @default(false) subscriptionId String? users User[] @@ -29,7 +29,7 @@ model User { id String @id @default(cuid()) createdAt DateTime @default(now()) name String? - email String + email String image String? role Role @default(user) tenant Tenant @relation(fields: [tenantId], references: [id], onDelete: Cascade) @@ -38,7 +38,7 @@ model User { answers Answer[] accounts Account[] sessions Session[] - favorites Favorite[] + favorites Favorite[] reactions Reaction[] @@unique([email]) @@ -54,7 +54,7 @@ model Node { tags Tag[] tenant Tenant @relation(fields: [tenantId], references: [id], onDelete: Cascade) tenantId String - favorites Favorite[] + favorites Favorite[] reactions Reaction[] @@index([tenantId]) @@ -112,11 +112,11 @@ model Favorite { } model Reaction { - id String @id @default(cuid()) - emoji String - node Node @relation(fields: [nodeId], references: [id], onDelete: Cascade) + id String @id @default(cuid()) + shortcode String + node Node @relation(fields: [nodeId], references: [id], onDelete: Cascade) nodeId String - user User @relation(fields: [userId], references: [id], onDelete: Cascade) + user User @relation(fields: [userId], references: [id], onDelete: Cascade) userId String @@unique([userId, nodeId]) @@ -158,14 +158,14 @@ model Account { scope String? id_token String? @db.Text session_state String? - user User @relation(fields: [userId], references: [id], onDelete: Cascade) + user User @relation(fields: [userId], references: [id], onDelete: Cascade) @@unique([provider, providerAccountId]) } model Session { id String @id @default(cuid()) - sessionToken String + sessionToken String userId String expires DateTime user User @relation(fields: [userId], references: [id], onDelete: Cascade) From 21fb25ea26b2299af79a7a780df352d20d779b35 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 30 Jun 2024 16:31:35 +0200 Subject: [PATCH 153/326] :sparkles: create new actions for reactions --- src/actions/create-reaction/action.ts | 24 ++++++++++++++++++++++++ src/actions/create-reaction/index.ts | 2 ++ src/actions/create-reaction/schema.ts | 6 ++++++ src/actions/get-reactions/index.ts | 22 ++++++++++++++++++++++ 4 files changed, 54 insertions(+) create mode 100644 src/actions/create-reaction/action.ts create mode 100644 src/actions/create-reaction/index.ts create mode 100644 src/actions/create-reaction/schema.ts create mode 100644 src/actions/get-reactions/index.ts diff --git a/src/actions/create-reaction/action.ts b/src/actions/create-reaction/action.ts new file mode 100644 index 000000000..3158a19dc --- /dev/null +++ b/src/actions/create-reaction/action.ts @@ -0,0 +1,24 @@ +'use server'; + +import { revalidatePath } from 'next/cache'; + +import { authActionClient } from '@/lib/safe-actions'; +import { Routes } from '@/utils'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { createReactionSchema } from './schema'; + +export const createReaction = authActionClient + .metadata({ actionName: 'createReaction' }) + .schema(createReactionSchema) + .action(async ({ parsedInput: { nodeId, reaction }, ctx: { userId } }) => { + await prisma.reaction.create({ + data: { + reaction, + nodeId, + userId, + }, + }); + revalidatePath(`${Routes.SITE.QUESTION}/${nodeId}`); + }); diff --git a/src/actions/create-reaction/index.ts b/src/actions/create-reaction/index.ts new file mode 100644 index 000000000..af29b4d52 --- /dev/null +++ b/src/actions/create-reaction/index.ts @@ -0,0 +1,2 @@ +export * from './schema'; +export * from './action'; diff --git a/src/actions/create-reaction/schema.ts b/src/actions/create-reaction/schema.ts new file mode 100644 index 000000000..979c36e52 --- /dev/null +++ b/src/actions/create-reaction/schema.ts @@ -0,0 +1,6 @@ +import { z } from 'zod'; + +export const createReactionSchema = z.object({ + nodeId: z.string().cuid2(), + reaction: z.string(), +}); diff --git a/src/actions/get-reactions/index.ts b/src/actions/get-reactions/index.ts new file mode 100644 index 000000000..3d514407f --- /dev/null +++ b/src/actions/get-reactions/index.ts @@ -0,0 +1,22 @@ +import { cache } from 'react'; + +import prisma from 'lib/prisma'; + +import type { Reaction } from '@prisma/client'; + +export const getReactions = cache( + async (nodeId: string): Promise => { + try { + if (!nodeId) { + throw new Error('Node not found'); + } + const reactions = await prisma.reaction.findMany({ + where: { nodeId }, + }); + if (!reactions) return []; + return reactions; + } catch (error) { + throw new Error('Error fetching reactions'); + } + }, +); From b41a058f096f3aeac737bbd10ddce006b315f426 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 30 Jun 2024 16:33:39 +0200 Subject: [PATCH 154/326] :mute: remove log --- src/actions/create-tenant/action.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/actions/create-tenant/action.ts b/src/actions/create-tenant/action.ts index 73baac391..2cbf0859a 100644 --- a/src/actions/create-tenant/action.ts +++ b/src/actions/create-tenant/action.ts @@ -20,7 +20,6 @@ export const createTenant = actionClient .metadata({ actionName: 'createTenant' }) .schema(createTenantSchema) .action(async ({ parsedInput: { company, companyEmail, email } }) => { - console.log(companyEmail, company, email); const tenantExists = await prisma.tenant.findFirst({ where: { email: companyEmail }, }); From bd678919a6d75dc74b47c26bbf084c029f0ac289 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 30 Jun 2024 16:35:22 +0200 Subject: [PATCH 155/326] :loud_sound: change log to error --- src/lib/resend.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/resend.ts b/src/lib/resend.ts index f409cf965..a4901d843 100644 --- a/src/lib/resend.ts +++ b/src/lib/resend.ts @@ -20,6 +20,6 @@ export const sendVerificationRequest = async (

    Sign in

    `, }); } catch (error) { - console.log({ error }); + console.error({ error }); } }; From c42adae4bc3ecbc35cdf2004fea1b7d69506e804 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 30 Jun 2024 16:37:55 +0200 Subject: [PATCH 156/326] :art: rename folder + create sub-component --- src/modules/home/List.tsx | 32 ++++ src/modules/{list => home}/index.ts | 0 src/modules/index.ts | 2 +- src/modules/list/List.tsx | 258 ---------------------------- 4 files changed, 33 insertions(+), 259 deletions(-) create mode 100644 src/modules/home/List.tsx rename src/modules/{list => home}/index.ts (100%) delete mode 100644 src/modules/list/List.tsx diff --git a/src/modules/home/List.tsx b/src/modules/home/List.tsx new file mode 100644 index 000000000..9b35f4bf4 --- /dev/null +++ b/src/modules/home/List.tsx @@ -0,0 +1,32 @@ +'use client'; + +import Question from './Question'; + +import type { ExtendedFavorites, ExtendedNode } from '@/types'; + +type Props = { + nodes: ExtendedNode[]; + message: string; + favorites: ExtendedFavorites[]; +}; + +export const List = ({ nodes, message, favorites }: Props) => { + return ( +
    + {nodes.length > 0 ? ( +
      + {nodes?.map((node) => ( + + ))} +
    + ) : ( +

    + {message} +

    + )} +
    + ); +}; diff --git a/src/modules/list/index.ts b/src/modules/home/index.ts similarity index 100% rename from src/modules/list/index.ts rename to src/modules/home/index.ts diff --git a/src/modules/index.ts b/src/modules/index.ts index 3e06ef8e6..017bda126 100644 --- a/src/modules/index.ts +++ b/src/modules/index.ts @@ -1,6 +1,6 @@ export * from './footer'; export * from './header'; -export * from './list'; +export * from './home'; export * from './profile'; export * from './question'; export * from './search'; diff --git a/src/modules/list/List.tsx b/src/modules/list/List.tsx deleted file mode 100644 index 2ad12fbcd..000000000 --- a/src/modules/list/List.tsx +++ /dev/null @@ -1,258 +0,0 @@ -'use client'; - -import EmojiData from '@emoji-mart/data'; -import Picker from '@emoji-mart/react'; -import { zodResolver } from '@hookform/resolvers/zod'; -import { - BadgeCheck, - BadgeHelp, - BadgeInfo, - Bookmark, - BookmarkCheck, - ChevronDown, -} from 'lucide-react'; -import dynamic from 'next/dynamic'; -import Link from 'next/link'; -import { useForm } from 'react-hook-form'; - -import { - createFavorite, - createFavoriteSchema, - deleteFavorite, -} from '@/actions'; -import { - Badge, - Button, - Popover, - PopoverContent, - PopoverTrigger, - Tooltip, - TooltipContent, - TooltipTrigger, - resultToast, -} from '@/components'; -import { Routes, dateOptions, timeOptions } from '@/utils'; - -import type { ExtendedFavorites, ExtendedNode } from '@/types'; -import type { SubmitHandler } from 'react-hook-form'; -import type { z } from 'zod'; - -const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { - ssr: false, -}); - -type Props = { - nodes: ExtendedNode[]; - message: string; - favorites: ExtendedFavorites[]; -}; - -type Schema = z.infer; - -export const List = ({ nodes, message, favorites }: Props) => { - const { handleSubmit, register } = useForm({ - resolver: zodResolver(createFavoriteSchema), - mode: 'onBlur', - }); - - const onSubmit: SubmitHandler = async (data) => { - if (favorites.some((favorite) => favorite.nodeId === data.nodeId)) { - const result = await deleteFavorite(data); - resultToast(result?.serverError, result?.data?.message); - } else { - const result = await createFavorite(data); - resultToast(result?.serverError, result?.data?.message); - } - }; - - const onEmojiSelect = (emoji) => { - console.log(emoji.native); - }; - - return ( -
    - {nodes.length > 0 ? ( -
      - {nodes?.map((node) => ( -
    • -
      - -
      -

      - - {node.question.text} - -

      -
        - {node.tags.map((tag) => ( -
      • - - {tag.label.toLowerCase()} - -
      • - ))} -
      -
      - {!node.answer && ( - - - - - Unanswered - - )} - - - - - -

      Asked by {node.question.user.name}

      -

      - Asked on{' '} - {new Date(node.createdAt).toLocaleDateString( - undefined, - dateOptions, - )}{' '} - at{' '} - {new Date(node.createdAt).toLocaleTimeString( - undefined, - timeOptions, - )} -

      -
      -
      - {node.answer && ( - - - - - -

      Answered by {node.answer.user.name}

      -

      - Answered on{' '} - {new Date( - node.answer.updatedAt, - ).toLocaleDateString(undefined, dateOptions)}{' '} - at{' '} - {new Date( - node.answer.updatedAt, - ).toLocaleTimeString(undefined, timeOptions)} -

      -
      -
      - )} -
      -
      - -
      -
      - {node.answer ? ( -
      - -
      - ) : ( -
      - -
      - )} -
      -
      - - - - - - - - -
      - - - - - - - {favorites.some( - (favorite) => favorite.nodeId === node.id, - ) - ? 'Remove from favorites' - : 'Add to favorites'} - - -
      -
      -
      -
    • - ))} -
    - ) : ( -

    - {message} -

    - )} -
    - ); -}; From aed7753586a70407e5152d87aafacf78ca198b22 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 30 Jun 2024 16:38:58 +0200 Subject: [PATCH 157/326] :recycle: fetch reactions with node --- src/utils/prisma.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/utils/prisma.ts b/src/utils/prisma.ts index 275119017..671cf11be 100644 --- a/src/utils/prisma.ts +++ b/src/utils/prisma.ts @@ -24,6 +24,7 @@ export const nodeModel = { }, }, tags: true, + reactions: true, }; export const nodeModelWithDate = { @@ -55,4 +56,5 @@ export const nodeModelWithDate = { }, }, tags: true, + reactions: true, }; From db9660f390a226064dd7a1a56f55407ef7e89369 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 30 Jun 2024 16:41:31 +0200 Subject: [PATCH 158/326] :label: update extendednode type --- src/types/models/node.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/types/models/node.ts b/src/types/models/node.ts index 41293a311..93a1dd77b 100644 --- a/src/types/models/node.ts +++ b/src/types/models/node.ts @@ -3,6 +3,7 @@ import type { Favorite, Node, Question, + Reaction, Tag, User, } from '@prisma/client'; @@ -19,6 +20,7 @@ export type ExtendedNode = Node & { question: ExtendedQuestion; answer: ExtendedAnswer; tags: Tag[]; + reactions: Reaction[]; }; export type NodeWithQuestionAndAnswer = Node & { From 01a1034a34452ef10b8e86b0dbe29bb817986ed7 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 30 Jun 2024 16:43:30 +0200 Subject: [PATCH 159/326] :fire: transform nodeModelWithDate to nodeModel --- src/actions/get-node/index.ts | 4 ++-- src/utils/prisma.ts | 29 ----------------------------- 2 files changed, 2 insertions(+), 31 deletions(-) diff --git a/src/actions/get-node/index.ts b/src/actions/get-node/index.ts index b534d3de6..2817984a3 100644 --- a/src/actions/get-node/index.ts +++ b/src/actions/get-node/index.ts @@ -2,7 +2,7 @@ import { cache } from 'react'; import { redirect } from 'next/navigation'; -import { Routes, nodeModelWithDate } from '@/utils'; +import { Routes, nodeModel } from '@/utils'; import prisma from 'lib/prisma'; import type { ExtendedNode } from '@/types'; @@ -15,7 +15,7 @@ export const getNode = cache( } const node = await prisma.node.findUnique({ where: { id: id as string, tenantId: tenantId as string }, - include: nodeModelWithDate, + include: nodeModel, }); if (!node) return redirect(Routes.SITE.HOME); return node as ExtendedNode; diff --git a/src/utils/prisma.ts b/src/utils/prisma.ts index 671cf11be..81fc41719 100644 --- a/src/utils/prisma.ts +++ b/src/utils/prisma.ts @@ -1,33 +1,4 @@ export const nodeModel = { - question: { - select: { - id: true, - text: true, - slug: true, - user: { - select: { - name: true, - }, - }, - }, - }, - answer: { - select: { - id: true, - text: true, - updatedAt: true, - user: { - select: { - name: true, - }, - }, - }, - }, - tags: true, - reactions: true, -}; - -export const nodeModelWithDate = { question: { select: { createdAt: true, From c16d99b1c3b694e23ae73bee8756b97fd36fee7c Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 30 Jun 2024 18:30:11 +0200 Subject: [PATCH 160/326] :pencil2: change reaction to shortcode --- src/actions/create-reaction/action.ts | 4 ++-- src/actions/create-reaction/schema.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/actions/create-reaction/action.ts b/src/actions/create-reaction/action.ts index 3158a19dc..081b4fb6a 100644 --- a/src/actions/create-reaction/action.ts +++ b/src/actions/create-reaction/action.ts @@ -12,10 +12,10 @@ import { createReactionSchema } from './schema'; export const createReaction = authActionClient .metadata({ actionName: 'createReaction' }) .schema(createReactionSchema) - .action(async ({ parsedInput: { nodeId, reaction }, ctx: { userId } }) => { + .action(async ({ parsedInput: { nodeId, shortcode }, ctx: { userId } }) => { await prisma.reaction.create({ data: { - reaction, + shortcode, nodeId, userId, }, diff --git a/src/actions/create-reaction/schema.ts b/src/actions/create-reaction/schema.ts index 979c36e52..3e623a73b 100644 --- a/src/actions/create-reaction/schema.ts +++ b/src/actions/create-reaction/schema.ts @@ -2,5 +2,5 @@ import { z } from 'zod'; export const createReactionSchema = z.object({ nodeId: z.string().cuid2(), - reaction: z.string(), + shortcode: z.string(), }); From bed3595c1a62356cc2a79a116e48367055925a84 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 30 Jun 2024 18:31:07 +0200 Subject: [PATCH 161/326] :art: create question component --- src/modules/home/Question.tsx | 242 ++++++++++++++++++++++++++++++++++ 1 file changed, 242 insertions(+) create mode 100644 src/modules/home/Question.tsx diff --git a/src/modules/home/Question.tsx b/src/modules/home/Question.tsx new file mode 100644 index 000000000..b70bfb6db --- /dev/null +++ b/src/modules/home/Question.tsx @@ -0,0 +1,242 @@ +'use client'; + +import EmojiData from '@emoji-mart/data'; +import Picker from '@emoji-mart/react'; +import { zodResolver } from '@hookform/resolvers/zod'; +import { + BadgeCheck, + BadgeHelp, + BadgeInfo, + Bookmark, + BookmarkCheck, + ChevronDown, +} from 'lucide-react'; +import dynamic from 'next/dynamic'; +import Link from 'next/link'; +import { useForm } from 'react-hook-form'; + +import { + createFavorite, + createFavoriteSchema, + createReaction, + deleteFavorite, +} from '@/actions'; +import { + Badge, + Button, + Popover, + PopoverContent, + PopoverTrigger, + Tooltip, + TooltipContent, + TooltipTrigger, + resultToast, +} from '@/components'; +import { Routes, dateOptions, timeOptions } from '@/utils'; + +import type { ExtendedFavorites, ExtendedNode } from '@/types'; +import type { SubmitHandler } from 'react-hook-form'; +import type { z } from 'zod'; + +const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { + ssr: false, +}); + +type Props = { + node: ExtendedNode; + favorites: ExtendedFavorites[]; +}; + +type Schema = z.infer; + +export default function Question({ node, favorites }: Props) { + const { handleSubmit, register } = useForm({ + resolver: zodResolver(createFavoriteSchema), + mode: 'onBlur', + }); + + const onSubmit: SubmitHandler = async (data) => { + if (favorites.some((favorite) => favorite.nodeId === data.nodeId)) { + const result = await deleteFavorite(data); + resultToast(result?.serverError, result?.data?.message); + } else { + const result = await createFavorite(data); + resultToast(result?.serverError, result?.data?.message); + } + }; + + const onEmojiSelect = async (emoji, nodeId) => { + const data = { shortcode: emoji.shortcodes, nodeId }; + await createReaction(data); + }; + + return ( +
  • +
    + +
    +

    + + {node.question.text} + +

    +
      + {node.tags.map((tag) => ( +
    • + + {tag.label.toLowerCase()} + +
    • + ))} +
    +
    + {!node.answer && ( + + + + + Unanswered + + )} + + + + + +

    Asked by {node.question.user.name}

    +

    + Asked on{' '} + {new Date(node.createdAt).toLocaleDateString( + undefined, + dateOptions, + )}{' '} + at{' '} + {new Date(node.createdAt).toLocaleTimeString( + undefined, + timeOptions, + )} +

    +
    +
    + {node.answer && ( + + + + + +

    Answered by {node.answer.user.name}

    +

    + Answered on{' '} + {new Date(node.answer.updatedAt).toLocaleDateString( + undefined, + dateOptions, + )}{' '} + at{' '} + {new Date(node.answer.updatedAt).toLocaleTimeString( + undefined, + timeOptions, + )} +

    +
    +
    + )} + {node.reactions.map((reaction) => ( +

    {reaction.shortcode}

    + ))} +
    +
    + +
    +
    + {node.answer ? ( +
    + +
    + ) : ( +
    + +
    + )} +
    +
    + + + + + + onEmojiSelect(emoji, node.id)} + showPreview={false} + /> + + +
    + + + + + + + {favorites.some((favorite) => favorite.nodeId === node.id) + ? 'Remove from favorites' + : 'Add to favorites'} + + +
    +
    +
    +
  • + ); +} From f17d82727b2c8952fb0d7281964edd8fcd2b2ce3 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 1 Jul 2024 11:12:44 +0200 Subject: [PATCH 162/326] :construction: need to rethink the logic of reactions --- prisma/schema.prisma | 1 + src/actions/create-reaction/action.ts | 24 ----------- src/actions/index.ts | 3 +- src/actions/upsert-reaction/action.ts | 42 +++++++++++++++++++ .../index.ts | 0 .../schema.ts | 2 +- src/modules/home/Question.tsx | 4 +- 7 files changed, 48 insertions(+), 28 deletions(-) delete mode 100644 src/actions/create-reaction/action.ts create mode 100644 src/actions/upsert-reaction/action.ts rename src/actions/{create-reaction => upsert-reaction}/index.ts (100%) rename src/actions/{create-reaction => upsert-reaction}/schema.ts (64%) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index e6e054ea0..44e59e4ff 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -114,6 +114,7 @@ model Favorite { model Reaction { id String @id @default(cuid()) shortcode String + count Int @default(1) node Node @relation(fields: [nodeId], references: [id], onDelete: Cascade) nodeId String user User @relation(fields: [userId], references: [id], onDelete: Cascade) diff --git a/src/actions/create-reaction/action.ts b/src/actions/create-reaction/action.ts deleted file mode 100644 index 081b4fb6a..000000000 --- a/src/actions/create-reaction/action.ts +++ /dev/null @@ -1,24 +0,0 @@ -'use server'; - -import { revalidatePath } from 'next/cache'; - -import { authActionClient } from '@/lib/safe-actions'; -import { Routes } from '@/utils'; -import prisma from 'lib/prisma'; - -import 'server-only'; -import { createReactionSchema } from './schema'; - -export const createReaction = authActionClient - .metadata({ actionName: 'createReaction' }) - .schema(createReactionSchema) - .action(async ({ parsedInput: { nodeId, shortcode }, ctx: { userId } }) => { - await prisma.reaction.create({ - data: { - shortcode, - nodeId, - userId, - }, - }); - revalidatePath(`${Routes.SITE.QUESTION}/${nodeId}`); - }); diff --git a/src/actions/index.ts b/src/actions/index.ts index 9dbac9d16..85ba71560 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -1,7 +1,6 @@ export { createAnswer, createAnswerSchema } from './create-answer'; export { createFavorite, createFavoriteSchema } from './create-favorite'; export { createNode, createNodeSchema } from './create-node'; -export { createReaction, createReactionSchema } from './create-reaction'; export { createTag, createTagSchema } from './create-tag'; export { createTenant, @@ -44,3 +43,5 @@ export { upsertIntegrations, upsertIntegrationsSchema, } from './upsert-integrations'; + +export { upsertReaction, upsertReactionSchema } from './upsert-reaction'; diff --git a/src/actions/upsert-reaction/action.ts b/src/actions/upsert-reaction/action.ts new file mode 100644 index 000000000..ab90e6c7f --- /dev/null +++ b/src/actions/upsert-reaction/action.ts @@ -0,0 +1,42 @@ +'use server'; + +import { revalidatePath } from 'next/cache'; + +import { authActionClient } from '@/lib/safe-actions'; +import { Routes } from '@/utils'; +// import prisma from 'lib/prisma'; + +import 'server-only'; +import { upsertReactionSchema } from './schema'; + +export const upsertReaction = authActionClient + .metadata({ actionName: 'upsertReaction' }) + .schema(upsertReactionSchema) + .action( + async ({ + parsedInput: { nodeId, shortcode: _shortcode }, + ctx: { userId: _userId }, + }) => { + // TODO: Rethink the logic + // const reactionExists = await prisma.reaction.findFirst({ + // where: {shortcode, nodeId} + // }) + // if (reactionExists) { + // await prisma + // } + // await prisma.reaction.upsert({ + // where: {shortcode, nodeId}, + // update: { + // count: { + // increment: 1 + // } + // } + // create: { + // shortcode, + // nodeId, + // userId, + // }, + // }); + revalidatePath(`${Routes.SITE.QUESTION}/${nodeId}`); + }, + ); diff --git a/src/actions/create-reaction/index.ts b/src/actions/upsert-reaction/index.ts similarity index 100% rename from src/actions/create-reaction/index.ts rename to src/actions/upsert-reaction/index.ts diff --git a/src/actions/create-reaction/schema.ts b/src/actions/upsert-reaction/schema.ts similarity index 64% rename from src/actions/create-reaction/schema.ts rename to src/actions/upsert-reaction/schema.ts index 3e623a73b..29f268156 100644 --- a/src/actions/create-reaction/schema.ts +++ b/src/actions/upsert-reaction/schema.ts @@ -1,6 +1,6 @@ import { z } from 'zod'; -export const createReactionSchema = z.object({ +export const upsertReactionSchema = z.object({ nodeId: z.string().cuid2(), shortcode: z.string(), }); diff --git a/src/modules/home/Question.tsx b/src/modules/home/Question.tsx index b70bfb6db..217ed4c3e 100644 --- a/src/modules/home/Question.tsx +++ b/src/modules/home/Question.tsx @@ -18,7 +18,7 @@ import { useForm } from 'react-hook-form'; import { createFavorite, createFavoriteSchema, - createReaction, + upsertReaction, deleteFavorite, } from '@/actions'; import { @@ -67,7 +67,7 @@ export default function Question({ node, favorites }: Props) { const onEmojiSelect = async (emoji, nodeId) => { const data = { shortcode: emoji.shortcodes, nodeId }; - await createReaction(data); + await upsertReaction(data); }; return ( From 5559e18dafe0f27eb3f9897ac477071765306384 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 1 Jul 2024 11:17:37 +0200 Subject: [PATCH 163/326] :card_file_box: create new columns in reaction and node tables --- prisma/migrations/20240701091337_faqmaker_dev21/migration.sql | 2 ++ prisma/migrations/20240701091650_faqmaker_dev22/migration.sql | 2 ++ prisma/schema.prisma | 1 + 3 files changed, 5 insertions(+) create mode 100644 prisma/migrations/20240701091337_faqmaker_dev21/migration.sql create mode 100644 prisma/migrations/20240701091650_faqmaker_dev22/migration.sql diff --git a/prisma/migrations/20240701091337_faqmaker_dev21/migration.sql b/prisma/migrations/20240701091337_faqmaker_dev21/migration.sql new file mode 100644 index 000000000..8faa391dc --- /dev/null +++ b/prisma/migrations/20240701091337_faqmaker_dev21/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "Reaction" ADD COLUMN "count" INTEGER NOT NULL DEFAULT 1; diff --git a/prisma/migrations/20240701091650_faqmaker_dev22/migration.sql b/prisma/migrations/20240701091650_faqmaker_dev22/migration.sql new file mode 100644 index 000000000..ba1493e62 --- /dev/null +++ b/prisma/migrations/20240701091650_faqmaker_dev22/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "Node" ADD COLUMN "isPinned" BOOLEAN NOT NULL DEFAULT false; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 44e59e4ff..1723a619a 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -56,6 +56,7 @@ model Node { tenantId String favorites Favorite[] reactions Reaction[] + isPinned Boolean @default(false) @@index([tenantId]) } From 74fcf169e367475bc70e6732a4a3e5294c8b68fe Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 1 Jul 2024 11:18:09 +0200 Subject: [PATCH 164/326] :arrow_up: install updated dependencies --- pnpm-lock.yaml | 12011 +++++++++++++++++++++-------------------------- 1 file changed, 5310 insertions(+), 6701 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 549d6e07f..18098e019 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,682 +1,1112 @@ -lockfileVersion: '9.0' +lockfileVersion: '6.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false -importers: - - .: - dependencies: - '@emoji-mart/data': - specifier: ^1.2.1 - version: 1.2.1 - '@emoji-mart/react': - specifier: ^1.1.1 - version: 1.1.1(emoji-mart@5.6.0)(react@18.2.0) - '@google-cloud/storage': - specifier: ^7.7.0 - version: 7.7.0 - '@hookform/resolvers': - specifier: ^3.3.4 - version: 3.3.4(react-hook-form@7.45.4(react@18.2.0)) - '@next-auth/prisma-adapter': - specifier: ^1.0.7 - version: 1.0.7(@prisma/client@5.10.2(prisma@5.10.2))(next-auth@4.24.7(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) - '@prisma/client': - specifier: 5.10.2 - version: 5.10.2(prisma@5.10.2) - '@radix-ui/colors': - specifier: ^3.0.0 - version: 3.0.0 - '@radix-ui/react-avatar': - specifier: ^1.0.4 - version: 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-dialog': - specifier: ^1.0.5 - version: 1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-dropdown-menu': - specifier: ^2.0.6 - version: 2.0.6(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-label': - specifier: ^2.0.2 - version: 2.0.2(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-popover': - specifier: ^1.1.1 - version: 1.1.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-select': - specifier: ^2.0.0 - version: 2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': - specifier: ^1.0.2 - version: 1.0.2(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-tabs': - specifier: ^1.0.4 - version: 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-tooltip': - specifier: ^1.0.7 - version: 1.0.7(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@sentry/nextjs': - specifier: ^7.102.1 - version: 7.102.1(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0)(webpack@5.89.0) - '@slack/webhook': - specifier: ^7.0.1 - version: 7.0.1 - '@stripe/stripe-js': - specifier: ^2.4.0 - version: 2.4.0 - '@uiw/react-color-sketch': - specifier: ^2.0.8 - version: 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@uiw/react-markdown-preview': - specifier: ^5.0.6 - version: 5.0.6(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@uiw/react-md-editor': - specifier: ^4.0.3 - version: 4.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - class-variance-authority: - specifier: ^0.7.0 - version: 0.7.0 - clsx: - specifier: ^2.1.0 - version: 2.1.0 - emoji-mart: - specifier: ^5.6.0 - version: 5.6.0 - formidable: - specifier: ^3.5.1 - version: 3.5.1 - jotai: - specifier: ^2.6.4 - version: 2.6.4(@types/react@18.0.27)(react@18.2.0) - lucide-react: - specifier: ^0.344.0 - version: 0.344.0(react@18.2.0) - next: - specifier: 14.2.4 - version: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - next-auth: - specifier: ^4.24.7 - version: 4.24.7(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - next-remove-imports: - specifier: ^1.0.12 - version: 1.0.12(webpack@5.89.0) - next-safe-action: - specifier: ^7.0.2 - version: 7.0.2(@types/json-schema@7.0.15)(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(zod@3.22.4) - next-themes: - specifier: ^0.2.1 - version: 0.2.1(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - nodemailer: - specifier: ^6.9.14 - version: 6.9.14 - react: - specifier: 18.2.0 - version: 18.2.0 - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) - react-dropzone: - specifier: ^14.2.3 - version: 14.2.3(react@18.2.0) - react-error-boundary: - specifier: ^4.0.12 - version: 4.0.12(react@18.2.0) - react-hook-form: - specifier: ^7.45.4 - version: 7.45.4(react@18.2.0) - react-paginate: - specifier: ^8.2.0 - version: 8.2.0(react@18.2.0) - react-papaparse: - specifier: ^4.4.0 - version: 4.4.0 - rehype-sanitize: - specifier: ^6.0.0 - version: 6.0.0 - resend: - specifier: ^3.2.0 - version: 3.2.0 - slugify: - specifier: ^1.6.6 - version: 1.6.6 - sonner: - specifier: ^1.4.0 - version: 1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - stripe: - specifier: ^14.16.0 - version: 14.16.0 - tailwind-merge: - specifier: ^2.2.0 - version: 2.2.0 - tailwindcss-animate: - specifier: ^1.0.6 - version: 1.0.6(tailwindcss@3.4.1(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3))) - use-debounce: - specifier: ^10.0.0 - version: 10.0.0(react@18.2.0) - uuid: - specifier: ^9.0.1 - version: 9.0.1 - vaul: - specifier: ^0.9.0 - version: 0.9.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - wcag-contrast: - specifier: ^3.0.0 - version: 3.0.0 - zod: - specifier: ^3.22.4 - version: 3.22.4 - devDependencies: - '@changesets/cli': - specifier: ^2.27.1 - version: 2.27.1 - '@playwright/test': - specifier: ^1.45.0 - version: 1.45.0 - '@swc-jotai/react-refresh': - specifier: ^0.1.0 - version: 0.1.0 - '@types/formidable': - specifier: ^3.4.5 - version: 3.4.5 - '@types/node': - specifier: ^20.5.6 - version: 20.5.6 - '@types/react': - specifier: ^18.0.27 - version: 18.0.27 - '@typescript-eslint/eslint-plugin': - specifier: ^7.14.1 - version: 7.14.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3) - autoprefixer: - specifier: ^10.4.16 - version: 10.4.16(postcss@8.4.28) - dotenv: - specifier: ^16.4.5 - version: 16.4.5 - eslint: - specifier: 8.57.0 - version: 8.57.0 - eslint-config-airbnb: - specifier: ^19.0.4 - version: 19.0.4(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.0))(eslint-plugin-react@7.34.2(eslint@8.57.0))(eslint@8.57.0) - eslint-config-airbnb-typescript: - specifier: ^18.0.0 - version: 18.0.0(@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3))(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint@8.57.0) - eslint-config-next: - specifier: 14.1.0 - version: 14.1.0(eslint@8.57.0)(typescript@5.3.3) - eslint-config-prettier: - specifier: ^9.0.0 - version: 9.0.0(eslint@8.57.0) - eslint-plugin-import: - specifier: ^2.29.1 - version: 2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0) - eslint-plugin-jsx-a11y: - specifier: ^6.8.0 - version: 6.8.0(eslint@8.57.0) - eslint-plugin-playwright: - specifier: ^1.6.2 - version: 1.6.2(eslint@8.57.0) - eslint-plugin-prettier: - specifier: ^5.1.3 - version: 5.1.3(@types/eslint@8.56.0)(eslint-config-prettier@9.0.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.2.5) - eslint-plugin-react: - specifier: ^7.34.2 - version: 7.34.2(eslint@8.57.0) - eslint-plugin-react-hooks: - specifier: ^4.6.2 - version: 4.6.2(eslint@8.57.0) - eslint-plugin-tailwindcss: - specifier: ^3.17.3 - version: 3.17.3(tailwindcss@3.4.1(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3))) - eslint-plugin-unused-imports: - specifier: ^4.0.0 - version: 4.0.0(@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0) - husky: - specifier: ^9.0.11 - version: 9.0.11 - lint-staged: - specifier: ^15.0.2 - version: 15.0.2 - postcss: - specifier: ^8.4.28 - version: 8.4.28 - prettier: - specifier: ^3.2.5 - version: 3.2.5 - prettier-plugin-tailwindcss: - specifier: ^0.6.2 - version: 0.6.2(prettier@3.2.5) - prisma: - specifier: 5.10.2 - version: 5.10.2 - tailwindcss: - specifier: ^3.4.1 - version: 3.4.1(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3)) - ts-node: - specifier: ^10.9.1 - version: 10.9.1(@types/node@20.5.6)(typescript@5.3.3) - typescript: - specifier: ^5.3.3 - version: 5.3.3 +dependencies: + '@emoji-mart/data': + specifier: ^1.2.1 + version: 1.2.1 + '@emoji-mart/react': + specifier: ^1.1.1 + version: 1.1.1(emoji-mart@5.6.0)(react@18.2.0) + '@google-cloud/storage': + specifier: ^7.7.0 + version: 7.7.0 + '@hookform/resolvers': + specifier: ^3.3.4 + version: 3.3.4(react-hook-form@7.45.4) + '@next-auth/prisma-adapter': + specifier: ^1.0.7 + version: 1.0.7(@prisma/client@5.10.2)(next-auth@4.24.7) + '@prisma/client': + specifier: 5.10.2 + version: 5.10.2(prisma@5.10.2) + '@radix-ui/colors': + specifier: ^3.0.0 + version: 3.0.0 + '@radix-ui/react-avatar': + specifier: ^1.0.4 + version: 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-dialog': + specifier: ^1.0.5 + version: 1.0.5(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-dropdown-menu': + specifier: ^2.0.6 + version: 2.0.6(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-label': + specifier: ^2.0.2 + version: 2.0.2(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-popover': + specifier: ^1.1.1 + version: 1.1.1(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-select': + specifier: ^2.0.0 + version: 2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': + specifier: ^1.0.2 + version: 1.0.2(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-tabs': + specifier: ^1.0.4 + version: 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-tooltip': + specifier: ^1.0.7 + version: 1.0.7(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@sentry/nextjs': + specifier: ^7.102.1 + version: 7.102.1(next@14.2.4)(react@18.2.0)(webpack@5.89.0) + '@slack/webhook': + specifier: ^7.0.1 + version: 7.0.1 + '@stripe/stripe-js': + specifier: ^2.4.0 + version: 2.4.0 + '@uiw/react-color-sketch': + specifier: ^2.0.8 + version: 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) + '@uiw/react-markdown-preview': + specifier: ^5.0.6 + version: 5.0.6(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@uiw/react-md-editor': + specifier: ^4.0.3 + version: 4.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + class-variance-authority: + specifier: ^0.7.0 + version: 0.7.0 + clsx: + specifier: ^2.1.0 + version: 2.1.0 + emoji-mart: + specifier: ^5.6.0 + version: 5.6.0 + formidable: + specifier: ^3.5.1 + version: 3.5.1 + jotai: + specifier: ^2.6.4 + version: 2.6.4(@types/react@18.0.27)(react@18.2.0) + lucide-react: + specifier: ^0.344.0 + version: 0.344.0(react@18.2.0) + next: + specifier: 14.2.4 + version: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0)(react@18.2.0) + next-auth: + specifier: ^4.24.7 + version: 4.24.7(next@14.2.4)(nodemailer@6.9.14)(react-dom@18.2.0)(react@18.2.0) + next-remove-imports: + specifier: ^1.0.12 + version: 1.0.12(webpack@5.89.0) + next-safe-action: + specifier: ^7.0.2 + version: 7.0.2(next@14.2.4)(react-dom@18.2.0)(react@18.2.0)(zod@3.22.4) + next-themes: + specifier: ^0.2.1 + version: 0.2.1(next@14.2.4)(react-dom@18.2.0)(react@18.2.0) + nodemailer: + specifier: ^6.9.14 + version: 6.9.14 + react: + specifier: 18.2.0 + version: 18.2.0 + react-dom: + specifier: 18.2.0 + version: 18.2.0(react@18.2.0) + react-dropzone: + specifier: ^14.2.3 + version: 14.2.3(react@18.2.0) + react-error-boundary: + specifier: ^4.0.12 + version: 4.0.12(react@18.2.0) + react-hook-form: + specifier: ^7.45.4 + version: 7.45.4(react@18.2.0) + react-paginate: + specifier: ^8.2.0 + version: 8.2.0(react@18.2.0) + react-papaparse: + specifier: ^4.4.0 + version: 4.4.0 + rehype-sanitize: + specifier: ^6.0.0 + version: 6.0.0 + resend: + specifier: ^3.2.0 + version: 3.2.0 + slugify: + specifier: ^1.6.6 + version: 1.6.6 + sonner: + specifier: ^1.4.0 + version: 1.4.0(react-dom@18.2.0)(react@18.2.0) + stripe: + specifier: ^14.16.0 + version: 14.16.0 + tailwind-merge: + specifier: ^2.2.0 + version: 2.2.0 + tailwindcss-animate: + specifier: ^1.0.6 + version: 1.0.6(tailwindcss@3.4.1) + use-debounce: + specifier: ^10.0.0 + version: 10.0.0(react@18.2.0) + uuid: + specifier: ^9.0.1 + version: 9.0.1 + vaul: + specifier: ^0.9.0 + version: 0.9.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + wcag-contrast: + specifier: ^3.0.0 + version: 3.0.0 + zod: + specifier: ^3.22.4 + version: 3.22.4 + +devDependencies: + '@changesets/cli': + specifier: ^2.27.1 + version: 2.27.1 + '@playwright/test': + specifier: ^1.45.0 + version: 1.45.0 + '@swc-jotai/react-refresh': + specifier: ^0.1.0 + version: 0.1.0 + '@types/formidable': + specifier: ^3.4.5 + version: 3.4.5 + '@types/node': + specifier: ^20.5.6 + version: 20.5.6 + '@types/react': + specifier: ^18.0.27 + version: 18.0.27 + '@typescript-eslint/eslint-plugin': + specifier: ^7.14.1 + version: 7.14.1(@typescript-eslint/parser@7.12.0)(eslint@8.57.0)(typescript@5.3.3) + autoprefixer: + specifier: ^10.4.16 + version: 10.4.16(postcss@8.4.28) + dotenv: + specifier: ^16.4.5 + version: 16.4.5 + eslint: + specifier: 8.57.0 + version: 8.57.0 + eslint-config-airbnb: + specifier: ^19.0.4 + version: 19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.34.2)(eslint@8.57.0) + eslint-config-airbnb-typescript: + specifier: ^18.0.0 + version: 18.0.0(@typescript-eslint/eslint-plugin@7.14.1)(@typescript-eslint/parser@7.12.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-config-next: + specifier: 14.1.0 + version: 14.1.0(eslint@8.57.0)(typescript@5.3.3) + eslint-config-prettier: + specifier: ^9.0.0 + version: 9.0.0(eslint@8.57.0) + eslint-plugin-import: + specifier: ^2.29.1 + version: 2.29.1(@typescript-eslint/parser@7.12.0)(eslint@8.57.0) + eslint-plugin-jsx-a11y: + specifier: ^6.8.0 + version: 6.8.0(eslint@8.57.0) + eslint-plugin-playwright: + specifier: ^1.6.2 + version: 1.6.2(eslint@8.57.0) + eslint-plugin-prettier: + specifier: ^5.1.3 + version: 5.1.3(eslint-config-prettier@9.0.0)(eslint@8.57.0)(prettier@3.2.5) + eslint-plugin-react: + specifier: ^7.34.2 + version: 7.34.2(eslint@8.57.0) + eslint-plugin-react-hooks: + specifier: ^4.6.2 + version: 4.6.2(eslint@8.57.0) + eslint-plugin-tailwindcss: + specifier: ^3.17.3 + version: 3.17.3(tailwindcss@3.4.1) + eslint-plugin-unused-imports: + specifier: ^4.0.0 + version: 4.0.0(@typescript-eslint/eslint-plugin@7.14.1)(eslint@8.57.0) + husky: + specifier: ^9.0.11 + version: 9.0.11 + lint-staged: + specifier: ^15.0.2 + version: 15.0.2 + postcss: + specifier: ^8.4.28 + version: 8.4.28 + prettier: + specifier: ^3.2.5 + version: 3.2.5 + prettier-plugin-tailwindcss: + specifier: ^0.6.2 + version: 0.6.2(prettier@3.2.5) + prisma: + specifier: 5.10.2 + version: 5.10.2 + tailwindcss: + specifier: ^3.4.1 + version: 3.4.1(ts-node@10.9.1) + ts-node: + specifier: ^10.9.1 + version: 10.9.1(@types/node@20.5.6)(typescript@5.3.3) + typescript: + specifier: ^5.3.3 + version: 5.3.3 packages: - '@aashutoshrathi/word-wrap@1.2.6': + /@aashutoshrathi/word-wrap@1.2.6: resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} engines: {node: '>=0.10.0'} + dev: true - '@alloc/quick-lru@5.2.0': + /@alloc/quick-lru@5.2.0: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} - '@ampproject/remapping@2.2.1': + /@ampproject/remapping@2.2.1: resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + dev: false - '@babel/code-frame@7.22.13': + /@babel/code-frame@7.22.13: resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.22.13 + chalk: 2.4.2 - '@babel/compat-data@7.22.9': + /@babel/compat-data@7.22.9: resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} engines: {node: '>=6.9.0'} + dev: false - '@babel/core@7.22.17': + /@babel/core@7.22.17: resolution: {integrity: sha512-2EENLmhpwplDux5PSsZnSbnSkB3tZ6QTksgO25xwEL7pIDcNOMhF5v/s6RzwjMZzZzw9Ofc30gHv5ChCC8pifQ==} engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.22.15 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-module-transforms': 7.22.17(@babel/core@7.22.17) + '@babel/helpers': 7.22.15 + '@babel/parser': 7.22.16 + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.17 + '@babel/types': 7.22.17 + convert-source-map: 1.9.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/generator@7.22.15': + /@babel/generator@7.22.15: resolution: {integrity: sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.17 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + jsesc: 2.5.2 + dev: false - '@babel/helper-compilation-targets@7.22.15': + /@babel/helper-compilation-targets@7.22.15: resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.22.9 + '@babel/helper-validator-option': 7.22.15 + browserslist: 4.21.10 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: false - '@babel/helper-environment-visitor@7.22.5': + /@babel/helper-environment-visitor@7.22.5: resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} engines: {node: '>=6.9.0'} + dev: false - '@babel/helper-function-name@7.22.5': + /@babel/helper-function-name@7.22.5: resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.22.17 + dev: false - '@babel/helper-hoist-variables@7.22.5': + /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.17 + dev: false - '@babel/helper-module-imports@7.22.15': + /@babel/helper-module-imports@7.22.15: resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.17 + dev: false - '@babel/helper-module-transforms@7.22.17': + /@babel/helper-module-transforms@7.22.17(@babel/core@7.22.17): resolution: {integrity: sha512-XouDDhQESrLHTpnBtCKExJdyY4gJCdrvH2Pyv8r8kovX2U8G0dRUOT45T9XlbLtuu9CLXP15eusnkprhoPV5iQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.15 + dev: false - '@babel/helper-simple-access@7.22.5': + /@babel/helper-simple-access@7.22.5: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.17 + dev: false - '@babel/helper-split-export-declaration@7.22.6': + /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.17 + dev: false - '@babel/helper-string-parser@7.22.5': + /@babel/helper-string-parser@7.22.5: resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} + dev: false - '@babel/helper-validator-identifier@7.22.15': + /@babel/helper-validator-identifier@7.22.15: resolution: {integrity: sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.22.15': + /@babel/helper-validator-option@7.22.15: resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} engines: {node: '>=6.9.0'} + dev: false - '@babel/helpers@7.22.15': + /@babel/helpers@7.22.15: resolution: {integrity: sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.17 + '@babel/types': 7.22.17 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/highlight@7.22.13': + /@babel/highlight@7.22.13: resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.15 + chalk: 2.4.2 + js-tokens: 4.0.0 - '@babel/parser@7.22.16': + /@babel/parser@7.22.16: resolution: {integrity: sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==} engines: {node: '>=6.0.0'} hasBin: true + dependencies: + '@babel/types': 7.22.17 + dev: false - '@babel/runtime@7.22.11': + /@babel/runtime@7.22.11: resolution: {integrity: sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA==} engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 + dev: false - '@babel/runtime@7.23.6': + /@babel/runtime@7.23.6: resolution: {integrity: sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==} engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 + dev: false - '@babel/runtime@7.23.7': + /@babel/runtime@7.23.7: resolution: {integrity: sha512-w06OXVOFso7LcbzMiDGt+3X7Rh7Ho8MmgPoWU3rarH+8upf+wSU/grlGbWzQyr3DkdN6ZeuMFjpdwW0Q+HxobA==} engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 - '@babel/template@7.22.15': + /@babel/template@7.22.15: resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/parser': 7.22.16 + '@babel/types': 7.22.17 + dev: false - '@babel/traverse@7.22.17': + /@babel/traverse@7.22.17: resolution: {integrity: sha512-xK4Uwm0JnAMvxYZxOVecss85WxTEIbTa7bnGyf/+EgCL5Zt3U7htUpEOWv9detPlamGKuRzCqw74xVglDWpPdg==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.22.15 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.22.16 + '@babel/types': 7.22.17 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/types@7.22.17': + /@babel/types@7.22.17: resolution: {integrity: sha512-YSQPHLFtQNE5xN9tHuZnzu8vPr61wVTBZdfv1meex1NBosa4iT05k/Jw06ddJugi4bk7The/oSwQGFcksmEJQg==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.15 + to-fast-properties: 2.0.0 + dev: false - '@changesets/apply-release-plan@7.0.0': + /@changesets/apply-release-plan@7.0.0: resolution: {integrity: sha512-vfi69JR416qC9hWmFGSxj7N6wA5J222XNBmezSVATPWDVPIF7gkd4d8CpbEbXmRWbVrkoli3oerGS6dcL/BGsQ==} + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/config': 3.0.0 + '@changesets/get-version-range-type': 0.4.0 + '@changesets/git': 3.0.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + detect-indent: 6.1.0 + fs-extra: 7.0.1 + lodash.startcase: 4.4.0 + outdent: 0.5.0 + prettier: 2.8.8 + resolve-from: 5.0.0 + semver: 7.5.4 + dev: true - '@changesets/assemble-release-plan@6.0.0': + /@changesets/assemble-release-plan@6.0.0: resolution: {integrity: sha512-4QG7NuisAjisbW4hkLCmGW2lRYdPrKzro+fCtZaILX+3zdUELSvYjpL4GTv0E4aM9Mef3PuIQp89VmHJ4y2bfw==} + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.0.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + semver: 7.5.4 + dev: true - '@changesets/changelog-git@0.2.0': + /@changesets/changelog-git@0.2.0: resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==} + dependencies: + '@changesets/types': 6.0.0 + dev: true - '@changesets/cli@2.27.1': + /@changesets/cli@2.27.1: resolution: {integrity: sha512-iJ91xlvRnnrJnELTp4eJJEOPjgpF3NOh4qeQehM6Ugiz9gJPRZ2t+TsXun6E3AMN4hScZKjqVXl0TX+C7AB3ZQ==} hasBin: true + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/apply-release-plan': 7.0.0 + '@changesets/assemble-release-plan': 6.0.0 + '@changesets/changelog-git': 0.2.0 + '@changesets/config': 3.0.0 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.0.0 + '@changesets/get-release-plan': 4.0.0 + '@changesets/git': 3.0.0 + '@changesets/logger': 0.1.0 + '@changesets/pre': 2.0.0 + '@changesets/read': 0.6.0 + '@changesets/types': 6.0.0 + '@changesets/write': 0.3.0 + '@manypkg/get-packages': 1.1.3 + '@types/semver': 7.5.1 + ansi-colors: 4.1.3 + chalk: 2.4.2 + ci-info: 3.8.0 + enquirer: 2.4.1 + external-editor: 3.1.0 + fs-extra: 7.0.1 + human-id: 1.0.2 + meow: 6.1.1 + outdent: 0.5.0 + p-limit: 2.3.0 + preferred-pm: 3.0.3 + resolve-from: 5.0.0 + semver: 7.5.4 + spawndamnit: 2.0.0 + term-size: 2.2.1 + tty-table: 4.2.1 + dev: true - '@changesets/config@3.0.0': + /@changesets/config@3.0.0: resolution: {integrity: sha512-o/rwLNnAo/+j9Yvw9mkBQOZySDYyOr/q+wptRLcAVGlU6djOeP9v1nlalbL9MFsobuBVQbZCTp+dIzdq+CLQUA==} + dependencies: + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.0.0 + '@changesets/logger': 0.1.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + micromatch: 4.0.5 + dev: true - '@changesets/errors@0.2.0': + /@changesets/errors@0.2.0: resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} + dependencies: + extendable-error: 0.1.7 + dev: true - '@changesets/get-dependents-graph@2.0.0': + /@changesets/get-dependents-graph@2.0.0: resolution: {integrity: sha512-cafUXponivK4vBgZ3yLu944mTvam06XEn2IZGjjKc0antpenkYANXiiE6GExV/yKdsCnE8dXVZ25yGqLYZmScA==} + dependencies: + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + chalk: 2.4.2 + fs-extra: 7.0.1 + semver: 7.5.4 + dev: true - '@changesets/get-release-plan@4.0.0': + /@changesets/get-release-plan@4.0.0: resolution: {integrity: sha512-9L9xCUeD/Tb6L/oKmpm8nyzsOzhdNBBbt/ZNcjynbHC07WW4E1eX8NMGC5g5SbM5z/V+MOrYsJ4lRW41GCbg3w==} + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/assemble-release-plan': 6.0.0 + '@changesets/config': 3.0.0 + '@changesets/pre': 2.0.0 + '@changesets/read': 0.6.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + dev: true - '@changesets/get-version-range-type@0.4.0': + /@changesets/get-version-range-type@0.4.0: resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} + dev: true - '@changesets/git@3.0.0': + /@changesets/git@3.0.0: resolution: {integrity: sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==} + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/errors': 0.2.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + is-subdir: 1.2.0 + micromatch: 4.0.5 + spawndamnit: 2.0.0 + dev: true - '@changesets/logger@0.1.0': + /@changesets/logger@0.1.0: resolution: {integrity: sha512-pBrJm4CQm9VqFVwWnSqKEfsS2ESnwqwH+xR7jETxIErZcfd1u2zBSqrHbRHR7xjhSgep9x2PSKFKY//FAshA3g==} + dependencies: + chalk: 2.4.2 + dev: true - '@changesets/parse@0.4.0': + /@changesets/parse@0.4.0: resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==} + dependencies: + '@changesets/types': 6.0.0 + js-yaml: 3.14.1 + dev: true - '@changesets/pre@2.0.0': + /@changesets/pre@2.0.0: resolution: {integrity: sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==} + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/errors': 0.2.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + dev: true - '@changesets/read@0.6.0': + /@changesets/read@0.6.0: resolution: {integrity: sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==} + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/git': 3.0.0 + '@changesets/logger': 0.1.0 + '@changesets/parse': 0.4.0 + '@changesets/types': 6.0.0 + chalk: 2.4.2 + fs-extra: 7.0.1 + p-filter: 2.1.0 + dev: true - '@changesets/types@4.1.0': + /@changesets/types@4.1.0: resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} + dev: true - '@changesets/types@6.0.0': + /@changesets/types@6.0.0: resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==} + dev: true - '@changesets/write@0.3.0': + /@changesets/write@0.3.0: resolution: {integrity: sha512-slGLb21fxZVUYbyea+94uFiD6ntQW0M2hIKNznFizDhZPDgn2c/fv1UzzlW43RVzh1BEDuIqW6hzlJ1OflNmcw==} + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/types': 6.0.0 + fs-extra: 7.0.1 + human-id: 1.0.2 + prettier: 2.8.8 + dev: true - '@cspotcode/source-map-support@0.8.1': + /@cspotcode/source-map-support@0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} + dependencies: + '@jridgewell/trace-mapping': 0.3.9 - '@emoji-mart/data@1.2.1': + /@emoji-mart/data@1.2.1: resolution: {integrity: sha512-no2pQMWiBy6gpBEiqGeU77/bFejDqUTRY7KX+0+iur13op3bqUsXdnwoZs6Xb1zbv0gAj5VvS1PWoUUckSr5Dw==} + dev: false - '@emoji-mart/react@1.1.1': + /@emoji-mart/react@1.1.1(emoji-mart@5.6.0)(react@18.2.0): resolution: {integrity: sha512-NMlFNeWgv1//uPsvLxvGQoIerPuVdXwK/EUek8OOkJ6wVOWPUizRBJU0hDqWZCOROVpfBgCemaC3m6jDOXi03g==} peerDependencies: emoji-mart: ^5.2 react: ^16.8 || ^17 || ^18 + dependencies: + emoji-mart: 5.6.0 + react: 18.2.0 + dev: false - '@eslint-community/eslint-utils@4.4.0': + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.57.0 + eslint-visitor-keys: 3.4.3 + dev: true - '@eslint-community/regexpp@4.11.0': - resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} + /@eslint-community/regexpp@4.10.1: + resolution: {integrity: sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true - '@eslint-community/regexpp@4.8.0': + /@eslint-community/regexpp@4.8.0: resolution: {integrity: sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true - '@eslint/eslintrc@2.1.4': + /@eslint/eslintrc@2.1.4: resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.21.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true - '@eslint/js@8.57.0': + /@eslint/js@8.57.0: resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true - '@floating-ui/core@1.4.1': + /@floating-ui/core@1.4.1: resolution: {integrity: sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ==} + dependencies: + '@floating-ui/utils': 0.1.1 + dev: false - '@floating-ui/dom@1.5.1': + /@floating-ui/dom@1.5.1: resolution: {integrity: sha512-KwvVcPSXg6mQygvA1TjbN/gh///36kKtllIF8SUm0qpFj8+rvYrpvlYdL1JoA71SHpDqgSSdGOSoQ0Mp3uY5aw==} + dependencies: + '@floating-ui/core': 1.4.1 + '@floating-ui/utils': 0.1.1 + dev: false - '@floating-ui/react-dom@2.0.2': + /@floating-ui/react-dom@2.0.2(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' + dependencies: + '@floating-ui/dom': 1.5.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@floating-ui/utils@0.1.1': + /@floating-ui/utils@0.1.1: resolution: {integrity: sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw==} + dev: false - '@google-cloud/paginator@5.0.0': + /@google-cloud/paginator@5.0.0: resolution: {integrity: sha512-87aeg6QQcEPxGCOthnpUjvw4xAZ57G7pL8FS0C4e/81fr3FjkpUpibf1s2v5XGyGhUVGF4Jfg7yEcxqn2iUw1w==} engines: {node: '>=14.0.0'} + dependencies: + arrify: 2.0.1 + extend: 3.0.2 + dev: false - '@google-cloud/projectify@4.0.0': + /@google-cloud/projectify@4.0.0: resolution: {integrity: sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==} engines: {node: '>=14.0.0'} + dev: false - '@google-cloud/promisify@4.0.0': + /@google-cloud/promisify@4.0.0: resolution: {integrity: sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==} engines: {node: '>=14'} + dev: false - '@google-cloud/storage@7.7.0': + /@google-cloud/storage@7.7.0: resolution: {integrity: sha512-EMCEY+6JiIkx7Dt8NXVGGjy1vRdSGdHkoqZoqjJw7cEBkT7ZkX0c7puedfn1MamnzW5SX4xoa2jVq5u7OWBmkQ==} engines: {node: '>=14'} - - '@hookform/resolvers@3.3.4': - resolution: {integrity: sha512-o5cgpGOuJYrd+iMKvkttOclgwRW86EsWJZZRC23prf0uU2i48Htq4PuT73AVb9ionFyZrwYEITuOFGF+BydEtQ==} - peerDependencies: - react-hook-form: ^7.0.0 - - '@humanwhocodes/config-array@0.11.14': - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + dependencies: + '@google-cloud/paginator': 5.0.0 + '@google-cloud/projectify': 4.0.0 + '@google-cloud/promisify': 4.0.0 + abort-controller: 3.0.0 + async-retry: 1.3.3 + compressible: 2.0.18 + duplexify: 4.1.2 + ent: 2.2.0 + fast-xml-parser: 4.3.4 + gaxios: 6.2.0 + google-auth-library: 9.6.3 + mime: 3.0.0 + mime-types: 2.1.35 + p-limit: 3.1.0 + retry-request: 7.0.2 + teeny-request: 9.0.0 + uuid: 8.3.2 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /@hookform/resolvers@3.3.4(react-hook-form@7.45.4): + resolution: {integrity: sha512-o5cgpGOuJYrd+iMKvkttOclgwRW86EsWJZZRC23prf0uU2i48Htq4PuT73AVb9ionFyZrwYEITuOFGF+BydEtQ==} + peerDependencies: + react-hook-form: ^7.0.0 + dependencies: + react-hook-form: 7.45.4(react@18.2.0) + dev: false + + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 2.0.2 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true - '@humanwhocodes/module-importer@1.0.1': + /@humanwhocodes/module-importer@1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} + dev: true - '@humanwhocodes/object-schema@2.0.2': + /@humanwhocodes/object-schema@2.0.2: resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} + dev: true - '@isaacs/cliui@8.0.2': + /@isaacs/cliui@8.0.2: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 - '@jridgewell/gen-mapping@0.3.3': + /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.20 - '@jridgewell/resolve-uri@3.1.1': + /@jridgewell/resolve-uri@3.1.1: resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} - '@jridgewell/set-array@1.1.2': + /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} - '@jridgewell/source-map@0.3.5': + /@jridgewell/source-map@0.3.5: resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + dev: false - '@jridgewell/sourcemap-codec@1.4.15': + /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - '@jridgewell/trace-mapping@0.3.20': + /@jridgewell/trace-mapping@0.3.20: resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping@0.3.9': + /@jridgewell/trace-mapping@0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 - '@manypkg/find-root@1.1.0': + /@manypkg/find-root@1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} + dependencies: + '@babel/runtime': 7.23.7 + '@types/node': 12.20.55 + find-up: 4.1.0 + fs-extra: 8.1.0 + dev: true - '@manypkg/get-packages@1.1.3': + /@manypkg/get-packages@1.1.3: resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/types': 4.1.0 + '@manypkg/find-root': 1.1.0 + fs-extra: 8.1.0 + globby: 11.1.0 + read-yaml-file: 1.1.0 + dev: true - '@next-auth/prisma-adapter@1.0.7': + /@next-auth/prisma-adapter@1.0.7(@prisma/client@5.10.2)(next-auth@4.24.7): resolution: {integrity: sha512-Cdko4KfcmKjsyHFrWwZ//lfLUbcLqlyFqjd/nYE2m3aZ7tjMNUjpks47iw7NTCnXf+5UWz5Ypyt1dSs1EP5QJw==} peerDependencies: '@prisma/client': '>=2.26.0 || >=3' next-auth: ^4 + dependencies: + '@prisma/client': 5.10.2(prisma@5.10.2) + next-auth: 4.24.7(next@14.2.4)(nodemailer@6.9.14)(react-dom@18.2.0)(react@18.2.0) + dev: false - '@next/env@14.2.4': + /@next/env@14.2.4: resolution: {integrity: sha512-3EtkY5VDkuV2+lNmKlbkibIJxcO4oIHEhBWne6PaAp+76J9KoSsGvNikp6ivzAT8dhhBMYrm6op2pS1ApG0Hzg==} + dev: false - '@next/eslint-plugin-next@14.1.0': + /@next/eslint-plugin-next@14.1.0: resolution: {integrity: sha512-x4FavbNEeXx/baD/zC/SdrvkjSby8nBn8KcCREqk6UuwvwoAPZmaV8TFCAuo/cpovBRTIY67mHhe86MQQm/68Q==} + dependencies: + glob: 10.3.10 + dev: true - '@next/swc-darwin-arm64@14.2.4': + /@next/swc-darwin-arm64@14.2.4: resolution: {integrity: sha512-AH3mO4JlFUqsYcwFUHb1wAKlebHU/Hv2u2kb1pAuRanDZ7pD/A/KPD98RHZmwsJpdHQwfEc/06mgpSzwrJYnNg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] + requiresBuild: true + dev: false + optional: true - '@next/swc-darwin-x64@14.2.4': + /@next/swc-darwin-x64@14.2.4: resolution: {integrity: sha512-QVadW73sWIO6E2VroyUjuAxhWLZWEpiFqHdZdoQ/AMpN9YWGuHV8t2rChr0ahy+irKX5mlDU7OY68k3n4tAZTg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] + requiresBuild: true + dev: false + optional: true - '@next/swc-linux-arm64-gnu@14.2.4': + /@next/swc-linux-arm64-gnu@14.2.4: resolution: {integrity: sha512-KT6GUrb3oyCfcfJ+WliXuJnD6pCpZiosx2X3k66HLR+DMoilRb76LpWPGb4tZprawTtcnyrv75ElD6VncVamUQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + requiresBuild: true + dev: false + optional: true - '@next/swc-linux-arm64-musl@14.2.4': + /@next/swc-linux-arm64-musl@14.2.4: resolution: {integrity: sha512-Alv8/XGSs/ytwQcbCHwze1HmiIkIVhDHYLjczSVrf0Wi2MvKn/blt7+S6FJitj3yTlMwMxII1gIJ9WepI4aZ/A==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + requiresBuild: true + dev: false + optional: true - '@next/swc-linux-x64-gnu@14.2.4': + /@next/swc-linux-x64-gnu@14.2.4: resolution: {integrity: sha512-ze0ShQDBPCqxLImzw4sCdfnB3lRmN3qGMB2GWDRlq5Wqy4G36pxtNOo2usu/Nm9+V2Rh/QQnrRc2l94kYFXO6Q==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + requiresBuild: true + dev: false + optional: true - '@next/swc-linux-x64-musl@14.2.4': + /@next/swc-linux-x64-musl@14.2.4: resolution: {integrity: sha512-8dwC0UJoc6fC7PX70csdaznVMNr16hQrTDAMPvLPloazlcaWfdPogq+UpZX6Drqb1OBlwowz8iG7WR0Tzk/diQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + requiresBuild: true + dev: false + optional: true - '@next/swc-win32-arm64-msvc@14.2.4': + /@next/swc-win32-arm64-msvc@14.2.4: resolution: {integrity: sha512-jxyg67NbEWkDyvM+O8UDbPAyYRZqGLQDTPwvrBBeOSyVWW/jFQkQKQ70JDqDSYg1ZDdl+E3nkbFbq8xM8E9x8A==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] + requiresBuild: true + dev: false + optional: true - '@next/swc-win32-ia32-msvc@14.2.4': + /@next/swc-win32-ia32-msvc@14.2.4: resolution: {integrity: sha512-twrmN753hjXRdcrZmZttb/m5xaCBFa48Dt3FbeEItpJArxriYDunWxJn+QFXdJ3hPkm4u7CKxncVvnmgQMY1ag==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] + requiresBuild: true + dev: false + optional: true - '@next/swc-win32-x64-msvc@14.2.4': + /@next/swc-win32-x64-msvc@14.2.4: resolution: {integrity: sha512-tkLrjBzqFTP8DVrAAQmZelEahfR9OxWpFR++vAI9FBhCiIxtwHwBHC23SBHCTURBtwB4kc/x44imVOnkKGNVGg==} engines: {node: '>= 10'} cpu: [x64] os: [win32] + requiresBuild: true + dev: false + optional: true - '@nodelib/fs.scandir@2.1.5': + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 - '@nodelib/fs.stat@2.0.5': + /@nodelib/fs.stat@2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} - '@nodelib/fs.walk@1.2.8': + /@nodelib/fs.walk@1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 - '@one-ini/wasm@0.1.1': + /@one-ini/wasm@0.1.1: resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} + dev: false - '@panva/hkdf@1.1.1': + /@panva/hkdf@1.1.1: resolution: {integrity: sha512-dhPeilub1NuIG0X5Kvhh9lH4iW3ZsHlnzwgwbOlgwQ2wG1IqFzsgHqmKPk3WzsdWAeaxKJxgM0+W433RmN45GA==} + dev: false - '@pkgjs/parseargs@0.11.0': + /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} + requiresBuild: true + optional: true - '@pkgr/core@0.1.1': + /@pkgr/core@0.1.1: resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dev: true - '@playwright/test@1.45.0': + /@playwright/test@1.45.0: resolution: {integrity: sha512-TVYsfMlGAaxeUllNkywbwek67Ncf8FRGn8ZlRdO291OL3NjG9oMbfVhyP82HQF0CZLMrYsvesqoUekxdWuF9Qw==} engines: {node: '>=18'} hasBin: true + dependencies: + playwright: 1.45.0 - '@prisma/client@5.10.2': + /@prisma/client@5.10.2(prisma@5.10.2): resolution: {integrity: sha512-ef49hzB2yJZCvM5gFHMxSFL9KYrIP9udpT5rYo0CsHD4P9IKj473MbhU1gjKKftiwWBTIyrt9jukprzZXazyag==} engines: {node: '>=16.13'} + requiresBuild: true peerDependencies: prisma: '*' peerDependenciesMeta: prisma: optional: true + dependencies: + prisma: 5.10.2 + dev: false - '@prisma/debug@5.10.2': + /@prisma/debug@5.10.2: resolution: {integrity: sha512-bkBOmH9dpEBbMKFJj8V+Zp8IZHIBjy3fSyhLhxj4FmKGb/UBSt9doyfA6k1UeUREsMJft7xgPYBbHSOYBr8XCA==} - '@prisma/engines-version@5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9': + /@prisma/engines-version@5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9: resolution: {integrity: sha512-uCy/++3Jx/O3ufM+qv2H1L4tOemTNqcP/gyEVOlZqTpBvYJUe0tWtW0y3o2Ueq04mll4aM5X3f6ugQftOSLdFQ==} - '@prisma/engines@5.10.2': + /@prisma/engines@5.10.2: resolution: {integrity: sha512-HkSJvix6PW8YqEEt3zHfCYYJY69CXsNdhU+wna+4Y7EZ+AwzeupMnUThmvaDA7uqswiHkgm5/SZ6/4CStjaGmw==} + requiresBuild: true + dependencies: + '@prisma/debug': 5.10.2 + '@prisma/engines-version': 5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9 + '@prisma/fetch-engine': 5.10.2 + '@prisma/get-platform': 5.10.2 - '@prisma/fetch-engine@5.10.2': + /@prisma/fetch-engine@5.10.2: resolution: {integrity: sha512-dSmXcqSt6DpTmMaLQ9K8ZKzVAMH3qwGCmYEZr/uVnzVhxRJ1EbT/w2MMwIdBNq1zT69Rvh0h75WMIi0mrIw7Hg==} + dependencies: + '@prisma/debug': 5.10.2 + '@prisma/engines-version': 5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9 + '@prisma/get-platform': 5.10.2 - '@prisma/get-platform@5.10.2': + /@prisma/get-platform@5.10.2: resolution: {integrity: sha512-nqXP6vHiY2PIsebBAuDeWiUYg8h8mfjBckHh6Jezuwej0QJNnjDiOq30uesmg+JXxGk99nqyG3B7wpcOODzXvg==} + dependencies: + '@prisma/debug': 5.10.2 - '@radix-ui/colors@3.0.0': + /@radix-ui/colors@3.0.0: resolution: {integrity: sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg==} + dev: false - '@radix-ui/number@1.0.1': + /@radix-ui/number@1.0.1: resolution: {integrity: sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==} + dependencies: + '@babel/runtime': 7.23.7 + dev: false - '@radix-ui/primitive@1.0.1': + /@radix-ui/primitive@1.0.1: resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} + dependencies: + '@babel/runtime': 7.23.7 + dev: false - '@radix-ui/primitive@1.1.0': + /@radix-ui/primitive@1.1.0: resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} + dev: false - '@radix-ui/react-arrow@1.0.3': + /@radix-ui/react-arrow@1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} peerDependencies: '@types/react': '*' @@ -688,8 +1118,15 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-arrow@1.1.0': + /@radix-ui/react-arrow@1.1.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==} peerDependencies: '@types/react': '*' @@ -701,8 +1138,14 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-avatar@1.0.4': + /@radix-ui/react-avatar@1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-kVK2K7ZD3wwj3qhle0ElXhOjbezIgyl2hVvgwfIdexL3rN6zJmy5AqqIf+D31lxVppdzV8CjAfZ6PklkmInZLw==} peerDependencies: '@types/react': '*' @@ -714,8 +1157,18 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-collection@1.0.3': + /@radix-ui/react-collection@1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} peerDependencies: '@types/react': '*' @@ -727,8 +1180,18 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-compose-refs@1.0.1': + /@radix-ui/react-compose-refs@1.0.1(@types/react@18.0.27)(react@18.2.0): resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} peerDependencies: '@types/react': '*' @@ -736,8 +1199,13 @@ packages: peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@types/react': 18.0.27 + react: 18.2.0 + dev: false - '@radix-ui/react-compose-refs@1.1.0': + /@radix-ui/react-compose-refs@1.1.0(@types/react@18.0.27)(react@18.2.0): resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} peerDependencies: '@types/react': '*' @@ -745,8 +1213,12 @@ packages: peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@types/react': 18.0.27 + react: 18.2.0 + dev: false - '@radix-ui/react-context@1.0.1': + /@radix-ui/react-context@1.0.1(@types/react@18.0.27)(react@18.2.0): resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} peerDependencies: '@types/react': '*' @@ -754,8 +1226,13 @@ packages: peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@types/react': 18.0.27 + react: 18.2.0 + dev: false - '@radix-ui/react-context@1.1.0': + /@radix-ui/react-context@1.1.0(@types/react@18.0.27)(react@18.2.0): resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==} peerDependencies: '@types/react': '*' @@ -763,8 +1240,12 @@ packages: peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@types/react': 18.0.27 + react: 18.2.0 + dev: false - '@radix-ui/react-dialog@1.0.5': + /@radix-ui/react-dialog@1.0.5(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==} peerDependencies: '@types/react': '*' @@ -776,8 +1257,28 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.0.27 + aria-hidden: 1.2.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.0.27)(react@18.2.0) + dev: false - '@radix-ui/react-direction@1.0.1': + /@radix-ui/react-direction@1.0.1(@types/react@18.0.27)(react@18.2.0): resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} peerDependencies: '@types/react': '*' @@ -785,8 +1286,13 @@ packages: peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@types/react': 18.0.27 + react: 18.2.0 + dev: false - '@radix-ui/react-dismissable-layer@1.0.5': + /@radix-ui/react-dismissable-layer@1.0.5(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} peerDependencies: '@types/react': '*' @@ -798,8 +1304,19 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-dismissable-layer@1.1.0': + /@radix-ui/react-dismissable-layer@1.1.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==} peerDependencies: '@types/react': '*' @@ -811,8 +1328,18 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-dropdown-menu@2.0.6': + /@radix-ui/react-dropdown-menu@2.0.6(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==} peerDependencies: '@types/react': '*' @@ -824,8 +1351,21 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-menu': 2.0.6(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-focus-guards@1.0.1': + /@radix-ui/react-focus-guards@1.0.1(@types/react@18.0.27)(react@18.2.0): resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} peerDependencies: '@types/react': '*' @@ -833,8 +1373,13 @@ packages: peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@types/react': 18.0.27 + react: 18.2.0 + dev: false - '@radix-ui/react-focus-guards@1.1.0': + /@radix-ui/react-focus-guards@1.1.0(@types/react@18.0.27)(react@18.2.0): resolution: {integrity: sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==} peerDependencies: '@types/react': '*' @@ -842,8 +1387,12 @@ packages: peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@types/react': 18.0.27 + react: 18.2.0 + dev: false - '@radix-ui/react-focus-scope@1.0.4': + /@radix-ui/react-focus-scope@1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} peerDependencies: '@types/react': '*' @@ -855,8 +1404,17 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-focus-scope@1.1.0': + /@radix-ui/react-focus-scope@1.1.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==} peerDependencies: '@types/react': '*' @@ -868,8 +1426,16 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-id@1.0.1': + /@radix-ui/react-id@1.0.1(@types/react@18.0.27)(react@18.2.0): resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} peerDependencies: '@types/react': '*' @@ -877,8 +1443,14 @@ packages: peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + dev: false - '@radix-ui/react-id@1.1.0': + /@radix-ui/react-id@1.1.0(@types/react@18.0.27)(react@18.2.0): resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} peerDependencies: '@types/react': '*' @@ -886,8 +1458,13 @@ packages: peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + dev: false - '@radix-ui/react-label@2.0.2': + /@radix-ui/react-label@2.0.2(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-N5ehvlM7qoTLx7nWPodsPYPgMzA5WM8zZChQg8nyFJKnDO5WHdba1vv5/H6IO5LtJMfD2Q3wh1qHFGNtK0w3bQ==} peerDependencies: '@types/react': '*' @@ -899,8 +1476,15 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-menu@2.0.6': + /@radix-ui/react-menu@2.0.6(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==} peerDependencies: '@types/react': '*' @@ -912,8 +1496,32 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.0.27 + aria-hidden: 1.2.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.0.27)(react@18.2.0) + dev: false - '@radix-ui/react-popover@1.1.1': + /@radix-ui/react-popover@1.1.1(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-3y1A3isulwnWhvTTwmIreiB8CF4L+qRjZnK1wYLO7pplddzXKby/GnZ2M7OZY3qgnl6p9AodUIHRYGXNah8Y7g==} peerDependencies: '@types/react': '*' @@ -925,8 +1533,28 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.1.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.1.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-popper': 1.2.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.1.1(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.1.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.0.27 + aria-hidden: 1.2.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.7(@types/react@18.0.27)(react@18.2.0) + dev: false - '@radix-ui/react-popper@1.1.3': + /@radix-ui/react-popper@1.1.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==} peerDependencies: '@types/react': '*' @@ -938,21 +1566,52 @@ packages: optional: true '@types/react-dom': optional: true - - '@radix-ui/react-popper@1.2.0': - resolution: {integrity: sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + dependencies: + '@babel/runtime': 7.23.7 + '@floating-ui/react-dom': 2.0.2(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-arrow': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-rect': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/rect': 1.0.1 + '@types/react': 18.0.27 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-popper@1.2.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true + dependencies: + '@floating-ui/react-dom': 2.0.2(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-arrow': 1.1.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-rect': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/rect': 1.1.0 + '@types/react': 18.0.27 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-portal@1.0.4': + /@radix-ui/react-portal@1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} peerDependencies: '@types/react': '*' @@ -964,8 +1623,15 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-portal@1.1.1': + /@radix-ui/react-portal@1.1.1(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==} peerDependencies: '@types/react': '*' @@ -977,8 +1643,15 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-presence@1.0.1': + /@radix-ui/react-presence@1.0.1(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} peerDependencies: '@types/react': '*' @@ -990,8 +1663,16 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-presence@1.1.0': + /@radix-ui/react-presence@1.1.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==} peerDependencies: '@types/react': '*' @@ -1003,8 +1684,15 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-primitive@1.0.3': + /@radix-ui/react-primitive@1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} peerDependencies: '@types/react': '*' @@ -1016,8 +1704,15 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-primitive@2.0.0': + /@radix-ui/react-primitive@2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} peerDependencies: '@types/react': '*' @@ -1029,8 +1724,14 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/react-slot': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-roving-focus@1.0.4': + /@radix-ui/react-roving-focus@1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} peerDependencies: '@types/react': '*' @@ -1042,8 +1743,23 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-select@2.0.0': + /@radix-ui/react-select@2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-RH5b7af4oHtkcHS7pG6Sgv5rk5Wxa7XI8W5gvB1N/yiuDGZxko1ynvOiVhFM7Cis2A8zxF9bTOUVbRDzPepe6w==} peerDependencies: '@types/react': '*' @@ -1055,8 +1771,35 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/number': 1.0.1 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.0.27 + aria-hidden: 1.2.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.0.27)(react@18.2.0) + dev: false - '@radix-ui/react-slot@1.0.2': + /@radix-ui/react-slot@1.0.2(@types/react@18.0.27)(react@18.2.0): resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} peerDependencies: '@types/react': '*' @@ -1064,8 +1807,14 @@ packages: peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + dev: false - '@radix-ui/react-slot@1.1.0': + /@radix-ui/react-slot@1.1.0(@types/react@18.0.27)(react@18.2.0): resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} peerDependencies: '@types/react': '*' @@ -1073,8 +1822,13 @@ packages: peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + dev: false - '@radix-ui/react-tabs@1.0.4': + /@radix-ui/react-tabs@1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-egZfYY/+wRNCflXNHx+dePvnz9FbmssDTJBtgRfDY7e8SE5oIo3Py2eCB1ckAbh1Q7cQ/6yJZThJ++sgbxibog==} peerDependencies: '@types/react': '*' @@ -1086,8 +1840,22 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-tooltip@1.0.7': + /@radix-ui/react-tooltip@1.0.7(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw==} peerDependencies: '@types/react': '*' @@ -1099,5284 +1867,257 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.0.27 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-use-callback-ref@1.0.1': + /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.0.27)(react@18.2.0): resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-callback-ref@1.1.0': - resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-controllable-state@1.0.1': - resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-controllable-state@1.1.0': - resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-escape-keydown@1.0.3': - resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-escape-keydown@1.1.0': - resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-layout-effect@1.0.1': - resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-layout-effect@1.1.0': - resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-previous@1.0.1': - resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-rect@1.0.1': - resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-rect@1.1.0': - resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-size@1.0.1': - resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-size@1.1.0': - resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-visually-hidden@1.0.3': - resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/rect@1.0.1': - resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} - - '@radix-ui/rect@1.1.0': - resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} - - '@react-email/render@0.0.12': - resolution: {integrity: sha512-S8WRv/PqECEi6x0QJBj0asnAb5GFtJaHlnByxLETLkgJjc76cxMYDH4r9wdbuJ4sjkcbpwP3LPnVzwS+aIjT7g==} - engines: {node: '>=18.0.0'} - - '@rollup/plugin-commonjs@24.0.0': - resolution: {integrity: sha512-0w0wyykzdyRRPHOb0cQt14mIBLujfAv6GgP6g8nvg/iBxEm112t3YPPq+Buqe2+imvElTka+bjNlJ/gB56TD8g==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.68.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/pluginutils@5.1.0': - resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rushstack/eslint-patch@1.6.1': - resolution: {integrity: sha512-UY+FGM/2jjMkzQLn8pxcHGMaVLh9aEitG3zY2CiY7XHdLiz3bZOwa6oDxNqEMv7zZkV+cj5DOdz0cQ1BP5Hjgw==} - - '@selderee/plugin-htmlparser2@0.11.0': - resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} - - '@sentry-internal/feedback@7.102.1': - resolution: {integrity: sha512-vY4hpLLMNLjICtWiizc7KeGbWOTUMGrF7C+9dPCztZww3CLgzWy9A7DvPj5hodRiYzpdRnAMl8yQnMFbYXh7bA==} - engines: {node: '>=12'} - - '@sentry-internal/replay-canvas@7.102.1': - resolution: {integrity: sha512-GUX4RWI10uRjdjeyvCLtAAhWRVqnAnG6+yNxWfqUQ3qMA7B7XxG43KT2UhSnulmErNzODQ6hA68rGPwwYeRIww==} - engines: {node: '>=12'} - - '@sentry-internal/tracing@7.102.1': - resolution: {integrity: sha512-RkFlFyAC0fQOvBbBqnq0CLmFW5m3JJz9pKbZd5vXPraWAlniKSb1bC/4DF9SlNx0FN1LWG+IU3ISdpzwwTeAGg==} - engines: {node: '>=8'} - - '@sentry/browser@7.102.1': - resolution: {integrity: sha512-7BOfPBiM7Kp6q/iy0JIbsBTxIASV+zWXByqqjuEMWGj3X2u4oRIfm3gv4erPU/l+CORQUVQZLSPGoIoM1gbB/A==} - engines: {node: '>=8'} - - '@sentry/cli@1.77.3': - resolution: {integrity: sha512-c3eDqcDRmy4TFz2bFU5Y6QatlpoBPPa8cxBooaS4aMQpnIdLYPF1xhyyiW0LQlDUNc3rRjNF7oN5qKoaRoMTQQ==} - engines: {node: '>= 8'} - hasBin: true - - '@sentry/core@7.102.1': - resolution: {integrity: sha512-QjY+LSP3du3J/C8x/FfEbRxgZgsWd0jfTJ4P7s9f219I1csK4OeBMC3UA1HwEa0pY/9OF6H/egW2CjOcMM5Pdg==} - engines: {node: '>=8'} - - '@sentry/integrations@7.102.1': - resolution: {integrity: sha512-Its3Ru6xCAqpaLE3cTxW/b91js2SIFoXa8LWtQDJ7tmTdwPAbT8Pij1F4bOhhaqLYbjLtCXGl/NR2cffsiRLww==} - engines: {node: '>=8'} - - '@sentry/nextjs@7.102.1': - resolution: {integrity: sha512-gOI/GD7DWhc3WucyYnepl8Nu5jmpa1YfR6jWDzTkPE2CV9zKK9zulTdqk+Aig9ch62SAmJOGkgejm5k9PE2XzQ==} - engines: {node: '>=8'} - peerDependencies: - next: ^10.0.8 || ^11.0 || ^12.0 || ^13.0 || ^14.0 - react: 16.x || 17.x || 18.x - webpack: '>= 4.0.0' - peerDependenciesMeta: - webpack: - optional: true - - '@sentry/node@7.102.1': - resolution: {integrity: sha512-mb3vmM3SGuCruckPiv/Vafeh89UQavTfpPFoU6Jwe6dSpQ39BO8fO8k8Zev+/nP6r/FKLtX17mJobErHECXsYw==} - engines: {node: '>=8'} - - '@sentry/react@7.102.1': - resolution: {integrity: sha512-X4j2DgbktlEifnd21YJKCayAmff5hnaS+9MNz9OonEwD0ARi0ks7bo0wtWHMjPK20992MO+JwczVg/1BXJYDdQ==} - engines: {node: '>=8'} - peerDependencies: - react: 15.x || 16.x || 17.x || 18.x - - '@sentry/replay@7.102.1': - resolution: {integrity: sha512-HR/j9dGIvbrId8fh8mQlODx7JrhRmawEd9e9P3laPtogWCg/5TI+XPb2VGSaXOX9VWtb/6Z2UjHsaGjgg6YcuA==} - engines: {node: '>=12'} - - '@sentry/types@7.102.1': - resolution: {integrity: sha512-htKorf3t/D0XYtM7foTcmG+rM47rDP6XdbvCcX5gBCuCYlzpM1vqCt2rl3FLktZC6TaIpFRJw1TLfx6m+x5jdA==} - engines: {node: '>=8'} - - '@sentry/utils@7.102.1': - resolution: {integrity: sha512-+8WcFjHVV/HROXSAwMuUzveElBFC43EiTG7SNEBNgOUeQzQVTmbUZXyTVgLrUmtoWqvnIxCacoLxtZo1o67kdg==} - engines: {node: '>=8'} - - '@sentry/vercel-edge@7.102.1': - resolution: {integrity: sha512-iB6KCSxrvO172VjfQHGiYpyXPKNbx6Cz01GA1YDByRiUSgSpAq0qAFRY4lvd736w5KX4s9hen+XmZ7Gmqj8Pag==} - engines: {node: '>=8'} - - '@sentry/webpack-plugin@1.21.0': - resolution: {integrity: sha512-x0PYIMWcsTauqxgl7vWUY6sANl+XGKtx7DCVnnY7aOIIlIna0jChTAPANTfA2QrK+VK+4I/4JxatCEZBnXh3Og==} - engines: {node: '>= 8'} - - '@slack/types@2.10.0': - resolution: {integrity: sha512-JXY9l49rf7dDgvfMZi0maFyugzGkvq0s5u+kDlD68WaRUhjZNLBDKZcsrycMsVVDFfyOK0R1UKkYGmy9Ph069Q==} - engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} - - '@slack/webhook@7.0.1': - resolution: {integrity: sha512-0Uj/GQ1H8nmeAVEx+7zcWb6/q/zsSOrlIaGi6zFnwgMSxjmV6xGsVwv8w6DaAdkUbtqa43v1cirWjySeZaCOIA==} - engines: {node: '>= 18', npm: '>= 8.6.0'} - - '@stripe/stripe-js@2.4.0': - resolution: {integrity: sha512-WFkQx1mbs2b5+7looI9IV1BLa3bIApuN3ehp9FP58xGg7KL9hCHDECgW3BwO9l9L+xBPVAD7Yjn1EhGe6EDTeA==} - - '@swc-jotai/react-refresh@0.1.0': - resolution: {integrity: sha512-CWV4W06GdfQo3cW3CoUM2fp7avH4Z/suR7SvECNJnQbr6Sa9U3p7o10nXjNv2zT6z09bbNUPM55HBw5Nwd24Iw==} - - '@swc/counter@0.1.3': - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - - '@swc/helpers@0.5.5': - resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} - - '@tootallnate/once@2.0.0': - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} - - '@tsconfig/node10@1.0.9': - resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} - - '@tsconfig/node12@1.0.11': - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - - '@tsconfig/node14@1.0.3': - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - - '@tsconfig/node16@1.0.4': - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - - '@types/caseless@0.12.5': - resolution: {integrity: sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==} - - '@types/debug@4.1.8': - resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} - - '@types/eslint-scope@3.7.7': - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - - '@types/eslint@8.56.0': - resolution: {integrity: sha512-FlsN0p4FhuYRjIxpbdXovvHQhtlG05O1GG/RNWvdAxTboR438IOTwmrY/vLA+Xfgg06BTkP045M3vpFwTMv1dg==} - - '@types/estree-jsx@1.0.3': - resolution: {integrity: sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==} - - '@types/estree@1.0.5': - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - - '@types/formidable@3.4.5': - resolution: {integrity: sha512-s7YPsNVfnsng5L8sKnG/Gbb2tiwwJTY1conOkJzTMRvJAlLFW1nEua+ADsJQu8N1c0oTHx9+d5nqg10WuT9gHQ==} - - '@types/hast@2.3.5': - resolution: {integrity: sha512-SvQi0L/lNpThgPoleH53cdjB3y9zpLlVjRbqB3rH8hx1jiRSBGAhyjV3H+URFjNVRqt2EdYNrbZE5IsGlNfpRg==} - - '@types/hast@3.0.0': - resolution: {integrity: sha512-SoytUJRuf68HXYqcXicQIhCrLQjqeYU2anikr4G3p3Iz+OZO5QDQpDj++gv+RenHsnUBwNZ2dumBArF8VLSk2Q==} - - '@types/json-schema@7.0.12': - resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} - - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - - '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - - '@types/mdast@4.0.3': - resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} - - '@types/minimist@1.2.2': - resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} - - '@types/ms@0.7.31': - resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} - - '@types/node@12.20.55': - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - - '@types/node@20.10.6': - resolution: {integrity: sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw==} - - '@types/node@20.5.6': - resolution: {integrity: sha512-Gi5wRGPbbyOTX+4Y2iULQ27oUPrefaB0PxGQJnfyWN3kvEDGM3mIB5M/gQLmitZf7A9FmLeaqxD3L1CXpm3VKQ==} - - '@types/normalize-package-data@2.4.1': - resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} - - '@types/papaparse@5.3.14': - resolution: {integrity: sha512-LxJ4iEFcpqc6METwp9f6BV6VVc43m6MfH0VqFosHvrUgfXiFe6ww7R3itkOQ+TCK6Y+Iv/+RnnvtRZnkc5Kc9g==} - - '@types/prismjs@1.26.0': - resolution: {integrity: sha512-ZTaqn/qSqUuAq1YwvOFQfVW1AR/oQJlLSZVustdjwI+GZ8kr0MSHBj0tsXPW1EqHubx50gtBEjbPGsdZwQwCjQ==} - - '@types/prop-types@15.7.5': - resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} - - '@types/react@18.0.27': - resolution: {integrity: sha512-3vtRKHgVxu3Jp9t718R9BuzoD4NcQ8YJ5XRzsSKxNDiDonD2MXIT1TmSkenxuCycZJoQT5d2vE8LwWJxBC1gmA==} - - '@types/request@2.48.12': - resolution: {integrity: sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==} - - '@types/scheduler@0.16.3': - resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} - - '@types/semver@7.5.1': - resolution: {integrity: sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==} - - '@types/tough-cookie@4.0.5': - resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} - - '@types/unist@2.0.8': - resolution: {integrity: sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==} - - '@types/unist@3.0.0': - resolution: {integrity: sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==} - - '@typeschema/core@0.13.2': - resolution: {integrity: sha512-pAt0MK249/9szYaoPuvzhSfOd3smrLhhwCCpUNB4onX32mRx5F3lzDIveIYGQkLYRq58xOX5sjoW+n72f/MLLw==} - peerDependencies: - '@types/json-schema': ^7.0.15 - peerDependenciesMeta: - '@types/json-schema': - optional: true - - '@typeschema/main@0.13.10': - resolution: {integrity: sha512-ArdFC4GbgdVWWgPKg2tymxx2KHMus3xZ8I2kHwqw/0P4FtWBXCmSNAiBqDtpoXXF8h9cbcm7fVpcs5ftoWT9+A==} - peerDependencies: - '@typeschema/arktype': 0.13.2 - '@typeschema/class-validator': 0.1.2 - '@typeschema/deepkit': 0.13.4 - '@typeschema/effect': 0.13.4 - '@typeschema/fastest-validator': 0.1.0 - '@typeschema/function': 0.13.2 - '@typeschema/io-ts': 0.13.3 - '@typeschema/joi': 0.13.3 - '@typeschema/json': 0.13.3 - '@typeschema/ow': 0.13.3 - '@typeschema/runtypes': 0.13.2 - '@typeschema/superstruct': 0.13.2 - '@typeschema/suretype': 0.1.0 - '@typeschema/typebox': 0.13.4 - '@typeschema/valibot': 0.13.5 - '@typeschema/valita': 0.1.0 - '@typeschema/vine': 0.1.0 - '@typeschema/yup': 0.13.3 - '@typeschema/zod': 0.13.3 - peerDependenciesMeta: - '@typeschema/arktype': - optional: true - '@typeschema/class-validator': - optional: true - '@typeschema/deepkit': - optional: true - '@typeschema/effect': - optional: true - '@typeschema/fastest-validator': - optional: true - '@typeschema/function': - optional: true - '@typeschema/io-ts': - optional: true - '@typeschema/joi': - optional: true - '@typeschema/json': - optional: true - '@typeschema/ow': - optional: true - '@typeschema/runtypes': - optional: true - '@typeschema/superstruct': - optional: true - '@typeschema/suretype': - optional: true - '@typeschema/typebox': - optional: true - '@typeschema/valibot': - optional: true - '@typeschema/valita': - optional: true - '@typeschema/vine': - optional: true - '@typeschema/yup': - optional: true - '@typeschema/zod': - optional: true - - '@typeschema/zod@0.13.3': - resolution: {integrity: sha512-p5Hs22WIKkM/vZTAvw5QOLSA0EJ6QBUsQMGUrXlYnTAE2LSR/F5MLsDUb18O6S5VxGjrzU7x3VIznD5qOafJRw==} - peerDependencies: - zod: ^3.22.4 - zod-to-json-schema: ^3.22.4 - peerDependenciesMeta: - zod: - optional: true - zod-to-json-schema: - optional: true - - '@typescript-eslint/eslint-plugin@7.14.1': - resolution: {integrity: sha512-aAJd6bIf2vvQRjUG3ZkNXkmBpN+J7Wd0mfQiiVCJMu9Z5GcZZdcc0j8XwN/BM97Fl7e3SkTXODSk4VehUv7CGw==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/parser@6.17.0': - resolution: {integrity: sha512-C4bBaX2orvhK+LlwrY8oWGmSl4WolCfYm513gEccdWZj0CwGadbIADb0FtVEcI+WzUyjyoBj2JRP8g25E6IB8A==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/parser@7.12.0': - resolution: {integrity: sha512-dm/J2UDY3oV3TKius2OUZIFHsomQmpHtsV0FTh1WO8EKgHLQ1QCADUqscPgTpU+ih1e21FQSRjXckHn3txn6kQ==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/scope-manager@6.17.0': - resolution: {integrity: sha512-RX7a8lwgOi7am0k17NUO0+ZmMOX4PpjLtLRgLmT1d3lBYdWH4ssBUbwdmc5pdRX8rXon8v9x8vaoOSpkHfcXGA==} - engines: {node: ^16.0.0 || >=18.0.0} - - '@typescript-eslint/scope-manager@7.12.0': - resolution: {integrity: sha512-itF1pTnN6F3unPak+kutH9raIkL3lhH1YRPGgt7QQOh43DQKVJXmWkpb+vpc/TiDHs6RSd9CTbDsc/Y+Ygq7kg==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/scope-manager@7.14.1': - resolution: {integrity: sha512-gPrFSsoYcsffYXTOZ+hT7fyJr95rdVe4kGVX1ps/dJ+DfmlnjFN/GcMxXcVkeHDKqsq6uAcVaQaIi3cFffmAbA==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/type-utils@7.14.1': - resolution: {integrity: sha512-/MzmgNd3nnbDbOi3LfasXWWe292+iuo+umJ0bCCMCPc1jLO/z2BQmWUUUXvXLbrQey/JgzdF/OV+I5bzEGwJkQ==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/types@6.17.0': - resolution: {integrity: sha512-qRKs9tvc3a4RBcL/9PXtKSehI/q8wuU9xYJxe97WFxnzH8NWWtcW3ffNS+EWg8uPvIerhjsEZ+rHtDqOCiH57A==} - engines: {node: ^16.0.0 || >=18.0.0} - - '@typescript-eslint/types@7.12.0': - resolution: {integrity: sha512-o+0Te6eWp2ppKY3mLCU+YA9pVJxhUJE15FV7kxuD9jgwIAa+w/ycGJBMrYDTpVGUM/tgpa9SeMOugSabWFq7bg==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/types@7.14.1': - resolution: {integrity: sha512-mL7zNEOQybo5R3AavY+Am7KLv8BorIv7HCYS5rKoNZKQD9tsfGUpO4KdAn3sSUvTiS4PQkr2+K0KJbxj8H9NDg==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/typescript-estree@6.17.0': - resolution: {integrity: sha512-gVQe+SLdNPfjlJn5VNGhlOhrXz4cajwFd5kAgWtZ9dCZf4XJf8xmgCTLIqec7aha3JwgLI2CK6GY1043FRxZwg==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/typescript-estree@7.12.0': - resolution: {integrity: sha512-5bwqLsWBULv1h6pn7cMW5dXX/Y2amRqLaKqsASVwbBHMZSnHqE/HN4vT4fE0aFsiwxYvr98kqOWh1a8ZKXalCQ==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/typescript-estree@7.14.1': - resolution: {integrity: sha512-k5d0VuxViE2ulIO6FbxxSZaxqDVUyMbXcidC8rHvii0I56XZPv8cq+EhMns+d/EVIL41sMXqRbK3D10Oza1bbA==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/utils@7.14.1': - resolution: {integrity: sha512-CMmVVELns3nak3cpJhZosDkm63n+DwBlDX8g0k4QUa9BMnF+lH2lr3d130M1Zt1xxmB3LLk3NV7KQCq86ZBBhQ==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - - '@typescript-eslint/visitor-keys@6.17.0': - resolution: {integrity: sha512-H6VwB/k3IuIeQOyYczyyKN8wH6ed8EwliaYHLxOIhyF0dYEIsN8+Bk3GE19qafeMKyZJJHP8+O1HiFhFLUNKSg==} - engines: {node: ^16.0.0 || >=18.0.0} - - '@typescript-eslint/visitor-keys@7.12.0': - resolution: {integrity: sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/visitor-keys@7.14.1': - resolution: {integrity: sha512-Crb+F75U1JAEtBeQGxSKwI60hZmmzaqA3z9sYsVm8X7W5cwLEm5bRe0/uXS6+MR/y8CVpKSR/ontIAIEPFcEkA==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@uiw/color-convert@2.0.8': - resolution: {integrity: sha512-yh0Q91FwTNCl5rMpNSQSlpazMz65V6V0LMIyssHk0ris4af9xQi+t01snLP+Dbjbk4HaSy7b8AptTP3NudggdQ==} - peerDependencies: - '@babel/runtime': '>=7.19.0' - - '@uiw/copy-to-clipboard@1.0.15': - resolution: {integrity: sha512-1bbGZ3T+SGmA07BoVPK4UCUDcowDN/moctviJGQexfOc9qL8TMLDQPr7mTPvDKhgJkgnlKkAQNFU8PiarIi9sQ==} - - '@uiw/react-color-alpha@2.0.8': - resolution: {integrity: sha512-QppWrb7QBTIi0xZ6Q818tSi0LpZfkB323Q4F36a/vH4chzqOJAj6aCFM18d1CqjcLT4R1gnDhBSlW2dVD/4YoQ==} - peerDependencies: - '@babel/runtime': '>=7.19.0' - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@uiw/react-color-editable-input-rgba@2.0.8': - resolution: {integrity: sha512-3bPmbyc1u6T++ap0pKl9w+x4+llDtLAuXY41NgNEUKhd63rMZjnVbVnFnzvIUDL92JRB5m+a+3Rr3n1TheeFew==} - peerDependencies: - '@babel/runtime': '>=7.19.0' - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@uiw/react-color-editable-input@2.0.8': - resolution: {integrity: sha512-WpehDwnIRTIOUYAnchSVjZu+TwJjA1vCiK+tMkgta/Nu2qI3bLLPTwKmIF1cQgcrEEKvfgaqOD3yP7BvjjKFJA==} - peerDependencies: - '@babel/runtime': '>=7.19.0' - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@uiw/react-color-hue@2.0.8': - resolution: {integrity: sha512-h3EKzc87/leSq94dBchAqN+0liPQZismqjlGOM2LsZadGqgn9pO4+3+SlO4kD5IdQIybCRXmK3zVUVGDdxOIYg==} - peerDependencies: - '@babel/runtime': '>=7.19.0' - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@uiw/react-color-saturation@2.0.8': - resolution: {integrity: sha512-cBZ5Al4YrHOYTcWiRQzjYiT5Llgv7pnFEZPy07dQ5NSL+FlzQmDfjVmQynXUqYG3IqQrx0Md4jJLLhhLP9Q5MQ==} - peerDependencies: - '@babel/runtime': '>=7.19.0' - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@uiw/react-color-sketch@2.0.8': - resolution: {integrity: sha512-4b4mDMJHTsxuab75bmcH5OvDOvcam8irkYapIbcVLJzrBurWiuxflMdmsht37hKegPOsRp6m0NONfEGcUtg1fQ==} - peerDependencies: - '@babel/runtime': '>=7.19.0' - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@uiw/react-color-swatch@2.0.8': - resolution: {integrity: sha512-ZURW9tsTNv8ea5TJqYvN2gqoljrhtjPpzs4UC9C7vfI6JvDdjAzIyMwRwRVCftekOtvLvdGZzXYXbGxPF4BvTQ==} - peerDependencies: - '@babel/runtime': '>=7.19.0' - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@uiw/react-drag-event-interactive@2.0.8': - resolution: {integrity: sha512-Z8awDfUV7970Q6GfJmx6x7fx5KeHn6RPinQVRYRAnKS7QP6XgQOIvVn8bYKe5vd4vQeBbzIVYYySjYRWjA5heA==} - peerDependencies: - '@babel/runtime': '>=7.19.0' - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@uiw/react-markdown-preview@5.0.6': - resolution: {integrity: sha512-zd+T02xFhy6K75XPdkF3RRAWKzVzJctZ6CCpFDcn/CgdQlEj8Z+Z9k11nkPspzbznB43UYdoe4qQvnjgG6TfZw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@uiw/react-md-editor@4.0.3': - resolution: {integrity: sha512-TvChXxUBUS21Rk0cVC0aeJoWcFZ/G0xN/Hc4Lv9FGFK8wPOHESd7Bcq4jNRHJ6lEzE/+d4Wh00lEVNKj+rQyBw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@ungap/structured-clone@1.2.0': - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - - '@webassemblyjs/ast@1.11.6': - resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} - - '@webassemblyjs/floating-point-hex-parser@1.11.6': - resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} - - '@webassemblyjs/helper-api-error@1.11.6': - resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} - - '@webassemblyjs/helper-buffer@1.11.6': - resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} - - '@webassemblyjs/helper-numbers@1.11.6': - resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} - - '@webassemblyjs/helper-wasm-bytecode@1.11.6': - resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} - - '@webassemblyjs/helper-wasm-section@1.11.6': - resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} - - '@webassemblyjs/ieee754@1.11.6': - resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} - - '@webassemblyjs/leb128@1.11.6': - resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} - - '@webassemblyjs/utf8@1.11.6': - resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} - - '@webassemblyjs/wasm-edit@1.11.6': - resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} - - '@webassemblyjs/wasm-gen@1.11.6': - resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} - - '@webassemblyjs/wasm-opt@1.11.6': - resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} - - '@webassemblyjs/wasm-parser@1.11.6': - resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} - - '@webassemblyjs/wast-printer@1.11.6': - resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} - - '@xtuc/ieee754@1.2.0': - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - - '@xtuc/long@4.2.2': - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - - abbrev@2.0.0: - resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} - - acorn-import-assertions@1.9.0: - resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} - peerDependencies: - acorn: ^8 - - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn-walk@8.3.0: - resolution: {integrity: sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==} - engines: {node: '>=0.4.0'} - - acorn@8.10.0: - resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} - engines: {node: '>=0.4.0'} - hasBin: true - - agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - - agent-base@7.1.0: - resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} - engines: {node: '>= 14'} - - ajv-formats@2.1.1: - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - - ajv-keywords@3.5.2: - resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} - peerDependencies: - ajv: ^6.9.1 - - ajv-keywords@5.1.0: - resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} - peerDependencies: - ajv: ^8.8.2 - - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - - ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} - - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - - ansi-escapes@5.0.0: - resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} - engines: {node: '>=12'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - - arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - aria-hidden@1.2.3: - resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==} - engines: {node: '>=10'} - - aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - - array-buffer-byte-length@1.0.0: - resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} - - array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} - engines: {node: '>= 0.4'} - - array-includes@3.1.7: - resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} - engines: {node: '>= 0.4'} - - array-includes@3.1.8: - resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} - engines: {node: '>= 0.4'} - - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - - array.prototype.findlast@1.2.5: - resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} - engines: {node: '>= 0.4'} - - array.prototype.findlastindex@1.2.3: - resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} - engines: {node: '>= 0.4'} - - array.prototype.flat@1.3.2: - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} - engines: {node: '>= 0.4'} - - array.prototype.flatmap@1.3.2: - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} - engines: {node: '>= 0.4'} - - array.prototype.toreversed@1.1.2: - resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} - - array.prototype.tosorted@1.1.4: - resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} - engines: {node: '>= 0.4'} - - arraybuffer.prototype.slice@1.0.2: - resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} - engines: {node: '>= 0.4'} - - arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} - engines: {node: '>= 0.4'} - - arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - - arrify@2.0.1: - resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} - engines: {node: '>=8'} - - asap@2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - - ast-types-flow@0.0.8: - resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} - - async-retry@1.3.3: - resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} - - asynciterator.prototype@1.0.0: - resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} - - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - - attr-accept@2.2.2: - resolution: {integrity: sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==} - engines: {node: '>=4'} - - autoprefixer@10.4.16: - resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - - available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} - engines: {node: '>= 0.4'} - - available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} - - axe-core@4.7.0: - resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} - engines: {node: '>=4'} - - axios@1.6.2: - resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==} - - axobject-query@3.2.1: - resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} - - babel-loader@9.1.3: - resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} - engines: {node: '>= 14.15.0'} - peerDependencies: - '@babel/core': ^7.12.0 - webpack: '>=5' - - babel-plugin-transform-remove-imports@1.7.0: - resolution: {integrity: sha512-gprmWf6ry5qrnxMyiDaxZpXzZJP6R9FRA+p0AImLIWRmSEGtlKcFprHKeGMZYkII9rJR6Q1hYou+n1fk6rWf2g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - bail@2.0.2: - resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - bcp-47-match@2.0.3: - resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} - - better-path-resolve@1.0.0: - resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} - engines: {node: '>=4'} - - bignumber.js@9.1.2: - resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} - - binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - - boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - - breakword@1.0.6: - resolution: {integrity: sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==} - - browserslist@4.21.10: - resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - browserslist@4.22.2: - resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - buffer-equal-constant-time@1.0.1: - resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} - - call-bind@1.0.5: - resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} - - call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} - - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - - camelcase-keys@6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} - engines: {node: '>=8'} - - camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - - caniuse-lite@1.0.30001572: - resolution: {integrity: sha512-1Pbh5FLmn5y4+QhNyJE9j3/7dK44dGB83/ZMjv/qJk86TvDbjk0LosiZo0i0WB0Vx607qMX9jYrn1VLHCkN4rw==} - - caniuse-lite@1.0.30001587: - resolution: {integrity: sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA==} - - ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - - chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - - character-entities-html4@2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - - character-entities-legacy@3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - - character-entities@2.0.2: - resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - - character-reference-invalid@2.0.1: - resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - - chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - - chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - - chrome-trace-event@1.0.3: - resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} - engines: {node: '>=6.0'} - - ci-info@3.8.0: - resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} - engines: {node: '>=8'} - - class-variance-authority@0.7.0: - resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} - - cli-cursor@4.0.0: - resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - cli-truncate@3.1.0: - resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - client-only@0.0.1: - resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - - cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} - - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - - clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - - clsx@2.0.0: - resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} - engines: {node: '>=6'} - - clsx@2.1.0: - resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} - engines: {node: '>=6'} - - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - - comma-separated-tokens@2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - - commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} - - commander@11.1.0: - resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} - engines: {node: '>=16'} - - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - - common-path-prefix@3.0.0: - resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} - - commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - - compressible@2.0.18: - resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} - engines: {node: '>= 0.6'} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - config-chain@1.1.13: - resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} - - confusing-browser-globals@1.0.11: - resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} - - convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - - cookie@0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} - engines: {node: '>= 0.6'} - - create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - - cross-spawn@5.1.0: - resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} - - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - - css-selector-parser@3.0.4: - resolution: {integrity: sha512-pnmS1dbKsz6KA4EW4BznyPL2xxkNDRg62hcD0v8g6DEw2W7hxOln5M953jsp9hmw5Dg57S6o/A8GOn37mbAgcQ==} - - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - - csstype@3.1.2: - resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} - - csv-generate@3.4.3: - resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} - - csv-parse@4.16.3: - resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} - - csv-stringify@5.6.5: - resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} - - csv@5.5.3: - resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} - engines: {node: '>= 0.1.90'} - - damerau-levenshtein@1.0.8: - resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - - data-view-buffer@1.0.1: - resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} - engines: {node: '>= 0.4'} - - data-view-byte-length@1.0.1: - resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} - engines: {node: '>= 0.4'} - - data-view-byte-offset@1.0.0: - resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} - engines: {node: '>= 0.4'} - - debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decamelize-keys@1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} - engines: {node: '>=0.10.0'} - - decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - - decode-named-character-reference@1.0.2: - resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} - - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - - deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - - defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - - define-data-property@1.1.1: - resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} - engines: {node: '>= 0.4'} - - define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - - define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - - dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - - detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - - detect-node-es@1.1.0: - resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} - - devlop@1.1.0: - resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - - dezalgo@1.0.4: - resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} - - didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - - diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - - direction@2.0.1: - resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} - hasBin: true - - dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - - doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - - dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - - domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - - domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - - domutils@3.1.0: - resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} - - dotenv@16.4.5: - resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} - engines: {node: '>=12'} - - duplexify@4.1.2: - resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==} - - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - ecdsa-sig-formatter@1.0.11: - resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} - - editorconfig@1.0.4: - resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==} - engines: {node: '>=14'} - hasBin: true - - electron-to-chromium@1.4.503: - resolution: {integrity: sha512-LF2IQit4B0VrUHFeQkWhZm97KuJSGF2WJqq1InpY+ECpFRkXd8yTIaTtJxsO0OKDmiBYwWqcrNaXOurn2T2wiA==} - - electron-to-chromium@1.4.616: - resolution: {integrity: sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==} - - emoji-mart@5.6.0: - resolution: {integrity: sha512-eJp3QRe79pjwa+duv+n7+5YsNhRcMl812EcFVwrnRvYKoNPoQb5qxU8DG6Bgwji0akHdp6D4Ln6tYLG58MFSow==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - - enhanced-resolve@5.15.0: - resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} - engines: {node: '>=10.13.0'} - - enquirer@2.4.1: - resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} - engines: {node: '>=8.6'} - - ent@2.2.0: - resolution: {integrity: sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==} - - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - - es-abstract@1.22.3: - resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} - engines: {node: '>= 0.4'} - - es-abstract@1.23.3: - resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} - engines: {node: '>= 0.4'} - - es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - es-iterator-helpers@1.0.15: - resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} - - es-iterator-helpers@1.0.19: - resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} - engines: {node: '>= 0.4'} - - es-module-lexer@1.4.1: - resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} - - es-object-atoms@1.0.0: - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} - engines: {node: '>= 0.4'} - - es-set-tostringtag@2.0.2: - resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} - engines: {node: '>= 0.4'} - - es-set-tostringtag@2.0.3: - resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} - engines: {node: '>= 0.4'} - - es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} - - es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} - - escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} - - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - escape-string-regexp@5.0.0: - resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} - engines: {node: '>=12'} - - eslint-config-airbnb-base@15.0.0: - resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - eslint: ^7.32.0 || ^8.2.0 - eslint-plugin-import: ^2.25.2 - - eslint-config-airbnb-typescript@18.0.0: - resolution: {integrity: sha512-oc+Lxzgzsu8FQyFVa4QFaVKiitTYiiW3frB9KYW5OWdPrqFc7FzxgB20hP4cHMlr+MBzGcLl3jnCOVOydL9mIg==} - peerDependencies: - '@typescript-eslint/eslint-plugin': ^7.0.0 - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 - - eslint-config-airbnb@19.0.4: - resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==} - engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^7.32.0 || ^8.2.0 - eslint-plugin-import: ^2.25.3 - eslint-plugin-jsx-a11y: ^6.5.1 - eslint-plugin-react: ^7.28.0 - eslint-plugin-react-hooks: ^4.3.0 - - eslint-config-next@14.1.0: - resolution: {integrity: sha512-SBX2ed7DoRFXC6CQSLc/SbLY9Ut6HxNB2wPTcoIWjUMd7aF7O/SIE7111L8FdZ9TXsNV4pulUDnfthpyPtbFUg==} - peerDependencies: - eslint: ^7.23.0 || ^8.0.0 - typescript: '>=3.3.1' - peerDependenciesMeta: - typescript: - optional: true - - eslint-config-prettier@9.0.0: - resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - - eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - - eslint-import-resolver-typescript@3.6.1: - resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: '*' - eslint-plugin-import: '*' - - eslint-module-utils@2.8.0: - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - - eslint-plugin-import@2.29.1: - resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - - eslint-plugin-jsx-a11y@6.8.0: - resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - - eslint-plugin-playwright@1.6.2: - resolution: {integrity: sha512-mraN4Em3b5jLt01q7qWPyLg0Q5v3KAWfJSlEWwldyUXoa7DSPrBR4k6B6LROLqipsG8ndkwWMdjl1Ffdh15tag==} - engines: {node: '>=16.6.0'} - peerDependencies: - eslint: '>=8.40.0' - eslint-plugin-jest: '>=25' - peerDependenciesMeta: - eslint-plugin-jest: - optional: true - - eslint-plugin-prettier@5.1.3: - resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - '@types/eslint': '>=8.0.0' - eslint: '>=8.0.0' - eslint-config-prettier: '*' - prettier: '>=3.0.0' - peerDependenciesMeta: - '@types/eslint': - optional: true - eslint-config-prettier: - optional: true - - eslint-plugin-react-hooks@4.6.2: - resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - - eslint-plugin-react@7.34.2: - resolution: {integrity: sha512-2HCmrU+/JNigDN6tg55cRDKCQWicYAPB38JGSFDQt95jDm8rrvSUo7YPkOIm5l6ts1j1zCvysNcasvfTMQzUOw==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - - eslint-plugin-tailwindcss@3.17.3: - resolution: {integrity: sha512-DVMVVUFQ+lPraRSuUk2I41XMnusXT6b3WaQZYlUHduULnERaqe9sNfmpRY1IyxlzmKoQxSbZ8IHRhl9ePo8PeA==} - engines: {node: '>=18.12.0'} - peerDependencies: - tailwindcss: ^3.4.0 - - eslint-plugin-unused-imports@4.0.0: - resolution: {integrity: sha512-mzM+y2B7XYpQryVa1usT+Y/BdNAtAZiXzwpSyDCboFoJN/LZRN67TNvQxKtuTK/Aplya3sLNQforiubzPPaIcQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/eslint-plugin': '8' - eslint: '9' - peerDependenciesMeta: - '@typescript-eslint/eslint-plugin': - optional: true - - eslint-rule-composer@0.3.0: - resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} - engines: {node: '>=4.0.0'} - - eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - - eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint@8.57.0: - resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - - esm@3.2.25: - resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} - engines: {node: '>=6'} - - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - - esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - estree-util-is-identifier-name@3.0.0: - resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} - - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - - execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} - - extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - - extendable-error@0.1.7: - resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} - - external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - - fast-xml-parser@4.3.4: - resolution: {integrity: sha512-utnwm92SyozgA3hhH2I8qldf2lBqm6qHOICawRNRFu1qMe3+oqr+GcXjGqTmXTMGE5T4eC03kr/rlh5C1IRdZA==} - hasBin: true - - fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} - - file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - - file-selector@0.6.0: - resolution: {integrity: sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==} - engines: {node: '>= 12'} - - fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - - find-cache-dir@4.0.0: - resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} - engines: {node: '>=14.16'} - - find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - find-up@6.3.0: - resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - find-yarn-workspace-root2@1.2.16: - resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} - - flat-cache@3.1.0: - resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} - engines: {node: '>=12.0.0'} - - flatted@3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - - follow-redirects@1.15.2: - resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - - for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - - foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} - engines: {node: '>=14'} - - form-data@2.5.1: - resolution: {integrity: sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==} - engines: {node: '>= 0.12'} - - form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} - - formidable@3.5.1: - resolution: {integrity: sha512-WJWKelbRHN41m5dumb0/k8TeAx7Id/y3a+Z7QfhxP/htI9Js5zYaEDtG8uMgG0vM0lOlqnmjE99/kfpOYi/0Og==} - - fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - - fs-extra@7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} - - fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} - engines: {node: '>= 0.4'} - - functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - - gaxios@6.2.0: - resolution: {integrity: sha512-H6+bHeoEAU5D6XNc6mPKeN5dLZqEDs9Gpk6I+SZBEzK5So58JVrHPmevNi35fRl1J9Y5TaeLW0kYx3pCJ1U2mQ==} - engines: {node: '>=14'} - - gcp-metadata@6.1.0: - resolution: {integrity: sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==} - engines: {node: '>=14'} - - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-intrinsic@1.2.2: - resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} - - get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} - - get-nonce@1.0.1: - resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} - engines: {node: '>=6'} - - get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - - get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} - engines: {node: '>= 0.4'} - - get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} - engines: {node: '>= 0.4'} - - get-tsconfig@4.7.2: - resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} - - github-slugger@2.0.0: - resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - - glob@10.3.10: - resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - - glob@7.1.6: - resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} - - glob@7.1.7: - resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} - - glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - - globals@13.21.0: - resolution: {integrity: sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==} - engines: {node: '>=8'} - - globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - - globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} - engines: {node: '>= 0.4'} - - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - - google-auth-library@9.6.3: - resolution: {integrity: sha512-4CacM29MLC2eT9Cey5GDVK4Q8t+MMp8+OEdOaqD9MG6b0dOyLORaaeJMPQ7EESVgm/+z5EKYyFLxgzBJlJgyHQ==} - engines: {node: '>=14'} - - gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - - gtoken@7.1.0: - resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} - engines: {node: '>=14.0.0'} - - hard-rejection@2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} - - has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - has-property-descriptors@1.0.1: - resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} - - has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - - has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} - engines: {node: '>= 0.4'} - - has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} - - has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - - hasown@2.0.0: - resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} - engines: {node: '>= 0.4'} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - hast-util-from-html@2.0.1: - resolution: {integrity: sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==} - - hast-util-from-parse5@7.1.2: - resolution: {integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==} - - hast-util-from-parse5@8.0.1: - resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} - - hast-util-has-property@3.0.0: - resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} - - hast-util-heading-rank@3.0.0: - resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} - - hast-util-is-element@3.0.0: - resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} - - hast-util-parse-selector@3.1.1: - resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} - - hast-util-parse-selector@4.0.0: - resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} - - hast-util-raw@9.0.1: - resolution: {integrity: sha512-5m1gmba658Q+lO5uqL5YNGQWeh1MYWZbZmWrM5lncdcuiXuo5E2HT/CIOp0rLF8ksfSwiCVJ3twlgVRyTGThGA==} - - hast-util-sanitize@5.0.0: - resolution: {integrity: sha512-L0g/qhOA82zG2hA3O29hnlv4mLU7YVVT1if5JZSr2tKO1ywkQbuMDcN05btgX0HtpqDXQniAM0ar0K+Lv4MDBQ==} - - hast-util-select@6.0.2: - resolution: {integrity: sha512-hT/SD/d/Meu+iobvgkffo1QecV8WeKWxwsNMzcTJsKw1cKTQKSR/7ArJeURLNJF9HDjp9nVoORyNNJxrvBye8Q==} - - hast-util-to-html@9.0.0: - resolution: {integrity: sha512-IVGhNgg7vANuUA2XKrT6sOIIPgaYZnmLx3l/CCOAK0PtgfoHrZwX7jCSYyFxHTrGmC6S9q8aQQekjp4JPZF+cw==} - - hast-util-to-jsx-runtime@2.3.0: - resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} - - hast-util-to-parse5@8.0.0: - resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} - - hast-util-to-string@2.0.0: - resolution: {integrity: sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==} - - hast-util-to-string@3.0.0: - resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} - - hast-util-whitespace@3.0.0: - resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - - hastscript@7.2.0: - resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} - - hastscript@8.0.0: - resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} - - hexoid@1.0.0: - resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==} - engines: {node: '>=8'} - - hoist-non-react-statics@3.3.2: - resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} - - hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - - html-to-text@9.0.5: - resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} - engines: {node: '>=14'} - - html-url-attributes@3.0.0: - resolution: {integrity: sha512-/sXbVCWayk6GDVg3ctOX6nxaVj7So40FcFAnWlWGNAB1LpYKcV5Cd10APjPjW80O7zYW2MsjBV4zZ7IZO5fVow==} - - html-void-elements@3.0.0: - resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - - htmlparser2@8.0.2: - resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} - - http-proxy-agent@5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} - - https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - - https-proxy-agent@7.0.2: - resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} - engines: {node: '>= 14'} - - human-id@1.0.2: - resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} - - human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - - husky@9.0.11: - resolution: {integrity: sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==} - engines: {node: '>=18'} - hasBin: true - - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - - ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} - engines: {node: '>= 4'} - - ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} - engines: {node: '>= 4'} - - immediate@3.0.6: - resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - - inline-style-parser@0.2.2: - resolution: {integrity: sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==} - - internal-slot@1.0.6: - resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} - engines: {node: '>= 0.4'} - - internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} - engines: {node: '>= 0.4'} - - invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} - - is-alphabetical@2.0.1: - resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} - - is-alphanumerical@2.0.1: - resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} - - is-array-buffer@3.0.2: - resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} - - is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} - engines: {node: '>= 0.4'} - - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - - is-async-function@2.0.0: - resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} - engines: {node: '>= 0.4'} - - is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} - - is-buffer@2.0.5: - resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} - engines: {node: '>=4'} - - is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - - is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} - - is-data-view@1.0.1: - resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} - engines: {node: '>= 0.4'} - - is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} - - is-decimal@2.0.1: - resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-finalizationregistry@1.0.2: - resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-fullwidth-code-point@4.0.0: - resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} - engines: {node: '>=12'} - - is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-hexadecimal@2.0.1: - resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - - is-map@2.0.2: - resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} - - is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} - engines: {node: '>= 0.4'} - - is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - - is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - - is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} - - is-plain-obj@4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} - engines: {node: '>=12'} - - is-reference@1.2.1: - resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} - - is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - - is-set@2.0.2: - resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} - - is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} - - is-shared-array-buffer@1.0.3: - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} - engines: {node: '>= 0.4'} - - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - - is-subdir@1.2.0: - resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} - engines: {node: '>=4'} - - is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - - is-typed-array@1.1.12: - resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} - engines: {node: '>= 0.4'} - - is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} - - is-weakmap@2.0.1: - resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} - - is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - - is-weakset@2.0.2: - resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} - - is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - - isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - iterator.prototype@1.1.2: - resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} - - jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} - - jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} - - jiti@1.19.3: - resolution: {integrity: sha512-5eEbBDQT/jF1xg6l36P+mWGGoH9Spuy0PCdSr2dtWRDGC6ph/w9ZCL4lmESW8f8F7MwT3XKescfP0wnZWAKL9w==} - hasBin: true - - jose@4.15.5: - resolution: {integrity: sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==} - - jotai@2.6.4: - resolution: {integrity: sha512-RniwQPX4893YlNR1muOtyUGHYaTD1fhEN4qnOuZJSrDHj6xdEMrqlRSN/hCm2fshwk78ruecB/P2l+NCVWe6TQ==} - engines: {node: '>=12.20.0'} - peerDependencies: - '@types/react': '>=17.0.0' - react: '>=17.0.0' - peerDependenciesMeta: - '@types/react': - optional: true - react: - optional: true - - js-beautify@1.14.11: - resolution: {integrity: sha512-rPogWqAfoYh1Ryqqh2agUpVfbxAhbjuN1SmU86dskQUKouRiggUTCO4+2ym9UPXllc2WAp0J+T5qxn7Um3lCdw==} - engines: {node: '>=14'} - hasBin: true - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - - json-bigint@1.0.0: - resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} - - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - - json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - - json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - - json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - - jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - - jsx-ast-utils@3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} - engines: {node: '>=4.0'} - - jwa@2.0.0: - resolution: {integrity: sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==} - - jws@4.0.0: - resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} - - keyv@4.5.3: - resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} - - kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - - kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - - language-subtag-registry@0.3.22: - resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} - - language-tags@1.0.9: - resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} - engines: {node: '>=0.10'} - - leac@0.6.0: - resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} - - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - - lie@3.1.1: - resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} - - lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - lint-staged@15.0.2: - resolution: {integrity: sha512-vnEy7pFTHyVuDmCAIFKR5QDO8XLVlPFQQyujQ/STOxe40ICWqJ6knS2wSJ/ffX/Lw0rz83luRDh+ET7toN+rOw==} - engines: {node: '>=18.12.0'} - hasBin: true - - listr2@7.0.2: - resolution: {integrity: sha512-rJysbR9GKIalhTbVL2tYbF2hVyDnrf7pFUZBwjPaMIdadYHmeT+EVi/Bu3qd7ETQPahTotg2WRCatXwRBW554g==} - engines: {node: '>=16.0.0'} - - load-yaml-file@0.2.0: - resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} - engines: {node: '>=6'} - - loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} - engines: {node: '>=6.11.5'} - - localforage@1.10.0: - resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} - - locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - lodash.startcase@4.4.0: - resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - - log-update@5.0.1: - resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - longest-streak@3.1.0: - resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - - lru-cache@10.2.0: - resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} - engines: {node: 14 || >=16.14} - - lru-cache@4.1.5: - resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} - - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - - lucide-react@0.344.0: - resolution: {integrity: sha512-6YyBnn91GB45VuVT96bYCOKElbJzUHqp65vX8cDcu55MQL9T969v4dhGClpljamuI/+KMO9P6w9Acq1CVQGvIQ==} - peerDependencies: - react: ^16.5.1 || ^17.0.0 || ^18.0.0 - - magic-string@0.27.0: - resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} - engines: {node: '>=12'} - - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} - - map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} - - markdown-table@3.0.3: - resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} - - mdast-util-find-and-replace@3.0.1: - resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} - - mdast-util-from-markdown@2.0.0: - resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} - - mdast-util-gfm-autolink-literal@2.0.0: - resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} - - mdast-util-gfm-footnote@2.0.0: - resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} - - mdast-util-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} - - mdast-util-gfm-table@2.0.0: - resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} - - mdast-util-gfm-task-list-item@2.0.0: - resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} - - mdast-util-gfm@3.0.0: - resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} - - mdast-util-mdx-expression@2.0.0: - resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} - - mdast-util-mdx-jsx@3.0.0: - resolution: {integrity: sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==} - - mdast-util-mdxjs-esm@2.0.1: - resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} - - mdast-util-phrasing@4.0.0: - resolution: {integrity: sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==} - - mdast-util-to-hast@13.0.2: - resolution: {integrity: sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==} - - mdast-util-to-markdown@2.1.0: - resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} - - mdast-util-to-string@4.0.0: - resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - - meow@6.1.1: - resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} - engines: {node: '>=8'} - - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - micromark-core-commonmark@2.0.0: - resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==} - - micromark-extension-gfm-autolink-literal@2.0.0: - resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} - - micromark-extension-gfm-footnote@2.0.0: - resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==} - - micromark-extension-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==} - - micromark-extension-gfm-table@2.0.0: - resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==} - - micromark-extension-gfm-tagfilter@2.0.0: - resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} - - micromark-extension-gfm-task-list-item@2.0.1: - resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==} - - micromark-extension-gfm@3.0.0: - resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} - - micromark-factory-destination@2.0.0: - resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} - - micromark-factory-label@2.0.0: - resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} - - micromark-factory-space@2.0.0: - resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} - - micromark-factory-title@2.0.0: - resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} - - micromark-factory-whitespace@2.0.0: - resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} - - micromark-util-character@2.0.1: - resolution: {integrity: sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==} - - micromark-util-chunked@2.0.0: - resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} - - micromark-util-classify-character@2.0.0: - resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} - - micromark-util-combine-extensions@2.0.0: - resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} - - micromark-util-decode-numeric-character-reference@2.0.1: - resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} - - micromark-util-decode-string@2.0.0: - resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} - - micromark-util-encode@2.0.0: - resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} - - micromark-util-html-tag-name@2.0.0: - resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} - - micromark-util-normalize-identifier@2.0.0: - resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} - - micromark-util-resolve-all@2.0.0: - resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} - - micromark-util-sanitize-uri@2.0.0: - resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} - - micromark-util-subtokenize@2.0.0: - resolution: {integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==} - - micromark-util-symbol@2.0.0: - resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} - - micromark-util-types@2.0.0: - resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} - - micromark@4.0.0: - resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} - - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - - mime@3.0.0: - resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} - engines: {node: '>=10.0.0'} - hasBin: true - - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - - min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - - minimatch@9.0.1: - resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} - engines: {node: '>=16 || 14 >=14.17'} - - minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} - - minimatch@9.0.4: - resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} - engines: {node: '>=16 || 14 >=14.17'} - - minimist-options@4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} - engines: {node: '>=16 || 14 >=14.17'} - - mixme@0.5.9: - resolution: {integrity: sha512-VC5fg6ySUscaWUpI4gxCBTQMH2RdUpNrk+MsbpCYtIvf9SBJdiUey4qE7BXviJsJR4nDQxCZ+3yaYNW3guz/Pw==} - engines: {node: '>= 8.0.0'} - - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - - nanoid@3.3.6: - resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - - next-auth@4.24.7: - resolution: {integrity: sha512-iChjE8ov/1K/z98gdKbn2Jw+2vLgJtVV39X+rCP5SGnVQuco7QOr19FRNGMIrD8d3LYhHWV9j9sKLzq1aDWWQQ==} - peerDependencies: - next: ^12.2.5 || ^13 || ^14 - nodemailer: ^6.6.5 - react: ^17.0.2 || ^18 - react-dom: ^17.0.2 || ^18 - peerDependenciesMeta: - nodemailer: - optional: true - - next-remove-imports@1.0.12: - resolution: {integrity: sha512-3tdL6VuSykJ/mcUwxfjQ+Fd4OpEmrwWVHtLZ/fhNcSaToWCutUp7nrfIww7/4CURe9I7BDCQE9AWl4fkY3YZOQ==} - - next-safe-action@7.0.2: - resolution: {integrity: sha512-Zjxo5HhOV0vUxKP2zf4UE5d603oCwdr9CNadc4aImJnYrcpfed3S/mUf2gfXEHjTjRyPoTQ+s4oLMy5rATGuPQ==} - engines: {node: '>=18.17'} - peerDependencies: - next: '>= 14.0.0' - react: '>= 18.2.0' - react-dom: '>= 18.2.0' - zod: '>= 3.0.0' - peerDependenciesMeta: - zod: - optional: true - - next-themes@0.2.1: - resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==} - peerDependencies: - next: '*' - react: '*' - react-dom: '*' - - next@14.2.4: - resolution: {integrity: sha512-R8/V7vugY+822rsQGQCjoLhMuC9oFj9SOi4Cl4b2wjDrseD0LRZ10W7R6Czo4w9ZznVSshKjuIomsRjvm9EKJQ==} - engines: {node: '>=18.17.0'} - hasBin: true - peerDependencies: - '@opentelemetry/api': ^1.1.0 - '@playwright/test': ^1.41.2 - react: ^18.2.0 - react-dom: ^18.2.0 - sass: ^1.3.0 - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - '@playwright/test': - optional: true - sass: - optional: true - - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-releases@2.0.13: - resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} - - node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - - nodemailer@6.9.14: - resolution: {integrity: sha512-Dobp/ebDKBvz91sbtRKhcznLThrKxKt97GI2FAlAyy+fk19j73Uz3sBXolVtmcXjaorivqsbbbjDY+Jkt4/bQA==} - engines: {node: '>=6.0.0'} - - nopt@7.2.0: - resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - hasBin: true - - normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - - not@0.1.0: - resolution: {integrity: sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==} - - npm-run-path@5.1.0: - resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - - oauth@0.9.15: - resolution: {integrity: sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==} - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - object-hash@2.2.0: - resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} - engines: {node: '>= 6'} - - object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - - object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} - - object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - - object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} - engines: {node: '>= 0.4'} - - object.entries@1.1.7: - resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} - engines: {node: '>= 0.4'} - - object.entries@1.1.8: - resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} - engines: {node: '>= 0.4'} - - object.fromentries@2.0.7: - resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} - engines: {node: '>= 0.4'} - - object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} - - object.groupby@1.0.1: - resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} - - object.hasown@1.1.4: - resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} - engines: {node: '>= 0.4'} - - object.values@1.1.7: - resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} - engines: {node: '>= 0.4'} - - object.values@1.2.0: - resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} - engines: {node: '>= 0.4'} - - oidc-token-hash@5.0.3: - resolution: {integrity: sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==} - engines: {node: ^10.13.0 || >=12.0.0} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - - onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - - openid-client@5.6.5: - resolution: {integrity: sha512-5P4qO9nGJzB5PI0LFlhj4Dzg3m4odt0qsJTfyEtZyOlkgpILwEioOhVVJOrS1iVH494S4Ee5OCjjg6Bf5WOj3w==} - - optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} - engines: {node: '>= 0.8.0'} - - os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - - outdent@0.5.0: - resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} - - p-filter@2.1.0: - resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} - engines: {node: '>=8'} - - p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - p-map@2.1.0: - resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} - engines: {node: '>=6'} - - p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - - papaparse@5.4.1: - resolution: {integrity: sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw==} - - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - - parse-entities@4.0.1: - resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} - - parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - - parse-numeric-range@1.3.0: - resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} - - parse5@6.0.1: - resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - - parse5@7.1.2: - resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} - - parseley@0.12.1: - resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-exists@5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - path-scurry@1.10.1: - resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} - engines: {node: '>=16 || 14 >=14.17'} - - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - - peberminta@0.9.0: - resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} - - picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - pidtree@0.6.0: - resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} - engines: {node: '>=0.10'} - hasBin: true - - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - - pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - - pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - - pkg-dir@7.0.0: - resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} - engines: {node: '>=14.16'} - - playwright-core@1.45.0: - resolution: {integrity: sha512-lZmHlFQ0VYSpAs43dRq1/nJ9G/6SiTI7VPqidld9TDefL9tX87bTKExWZZUF5PeRyqtXqd8fQi2qmfIedkwsNQ==} - engines: {node: '>=18'} - hasBin: true - - playwright@1.45.0: - resolution: {integrity: sha512-4z3ac3plDfYzGB6r0Q3LF8POPR20Z8D0aXcxbJvmfMgSSq1hkcgvFRXJk9rUq5H/MJ0Ktal869hhOdI/zUTeLA==} - engines: {node: '>=18'} - hasBin: true - - possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} - - postcss-import@15.1.0: - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 - - postcss-js@4.0.1: - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - - postcss-load-config@4.0.1: - resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - - postcss-nested@6.0.1: - resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - - postcss-selector-parser@6.0.13: - resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} - engines: {node: '>=4'} - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - postcss@8.4.28: - resolution: {integrity: sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==} - engines: {node: ^10 || ^12 || >=14} - - postcss@8.4.31: - resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} - engines: {node: ^10 || ^12 || >=14} - - preact-render-to-string@5.2.3: - resolution: {integrity: sha512-aPDxUn5o3GhWdtJtW0svRC2SS/l8D9MAgo2+AWml+BhDImb27ALf04Q2d+AHqUUOc6RdSXFIBVa2gxzgMKgtZA==} - peerDependencies: - preact: '>=10' - - preact@10.11.3: - resolution: {integrity: sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==} - - preferred-pm@3.0.3: - resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} - engines: {node: '>=10'} - - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} - - prettier-plugin-tailwindcss@0.6.2: - resolution: {integrity: sha512-eFefm4cg+1c2B57+H274Qm//CTWBdtQN9ansl0YTP/8TC8x3bugCTQSS/e4FC5Ctl9djhTzsbcMrZ7x2/abIow==} - engines: {node: '>=14.21.3'} - peerDependencies: - '@ianvs/prettier-plugin-sort-imports': '*' - '@prettier/plugin-pug': '*' - '@shopify/prettier-plugin-liquid': '*' - '@trivago/prettier-plugin-sort-imports': '*' - '@zackad/prettier-plugin-twig-melody': '*' - prettier: ^3.0 - prettier-plugin-astro: '*' - prettier-plugin-css-order: '*' - prettier-plugin-import-sort: '*' - prettier-plugin-jsdoc: '*' - prettier-plugin-marko: '*' - prettier-plugin-organize-attributes: '*' - prettier-plugin-organize-imports: '*' - prettier-plugin-sort-imports: '*' - prettier-plugin-style-order: '*' - prettier-plugin-svelte: '*' - peerDependenciesMeta: - '@ianvs/prettier-plugin-sort-imports': - optional: true - '@prettier/plugin-pug': - optional: true - '@shopify/prettier-plugin-liquid': - optional: true - '@trivago/prettier-plugin-sort-imports': - optional: true - '@zackad/prettier-plugin-twig-melody': - optional: true - prettier-plugin-astro: - optional: true - prettier-plugin-css-order: - optional: true - prettier-plugin-import-sort: - optional: true - prettier-plugin-jsdoc: - optional: true - prettier-plugin-marko: - optional: true - prettier-plugin-organize-attributes: - optional: true - prettier-plugin-organize-imports: - optional: true - prettier-plugin-sort-imports: - optional: true - prettier-plugin-style-order: - optional: true - prettier-plugin-svelte: - optional: true - - prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - - prettier@3.2.5: - resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} - engines: {node: '>=14'} - hasBin: true - - pretty-format@3.8.0: - resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==} - - prisma@5.10.2: - resolution: {integrity: sha512-hqb/JMz9/kymRE25pMWCxkdyhbnIWrq+h7S6WysJpdnCvhstbJSNP/S6mScEcqiB8Qv2F+0R3yG+osRaWqZacQ==} - engines: {node: '>=16.13'} - hasBin: true - - progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} - - prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - - property-information@6.2.0: - resolution: {integrity: sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==} - - proto-list@1.2.4: - resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} - - proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - - pseudomap@1.0.2: - resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - - punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} - engines: {node: '>=6'} - - qs@6.11.2: - resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} - engines: {node: '>=0.6'} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - quick-lru@4.0.1: - resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} - engines: {node: '>=8'} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - react-dom@18.2.0: - resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} - peerDependencies: - react: ^18.2.0 - - react-dropzone@14.2.3: - resolution: {integrity: sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==} - engines: {node: '>= 10.13'} - peerDependencies: - react: '>= 16.8 || 18.0.0' - - react-error-boundary@4.0.12: - resolution: {integrity: sha512-kJdxdEYlb7CPC1A0SeUY38cHpjuu6UkvzKiAmqmOFL21VRfMhOcWxTCBgLVCO0VEMh9JhFNcVaXlV4/BTpiwOA==} - peerDependencies: - react: '>=16.13.1' - - react-hook-form@7.45.4: - resolution: {integrity: sha512-HGDV1JOOBPZj10LB3+OZgfDBTn+IeEsNOKiq/cxbQAIbKaiJUe/KV8DBUzsx0Gx/7IG/orWqRRm736JwOfUSWQ==} - engines: {node: '>=12.22.0'} - peerDependencies: - react: ^16.8.0 || ^17 || ^18 - - react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - - react-markdown@9.0.1: - resolution: {integrity: sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==} - peerDependencies: - '@types/react': '>=18' - react: '>=18' - - react-paginate@8.2.0: - resolution: {integrity: sha512-sJCz1PW+9PNIjUSn919nlcRVuleN2YPoFBOvL+6TPgrH/3lwphqiSOgdrLafLdyLDxsgK+oSgviqacF4hxsDIw==} - peerDependencies: - react: ^16 || ^17 || ^18 - - react-papaparse@4.4.0: - resolution: {integrity: sha512-xTEwHZYJ+1dh9mQDQjjwJXmWyX20DdZ52u+ddw75V+Xm5qsjXSvWmC7c8K82vRwMjKAOH2S9uFyGpHEyEztkUQ==} - engines: {node: '>=8', npm: '>=5'} - - react-remove-scroll-bar@2.3.4: - resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-remove-scroll@2.5.5: - resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-remove-scroll@2.5.7: - resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-style-singleton@2.2.1: - resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} - engines: {node: '>=0.10.0'} - - read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - - read-pkg-up@7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} - - read-pkg@5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} - - read-yaml-file@1.1.0: - resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} - engines: {node: '>=6'} - - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} - - reflect.getprototypeof@1.0.4: - resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} - engines: {node: '>= 0.4'} - - refractor@4.8.1: - resolution: {integrity: sha512-/fk5sI0iTgFYlmVGYVew90AoYnNMP6pooClx/XKqyeeCQXrL0Kvgn8V0VEht5ccdljbzzF1i3Q213gcntkRExg==} - - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - regexp.prototype.flags@1.5.1: - resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} - engines: {node: '>= 0.4'} - - regexp.prototype.flags@1.5.2: - resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} - engines: {node: '>= 0.4'} - - rehype-attr@3.0.3: - resolution: {integrity: sha512-Up50Xfra8tyxnkJdCzLBIBtxOcB2M1xdeKe1324U06RAvSjYm7ULSeoM+b/nYPQPVd7jsXJ9+39IG1WAJPXONw==} - engines: {node: '>=16'} - - rehype-autolink-headings@7.1.0: - resolution: {integrity: sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw==} - - rehype-ignore@2.0.2: - resolution: {integrity: sha512-BpAT/3lU9DMJ2siYVD/dSR0A/zQgD6Fb+fxkJd4j+wDVy6TYbYpK+FZqu8eM9EuNKGvi4BJR7XTZ/+zF02Dq8w==} - engines: {node: '>=16'} - - rehype-parse@8.0.5: - resolution: {integrity: sha512-Ds3RglaY/+clEX2U2mHflt7NlMA72KspZ0JLUJgBBLpRddBcEw3H8uYZQliQriku22NZpYMfjDdSgHcjxue24A==} - - rehype-parse@9.0.0: - resolution: {integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==} - - rehype-prism-plus@1.6.3: - resolution: {integrity: sha512-F6tn376zimnvy+xW0bSnryul+rvVL7NhDIkavc9kAuzDx5zIZW04A6jdXPkcFBhojcqZB8b6pHt6CLqiUx+Tbw==} - - rehype-prism-plus@2.0.0: - resolution: {integrity: sha512-FeM/9V2N7EvDZVdR2dqhAzlw5YI49m9Tgn7ZrYJeYHIahM6gcXpH0K1y2gNnKanZCydOMluJvX2cB9z3lhY8XQ==} - - rehype-raw@7.0.0: - resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} - - rehype-rewrite@4.0.2: - resolution: {integrity: sha512-rjLJ3z6fIV11phwCqHp/KRo8xuUCO8o9bFJCNw5o6O2wlLk6g8r323aRswdGBQwfXPFYeSuZdAjp4tzo6RGqEg==} - engines: {node: '>=16.0.0'} - - rehype-sanitize@6.0.0: - resolution: {integrity: sha512-CsnhKNsyI8Tub6L4sm5ZFsme4puGfc6pYylvXo1AeqaGbjOYyzNv3qZPwvs0oMJ39eryyeOdmxwUIo94IpEhqg==} - - rehype-slug@6.0.0: - resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} - - rehype-stringify@10.0.0: - resolution: {integrity: sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==} - - rehype@13.0.1: - resolution: {integrity: sha512-AcSLS2mItY+0fYu9xKxOu1LhUZeBZZBx8//5HKzF+0XP+eP8+6a5MXn2+DW2kfXR6Dtp1FEXMVrjyKAcvcU8vg==} - - relative-luminance@2.0.1: - resolution: {integrity: sha512-wFuITNthJilFPwkK7gNJcULxXBcfFZvZORsvdvxeOdO44wCeZnuQkf3nFFzOR/dpJNxYsdRZJLsepWbyKhnMww==} - - remark-gfm@4.0.0: - resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} - - remark-parse@11.0.0: - resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} - - remark-rehype@11.0.0: - resolution: {integrity: sha512-vx8x2MDMcxuE4lBmQ46zYUDfcFMmvg80WYX+UNLeG6ixjdCCLcw1lrgAukwBTuOFsS78eoAedHGn9sNM0w7TPw==} - - remark-stringify@11.0.0: - resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - - require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - - resend@3.2.0: - resolution: {integrity: sha512-lDHhexiFYPoLXy7zRlJ8D5eKxoXy6Tr9/elN3+Vv7PkUoYuSSD1fpiIfa/JYXEWyiyN2UczkCTLpkT8dDPJ4Pg==} - engines: {node: '>=18'} - - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - - resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - - resolve@1.22.4: - resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} - hasBin: true - - resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true - - resolve@2.0.0-next.5: - resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} - hasBin: true - - restore-cursor@4.0.0: - resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - retry-request@7.0.2: - resolution: {integrity: sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==} - engines: {node: '>=14'} - - retry@0.13.1: - resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} - engines: {node: '>= 4'} - - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - rfdc@1.3.0: - resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} - - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true - - rollup@2.78.0: - resolution: {integrity: sha512-4+YfbQC9QEVvKTanHhIAFVUFSRsezvQF8vFOJwtGfb9Bb+r014S+qryr9PSmw8x6sMnPkmFBGAvIFVQxvJxjtg==} - engines: {node: '>=10.0.0'} - hasBin: true - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - safe-array-concat@1.0.1: - resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} - engines: {node: '>=0.4'} - - safe-array-concat@1.1.2: - resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} - engines: {node: '>=0.4'} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - safe-regex-test@1.0.0: - resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} - - safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} - engines: {node: '>= 0.4'} - - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - scheduler@0.23.0: - resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} - - schema-utils@3.3.0: - resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} - engines: {node: '>= 10.13.0'} - - schema-utils@4.2.0: - resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} - engines: {node: '>= 12.13.0'} - - selderee@0.11.0: - resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==} - - semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true - - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - - semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} - engines: {node: '>=10'} - hasBin: true - - semver@7.6.2: - resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} - engines: {node: '>=10'} - hasBin: true - - serialize-javascript@6.0.1: - resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} - - set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - - set-function-length@1.1.1: - resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} - engines: {node: '>= 0.4'} - - set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - - set-function-name@2.0.1: - resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} - engines: {node: '>= 0.4'} - - set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} - - shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} - - side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} - engines: {node: '>= 0.4'} - - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - - slice-ansi@5.0.0: - resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} - engines: {node: '>=12'} - - slugify@1.6.6: - resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} - engines: {node: '>=8.0.0'} - - smartwrap@2.0.2: - resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} - engines: {node: '>=6'} - hasBin: true - - sonner@1.4.0: - resolution: {integrity: sha512-nvkTsIuOmi9e5Wz5If8ldasJjZNVfwiXYijBi2dbijvTQnQppvMcXTFNxL/NUFWlI2yJ1JX7TREDsg+gYm9WyA==} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - space-separated-tokens@2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - - spawndamnit@2.0.0: - resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} - - spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - - spdx-exceptions@2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} - - spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - - spdx-license-ids@3.0.13: - resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} - - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - - stacktrace-parser@0.1.10: - resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} - engines: {node: '>=6'} - - stream-events@1.0.5: - resolution: {integrity: sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==} - - stream-shift@1.0.3: - resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} - - stream-transform@2.1.3: - resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} - - streamsearch@1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} - - string-argv@0.3.2: - resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} - engines: {node: '>=0.6.19'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - - string.prototype.matchall@4.0.11: - resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} - engines: {node: '>= 0.4'} - - string.prototype.trim@1.2.8: - resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} - engines: {node: '>= 0.4'} - - string.prototype.trim@1.2.9: - resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} - engines: {node: '>= 0.4'} - - string.prototype.trimend@1.0.7: - resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} - - string.prototype.trimend@1.0.8: - resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} - - string.prototype.trimstart@1.0.7: - resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} - - string.prototype.trimstart@1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} - - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - - stringify-entities@4.0.3: - resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - - strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - stripe@14.16.0: - resolution: {integrity: sha512-1gOr2LzafWV84cPIO5Md/QPh4XVPLKULVuRpBVOV3Plq3seiHmg/eeOktX+hDl8jpNZuORHYaUJGrNqrABLwdg==} - engines: {node: '>=12.*'} - - strnum@1.0.5: - resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} - - stubs@3.0.0: - resolution: {integrity: sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==} - - style-to-object@1.0.5: - resolution: {integrity: sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==} - - styled-jsx@5.1.1: - resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@babel/core': '*' - babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' - peerDependenciesMeta: - '@babel/core': - optional: true - babel-plugin-macros: - optional: true - - sucrase@3.34.0: - resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} - engines: {node: '>=8'} - hasBin: true - - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - synckit@0.8.8: - resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} - engines: {node: ^14.18.0 || >=16.0.0} - - tailwind-merge@2.2.0: - resolution: {integrity: sha512-SqqhhaL0T06SW59+JVNfAqKdqLs0497esifRrZ7jOaefP3o64fdFNDMrAQWZFMxTLJPiHVjRLUywT8uFz1xNWQ==} - - tailwindcss-animate@1.0.6: - resolution: {integrity: sha512-4WigSGMvbl3gCCact62ZvOngA+PRqhAn7si3TQ3/ZuPuQZcIEtVap+ENSXbzWhpojKB8CpvnIsrwBu8/RnHtuw==} - peerDependencies: - tailwindcss: '>=3.0.0 || insiders' - - tailwindcss@3.4.1: - resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==} - engines: {node: '>=14.0.0'} - hasBin: true - - tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - - teeny-request@9.0.0: - resolution: {integrity: sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==} - engines: {node: '>=14'} - - term-size@2.2.1: - resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} - engines: {node: '>=8'} - - terser-webpack-plugin@5.3.10: - resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - - terser@5.26.0: - resolution: {integrity: sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ==} - engines: {node: '>=10'} - hasBin: true - - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - - tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - - to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - trim-lines@3.0.1: - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - - trim-newlines@3.0.1: - resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} - engines: {node: '>=8'} - - trough@2.1.0: - resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} - - ts-api-utils@1.3.0: - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' - - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - - ts-node@10.9.1: - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - - tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - - tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - - tty-table@4.2.1: - resolution: {integrity: sha512-xz0uKo+KakCQ+Dxj1D/tKn2FSyreSYWzdkL/BYhgN6oMW808g8QRMuh1atAV9fjTPbWBjfbkKQpI/5rEcnAc7g==} - engines: {node: '>=8.0.0'} - hasBin: true - - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - - type-fest@0.13.1: - resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} - engines: {node: '>=10'} - - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - - type-fest@0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} - - type-fest@0.7.1: - resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} - engines: {node: '>=8'} - - type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - - type-fest@1.4.0: - resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} - engines: {node: '>=10'} - - typed-array-buffer@1.0.0: - resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} - engines: {node: '>= 0.4'} - - typed-array-buffer@1.0.2: - resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} - engines: {node: '>= 0.4'} - - typed-array-byte-length@1.0.0: - resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} - engines: {node: '>= 0.4'} - - typed-array-byte-length@1.0.1: - resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} - engines: {node: '>= 0.4'} - - typed-array-byte-offset@1.0.0: - resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} - engines: {node: '>= 0.4'} - - typed-array-byte-offset@1.0.2: - resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} - engines: {node: '>= 0.4'} - - typed-array-length@1.0.4: - resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} - - typed-array-length@1.0.6: - resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} - engines: {node: '>= 0.4'} - - typescript@5.3.3: - resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} - engines: {node: '>=14.17'} - hasBin: true - - unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - - unified@10.1.2: - resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} - - unified@11.0.4: - resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} - - unist-util-filter@4.0.1: - resolution: {integrity: sha512-RynicUM/vbOSTSiUK+BnaK9XMfmQUh6gyi7L6taNgc7FIf84GukXVV3ucGzEN/PhUUkdP5hb1MmXc+3cvPUm5Q==} - - unist-util-filter@5.0.1: - resolution: {integrity: sha512-pHx7D4Zt6+TsfwylH9+lYhBhzyhEnCXs/lbq/Hstxno5z4gVdyc2WEW0asfjGKPyG4pEKrnBv5hdkO6+aRnQJw==} - - unist-util-is@5.2.1: - resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} - - unist-util-is@6.0.0: - resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} - - unist-util-position@5.0.0: - resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} - - unist-util-remove-position@5.0.0: - resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} - - unist-util-stringify-position@3.0.3: - resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} - - unist-util-stringify-position@4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - - unist-util-visit-parents@5.1.3: - resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} - - unist-util-visit-parents@6.0.1: - resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} - - unist-util-visit@4.1.2: - resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} - - unist-util-visit@5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - - universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - - update-browserslist-db@1.0.11: - resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - update-browserslist-db@1.0.13: - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - - use-callback-ref@1.3.0: - resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - use-debounce@10.0.0: - resolution: {integrity: sha512-XRjvlvCB46bah9IBXVnq/ACP2lxqXyZj0D9hj4K5OzNroMDpTEBg8Anuh1/UfRTRs7pLhQ+RiNxxwZu9+MVl1A==} - engines: {node: '>= 16.0.0'} - peerDependencies: - react: '>=16.8.0' - - use-sidecar@1.1.2: - resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - - uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - - v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - - validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - - vaul@0.9.0: - resolution: {integrity: sha512-bZSySGbAHiTXmZychprnX/dE0EsSige88xtyyL3/MCRbrFotRPQZo7UdydGXZWw+CKbNOw5Ow8gwAo93/nB/Cg==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - - vfile-location@4.1.0: - resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==} - - vfile-location@5.0.2: - resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} - - vfile-message@3.1.4: - resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} - - vfile-message@4.0.2: - resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} - - vfile@5.3.7: - resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} - - vfile@6.0.1: - resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} - - watchpack@2.4.0: - resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} - engines: {node: '>=10.13.0'} - - wcag-contrast@3.0.0: - resolution: {integrity: sha512-RWbpg/S7FOXDCwqC2oFhN/vh8dHzj0OS6dpyOSDHyQFSmqmR+lAUStV/ziTT1GzDqL9wol+nZQB4vCi5yEak+w==} - - wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - - web-namespaces@2.0.1: - resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} - engines: {node: '>=10.13.0'} - - webpack@5.89.0: - resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - - which-builtin-type@1.1.3: - resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} - engines: {node: '>= 0.4'} - - which-collection@1.0.1: - resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} - - which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - - which-pm@2.0.0: - resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} - engines: {node: '>=8.15'} - - which-typed-array@1.1.13: - resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} - engines: {node: '>= 0.4'} - - which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} - engines: {node: '>= 0.4'} - - which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yallist@2.1.2: - resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yaml@2.3.3: - resolution: {integrity: sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==} - engines: {node: '>= 14'} - - yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} - - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} - - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - - yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - - yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} - - zod@3.22.4: - resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} - - zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - -snapshots: - - '@aashutoshrathi/word-wrap@1.2.6': {} - - '@alloc/quick-lru@5.2.0': {} - - '@ampproject/remapping@2.2.1': - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 - - '@babel/code-frame@7.22.13': - dependencies: - '@babel/highlight': 7.22.13 - chalk: 2.4.2 - - '@babel/compat-data@7.22.9': {} - - '@babel/core@7.22.17': - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.22.15 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-module-transforms': 7.22.17(@babel/core@7.22.17) - '@babel/helpers': 7.22.15 - '@babel/parser': 7.22.16 - '@babel/template': 7.22.15 - '@babel/traverse': 7.22.17 - '@babel/types': 7.22.17 - convert-source-map: 1.9.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.22.15': - dependencies: - '@babel/types': 7.22.17 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 - jsesc: 2.5.2 - - '@babel/helper-compilation-targets@7.22.15': - dependencies: - '@babel/compat-data': 7.22.9 - '@babel/helper-validator-option': 7.22.15 - browserslist: 4.21.10 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-environment-visitor@7.22.5': {} - - '@babel/helper-function-name@7.22.5': - dependencies: - '@babel/template': 7.22.15 - '@babel/types': 7.22.17 - - '@babel/helper-hoist-variables@7.22.5': - dependencies: - '@babel/types': 7.22.17 - - '@babel/helper-module-imports@7.22.15': - dependencies: - '@babel/types': 7.22.17 - - '@babel/helper-module-transforms@7.22.17(@babel/core@7.22.17)': - dependencies: - '@babel/core': 7.22.17 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.15 - - '@babel/helper-simple-access@7.22.5': - dependencies: - '@babel/types': 7.22.17 - - '@babel/helper-split-export-declaration@7.22.6': - dependencies: - '@babel/types': 7.22.17 - - '@babel/helper-string-parser@7.22.5': {} - - '@babel/helper-validator-identifier@7.22.15': {} - - '@babel/helper-validator-option@7.22.15': {} - - '@babel/helpers@7.22.15': - dependencies: - '@babel/template': 7.22.15 - '@babel/traverse': 7.22.17 - '@babel/types': 7.22.17 - transitivePeerDependencies: - - supports-color - - '@babel/highlight@7.22.13': - dependencies: - '@babel/helper-validator-identifier': 7.22.15 - chalk: 2.4.2 - js-tokens: 4.0.0 - - '@babel/parser@7.22.16': - dependencies: - '@babel/types': 7.22.17 - - '@babel/runtime@7.22.11': - dependencies: - regenerator-runtime: 0.14.1 - - '@babel/runtime@7.23.6': - dependencies: - regenerator-runtime: 0.14.1 - - '@babel/runtime@7.23.7': - dependencies: - regenerator-runtime: 0.14.1 - - '@babel/template@7.22.15': - dependencies: - '@babel/code-frame': 7.22.13 - '@babel/parser': 7.22.16 - '@babel/types': 7.22.17 - - '@babel/traverse@7.22.17': - dependencies: - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.22.15 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.22.16 - '@babel/types': 7.22.17 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/types@7.22.17': - dependencies: - '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.15 - to-fast-properties: 2.0.0 - - '@changesets/apply-release-plan@7.0.0': - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/config': 3.0.0 - '@changesets/get-version-range-type': 0.4.0 - '@changesets/git': 3.0.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - detect-indent: 6.1.0 - fs-extra: 7.0.1 - lodash.startcase: 4.4.0 - outdent: 0.5.0 - prettier: 2.8.8 - resolve-from: 5.0.0 - semver: 7.5.4 - - '@changesets/assemble-release-plan@6.0.0': - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.0.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - semver: 7.5.4 - - '@changesets/changelog-git@0.2.0': - dependencies: - '@changesets/types': 6.0.0 - - '@changesets/cli@2.27.1': - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/apply-release-plan': 7.0.0 - '@changesets/assemble-release-plan': 6.0.0 - '@changesets/changelog-git': 0.2.0 - '@changesets/config': 3.0.0 - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.0.0 - '@changesets/get-release-plan': 4.0.0 - '@changesets/git': 3.0.0 - '@changesets/logger': 0.1.0 - '@changesets/pre': 2.0.0 - '@changesets/read': 0.6.0 - '@changesets/types': 6.0.0 - '@changesets/write': 0.3.0 - '@manypkg/get-packages': 1.1.3 - '@types/semver': 7.5.1 - ansi-colors: 4.1.3 - chalk: 2.4.2 - ci-info: 3.8.0 - enquirer: 2.4.1 - external-editor: 3.1.0 - fs-extra: 7.0.1 - human-id: 1.0.2 - meow: 6.1.1 - outdent: 0.5.0 - p-limit: 2.3.0 - preferred-pm: 3.0.3 - resolve-from: 5.0.0 - semver: 7.5.4 - spawndamnit: 2.0.0 - term-size: 2.2.1 - tty-table: 4.2.1 - - '@changesets/config@3.0.0': - dependencies: - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.0.0 - '@changesets/logger': 0.1.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - fs-extra: 7.0.1 - micromatch: 4.0.5 - - '@changesets/errors@0.2.0': - dependencies: - extendable-error: 0.1.7 - - '@changesets/get-dependents-graph@2.0.0': - dependencies: - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - chalk: 2.4.2 - fs-extra: 7.0.1 - semver: 7.5.4 - - '@changesets/get-release-plan@4.0.0': - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/assemble-release-plan': 6.0.0 - '@changesets/config': 3.0.0 - '@changesets/pre': 2.0.0 - '@changesets/read': 0.6.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - - '@changesets/get-version-range-type@0.4.0': {} - - '@changesets/git@3.0.0': - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/errors': 0.2.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - is-subdir: 1.2.0 - micromatch: 4.0.5 - spawndamnit: 2.0.0 - - '@changesets/logger@0.1.0': - dependencies: - chalk: 2.4.2 - - '@changesets/parse@0.4.0': - dependencies: - '@changesets/types': 6.0.0 - js-yaml: 3.14.1 - - '@changesets/pre@2.0.0': - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/errors': 0.2.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - fs-extra: 7.0.1 - - '@changesets/read@0.6.0': - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/git': 3.0.0 - '@changesets/logger': 0.1.0 - '@changesets/parse': 0.4.0 - '@changesets/types': 6.0.0 - chalk: 2.4.2 - fs-extra: 7.0.1 - p-filter: 2.1.0 - - '@changesets/types@4.1.0': {} - - '@changesets/types@6.0.0': {} - - '@changesets/write@0.3.0': - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/types': 6.0.0 - fs-extra: 7.0.1 - human-id: 1.0.2 - prettier: 2.8.8 - - '@cspotcode/source-map-support@0.8.1': - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - - '@emoji-mart/data@1.2.1': {} - - '@emoji-mart/react@1.1.1(emoji-mart@5.6.0)(react@18.2.0)': - dependencies: - emoji-mart: 5.6.0 - react: 18.2.0 - - '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': - dependencies: - eslint: 8.57.0 - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.11.0': {} - - '@eslint-community/regexpp@4.8.0': {} - - '@eslint/eslintrc@2.1.4': - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 9.6.1 - globals: 13.21.0 - ignore: 5.2.4 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@8.57.0': {} - - '@floating-ui/core@1.4.1': - dependencies: - '@floating-ui/utils': 0.1.1 - - '@floating-ui/dom@1.5.1': - dependencies: - '@floating-ui/core': 1.4.1 - '@floating-ui/utils': 0.1.1 - - '@floating-ui/react-dom@2.0.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@floating-ui/dom': 1.5.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@floating-ui/utils@0.1.1': {} - - '@google-cloud/paginator@5.0.0': - dependencies: - arrify: 2.0.1 - extend: 3.0.2 - - '@google-cloud/projectify@4.0.0': {} - - '@google-cloud/promisify@4.0.0': {} - - '@google-cloud/storage@7.7.0': - dependencies: - '@google-cloud/paginator': 5.0.0 - '@google-cloud/projectify': 4.0.0 - '@google-cloud/promisify': 4.0.0 - abort-controller: 3.0.0 - async-retry: 1.3.3 - compressible: 2.0.18 - duplexify: 4.1.2 - ent: 2.2.0 - fast-xml-parser: 4.3.4 - gaxios: 6.2.0 - google-auth-library: 9.6.3 - mime: 3.0.0 - mime-types: 2.1.35 - p-limit: 3.1.0 - retry-request: 7.0.2 - teeny-request: 9.0.0 - uuid: 8.3.2 - transitivePeerDependencies: - - encoding - - supports-color - - '@hookform/resolvers@3.3.4(react-hook-form@7.45.4(react@18.2.0))': - dependencies: - react-hook-form: 7.45.4(react@18.2.0) - - '@humanwhocodes/config-array@0.11.14': - dependencies: - '@humanwhocodes/object-schema': 2.0.2 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - '@humanwhocodes/module-importer@1.0.1': {} - - '@humanwhocodes/object-schema@2.0.2': {} - - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - - '@jridgewell/gen-mapping@0.3.3': - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.20 - - '@jridgewell/resolve-uri@3.1.1': {} - - '@jridgewell/set-array@1.1.2': {} - - '@jridgewell/source-map@0.3.5': - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 - - '@jridgewell/sourcemap-codec@1.4.15': {} - - '@jridgewell/trace-mapping@0.3.20': - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 - - '@jridgewell/trace-mapping@0.3.9': - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 - - '@manypkg/find-root@1.1.0': - dependencies: - '@babel/runtime': 7.23.7 - '@types/node': 12.20.55 - find-up: 4.1.0 - fs-extra: 8.1.0 - - '@manypkg/get-packages@1.1.3': - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/types': 4.1.0 - '@manypkg/find-root': 1.1.0 - fs-extra: 8.1.0 - globby: 11.1.0 - read-yaml-file: 1.1.0 - - '@next-auth/prisma-adapter@1.0.7(@prisma/client@5.10.2(prisma@5.10.2))(next-auth@4.24.7(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))': - dependencies: - '@prisma/client': 5.10.2(prisma@5.10.2) - next-auth: 4.24.7(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - - '@next/env@14.2.4': {} - - '@next/eslint-plugin-next@14.1.0': - dependencies: - glob: 10.3.10 - - '@next/swc-darwin-arm64@14.2.4': - optional: true - - '@next/swc-darwin-x64@14.2.4': - optional: true - - '@next/swc-linux-arm64-gnu@14.2.4': - optional: true - - '@next/swc-linux-arm64-musl@14.2.4': - optional: true - - '@next/swc-linux-x64-gnu@14.2.4': - optional: true - - '@next/swc-linux-x64-musl@14.2.4': - optional: true - - '@next/swc-win32-arm64-msvc@14.2.4': - optional: true - - '@next/swc-win32-ia32-msvc@14.2.4': - optional: true - - '@next/swc-win32-x64-msvc@14.2.4': - optional: true - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 - - '@one-ini/wasm@0.1.1': {} - - '@panva/hkdf@1.1.1': {} - - '@pkgjs/parseargs@0.11.0': - optional: true - - '@pkgr/core@0.1.1': {} - - '@playwright/test@1.45.0': - dependencies: - playwright: 1.45.0 - - '@prisma/client@5.10.2(prisma@5.10.2)': - optionalDependencies: - prisma: 5.10.2 - - '@prisma/debug@5.10.2': {} - - '@prisma/engines-version@5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9': {} - - '@prisma/engines@5.10.2': - dependencies: - '@prisma/debug': 5.10.2 - '@prisma/engines-version': 5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9 - '@prisma/fetch-engine': 5.10.2 - '@prisma/get-platform': 5.10.2 - - '@prisma/fetch-engine@5.10.2': - dependencies: - '@prisma/debug': 5.10.2 - '@prisma/engines-version': 5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9 - '@prisma/get-platform': 5.10.2 - - '@prisma/get-platform@5.10.2': - dependencies: - '@prisma/debug': 5.10.2 - - '@radix-ui/colors@3.0.0': {} - - '@radix-ui/number@1.0.1': - dependencies: - '@babel/runtime': 7.23.7 - - '@radix-ui/primitive@1.0.1': - dependencies: - '@babel/runtime': 7.23.7 - - '@radix-ui/primitive@1.1.0': {} - - '@radix-ui/react-arrow@1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-arrow@1.1.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-avatar@1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-collection@1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-compose-refs@1.0.1(@types/react@18.0.27)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-compose-refs@1.1.0(@types/react@18.0.27)(react@18.2.0)': - dependencies: - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-context@1.0.1(@types/react@18.0.27)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-context@1.1.0(@types/react@18.0.27)(react@18.2.0)': - dependencies: - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-dialog@1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) - aria-hidden: 1.2.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.0.27)(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-direction@1.0.1(@types/react@18.0.27)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-dismissable-layer@1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-dismissable-layer@1.1.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-dropdown-menu@2.0.6(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-menu': 2.0.6(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-focus-guards@1.0.1(@types/react@18.0.27)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-focus-guards@1.1.0(@types/react@18.0.27)(react@18.2.0)': - dependencies: - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-focus-scope@1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-focus-scope@1.1.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-id@1.0.1(@types/react@18.0.27)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-id@1.1.0(@types/react@18.0.27)(react@18.2.0)': - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-label@2.0.2(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-menu@2.0.6(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - aria-hidden: 1.2.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.0.27)(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-popover@1.1.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.1.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.1.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-popper': 1.2.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-portal': 1.1.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.1.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.0.27)(react@18.2.0) - aria-hidden: 1.2.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.7(@types/react@18.0.27)(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-popper@1.1.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - '@floating-ui/react-dom': 2.0.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-arrow': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-rect': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/rect': 1.0.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-popper@1.2.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@floating-ui/react-dom': 2.0.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-arrow': 1.1.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-rect': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-size': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/rect': 1.1.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-portal@1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-portal@1.1.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-presence@1.0.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-presence@1.1.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-primitive@1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-primitive@2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@radix-ui/react-slot': 1.1.0(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-roving-focus@1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-select@2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/number': 1.0.1 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - aria-hidden: 1.2.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.0.27)(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-slot@1.0.2(@types/react@18.0.27)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-slot@1.1.0(@types/react@18.0.27)(react@18.2.0)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-tabs@1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-tooltip@1.0.7(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.0.27)(react@18.2.0)': + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: '@babel/runtime': 7.23.7 - react: 18.2.0 - optionalDependencies: '@types/react': 18.0.27 + react: 18.2.0 + dev: false - '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.0.27)(react@18.2.0)': + /@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.0.27)(react@18.2.0): + resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true dependencies: - react: 18.2.0 - optionalDependencies: '@types/react': 18.0.27 + react: 18.2.0 + dev: false - '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.0.27)(react@18.2.0)': + /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.0.27)(react@18.2.0): + resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: '@babel/runtime': 7.23.7 '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - optionalDependencies: '@types/react': 18.0.27 + react: 18.2.0 + dev: false - '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.0.27)(react@18.2.0)': + /@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.0.27)(react@18.2.0): + resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true dependencies: '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - optionalDependencies: '@types/react': 18.0.27 + react: 18.2.0 + dev: false - '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.0.27)(react@18.2.0)': + /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.0.27)(react@18.2.0): + resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: '@babel/runtime': 7.23.7 '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - optionalDependencies: '@types/react': 18.0.27 + react: 18.2.0 + dev: false - '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.0.27)(react@18.2.0)': + /@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.0.27)(react@18.2.0): + resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true dependencies: '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - optionalDependencies: '@types/react': 18.0.27 + react: 18.2.0 + dev: false - '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.0.27)(react@18.2.0)': + /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.0.27)(react@18.2.0): + resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: '@babel/runtime': 7.23.7 - react: 18.2.0 - optionalDependencies: '@types/react': 18.0.27 + react: 18.2.0 + dev: false - '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.0.27)(react@18.2.0)': + /@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.0.27)(react@18.2.0): + resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true dependencies: - react: 18.2.0 - optionalDependencies: '@types/react': 18.0.27 + react: 18.2.0 + dev: false - '@radix-ui/react-use-previous@1.0.1(@types/react@18.0.27)(react@18.2.0)': + /@radix-ui/react-use-previous@1.0.1(@types/react@18.0.27)(react@18.2.0): + resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: '@babel/runtime': 7.23.7 - react: 18.2.0 - optionalDependencies: '@types/react': 18.0.27 + react: 18.2.0 + dev: false - '@radix-ui/react-use-rect@1.0.1(@types/react@18.0.27)(react@18.2.0)': + /@radix-ui/react-use-rect@1.0.1(@types/react@18.0.27)(react@18.2.0): + resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: '@babel/runtime': 7.23.7 '@radix-ui/rect': 1.0.1 - react: 18.2.0 - optionalDependencies: '@types/react': 18.0.27 + react: 18.2.0 + dev: false - '@radix-ui/react-use-rect@1.1.0(@types/react@18.0.27)(react@18.2.0)': + /@radix-ui/react-use-rect@1.1.0(@types/react@18.0.27)(react@18.2.0): + resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true dependencies: '@radix-ui/rect': 1.1.0 - react: 18.2.0 - optionalDependencies: '@types/react': 18.0.27 + react: 18.2.0 + dev: false - '@radix-ui/react-use-size@1.0.1(@types/react@18.0.27)(react@18.2.0)': + /@radix-ui/react-use-size@1.0.1(@types/react@18.0.27)(react@18.2.0): + resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: '@babel/runtime': 7.23.7 '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - optionalDependencies: '@types/react': 18.0.27 + react: 18.2.0 + dev: false - '@radix-ui/react-use-size@1.1.0(@types/react@18.0.27)(react@18.2.0)': + /@radix-ui/react-use-size@1.1.0(@types/react@18.0.27)(react@18.2.0): + resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true dependencies: '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - optionalDependencies: '@types/react': 18.0.27 + react: 18.2.0 + dev: false - '@radix-ui/react-visually-hidden@1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + /@radix-ui/react-visually-hidden@1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true dependencies: '@babel/runtime': 7.23.7 - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.0.27 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 + dev: false - '@radix-ui/rect@1.0.1': + /@radix-ui/rect@1.0.1: + resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} dependencies: '@babel/runtime': 7.23.7 + dev: false - '@radix-ui/rect@1.1.0': {} + /@radix-ui/rect@1.1.0: + resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} + dev: false - '@react-email/render@0.0.12': + /@react-email/render@0.0.12: + resolution: {integrity: sha512-S8WRv/PqECEi6x0QJBj0asnAb5GFtJaHlnByxLETLkgJjc76cxMYDH4r9wdbuJ4sjkcbpwP3LPnVzwS+aIjT7g==} + engines: {node: '>=18.0.0'} dependencies: html-to-text: 9.0.5 js-beautify: 1.14.11 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + dev: false - '@rollup/plugin-commonjs@24.0.0(rollup@2.78.0)': + /@rollup/plugin-commonjs@24.0.0(rollup@2.78.0): + resolution: {integrity: sha512-0w0wyykzdyRRPHOb0cQt14mIBLujfAv6GgP6g8nvg/iBxEm112t3YPPq+Buqe2+imvElTka+bjNlJ/gB56TD8g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.68.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true dependencies: '@rollup/pluginutils': 5.1.0(rollup@2.78.0) commondir: 1.0.1 @@ -6384,44 +2125,66 @@ snapshots: glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.27.0 - optionalDependencies: rollup: 2.78.0 + dev: false - '@rollup/pluginutils@5.1.0(rollup@2.78.0)': + /@rollup/pluginutils@5.1.0(rollup@2.78.0): + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true dependencies: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 - optionalDependencies: rollup: 2.78.0 + dev: false - '@rushstack/eslint-patch@1.6.1': {} + /@rushstack/eslint-patch@1.6.1: + resolution: {integrity: sha512-UY+FGM/2jjMkzQLn8pxcHGMaVLh9aEitG3zY2CiY7XHdLiz3bZOwa6oDxNqEMv7zZkV+cj5DOdz0cQ1BP5Hjgw==} + dev: true - '@selderee/plugin-htmlparser2@0.11.0': + /@selderee/plugin-htmlparser2@0.11.0: + resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} dependencies: domhandler: 5.0.3 selderee: 0.11.0 + dev: false - '@sentry-internal/feedback@7.102.1': + /@sentry-internal/feedback@7.102.1: + resolution: {integrity: sha512-vY4hpLLMNLjICtWiizc7KeGbWOTUMGrF7C+9dPCztZww3CLgzWy9A7DvPj5hodRiYzpdRnAMl8yQnMFbYXh7bA==} + engines: {node: '>=12'} dependencies: '@sentry/core': 7.102.1 '@sentry/types': 7.102.1 '@sentry/utils': 7.102.1 + dev: false - '@sentry-internal/replay-canvas@7.102.1': + /@sentry-internal/replay-canvas@7.102.1: + resolution: {integrity: sha512-GUX4RWI10uRjdjeyvCLtAAhWRVqnAnG6+yNxWfqUQ3qMA7B7XxG43KT2UhSnulmErNzODQ6hA68rGPwwYeRIww==} + engines: {node: '>=12'} dependencies: '@sentry/core': 7.102.1 '@sentry/replay': 7.102.1 '@sentry/types': 7.102.1 '@sentry/utils': 7.102.1 + dev: false - '@sentry-internal/tracing@7.102.1': + /@sentry-internal/tracing@7.102.1: + resolution: {integrity: sha512-RkFlFyAC0fQOvBbBqnq0CLmFW5m3JJz9pKbZd5vXPraWAlniKSb1bC/4DF9SlNx0FN1LWG+IU3ISdpzwwTeAGg==} + engines: {node: '>=8'} dependencies: '@sentry/core': 7.102.1 '@sentry/types': 7.102.1 '@sentry/utils': 7.102.1 + dev: false - '@sentry/browser@7.102.1': + /@sentry/browser@7.102.1: + resolution: {integrity: sha512-7BOfPBiM7Kp6q/iy0JIbsBTxIASV+zWXByqqjuEMWGj3X2u4oRIfm3gv4erPU/l+CORQUVQZLSPGoIoM1gbB/A==} + engines: {node: '>=8'} dependencies: '@sentry-internal/feedback': 7.102.1 '@sentry-internal/replay-canvas': 7.102.1 @@ -6430,8 +2193,13 @@ snapshots: '@sentry/replay': 7.102.1 '@sentry/types': 7.102.1 '@sentry/utils': 7.102.1 + dev: false - '@sentry/cli@1.77.3': + /@sentry/cli@1.77.3: + resolution: {integrity: sha512-c3eDqcDRmy4TFz2bFU5Y6QatlpoBPPa8cxBooaS4aMQpnIdLYPF1xhyyiW0LQlDUNc3rRjNF7oN5qKoaRoMTQQ==} + engines: {node: '>= 8'} + hasBin: true + requiresBuild: true dependencies: https-proxy-agent: 5.0.1 mkdirp: 0.5.6 @@ -6442,20 +2210,36 @@ snapshots: transitivePeerDependencies: - encoding - supports-color + dev: false - '@sentry/core@7.102.1': + /@sentry/core@7.102.1: + resolution: {integrity: sha512-QjY+LSP3du3J/C8x/FfEbRxgZgsWd0jfTJ4P7s9f219I1csK4OeBMC3UA1HwEa0pY/9OF6H/egW2CjOcMM5Pdg==} + engines: {node: '>=8'} dependencies: '@sentry/types': 7.102.1 '@sentry/utils': 7.102.1 + dev: false - '@sentry/integrations@7.102.1': + /@sentry/integrations@7.102.1: + resolution: {integrity: sha512-Its3Ru6xCAqpaLE3cTxW/b91js2SIFoXa8LWtQDJ7tmTdwPAbT8Pij1F4bOhhaqLYbjLtCXGl/NR2cffsiRLww==} + engines: {node: '>=8'} dependencies: '@sentry/core': 7.102.1 '@sentry/types': 7.102.1 '@sentry/utils': 7.102.1 localforage: 1.10.0 + dev: false - '@sentry/nextjs@7.102.1(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0)(webpack@5.89.0)': + /@sentry/nextjs@7.102.1(next@14.2.4)(react@18.2.0)(webpack@5.89.0): + resolution: {integrity: sha512-gOI/GD7DWhc3WucyYnepl8Nu5jmpa1YfR6jWDzTkPE2CV9zKK9zulTdqk+Aig9ch62SAmJOGkgejm5k9PE2XzQ==} + engines: {node: '>=8'} + peerDependencies: + next: ^10.0.8 || ^11.0 || ^12.0 || ^13.0 || ^14.0 + react: 16.x || 17.x || 18.x + webpack: '>= 4.0.0' + peerDependenciesMeta: + webpack: + optional: true dependencies: '@rollup/plugin-commonjs': 24.0.0(rollup@2.78.0) '@sentry/core': 7.102.1 @@ -6467,25 +2251,32 @@ snapshots: '@sentry/vercel-edge': 7.102.1 '@sentry/webpack-plugin': 1.21.0 chalk: 3.0.0 - next: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + next: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 resolve: 1.22.8 rollup: 2.78.0 stacktrace-parser: 0.1.10 - optionalDependencies: webpack: 5.89.0 transitivePeerDependencies: - encoding - supports-color + dev: false - '@sentry/node@7.102.1': + /@sentry/node@7.102.1: + resolution: {integrity: sha512-mb3vmM3SGuCruckPiv/Vafeh89UQavTfpPFoU6Jwe6dSpQ39BO8fO8k8Zev+/nP6r/FKLtX17mJobErHECXsYw==} + engines: {node: '>=8'} dependencies: '@sentry-internal/tracing': 7.102.1 '@sentry/core': 7.102.1 '@sentry/types': 7.102.1 '@sentry/utils': 7.102.1 + dev: false - '@sentry/react@7.102.1(react@18.2.0)': + /@sentry/react@7.102.1(react@18.2.0): + resolution: {integrity: sha512-X4j2DgbktlEifnd21YJKCayAmff5hnaS+9MNz9OonEwD0ARi0ks7bo0wtWHMjPK20992MO+JwczVg/1BXJYDdQ==} + engines: {node: '>=8'} + peerDependencies: + react: 15.x || 16.x || 17.x || 18.x dependencies: '@sentry/browser': 7.102.1 '@sentry/core': 7.102.1 @@ -6493,178 +2284,351 @@ snapshots: '@sentry/utils': 7.102.1 hoist-non-react-statics: 3.3.2 react: 18.2.0 + dev: false - '@sentry/replay@7.102.1': + /@sentry/replay@7.102.1: + resolution: {integrity: sha512-HR/j9dGIvbrId8fh8mQlODx7JrhRmawEd9e9P3laPtogWCg/5TI+XPb2VGSaXOX9VWtb/6Z2UjHsaGjgg6YcuA==} + engines: {node: '>=12'} dependencies: '@sentry-internal/tracing': 7.102.1 '@sentry/core': 7.102.1 '@sentry/types': 7.102.1 '@sentry/utils': 7.102.1 + dev: false - '@sentry/types@7.102.1': {} + /@sentry/types@7.102.1: + resolution: {integrity: sha512-htKorf3t/D0XYtM7foTcmG+rM47rDP6XdbvCcX5gBCuCYlzpM1vqCt2rl3FLktZC6TaIpFRJw1TLfx6m+x5jdA==} + engines: {node: '>=8'} + dev: false - '@sentry/utils@7.102.1': + /@sentry/utils@7.102.1: + resolution: {integrity: sha512-+8WcFjHVV/HROXSAwMuUzveElBFC43EiTG7SNEBNgOUeQzQVTmbUZXyTVgLrUmtoWqvnIxCacoLxtZo1o67kdg==} + engines: {node: '>=8'} dependencies: '@sentry/types': 7.102.1 + dev: false - '@sentry/vercel-edge@7.102.1': + /@sentry/vercel-edge@7.102.1: + resolution: {integrity: sha512-iB6KCSxrvO172VjfQHGiYpyXPKNbx6Cz01GA1YDByRiUSgSpAq0qAFRY4lvd736w5KX4s9hen+XmZ7Gmqj8Pag==} + engines: {node: '>=8'} dependencies: '@sentry-internal/tracing': 7.102.1 '@sentry/core': 7.102.1 '@sentry/types': 7.102.1 '@sentry/utils': 7.102.1 + dev: false - '@sentry/webpack-plugin@1.21.0': + /@sentry/webpack-plugin@1.21.0: + resolution: {integrity: sha512-x0PYIMWcsTauqxgl7vWUY6sANl+XGKtx7DCVnnY7aOIIlIna0jChTAPANTfA2QrK+VK+4I/4JxatCEZBnXh3Og==} + engines: {node: '>= 8'} dependencies: '@sentry/cli': 1.77.3 webpack-sources: 3.2.3 transitivePeerDependencies: - encoding - supports-color + dev: false - '@slack/types@2.10.0': {} + /@slack/types@2.10.0: + resolution: {integrity: sha512-JXY9l49rf7dDgvfMZi0maFyugzGkvq0s5u+kDlD68WaRUhjZNLBDKZcsrycMsVVDFfyOK0R1UKkYGmy9Ph069Q==} + engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} + dev: false - '@slack/webhook@7.0.1': + /@slack/webhook@7.0.1: + resolution: {integrity: sha512-0Uj/GQ1H8nmeAVEx+7zcWb6/q/zsSOrlIaGi6zFnwgMSxjmV6xGsVwv8w6DaAdkUbtqa43v1cirWjySeZaCOIA==} + engines: {node: '>= 18', npm: '>= 8.6.0'} dependencies: '@slack/types': 2.10.0 '@types/node': 20.5.6 axios: 1.6.2 transitivePeerDependencies: - debug + dev: false - '@stripe/stripe-js@2.4.0': {} + /@stripe/stripe-js@2.4.0: + resolution: {integrity: sha512-WFkQx1mbs2b5+7looI9IV1BLa3bIApuN3ehp9FP58xGg7KL9hCHDECgW3BwO9l9L+xBPVAD7Yjn1EhGe6EDTeA==} + dev: false - '@swc-jotai/react-refresh@0.1.0': {} + /@swc-jotai/react-refresh@0.1.0: + resolution: {integrity: sha512-CWV4W06GdfQo3cW3CoUM2fp7avH4Z/suR7SvECNJnQbr6Sa9U3p7o10nXjNv2zT6z09bbNUPM55HBw5Nwd24Iw==} + dev: true - '@swc/counter@0.1.3': {} + /@swc/counter@0.1.3: + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + dev: false - '@swc/helpers@0.5.5': + /@swc/helpers@0.5.5: + resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} dependencies: '@swc/counter': 0.1.3 tslib: 2.6.2 + dev: false - '@tootallnate/once@2.0.0': {} + /@tootallnate/once@2.0.0: + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + dev: false - '@tsconfig/node10@1.0.9': {} + /@tsconfig/node10@1.0.9: + resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} - '@tsconfig/node12@1.0.11': {} + /@tsconfig/node12@1.0.11: + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - '@tsconfig/node14@1.0.3': {} + /@tsconfig/node14@1.0.3: + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - '@tsconfig/node16@1.0.4': {} + /@tsconfig/node16@1.0.4: + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - '@types/caseless@0.12.5': {} + /@types/caseless@0.12.5: + resolution: {integrity: sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==} + dev: false - '@types/debug@4.1.8': + /@types/debug@4.1.8: + resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} dependencies: '@types/ms': 0.7.31 + dev: false - '@types/eslint-scope@3.7.7': + /@types/eslint-scope@3.7.7: + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} dependencies: '@types/eslint': 8.56.0 '@types/estree': 1.0.5 + dev: false - '@types/eslint@8.56.0': + /@types/eslint@8.56.0: + resolution: {integrity: sha512-FlsN0p4FhuYRjIxpbdXovvHQhtlG05O1GG/RNWvdAxTboR438IOTwmrY/vLA+Xfgg06BTkP045M3vpFwTMv1dg==} dependencies: '@types/estree': 1.0.5 '@types/json-schema': 7.0.15 + dev: false - '@types/estree-jsx@1.0.3': + /@types/estree-jsx@1.0.3: + resolution: {integrity: sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==} dependencies: '@types/estree': 1.0.5 + dev: false - '@types/estree@1.0.5': {} + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + dev: false - '@types/formidable@3.4.5': + /@types/formidable@3.4.5: + resolution: {integrity: sha512-s7YPsNVfnsng5L8sKnG/Gbb2tiwwJTY1conOkJzTMRvJAlLFW1nEua+ADsJQu8N1c0oTHx9+d5nqg10WuT9gHQ==} dependencies: '@types/node': 20.10.6 + dev: true - '@types/hast@2.3.5': + /@types/hast@2.3.5: + resolution: {integrity: sha512-SvQi0L/lNpThgPoleH53cdjB3y9zpLlVjRbqB3rH8hx1jiRSBGAhyjV3H+URFjNVRqt2EdYNrbZE5IsGlNfpRg==} dependencies: '@types/unist': 2.0.8 + dev: false - '@types/hast@3.0.0': + /@types/hast@3.0.0: + resolution: {integrity: sha512-SoytUJRuf68HXYqcXicQIhCrLQjqeYU2anikr4G3p3Iz+OZO5QDQpDj++gv+RenHsnUBwNZ2dumBArF8VLSk2Q==} dependencies: '@types/unist': 3.0.0 + dev: false - '@types/json-schema@7.0.12': {} + /@types/json-schema@7.0.12: + resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} + dev: false - '@types/json-schema@7.0.15': {} + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + dev: false - '@types/json5@0.0.29': {} + /@types/json5@0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: true - '@types/mdast@4.0.3': + /@types/mdast@4.0.3: + resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} dependencies: '@types/unist': 3.0.0 + dev: false - '@types/minimist@1.2.2': {} + /@types/minimist@1.2.2: + resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} + dev: true - '@types/ms@0.7.31': {} + /@types/ms@0.7.31: + resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} + dev: false - '@types/node@12.20.55': {} + /@types/node@12.20.55: + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + dev: true - '@types/node@20.10.6': + /@types/node@20.10.6: + resolution: {integrity: sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw==} dependencies: undici-types: 5.26.5 - '@types/node@20.5.6': {} + /@types/node@20.5.6: + resolution: {integrity: sha512-Gi5wRGPbbyOTX+4Y2iULQ27oUPrefaB0PxGQJnfyWN3kvEDGM3mIB5M/gQLmitZf7A9FmLeaqxD3L1CXpm3VKQ==} - '@types/normalize-package-data@2.4.1': {} + /@types/normalize-package-data@2.4.1: + resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} + dev: true - '@types/papaparse@5.3.14': + /@types/papaparse@5.3.14: + resolution: {integrity: sha512-LxJ4iEFcpqc6METwp9f6BV6VVc43m6MfH0VqFosHvrUgfXiFe6ww7R3itkOQ+TCK6Y+Iv/+RnnvtRZnkc5Kc9g==} dependencies: '@types/node': 20.10.6 + dev: false - '@types/prismjs@1.26.0': {} + /@types/prismjs@1.26.0: + resolution: {integrity: sha512-ZTaqn/qSqUuAq1YwvOFQfVW1AR/oQJlLSZVustdjwI+GZ8kr0MSHBj0tsXPW1EqHubx50gtBEjbPGsdZwQwCjQ==} + dev: false - '@types/prop-types@15.7.5': {} + /@types/prop-types@15.7.5: + resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} - '@types/react@18.0.27': + /@types/react@18.0.27: + resolution: {integrity: sha512-3vtRKHgVxu3Jp9t718R9BuzoD4NcQ8YJ5XRzsSKxNDiDonD2MXIT1TmSkenxuCycZJoQT5d2vE8LwWJxBC1gmA==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 csstype: 3.1.2 - '@types/request@2.48.12': + /@types/request@2.48.12: + resolution: {integrity: sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==} dependencies: '@types/caseless': 0.12.5 '@types/node': 20.10.6 '@types/tough-cookie': 4.0.5 form-data: 2.5.1 + dev: false - '@types/scheduler@0.16.3': {} + /@types/scheduler@0.16.3: + resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} - '@types/semver@7.5.1': {} + /@types/semver@7.5.1: + resolution: {integrity: sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==} + dev: true - '@types/tough-cookie@4.0.5': {} + /@types/tough-cookie@4.0.5: + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + dev: false - '@types/unist@2.0.8': {} + /@types/unist@2.0.8: + resolution: {integrity: sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==} + dev: false - '@types/unist@3.0.0': {} + /@types/unist@3.0.0: + resolution: {integrity: sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==} + dev: false - '@typeschema/core@0.13.2(@types/json-schema@7.0.15)': - optionalDependencies: - '@types/json-schema': 7.0.15 + /@typeschema/core@0.13.2: + resolution: {integrity: sha512-pAt0MK249/9szYaoPuvzhSfOd3smrLhhwCCpUNB4onX32mRx5F3lzDIveIYGQkLYRq58xOX5sjoW+n72f/MLLw==} + peerDependencies: + '@types/json-schema': ^7.0.15 + peerDependenciesMeta: + '@types/json-schema': + optional: true + dev: false - '@typeschema/main@0.13.10(@types/json-schema@7.0.15)(@typeschema/zod@0.13.3(@types/json-schema@7.0.15)(zod@3.22.4))': + /@typeschema/main@0.13.10(@typeschema/zod@0.13.3): + resolution: {integrity: sha512-ArdFC4GbgdVWWgPKg2tymxx2KHMus3xZ8I2kHwqw/0P4FtWBXCmSNAiBqDtpoXXF8h9cbcm7fVpcs5ftoWT9+A==} + peerDependencies: + '@typeschema/arktype': 0.13.2 + '@typeschema/class-validator': 0.1.2 + '@typeschema/deepkit': 0.13.4 + '@typeschema/effect': 0.13.4 + '@typeschema/fastest-validator': 0.1.0 + '@typeschema/function': 0.13.2 + '@typeschema/io-ts': 0.13.3 + '@typeschema/joi': 0.13.3 + '@typeschema/json': 0.13.3 + '@typeschema/ow': 0.13.3 + '@typeschema/runtypes': 0.13.2 + '@typeschema/superstruct': 0.13.2 + '@typeschema/suretype': 0.1.0 + '@typeschema/typebox': 0.13.4 + '@typeschema/valibot': 0.13.5 + '@typeschema/valita': 0.1.0 + '@typeschema/vine': 0.1.0 + '@typeschema/yup': 0.13.3 + '@typeschema/zod': 0.13.3 + peerDependenciesMeta: + '@typeschema/arktype': + optional: true + '@typeschema/class-validator': + optional: true + '@typeschema/deepkit': + optional: true + '@typeschema/effect': + optional: true + '@typeschema/fastest-validator': + optional: true + '@typeschema/function': + optional: true + '@typeschema/io-ts': + optional: true + '@typeschema/joi': + optional: true + '@typeschema/json': + optional: true + '@typeschema/ow': + optional: true + '@typeschema/runtypes': + optional: true + '@typeschema/superstruct': + optional: true + '@typeschema/suretype': + optional: true + '@typeschema/typebox': + optional: true + '@typeschema/valibot': + optional: true + '@typeschema/valita': + optional: true + '@typeschema/vine': + optional: true + '@typeschema/yup': + optional: true + '@typeschema/zod': + optional: true dependencies: - '@typeschema/core': 0.13.2(@types/json-schema@7.0.15) - optionalDependencies: - '@typeschema/zod': 0.13.3(@types/json-schema@7.0.15)(zod@3.22.4) + '@typeschema/core': 0.13.2 + '@typeschema/zod': 0.13.3(zod@3.22.4) transitivePeerDependencies: - '@types/json-schema' + dev: false - '@typeschema/zod@0.13.3(@types/json-schema@7.0.15)(zod@3.22.4)': + /@typeschema/zod@0.13.3(zod@3.22.4): + resolution: {integrity: sha512-p5Hs22WIKkM/vZTAvw5QOLSA0EJ6QBUsQMGUrXlYnTAE2LSR/F5MLsDUb18O6S5VxGjrzU7x3VIznD5qOafJRw==} + peerDependencies: + zod: ^3.22.4 + zod-to-json-schema: ^3.22.4 + peerDependenciesMeta: + zod: + optional: true + zod-to-json-schema: + optional: true dependencies: - '@typeschema/core': 0.13.2(@types/json-schema@7.0.15) - optionalDependencies: + '@typeschema/core': 0.13.2 zod: 3.22.4 transitivePeerDependencies: - '@types/json-schema' + dev: false - '@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3)': + /@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.12.0)(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-aAJd6bIf2vvQRjUG3ZkNXkmBpN+J7Wd0mfQiiVCJMu9Z5GcZZdcc0j8XwN/BM97Fl7e3SkTXODSk4VehUv7CGw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@eslint-community/regexpp': 4.11.0 + '@eslint-community/regexpp': 4.10.1 '@typescript-eslint/parser': 7.12.0(eslint@8.57.0)(typescript@5.3.3) '@typescript-eslint/scope-manager': 7.14.1 '@typescript-eslint/type-utils': 7.14.1(eslint@8.57.0)(typescript@5.3.3) @@ -6675,12 +2639,20 @@ snapshots: ignore: 5.3.1 natural-compare: 1.4.0 ts-api-utils: 1.3.0(typescript@5.3.3) - optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - supports-color + dev: true - '@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3)': + /@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-C4bBaX2orvhK+LlwrY8oWGmSl4WolCfYm513gEccdWZj0CwGadbIADb0FtVEcI+WzUyjyoBj2JRP8g25E6IB8A==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: '@typescript-eslint/scope-manager': 6.17.0 '@typescript-eslint/types': 6.17.0 @@ -6688,12 +2660,20 @@ snapshots: '@typescript-eslint/visitor-keys': 6.17.0 debug: 4.3.4 eslint: 8.57.0 - optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - supports-color + dev: true - '@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3)': + /@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-dm/J2UDY3oV3TKius2OUZIFHsomQmpHtsV0FTh1WO8EKgHLQ1QCADUqscPgTpU+ih1e21FQSRjXckHn3txn6kQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: '@typescript-eslint/scope-manager': 7.12.0 '@typescript-eslint/types': 7.12.0 @@ -6701,45 +2681,78 @@ snapshots: '@typescript-eslint/visitor-keys': 7.12.0 debug: 4.3.4 eslint: 8.57.0 - optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - supports-color + dev: true - '@typescript-eslint/scope-manager@6.17.0': + /@typescript-eslint/scope-manager@6.17.0: + resolution: {integrity: sha512-RX7a8lwgOi7am0k17NUO0+ZmMOX4PpjLtLRgLmT1d3lBYdWH4ssBUbwdmc5pdRX8rXon8v9x8vaoOSpkHfcXGA==} + engines: {node: ^16.0.0 || >=18.0.0} dependencies: '@typescript-eslint/types': 6.17.0 '@typescript-eslint/visitor-keys': 6.17.0 + dev: true - '@typescript-eslint/scope-manager@7.12.0': + /@typescript-eslint/scope-manager@7.12.0: + resolution: {integrity: sha512-itF1pTnN6F3unPak+kutH9raIkL3lhH1YRPGgt7QQOh43DQKVJXmWkpb+vpc/TiDHs6RSd9CTbDsc/Y+Ygq7kg==} + engines: {node: ^18.18.0 || >=20.0.0} dependencies: '@typescript-eslint/types': 7.12.0 '@typescript-eslint/visitor-keys': 7.12.0 + dev: true - '@typescript-eslint/scope-manager@7.14.1': + /@typescript-eslint/scope-manager@7.14.1: + resolution: {integrity: sha512-gPrFSsoYcsffYXTOZ+hT7fyJr95rdVe4kGVX1ps/dJ+DfmlnjFN/GcMxXcVkeHDKqsq6uAcVaQaIi3cFffmAbA==} + engines: {node: ^18.18.0 || >=20.0.0} dependencies: '@typescript-eslint/types': 7.14.1 '@typescript-eslint/visitor-keys': 7.14.1 + dev: true - '@typescript-eslint/type-utils@7.14.1(eslint@8.57.0)(typescript@5.3.3)': + /@typescript-eslint/type-utils@7.14.1(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-/MzmgNd3nnbDbOi3LfasXWWe292+iuo+umJ0bCCMCPc1jLO/z2BQmWUUUXvXLbrQey/JgzdF/OV+I5bzEGwJkQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.3.3) '@typescript-eslint/utils': 7.14.1(eslint@8.57.0)(typescript@5.3.3) debug: 4.3.4 eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.3.3) - optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - supports-color + dev: true - '@typescript-eslint/types@6.17.0': {} + /@typescript-eslint/types@6.17.0: + resolution: {integrity: sha512-qRKs9tvc3a4RBcL/9PXtKSehI/q8wuU9xYJxe97WFxnzH8NWWtcW3ffNS+EWg8uPvIerhjsEZ+rHtDqOCiH57A==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true - '@typescript-eslint/types@7.12.0': {} + /@typescript-eslint/types@7.12.0: + resolution: {integrity: sha512-o+0Te6eWp2ppKY3mLCU+YA9pVJxhUJE15FV7kxuD9jgwIAa+w/ycGJBMrYDTpVGUM/tgpa9SeMOugSabWFq7bg==} + engines: {node: ^18.18.0 || >=20.0.0} + dev: true - '@typescript-eslint/types@7.14.1': {} + /@typescript-eslint/types@7.14.1: + resolution: {integrity: sha512-mL7zNEOQybo5R3AavY+Am7KLv8BorIv7HCYS5rKoNZKQD9tsfGUpO4KdAn3sSUvTiS4PQkr2+K0KJbxj8H9NDg==} + engines: {node: ^18.18.0 || >=20.0.0} + dev: true - '@typescript-eslint/typescript-estree@6.17.0(typescript@5.3.3)': + /@typescript-eslint/typescript-estree@6.17.0(typescript@5.3.3): + resolution: {integrity: sha512-gVQe+SLdNPfjlJn5VNGhlOhrXz4cajwFd5kAgWtZ9dCZf4XJf8xmgCTLIqec7aha3JwgLI2CK6GY1043FRxZwg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: '@typescript-eslint/types': 6.17.0 '@typescript-eslint/visitor-keys': 6.17.0 @@ -6748,13 +2761,20 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.3 semver: 7.6.2 - ts-api-utils: 1.3.0(typescript@5.3.3) - optionalDependencies: + ts-api-utils: 1.0.3(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - supports-color + dev: true - '@typescript-eslint/typescript-estree@7.12.0(typescript@5.3.3)': + /@typescript-eslint/typescript-estree@7.12.0(typescript@5.3.3): + resolution: {integrity: sha512-5bwqLsWBULv1h6pn7cMW5dXX/Y2amRqLaKqsASVwbBHMZSnHqE/HN4vT4fE0aFsiwxYvr98kqOWh1a8ZKXalCQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: '@typescript-eslint/types': 7.12.0 '@typescript-eslint/visitor-keys': 7.12.0 @@ -6764,12 +2784,19 @@ snapshots: minimatch: 9.0.4 semver: 7.6.2 ts-api-utils: 1.3.0(typescript@5.3.3) - optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - supports-color + dev: true - '@typescript-eslint/typescript-estree@7.14.1(typescript@5.3.3)': + /@typescript-eslint/typescript-estree@7.14.1(typescript@5.3.3): + resolution: {integrity: sha512-k5d0VuxViE2ulIO6FbxxSZaxqDVUyMbXcidC8rHvii0I56XZPv8cq+EhMns+d/EVIL41sMXqRbK3D10Oza1bbA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: '@typescript-eslint/types': 7.14.1 '@typescript-eslint/visitor-keys': 7.14.1 @@ -6779,12 +2806,16 @@ snapshots: minimatch: 9.0.4 semver: 7.6.2 ts-api-utils: 1.3.0(typescript@5.3.3) - optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - supports-color + dev: true - '@typescript-eslint/utils@7.14.1(eslint@8.57.0)(typescript@5.3.3)': + /@typescript-eslint/utils@7.14.1(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-CMmVVELns3nak3cpJhZosDkm63n+DwBlDX8g0k4QUa9BMnF+lH2lr3d130M1Zt1xxmB3LLk3NV7KQCq86ZBBhQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@typescript-eslint/scope-manager': 7.14.1 @@ -6794,93 +2825,161 @@ snapshots: transitivePeerDependencies: - supports-color - typescript + dev: true - '@typescript-eslint/visitor-keys@6.17.0': + /@typescript-eslint/visitor-keys@6.17.0: + resolution: {integrity: sha512-H6VwB/k3IuIeQOyYczyyKN8wH6ed8EwliaYHLxOIhyF0dYEIsN8+Bk3GE19qafeMKyZJJHP8+O1HiFhFLUNKSg==} + engines: {node: ^16.0.0 || >=18.0.0} dependencies: '@typescript-eslint/types': 6.17.0 eslint-visitor-keys: 3.4.3 + dev: true - '@typescript-eslint/visitor-keys@7.12.0': + /@typescript-eslint/visitor-keys@7.12.0: + resolution: {integrity: sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ==} + engines: {node: ^18.18.0 || >=20.0.0} dependencies: '@typescript-eslint/types': 7.12.0 eslint-visitor-keys: 3.4.3 + dev: true - '@typescript-eslint/visitor-keys@7.14.1': + /@typescript-eslint/visitor-keys@7.14.1: + resolution: {integrity: sha512-Crb+F75U1JAEtBeQGxSKwI60hZmmzaqA3z9sYsVm8X7W5cwLEm5bRe0/uXS6+MR/y8CVpKSR/ontIAIEPFcEkA==} + engines: {node: ^18.18.0 || >=20.0.0} dependencies: '@typescript-eslint/types': 7.14.1 eslint-visitor-keys: 3.4.3 + dev: true - '@uiw/color-convert@2.0.8(@babel/runtime@7.23.7)': + /@uiw/color-convert@2.0.8(@babel/runtime@7.23.7): + resolution: {integrity: sha512-yh0Q91FwTNCl5rMpNSQSlpazMz65V6V0LMIyssHk0ris4af9xQi+t01snLP+Dbjbk4HaSy7b8AptTP3NudggdQ==} + peerDependencies: + '@babel/runtime': '>=7.19.0' dependencies: '@babel/runtime': 7.23.7 + dev: false - '@uiw/copy-to-clipboard@1.0.15': {} + /@uiw/copy-to-clipboard@1.0.15: + resolution: {integrity: sha512-1bbGZ3T+SGmA07BoVPK4UCUDcowDN/moctviJGQexfOc9qL8TMLDQPr7mTPvDKhgJkgnlKkAQNFU8PiarIi9sQ==} + dev: false - '@uiw/react-color-alpha@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + /@uiw/react-color-alpha@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-QppWrb7QBTIi0xZ6Q818tSi0LpZfkB323Q4F36a/vH4chzqOJAj6aCFM18d1CqjcLT4R1gnDhBSlW2dVD/4YoQ==} + peerDependencies: + '@babel/runtime': '>=7.19.0' + react: '>=16.9.0' + react-dom: '>=16.9.0' dependencies: '@babel/runtime': 7.23.7 '@uiw/color-convert': 2.0.8(@babel/runtime@7.23.7) - '@uiw/react-drag-event-interactive': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@uiw/react-drag-event-interactive': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + dev: false - '@uiw/react-color-editable-input-rgba@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + /@uiw/react-color-editable-input-rgba@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-3bPmbyc1u6T++ap0pKl9w+x4+llDtLAuXY41NgNEUKhd63rMZjnVbVnFnzvIUDL92JRB5m+a+3Rr3n1TheeFew==} + peerDependencies: + '@babel/runtime': '>=7.19.0' + react: '>=16.9.0' + react-dom: '>=16.9.0' dependencies: '@babel/runtime': 7.23.7 '@uiw/color-convert': 2.0.8(@babel/runtime@7.23.7) - '@uiw/react-color-editable-input': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@uiw/react-color-editable-input': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + dev: false - '@uiw/react-color-editable-input@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + /@uiw/react-color-editable-input@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-WpehDwnIRTIOUYAnchSVjZu+TwJjA1vCiK+tMkgta/Nu2qI3bLLPTwKmIF1cQgcrEEKvfgaqOD3yP7BvjjKFJA==} + peerDependencies: + '@babel/runtime': '>=7.19.0' + react: '>=16.9.0' + react-dom: '>=16.9.0' dependencies: '@babel/runtime': 7.23.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + dev: false - '@uiw/react-color-hue@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + /@uiw/react-color-hue@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-h3EKzc87/leSq94dBchAqN+0liPQZismqjlGOM2LsZadGqgn9pO4+3+SlO4kD5IdQIybCRXmK3zVUVGDdxOIYg==} + peerDependencies: + '@babel/runtime': '>=7.19.0' + react: '>=16.9.0' + react-dom: '>=16.9.0' dependencies: '@babel/runtime': 7.23.7 '@uiw/color-convert': 2.0.8(@babel/runtime@7.23.7) - '@uiw/react-color-alpha': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@uiw/react-color-alpha': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + dev: false - '@uiw/react-color-saturation@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + /@uiw/react-color-saturation@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-cBZ5Al4YrHOYTcWiRQzjYiT5Llgv7pnFEZPy07dQ5NSL+FlzQmDfjVmQynXUqYG3IqQrx0Md4jJLLhhLP9Q5MQ==} + peerDependencies: + '@babel/runtime': '>=7.19.0' + react: '>=16.9.0' + react-dom: '>=16.9.0' dependencies: '@babel/runtime': 7.23.7 '@uiw/color-convert': 2.0.8(@babel/runtime@7.23.7) - '@uiw/react-drag-event-interactive': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@uiw/react-drag-event-interactive': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + dev: false - '@uiw/react-color-sketch@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + /@uiw/react-color-sketch@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-4b4mDMJHTsxuab75bmcH5OvDOvcam8irkYapIbcVLJzrBurWiuxflMdmsht37hKegPOsRp6m0NONfEGcUtg1fQ==} + peerDependencies: + '@babel/runtime': '>=7.19.0' + react: '>=16.9.0' + react-dom: '>=16.9.0' dependencies: '@babel/runtime': 7.23.7 '@uiw/color-convert': 2.0.8(@babel/runtime@7.23.7) - '@uiw/react-color-alpha': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@uiw/react-color-editable-input': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@uiw/react-color-editable-input-rgba': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@uiw/react-color-hue': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@uiw/react-color-saturation': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@uiw/react-color-swatch': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@uiw/react-color-alpha': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) + '@uiw/react-color-editable-input': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) + '@uiw/react-color-editable-input-rgba': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) + '@uiw/react-color-hue': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) + '@uiw/react-color-saturation': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) + '@uiw/react-color-swatch': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + dev: false - '@uiw/react-color-swatch@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + /@uiw/react-color-swatch@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ZURW9tsTNv8ea5TJqYvN2gqoljrhtjPpzs4UC9C7vfI6JvDdjAzIyMwRwRVCftekOtvLvdGZzXYXbGxPF4BvTQ==} + peerDependencies: + '@babel/runtime': '>=7.19.0' + react: '>=16.9.0' + react-dom: '>=16.9.0' dependencies: '@babel/runtime': 7.23.7 '@uiw/color-convert': 2.0.8(@babel/runtime@7.23.7) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + dev: false - '@uiw/react-drag-event-interactive@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + /@uiw/react-drag-event-interactive@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Z8awDfUV7970Q6GfJmx6x7fx5KeHn6RPinQVRYRAnKS7QP6XgQOIvVn8bYKe5vd4vQeBbzIVYYySjYRWjA5heA==} + peerDependencies: + '@babel/runtime': '>=7.19.0' + react: '>=16.9.0' + react-dom: '>=16.9.0' dependencies: '@babel/runtime': 7.23.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + dev: false - '@uiw/react-markdown-preview@5.0.6(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + /@uiw/react-markdown-preview@5.0.6(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-zd+T02xFhy6K75XPdkF3RRAWKzVzJctZ6CCpFDcn/CgdQlEj8Z+Z9k11nkPspzbznB43UYdoe4qQvnjgG6TfZw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' dependencies: '@babel/runtime': 7.22.11 '@uiw/copy-to-clipboard': 1.0.15 @@ -6899,11 +2998,16 @@ snapshots: transitivePeerDependencies: - '@types/react' - supports-color + dev: false - '@uiw/react-md-editor@4.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + /@uiw/react-md-editor@4.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-TvChXxUBUS21Rk0cVC0aeJoWcFZ/G0xN/Hc4Lv9FGFK8wPOHESd7Bcq4jNRHJ6lEzE/+d4Wh00lEVNKj+rQyBw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' dependencies: '@babel/runtime': 7.23.7 - '@uiw/react-markdown-preview': 5.0.6(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@uiw/react-markdown-preview': 5.0.6(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) rehype: 13.0.1 @@ -6911,46 +3015,69 @@ snapshots: transitivePeerDependencies: - '@types/react' - supports-color + dev: false - '@ungap/structured-clone@1.2.0': {} + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - '@webassemblyjs/ast@1.11.6': + /@webassemblyjs/ast@1.11.6: + resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} dependencies: '@webassemblyjs/helper-numbers': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + dev: false - '@webassemblyjs/floating-point-hex-parser@1.11.6': {} + /@webassemblyjs/floating-point-hex-parser@1.11.6: + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + dev: false - '@webassemblyjs/helper-api-error@1.11.6': {} + /@webassemblyjs/helper-api-error@1.11.6: + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + dev: false - '@webassemblyjs/helper-buffer@1.11.6': {} + /@webassemblyjs/helper-buffer@1.11.6: + resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + dev: false - '@webassemblyjs/helper-numbers@1.11.6': + /@webassemblyjs/helper-numbers@1.11.6: + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} dependencies: '@webassemblyjs/floating-point-hex-parser': 1.11.6 '@webassemblyjs/helper-api-error': 1.11.6 '@xtuc/long': 4.2.2 + dev: false - '@webassemblyjs/helper-wasm-bytecode@1.11.6': {} + /@webassemblyjs/helper-wasm-bytecode@1.11.6: + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + dev: false - '@webassemblyjs/helper-wasm-section@1.11.6': + /@webassemblyjs/helper-wasm-section@1.11.6: + resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} dependencies: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/helper-buffer': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/wasm-gen': 1.11.6 + dev: false - '@webassemblyjs/ieee754@1.11.6': + /@webassemblyjs/ieee754@1.11.6: + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} dependencies: '@xtuc/ieee754': 1.2.0 + dev: false - '@webassemblyjs/leb128@1.11.6': + /@webassemblyjs/leb128@1.11.6: + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} dependencies: '@xtuc/long': 4.2.2 + dev: false - '@webassemblyjs/utf8@1.11.6': {} + /@webassemblyjs/utf8@1.11.6: + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + dev: false - '@webassemblyjs/wasm-edit@1.11.6': + /@webassemblyjs/wasm-edit@1.11.6: + resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} dependencies: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/helper-buffer': 1.11.6 @@ -6960,23 +3087,29 @@ snapshots: '@webassemblyjs/wasm-opt': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 '@webassemblyjs/wast-printer': 1.11.6 + dev: false - '@webassemblyjs/wasm-gen@1.11.6': + /@webassemblyjs/wasm-gen@1.11.6: + resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} dependencies: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 + dev: false - '@webassemblyjs/wasm-opt@1.11.6': + /@webassemblyjs/wasm-opt@1.11.6: + resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} dependencies: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/helper-buffer': 1.11.6 '@webassemblyjs/wasm-gen': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 + dev: false - '@webassemblyjs/wasm-parser@1.11.6': + /@webassemblyjs/wasm-parser@1.11.6: + resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} dependencies: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/helper-api-error': 1.11.6 @@ -6984,139 +3117,232 @@ snapshots: '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 + dev: false - '@webassemblyjs/wast-printer@1.11.6': + /@webassemblyjs/wast-printer@1.11.6: + resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} dependencies: '@webassemblyjs/ast': 1.11.6 '@xtuc/long': 4.2.2 + dev: false - '@xtuc/ieee754@1.2.0': {} + /@xtuc/ieee754@1.2.0: + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + dev: false - '@xtuc/long@4.2.2': {} + /@xtuc/long@4.2.2: + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + dev: false - abbrev@2.0.0: {} + /abbrev@2.0.0: + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: false - abort-controller@3.0.0: + /abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} dependencies: event-target-shim: 5.0.1 + dev: false - acorn-import-assertions@1.9.0(acorn@8.11.3): + /acorn-import-assertions@1.9.0(acorn@8.11.3): + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + peerDependencies: + acorn: ^8 dependencies: acorn: 8.11.3 + dev: false - acorn-jsx@5.3.2(acorn@8.11.3): + /acorn-jsx@5.3.2(acorn@8.11.3): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: acorn: 8.11.3 + dev: true - acorn-walk@8.3.0: {} + /acorn-walk@8.3.0: + resolution: {integrity: sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==} + engines: {node: '>=0.4.0'} - acorn@8.10.0: {} + /acorn@8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} + engines: {node: '>=0.4.0'} + hasBin: true - acorn@8.11.3: {} + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true - agent-base@6.0.2: + /agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} dependencies: debug: 4.3.4 transitivePeerDependencies: - supports-color + dev: false - agent-base@7.1.0: + /agent-base@7.1.0: + resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} + engines: {node: '>= 14'} dependencies: debug: 4.3.4 transitivePeerDependencies: - supports-color + dev: false - ajv-formats@2.1.1(ajv@8.12.0): - optionalDependencies: + /ajv-formats@2.1.1(ajv@8.12.0): + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + dependencies: ajv: 8.12.0 + dev: false - ajv-keywords@3.5.2(ajv@6.12.6): + /ajv-keywords@3.5.2(ajv@6.12.6): + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 dependencies: ajv: 6.12.6 + dev: false - ajv-keywords@5.1.0(ajv@8.12.0): + /ajv-keywords@5.1.0(ajv@8.12.0): + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 dependencies: ajv: 8.12.0 fast-deep-equal: 3.1.3 + dev: false - ajv@6.12.6: + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.12.0: + /ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 uri-js: 4.4.1 + dev: false - ansi-colors@4.1.3: {} + /ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + dev: true - ansi-escapes@5.0.0: + /ansi-escapes@5.0.0: + resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} + engines: {node: '>=12'} dependencies: type-fest: 1.4.0 + dev: true - ansi-regex@5.0.1: {} + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} - ansi-regex@6.0.1: {} + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} - ansi-styles@3.2.1: + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} dependencies: color-convert: 1.9.3 - ansi-styles@4.3.0: + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} dependencies: color-convert: 2.0.1 - ansi-styles@6.2.1: {} + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} - any-promise@1.3.0: {} + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - anymatch@3.1.3: + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - arg@4.1.3: {} + /arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - arg@5.0.2: {} + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - argparse@1.0.10: + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: sprintf-js: 1.0.3 + dev: true - argparse@2.0.1: {} + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true - aria-hidden@1.2.3: + /aria-hidden@1.2.3: + resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==} + engines: {node: '>=10'} dependencies: tslib: 2.6.2 + dev: false - aria-query@5.3.0: + /aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} dependencies: dequal: 2.0.3 + dev: true - array-buffer-byte-length@1.0.0: + /array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} dependencies: call-bind: 1.0.5 is-array-buffer: 3.0.2 + dev: true - array-buffer-byte-length@1.0.1: + /array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 is-array-buffer: 3.0.4 + dev: true - array-includes@3.1.7: + /array-includes@3.1.7: + resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 get-intrinsic: 1.2.2 is-string: 1.0.7 + dev: true - array-includes@3.1.8: + /array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -7124,10 +3350,16 @@ snapshots: es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 is-string: 1.0.7 + dev: true - array-union@2.1.0: {} + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true - array.prototype.findlast@1.2.5: + /array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -7135,45 +3367,62 @@ snapshots: es-errors: 1.3.0 es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 + dev: true - array.prototype.findlastindex@1.2.3: + /array.prototype.findlastindex@1.2.3: + resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 es-shim-unscopables: 1.0.2 get-intrinsic: 1.2.2 + dev: true - array.prototype.flat@1.3.2: + /array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 es-shim-unscopables: 1.0.2 + dev: true - array.prototype.flatmap@1.3.2: + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 es-shim-unscopables: 1.0.2 + dev: true - array.prototype.toreversed@1.1.2: + /array.prototype.toreversed@1.1.2: + resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 es-shim-unscopables: 1.0.2 + dev: true - array.prototype.tosorted@1.1.4: + /array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-errors: 1.3.0 es-shim-unscopables: 1.0.2 + dev: true - arraybuffer.prototype.slice@1.0.2: + /arraybuffer.prototype.slice@1.0.2: + resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.0 call-bind: 1.0.5 @@ -7182,8 +3431,11 @@ snapshots: get-intrinsic: 1.2.2 is-array-buffer: 3.0.2 is-shared-array-buffer: 1.0.2 + dev: true - arraybuffer.prototype.slice@1.0.3: + /arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.1 call-bind: 1.0.7 @@ -7193,28 +3445,53 @@ snapshots: get-intrinsic: 1.2.4 is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.3 + dev: true - arrify@1.0.1: {} + /arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + dev: true - arrify@2.0.1: {} + /arrify@2.0.1: + resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} + engines: {node: '>=8'} + dev: false - asap@2.0.6: {} + /asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + dev: false - ast-types-flow@0.0.8: {} + /ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + dev: true - async-retry@1.3.3: + /async-retry@1.3.3: + resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} dependencies: retry: 0.13.1 + dev: false - asynciterator.prototype@1.0.0: + /asynciterator.prototype@1.0.0: + resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} dependencies: has-symbols: 1.0.3 + dev: true - asynckit@0.4.0: {} + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: false - attr-accept@2.2.2: {} + /attr-accept@2.2.2: + resolution: {integrity: sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==} + engines: {node: '>=4'} + dev: false - autoprefixer@10.4.16(postcss@8.4.28): + /autoprefixer@10.4.16(postcss@8.4.28): + resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 dependencies: browserslist: 4.21.10 caniuse-lite: 1.0.30001572 @@ -7223,156 +3500,259 @@ snapshots: picocolors: 1.0.0 postcss: 8.4.28 postcss-value-parser: 4.2.0 + dev: true - available-typed-arrays@1.0.5: {} + /available-typed-arrays@1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + dev: true - available-typed-arrays@1.0.7: + /available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} dependencies: possible-typed-array-names: 1.0.0 + dev: true - axe-core@4.7.0: {} + /axe-core@4.7.0: + resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} + engines: {node: '>=4'} + dev: true - axios@1.6.2: + /axios@1.6.2: + resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==} dependencies: follow-redirects: 1.15.2 form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug + dev: false - axobject-query@3.2.1: + /axobject-query@3.2.1: + resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} dependencies: dequal: 2.0.3 + dev: true - babel-loader@9.1.3(@babel/core@7.22.17)(webpack@5.89.0): + /babel-loader@9.1.3(@babel/core@7.22.17)(webpack@5.89.0): + resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} + engines: {node: '>= 14.15.0'} + peerDependencies: + '@babel/core': ^7.12.0 + webpack: '>=5' dependencies: '@babel/core': 7.22.17 find-cache-dir: 4.0.0 schema-utils: 4.2.0 webpack: 5.89.0 + dev: false - babel-plugin-transform-remove-imports@1.7.0(@babel/core@7.22.17): + /babel-plugin-transform-remove-imports@1.7.0(@babel/core@7.22.17): + resolution: {integrity: sha512-gprmWf6ry5qrnxMyiDaxZpXzZJP6R9FRA+p0AImLIWRmSEGtlKcFprHKeGMZYkII9rJR6Q1hYou+n1fk6rWf2g==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.17 + dev: false - bail@2.0.2: {} + /bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + dev: false - balanced-match@1.0.2: {} + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - base64-js@1.5.1: {} + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: false - bcp-47-match@2.0.3: {} + /bcp-47-match@2.0.3: + resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} + dev: false - better-path-resolve@1.0.0: + /better-path-resolve@1.0.0: + resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} + engines: {node: '>=4'} dependencies: is-windows: 1.0.2 + dev: true - bignumber.js@9.1.2: {} + /bignumber.js@9.1.2: + resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} + dev: false - binary-extensions@2.2.0: {} + /binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} - boolbase@1.0.0: {} + /boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: false - brace-expansion@1.1.11: + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.1: + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: balanced-match: 1.0.2 - braces@3.0.2: + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} dependencies: fill-range: 7.0.1 - breakword@1.0.6: + /breakword@1.0.6: + resolution: {integrity: sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==} dependencies: wcwidth: 1.0.1 + dev: true - browserslist@4.21.10: + /browserslist@4.21.10: + resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true dependencies: caniuse-lite: 1.0.30001572 electron-to-chromium: 1.4.503 node-releases: 2.0.13 update-browserslist-db: 1.0.11(browserslist@4.21.10) - browserslist@4.22.2: + /browserslist@4.22.2: + resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true dependencies: caniuse-lite: 1.0.30001587 electron-to-chromium: 1.4.616 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.22.2) + dev: false - buffer-equal-constant-time@1.0.1: {} + /buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + dev: false - buffer-from@1.1.2: {} + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: false - busboy@1.6.0: + /busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} dependencies: streamsearch: 1.1.0 + dev: false - call-bind@1.0.5: + /call-bind@1.0.5: + resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} dependencies: function-bind: 1.1.2 get-intrinsic: 1.2.2 set-function-length: 1.1.1 - call-bind@1.0.7: + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} dependencies: es-define-property: 1.0.0 es-errors: 1.3.0 function-bind: 1.1.2 get-intrinsic: 1.2.4 set-function-length: 1.2.2 + dev: true - callsites@3.1.0: {} + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true - camelcase-css@2.0.1: {} + /camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} - camelcase-keys@6.2.2: + /camelcase-keys@6.2.2: + resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} + engines: {node: '>=8'} dependencies: camelcase: 5.3.1 map-obj: 4.3.0 quick-lru: 4.0.1 + dev: true - camelcase@5.3.1: {} + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: true - caniuse-lite@1.0.30001572: {} + /caniuse-lite@1.0.30001572: + resolution: {integrity: sha512-1Pbh5FLmn5y4+QhNyJE9j3/7dK44dGB83/ZMjv/qJk86TvDbjk0LosiZo0i0WB0Vx607qMX9jYrn1VLHCkN4rw==} - caniuse-lite@1.0.30001587: {} + /caniuse-lite@1.0.30001587: + resolution: {integrity: sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA==} + dev: false - ccount@2.0.1: {} + /ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + dev: false - chalk@2.4.2: + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 - chalk@3.0.0: + /chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 + dev: false - chalk@4.1.2: + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 + dev: true - chalk@5.3.0: {} + /chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: true - character-entities-html4@2.1.0: {} + /character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + dev: false - character-entities-legacy@3.0.0: {} + /character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + dev: false - character-entities@2.0.2: {} + /character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + dev: false - character-reference-invalid@2.0.1: {} + /character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + dev: false - chardet@0.7.0: {} + /chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + dev: true - chokidar@3.5.3: + /chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} dependencies: anymatch: 3.1.3 braces: 3.0.2 @@ -7384,300 +3764,511 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - chrome-trace-event@1.0.3: {} + /chrome-trace-event@1.0.3: + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + engines: {node: '>=6.0'} + dev: false - ci-info@3.8.0: {} + /ci-info@3.8.0: + resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} + engines: {node: '>=8'} + dev: true - class-variance-authority@0.7.0: + /class-variance-authority@0.7.0: + resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} dependencies: clsx: 2.0.0 + dev: false - cli-cursor@4.0.0: + /cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: restore-cursor: 4.0.0 + dev: true - cli-truncate@3.1.0: + /cli-truncate@3.1.0: + resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: slice-ansi: 5.0.0 string-width: 5.1.2 + dev: true - client-only@0.0.1: {} + /client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + dev: false - cliui@6.0.0: + /cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 6.2.0 + dev: true - cliui@8.0.1: + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + dev: true - clone@1.0.4: {} + /clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + dev: true - clsx@2.0.0: {} + /clsx@2.0.0: + resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} + engines: {node: '>=6'} + dev: false - clsx@2.1.0: {} + /clsx@2.1.0: + resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} + engines: {node: '>=6'} + dev: false - color-convert@1.9.3: + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 - color-convert@2.0.1: + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 - color-name@1.1.3: {} + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - color-name@1.1.4: {} + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - colorette@2.0.20: {} + /colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + dev: true - combined-stream@1.0.8: + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 + dev: false - comma-separated-tokens@2.0.3: {} + /comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + dev: false - commander@10.0.1: {} + /commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + dev: false - commander@11.1.0: {} + /commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + dev: true - commander@2.20.3: {} + /commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: false - commander@4.1.1: {} + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} - common-path-prefix@3.0.0: {} + /common-path-prefix@3.0.0: + resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} + dev: false - commondir@1.0.1: {} + /commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + dev: false - compressible@2.0.18: + /compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 + dev: false - concat-map@0.0.1: {} + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - config-chain@1.1.13: + /config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} dependencies: ini: 1.3.8 proto-list: 1.2.4 + dev: false - confusing-browser-globals@1.0.11: {} + /confusing-browser-globals@1.0.11: + resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + dev: true - convert-source-map@1.9.0: {} + /convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + dev: false - cookie@0.5.0: {} + /cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + dev: false - create-require@1.1.1: {} + /create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - cross-spawn@5.1.0: + /cross-spawn@5.1.0: + resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} dependencies: lru-cache: 4.1.5 shebang-command: 1.2.0 which: 1.3.1 + dev: true - cross-spawn@7.0.3: + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - css-selector-parser@3.0.4: {} + /css-selector-parser@3.0.4: + resolution: {integrity: sha512-pnmS1dbKsz6KA4EW4BznyPL2xxkNDRg62hcD0v8g6DEw2W7hxOln5M953jsp9hmw5Dg57S6o/A8GOn37mbAgcQ==} + dev: false - cssesc@3.0.0: {} + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true - csstype@3.1.2: {} + /csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} - csv-generate@3.4.3: {} + /csv-generate@3.4.3: + resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} + dev: true - csv-parse@4.16.3: {} + /csv-parse@4.16.3: + resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} + dev: true - csv-stringify@5.6.5: {} + /csv-stringify@5.6.5: + resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} + dev: true - csv@5.5.3: + /csv@5.5.3: + resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} + engines: {node: '>= 0.1.90'} dependencies: csv-generate: 3.4.3 csv-parse: 4.16.3 csv-stringify: 5.6.5 stream-transform: 2.1.3 + dev: true - damerau-levenshtein@1.0.8: {} + /damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + dev: true - data-view-buffer@1.0.1: + /data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 + dev: true - data-view-byte-length@1.0.1: + /data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 + dev: true - data-view-byte-offset@1.0.0: + /data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 + dev: true - debug@3.2.7: + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.1.2 + dev: true - debug@4.3.4: + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.1.2 - decamelize-keys@1.1.1: + /decamelize-keys@1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} + engines: {node: '>=0.10.0'} dependencies: decamelize: 1.2.0 map-obj: 1.0.1 + dev: true - decamelize@1.2.0: {} + /decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + dev: true - decode-named-character-reference@1.0.2: + /decode-named-character-reference@1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} dependencies: character-entities: 2.0.2 + dev: false - deep-is@0.1.4: {} + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true - deepmerge@4.3.1: {} + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: false - defaults@1.0.4: + /defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: clone: 1.0.4 + dev: true - define-data-property@1.1.1: + /define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.2 gopd: 1.0.1 has-property-descriptors: 1.0.1 - define-data-property@1.1.4: + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} dependencies: es-define-property: 1.0.0 es-errors: 1.3.0 gopd: 1.0.1 + dev: true - define-properties@1.2.1: + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.1 has-property-descriptors: 1.0.1 object-keys: 1.1.1 + dev: true - delayed-stream@1.0.0: {} + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: false - dequal@2.0.3: {} + /dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} - detect-indent@6.1.0: {} + /detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + dev: true - detect-node-es@1.1.0: {} + /detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + dev: false - devlop@1.1.0: + /devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} dependencies: dequal: 2.0.3 + dev: false - dezalgo@1.0.4: + /dezalgo@1.0.4: + resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} dependencies: asap: 2.0.6 wrappy: 1.0.2 + dev: false - didyoumean@1.2.2: {} + /didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - diff@4.0.2: {} + /diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} - dir-glob@3.0.1: + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} dependencies: path-type: 4.0.0 + dev: true - direction@2.0.1: {} + /direction@2.0.1: + resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} + hasBin: true + dev: false - dlv@1.1.3: {} + /dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - doctrine@2.1.0: + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} dependencies: esutils: 2.0.3 + dev: true - doctrine@3.0.0: + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 + dev: true - dom-serializer@2.0.0: + /dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 entities: 4.5.0 + dev: false - domelementtype@2.3.0: {} + /domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: false - domhandler@5.0.3: + /domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} dependencies: domelementtype: 2.3.0 + dev: false - domutils@3.1.0: + /domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} dependencies: dom-serializer: 2.0.0 domelementtype: 2.3.0 domhandler: 5.0.3 + dev: false - dotenv@16.4.5: {} + /dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} + dev: true - duplexify@4.1.2: + /duplexify@4.1.2: + resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==} dependencies: end-of-stream: 1.4.4 inherits: 2.0.4 readable-stream: 3.6.2 stream-shift: 1.0.3 + dev: false - eastasianwidth@0.2.0: {} + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - ecdsa-sig-formatter@1.0.11: + /ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} dependencies: safe-buffer: 5.2.1 + dev: false - editorconfig@1.0.4: + /editorconfig@1.0.4: + resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==} + engines: {node: '>=14'} + hasBin: true dependencies: '@one-ini/wasm': 0.1.1 commander: 10.0.1 minimatch: 9.0.1 semver: 7.6.2 + dev: false - electron-to-chromium@1.4.503: {} + /electron-to-chromium@1.4.503: + resolution: {integrity: sha512-LF2IQit4B0VrUHFeQkWhZm97KuJSGF2WJqq1InpY+ECpFRkXd8yTIaTtJxsO0OKDmiBYwWqcrNaXOurn2T2wiA==} - electron-to-chromium@1.4.616: {} + /electron-to-chromium@1.4.616: + resolution: {integrity: sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==} + dev: false - emoji-mart@5.6.0: {} + /emoji-mart@5.6.0: + resolution: {integrity: sha512-eJp3QRe79pjwa+duv+n7+5YsNhRcMl812EcFVwrnRvYKoNPoQb5qxU8DG6Bgwji0akHdp6D4Ln6tYLG58MFSow==} + dev: false - emoji-regex@8.0.0: {} + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - emoji-regex@9.2.2: {} + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - end-of-stream@1.4.4: + /end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: once: 1.4.0 + dev: false - enhanced-resolve@5.15.0: + /enhanced-resolve@5.15.0: + resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} + engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 - enquirer@2.4.1: + /enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} dependencies: ansi-colors: 4.1.3 strip-ansi: 6.0.1 + dev: true - ent@2.2.0: {} + /ent@2.2.0: + resolution: {integrity: sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==} + dev: false - entities@4.5.0: {} + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: false - error-ex@1.3.2: + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 + dev: true - es-abstract@1.22.3: + /es-abstract@1.22.3: + resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} + engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.0 arraybuffer.prototype.slice: 1.0.2 @@ -7718,8 +4309,11 @@ snapshots: typed-array-length: 1.0.4 unbox-primitive: 1.0.2 which-typed-array: 1.1.13 + dev: true - es-abstract@1.23.3: + /es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.1 arraybuffer.prototype.slice: 1.0.3 @@ -7767,14 +4361,22 @@ snapshots: typed-array-length: 1.0.6 unbox-primitive: 1.0.2 which-typed-array: 1.1.15 + dev: true - es-define-property@1.0.0: + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.4 + dev: true - es-errors@1.3.0: {} + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + dev: true - es-iterator-helpers@1.0.15: + /es-iterator-helpers@1.0.15: + resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} dependencies: asynciterator.prototype: 1.0.0 call-bind: 1.0.5 @@ -7790,8 +4392,11 @@ snapshots: internal-slot: 1.0.6 iterator.prototype: 1.1.2 safe-array-concat: 1.0.1 + dev: true - es-iterator-helpers@1.0.19: + /es-iterator-helpers@1.0.19: + resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -7807,109 +4412,176 @@ snapshots: internal-slot: 1.0.7 iterator.prototype: 1.1.2 safe-array-concat: 1.1.2 + dev: true - es-module-lexer@1.4.1: {} + /es-module-lexer@1.4.1: + resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} + dev: false - es-object-atoms@1.0.0: + /es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 + dev: true - es-set-tostringtag@2.0.2: + /es-set-tostringtag@2.0.2: + resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} + engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.2 has-tostringtag: 1.0.0 hasown: 2.0.0 + dev: true - es-set-tostringtag@2.0.3: + /es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.4 has-tostringtag: 1.0.2 hasown: 2.0.2 + dev: true - es-shim-unscopables@1.0.2: + /es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} dependencies: hasown: 2.0.0 + dev: true - es-to-primitive@1.2.1: + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} dependencies: is-callable: 1.2.7 is-date-object: 1.0.5 is-symbol: 1.0.4 + dev: true - escalade@3.1.1: {} + /escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} - escape-string-regexp@1.0.5: {} + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} - escape-string-regexp@4.0.0: {} + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true - escape-string-regexp@5.0.0: {} + /escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + dev: false - eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint@8.57.0): + /eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.0): + resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.2 dependencies: confusing-browser-globals: 1.0.11 eslint: 8.57.0 - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.12.0)(eslint@8.57.0) object.assign: 4.1.5 object.entries: 1.1.7 semver: 6.3.1 + dev: true - eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3))(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint@8.57.0): + /eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@7.14.1)(@typescript-eslint/parser@7.12.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0): + resolution: {integrity: sha512-oc+Lxzgzsu8FQyFVa4QFaVKiitTYiiW3frB9KYW5OWdPrqFc7FzxgB20hP4cHMlr+MBzGcLl3jnCOVOydL9mIg==} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^7.0.0 + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 dependencies: - '@typescript-eslint/eslint-plugin': 7.14.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/eslint-plugin': 7.14.1(@typescript-eslint/parser@7.12.0)(eslint@8.57.0)(typescript@5.3.3) '@typescript-eslint/parser': 7.12.0(eslint@8.57.0)(typescript@5.3.3) eslint: 8.57.0 - eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint@8.57.0) + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.0) transitivePeerDependencies: - eslint-plugin-import + dev: true - eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.0))(eslint-plugin-react@7.34.2(eslint@8.57.0))(eslint@8.57.0): + /eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.34.2)(eslint@8.57.0): + resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==} + engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.3 + eslint-plugin-jsx-a11y: ^6.5.1 + eslint-plugin-react: ^7.28.0 + eslint-plugin-react-hooks: ^4.3.0 dependencies: eslint: 8.57.0 - eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0) + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.12.0)(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) eslint-plugin-react: 7.34.2(eslint@8.57.0) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) object.assign: 4.1.5 object.entries: 1.1.7 + dev: true - eslint-config-next@14.1.0(eslint@8.57.0)(typescript@5.3.3): + /eslint-config-next@14.1.0(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-SBX2ed7DoRFXC6CQSLc/SbLY9Ut6HxNB2wPTcoIWjUMd7aF7O/SIE7111L8FdZ9TXsNV4pulUDnfthpyPtbFUg==} + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true dependencies: '@next/eslint-plugin-next': 14.1.0 '@rushstack/eslint-patch': 1.6.1 '@typescript-eslint/parser': 6.17.0(eslint@8.57.0)(typescript@5.3.3) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) eslint-plugin-react: 7.34.2(eslint@8.57.0) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) - optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - eslint-import-resolver-webpack - supports-color + dev: true - eslint-config-prettier@9.0.0(eslint@8.57.0): + /eslint-config-prettier@9.0.0(eslint@8.57.0): + resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' dependencies: eslint: 8.57.0 + dev: true - eslint-import-resolver-node@0.3.9: + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} dependencies: debug: 3.2.7 is-core-module: 2.13.1 resolve: 1.22.8 transitivePeerDependencies: - supports-color + dev: true - eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0): + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0): + resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' dependencies: debug: 4.3.4 enhanced-resolve: 5.15.0 eslint: 8.57.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) fast-glob: 3.3.2 get-tsconfig: 4.7.2 is-core-module: 2.13.1 @@ -7919,30 +4591,78 @@ snapshots: - eslint-import-resolver-node - eslint-import-resolver-webpack - supports-color + dev: true - eslint-module-utils@2.8.0(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true dependencies: - debug: 3.2.7 - optionalDependencies: '@typescript-eslint/parser': 6.17.0(eslint@8.57.0)(typescript@5.3.3) + debug: 3.2.7 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) transitivePeerDependencies: - supports-color + dev: true - eslint-module-utils@2.8.0(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@7.12.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true dependencies: - debug: 3.2.7 - optionalDependencies: '@typescript-eslint/parser': 7.12.0(eslint@8.57.0)(typescript@5.3.3) + debug: 3.2.7 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color + dev: true - eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true dependencies: + '@typescript-eslint/parser': 6.17.0(eslint@8.57.0)(typescript@5.3.3) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 @@ -7951,7 +4671,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -7961,15 +4681,23 @@ snapshots: object.values: 1.1.7 semver: 6.3.1 tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 6.17.0(eslint@8.57.0)(typescript@5.3.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color + dev: true - eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0)(eslint@8.57.0): + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true dependencies: + '@typescript-eslint/parser': 7.12.0(eslint@8.57.0)(typescript@5.3.3) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 @@ -7978,7 +4706,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.12.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -7988,14 +4716,17 @@ snapshots: object.values: 1.1.7 semver: 6.3.1 tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 7.12.0(eslint@8.57.0)(typescript@5.3.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color + dev: true - eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0): + /eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0): + resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: '@babel/runtime': 7.23.7 aria-query: 5.3.0 @@ -8014,27 +4745,57 @@ snapshots: minimatch: 3.1.2 object.entries: 1.1.7 object.fromentries: 2.0.7 + dev: true - eslint-plugin-playwright@1.6.2(eslint@8.57.0): + /eslint-plugin-playwright@1.6.2(eslint@8.57.0): + resolution: {integrity: sha512-mraN4Em3b5jLt01q7qWPyLg0Q5v3KAWfJSlEWwldyUXoa7DSPrBR4k6B6LROLqipsG8ndkwWMdjl1Ffdh15tag==} + engines: {node: '>=16.6.0'} + peerDependencies: + eslint: '>=8.40.0' + eslint-plugin-jest: '>=25' + peerDependenciesMeta: + eslint-plugin-jest: + optional: true dependencies: eslint: 8.57.0 globals: 13.24.0 + dev: true - eslint-plugin-prettier@5.1.3(@types/eslint@8.56.0)(eslint-config-prettier@9.0.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.2.5): + /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.0.0)(eslint@8.57.0)(prettier@3.2.5): + resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true dependencies: eslint: 8.57.0 + eslint-config-prettier: 9.0.0(eslint@8.57.0) prettier: 3.2.5 prettier-linter-helpers: 1.0.0 synckit: 0.8.8 - optionalDependencies: - '@types/eslint': 8.56.0 - eslint-config-prettier: 9.0.0(eslint@8.57.0) + dev: true - eslint-plugin-react-hooks@4.6.2(eslint@8.57.0): + /eslint-plugin-react-hooks@4.6.2(eslint@8.57.0): + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: eslint: 8.57.0 + dev: true - eslint-plugin-react@7.34.2(eslint@8.57.0): + /eslint-plugin-react@7.34.2(eslint@8.57.0): + resolution: {integrity: sha512-2HCmrU+/JNigDN6tg55cRDKCQWicYAPB38JGSFDQt95jDm8rrvSUo7YPkOIm5l6ts1j1zCvysNcasvfTMQzUOw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 @@ -8055,35 +4816,64 @@ snapshots: resolve: 2.0.0-next.5 semver: 6.3.1 string.prototype.matchall: 4.0.11 + dev: true - eslint-plugin-tailwindcss@3.17.3(tailwindcss@3.4.1(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3))): + /eslint-plugin-tailwindcss@3.17.3(tailwindcss@3.4.1): + resolution: {integrity: sha512-DVMVVUFQ+lPraRSuUk2I41XMnusXT6b3WaQZYlUHduULnERaqe9sNfmpRY1IyxlzmKoQxSbZ8IHRhl9ePo8PeA==} + engines: {node: '>=18.12.0'} + peerDependencies: + tailwindcss: ^3.4.0 dependencies: fast-glob: 3.3.2 postcss: 8.4.31 - tailwindcss: 3.4.1(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3)) + tailwindcss: 3.4.1(ts-node@10.9.1) + dev: true - eslint-plugin-unused-imports@4.0.0(@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0): + /eslint-plugin-unused-imports@4.0.0(@typescript-eslint/eslint-plugin@7.14.1)(eslint@8.57.0): + resolution: {integrity: sha512-mzM+y2B7XYpQryVa1usT+Y/BdNAtAZiXzwpSyDCboFoJN/LZRN67TNvQxKtuTK/Aplya3sLNQforiubzPPaIcQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': '8' + eslint: '9' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true dependencies: + '@typescript-eslint/eslint-plugin': 7.14.1(@typescript-eslint/parser@7.12.0)(eslint@8.57.0)(typescript@5.3.3) eslint: 8.57.0 eslint-rule-composer: 0.3.0 - optionalDependencies: - '@typescript-eslint/eslint-plugin': 7.14.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3) + dev: true - eslint-rule-composer@0.3.0: {} + /eslint-rule-composer@0.3.0: + resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} + engines: {node: '>=4.0.0'} + dev: true - eslint-scope@5.1.1: + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 + dev: false - eslint-scope@7.2.2: + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 + dev: true - eslint-visitor-keys@3.4.3: {} + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true - eslint@8.57.0: + /eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@eslint-community/regexpp': 4.8.0 @@ -8125,42 +4915,80 @@ snapshots: text-table: 0.2.0 transitivePeerDependencies: - supports-color + dev: true - esm@3.2.25: {} + /esm@3.2.25: + resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} + engines: {node: '>=6'} + dev: false - espree@9.6.1: + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.11.3 acorn-jsx: 5.3.2(acorn@8.11.3) eslint-visitor-keys: 3.4.3 + dev: true - esprima@4.0.1: {} + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true - esquery@1.5.0: + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 + dev: true - esrecurse@4.3.0: + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 - estraverse@4.3.0: {} + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: false - estraverse@5.3.0: {} + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} - estree-util-is-identifier-name@3.0.0: {} + /estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + dev: false - estree-walker@2.0.2: {} + /estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + dev: false - esutils@2.0.3: {} + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true - event-target-shim@5.0.1: {} + /event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + dev: false - eventemitter3@5.0.1: {} + /eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + dev: true - events@3.3.0: {} + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: false - execa@8.0.1: + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} dependencies: cross-spawn: 7.0.3 get-stream: 8.0.1 @@ -8171,22 +4999,35 @@ snapshots: onetime: 6.0.0 signal-exit: 4.1.0 strip-final-newline: 3.0.0 + dev: true - extend@3.0.2: {} + /extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: false - extendable-error@0.1.7: {} + /extendable-error@0.1.7: + resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} + dev: true - external-editor@3.1.0: + /external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} dependencies: chardet: 0.7.0 iconv-lite: 0.4.24 tmp: 0.0.33 + dev: true - fast-deep-equal@3.1.3: {} + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-diff@1.3.0: {} + /fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + dev: true - fast-glob@3.3.2: + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 @@ -8194,126 +5035,205 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.5 - fast-json-stable-stringify@2.1.0: {} + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - fast-levenshtein@2.0.6: {} + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true - fast-xml-parser@4.3.4: + /fast-xml-parser@4.3.4: + resolution: {integrity: sha512-utnwm92SyozgA3hhH2I8qldf2lBqm6qHOICawRNRFu1qMe3+oqr+GcXjGqTmXTMGE5T4eC03kr/rlh5C1IRdZA==} + hasBin: true dependencies: strnum: 1.0.5 + dev: false - fastq@1.15.0: + /fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 - file-entry-cache@6.0.1: + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} dependencies: flat-cache: 3.1.0 + dev: true - file-selector@0.6.0: + /file-selector@0.6.0: + resolution: {integrity: sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==} + engines: {node: '>= 12'} dependencies: tslib: 2.6.2 + dev: false - fill-range@7.0.1: + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - find-cache-dir@4.0.0: + /find-cache-dir@4.0.0: + resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} + engines: {node: '>=14.16'} dependencies: common-path-prefix: 3.0.0 pkg-dir: 7.0.0 + dev: false - find-up@4.1.0: + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} dependencies: locate-path: 5.0.0 path-exists: 4.0.0 + dev: true - find-up@5.0.0: + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} dependencies: locate-path: 6.0.0 path-exists: 4.0.0 + dev: true - find-up@6.3.0: + /find-up@6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: locate-path: 7.2.0 path-exists: 5.0.0 + dev: false - find-yarn-workspace-root2@1.2.16: + /find-yarn-workspace-root2@1.2.16: + resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} dependencies: micromatch: 4.0.5 pkg-dir: 4.2.0 + dev: true - flat-cache@3.1.0: + /flat-cache@3.1.0: + resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} + engines: {node: '>=12.0.0'} dependencies: flatted: 3.2.7 keyv: 4.5.3 rimraf: 3.0.2 + dev: true - flatted@3.2.7: {} + /flatted@3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + dev: true - follow-redirects@1.15.2: {} + /follow-redirects@1.15.2: + resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: false - for-each@0.3.3: + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 + dev: true - foreground-child@3.1.1: + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} dependencies: cross-spawn: 7.0.3 signal-exit: 4.1.0 - form-data@2.5.1: + /form-data@2.5.1: + resolution: {integrity: sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==} + engines: {node: '>= 0.12'} dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 + dev: false - form-data@4.0.0: + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 + dev: false - formidable@3.5.1: + /formidable@3.5.1: + resolution: {integrity: sha512-WJWKelbRHN41m5dumb0/k8TeAx7Id/y3a+Z7QfhxP/htI9Js5zYaEDtG8uMgG0vM0lOlqnmjE99/kfpOYi/0Og==} dependencies: dezalgo: 1.0.4 hexoid: 1.0.0 once: 1.4.0 + dev: false - fraction.js@4.3.7: {} + /fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + dev: true - fs-extra@7.0.1: + /fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} dependencies: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 + dev: true - fs-extra@8.1.0: + /fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} dependencies: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 + dev: true - fs.realpath@1.0.0: {} + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - fsevents@2.3.2: + /fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true optional: true - fsevents@2.3.3: + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true optional: true - function-bind@1.1.2: {} + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - function.prototype.name@1.1.6: + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 functions-have-names: 1.2.3 + dev: true - functions-have-names@1.2.3: {} + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true - gaxios@6.2.0: + /gaxios@6.2.0: + resolution: {integrity: sha512-H6+bHeoEAU5D6XNc6mPKeN5dLZqEDs9Gpk6I+SZBEzK5So58JVrHPmevNi35fRl1J9Y5TaeLW0kYx3pCJ1U2mQ==} + engines: {node: '>=14'} dependencies: extend: 3.0.2 https-proxy-agent: 7.0.2 @@ -8322,66 +5242,105 @@ snapshots: transitivePeerDependencies: - encoding - supports-color + dev: false - gcp-metadata@6.1.0: + /gcp-metadata@6.1.0: + resolution: {integrity: sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==} + engines: {node: '>=14'} dependencies: gaxios: 6.2.0 json-bigint: 1.0.0 transitivePeerDependencies: - encoding - supports-color + dev: false - gensync@1.0.0-beta.2: {} + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: false - get-caller-file@2.0.5: {} + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true - get-intrinsic@1.2.2: + /get-intrinsic@1.2.2: + resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} dependencies: function-bind: 1.1.2 has-proto: 1.0.1 has-symbols: 1.0.3 hasown: 2.0.0 - get-intrinsic@1.2.4: + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 function-bind: 1.1.2 has-proto: 1.0.1 has-symbols: 1.0.3 hasown: 2.0.0 + dev: true - get-nonce@1.0.1: {} + /get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + dev: false - get-stream@8.0.1: {} + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + dev: true - get-symbol-description@1.0.0: + /get-symbol-description@1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 + dev: true - get-symbol-description@1.0.2: + /get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 + dev: true - get-tsconfig@4.7.2: + /get-tsconfig@4.7.2: + resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} dependencies: resolve-pkg-maps: 1.0.0 + dev: true - github-slugger@2.0.0: {} + /github-slugger@2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + dev: false - glob-parent@5.1.2: + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 - glob-parent@6.0.2: + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 - glob-to-regexp@0.4.1: {} + /glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + dev: false - glob@10.3.10: + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true dependencies: foreground-child: 3.1.1 jackspeak: 2.3.6 @@ -8389,7 +5348,8 @@ snapshots: minipass: 7.0.4 path-scurry: 1.10.1 - glob@7.1.6: + /glob@7.1.6: + resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -8398,7 +5358,8 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - glob@7.1.7: + /glob@7.1.7: + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -8406,30 +5367,48 @@ snapshots: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 + dev: true - glob@8.1.0: + /glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 minimatch: 5.1.6 once: 1.4.0 + dev: false - globals@11.12.0: {} + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: false - globals@13.21.0: + /globals@13.21.0: + resolution: {integrity: sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==} + engines: {node: '>=8'} dependencies: type-fest: 0.20.2 + dev: true - globals@13.24.0: + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} dependencies: type-fest: 0.20.2 + dev: true - globalthis@1.0.3: + /globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.1 + dev: true - globby@11.1.0: + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} dependencies: array-union: 2.1.0 dir-glob: 3.0.1 @@ -8437,8 +5416,11 @@ snapshots: ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 + dev: true - google-auth-library@9.6.3: + /google-auth-library@9.6.3: + resolution: {integrity: sha512-4CacM29MLC2eT9Cey5GDVK4Q8t+MMp8+OEdOaqD9MG6b0dOyLORaaeJMPQ7EESVgm/+z5EKYyFLxgzBJlJgyHQ==} + engines: {node: '>=14'} dependencies: base64-js: 1.5.1 ecdsa-sig-formatter: 1.0.11 @@ -8449,64 +5431,105 @@ snapshots: transitivePeerDependencies: - encoding - supports-color + dev: false - gopd@1.0.1: + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: get-intrinsic: 1.2.2 - graceful-fs@4.2.11: {} + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - grapheme-splitter@1.0.4: {} + /grapheme-splitter@1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + dev: true - graphemer@1.4.0: {} + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true - gtoken@7.1.0: + /gtoken@7.1.0: + resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} + engines: {node: '>=14.0.0'} dependencies: gaxios: 6.2.0 jws: 4.0.0 transitivePeerDependencies: - encoding - supports-color + dev: false - hard-rejection@2.1.0: {} + /hard-rejection@2.1.0: + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + engines: {node: '>=6'} + dev: true - has-bigints@1.0.2: {} + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true - has-flag@3.0.0: {} + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} - has-flag@4.0.0: {} + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} - has-property-descriptors@1.0.1: + /has-property-descriptors@1.0.1: + resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} dependencies: get-intrinsic: 1.2.2 - has-property-descriptors@1.0.2: + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} dependencies: es-define-property: 1.0.0 + dev: true - has-proto@1.0.1: {} + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} - has-proto@1.0.3: {} + /has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + dev: true - has-symbols@1.0.3: {} + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} - has-tostringtag@1.0.0: + /has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 + dev: true - has-tostringtag@1.0.2: + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 + dev: true - hasown@2.0.0: + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 - hasown@2.0.2: + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 + dev: true - hast-util-from-html@2.0.1: + /hast-util-from-html@2.0.1: + resolution: {integrity: sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==} dependencies: '@types/hast': 3.0.0 devlop: 1.1.0 @@ -8514,8 +5537,10 @@ snapshots: parse5: 7.1.2 vfile: 6.0.1 vfile-message: 4.0.2 + dev: false - hast-util-from-parse5@7.1.2: + /hast-util-from-parse5@7.1.2: + resolution: {integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==} dependencies: '@types/hast': 2.3.5 '@types/unist': 2.0.8 @@ -8524,8 +5549,10 @@ snapshots: vfile: 5.3.7 vfile-location: 4.1.0 web-namespaces: 2.0.1 + dev: false - hast-util-from-parse5@8.0.1: + /hast-util-from-parse5@8.0.1: + resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} dependencies: '@types/hast': 3.0.0 '@types/unist': 3.0.0 @@ -8535,28 +5562,40 @@ snapshots: vfile: 6.0.1 vfile-location: 5.0.2 web-namespaces: 2.0.1 + dev: false - hast-util-has-property@3.0.0: + /hast-util-has-property@3.0.0: + resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} dependencies: '@types/hast': 3.0.0 + dev: false - hast-util-heading-rank@3.0.0: + /hast-util-heading-rank@3.0.0: + resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} dependencies: '@types/hast': 3.0.0 + dev: false - hast-util-is-element@3.0.0: + /hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} dependencies: '@types/hast': 3.0.0 + dev: false - hast-util-parse-selector@3.1.1: + /hast-util-parse-selector@3.1.1: + resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} dependencies: '@types/hast': 2.3.5 + dev: false - hast-util-parse-selector@4.0.0: + /hast-util-parse-selector@4.0.0: + resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} dependencies: '@types/hast': 3.0.0 + dev: false - hast-util-raw@9.0.1: + /hast-util-raw@9.0.1: + resolution: {integrity: sha512-5m1gmba658Q+lO5uqL5YNGQWeh1MYWZbZmWrM5lncdcuiXuo5E2HT/CIOp0rLF8ksfSwiCVJ3twlgVRyTGThGA==} dependencies: '@types/hast': 3.0.0 '@types/unist': 3.0.0 @@ -8571,14 +5610,18 @@ snapshots: vfile: 6.0.1 web-namespaces: 2.0.1 zwitch: 2.0.4 + dev: false - hast-util-sanitize@5.0.0: + /hast-util-sanitize@5.0.0: + resolution: {integrity: sha512-L0g/qhOA82zG2hA3O29hnlv4mLU7YVVT1if5JZSr2tKO1ywkQbuMDcN05btgX0HtpqDXQniAM0ar0K+Lv4MDBQ==} dependencies: '@types/hast': 3.0.0 '@ungap/structured-clone': 1.2.0 unist-util-position: 5.0.0 + dev: false - hast-util-select@6.0.2: + /hast-util-select@6.0.2: + resolution: {integrity: sha512-hT/SD/d/Meu+iobvgkffo1QecV8WeKWxwsNMzcTJsKw1cKTQKSR/7ArJeURLNJF9HDjp9nVoORyNNJxrvBye8Q==} dependencies: '@types/hast': 3.0.0 '@types/unist': 3.0.0 @@ -8596,8 +5639,10 @@ snapshots: space-separated-tokens: 2.0.2 unist-util-visit: 5.0.0 zwitch: 2.0.4 + dev: false - hast-util-to-html@9.0.0: + /hast-util-to-html@9.0.0: + resolution: {integrity: sha512-IVGhNgg7vANuUA2XKrT6sOIIPgaYZnmLx3l/CCOAK0PtgfoHrZwX7jCSYyFxHTrGmC6S9q8aQQekjp4JPZF+cw==} dependencies: '@types/hast': 3.0.0 '@types/unist': 3.0.0 @@ -8611,8 +5656,10 @@ snapshots: space-separated-tokens: 2.0.2 stringify-entities: 4.0.3 zwitch: 2.0.4 + dev: false - hast-util-to-jsx-runtime@2.3.0: + /hast-util-to-jsx-runtime@2.3.0: + resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} dependencies: '@types/estree': 1.0.5 '@types/hast': 3.0.0 @@ -8631,8 +5678,10 @@ snapshots: vfile-message: 4.0.2 transitivePeerDependencies: - supports-color + dev: false - hast-util-to-parse5@8.0.0: + /hast-util-to-parse5@8.0.0: + resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} dependencies: '@types/hast': 3.0.0 comma-separated-tokens: 2.0.3 @@ -8641,410 +5690,697 @@ snapshots: space-separated-tokens: 2.0.2 web-namespaces: 2.0.1 zwitch: 2.0.4 + dev: false - hast-util-to-string@2.0.0: + /hast-util-to-string@2.0.0: + resolution: {integrity: sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==} dependencies: '@types/hast': 2.3.5 + dev: false - hast-util-to-string@3.0.0: + /hast-util-to-string@3.0.0: + resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} dependencies: '@types/hast': 3.0.0 + dev: false - hast-util-whitespace@3.0.0: + /hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} dependencies: '@types/hast': 3.0.0 + dev: false - hastscript@7.2.0: + /hastscript@7.2.0: + resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} dependencies: '@types/hast': 2.3.5 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 3.1.1 property-information: 6.2.0 space-separated-tokens: 2.0.2 + dev: false - hastscript@8.0.0: + /hastscript@8.0.0: + resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} dependencies: '@types/hast': 3.0.0 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 4.0.0 property-information: 6.2.0 space-separated-tokens: 2.0.2 + dev: false - hexoid@1.0.0: {} + /hexoid@1.0.0: + resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==} + engines: {node: '>=8'} + dev: false - hoist-non-react-statics@3.3.2: + /hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} dependencies: react-is: 16.13.1 + dev: false - hosted-git-info@2.8.9: {} + /hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + dev: true - html-to-text@9.0.5: + /html-to-text@9.0.5: + resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} + engines: {node: '>=14'} dependencies: '@selderee/plugin-htmlparser2': 0.11.0 deepmerge: 4.3.1 dom-serializer: 2.0.0 htmlparser2: 8.0.2 selderee: 0.11.0 + dev: false - html-url-attributes@3.0.0: {} + /html-url-attributes@3.0.0: + resolution: {integrity: sha512-/sXbVCWayk6GDVg3ctOX6nxaVj7So40FcFAnWlWGNAB1LpYKcV5Cd10APjPjW80O7zYW2MsjBV4zZ7IZO5fVow==} + dev: false - html-void-elements@3.0.0: {} + /html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + dev: false - htmlparser2@8.0.2: + /htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 domutils: 3.1.0 entities: 4.5.0 + dev: false - http-proxy-agent@5.0.0: + /http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 debug: 4.3.4 transitivePeerDependencies: - supports-color + dev: false - https-proxy-agent@5.0.1: + /https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 debug: 4.3.4 transitivePeerDependencies: - supports-color + dev: false - https-proxy-agent@7.0.2: + /https-proxy-agent@7.0.2: + resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} + engines: {node: '>= 14'} dependencies: agent-base: 7.1.0 debug: 4.3.4 transitivePeerDependencies: - supports-color + dev: false - human-id@1.0.2: {} + /human-id@1.0.2: + resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} + dev: true - human-signals@5.0.0: {} + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + dev: true - husky@9.0.11: {} + /husky@9.0.11: + resolution: {integrity: sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==} + engines: {node: '>=18'} + hasBin: true + dev: true - iconv-lite@0.4.24: + /iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 + dev: true - ignore@5.2.4: {} + /ignore@5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + dev: true - ignore@5.3.1: {} + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + dev: true - immediate@3.0.6: {} + /immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + dev: false - import-fresh@3.3.0: + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 + dev: true - imurmurhash@0.1.4: {} + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true - indent-string@4.0.0: {} + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: true - inflight@1.0.6: + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 - inherits@2.0.4: {} + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - ini@1.3.8: {} + /ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: false - inline-style-parser@0.2.2: {} + /inline-style-parser@0.2.2: + resolution: {integrity: sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==} + dev: false - internal-slot@1.0.6: + /internal-slot@1.0.6: + resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} + engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.2 hasown: 2.0.0 side-channel: 1.0.4 + dev: true - internal-slot@1.0.7: + /internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 hasown: 2.0.0 side-channel: 1.0.4 + dev: true - invariant@2.2.4: + /invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} dependencies: loose-envify: 1.4.0 + dev: false - is-alphabetical@2.0.1: {} + /is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + dev: false - is-alphanumerical@2.0.1: + /is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} dependencies: is-alphabetical: 2.0.1 is-decimal: 2.0.1 + dev: false - is-array-buffer@3.0.2: + /is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 is-typed-array: 1.1.12 + dev: true - is-array-buffer@3.0.4: + /is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 + dev: true - is-arrayish@0.2.1: {} + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true - is-async-function@2.0.0: + /is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 + dev: true - is-bigint@1.0.4: + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 + dev: true - is-binary-path@2.1.0: + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 - is-boolean-object@1.1.2: + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 has-tostringtag: 1.0.0 + dev: true - is-buffer@2.0.5: {} + /is-buffer@2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + dev: false - is-callable@1.2.7: {} + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: true - is-core-module@2.13.1: + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: hasown: 2.0.0 - is-data-view@1.0.1: + /is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} dependencies: is-typed-array: 1.1.13 + dev: true - is-date-object@1.0.5: + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 + dev: true - is-decimal@2.0.1: {} + /is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + dev: false - is-extglob@2.1.1: {} + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} - is-finalizationregistry@1.0.2: + /is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} dependencies: call-bind: 1.0.5 + dev: true - is-fullwidth-code-point@3.0.0: {} + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} - is-fullwidth-code-point@4.0.0: {} + /is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + dev: true - is-generator-function@1.0.10: + /is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 + dev: true - is-glob@4.0.3: + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - is-hexadecimal@2.0.1: {} + /is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + dev: false - is-map@2.0.2: {} + /is-map@2.0.2: + resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + dev: true - is-negative-zero@2.0.2: {} + /is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + dev: true - is-negative-zero@2.0.3: {} + /is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + dev: true - is-number-object@1.0.7: + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 + dev: true - is-number@7.0.0: {} + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} - is-path-inside@3.0.3: {} + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true - is-plain-obj@1.1.0: {} + /is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + dev: true - is-plain-obj@4.1.0: {} + /is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + dev: false - is-reference@1.2.1: + /is-reference@1.2.1: + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} dependencies: '@types/estree': 1.0.5 + dev: false - is-regex@1.1.4: + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 has-tostringtag: 1.0.0 + dev: true - is-set@2.0.2: {} + /is-set@2.0.2: + resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + dev: true - is-shared-array-buffer@1.0.2: + /is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: call-bind: 1.0.5 + dev: true - is-shared-array-buffer@1.0.3: + /is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 + dev: true - is-stream@2.0.1: {} + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: false - is-stream@3.0.0: {} + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true - is-string@1.0.7: + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 + dev: true - is-subdir@1.2.0: + /is-subdir@1.2.0: + resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} + engines: {node: '>=4'} dependencies: better-path-resolve: 1.0.0 + dev: true - is-symbol@1.0.4: + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 + dev: true - is-typed-array@1.1.12: + /is-typed-array@1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + engines: {node: '>= 0.4'} dependencies: which-typed-array: 1.1.13 + dev: true - is-typed-array@1.1.13: + /is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} dependencies: which-typed-array: 1.1.15 + dev: true - is-weakmap@2.0.1: {} + /is-weakmap@2.0.1: + resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + dev: true - is-weakref@1.0.2: + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.5 + dev: true - is-weakset@2.0.2: + /is-weakset@2.0.2: + resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 + dev: true - is-windows@1.0.2: {} + /is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + dev: true - isarray@2.0.5: {} + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true - isexe@2.0.0: {} + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - iterator.prototype@1.1.2: + /iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} dependencies: define-properties: 1.2.1 get-intrinsic: 1.2.2 has-symbols: 1.0.3 reflect.getprototypeof: 1.0.4 set-function-name: 2.0.1 + dev: true - jackspeak@2.3.6: + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jest-worker@27.5.1: + /jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} dependencies: '@types/node': 20.10.6 merge-stream: 2.0.0 supports-color: 8.1.1 + dev: false - jiti@1.19.3: {} + /jiti@1.19.3: + resolution: {integrity: sha512-5eEbBDQT/jF1xg6l36P+mWGGoH9Spuy0PCdSr2dtWRDGC6ph/w9ZCL4lmESW8f8F7MwT3XKescfP0wnZWAKL9w==} + hasBin: true - jose@4.15.5: {} + /jose@4.15.5: + resolution: {integrity: sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==} + dev: false - jotai@2.6.4(@types/react@18.0.27)(react@18.2.0): - optionalDependencies: + /jotai@2.6.4(@types/react@18.0.27)(react@18.2.0): + resolution: {integrity: sha512-RniwQPX4893YlNR1muOtyUGHYaTD1fhEN4qnOuZJSrDHj6xdEMrqlRSN/hCm2fshwk78ruecB/P2l+NCVWe6TQ==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=17.0.0' + react: '>=17.0.0' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + dependencies: '@types/react': 18.0.27 react: 18.2.0 + dev: false - js-beautify@1.14.11: + /js-beautify@1.14.11: + resolution: {integrity: sha512-rPogWqAfoYh1Ryqqh2agUpVfbxAhbjuN1SmU86dskQUKouRiggUTCO4+2ym9UPXllc2WAp0J+T5qxn7Um3lCdw==} + engines: {node: '>=14'} + hasBin: true dependencies: config-chain: 1.1.13 editorconfig: 1.0.4 glob: 10.3.10 nopt: 7.2.0 + dev: false - js-tokens@4.0.0: {} + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@3.14.1: + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true dependencies: argparse: 1.0.10 esprima: 4.0.1 + dev: true - js-yaml@4.1.0: + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true dependencies: argparse: 2.0.1 + dev: true - jsesc@2.5.2: {} + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: false - json-bigint@1.0.0: + /json-bigint@1.0.0: + resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} dependencies: bignumber.js: 9.1.2 + dev: false - json-buffer@3.0.1: {} + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true - json-parse-even-better-errors@2.3.1: {} + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - json-schema-traverse@0.4.1: {} + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - json-schema-traverse@1.0.0: {} + /json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: false - json-stable-stringify-without-jsonify@1.0.1: {} + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true - json5@1.0.2: + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true dependencies: minimist: 1.2.8 + dev: true - json5@2.2.3: {} + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: false - jsonfile@4.0.0: + /jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: graceful-fs: 4.2.11 + dev: true - jsx-ast-utils@3.3.5: + /jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} dependencies: array-includes: 3.1.7 array.prototype.flat: 1.3.2 object.assign: 4.1.5 object.values: 1.1.7 + dev: true - jwa@2.0.0: + /jwa@2.0.0: + resolution: {integrity: sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==} dependencies: buffer-equal-constant-time: 1.0.1 ecdsa-sig-formatter: 1.0.11 safe-buffer: 5.2.1 + dev: false - jws@4.0.0: + /jws@4.0.0: + resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} dependencies: jwa: 2.0.0 safe-buffer: 5.2.1 + dev: false - keyv@4.5.3: + /keyv@4.5.3: + resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} dependencies: json-buffer: 3.0.1 + dev: true - kind-of@6.0.3: {} + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + dev: true - kleur@4.1.5: {} + /kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + dev: true - language-subtag-registry@0.3.22: {} + /language-subtag-registry@0.3.22: + resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} + dev: true - language-tags@1.0.9: + /language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} dependencies: language-subtag-registry: 0.3.22 + dev: true - leac@0.6.0: {} + /leac@0.6.0: + resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} + dev: false - levn@0.4.1: + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 + dev: true - lie@3.1.1: + /lie@3.1.1: + resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} dependencies: immediate: 3.0.6 + dev: false - lilconfig@2.1.0: {} + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} - lines-and-columns@1.2.4: {} + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - lint-staged@15.0.2: + /lint-staged@15.0.2: + resolution: {integrity: sha512-vnEy7pFTHyVuDmCAIFKR5QDO8XLVlPFQQyujQ/STOxe40ICWqJ6knS2wSJ/ffX/Lw0rz83luRDh+ET7toN+rOw==} + engines: {node: '>=18.12.0'} + hasBin: true dependencies: chalk: 5.3.0 commander: 11.1.0 @@ -9058,8 +6394,11 @@ snapshots: yaml: 2.3.3 transitivePeerDependencies: - supports-color + dev: true - listr2@7.0.2: + /listr2@7.0.2: + resolution: {integrity: sha512-rJysbR9GKIalhTbVL2tYbF2hVyDnrf7pFUZBwjPaMIdadYHmeT+EVi/Bu3qd7ETQPahTotg2WRCatXwRBW554g==} + engines: {node: '>=16.0.0'} dependencies: cli-truncate: 3.1.0 colorette: 2.0.20 @@ -9067,89 +6406,145 @@ snapshots: log-update: 5.0.1 rfdc: 1.3.0 wrap-ansi: 8.1.0 + dev: true - load-yaml-file@0.2.0: + /load-yaml-file@0.2.0: + resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} + engines: {node: '>=6'} dependencies: graceful-fs: 4.2.11 js-yaml: 3.14.1 pify: 4.0.1 strip-bom: 3.0.0 + dev: true - loader-runner@4.3.0: {} + /loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + dev: false - localforage@1.10.0: + /localforage@1.10.0: + resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} dependencies: lie: 3.1.1 + dev: false - locate-path@5.0.0: + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} dependencies: p-locate: 4.1.0 + dev: true - locate-path@6.0.0: + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} dependencies: p-locate: 5.0.0 + dev: true - locate-path@7.2.0: + /locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: p-locate: 6.0.0 + dev: false - lodash.merge@4.6.2: {} + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true - lodash.startcase@4.4.0: {} + /lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + dev: true - log-update@5.0.1: + /log-update@5.0.1: + resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: ansi-escapes: 5.0.0 cli-cursor: 4.0.0 slice-ansi: 5.0.0 strip-ansi: 7.1.0 wrap-ansi: 8.1.0 + dev: true - longest-streak@3.1.0: {} + /longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + dev: false - loose-envify@1.4.0: + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true dependencies: js-tokens: 4.0.0 - lru-cache@10.2.0: {} + /lru-cache@10.2.0: + resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} + engines: {node: 14 || >=16.14} - lru-cache@4.1.5: + /lru-cache@4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} dependencies: pseudomap: 1.0.2 yallist: 2.1.2 + dev: true - lru-cache@5.1.1: + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: yallist: 3.1.1 + dev: false - lru-cache@6.0.0: + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} dependencies: yallist: 4.0.0 - lucide-react@0.344.0(react@18.2.0): + /lucide-react@0.344.0(react@18.2.0): + resolution: {integrity: sha512-6YyBnn91GB45VuVT96bYCOKElbJzUHqp65vX8cDcu55MQL9T969v4dhGClpljamuI/+KMO9P6w9Acq1CVQGvIQ==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 dependencies: react: 18.2.0 + dev: false - magic-string@0.27.0: + /magic-string@0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 + dev: false - make-error@1.3.6: {} + /make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - map-obj@1.0.1: {} + /map-obj@1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + dev: true - map-obj@4.3.0: {} + /map-obj@4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} + dev: true - markdown-table@3.0.3: {} + /markdown-table@3.0.3: + resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} + dev: false - mdast-util-find-and-replace@3.0.1: + /mdast-util-find-and-replace@3.0.1: + resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} dependencies: '@types/mdast': 4.0.3 escape-string-regexp: 5.0.0 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 + dev: false - mdast-util-from-markdown@2.0.0: + /mdast-util-from-markdown@2.0.0: + resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} dependencies: '@types/mdast': 4.0.3 '@types/unist': 3.0.0 @@ -9165,16 +6560,20 @@ snapshots: unist-util-stringify-position: 4.0.0 transitivePeerDependencies: - supports-color + dev: false - mdast-util-gfm-autolink-literal@2.0.0: + /mdast-util-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} dependencies: '@types/mdast': 4.0.3 ccount: 2.0.1 devlop: 1.1.0 mdast-util-find-and-replace: 3.0.1 micromark-util-character: 2.0.1 + dev: false - mdast-util-gfm-footnote@2.0.0: + /mdast-util-gfm-footnote@2.0.0: + resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} dependencies: '@types/mdast': 4.0.3 devlop: 1.1.0 @@ -9183,16 +6582,20 @@ snapshots: micromark-util-normalize-identifier: 2.0.0 transitivePeerDependencies: - supports-color + dev: false - mdast-util-gfm-strikethrough@2.0.0: + /mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} dependencies: '@types/mdast': 4.0.3 mdast-util-from-markdown: 2.0.0 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color + dev: false - mdast-util-gfm-table@2.0.0: + /mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} dependencies: '@types/mdast': 4.0.3 devlop: 1.1.0 @@ -9201,8 +6604,10 @@ snapshots: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color + dev: false - mdast-util-gfm-task-list-item@2.0.0: + /mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} dependencies: '@types/mdast': 4.0.3 devlop: 1.1.0 @@ -9210,8 +6615,10 @@ snapshots: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color + dev: false - mdast-util-gfm@3.0.0: + /mdast-util-gfm@3.0.0: + resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} dependencies: mdast-util-from-markdown: 2.0.0 mdast-util-gfm-autolink-literal: 2.0.0 @@ -9222,8 +6629,10 @@ snapshots: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color + dev: false - mdast-util-mdx-expression@2.0.0: + /mdast-util-mdx-expression@2.0.0: + resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} dependencies: '@types/estree-jsx': 1.0.3 '@types/hast': 3.0.0 @@ -9233,8 +6642,10 @@ snapshots: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color + dev: false - mdast-util-mdx-jsx@3.0.0: + /mdast-util-mdx-jsx@3.0.0: + resolution: {integrity: sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==} dependencies: '@types/estree-jsx': 1.0.3 '@types/hast': 3.0.0 @@ -9251,8 +6662,10 @@ snapshots: vfile-message: 4.0.2 transitivePeerDependencies: - supports-color + dev: false - mdast-util-mdxjs-esm@2.0.1: + /mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} dependencies: '@types/estree-jsx': 1.0.3 '@types/hast': 3.0.0 @@ -9262,13 +6675,17 @@ snapshots: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color + dev: false - mdast-util-phrasing@4.0.0: + /mdast-util-phrasing@4.0.0: + resolution: {integrity: sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==} dependencies: '@types/mdast': 4.0.3 unist-util-is: 6.0.0 + dev: false - mdast-util-to-hast@13.0.2: + /mdast-util-to-hast@13.0.2: + resolution: {integrity: sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==} dependencies: '@types/hast': 3.0.0 '@types/mdast': 4.0.3 @@ -9278,8 +6695,10 @@ snapshots: trim-lines: 3.0.1 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 + dev: false - mdast-util-to-markdown@2.1.0: + /mdast-util-to-markdown@2.1.0: + resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} dependencies: '@types/mdast': 4.0.3 '@types/unist': 3.0.0 @@ -9289,12 +6708,17 @@ snapshots: micromark-util-decode-string: 2.0.0 unist-util-visit: 5.0.0 zwitch: 2.0.4 + dev: false - mdast-util-to-string@4.0.0: + /mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} dependencies: '@types/mdast': 4.0.3 + dev: false - meow@6.1.1: + /meow@6.1.1: + resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} + engines: {node: '>=8'} dependencies: '@types/minimist': 1.2.2 camelcase-keys: 6.2.2 @@ -9307,12 +6731,17 @@ snapshots: trim-newlines: 3.0.1 type-fest: 0.13.1 yargs-parser: 18.1.3 + dev: true - merge-stream@2.0.0: {} + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - merge2@1.4.1: {} + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} - micromark-core-commonmark@2.0.0: + /micromark-core-commonmark@2.0.0: + resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==} dependencies: decode-named-character-reference: 1.0.2 devlop: 1.1.0 @@ -9330,15 +6759,19 @@ snapshots: micromark-util-subtokenize: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-extension-gfm-autolink-literal@2.0.0: + /micromark-extension-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} dependencies: micromark-util-character: 2.0.1 micromark-util-sanitize-uri: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-extension-gfm-footnote@2.0.0: + /micromark-extension-gfm-footnote@2.0.0: + resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==} dependencies: devlop: 1.1.0 micromark-core-commonmark: 2.0.0 @@ -9348,8 +6781,10 @@ snapshots: micromark-util-sanitize-uri: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-extension-gfm-strikethrough@2.0.0: + /micromark-extension-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==} dependencies: devlop: 1.1.0 micromark-util-chunked: 2.0.0 @@ -9357,28 +6792,36 @@ snapshots: micromark-util-resolve-all: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-extension-gfm-table@2.0.0: + /micromark-extension-gfm-table@2.0.0: + resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==} dependencies: devlop: 1.1.0 micromark-factory-space: 2.0.0 micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-extension-gfm-tagfilter@2.0.0: + /micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} dependencies: micromark-util-types: 2.0.0 + dev: false - micromark-extension-gfm-task-list-item@2.0.1: + /micromark-extension-gfm-task-list-item@2.0.1: + resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==} dependencies: devlop: 1.1.0 micromark-factory-space: 2.0.0 micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-extension-gfm@3.0.0: + /micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} dependencies: micromark-extension-gfm-autolink-literal: 2.0.0 micromark-extension-gfm-footnote: 2.0.0 @@ -9388,100 +6831,140 @@ snapshots: micromark-extension-gfm-task-list-item: 2.0.1 micromark-util-combine-extensions: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-factory-destination@2.0.0: + /micromark-factory-destination@2.0.0: + resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} dependencies: micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-factory-label@2.0.0: + /micromark-factory-label@2.0.0: + resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} dependencies: devlop: 1.1.0 micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-factory-space@2.0.0: + /micromark-factory-space@2.0.0: + resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} dependencies: micromark-util-character: 2.0.1 micromark-util-types: 2.0.0 + dev: false - micromark-factory-title@2.0.0: + /micromark-factory-title@2.0.0: + resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} dependencies: micromark-factory-space: 2.0.0 micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-factory-whitespace@2.0.0: + /micromark-factory-whitespace@2.0.0: + resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} dependencies: micromark-factory-space: 2.0.0 micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-util-character@2.0.1: + /micromark-util-character@2.0.1: + resolution: {integrity: sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==} dependencies: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-util-chunked@2.0.0: + /micromark-util-chunked@2.0.0: + resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} dependencies: micromark-util-symbol: 2.0.0 + dev: false - micromark-util-classify-character@2.0.0: + /micromark-util-classify-character@2.0.0: + resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} dependencies: micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-util-combine-extensions@2.0.0: + /micromark-util-combine-extensions@2.0.0: + resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} dependencies: micromark-util-chunked: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-util-decode-numeric-character-reference@2.0.1: + /micromark-util-decode-numeric-character-reference@2.0.1: + resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} dependencies: micromark-util-symbol: 2.0.0 + dev: false - micromark-util-decode-string@2.0.0: + /micromark-util-decode-string@2.0.0: + resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} dependencies: decode-named-character-reference: 1.0.2 micromark-util-character: 2.0.1 micromark-util-decode-numeric-character-reference: 2.0.1 micromark-util-symbol: 2.0.0 + dev: false - micromark-util-encode@2.0.0: {} + /micromark-util-encode@2.0.0: + resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} + dev: false - micromark-util-html-tag-name@2.0.0: {} + /micromark-util-html-tag-name@2.0.0: + resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} + dev: false - micromark-util-normalize-identifier@2.0.0: + /micromark-util-normalize-identifier@2.0.0: + resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} dependencies: micromark-util-symbol: 2.0.0 + dev: false - micromark-util-resolve-all@2.0.0: + /micromark-util-resolve-all@2.0.0: + resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} dependencies: micromark-util-types: 2.0.0 + dev: false - micromark-util-sanitize-uri@2.0.0: + /micromark-util-sanitize-uri@2.0.0: + resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} dependencies: micromark-util-character: 2.0.1 micromark-util-encode: 2.0.0 micromark-util-symbol: 2.0.0 + dev: false - micromark-util-subtokenize@2.0.0: + /micromark-util-subtokenize@2.0.0: + resolution: {integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==} dependencies: devlop: 1.1.0 micromark-util-chunked: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-util-symbol@2.0.0: {} + /micromark-util-symbol@2.0.0: + resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} + dev: false - micromark-util-types@2.0.0: {} + /micromark-util-types@2.0.0: + resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} + dev: false - micromark@4.0.0: + /micromark@4.0.0: + resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} dependencies: '@types/debug': 4.1.8 debug: 4.3.4 @@ -9502,85 +6985,154 @@ snapshots: micromark-util-types: 2.0.0 transitivePeerDependencies: - supports-color + dev: false - micromatch@4.0.5: + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} dependencies: braces: 3.0.2 picomatch: 2.3.1 - mime-db@1.52.0: {} + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: false - mime-types@2.1.35: + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 + dev: false - mime@3.0.0: {} + /mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + dev: false - mimic-fn@2.1.0: {} + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true - mimic-fn@4.0.0: {} + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true - min-indent@1.0.1: {} + /min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: true - minimatch@3.1.2: + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - minimatch@5.1.6: + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 + dev: false - minimatch@9.0.1: + /minimatch@9.0.1: + resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 + dev: false - minimatch@9.0.3: + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 + dev: true - minimatch@9.0.4: + /minimatch@9.0.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 - minimist-options@4.1.0: + /minimist-options@4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} dependencies: arrify: 1.0.1 is-plain-obj: 1.1.0 kind-of: 6.0.3 + dev: true - minimist@1.2.8: {} + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass@7.0.4: {} + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} - mixme@0.5.9: {} + /mixme@0.5.9: + resolution: {integrity: sha512-VC5fg6ySUscaWUpI4gxCBTQMH2RdUpNrk+MsbpCYtIvf9SBJdiUey4qE7BXviJsJR4nDQxCZ+3yaYNW3guz/Pw==} + engines: {node: '>= 8.0.0'} + dev: true - mkdirp@0.5.6: + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true dependencies: minimist: 1.2.8 + dev: false - ms@2.1.2: {} + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - mz@2.7.0: + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} dependencies: any-promise: 1.3.0 object-assign: 4.1.1 thenify-all: 1.6.0 - nanoid@3.3.6: {} + /nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true - nanoid@3.3.7: {} + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true - natural-compare@1.4.0: {} + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true - neo-async@2.6.2: {} + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: false - next-auth@4.24.7(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + /next-auth@4.24.7(next@14.2.4)(nodemailer@6.9.14)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-iChjE8ov/1K/z98gdKbn2Jw+2vLgJtVV39X+rCP5SGnVQuco7QOr19FRNGMIrD8d3LYhHWV9j9sKLzq1aDWWQQ==} + peerDependencies: + next: ^12.2.5 || ^13 || ^14 + nodemailer: ^6.6.5 + react: ^17.0.2 || ^18 + react-dom: ^17.0.2 || ^18 + peerDependenciesMeta: + nodemailer: + optional: true dependencies: '@babel/runtime': 7.23.7 '@panva/hkdf': 1.1.1 cookie: 0.5.0 jose: 4.15.5 - next: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + next: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0)(react@18.2.0) + nodemailer: 6.9.14 oauth: 0.9.15 openid-client: 5.6.5 preact: 10.11.3 @@ -9588,10 +7140,10 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) uuid: 8.3.2 - optionalDependencies: - nodemailer: 6.9.14 + dev: false - next-remove-imports@1.0.12(webpack@5.89.0): + /next-remove-imports@1.0.12(webpack@5.89.0): + resolution: {integrity: sha512-3tdL6VuSykJ/mcUwxfjQ+Fd4OpEmrwWVHtLZ/fhNcSaToWCutUp7nrfIww7/4CURe9I7BDCQE9AWl4fkY3YZOQ==} dependencies: '@babel/core': 7.22.17 babel-loader: 9.1.3(@babel/core@7.22.17)(webpack@5.89.0) @@ -9599,15 +7151,25 @@ snapshots: transitivePeerDependencies: - supports-color - webpack + dev: false - next-safe-action@7.0.2(@types/json-schema@7.0.15)(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(zod@3.22.4): + /next-safe-action@7.0.2(next@14.2.4)(react-dom@18.2.0)(react@18.2.0)(zod@3.22.4): + resolution: {integrity: sha512-Zjxo5HhOV0vUxKP2zf4UE5d603oCwdr9CNadc4aImJnYrcpfed3S/mUf2gfXEHjTjRyPoTQ+s4oLMy5rATGuPQ==} + engines: {node: '>=18.17'} + peerDependencies: + next: '>= 14.0.0' + react: '>= 18.2.0' + react-dom: '>= 18.2.0' + zod: '>= 3.0.0' + peerDependenciesMeta: + zod: + optional: true dependencies: - '@typeschema/main': 0.13.10(@types/json-schema@7.0.15)(@typeschema/zod@0.13.3(@types/json-schema@7.0.15)(zod@3.22.4)) - '@typeschema/zod': 0.13.3(@types/json-schema@7.0.15)(zod@3.22.4) - next: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@typeschema/main': 0.13.10(@typeschema/zod@0.13.3) + '@typeschema/zod': 0.13.3(zod@3.22.4) + next: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - optionalDependencies: zod: 3.22.4 transitivePeerDependencies: - '@types/json-schema' @@ -9630,16 +7192,40 @@ snapshots: - '@typeschema/vine' - '@typeschema/yup' - zod-to-json-schema + dev: false - next-themes@0.2.1(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + /next-themes@0.2.1(next@14.2.4)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==} + peerDependencies: + next: '*' + react: '*' + react-dom: '*' dependencies: - next: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + next: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + dev: false - next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + /next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-R8/V7vugY+822rsQGQCjoLhMuC9oFj9SOi4Cl4b2wjDrseD0LRZ10W7R6Czo4w9ZznVSshKjuIomsRjvm9EKJQ==} + engines: {node: '>=18.17.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + sass: + optional: true dependencies: '@next/env': 14.2.4 + '@playwright/test': 1.45.0 '@swc/helpers': 0.5.5 busboy: 1.6.0 caniuse-lite: 1.0.30001587 @@ -9658,137 +7244,222 @@ snapshots: '@next/swc-win32-arm64-msvc': 14.2.4 '@next/swc-win32-ia32-msvc': 14.2.4 '@next/swc-win32-x64-msvc': 14.2.4 - '@playwright/test': 1.45.0 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros + dev: false - node-fetch@2.7.0: + /node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true dependencies: whatwg-url: 5.0.0 + dev: false - node-releases@2.0.13: {} + /node-releases@2.0.13: + resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} - node-releases@2.0.14: {} + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: false - nodemailer@6.9.14: {} + /nodemailer@6.9.14: + resolution: {integrity: sha512-Dobp/ebDKBvz91sbtRKhcznLThrKxKt97GI2FAlAyy+fk19j73Uz3sBXolVtmcXjaorivqsbbbjDY+Jkt4/bQA==} + engines: {node: '>=6.0.0'} + dev: false - nopt@7.2.0: + /nopt@7.2.0: + resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true dependencies: abbrev: 2.0.0 + dev: false - normalize-package-data@2.5.0: + /normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 resolve: 1.22.8 semver: 5.7.2 validate-npm-package-license: 3.0.4 + dev: true - normalize-path@3.0.0: {} + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} - normalize-range@0.1.2: {} + /normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: true - not@0.1.0: {} + /not@0.1.0: + resolution: {integrity: sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==} + dev: false - npm-run-path@5.1.0: + /npm-run-path@5.1.0: + resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: path-key: 4.0.0 + dev: true - nth-check@2.1.1: + /nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} dependencies: boolbase: 1.0.0 + dev: false - oauth@0.9.15: {} + /oauth@0.9.15: + resolution: {integrity: sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==} + dev: false - object-assign@4.1.1: {} + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} - object-hash@2.2.0: {} + /object-hash@2.2.0: + resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} + engines: {node: '>= 6'} + dev: false - object-hash@3.0.0: {} + /object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} - object-inspect@1.13.1: {} + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} - object-keys@1.1.1: {} + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true - object.assign@4.1.5: + /object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 + dev: true - object.entries@1.1.7: + /object.entries@1.1.7: + resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 + dev: true - object.entries@1.1.8: + /object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 + dev: true - object.fromentries@2.0.7: + /object.fromentries@2.0.7: + resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 + dev: true - object.fromentries@2.0.8: + /object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-object-atoms: 1.0.0 + dev: true - object.groupby@1.0.1: + /object.groupby@1.0.1: + resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 get-intrinsic: 1.2.2 + dev: true - object.hasown@1.1.4: + /object.hasown@1.1.4: + resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} + engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.1 es-abstract: 1.23.3 es-object-atoms: 1.0.0 + dev: true - object.values@1.1.7: + /object.values@1.1.7: + resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 + dev: true - object.values@1.2.0: + /object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 + dev: true - oidc-token-hash@5.0.3: {} + /oidc-token-hash@5.0.3: + resolution: {integrity: sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==} + engines: {node: ^10.13.0 || >=12.0.0} + dev: false - once@1.4.0: + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 - onetime@5.1.2: + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 + dev: true - onetime@6.0.0: + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} dependencies: mimic-fn: 4.0.0 + dev: true - openid-client@5.6.5: + /openid-client@5.6.5: + resolution: {integrity: sha512-5P4qO9nGJzB5PI0LFlhj4Dzg3m4odt0qsJTfyEtZyOlkgpILwEioOhVVJOrS1iVH494S4Ee5OCjjg6Bf5WOj3w==} dependencies: jose: 4.15.5 lru-cache: 6.0.0 object-hash: 2.2.0 oidc-token-hash: 5.0.3 + dev: false - optionator@0.9.3: + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} dependencies: '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 @@ -9796,50 +7467,88 @@ snapshots: levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 + dev: true - os-tmpdir@1.0.2: {} + /os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + dev: true - outdent@0.5.0: {} + /outdent@0.5.0: + resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} + dev: true - p-filter@2.1.0: + /p-filter@2.1.0: + resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} + engines: {node: '>=8'} dependencies: p-map: 2.1.0 + dev: true - p-limit@2.3.0: + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} dependencies: p-try: 2.2.0 + dev: true - p-limit@3.1.0: + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 - p-limit@4.0.0: + /p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: yocto-queue: 1.0.0 + dev: false - p-locate@4.1.0: + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} dependencies: p-limit: 2.3.0 + dev: true - p-locate@5.0.0: + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} dependencies: p-limit: 3.1.0 + dev: true - p-locate@6.0.0: + /p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: p-limit: 4.0.0 + dev: false - p-map@2.1.0: {} + /p-map@2.1.0: + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + engines: {node: '>=6'} + dev: true - p-try@2.2.0: {} + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: true - papaparse@5.4.1: {} + /papaparse@5.4.1: + resolution: {integrity: sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw==} + dev: false - parent-module@1.0.1: + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} dependencies: callsites: 3.1.0 + dev: true - parse-entities@4.0.1: + /parse-entities@4.0.1: + resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} dependencies: '@types/unist': 2.0.8 character-entities: 2.0.2 @@ -9849,211 +7558,428 @@ snapshots: is-alphanumerical: 2.0.1 is-decimal: 2.0.1 is-hexadecimal: 2.0.1 + dev: false - parse-json@5.2.0: + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} dependencies: '@babel/code-frame': 7.22.13 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + dev: true - parse-numeric-range@1.3.0: {} + /parse-numeric-range@1.3.0: + resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} + dev: false - parse5@6.0.1: {} + /parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + dev: false - parse5@7.1.2: + /parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: entities: 4.5.0 + dev: false - parseley@0.12.1: + /parseley@0.12.1: + resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==} dependencies: leac: 0.6.0 peberminta: 0.9.0 + dev: false - path-exists@4.0.0: {} + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true - path-exists@5.0.0: {} + /path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false - path-is-absolute@1.0.1: {} + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} - path-key@3.1.1: {} + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} - path-key@4.0.0: {} + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true - path-parse@1.0.7: {} + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.10.1: + /path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: lru-cache: 10.2.0 minipass: 7.0.4 - path-type@4.0.0: {} + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true - peberminta@0.9.0: {} + /peberminta@0.9.0: + resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} + dev: false - picocolors@1.0.0: {} + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - picomatch@2.3.1: {} + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} - pidtree@0.6.0: {} + /pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + dev: true - pify@2.3.0: {} + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} - pify@4.0.1: {} + /pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + dev: true - pirates@4.0.6: {} + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} - pkg-dir@4.2.0: + /pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} dependencies: find-up: 4.1.0 + dev: true - pkg-dir@7.0.0: + /pkg-dir@7.0.0: + resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} + engines: {node: '>=14.16'} dependencies: find-up: 6.3.0 + dev: false - playwright-core@1.45.0: {} + /playwright-core@1.45.0: + resolution: {integrity: sha512-lZmHlFQ0VYSpAs43dRq1/nJ9G/6SiTI7VPqidld9TDefL9tX87bTKExWZZUF5PeRyqtXqd8fQi2qmfIedkwsNQ==} + engines: {node: '>=18'} + hasBin: true - playwright@1.45.0: + /playwright@1.45.0: + resolution: {integrity: sha512-4z3ac3plDfYzGB6r0Q3LF8POPR20Z8D0aXcxbJvmfMgSSq1hkcgvFRXJk9rUq5H/MJ0Ktal869hhOdI/zUTeLA==} + engines: {node: '>=18'} + hasBin: true dependencies: playwright-core: 1.45.0 optionalDependencies: fsevents: 2.3.2 - possible-typed-array-names@1.0.0: {} + /possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + dev: true - postcss-import@15.1.0(postcss@8.4.31): + /postcss-import@15.1.0(postcss@8.4.31): + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 dependencies: postcss: 8.4.31 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - postcss-js@4.0.1(postcss@8.4.31): + /postcss-js@4.0.1(postcss@8.4.31): + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 dependencies: camelcase-css: 2.0.1 postcss: 8.4.31 - postcss-load-config@4.0.1(postcss@8.4.31)(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3)): + /postcss-load-config@4.0.1(postcss@8.4.31)(ts-node@10.9.1): + resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true dependencies: lilconfig: 2.1.0 - yaml: 2.3.3 - optionalDependencies: postcss: 8.4.31 ts-node: 10.9.1(@types/node@20.5.6)(typescript@5.3.3) + yaml: 2.3.3 - postcss-nested@6.0.1(postcss@8.4.31): + /postcss-nested@6.0.1(postcss@8.4.31): + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 dependencies: postcss: 8.4.31 postcss-selector-parser: 6.0.13 - postcss-selector-parser@6.0.13: + /postcss-selector-parser@6.0.13: + resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} + engines: {node: '>=4'} dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-value-parser@4.2.0: {} + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.4.28: + /postcss@8.4.28: + resolution: {integrity: sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==} + engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 + dev: true - postcss@8.4.31: + /postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.0.2 - preact-render-to-string@5.2.3(preact@10.11.3): + /preact-render-to-string@5.2.3(preact@10.11.3): + resolution: {integrity: sha512-aPDxUn5o3GhWdtJtW0svRC2SS/l8D9MAgo2+AWml+BhDImb27ALf04Q2d+AHqUUOc6RdSXFIBVa2gxzgMKgtZA==} + peerDependencies: + preact: '>=10' dependencies: preact: 10.11.3 pretty-format: 3.8.0 + dev: false - preact@10.11.3: {} + /preact@10.11.3: + resolution: {integrity: sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==} + dev: false - preferred-pm@3.0.3: + /preferred-pm@3.0.3: + resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} + engines: {node: '>=10'} dependencies: find-up: 5.0.0 find-yarn-workspace-root2: 1.2.16 path-exists: 4.0.0 which-pm: 2.0.0 + dev: true - prelude-ls@1.2.1: {} + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true - prettier-linter-helpers@1.0.0: + /prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} dependencies: fast-diff: 1.3.0 + dev: true - prettier-plugin-tailwindcss@0.6.2(prettier@3.2.5): + /prettier-plugin-tailwindcss@0.6.2(prettier@3.2.5): + resolution: {integrity: sha512-eFefm4cg+1c2B57+H274Qm//CTWBdtQN9ansl0YTP/8TC8x3bugCTQSS/e4FC5Ctl9djhTzsbcMrZ7x2/abIow==} + engines: {node: '>=14.21.3'} + peerDependencies: + '@ianvs/prettier-plugin-sort-imports': '*' + '@prettier/plugin-pug': '*' + '@shopify/prettier-plugin-liquid': '*' + '@trivago/prettier-plugin-sort-imports': '*' + '@zackad/prettier-plugin-twig-melody': '*' + prettier: ^3.0 + prettier-plugin-astro: '*' + prettier-plugin-css-order: '*' + prettier-plugin-import-sort: '*' + prettier-plugin-jsdoc: '*' + prettier-plugin-marko: '*' + prettier-plugin-organize-attributes: '*' + prettier-plugin-organize-imports: '*' + prettier-plugin-sort-imports: '*' + prettier-plugin-style-order: '*' + prettier-plugin-svelte: '*' + peerDependenciesMeta: + '@ianvs/prettier-plugin-sort-imports': + optional: true + '@prettier/plugin-pug': + optional: true + '@shopify/prettier-plugin-liquid': + optional: true + '@trivago/prettier-plugin-sort-imports': + optional: true + '@zackad/prettier-plugin-twig-melody': + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-css-order: + optional: true + prettier-plugin-import-sort: + optional: true + prettier-plugin-jsdoc: + optional: true + prettier-plugin-marko: + optional: true + prettier-plugin-organize-attributes: + optional: true + prettier-plugin-organize-imports: + optional: true + prettier-plugin-sort-imports: + optional: true + prettier-plugin-style-order: + optional: true + prettier-plugin-svelte: + optional: true dependencies: prettier: 3.2.5 + dev: true - prettier@2.8.8: {} + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: true - prettier@3.2.5: {} + /prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} + engines: {node: '>=14'} + hasBin: true + dev: true - pretty-format@3.8.0: {} + /pretty-format@3.8.0: + resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==} + dev: false - prisma@5.10.2: + /prisma@5.10.2: + resolution: {integrity: sha512-hqb/JMz9/kymRE25pMWCxkdyhbnIWrq+h7S6WysJpdnCvhstbJSNP/S6mScEcqiB8Qv2F+0R3yG+osRaWqZacQ==} + engines: {node: '>=16.13'} + hasBin: true + requiresBuild: true dependencies: '@prisma/engines': 5.10.2 - progress@2.0.3: {} + /progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + dev: false - prop-types@15.8.1: + /prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 - property-information@6.2.0: {} + /property-information@6.2.0: + resolution: {integrity: sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==} + dev: false - proto-list@1.2.4: {} + /proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + dev: false - proxy-from-env@1.1.0: {} + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: false - pseudomap@1.0.2: {} + /pseudomap@1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + dev: true - punycode@2.3.0: {} + /punycode@2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} - qs@6.11.2: + /qs@6.11.2: + resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} + engines: {node: '>=0.6'} dependencies: side-channel: 1.0.4 + dev: false - queue-microtask@1.2.3: {} + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - quick-lru@4.0.1: {} + /quick-lru@4.0.1: + resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} + engines: {node: '>=8'} + dev: true - randombytes@2.1.0: + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: safe-buffer: 5.2.1 + dev: false - react-dom@18.2.0(react@18.2.0): + /react-dom@18.2.0(react@18.2.0): + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 dependencies: loose-envify: 1.4.0 react: 18.2.0 scheduler: 0.23.0 + dev: false - react-dropzone@14.2.3(react@18.2.0): + /react-dropzone@14.2.3(react@18.2.0): + resolution: {integrity: sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==} + engines: {node: '>= 10.13'} + peerDependencies: + react: '>= 16.8 || 18.0.0' dependencies: attr-accept: 2.2.2 file-selector: 0.6.0 prop-types: 15.8.1 react: 18.2.0 + dev: false - react-error-boundary@4.0.12(react@18.2.0): + /react-error-boundary@4.0.12(react@18.2.0): + resolution: {integrity: sha512-kJdxdEYlb7CPC1A0SeUY38cHpjuu6UkvzKiAmqmOFL21VRfMhOcWxTCBgLVCO0VEMh9JhFNcVaXlV4/BTpiwOA==} + peerDependencies: + react: '>=16.13.1' dependencies: '@babel/runtime': 7.23.7 react: 18.2.0 + dev: false - react-hook-form@7.45.4(react@18.2.0): + /react-hook-form@7.45.4(react@18.2.0): + resolution: {integrity: sha512-HGDV1JOOBPZj10LB3+OZgfDBTn+IeEsNOKiq/cxbQAIbKaiJUe/KV8DBUzsx0Gx/7IG/orWqRRm736JwOfUSWQ==} + engines: {node: '>=12.22.0'} + peerDependencies: + react: ^16.8.0 || ^17 || ^18 dependencies: react: 18.2.0 + dev: false - react-is@16.13.1: {} + /react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - react-markdown@9.0.1(@types/react@18.0.27)(react@18.2.0): + /react-markdown@9.0.1(@types/react@18.0.27)(react@18.2.0): + resolution: {integrity: sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==} + peerDependencies: + '@types/react': '>=18' + react: '>=18' dependencies: '@types/hast': 3.0.0 '@types/react': 18.0.27 @@ -10069,100 +7995,163 @@ snapshots: vfile: 6.0.1 transitivePeerDependencies: - supports-color + dev: false - react-paginate@8.2.0(react@18.2.0): + /react-paginate@8.2.0(react@18.2.0): + resolution: {integrity: sha512-sJCz1PW+9PNIjUSn919nlcRVuleN2YPoFBOvL+6TPgrH/3lwphqiSOgdrLafLdyLDxsgK+oSgviqacF4hxsDIw==} + peerDependencies: + react: ^16 || ^17 || ^18 dependencies: prop-types: 15.8.1 react: 18.2.0 + dev: false - react-papaparse@4.4.0: + /react-papaparse@4.4.0: + resolution: {integrity: sha512-xTEwHZYJ+1dh9mQDQjjwJXmWyX20DdZ52u+ddw75V+Xm5qsjXSvWmC7c8K82vRwMjKAOH2S9uFyGpHEyEztkUQ==} + engines: {node: '>=8', npm: '>=5'} dependencies: '@types/papaparse': 5.3.14 papaparse: 5.4.1 + dev: false - react-remove-scroll-bar@2.3.4(@types/react@18.0.27)(react@18.2.0): + /react-remove-scroll-bar@2.3.4(@types/react@18.0.27)(react@18.2.0): + resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@types/react': 18.0.27 react: 18.2.0 react-style-singleton: 2.2.1(@types/react@18.0.27)(react@18.2.0) tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.0.27 + dev: false - react-remove-scroll@2.5.5(@types/react@18.0.27)(react@18.2.0): + /react-remove-scroll@2.5.5(@types/react@18.0.27)(react@18.2.0): + resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@types/react': 18.0.27 react: 18.2.0 react-remove-scroll-bar: 2.3.4(@types/react@18.0.27)(react@18.2.0) react-style-singleton: 2.2.1(@types/react@18.0.27)(react@18.2.0) tslib: 2.6.2 use-callback-ref: 1.3.0(@types/react@18.0.27)(react@18.2.0) use-sidecar: 1.1.2(@types/react@18.0.27)(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 + dev: false - react-remove-scroll@2.5.7(@types/react@18.0.27)(react@18.2.0): + /react-remove-scroll@2.5.7(@types/react@18.0.27)(react@18.2.0): + resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@types/react': 18.0.27 react: 18.2.0 react-remove-scroll-bar: 2.3.4(@types/react@18.0.27)(react@18.2.0) react-style-singleton: 2.2.1(@types/react@18.0.27)(react@18.2.0) tslib: 2.6.2 use-callback-ref: 1.3.0(@types/react@18.0.27)(react@18.2.0) use-sidecar: 1.1.2(@types/react@18.0.27)(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 + dev: false - react-style-singleton@2.2.1(@types/react@18.0.27)(react@18.2.0): + /react-style-singleton@2.2.1(@types/react@18.0.27)(react@18.2.0): + resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@types/react': 18.0.27 get-nonce: 1.0.1 invariant: 2.2.4 react: 18.2.0 tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.0.27 + dev: false - react@18.2.0: + /react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 + dev: false - read-cache@1.0.0: + /read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} dependencies: pify: 2.3.0 - read-pkg-up@7.0.1: + /read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} dependencies: find-up: 4.1.0 read-pkg: 5.2.0 type-fest: 0.8.1 + dev: true - read-pkg@5.2.0: + /read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} dependencies: '@types/normalize-package-data': 2.4.1 normalize-package-data: 2.5.0 parse-json: 5.2.0 type-fest: 0.6.0 + dev: true - read-yaml-file@1.1.0: + /read-yaml-file@1.1.0: + resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} + engines: {node: '>=6'} dependencies: graceful-fs: 4.2.11 js-yaml: 3.14.1 pify: 4.0.1 strip-bom: 3.0.0 + dev: true - readable-stream@3.6.2: + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} dependencies: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 + dev: false - readdirp@3.6.0: + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 - redent@3.0.0: + /redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} dependencies: indent-string: 4.0.0 strip-indent: 3.0.0 + dev: true - reflect.getprototypeof@1.0.4: + /reflect.getprototypeof@1.0.4: + resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 @@ -10170,35 +8159,49 @@ snapshots: get-intrinsic: 1.2.2 globalthis: 1.0.3 which-builtin-type: 1.1.3 + dev: true - refractor@4.8.1: + /refractor@4.8.1: + resolution: {integrity: sha512-/fk5sI0iTgFYlmVGYVew90AoYnNMP6pooClx/XKqyeeCQXrL0Kvgn8V0VEht5ccdljbzzF1i3Q213gcntkRExg==} dependencies: '@types/hast': 2.3.5 '@types/prismjs': 1.26.0 hastscript: 7.2.0 parse-entities: 4.0.1 + dev: false - regenerator-runtime@0.14.1: {} + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - regexp.prototype.flags@1.5.1: + /regexp.prototype.flags@1.5.1: + resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 set-function-name: 2.0.1 + dev: true - regexp.prototype.flags@1.5.2: + /regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-errors: 1.3.0 set-function-name: 2.0.2 + dev: true - rehype-attr@3.0.3: + /rehype-attr@3.0.3: + resolution: {integrity: sha512-Up50Xfra8tyxnkJdCzLBIBtxOcB2M1xdeKe1324U06RAvSjYm7ULSeoM+b/nYPQPVd7jsXJ9+39IG1WAJPXONw==} + engines: {node: '>=16'} dependencies: unified: 11.0.4 unist-util-visit: 5.0.0 + dev: false - rehype-autolink-headings@7.1.0: + /rehype-autolink-headings@7.1.0: + resolution: {integrity: sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw==} dependencies: '@types/hast': 3.0.0 '@ungap/structured-clone': 1.2.0 @@ -10206,27 +8209,36 @@ snapshots: hast-util-is-element: 3.0.0 unified: 11.0.4 unist-util-visit: 5.0.0 + dev: false - rehype-ignore@2.0.2: + /rehype-ignore@2.0.2: + resolution: {integrity: sha512-BpAT/3lU9DMJ2siYVD/dSR0A/zQgD6Fb+fxkJd4j+wDVy6TYbYpK+FZqu8eM9EuNKGvi4BJR7XTZ/+zF02Dq8w==} + engines: {node: '>=16'} dependencies: hast-util-select: 6.0.2 unified: 11.0.4 unist-util-visit: 5.0.0 + dev: false - rehype-parse@8.0.5: + /rehype-parse@8.0.5: + resolution: {integrity: sha512-Ds3RglaY/+clEX2U2mHflt7NlMA72KspZ0JLUJgBBLpRddBcEw3H8uYZQliQriku22NZpYMfjDdSgHcjxue24A==} dependencies: '@types/hast': 2.3.5 hast-util-from-parse5: 7.1.2 parse5: 6.0.1 unified: 10.1.2 + dev: false - rehype-parse@9.0.0: + /rehype-parse@9.0.0: + resolution: {integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==} dependencies: '@types/hast': 3.0.0 hast-util-from-html: 2.0.1 unified: 11.0.4 + dev: false - rehype-prism-plus@1.6.3: + /rehype-prism-plus@1.6.3: + resolution: {integrity: sha512-F6tn376zimnvy+xW0bSnryul+rvVL7NhDIkavc9kAuzDx5zIZW04A6jdXPkcFBhojcqZB8b6pHt6CLqiUx+Tbw==} dependencies: hast-util-to-string: 2.0.0 parse-numeric-range: 1.3.0 @@ -10234,8 +8246,10 @@ snapshots: rehype-parse: 8.0.5 unist-util-filter: 4.0.1 unist-util-visit: 4.1.2 + dev: false - rehype-prism-plus@2.0.0: + /rehype-prism-plus@2.0.0: + resolution: {integrity: sha512-FeM/9V2N7EvDZVdR2dqhAzlw5YI49m9Tgn7ZrYJeYHIahM6gcXpH0K1y2gNnKanZCydOMluJvX2cB9z3lhY8XQ==} dependencies: hast-util-to-string: 3.0.0 parse-numeric-range: 1.3.0 @@ -10243,50 +8257,67 @@ snapshots: rehype-parse: 9.0.0 unist-util-filter: 5.0.1 unist-util-visit: 5.0.0 + dev: false - rehype-raw@7.0.0: + /rehype-raw@7.0.0: + resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} dependencies: '@types/hast': 3.0.0 hast-util-raw: 9.0.1 vfile: 6.0.1 + dev: false - rehype-rewrite@4.0.2: + /rehype-rewrite@4.0.2: + resolution: {integrity: sha512-rjLJ3z6fIV11phwCqHp/KRo8xuUCO8o9bFJCNw5o6O2wlLk6g8r323aRswdGBQwfXPFYeSuZdAjp4tzo6RGqEg==} + engines: {node: '>=16.0.0'} dependencies: hast-util-select: 6.0.2 unified: 11.0.4 unist-util-visit: 5.0.0 + dev: false - rehype-sanitize@6.0.0: + /rehype-sanitize@6.0.0: + resolution: {integrity: sha512-CsnhKNsyI8Tub6L4sm5ZFsme4puGfc6pYylvXo1AeqaGbjOYyzNv3qZPwvs0oMJ39eryyeOdmxwUIo94IpEhqg==} dependencies: '@types/hast': 3.0.0 hast-util-sanitize: 5.0.0 + dev: false - rehype-slug@6.0.0: + /rehype-slug@6.0.0: + resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} dependencies: '@types/hast': 3.0.0 github-slugger: 2.0.0 hast-util-heading-rank: 3.0.0 hast-util-to-string: 3.0.0 unist-util-visit: 5.0.0 + dev: false - rehype-stringify@10.0.0: + /rehype-stringify@10.0.0: + resolution: {integrity: sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==} dependencies: '@types/hast': 3.0.0 hast-util-to-html: 9.0.0 unified: 11.0.4 + dev: false - rehype@13.0.1: + /rehype@13.0.1: + resolution: {integrity: sha512-AcSLS2mItY+0fYu9xKxOu1LhUZeBZZBx8//5HKzF+0XP+eP8+6a5MXn2+DW2kfXR6Dtp1FEXMVrjyKAcvcU8vg==} dependencies: '@types/hast': 3.0.0 rehype-parse: 9.0.0 rehype-stringify: 10.0.0 unified: 11.0.4 + dev: false - relative-luminance@2.0.1: + /relative-luminance@2.0.1: + resolution: {integrity: sha512-wFuITNthJilFPwkK7gNJcULxXBcfFZvZORsvdvxeOdO44wCeZnuQkf3nFFzOR/dpJNxYsdRZJLsepWbyKhnMww==} dependencies: esm: 3.2.25 + dev: false - remark-gfm@4.0.0: + /remark-gfm@4.0.0: + resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} dependencies: '@types/mdast': 4.0.3 mdast-util-gfm: 3.0.0 @@ -10296,8 +8327,10 @@ snapshots: unified: 11.0.4 transitivePeerDependencies: - supports-color + dev: false - remark-parse@11.0.0: + /remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} dependencies: '@types/mdast': 4.0.3 mdast-util-from-markdown: 2.0.0 @@ -10305,61 +8338,97 @@ snapshots: unified: 11.0.4 transitivePeerDependencies: - supports-color + dev: false - remark-rehype@11.0.0: + /remark-rehype@11.0.0: + resolution: {integrity: sha512-vx8x2MDMcxuE4lBmQ46zYUDfcFMmvg80WYX+UNLeG6ixjdCCLcw1lrgAukwBTuOFsS78eoAedHGn9sNM0w7TPw==} dependencies: '@types/hast': 3.0.0 '@types/mdast': 4.0.3 mdast-util-to-hast: 13.0.2 unified: 11.0.4 vfile: 6.0.1 + dev: false - remark-stringify@11.0.0: + /remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} dependencies: '@types/mdast': 4.0.3 mdast-util-to-markdown: 2.1.0 unified: 11.0.4 + dev: false - require-directory@2.1.1: {} + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true - require-from-string@2.0.2: {} + /require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: false - require-main-filename@2.0.0: {} + /require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + dev: true - resend@3.2.0: + /resend@3.2.0: + resolution: {integrity: sha512-lDHhexiFYPoLXy7zRlJ8D5eKxoXy6Tr9/elN3+Vv7PkUoYuSSD1fpiIfa/JYXEWyiyN2UczkCTLpkT8dDPJ4Pg==} + engines: {node: '>=18'} dependencies: '@react-email/render': 0.0.12 + dev: false - resolve-from@4.0.0: {} + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true - resolve-from@5.0.0: {} + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true - resolve-pkg-maps@1.0.0: {} + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: true - resolve@1.22.4: + /resolve@1.22.4: + resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} + hasBin: true dependencies: is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - resolve@1.22.8: + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true dependencies: is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - resolve@2.0.0-next.5: + /resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true dependencies: is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + dev: true - restore-cursor@4.0.0: + /restore-cursor@4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: onetime: 5.1.2 signal-exit: 3.0.7 + dev: true - retry-request@7.0.2: + /retry-request@7.0.2: + resolution: {integrity: sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==} + engines: {node: '>=14'} dependencies: '@types/request': 2.48.12 extend: 3.0.2 @@ -10367,100 +8436,161 @@ snapshots: transitivePeerDependencies: - encoding - supports-color + dev: false - retry@0.13.1: {} + /retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + dev: false - reusify@1.0.4: {} + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rfdc@1.3.0: {} + /rfdc@1.3.0: + resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} + dev: true - rimraf@3.0.2: + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true dependencies: glob: 7.1.7 + dev: true - rollup@2.78.0: + /rollup@2.78.0: + resolution: {integrity: sha512-4+YfbQC9QEVvKTanHhIAFVUFSRsezvQF8vFOJwtGfb9Bb+r014S+qryr9PSmw8x6sMnPkmFBGAvIFVQxvJxjtg==} + engines: {node: '>=10.0.0'} + hasBin: true optionalDependencies: fsevents: 2.3.3 + dev: false - run-parallel@1.2.0: + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - safe-array-concat@1.0.1: + /safe-array-concat@1.0.1: + resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} + engines: {node: '>=0.4'} dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 has-symbols: 1.0.3 isarray: 2.0.5 + dev: true - safe-array-concat@1.1.2: + /safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 has-symbols: 1.0.3 isarray: 2.0.5 + dev: true - safe-buffer@5.2.1: {} + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: false - safe-regex-test@1.0.0: + /safe-regex-test@1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 is-regex: 1.1.4 + dev: true - safe-regex-test@1.0.3: + /safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-regex: 1.1.4 + dev: true - safer-buffer@2.1.2: {} + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true - scheduler@0.23.0: + /scheduler@0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} dependencies: loose-envify: 1.4.0 + dev: false - schema-utils@3.3.0: + /schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} dependencies: '@types/json-schema': 7.0.15 ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) + dev: false - schema-utils@4.2.0: + /schema-utils@4.2.0: + resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} + engines: {node: '>= 12.13.0'} dependencies: '@types/json-schema': 7.0.12 ajv: 8.12.0 ajv-formats: 2.1.1(ajv@8.12.0) ajv-keywords: 5.1.0(ajv@8.12.0) + dev: false - selderee@0.11.0: + /selderee@0.11.0: + resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==} dependencies: parseley: 0.12.1 + dev: false - semver@5.7.2: {} + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + dev: true - semver@6.3.1: {} + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true - semver@7.5.4: + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true dependencies: lru-cache: 6.0.0 + dev: true - semver@7.6.2: {} + /semver@7.6.2: + resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} + engines: {node: '>=10'} + hasBin: true - serialize-javascript@6.0.1: + /serialize-javascript@6.0.1: + resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} dependencies: randombytes: 2.1.0 + dev: false - set-blocking@2.0.0: {} + /set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + dev: true - set-function-length@1.1.1: + /set-function-length@1.1.1: + resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} + engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.1 get-intrinsic: 1.2.2 gopd: 1.0.1 has-property-descriptors: 1.0.1 - set-function-length@1.2.2: + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 @@ -10468,59 +8598,96 @@ snapshots: get-intrinsic: 1.2.4 gopd: 1.0.1 has-property-descriptors: 1.0.2 + dev: true - set-function-name@2.0.1: + /set-function-name@2.0.1: + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.1 functions-have-names: 1.2.3 has-property-descriptors: 1.0.1 + dev: true - set-function-name@2.0.2: + /set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 + dev: true - shebang-command@1.2.0: + /shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} dependencies: shebang-regex: 1.0.0 + dev: true - shebang-command@2.0.0: + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 - shebang-regex@1.0.0: {} + /shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + dev: true - shebang-regex@3.0.0: {} + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} - side-channel@1.0.4: + /side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 object-inspect: 1.13.1 - side-channel@1.0.6: + /side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 object-inspect: 1.13.1 + dev: true - signal-exit@3.0.7: {} + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true - signal-exit@4.1.0: {} + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} - slash@3.0.0: {} + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true - slice-ansi@5.0.0: + /slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} dependencies: ansi-styles: 6.2.1 is-fullwidth-code-point: 4.0.0 + dev: true - slugify@1.6.6: {} + /slugify@1.6.6: + resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} + engines: {node: '>=8.0.0'} + dev: false - smartwrap@2.0.2: + /smartwrap@2.0.2: + resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} + engines: {node: '>=6'} + hasBin: true dependencies: array.prototype.flat: 1.3.2 breakword: 1.0.6 @@ -10528,75 +8695,123 @@ snapshots: strip-ansi: 6.0.1 wcwidth: 1.0.1 yargs: 15.4.1 + dev: true - sonner@1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + /sonner@1.4.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-nvkTsIuOmi9e5Wz5If8ldasJjZNVfwiXYijBi2dbijvTQnQppvMcXTFNxL/NUFWlI2yJ1JX7TREDsg+gYm9WyA==} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + dev: false - source-map-js@1.0.2: {} + /source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} - source-map-support@0.5.21: + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 + dev: false - source-map@0.6.1: {} + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: false - space-separated-tokens@2.0.2: {} + /space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + dev: false - spawndamnit@2.0.0: + /spawndamnit@2.0.0: + resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} dependencies: cross-spawn: 5.1.0 signal-exit: 3.0.7 + dev: true - spdx-correct@3.2.0: + /spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.13 + dev: true - spdx-exceptions@2.3.0: {} + /spdx-exceptions@2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + dev: true - spdx-expression-parse@3.0.1: + /spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 spdx-license-ids: 3.0.13 + dev: true - spdx-license-ids@3.0.13: {} + /spdx-license-ids@3.0.13: + resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} + dev: true - sprintf-js@1.0.3: {} + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true - stacktrace-parser@0.1.10: + /stacktrace-parser@0.1.10: + resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} + engines: {node: '>=6'} dependencies: type-fest: 0.7.1 + dev: false - stream-events@1.0.5: + /stream-events@1.0.5: + resolution: {integrity: sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==} dependencies: stubs: 3.0.0 + dev: false - stream-shift@1.0.3: {} + /stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + dev: false - stream-transform@2.1.3: + /stream-transform@2.1.3: + resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} dependencies: mixme: 0.5.9 + dev: true - streamsearch@1.1.0: {} + /streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + dev: false - string-argv@0.3.2: {} + /string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + dev: true - string-width@4.2.3: + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - string-width@5.1.2: + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.1.0 - string.prototype.matchall@4.0.11: + /string.prototype.matchall@4.0.11: + resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -10610,92 +8825,151 @@ snapshots: regexp.prototype.flags: 1.5.2 set-function-name: 2.0.2 side-channel: 1.0.6 + dev: true - string.prototype.trim@1.2.8: + /string.prototype.trim@1.2.8: + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 + dev: true - string.prototype.trim@1.2.9: + /string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-object-atoms: 1.0.0 + dev: true - string.prototype.trimend@1.0.7: + /string.prototype.trimend@1.0.7: + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 + dev: true - string.prototype.trimend@1.0.8: + /string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 + dev: true - string.prototype.trimstart@1.0.7: + /string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 + dev: true - string.prototype.trimstart@1.0.8: + /string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 + dev: true - string_decoder@1.3.0: + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 + dev: false - stringify-entities@4.0.3: + /stringify-entities@4.0.3: + resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} dependencies: character-entities-html4: 2.1.0 character-entities-legacy: 3.0.0 + dev: false - strip-ansi@6.0.1: + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} dependencies: ansi-regex: 6.0.1 - strip-bom@3.0.0: {} + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: true - strip-final-newline@3.0.0: {} + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true - strip-indent@3.0.0: + /strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} dependencies: min-indent: 1.0.1 + dev: true - strip-json-comments@3.1.1: {} + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true - stripe@14.16.0: + /stripe@14.16.0: + resolution: {integrity: sha512-1gOr2LzafWV84cPIO5Md/QPh4XVPLKULVuRpBVOV3Plq3seiHmg/eeOktX+hDl8jpNZuORHYaUJGrNqrABLwdg==} + engines: {node: '>=12.*'} dependencies: '@types/node': 20.10.6 qs: 6.11.2 + dev: false - strnum@1.0.5: {} + /strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + dev: false - stubs@3.0.0: {} + /stubs@3.0.0: + resolution: {integrity: sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==} + dev: false - style-to-object@1.0.5: + /style-to-object@1.0.5: + resolution: {integrity: sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==} dependencies: inline-style-parser: 0.2.2 + dev: false - styled-jsx@5.1.1(@babel/core@7.22.17)(react@18.2.0): + /styled-jsx@5.1.1(@babel/core@7.22.17)(react@18.2.0): + resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true dependencies: + '@babel/core': 7.22.17 client-only: 0.0.1 react: 18.2.0 - optionalDependencies: - '@babel/core': 7.22.17 + dev: false - sucrase@3.34.0: + /sucrase@3.34.0: + resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} + engines: {node: '>=8'} + hasBin: true dependencies: '@jridgewell/gen-mapping': 0.3.3 commander: 4.1.1 @@ -10705,34 +8979,55 @@ snapshots: pirates: 4.0.6 ts-interface-checker: 0.1.13 - supports-color@5.5.0: + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} dependencies: has-flag: 3.0.0 - supports-color@7.2.0: + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} dependencies: has-flag: 4.0.0 - supports-color@8.1.1: + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} dependencies: has-flag: 4.0.0 + dev: false - supports-preserve-symlinks-flag@1.0.0: {} + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} - synckit@0.8.8: + /synckit@0.8.8: + resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} + engines: {node: ^14.18.0 || >=16.0.0} dependencies: '@pkgr/core': 0.1.1 tslib: 2.6.2 + dev: true - tailwind-merge@2.2.0: + /tailwind-merge@2.2.0: + resolution: {integrity: sha512-SqqhhaL0T06SW59+JVNfAqKdqLs0497esifRrZ7jOaefP3o64fdFNDMrAQWZFMxTLJPiHVjRLUywT8uFz1xNWQ==} dependencies: '@babel/runtime': 7.23.6 + dev: false - tailwindcss-animate@1.0.6(tailwindcss@3.4.1(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3))): + /tailwindcss-animate@1.0.6(tailwindcss@3.4.1): + resolution: {integrity: sha512-4WigSGMvbl3gCCact62ZvOngA+PRqhAn7si3TQ3/ZuPuQZcIEtVap+ENSXbzWhpojKB8CpvnIsrwBu8/RnHtuw==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' dependencies: - tailwindcss: 3.4.1(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3)) + tailwindcss: 3.4.1(ts-node@10.9.1) + dev: false - tailwindcss@3.4.1(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3)): + /tailwindcss@3.4.1(ts-node@10.9.1): + resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==} + engines: {node: '>=14.0.0'} + hasBin: true dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -10751,7 +9046,7 @@ snapshots: postcss: 8.4.31 postcss-import: 15.1.0(postcss@8.4.31) postcss-js: 4.0.1(postcss@8.4.31) - postcss-load-config: 4.0.1(postcss@8.4.31)(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3)) + postcss-load-config: 4.0.1(postcss@8.4.31)(ts-node@10.9.1) postcss-nested: 6.0.1(postcss@8.4.31) postcss-selector-parser: 6.0.13 resolve: 1.22.4 @@ -10759,9 +9054,13 @@ snapshots: transitivePeerDependencies: - ts-node - tapable@2.2.1: {} + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} - teeny-request@9.0.0: + /teeny-request@9.0.0: + resolution: {integrity: sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==} + engines: {node: '>=14'} dependencies: http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 @@ -10771,10 +9070,28 @@ snapshots: transitivePeerDependencies: - encoding - supports-color + dev: false - term-size@2.2.1: {} + /term-size@2.2.1: + resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} + engines: {node: '>=8'} + dev: true - terser-webpack-plugin@5.3.10(webpack@5.89.0): + /terser-webpack-plugin@5.3.10(webpack@5.89.0): + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true dependencies: '@jridgewell/trace-mapping': 0.3.20 jest-worker: 27.5.1 @@ -10782,49 +9099,103 @@ snapshots: serialize-javascript: 6.0.1 terser: 5.26.0 webpack: 5.89.0 + dev: false - terser@5.26.0: + /terser@5.26.0: + resolution: {integrity: sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ==} + engines: {node: '>=10'} + hasBin: true dependencies: '@jridgewell/source-map': 0.3.5 acorn: 8.11.3 commander: 2.20.3 source-map-support: 0.5.21 + dev: false - text-table@0.2.0: {} + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true - thenify-all@1.6.0: + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} dependencies: thenify: 3.3.1 - thenify@3.3.1: + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} dependencies: any-promise: 1.3.0 - tmp@0.0.33: + /tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} dependencies: os-tmpdir: 1.0.2 + dev: true - to-fast-properties@2.0.0: {} + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: false - to-regex-range@5.0.1: + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - tr46@0.0.3: {} + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: false + + /trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + dev: false - trim-lines@3.0.1: {} + /trim-newlines@3.0.1: + resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} + engines: {node: '>=8'} + dev: true - trim-newlines@3.0.1: {} + /trough@2.1.0: + resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} + dev: false - trough@2.1.0: {} + /ts-api-utils@1.0.3(typescript@5.3.3): + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.3.3 + dev: true - ts-api-utils@1.3.0(typescript@5.3.3): + /ts-api-utils@1.3.0(typescript@5.3.3): + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' dependencies: typescript: 5.3.3 + dev: true - ts-interface-checker@0.1.13: {} + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3): + /ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3): + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 @@ -10842,16 +9213,22 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - tsconfig-paths@3.15.0: + /tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} dependencies: '@types/json5': 0.0.29 json5: 1.0.2 minimist: 1.2.8 strip-bom: 3.0.0 + dev: true - tslib@2.6.2: {} + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - tty-table@4.2.1: + /tty-table@4.2.1: + resolution: {integrity: sha512-xz0uKo+KakCQ+Dxj1D/tKn2FSyreSYWzdkL/BYhgN6oMW808g8QRMuh1atAV9fjTPbWBjfbkKQpI/5rEcnAc7g==} + engines: {node: '>=8.0.0'} + hasBin: true dependencies: chalk: 4.1.2 csv: 5.5.3 @@ -10860,59 +9237,98 @@ snapshots: strip-ansi: 6.0.1 wcwidth: 1.0.1 yargs: 17.7.2 + dev: true - type-check@0.4.0: + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 + dev: true - type-fest@0.13.1: {} + /type-fest@0.13.1: + resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} + engines: {node: '>=10'} + dev: true - type-fest@0.20.2: {} + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true - type-fest@0.6.0: {} + /type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + dev: true - type-fest@0.7.1: {} + /type-fest@0.7.1: + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} + dev: false - type-fest@0.8.1: {} + /type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + dev: true - type-fest@1.4.0: {} + /type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + dev: true - typed-array-buffer@1.0.0: + /typed-array-buffer@1.0.0: + resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 is-typed-array: 1.1.12 + dev: true - typed-array-buffer@1.0.2: + /typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-typed-array: 1.1.13 + dev: true - typed-array-byte-length@1.0.0: + /typed-array-byte-length@1.0.0: + resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 for-each: 0.3.3 has-proto: 1.0.1 is-typed-array: 1.1.12 + dev: true - typed-array-byte-length@1.0.1: + /typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 has-proto: 1.0.3 is-typed-array: 1.1.13 + dev: true - typed-array-byte-offset@1.0.0: + /typed-array-byte-offset@1.0.0: + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.5 call-bind: 1.0.5 for-each: 0.3.3 has-proto: 1.0.1 is-typed-array: 1.1.12 + dev: true - typed-array-byte-offset@1.0.2: + /typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.7 @@ -10920,14 +9336,19 @@ snapshots: gopd: 1.0.1 has-proto: 1.0.3 is-typed-array: 1.1.13 + dev: true - typed-array-length@1.0.4: + /typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: call-bind: 1.0.5 for-each: 0.3.3 is-typed-array: 1.1.12 + dev: true - typed-array-length@1.0.6: + /typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 for-each: 0.3.3 @@ -10935,19 +9356,27 @@ snapshots: has-proto: 1.0.3 is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 + dev: true - typescript@5.3.3: {} + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} + hasBin: true - unbox-primitive@1.0.2: + /unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: call-bind: 1.0.5 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 + dev: true - undici-types@5.26.5: {} + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - unified@10.1.2: + /unified@10.1.2: + resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} dependencies: '@types/unist': 2.0.8 bail: 2.0.2 @@ -10956,8 +9385,10 @@ snapshots: is-plain-obj: 4.1.0 trough: 2.1.0 vfile: 5.3.7 + dev: false - unified@11.0.4: + /unified@11.0.4: + resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} dependencies: '@types/unist': 3.0.0 bail: 2.0.2 @@ -10966,178 +9397,286 @@ snapshots: is-plain-obj: 4.1.0 trough: 2.1.0 vfile: 6.0.1 + dev: false - unist-util-filter@4.0.1: + /unist-util-filter@4.0.1: + resolution: {integrity: sha512-RynicUM/vbOSTSiUK+BnaK9XMfmQUh6gyi7L6taNgc7FIf84GukXVV3ucGzEN/PhUUkdP5hb1MmXc+3cvPUm5Q==} dependencies: '@types/unist': 2.0.8 unist-util-is: 5.2.1 unist-util-visit-parents: 5.1.3 + dev: false - unist-util-filter@5.0.1: + /unist-util-filter@5.0.1: + resolution: {integrity: sha512-pHx7D4Zt6+TsfwylH9+lYhBhzyhEnCXs/lbq/Hstxno5z4gVdyc2WEW0asfjGKPyG4pEKrnBv5hdkO6+aRnQJw==} dependencies: '@types/unist': 3.0.0 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 + dev: false - unist-util-is@5.2.1: + /unist-util-is@5.2.1: + resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} dependencies: '@types/unist': 2.0.8 + dev: false - unist-util-is@6.0.0: + /unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} dependencies: '@types/unist': 3.0.0 + dev: false - unist-util-position@5.0.0: + /unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} dependencies: '@types/unist': 3.0.0 + dev: false - unist-util-remove-position@5.0.0: + /unist-util-remove-position@5.0.0: + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} dependencies: '@types/unist': 3.0.0 unist-util-visit: 5.0.0 + dev: false - unist-util-stringify-position@3.0.3: + /unist-util-stringify-position@3.0.3: + resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} dependencies: '@types/unist': 2.0.8 + dev: false - unist-util-stringify-position@4.0.0: + /unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} dependencies: '@types/unist': 3.0.0 + dev: false - unist-util-visit-parents@5.1.3: + /unist-util-visit-parents@5.1.3: + resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} dependencies: '@types/unist': 2.0.8 unist-util-is: 5.2.1 + dev: false - unist-util-visit-parents@6.0.1: + /unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} dependencies: '@types/unist': 3.0.0 unist-util-is: 6.0.0 + dev: false - unist-util-visit@4.1.2: + /unist-util-visit@4.1.2: + resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} dependencies: '@types/unist': 2.0.8 unist-util-is: 5.2.1 unist-util-visit-parents: 5.1.3 + dev: false - unist-util-visit@5.0.0: + /unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} dependencies: '@types/unist': 3.0.0 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 + dev: false - universalify@0.1.2: {} + /universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + dev: true - update-browserslist-db@1.0.11(browserslist@4.21.10): + /update-browserslist-db@1.0.11(browserslist@4.21.10): + resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' dependencies: browserslist: 4.21.10 escalade: 3.1.1 picocolors: 1.0.0 - update-browserslist-db@1.0.13(browserslist@4.22.2): + /update-browserslist-db@1.0.13(browserslist@4.22.2): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' dependencies: browserslist: 4.22.2 escalade: 3.1.1 picocolors: 1.0.0 + dev: false - uri-js@4.4.1: + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.0 - use-callback-ref@1.3.0(@types/react@18.0.27)(react@18.2.0): + /use-callback-ref@1.3.0(@types/react@18.0.27)(react@18.2.0): + resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@types/react': 18.0.27 react: 18.2.0 tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.0.27 + dev: false - use-debounce@10.0.0(react@18.2.0): + /use-debounce@10.0.0(react@18.2.0): + resolution: {integrity: sha512-XRjvlvCB46bah9IBXVnq/ACP2lxqXyZj0D9hj4K5OzNroMDpTEBg8Anuh1/UfRTRs7pLhQ+RiNxxwZu9+MVl1A==} + engines: {node: '>= 16.0.0'} + peerDependencies: + react: '>=16.8.0' dependencies: react: 18.2.0 + dev: false - use-sidecar@1.1.2(@types/react@18.0.27)(react@18.2.0): + /use-sidecar@1.1.2(@types/react@18.0.27)(react@18.2.0): + resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@types/react': 18.0.27 detect-node-es: 1.1.0 react: 18.2.0 tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.0.27 + dev: false - util-deprecate@1.0.2: {} + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - uuid@8.3.2: {} + /uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + dev: false - uuid@9.0.1: {} + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + dev: false - v8-compile-cache-lib@3.0.1: {} + /v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - validate-npm-package-license@3.0.4: + /validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 + dev: true - vaul@0.9.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + /vaul@0.9.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-bZSySGbAHiTXmZychprnX/dE0EsSige88xtyyL3/MCRbrFotRPQZo7UdydGXZWw+CKbNOw5Ow8gwAo93/nB/Cg==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: - '@radix-ui/react-dialog': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-dialog': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: - '@types/react' - '@types/react-dom' + dev: false - vfile-location@4.1.0: + /vfile-location@4.1.0: + resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==} dependencies: '@types/unist': 2.0.8 vfile: 5.3.7 + dev: false - vfile-location@5.0.2: + /vfile-location@5.0.2: + resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} dependencies: '@types/unist': 3.0.0 vfile: 6.0.1 + dev: false - vfile-message@3.1.4: + /vfile-message@3.1.4: + resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} dependencies: '@types/unist': 2.0.8 unist-util-stringify-position: 3.0.3 + dev: false - vfile-message@4.0.2: + /vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} dependencies: '@types/unist': 3.0.0 unist-util-stringify-position: 4.0.0 + dev: false - vfile@5.3.7: + /vfile@5.3.7: + resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} dependencies: '@types/unist': 2.0.8 is-buffer: 2.0.5 unist-util-stringify-position: 3.0.3 vfile-message: 3.1.4 + dev: false - vfile@6.0.1: + /vfile@6.0.1: + resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} dependencies: '@types/unist': 3.0.0 unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 + dev: false - watchpack@2.4.0: + /watchpack@2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 + dev: false - wcag-contrast@3.0.0: + /wcag-contrast@3.0.0: + resolution: {integrity: sha512-RWbpg/S7FOXDCwqC2oFhN/vh8dHzj0OS6dpyOSDHyQFSmqmR+lAUStV/ziTT1GzDqL9wol+nZQB4vCi5yEak+w==} dependencies: relative-luminance: 2.0.1 + dev: false - wcwidth@1.0.1: + /wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.4 + dev: true - web-namespaces@2.0.1: {} + /web-namespaces@2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + dev: false - webidl-conversions@3.0.1: {} + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: false - webpack-sources@3.2.3: {} + /webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + dev: false - webpack@5.89.0: + /webpack@5.89.0: + resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -11167,21 +9706,28 @@ snapshots: - '@swc/core' - esbuild - uglify-js + dev: false - whatwg-url@5.0.0: + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 + dev: false - which-boxed-primitive@1.0.2: + /which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: is-bigint: 1.0.4 is-boolean-object: 1.1.2 is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 + dev: true - which-builtin-type@1.1.3: + /which-builtin-type@1.1.3: + resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + engines: {node: '>= 0.4'} dependencies: function.prototype.name: 1.1.6 has-tostringtag: 1.0.0 @@ -11195,85 +9741,133 @@ snapshots: which-boxed-primitive: 1.0.2 which-collection: 1.0.1 which-typed-array: 1.1.13 + dev: true - which-collection@1.0.1: + /which-collection@1.0.1: + resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} dependencies: is-map: 2.0.2 is-set: 2.0.2 is-weakmap: 2.0.1 is-weakset: 2.0.2 + dev: true - which-module@2.0.1: {} + /which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + dev: true - which-pm@2.0.0: + /which-pm@2.0.0: + resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} + engines: {node: '>=8.15'} dependencies: load-yaml-file: 0.2.0 path-exists: 4.0.0 + dev: true - which-typed-array@1.1.13: + /which-typed-array@1.1.13: + resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} + engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.5 call-bind: 1.0.5 for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.0 + dev: true - which-typed-array@1.1.15: + /which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.2 + dev: true - which@1.3.1: + /which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true dependencies: isexe: 2.0.0 + dev: true - which@2.0.2: + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true dependencies: isexe: 2.0.0 - wrap-ansi@6.2.0: + /wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 + dev: true - wrap-ansi@7.0.0: + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - wrap-ansi@8.1.0: + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} dependencies: ansi-styles: 6.2.1 string-width: 5.1.2 strip-ansi: 7.1.0 - wrappy@1.0.2: {} + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - y18n@4.0.3: {} + /y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + dev: true - y18n@5.0.8: {} + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true - yallist@2.1.2: {} + /yallist@2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + dev: true - yallist@3.1.1: {} + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: false - yallist@4.0.0: {} + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - yaml@2.3.3: {} + /yaml@2.3.3: + resolution: {integrity: sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==} + engines: {node: '>= 14'} - yargs-parser@18.1.3: + /yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} dependencies: camelcase: 5.3.1 decamelize: 1.2.0 + dev: true - yargs-parser@21.1.1: {} + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true - yargs@15.4.1: + /yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} dependencies: cliui: 6.0.0 decamelize: 1.2.0 @@ -11286,8 +9880,11 @@ snapshots: which-module: 2.0.1 y18n: 4.0.3 yargs-parser: 18.1.3 + dev: true - yargs@17.7.2: + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} dependencies: cliui: 8.0.1 escalade: 3.1.1 @@ -11296,13 +9893,25 @@ snapshots: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 21.1.1 + dev: true - yn@3.1.1: {} + /yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} - yocto-queue@0.1.0: {} + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} - yocto-queue@1.0.0: {} + /yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + dev: false - zod@3.22.4: {} + /zod@3.22.4: + resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + dev: false - zwitch@2.0.4: {} + /zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + dev: false From ea506364352fa245906bfe93ae6a36331a0b7115 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 1 Jul 2024 11:20:29 +0200 Subject: [PATCH 165/326] :card_file_box: create pinnedAmount column in tenant table --- prisma/migrations/20240701091955_faq_maker_dev23/migration.sql | 2 ++ prisma/schema.prisma | 1 + 2 files changed, 3 insertions(+) create mode 100644 prisma/migrations/20240701091955_faq_maker_dev23/migration.sql diff --git a/prisma/migrations/20240701091955_faq_maker_dev23/migration.sql b/prisma/migrations/20240701091955_faq_maker_dev23/migration.sql new file mode 100644 index 000000000..17abbe366 --- /dev/null +++ b/prisma/migrations/20240701091955_faq_maker_dev23/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "Tenant" ADD COLUMN "pinnedAmount" INTEGER NOT NULL DEFAULT 0; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 1723a619a..4240541f5 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -21,6 +21,7 @@ model Tenant { nodes Node[] tags Tag[] integrations Integrations? + pinnedAmount Int @default(0) @@unique([email, logo, customerId]) } From df3d400d8a3ff311b4b1cdc00935efaf57d1e11f Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 1 Jul 2024 12:18:37 +0200 Subject: [PATCH 166/326] :children_crossing: change path revalidated --- src/actions/create-favorite/action.ts | 2 +- src/actions/delete-favorite/action.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/actions/create-favorite/action.ts b/src/actions/create-favorite/action.ts index 07bd1fef6..6d969ab78 100644 --- a/src/actions/create-favorite/action.ts +++ b/src/actions/create-favorite/action.ts @@ -19,6 +19,6 @@ export const createFavorite = authActionClient userId, }, }); - revalidatePath(`${Routes.SITE.QUESTION}/${nodeId}`); + revalidatePath(Routes.SITE.HOME); return { message: 'Question added to favorites' }; }); diff --git a/src/actions/delete-favorite/action.ts b/src/actions/delete-favorite/action.ts index 7bfc8b79b..98111c28f 100644 --- a/src/actions/delete-favorite/action.ts +++ b/src/actions/delete-favorite/action.ts @@ -16,6 +16,6 @@ export const deleteFavorite = authActionClient await prisma.favorite.deleteMany({ where: { nodeId, userId }, }); - revalidatePath(`${Routes.SITE.QUESTION}/${nodeId}`); + revalidatePath(Routes.SITE.HOME); return { message: 'Question removed from favorites' }; }); From 8e72347b1d3e5a8f1448577c48a86cbc4252cf3b Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 1 Jul 2024 12:19:56 +0200 Subject: [PATCH 167/326] :sparkles: create functions to add / remove question from pinned --- src/actions/create-pin/action.ts | 24 ++++++++++++++ src/actions/create-pin/index.ts | 2 ++ src/actions/create-pin/schema.ts | 5 +++ src/actions/delete-pin/action.ts | 24 ++++++++++++++ src/actions/delete-pin/index.ts | 2 ++ src/actions/delete-pin/schema.ts | 5 +++ src/actions/index.ts | 2 ++ src/app/home.tsx | 6 ++-- src/app/page.tsx | 3 +- src/modules/home/List.tsx | 11 +++++-- src/modules/home/Question.tsx | 54 ++++++++++++++++++++++++++++---- 11 files changed, 127 insertions(+), 11 deletions(-) create mode 100644 src/actions/create-pin/action.ts create mode 100644 src/actions/create-pin/index.ts create mode 100644 src/actions/create-pin/schema.ts create mode 100644 src/actions/delete-pin/action.ts create mode 100644 src/actions/delete-pin/index.ts create mode 100644 src/actions/delete-pin/schema.ts diff --git a/src/actions/create-pin/action.ts b/src/actions/create-pin/action.ts new file mode 100644 index 000000000..fc1249606 --- /dev/null +++ b/src/actions/create-pin/action.ts @@ -0,0 +1,24 @@ +'use server'; + +import { revalidatePath } from 'next/cache'; + +import { authActionClient } from '@/lib/safe-actions'; +import { Routes } from '@/utils'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { createPinSchema } from './schema'; + +export const createPin = authActionClient + .metadata({ actionName: 'createPin' }) + .schema(createPinSchema) + .action(async ({ parsedInput: { nodeId } }) => { + await prisma.node.update({ + where: { id: nodeId }, + data: { + isPinned: true, + }, + }); + revalidatePath(Routes.SITE.HOME); + return { message: 'Question pinned' }; + }); diff --git a/src/actions/create-pin/index.ts b/src/actions/create-pin/index.ts new file mode 100644 index 000000000..af29b4d52 --- /dev/null +++ b/src/actions/create-pin/index.ts @@ -0,0 +1,2 @@ +export * from './schema'; +export * from './action'; diff --git a/src/actions/create-pin/schema.ts b/src/actions/create-pin/schema.ts new file mode 100644 index 000000000..e7c80df0d --- /dev/null +++ b/src/actions/create-pin/schema.ts @@ -0,0 +1,5 @@ +import { z } from 'zod'; + +export const createPinSchema = z.object({ + nodeId: z.string().cuid2(), +}); diff --git a/src/actions/delete-pin/action.ts b/src/actions/delete-pin/action.ts new file mode 100644 index 000000000..9bd1802b8 --- /dev/null +++ b/src/actions/delete-pin/action.ts @@ -0,0 +1,24 @@ +'use server'; + +import { revalidatePath } from 'next/cache'; + +import { authActionClient } from '@/lib/safe-actions'; +import { Routes } from '@/utils'; +import prisma from 'lib/prisma'; + +import 'server-only'; +import { deletePinSchema } from './schema'; + +export const deletePin = authActionClient + .metadata({ actionName: 'deletePin' }) + .schema(deletePinSchema) + .action(async ({ parsedInput: { nodeId } }) => { + await prisma.node.update({ + where: { id: nodeId }, + data: { + isPinned: false, + }, + }); + revalidatePath(Routes.SITE.HOME); + return { message: 'Question unpinned' }; + }); diff --git a/src/actions/delete-pin/index.ts b/src/actions/delete-pin/index.ts new file mode 100644 index 000000000..af29b4d52 --- /dev/null +++ b/src/actions/delete-pin/index.ts @@ -0,0 +1,2 @@ +export * from './schema'; +export * from './action'; diff --git a/src/actions/delete-pin/schema.ts b/src/actions/delete-pin/schema.ts new file mode 100644 index 000000000..3dfcca03f --- /dev/null +++ b/src/actions/delete-pin/schema.ts @@ -0,0 +1,5 @@ +import { z } from 'zod'; + +export const deletePinSchema = z.object({ + nodeId: z.string().cuid2(), +}); diff --git a/src/actions/index.ts b/src/actions/index.ts index 85ba71560..dbde19357 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -1,6 +1,7 @@ export { createAnswer, createAnswerSchema } from './create-answer'; export { createFavorite, createFavoriteSchema } from './create-favorite'; export { createNode, createNodeSchema } from './create-node'; +export { createPin, createPinSchema } from './create-pin'; export { createTag, createTagSchema } from './create-tag'; export { createTenant, @@ -11,6 +12,7 @@ export { export { createUser, createUserSchema } from './create-user'; export { createUsers, createUsersSchema } from './create-users'; export { deleteFavorite, deleteFavoriteSchema } from './delete-favorite'; +export { deletePin, deletePinSchema } from './delete-pin'; export { deleteTag, deleteTagSchema } from './delete-tag'; export { deleteTenant, deleteTenantSchema } from './delete-tenant'; export { deleteUser, deleteUserSchema } from './delete-user'; diff --git a/src/app/home.tsx b/src/app/home.tsx index 173750d2b..b09606c9c 100644 --- a/src/app/home.tsx +++ b/src/app/home.tsx @@ -7,7 +7,7 @@ import { List, Search } from '@/modules'; import { OFFSET } from '@/utils'; import type { ExtendedFavorites, ExtendedNode } from '@/types'; -import type { Tag } from '@prisma/client'; +import type { $Enums, Tag } from '@prisma/client'; type Props = { initialNodes: ExtendedNode[]; @@ -16,6 +16,7 @@ type Props = { nodesCount: number; tags: Tag[]; favorites: ExtendedFavorites[]; + role: $Enums.Role; }; export default function Home({ @@ -25,6 +26,7 @@ export default function Home({ nodesCount, tags, favorites, + role, }: Props) { const searchParams = useSearchParams(); const query = searchParams.get('query') || ''; @@ -55,7 +57,7 @@ export default function Home({ return ( <> - + {nodesCount > OFFSET && (nodes.length === OFFSET || page !== 0) && ( )} diff --git a/src/app/page.tsx b/src/app/page.tsx index fa08e94c4..7d323cba7 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -21,7 +21,7 @@ export default async function Page({ searchParams }) { redirect(Routes.SITE.LOGIN); } - const { tenantId, id: userId } = me; + const { tenantId, id: userId, role } = me; const page = Number(searchParams?.page) || 0; const query = searchParams.query || ''; const tag = searchParams.tag || ''; @@ -45,6 +45,7 @@ export default async function Page({ searchParams }) { nodesCount={nodesCount} tags={tags} favorites={favorites} + role={role} />
    diff --git a/src/modules/home/List.tsx b/src/modules/home/List.tsx index 9b35f4bf4..d576bb4ee 100644 --- a/src/modules/home/List.tsx +++ b/src/modules/home/List.tsx @@ -3,20 +3,27 @@ import Question from './Question'; import type { ExtendedFavorites, ExtendedNode } from '@/types'; +import type { $Enums } from '@prisma/client'; type Props = { nodes: ExtendedNode[]; message: string; favorites: ExtendedFavorites[]; + role: $Enums.Role; }; -export const List = ({ nodes, message, favorites }: Props) => { +export const List = ({ nodes, message, favorites, role }: Props) => { return (
    {nodes.length > 0 ? (
      {nodes?.map((node) => ( - + ))}
    ) : ( diff --git a/src/modules/home/Question.tsx b/src/modules/home/Question.tsx index 217ed4c3e..c8f0269c4 100644 --- a/src/modules/home/Question.tsx +++ b/src/modules/home/Question.tsx @@ -10,6 +10,7 @@ import { Bookmark, BookmarkCheck, ChevronDown, + Pin, } from 'lucide-react'; import dynamic from 'next/dynamic'; import Link from 'next/link'; @@ -20,6 +21,8 @@ import { createFavoriteSchema, upsertReaction, deleteFavorite, + createPin, + deletePin, } from '@/actions'; import { Badge, @@ -34,7 +37,9 @@ import { } from '@/components'; import { Routes, dateOptions, timeOptions } from '@/utils'; +import type { createPinSchema } from '@/actions'; import type { ExtendedFavorites, ExtendedNode } from '@/types'; +import type { $Enums } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; @@ -45,17 +50,18 @@ const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { type Props = { node: ExtendedNode; favorites: ExtendedFavorites[]; + role: $Enums.Role; }; -type Schema = z.infer; +type SchemaFavorite = z.infer; +type SchemaPin = z.infer; -export default function Question({ node, favorites }: Props) { - const { handleSubmit, register } = useForm({ +export default function Question({ node, favorites, role }: Props) { + const { handleSubmit, register } = useForm({ resolver: zodResolver(createFavoriteSchema), - mode: 'onBlur', }); - const onSubmit: SubmitHandler = async (data) => { + const onSubmitFavorite: SubmitHandler = async (data) => { if (favorites.some((favorite) => favorite.nodeId === data.nodeId)) { const result = await deleteFavorite(data); resultToast(result?.serverError, result?.data?.message); @@ -65,6 +71,16 @@ export default function Question({ node, favorites }: Props) { } }; + const onSubmitPin: SubmitHandler = async (data) => { + if (node.isPinned) { + const result = await deletePin(data); + resultToast(result?.serverError, result?.data?.message); + } else { + const result = await createPin(data); + resultToast(result?.serverError, result?.data?.message); + } + }; + const onEmojiSelect = async (emoji, nodeId) => { const data = { shortcode: emoji.shortcodes, nodeId }; await upsertReaction(data); @@ -207,7 +223,7 @@ export default function Question({ node, favorites }: Props) { /> -
    +
    + {role !== 'user' && ( +
    + + + + + + + {node.isPinned ? 'Unpin question' : 'Pin question'} + + +
    + )}
    From d2df4575a67468c5ede2d9dcf34bfdadc3eda2f0 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 1 Jul 2024 14:29:54 +0200 Subject: [PATCH 168/326] :art: update schemas used in form --- src/app/question/answer/answer.tsx | 10 ++---- src/lib/validations.ts | 16 +++++++++ src/modules/home/Question.tsx | 52 ++++++++++++++++++++---------- 3 files changed, 53 insertions(+), 25 deletions(-) diff --git a/src/app/question/answer/answer.tsx b/src/app/question/answer/answer.tsx index 5dc319212..6f478b9b1 100644 --- a/src/app/question/answer/answer.tsx +++ b/src/app/question/answer/answer.tsx @@ -4,27 +4,21 @@ import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; import { Controller, useForm } from 'react-hook-form'; -import { z } from 'zod'; import { createAnswer, updateAnswer } from '@/actions'; import { BackButton, Button, Editor, resultToast } from '@/components'; +import { answerSchema } from '@/lib'; import { Limits } from '@/utils'; import type { createAnswerSchema, updateAnswerSchema } from '@/actions'; import type { ExtendedNode } from '@/types'; import type { SubmitHandler } from 'react-hook-form'; +import type { z } from 'zod'; type Props = { node: ExtendedNode; }; -const answerSchema = z.object({ - text: z - .string() - .trim() - .min(1, { message: 'Answer is required' }) - .max(1000, { message: 'Answer must be under 1000 characters long' }), -}); type Schema = z.infer; type CreateAnswer = z.infer; type UpdateAnswer = z.infer; diff --git a/src/lib/validations.ts b/src/lib/validations.ts index 0a186e709..15f95d52f 100644 --- a/src/lib/validations.ts +++ b/src/lib/validations.ts @@ -2,6 +2,22 @@ import { z } from 'zod'; import { ACCEPTED_IMAGE_TYPES, MAX_FILE_SIZE } from '@/utils'; +export const answerSchema = z.object({ + text: z + .string() + .trim() + .min(1, { message: 'Answer is required' }) + .max(1000, { message: 'Answer must be under 1000 characters long' }), +}); + +export const favoriteSchema = z.object({ + nodeId: z.string().cuid2(), +}); + +export const pinSchema = z.object({ + nodeId: z.string().cuid2(), +}); + export const userEmailSchema = z.object({ email: z .string() diff --git a/src/modules/home/Question.tsx b/src/modules/home/Question.tsx index c8f0269c4..5a0f29257 100644 --- a/src/modules/home/Question.tsx +++ b/src/modules/home/Question.tsx @@ -18,11 +18,10 @@ import { useForm } from 'react-hook-form'; import { createFavorite, - createFavoriteSchema, - upsertReaction, - deleteFavorite, createPin, + deleteFavorite, deletePin, + upsertReaction, } from '@/actions'; import { Badge, @@ -35,9 +34,15 @@ import { TooltipTrigger, resultToast, } from '@/components'; +import { favoriteSchema, pinSchema } from '@/lib'; import { Routes, dateOptions, timeOptions } from '@/utils'; -import type { createPinSchema } from '@/actions'; +import type { + createFavoriteSchema, + deleteFavoriteSchema, + deletePinSchema, + createPinSchema, +} from '@/actions'; import type { ExtendedFavorites, ExtendedNode } from '@/types'; import type { $Enums } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; @@ -53,30 +58,40 @@ type Props = { role: $Enums.Role; }; -type SchemaFavorite = z.infer; -type SchemaPin = z.infer; +type SchemaFavorite = z.infer; +type CreateFavorite = z.infer; +type DeleteFavorite = z.infer; + +type SchemaPin = z.infer; +type CreatePin = z.infer; +type DeletePin = z.infer; export default function Question({ node, favorites, role }: Props) { - const { handleSubmit, register } = useForm({ - resolver: zodResolver(createFavoriteSchema), - }); + const { handleSubmit: handleSubmitFavorite, register: registerFavorite } = + useForm({ + resolver: zodResolver(favoriteSchema), + }); + const { handleSubmit: handleSubmitPin, register: registerPin } = + useForm({ + resolver: zodResolver(pinSchema), + }); const onSubmitFavorite: SubmitHandler = async (data) => { if (favorites.some((favorite) => favorite.nodeId === data.nodeId)) { - const result = await deleteFavorite(data); + const result = await deleteFavorite(data as DeleteFavorite); resultToast(result?.serverError, result?.data?.message); } else { - const result = await createFavorite(data); + const result = await createFavorite(data as CreateFavorite); resultToast(result?.serverError, result?.data?.message); } }; const onSubmitPin: SubmitHandler = async (data) => { if (node.isPinned) { - const result = await deletePin(data); + const result = await deletePin(data as DeletePin); resultToast(result?.serverError, result?.data?.message); } else { - const result = await createPin(data); + const result = await createPin(data as CreatePin); resultToast(result?.serverError, result?.data?.message); } }; @@ -223,10 +238,13 @@ export default function Question({ node, favorites, role }: Props) { /> -
    + @@ -252,10 +270,10 @@ export default function Question({ node, favorites, role }: Props) {
    {role !== 'user' && ( -
    + From c7a5a60f0889e6493aeaa12ad93d9ceb366a9996 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 1 Jul 2024 14:33:51 +0200 Subject: [PATCH 169/326] :recycle: add order by isPinned --- src/actions/get-nodes/index.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/actions/get-nodes/index.ts b/src/actions/get-nodes/index.ts index e327ebe84..4c3f74dbe 100644 --- a/src/actions/get-nodes/index.ts +++ b/src/actions/get-nodes/index.ts @@ -26,7 +26,14 @@ export const getPaginatedNodes = cache( const { tenantId, page } = result.data; const nodes = await prisma.node.findMany({ where: { tenantId: tenantId as string }, - orderBy: { createdAt: 'desc' }, + orderBy: [ + { + isPinned: 'desc', + }, + { + createdAt: 'desc', + }, + ], skip: page * OFFSET, take: OFFSET, include: nodeModel, From 257f36519762af489664b52f717198c2eb1e5608 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 1 Jul 2024 14:36:24 +0200 Subject: [PATCH 170/326] :lipstick: add border when question is pinned --- src/modules/home/Question.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/modules/home/Question.tsx b/src/modules/home/Question.tsx index 5a0f29257..f8508e98b 100644 --- a/src/modules/home/Question.tsx +++ b/src/modules/home/Question.tsx @@ -102,7 +102,9 @@ export default function Question({ node, favorites, role }: Props) { }; return ( -
  • +
  • From 90691c3ecf1cf28b2f88e04f6efc0f8fa0335d5f Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 1 Jul 2024 15:09:13 +0200 Subject: [PATCH 171/326] :label: update schemas for pin --- src/actions/create-pin/schema.ts | 1 + src/actions/delete-pin/schema.ts | 1 + src/lib/validations.ts | 1 + 3 files changed, 3 insertions(+) diff --git a/src/actions/create-pin/schema.ts b/src/actions/create-pin/schema.ts index e7c80df0d..0d5c0d8ab 100644 --- a/src/actions/create-pin/schema.ts +++ b/src/actions/create-pin/schema.ts @@ -2,4 +2,5 @@ import { z } from 'zod'; export const createPinSchema = z.object({ nodeId: z.string().cuid2(), + tenantId: z.string().cuid2(), }); diff --git a/src/actions/delete-pin/schema.ts b/src/actions/delete-pin/schema.ts index 3dfcca03f..fb768e5fb 100644 --- a/src/actions/delete-pin/schema.ts +++ b/src/actions/delete-pin/schema.ts @@ -2,4 +2,5 @@ import { z } from 'zod'; export const deletePinSchema = z.object({ nodeId: z.string().cuid2(), + tenantId: z.string().cuid2(), }); diff --git a/src/lib/validations.ts b/src/lib/validations.ts index 15f95d52f..3600b6f80 100644 --- a/src/lib/validations.ts +++ b/src/lib/validations.ts @@ -16,6 +16,7 @@ export const favoriteSchema = z.object({ export const pinSchema = z.object({ nodeId: z.string().cuid2(), + tenantId: z.string().cuid2(), }); export const userEmailSchema = z.object({ From 7a9492462431875b1aebabbbf01c95d98ae84127 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 1 Jul 2024 15:10:17 +0200 Subject: [PATCH 172/326] :children_crossing: put limits on number of questions pinned at the same time --- src/actions/create-pin/action.ts | 24 ++++++++++++++++++++++-- src/actions/delete-pin/action.ts | 10 +++++++++- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/src/actions/create-pin/action.ts b/src/actions/create-pin/action.ts index fc1249606..b2706fb45 100644 --- a/src/actions/create-pin/action.ts +++ b/src/actions/create-pin/action.ts @@ -2,7 +2,7 @@ import { revalidatePath } from 'next/cache'; -import { authActionClient } from '@/lib/safe-actions'; +import { ActionError, authActionClient } from '@/lib/safe-actions'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; @@ -12,13 +12,33 @@ import { createPinSchema } from './schema'; export const createPin = authActionClient .metadata({ actionName: 'createPin' }) .schema(createPinSchema) - .action(async ({ parsedInput: { nodeId } }) => { + .action(async ({ parsedInput: { nodeId, tenantId } }) => { + const tenant = await prisma.tenant.findUnique({ + where: { id: tenantId }, + select: { + pinnedAmount: true, + }, + }); + if (!tenant) { + throw new ActionError('Could not find tenant'); + } + if (tenant.pinnedAmount > 2) { + throw new ActionError('You already have 3 pinned questions'); + } await prisma.node.update({ where: { id: nodeId }, data: { isPinned: true, }, }); + await prisma.tenant.update({ + where: { id: tenantId }, + data: { + pinnedAmount: { + increment: 1, + }, + }, + }); revalidatePath(Routes.SITE.HOME); return { message: 'Question pinned' }; }); diff --git a/src/actions/delete-pin/action.ts b/src/actions/delete-pin/action.ts index 9bd1802b8..02f07f63e 100644 --- a/src/actions/delete-pin/action.ts +++ b/src/actions/delete-pin/action.ts @@ -12,13 +12,21 @@ import { deletePinSchema } from './schema'; export const deletePin = authActionClient .metadata({ actionName: 'deletePin' }) .schema(deletePinSchema) - .action(async ({ parsedInput: { nodeId } }) => { + .action(async ({ parsedInput: { nodeId, tenantId } }) => { await prisma.node.update({ where: { id: nodeId }, data: { isPinned: false, }, }); + await prisma.tenant.update({ + where: { id: tenantId }, + data: { + pinnedAmount: { + decrement: 1, + }, + }, + }); revalidatePath(Routes.SITE.HOME); return { message: 'Question unpinned' }; }); From bffc42f7681daf76fa1903017442f7cc087951f7 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 1 Jul 2024 15:11:28 +0200 Subject: [PATCH 173/326] :lipstick: change color for hovered close button --- src/components/dialog/Dialog.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/dialog/Dialog.tsx b/src/components/dialog/Dialog.tsx index e6f4a1882..14fcd03c5 100644 --- a/src/components/dialog/Dialog.tsx +++ b/src/components/dialog/Dialog.tsx @@ -50,7 +50,7 @@ const DialogContent = forwardRef< {...props} > {children} - + Close From 2c110ce550c74d82de6717aa4e9dac7b3653c101 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 1 Jul 2024 15:14:21 +0200 Subject: [PATCH 174/326] :recycle: add tenantId field in pin form --- src/modules/home/Question.tsx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/modules/home/Question.tsx b/src/modules/home/Question.tsx index f8508e98b..a33782c5a 100644 --- a/src/modules/home/Question.tsx +++ b/src/modules/home/Question.tsx @@ -279,6 +279,12 @@ export default function Question({ node, favorites, role }: Props) { hidden readOnly /> +
    diff --git a/src/modules/home/List.tsx b/src/modules/home/List.tsx index d576bb4ee..9b35f4bf4 100644 --- a/src/modules/home/List.tsx +++ b/src/modules/home/List.tsx @@ -3,27 +3,20 @@ import Question from './Question'; import type { ExtendedFavorites, ExtendedNode } from '@/types'; -import type { $Enums } from '@prisma/client'; type Props = { nodes: ExtendedNode[]; message: string; favorites: ExtendedFavorites[]; - role: $Enums.Role; }; -export const List = ({ nodes, message, favorites, role }: Props) => { +export const List = ({ nodes, message, favorites }: Props) => { return (
    {nodes.length > 0 ? (
      {nodes?.map((node) => ( - + ))}
    ) : ( diff --git a/src/modules/home/Question.tsx b/src/modules/home/Question.tsx index a33782c5a..40143703b 100644 --- a/src/modules/home/Question.tsx +++ b/src/modules/home/Question.tsx @@ -3,6 +3,7 @@ import EmojiData from '@emoji-mart/data'; import Picker from '@emoji-mart/react'; import { zodResolver } from '@hookform/resolvers/zod'; +import { useAtomValue } from 'jotai'; import { BadgeCheck, BadgeHelp, @@ -35,16 +36,16 @@ import { resultToast, } from '@/components'; import { favoriteSchema, pinSchema } from '@/lib'; +import { userAtom } from '@/store'; import { Routes, dateOptions, timeOptions } from '@/utils'; import type { createFavoriteSchema, + createPinSchema, deleteFavoriteSchema, deletePinSchema, - createPinSchema, } from '@/actions'; import type { ExtendedFavorites, ExtendedNode } from '@/types'; -import type { $Enums } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; @@ -55,7 +56,6 @@ const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { type Props = { node: ExtendedNode; favorites: ExtendedFavorites[]; - role: $Enums.Role; }; type SchemaFavorite = z.infer; @@ -66,7 +66,8 @@ type SchemaPin = z.infer; type CreatePin = z.infer; type DeletePin = z.infer; -export default function Question({ node, favorites, role }: Props) { +export default function Question({ node, favorites }: Props) { + const user = useAtomValue(userAtom); const { handleSubmit: handleSubmitFavorite, register: registerFavorite } = useForm({ resolver: zodResolver(favoriteSchema), @@ -271,7 +272,7 @@ export default function Question({ node, favorites, role }: Props) { - {role !== 'user' && ( + {user?.role !== 'user' && (
    Date: Mon, 1 Jul 2024 17:38:10 +0200 Subject: [PATCH 178/326] :construction: start adding length limits to inputs --- src/actions/create-tag/schema.ts | 6 +++++- src/actions/update-tenant/schema.ts | 9 ++++++++- src/actions/update-user/schema.ts | 9 +++++++-- src/app/question/edit/edit.tsx | 1 - src/app/question/new/new.tsx | 1 - src/components/field/Field.tsx | 4 +--- src/modules/profile/Update.tsx | 6 ++++++ src/modules/settings/general/Company.tsx | 6 ++++++ src/modules/settings/tags/Create.tsx | 9 ++++++++- src/types/global.ts | 1 + src/utils/limits.ts | 4 ++++ 11 files changed, 46 insertions(+), 10 deletions(-) diff --git a/src/actions/create-tag/schema.ts b/src/actions/create-tag/schema.ts index b634ba619..896c5c7ed 100644 --- a/src/actions/create-tag/schema.ts +++ b/src/actions/create-tag/schema.ts @@ -3,7 +3,11 @@ import { z } from 'zod'; import { PLAN } from '@/utils'; export const createTagSchema = z.object({ - label: z.string().trim().min(1, { message: 'Tag name is required' }), + label: z + .string() + .trim() + .min(1, { message: 'Tag name is required' }) + .max(50, { message: 'Tag name is too long' }), tenantId: z.string().cuid2(), plan: z.enum(PLAN), tagsCount: z.number().min(0), diff --git a/src/actions/update-tenant/schema.ts b/src/actions/update-tenant/schema.ts index 536cf8f81..b39b378ea 100644 --- a/src/actions/update-tenant/schema.ts +++ b/src/actions/update-tenant/schema.ts @@ -1,11 +1,18 @@ import { z } from 'zod'; +import { Limits } from '@/utils'; + export const updateTenantSchema = z.object({ - company: z.string().trim().min(1, { message: 'Company name is required' }), + company: z + .string() + .trim() + .min(1, { message: 'Company name is required' }) + .max(Limits.COMPANY, { message: 'Company name is too long' }), email: z .string() .trim() .min(1, { message: 'Email is required' }) + .max(Limits.EMAIL, { message: 'Email is too long' }) .email({ message: 'Invalid email' }), id: z.string().cuid2(), }); diff --git a/src/actions/update-user/schema.ts b/src/actions/update-user/schema.ts index ada7161e4..d01c4edc7 100644 --- a/src/actions/update-user/schema.ts +++ b/src/actions/update-user/schema.ts @@ -1,6 +1,6 @@ import { z } from 'zod'; -import { ROLE } from '@/utils'; +import { Limits, ROLE } from '@/utils'; export const updateUserSchema = z.object({ tenantId: z.string().cuid2(), @@ -8,9 +8,14 @@ export const updateUserSchema = z.object({ .string() .trim() .min(1, { message: 'User email is required' }) + .max(Limits.EMAIL, { message: 'Email is too long' }) .email({ message: 'Invalid email' }) .optional(), - name: z.string().trim().optional(), + name: z + .string() + .trim() + .max(Limits.NAME, { message: 'Name is too long' }) + .optional(), role: z.enum(ROLE).optional(), id: z.string().cuid2(), }); diff --git a/src/app/question/edit/edit.tsx b/src/app/question/edit/edit.tsx index 281b495f0..0cc6fc135 100644 --- a/src/app/question/edit/edit.tsx +++ b/src/app/question/edit/edit.tsx @@ -82,7 +82,6 @@ export default function Edit({ me, node, tags }: Props) { label="Question" value="text" error={errors?.text?.message} - hasLimit limit={Limits.QUESTION} curLength={text.length} > diff --git a/src/app/question/new/new.tsx b/src/app/question/new/new.tsx index 7a3951f73..7f093b4c7 100644 --- a/src/app/question/new/new.tsx +++ b/src/app/question/new/new.tsx @@ -85,7 +85,6 @@ export default function New({ me, tags, integrations }: Props) { label="Question" value="text" error={errors?.text?.message} - hasLimit limit={Limits.QUESTION} curLength={text.length} > diff --git a/src/components/field/Field.tsx b/src/components/field/Field.tsx index 807e9fd04..15096ecf0 100644 --- a/src/components/field/Field.tsx +++ b/src/components/field/Field.tsx @@ -11,7 +11,6 @@ type Props = { value: string; error?: string; info?: string; - hasLimit?: boolean; limit?: number; curLength?: number; }; @@ -22,7 +21,6 @@ export const Field = ({ value, error, info, - hasLimit, limit, curLength, }: Props) => { @@ -57,7 +55,7 @@ export const Field = ({ {error} )} - {hasLimit && ( + {limit && ( {curLength} / {limit} characters diff --git a/src/modules/profile/Update.tsx b/src/modules/profile/Update.tsx index 54065a6a3..c737b23d2 100644 --- a/src/modules/profile/Update.tsx +++ b/src/modules/profile/Update.tsx @@ -10,6 +10,7 @@ import { useForm } from 'react-hook-form'; import { updateUser, updateUserSchema } from '@/actions'; import { Button, Field, Input, resultToast } from '@/components'; import { useMediaQuery } from '@/hooks'; +import { Limits } from '@/utils'; import type { IUserUpdateFields, Me } from '@/types'; import type { SubmitHandler } from 'react-hook-form'; @@ -28,6 +29,7 @@ export const UpdateProfile = ({ me }: Props) => { const { register, handleSubmit, + watch, formState: { isSubmitting, isDirty, errors, isValid }, } = useForm({ resolver: zodResolver(updateUserSchema), @@ -52,12 +54,14 @@ export const UpdateProfile = ({ me }: Props) => { label: 'Name', value: 'name', type: 'text', + limit: Limits.NAME, icon: , }, { label: 'Email', value: 'email', type: 'email', + limit: Limits.EMAIL, icon: , }, ], @@ -100,6 +104,8 @@ export const UpdateProfile = ({ me }: Props) => { label={field.label} value={field.value} error={errors[field.value]?.message} + curLength={watch(field.value)?.length} + limit={field.limit} > ({ resolver: zodResolver(updateTenantSchema), @@ -45,11 +47,13 @@ export function Company({ tenant }: Props) { label: 'Company', value: 'company', type: 'text', + limit: Limits.COMPANY, }, { label: 'Email', value: 'email', type: 'email', + limit: Limits.EMAIL, }, ]; @@ -76,6 +80,8 @@ export function Company({ tenant }: Props) { label={field.label} value={field.value} error={errors[field.value]?.message} + curLength={watch(field.value)?.length} + limit={field.limit} > { const { register, handleSubmit, + watch, formState: { errors, isSubmitting, isValid }, } = useForm({ resolver: zodResolver(createTagSchema), @@ -68,7 +69,13 @@ const Form = ({ tenantId, plan, tagsCount }: Props) => { className="flex flex-col items-center gap-2" >
    - + Date: Tue, 2 Jul 2024 10:50:48 +0200 Subject: [PATCH 179/326] :sparkles: finish adding limits to inputs --- src/actions/create-user/schema.ts | 3 ++- src/components/field/Field.tsx | 4 +++- src/modules/settings/users/Create.tsx | 10 +++++++++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/actions/create-user/schema.ts b/src/actions/create-user/schema.ts index 36f33ad5b..44a8ecd26 100644 --- a/src/actions/create-user/schema.ts +++ b/src/actions/create-user/schema.ts @@ -1,12 +1,13 @@ import { z } from 'zod'; -import { ROLE } from '@/utils'; +import { Limits, ROLE } from '@/utils'; export const createUserSchema = z.object({ email: z .string() .trim() .min(1, { message: 'User email is required' }) + .max(Limits.EMAIL, { message: 'Email is too long' }) .email({ message: 'Invalid email' }), role: z.enum(ROLE), tenantId: z.string().cuid2(), diff --git a/src/components/field/Field.tsx b/src/components/field/Field.tsx index 15096ecf0..080ac8f72 100644 --- a/src/components/field/Field.tsx +++ b/src/components/field/Field.tsx @@ -56,7 +56,9 @@ export const Field = ({ )} {limit && ( - + limit ? 'text-red-10' : 'text-gray-11'}`} + > {curLength} / {limit} characters )} diff --git a/src/modules/settings/users/Create.tsx b/src/modules/settings/users/Create.tsx index 3c3512a9a..23cd3c9ba 100644 --- a/src/modules/settings/users/Create.tsx +++ b/src/modules/settings/users/Create.tsx @@ -30,6 +30,7 @@ import { resultToast, } from '@/components'; import { useMediaQuery } from '@/hooks'; +import { Limits } from '@/utils'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; @@ -48,6 +49,7 @@ const Form = ({ tenantId, usersCount }: Props) => { register, handleSubmit, control, + watch, formState: { errors, isValid, isSubmitting }, } = useForm({ resolver: zodResolver(createUserSchema), @@ -75,7 +77,13 @@ const Form = ({ tenantId, usersCount }: Props) => { className="flex flex-col items-center gap-4" >
    - + Date: Tue, 2 Jul 2024 17:44:51 +0200 Subject: [PATCH 180/326] :speech_balloon: change placeholder text for search bar --- src/modules/search/Search.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/search/Search.tsx b/src/modules/search/Search.tsx index 353e90778..34178f436 100644 --- a/src/modules/search/Search.tsx +++ b/src/modules/search/Search.tsx @@ -65,7 +65,7 @@ export const Search = ({ tags }: Props) => { icon={} type="search" id="search" - placeholder="Search" + placeholder="Question title" className="py-2" defaultValue={searchParams.get('query')?.toString()} onChange={(e) => handleSearch(e.target.value)} From 7b2be35b91fd5e3f4fff4e278b7077e79c56a2ab Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Wed, 3 Jul 2024 16:39:13 +0200 Subject: [PATCH 181/326] :heavy_minus_sign: uninstall unused dependencies --- package.json | 2 - pnpm-lock.yaml | 143 ------------------------------------------------- 2 files changed, 145 deletions(-) diff --git a/package.json b/package.json index 89a36ebfa..714a47e9d 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,6 @@ "@sentry/nextjs": "^7.102.1", "@slack/webhook": "^7.0.1", "@stripe/stripe-js": "^2.4.0", - "@uiw/react-color-sketch": "^2.0.8", "@uiw/react-markdown-preview": "^5.0.6", "@uiw/react-md-editor": "^4.0.3", "class-variance-authority": "^0.7.0", @@ -82,7 +81,6 @@ "use-debounce": "^10.0.0", "uuid": "^9.0.1", "vaul": "^0.9.0", - "wcag-contrast": "^3.0.0", "zod": "^3.22.4" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 18098e019..540f90978 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -62,9 +62,6 @@ dependencies: '@stripe/stripe-js': specifier: ^2.4.0 version: 2.4.0 - '@uiw/react-color-sketch': - specifier: ^2.0.8 - version: 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) '@uiw/react-markdown-preview': specifier: ^5.0.6 version: 5.0.6(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) @@ -158,9 +155,6 @@ dependencies: vaul: specifier: ^0.9.0 version: 0.9.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - wcag-contrast: - specifier: ^3.0.0 - version: 3.0.0 zod: specifier: ^3.22.4 version: 3.22.4 @@ -2851,130 +2845,10 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@uiw/color-convert@2.0.8(@babel/runtime@7.23.7): - resolution: {integrity: sha512-yh0Q91FwTNCl5rMpNSQSlpazMz65V6V0LMIyssHk0ris4af9xQi+t01snLP+Dbjbk4HaSy7b8AptTP3NudggdQ==} - peerDependencies: - '@babel/runtime': '>=7.19.0' - dependencies: - '@babel/runtime': 7.23.7 - dev: false - /@uiw/copy-to-clipboard@1.0.15: resolution: {integrity: sha512-1bbGZ3T+SGmA07BoVPK4UCUDcowDN/moctviJGQexfOc9qL8TMLDQPr7mTPvDKhgJkgnlKkAQNFU8PiarIi9sQ==} dev: false - /@uiw/react-color-alpha@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-QppWrb7QBTIi0xZ6Q818tSi0LpZfkB323Q4F36a/vH4chzqOJAj6aCFM18d1CqjcLT4R1gnDhBSlW2dVD/4YoQ==} - peerDependencies: - '@babel/runtime': '>=7.19.0' - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.7 - '@uiw/color-convert': 2.0.8(@babel/runtime@7.23.7) - '@uiw/react-drag-event-interactive': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@uiw/react-color-editable-input-rgba@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-3bPmbyc1u6T++ap0pKl9w+x4+llDtLAuXY41NgNEUKhd63rMZjnVbVnFnzvIUDL92JRB5m+a+3Rr3n1TheeFew==} - peerDependencies: - '@babel/runtime': '>=7.19.0' - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.7 - '@uiw/color-convert': 2.0.8(@babel/runtime@7.23.7) - '@uiw/react-color-editable-input': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@uiw/react-color-editable-input@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-WpehDwnIRTIOUYAnchSVjZu+TwJjA1vCiK+tMkgta/Nu2qI3bLLPTwKmIF1cQgcrEEKvfgaqOD3yP7BvjjKFJA==} - peerDependencies: - '@babel/runtime': '>=7.19.0' - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.7 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@uiw/react-color-hue@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-h3EKzc87/leSq94dBchAqN+0liPQZismqjlGOM2LsZadGqgn9pO4+3+SlO4kD5IdQIybCRXmK3zVUVGDdxOIYg==} - peerDependencies: - '@babel/runtime': '>=7.19.0' - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.7 - '@uiw/color-convert': 2.0.8(@babel/runtime@7.23.7) - '@uiw/react-color-alpha': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@uiw/react-color-saturation@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-cBZ5Al4YrHOYTcWiRQzjYiT5Llgv7pnFEZPy07dQ5NSL+FlzQmDfjVmQynXUqYG3IqQrx0Md4jJLLhhLP9Q5MQ==} - peerDependencies: - '@babel/runtime': '>=7.19.0' - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.7 - '@uiw/color-convert': 2.0.8(@babel/runtime@7.23.7) - '@uiw/react-drag-event-interactive': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@uiw/react-color-sketch@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-4b4mDMJHTsxuab75bmcH5OvDOvcam8irkYapIbcVLJzrBurWiuxflMdmsht37hKegPOsRp6m0NONfEGcUtg1fQ==} - peerDependencies: - '@babel/runtime': '>=7.19.0' - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.7 - '@uiw/color-convert': 2.0.8(@babel/runtime@7.23.7) - '@uiw/react-color-alpha': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) - '@uiw/react-color-editable-input': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) - '@uiw/react-color-editable-input-rgba': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) - '@uiw/react-color-hue': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) - '@uiw/react-color-saturation': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) - '@uiw/react-color-swatch': 2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@uiw/react-color-swatch@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-ZURW9tsTNv8ea5TJqYvN2gqoljrhtjPpzs4UC9C7vfI6JvDdjAzIyMwRwRVCftekOtvLvdGZzXYXbGxPF4BvTQ==} - peerDependencies: - '@babel/runtime': '>=7.19.0' - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.7 - '@uiw/color-convert': 2.0.8(@babel/runtime@7.23.7) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@uiw/react-drag-event-interactive@2.0.8(@babel/runtime@7.23.7)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Z8awDfUV7970Q6GfJmx6x7fx5KeHn6RPinQVRYRAnKS7QP6XgQOIvVn8bYKe5vd4vQeBbzIVYYySjYRWjA5heA==} - peerDependencies: - '@babel/runtime': '>=7.19.0' - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.7 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@uiw/react-markdown-preview@5.0.6(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-zd+T02xFhy6K75XPdkF3RRAWKzVzJctZ6CCpFDcn/CgdQlEj8Z+Z9k11nkPspzbznB43UYdoe4qQvnjgG6TfZw==} peerDependencies: @@ -4917,11 +4791,6 @@ packages: - supports-color dev: true - /esm@3.2.25: - resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} - engines: {node: '>=6'} - dev: false - /espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -8310,12 +8179,6 @@ packages: unified: 11.0.4 dev: false - /relative-luminance@2.0.1: - resolution: {integrity: sha512-wFuITNthJilFPwkK7gNJcULxXBcfFZvZORsvdvxeOdO44wCeZnuQkf3nFFzOR/dpJNxYsdRZJLsepWbyKhnMww==} - dependencies: - esm: 3.2.25 - dev: false - /remark-gfm@4.0.0: resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} dependencies: @@ -9643,12 +9506,6 @@ packages: graceful-fs: 4.2.11 dev: false - /wcag-contrast@3.0.0: - resolution: {integrity: sha512-RWbpg/S7FOXDCwqC2oFhN/vh8dHzj0OS6dpyOSDHyQFSmqmR+lAUStV/ziTT1GzDqL9wol+nZQB4vCi5yEak+w==} - dependencies: - relative-luminance: 2.0.1 - dev: false - /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: From 24f1880e6930e3232a84ef0f9b882833f448bbfb Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 4 Jul 2024 12:34:15 +0200 Subject: [PATCH 182/326] :recycle: create correct structure for reactions --- .../migration.sql | 45 ++++++++++ .../migration.sql | 11 +++ prisma/schema.prisma | 20 +++-- src/actions/upsert-reaction/action.ts | 89 +++++++++++++------ src/modules/home/Question.tsx | 23 +++-- 5 files changed, 148 insertions(+), 40 deletions(-) create mode 100644 prisma/migrations/20240704091529_faqmaker_dev24/migration.sql create mode 100644 prisma/migrations/20240704101446_faqmaker_dev25/migration.sql diff --git a/prisma/migrations/20240704091529_faqmaker_dev24/migration.sql b/prisma/migrations/20240704091529_faqmaker_dev24/migration.sql new file mode 100644 index 000000000..1df3861a1 --- /dev/null +++ b/prisma/migrations/20240704091529_faqmaker_dev24/migration.sql @@ -0,0 +1,45 @@ +/* + Warnings: + + - You are about to drop the column `userId` on the `Reaction` table. All the data in the column will be lost. + - A unique constraint covering the columns `[nodeId]` on the table `Reaction` will be added. If there are existing duplicate values, this will fail. + +*/ +-- DropForeignKey +ALTER TABLE "Reaction" DROP CONSTRAINT "Reaction_userId_fkey"; + +-- DropIndex +DROP INDEX "Reaction_userId_nodeId_idx"; + +-- DropIndex +DROP INDEX "Reaction_userId_nodeId_key"; + +-- AlterTable +ALTER TABLE "Reaction" DROP COLUMN "userId"; + +-- CreateTable +CREATE TABLE "ReactionUser" ( + "id" TEXT NOT NULL, + "reactionId" TEXT NOT NULL, + "userId" TEXT NOT NULL, + + CONSTRAINT "ReactionUser_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE INDEX "ReactionUser_reactionId_userId_idx" ON "ReactionUser"("reactionId", "userId"); + +-- CreateIndex +CREATE UNIQUE INDEX "ReactionUser_reactionId_userId_key" ON "ReactionUser"("reactionId", "userId"); + +-- CreateIndex +CREATE INDEX "Reaction_nodeId_idx" ON "Reaction"("nodeId"); + +-- CreateIndex +CREATE UNIQUE INDEX "Reaction_nodeId_key" ON "Reaction"("nodeId"); + +-- AddForeignKey +ALTER TABLE "ReactionUser" ADD CONSTRAINT "ReactionUser_reactionId_fkey" FOREIGN KEY ("reactionId") REFERENCES "Reaction"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ReactionUser" ADD CONSTRAINT "ReactionUser_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/migrations/20240704101446_faqmaker_dev25/migration.sql b/prisma/migrations/20240704101446_faqmaker_dev25/migration.sql new file mode 100644 index 000000000..478040b05 --- /dev/null +++ b/prisma/migrations/20240704101446_faqmaker_dev25/migration.sql @@ -0,0 +1,11 @@ +/* + Warnings: + + - A unique constraint covering the columns `[shortcode,nodeId]` on the table `Reaction` will be added. If there are existing duplicate values, this will fail. + +*/ +-- DropIndex +DROP INDEX "Reaction_nodeId_key"; + +-- CreateIndex +CREATE UNIQUE INDEX "Reaction_shortcode_nodeId_key" ON "Reaction"("shortcode", "nodeId"); diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 4240541f5..f1d95cff5 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -40,7 +40,7 @@ model User { accounts Account[] sessions Session[] favorites Favorite[] - reactions Reaction[] + reactions ReactionUser[] @@unique([email]) @@index([tenantId]) @@ -119,11 +119,21 @@ model Reaction { count Int @default(1) node Node @relation(fields: [nodeId], references: [id], onDelete: Cascade) nodeId String - user User @relation(fields: [userId], references: [id], onDelete: Cascade) - userId String + users ReactionUser[] - @@unique([userId, nodeId]) - @@index([userId, nodeId]) + @@unique([shortcode, nodeId]) + @@index([nodeId]) +} + +model ReactionUser { + id String @id @default(cuid()) + reaction Reaction @relation(fields: [reactionId], references: [id], onDelete: Cascade) + reactionId String + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + userId String + + @@unique([reactionId, userId]) + @@index([reactionId, userId]) } model Integrations { diff --git a/src/actions/upsert-reaction/action.ts b/src/actions/upsert-reaction/action.ts index ab90e6c7f..cba4bd266 100644 --- a/src/actions/upsert-reaction/action.ts +++ b/src/actions/upsert-reaction/action.ts @@ -4,7 +4,7 @@ import { revalidatePath } from 'next/cache'; import { authActionClient } from '@/lib/safe-actions'; import { Routes } from '@/utils'; -// import prisma from 'lib/prisma'; +import prisma from 'lib/prisma'; import 'server-only'; import { upsertReactionSchema } from './schema'; @@ -12,31 +12,62 @@ import { upsertReactionSchema } from './schema'; export const upsertReaction = authActionClient .metadata({ actionName: 'upsertReaction' }) .schema(upsertReactionSchema) - .action( - async ({ - parsedInput: { nodeId, shortcode: _shortcode }, - ctx: { userId: _userId }, - }) => { - // TODO: Rethink the logic - // const reactionExists = await prisma.reaction.findFirst({ - // where: {shortcode, nodeId} - // }) - // if (reactionExists) { - // await prisma - // } - // await prisma.reaction.upsert({ - // where: {shortcode, nodeId}, - // update: { - // count: { - // increment: 1 - // } - // } - // create: { - // shortcode, - // nodeId, - // userId, - // }, - // }); - revalidatePath(`${Routes.SITE.QUESTION}/${nodeId}`); - }, - ); + .action(async ({ parsedInput: { nodeId, shortcode }, ctx: { userId } }) => { + const reactionExists = await prisma.reaction.findFirst({ + where: { shortcode, nodeId }, + }); + if (reactionExists) { + const userReactionExists = await prisma.reactionUser.findFirst({ + where: { reactionId: reactionExists.id, userId }, + }); + if (userReactionExists) { + await prisma.reactionUser.delete({ + where: { id: userReactionExists.id }, + }); + const updatedReaction = await prisma.reaction.update({ + where: { shortcode, nodeId, id: reactionExists.id }, + data: { + count: { + decrement: 1, + }, + }, + }); + if (updatedReaction.count === 0) { + await prisma.reaction.delete({ + where: { shortcode, nodeId, id: reactionExists.id }, + }); + } + } else { + await prisma.reaction.update({ + where: { id: reactionExists.id }, + data: { + count: { + increment: 1, + }, + users: { + create: { + user: { + connect: { id: userId }, + }, + }, + }, + }, + }); + } + } else { + await prisma.reaction.create({ + data: { + shortcode, + nodeId, + users: { + create: { + user: { + connect: { id: userId }, + }, + }, + }, + }, + }); + } + revalidatePath(`${Routes.SITE.QUESTION}/${nodeId}`); + }); diff --git a/src/modules/home/Question.tsx b/src/modules/home/Question.tsx index 40143703b..ddf0904f6 100644 --- a/src/modules/home/Question.tsx +++ b/src/modules/home/Question.tsx @@ -98,7 +98,7 @@ export default function Question({ node, favorites }: Props) { }; const onEmojiSelect = async (emoji, nodeId) => { - const data = { shortcode: emoji.shortcodes, nodeId }; + const data = { shortcode: emoji, nodeId }; await upsertReaction(data); }; @@ -135,14 +135,14 @@ export default function Question({ node, favorites }: Props) { {!node.answer && ( - + Unanswered )} - +

    Asked by {node.question.user.name}

    @@ -163,7 +163,7 @@ export default function Question({ node, favorites }: Props) { {node.answer && ( - +

    Answered by {node.answer.user.name}

    @@ -183,7 +183,16 @@ export default function Question({ node, favorites }: Props) {
    )} {node.reactions.map((reaction) => ( -

    {reaction.shortcode}

    + ))}
  • @@ -236,7 +245,9 @@ export default function Question({ node, favorites }: Props) { onEmojiSelect(emoji, node.id)} + onEmojiSelect={(emoji) => + onEmojiSelect(emoji.shortcodes, node.id) + } showPreview={false} /> From e521858778e21c892d75534cf112a22b9a5cbfe4 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 4 Jul 2024 15:24:33 +0200 Subject: [PATCH 183/326] :card_file_box: add emoji field in reaction table --- .../migration.sql | 2 + prisma/schema.prisma | 1 + src/actions/upsert-reaction/action.ts | 88 ++++++++++--------- src/actions/upsert-reaction/schema.ts | 1 + src/modules/home/Question.tsx | 14 +-- 5 files changed, 58 insertions(+), 48 deletions(-) create mode 100644 prisma/migrations/20240704130636_faqmaker_dev26/migration.sql diff --git a/prisma/migrations/20240704130636_faqmaker_dev26/migration.sql b/prisma/migrations/20240704130636_faqmaker_dev26/migration.sql new file mode 100644 index 000000000..16271027e --- /dev/null +++ b/prisma/migrations/20240704130636_faqmaker_dev26/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "Reaction" ADD COLUMN "emoji" TEXT NOT NULL DEFAULT ''; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index f1d95cff5..63b0c11af 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -116,6 +116,7 @@ model Favorite { model Reaction { id String @id @default(cuid()) shortcode String + emoji String @default("") count Int @default(1) node Node @relation(fields: [nodeId], references: [id], onDelete: Cascade) nodeId String diff --git a/src/actions/upsert-reaction/action.ts b/src/actions/upsert-reaction/action.ts index cba4bd266..ef9af9f79 100644 --- a/src/actions/upsert-reaction/action.ts +++ b/src/actions/upsert-reaction/action.ts @@ -12,38 +12,56 @@ import { upsertReactionSchema } from './schema'; export const upsertReaction = authActionClient .metadata({ actionName: 'upsertReaction' }) .schema(upsertReactionSchema) - .action(async ({ parsedInput: { nodeId, shortcode }, ctx: { userId } }) => { - const reactionExists = await prisma.reaction.findFirst({ - where: { shortcode, nodeId }, - }); - if (reactionExists) { - const userReactionExists = await prisma.reactionUser.findFirst({ - where: { reactionId: reactionExists.id, userId }, + .action( + async ({ parsedInput: { nodeId, shortcode, emoji }, ctx: { userId } }) => { + console.log(nodeId); + const reactionExists = await prisma.reaction.findFirst({ + where: { shortcode, nodeId }, }); - if (userReactionExists) { - await prisma.reactionUser.delete({ - where: { id: userReactionExists.id }, + if (reactionExists) { + const userReactionExists = await prisma.reactionUser.findFirst({ + where: { reactionId: reactionExists.id, userId }, }); - const updatedReaction = await prisma.reaction.update({ - where: { shortcode, nodeId, id: reactionExists.id }, - data: { - count: { - decrement: 1, - }, - }, - }); - if (updatedReaction.count === 0) { - await prisma.reaction.delete({ + if (userReactionExists) { + await prisma.reactionUser.delete({ + where: { id: userReactionExists.id }, + }); + const updatedReaction = await prisma.reaction.update({ where: { shortcode, nodeId, id: reactionExists.id }, + data: { + count: { + decrement: 1, + }, + }, + }); + if (updatedReaction.count === 0) { + await prisma.reaction.delete({ + where: { shortcode, nodeId, id: reactionExists.id }, + }); + } + } else { + await prisma.reaction.update({ + where: { id: reactionExists.id }, + data: { + count: { + increment: 1, + }, + users: { + create: { + user: { + connect: { id: userId }, + }, + }, + }, + }, }); } } else { - await prisma.reaction.update({ - where: { id: reactionExists.id }, + await prisma.reaction.create({ data: { - count: { - increment: 1, - }, + shortcode, + nodeId, + emoji, users: { create: { user: { @@ -54,20 +72,6 @@ export const upsertReaction = authActionClient }, }); } - } else { - await prisma.reaction.create({ - data: { - shortcode, - nodeId, - users: { - create: { - user: { - connect: { id: userId }, - }, - }, - }, - }, - }); - } - revalidatePath(`${Routes.SITE.QUESTION}/${nodeId}`); - }); + revalidatePath(`${Routes.SITE.QUESTION}/${nodeId}`); + }, + ); diff --git a/src/actions/upsert-reaction/schema.ts b/src/actions/upsert-reaction/schema.ts index 29f268156..a1f3e0b6a 100644 --- a/src/actions/upsert-reaction/schema.ts +++ b/src/actions/upsert-reaction/schema.ts @@ -3,4 +3,5 @@ import { z } from 'zod'; export const upsertReactionSchema = z.object({ nodeId: z.string().cuid2(), shortcode: z.string(), + emoji: z.string(), }); diff --git a/src/modules/home/Question.tsx b/src/modules/home/Question.tsx index ddf0904f6..800211ebb 100644 --- a/src/modules/home/Question.tsx +++ b/src/modules/home/Question.tsx @@ -97,8 +97,8 @@ export default function Question({ node, favorites }: Props) { } }; - const onEmojiSelect = async (emoji, nodeId) => { - const data = { shortcode: emoji, nodeId }; + const onEmojiSelect = async (shortcode, emoji, nodeId) => { + const data = { shortcode, emoji, nodeId }; await upsertReaction(data); }; @@ -188,10 +188,12 @@ export default function Question({ node, favorites }: Props) { variant="ghost" size="small" font="base" - onClick={() => onEmojiSelect(reaction.shortcode, node.id)} + onClick={() => + onEmojiSelect(reaction.shortcode, reaction.emoji, node.id) + } > - {reaction.shortcode} - {reaction.count} + {reaction.emoji} + {reaction.count} ))}
    @@ -246,7 +248,7 @@ export default function Question({ node, favorites }: Props) { - onEmojiSelect(emoji.shortcodes, node.id) + onEmojiSelect(emoji.shortcodes, emoji.native, node.id) } showPreview={false} /> From cba6355535accc46662eb4b4ec534695976a2ce9 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 4 Jul 2024 15:28:25 +0200 Subject: [PATCH 184/326] :fire: remove import of non-existing action --- src/modules/settings/general/Files.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/modules/settings/general/Files.tsx b/src/modules/settings/general/Files.tsx index f5e210daf..7f3cd888c 100644 --- a/src/modules/settings/general/Files.tsx +++ b/src/modules/settings/general/Files.tsx @@ -13,7 +13,6 @@ import { getSignedLogo, updateLogo } from '@/actions'; import { Button, resultToast } from '@/components'; import { filesSchema } from '@/lib/validations'; -import type { UpdateLogo } from '@/actions'; import type { Tenant } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; From c4cfb4414c0f6e7c6c5607219523efafc4f47d46 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 4 Jul 2024 15:29:44 +0200 Subject: [PATCH 185/326] :heavy_minus_sign: uninstall uuid --- package.json | 5 +- pnpm-lock.yaml | 65 ++++++++++++-------------- src/modules/settings/general/Files.tsx | 3 +- 3 files changed, 34 insertions(+), 39 deletions(-) diff --git a/package.json b/package.json index 714a47e9d..57e5197e4 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "@google-cloud/storage": "^7.7.0", "@hookform/resolvers": "^3.3.4", "@next-auth/prisma-adapter": "^1.0.7", - "@prisma/client": "5.10.2", + "@prisma/client": "5.16.1", "@radix-ui/colors": "^3.0.0", "@radix-ui/react-avatar": "^1.0.4", "@radix-ui/react-dialog": "^1.0.5", @@ -79,7 +79,6 @@ "tailwind-merge": "^2.2.0", "tailwindcss-animate": "^1.0.6", "use-debounce": "^10.0.0", - "uuid": "^9.0.1", "vaul": "^0.9.0", "zod": "^3.22.4" }, @@ -111,7 +110,7 @@ "postcss": "^8.4.28", "prettier": "^3.2.5", "prettier-plugin-tailwindcss": "^0.6.2", - "prisma": "5.10.2", + "prisma": "5.16.1", "tailwindcss": "^3.4.1", "ts-node": "^10.9.1", "typescript": "^5.3.3" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 540f90978..a4c342b59 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,10 +19,10 @@ dependencies: version: 3.3.4(react-hook-form@7.45.4) '@next-auth/prisma-adapter': specifier: ^1.0.7 - version: 1.0.7(@prisma/client@5.10.2)(next-auth@4.24.7) + version: 1.0.7(@prisma/client@5.16.1)(next-auth@4.24.7) '@prisma/client': - specifier: 5.10.2 - version: 5.10.2(prisma@5.10.2) + specifier: 5.16.1 + version: 5.16.1(prisma@5.16.1) '@radix-ui/colors': specifier: ^3.0.0 version: 3.0.0 @@ -149,9 +149,6 @@ dependencies: use-debounce: specifier: ^10.0.0 version: 10.0.0(react@18.2.0) - uuid: - specifier: ^9.0.1 - version: 9.0.1 vaul: specifier: ^0.9.0 version: 0.9.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) @@ -242,8 +239,8 @@ devDependencies: specifier: ^0.6.2 version: 0.6.2(prettier@3.2.5) prisma: - specifier: 5.10.2 - version: 5.10.2 + specifier: 5.16.1 + version: 5.16.1 tailwindcss: specifier: ^3.4.1 version: 3.4.1(ts-node@10.9.1) @@ -895,13 +892,13 @@ packages: read-yaml-file: 1.1.0 dev: true - /@next-auth/prisma-adapter@1.0.7(@prisma/client@5.10.2)(next-auth@4.24.7): + /@next-auth/prisma-adapter@1.0.7(@prisma/client@5.16.1)(next-auth@4.24.7): resolution: {integrity: sha512-Cdko4KfcmKjsyHFrWwZ//lfLUbcLqlyFqjd/nYE2m3aZ7tjMNUjpks47iw7NTCnXf+5UWz5Ypyt1dSs1EP5QJw==} peerDependencies: '@prisma/client': '>=2.26.0 || >=3' next-auth: ^4 dependencies: - '@prisma/client': 5.10.2(prisma@5.10.2) + '@prisma/client': 5.16.1(prisma@5.16.1) next-auth: 4.24.7(next@14.2.4)(nodemailer@6.9.14)(react-dom@18.2.0)(react@18.2.0) dev: false @@ -1040,8 +1037,8 @@ packages: dependencies: playwright: 1.45.0 - /@prisma/client@5.10.2(prisma@5.10.2): - resolution: {integrity: sha512-ef49hzB2yJZCvM5gFHMxSFL9KYrIP9udpT5rYo0CsHD4P9IKj473MbhU1gjKKftiwWBTIyrt9jukprzZXazyag==} + /@prisma/client@5.16.1(prisma@5.16.1): + resolution: {integrity: sha512-wM9SKQjF0qLxdnOZIVAIMKiz6Hu7vDt4FFAih85K1dk/Rr2mdahy6d3QP41K62N9O0DJJA//gUDA3Mp49xsKIg==} engines: {node: '>=16.13'} requiresBuild: true peerDependencies: @@ -1050,35 +1047,35 @@ packages: prisma: optional: true dependencies: - prisma: 5.10.2 + prisma: 5.16.1 dev: false - /@prisma/debug@5.10.2: - resolution: {integrity: sha512-bkBOmH9dpEBbMKFJj8V+Zp8IZHIBjy3fSyhLhxj4FmKGb/UBSt9doyfA6k1UeUREsMJft7xgPYBbHSOYBr8XCA==} + /@prisma/debug@5.16.1: + resolution: {integrity: sha512-JsNgZAg6BD9RInLSrg7ZYzo11N7cVvYArq3fHGSD89HSgtN0VDdjV6bib7YddbcO6snzjchTiLfjeTqBjtArVQ==} - /@prisma/engines-version@5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9: - resolution: {integrity: sha512-uCy/++3Jx/O3ufM+qv2H1L4tOemTNqcP/gyEVOlZqTpBvYJUe0tWtW0y3o2Ueq04mll4aM5X3f6ugQftOSLdFQ==} + /@prisma/engines-version@5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303: + resolution: {integrity: sha512-HkT2WbfmFZ9WUPyuJHhkiADxazHg8Y4gByrTSVeb3OikP6tjQ7txtSUGu9OBOBH0C13dPKN2qqH12xKtHu/Hiw==} - /@prisma/engines@5.10.2: - resolution: {integrity: sha512-HkSJvix6PW8YqEEt3zHfCYYJY69CXsNdhU+wna+4Y7EZ+AwzeupMnUThmvaDA7uqswiHkgm5/SZ6/4CStjaGmw==} + /@prisma/engines@5.16.1: + resolution: {integrity: sha512-KkyF3eIUtBIyp5A/rJHCtwQO18OjpGgx18PzjyGcJDY/+vNgaVyuVd+TgwBgeq6NLdd1XMwRCI+58vinHsAdfA==} requiresBuild: true dependencies: - '@prisma/debug': 5.10.2 - '@prisma/engines-version': 5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9 - '@prisma/fetch-engine': 5.10.2 - '@prisma/get-platform': 5.10.2 + '@prisma/debug': 5.16.1 + '@prisma/engines-version': 5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303 + '@prisma/fetch-engine': 5.16.1 + '@prisma/get-platform': 5.16.1 - /@prisma/fetch-engine@5.10.2: - resolution: {integrity: sha512-dSmXcqSt6DpTmMaLQ9K8ZKzVAMH3qwGCmYEZr/uVnzVhxRJ1EbT/w2MMwIdBNq1zT69Rvh0h75WMIi0mrIw7Hg==} + /@prisma/fetch-engine@5.16.1: + resolution: {integrity: sha512-oOkjaPU1lhcA/Rvr4GVfd1NLJBwExgNBE36Ueq7dr71kTMwy++a3U3oLd2ZwrV9dj9xoP6LjCcky799D9nEt4w==} dependencies: - '@prisma/debug': 5.10.2 - '@prisma/engines-version': 5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9 - '@prisma/get-platform': 5.10.2 + '@prisma/debug': 5.16.1 + '@prisma/engines-version': 5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303 + '@prisma/get-platform': 5.16.1 - /@prisma/get-platform@5.10.2: - resolution: {integrity: sha512-nqXP6vHiY2PIsebBAuDeWiUYg8h8mfjBckHh6Jezuwej0QJNnjDiOq30uesmg+JXxGk99nqyG3B7wpcOODzXvg==} + /@prisma/get-platform@5.16.1: + resolution: {integrity: sha512-R4IKnWnMkR2nUAbU5gjrPehdQYUUd7RENFD2/D+xXTNhcqczp0N+WEGQ3ViyI3+6mtVcjjNIMdnUTNyu3GxIgA==} dependencies: - '@prisma/debug': 5.10.2 + '@prisma/debug': 5.16.1 /@radix-ui/colors@3.0.0: resolution: {integrity: sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg==} @@ -7740,13 +7737,13 @@ packages: resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==} dev: false - /prisma@5.10.2: - resolution: {integrity: sha512-hqb/JMz9/kymRE25pMWCxkdyhbnIWrq+h7S6WysJpdnCvhstbJSNP/S6mScEcqiB8Qv2F+0R3yG+osRaWqZacQ==} + /prisma@5.16.1: + resolution: {integrity: sha512-Z1Uqodk44diztImxALgJJfNl2Uisl9xDRvqybMKEBYJLNKNhDfAHf+ZIJbZyYiBhLMbKU9cYGdDVG5IIXEnL2Q==} engines: {node: '>=16.13'} hasBin: true requiresBuild: true dependencies: - '@prisma/engines': 5.10.2 + '@prisma/engines': 5.16.1 /progress@2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} diff --git a/src/modules/settings/general/Files.tsx b/src/modules/settings/general/Files.tsx index 7f3cd888c..61fe99b61 100644 --- a/src/modules/settings/general/Files.tsx +++ b/src/modules/settings/general/Files.tsx @@ -7,7 +7,6 @@ import { Upload } from 'lucide-react'; import Image from 'next/image'; import Dropzone from 'react-dropzone'; import { Controller, useForm } from 'react-hook-form'; -import { v4 as uuid } from 'uuid'; import { getSignedLogo, updateLogo } from '@/actions'; import { Button, resultToast } from '@/components'; @@ -43,7 +42,7 @@ export const Files = ({ tenant }: Props) => { const onSubmit: SubmitHandler = async (data) => { const formData = new FormData(); - const randomId = uuid(); + const randomId = crypto.randomUUID(); const logo = encodeURIComponent(randomId + data.logo.name); formData.append('logo', logo); const { url, fields } = await getSignedLogo(formData); From ad86c38fbd05d040e628d0857f340b4190636069 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 4 Jul 2024 15:45:39 +0200 Subject: [PATCH 186/326] :card_file_box: change declaration of unique --- .../migration.sql | 19 +++++++++ prisma/schema.prisma | 40 ++++++++----------- 2 files changed, 36 insertions(+), 23 deletions(-) create mode 100644 prisma/migrations/20240704134447_faqmaker_dev27/migration.sql diff --git a/prisma/migrations/20240704134447_faqmaker_dev27/migration.sql b/prisma/migrations/20240704134447_faqmaker_dev27/migration.sql new file mode 100644 index 000000000..be64df860 --- /dev/null +++ b/prisma/migrations/20240704134447_faqmaker_dev27/migration.sql @@ -0,0 +1,19 @@ +/* + Warnings: + + - A unique constraint covering the columns `[email]` on the table `Tenant` will be added. If there are existing duplicate values, this will fail. + - A unique constraint covering the columns `[logo]` on the table `Tenant` will be added. If there are existing duplicate values, this will fail. + - A unique constraint covering the columns `[customerId]` on the table `Tenant` will be added. If there are existing duplicate values, this will fail. + +*/ +-- DropIndex +DROP INDEX "Tenant_email_logo_customerId_key"; + +-- CreateIndex +CREATE UNIQUE INDEX "Tenant_email_key" ON "Tenant"("email"); + +-- CreateIndex +CREATE UNIQUE INDEX "Tenant_logo_key" ON "Tenant"("logo"); + +-- CreateIndex +CREATE UNIQUE INDEX "Tenant_customerId_key" ON "Tenant"("customerId"); diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 63b0c11af..47e55ae23 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -10,11 +10,11 @@ generator client { model Tenant { id String @id @default(cuid()) createdAt DateTime @default(now()) - email String + email String @unique plan Plan @default(free) company String - logo String? - customerId String? + logo String? @unique + customerId String? @unique isActive Boolean @default(false) subscriptionId String? users User[] @@ -22,18 +22,16 @@ model Tenant { tags Tag[] integrations Integrations? pinnedAmount Int @default(0) - - @@unique([email, logo, customerId]) } model User { - id String @id @default(cuid()) - createdAt DateTime @default(now()) + id String @id @default(cuid()) + createdAt DateTime @default(now()) name String? - email String + email String @unique image String? - role Role @default(user) - tenant Tenant @relation(fields: [tenantId], references: [id], onDelete: Cascade) + role Role @default(user) + tenant Tenant @relation(fields: [tenantId], references: [id], onDelete: Cascade) tenantId String questions Question[] answers Answer[] @@ -42,7 +40,6 @@ model User { favorites Favorite[] reactions ReactionUser[] - @@unique([email]) @@index([tenantId]) } @@ -69,11 +66,10 @@ model Question { text String slug String node Node @relation(fields: [nodeId], references: [id], onDelete: Cascade) - nodeId String + nodeId String @unique user User @relation(fields: [userId], references: [id], onDelete: Cascade) userId String - @@unique([nodeId]) @@index([nodeId, userId]) } @@ -83,11 +79,10 @@ model Answer { updatedAt DateTime @updatedAt text String node Node @relation(fields: [nodeId], references: [id], onDelete: Cascade) - nodeId String + nodeId String @unique user User @relation(fields: [userId], references: [id], onDelete: Cascade) userId String - @@unique([nodeId]) @@index([nodeId, userId]) } @@ -114,20 +109,20 @@ model Favorite { } model Reaction { - id String @id @default(cuid()) + id String @id @default(cuid()) shortcode String - emoji String @default("") - count Int @default(1) - node Node @relation(fields: [nodeId], references: [id], onDelete: Cascade) + emoji String @default("") + count Int @default(1) + node Node @relation(fields: [nodeId], references: [id], onDelete: Cascade) nodeId String - users ReactionUser[] + users ReactionUser[] @@unique([shortcode, nodeId]) @@index([nodeId]) } model ReactionUser { - id String @id @default(cuid()) + id String @id @default(cuid()) reaction Reaction @relation(fields: [reactionId], references: [id], onDelete: Cascade) reactionId String user User @relation(fields: [userId], references: [id], onDelete: Cascade) @@ -141,9 +136,8 @@ model Integrations { id String @id @default(cuid()) slack String tenant Tenant @relation(fields: [tenantId], references: [id], onDelete: Cascade) - tenantId String + tenantId String @unique - @@unique([tenantId]) @@index([tenantId]) } From 942a0df60ccaffe53f91623fc680aab3ee34d2f9 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 4 Jul 2024 15:49:08 +0200 Subject: [PATCH 187/326] :arrow_up: upgrade stripe dependencies --- package.json | 4 ++-- pnpm-lock.yaml | 32 +++++++++++++++----------------- 2 files changed, 17 insertions(+), 19 deletions(-) diff --git a/package.json b/package.json index 57e5197e4..6f23fd986 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@radix-ui/react-tooltip": "^1.0.7", "@sentry/nextjs": "^7.102.1", "@slack/webhook": "^7.0.1", - "@stripe/stripe-js": "^2.4.0", + "@stripe/stripe-js": "^4.1.0", "@uiw/react-markdown-preview": "^5.0.6", "@uiw/react-md-editor": "^4.0.3", "class-variance-authority": "^0.7.0", @@ -75,7 +75,7 @@ "resend": "^3.2.0", "slugify": "^1.6.6", "sonner": "^1.4.0", - "stripe": "^14.16.0", + "stripe": "^16.1.0", "tailwind-merge": "^2.2.0", "tailwindcss-animate": "^1.0.6", "use-debounce": "^10.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a4c342b59..0d7774358 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -60,8 +60,8 @@ dependencies: specifier: ^7.0.1 version: 7.0.1 '@stripe/stripe-js': - specifier: ^2.4.0 - version: 2.4.0 + specifier: ^4.1.0 + version: 4.1.0 '@uiw/react-markdown-preview': specifier: ^5.0.6 version: 5.0.6(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) @@ -138,8 +138,8 @@ dependencies: specifier: ^1.4.0 version: 1.4.0(react-dom@18.2.0)(react@18.2.0) stripe: - specifier: ^14.16.0 - version: 14.16.0 + specifier: ^16.1.0 + version: 16.1.0 tailwind-merge: specifier: ^2.2.0 version: 2.2.0 @@ -2336,8 +2336,9 @@ packages: - debug dev: false - /@stripe/stripe-js@2.4.0: - resolution: {integrity: sha512-WFkQx1mbs2b5+7looI9IV1BLa3bIApuN3ehp9FP58xGg7KL9hCHDECgW3BwO9l9L+xBPVAD7Yjn1EhGe6EDTeA==} + /@stripe/stripe-js@4.1.0: + resolution: {integrity: sha512-HhstGRUz/4JdbZpb26OcOf8Qb/cFR02arvHvgz4sPFLSnI6ZNHC53Jc6JP/FGNwxtrF719YyUnK0gGy4oyhucQ==} + engines: {node: '>=12.16'} dev: false /@swc-jotai/react-refresh@0.1.0: @@ -3526,6 +3527,7 @@ packages: function-bind: 1.1.2 get-intrinsic: 1.2.2 set-function-length: 1.1.1 + dev: true /call-bind@1.0.7: resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} @@ -3536,7 +3538,6 @@ packages: function-bind: 1.1.2 get-intrinsic: 1.2.4 set-function-length: 1.2.2 - dev: true /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} @@ -3937,6 +3938,7 @@ packages: get-intrinsic: 1.2.2 gopd: 1.0.1 has-property-descriptors: 1.0.1 + dev: true /define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} @@ -3945,7 +3947,6 @@ packages: es-define-property: 1.0.0 es-errors: 1.3.0 gopd: 1.0.1 - dev: true /define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} @@ -4239,12 +4240,10 @@ packages: engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.4 - dev: true /es-errors@1.3.0: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - dev: true /es-iterator-helpers@1.0.15: resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} @@ -5148,7 +5147,6 @@ packages: has-proto: 1.0.1 has-symbols: 1.0.3 hasown: 2.0.0 - dev: true /get-nonce@1.0.1: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} @@ -5347,12 +5345,12 @@ packages: resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} dependencies: get-intrinsic: 1.2.2 + dev: true /has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} dependencies: es-define-property: 1.0.0 - dev: true /has-proto@1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} @@ -7781,7 +7779,7 @@ packages: resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} engines: {node: '>=0.6'} dependencies: - side-channel: 1.0.4 + side-channel: 1.0.6 dev: false /queue-microtask@1.2.3: @@ -8447,6 +8445,7 @@ packages: get-intrinsic: 1.2.2 gopd: 1.0.1 has-property-descriptors: 1.0.1 + dev: true /set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} @@ -8458,7 +8457,6 @@ packages: get-intrinsic: 1.2.4 gopd: 1.0.1 has-property-descriptors: 1.0.2 - dev: true /set-function-name@2.0.1: resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} @@ -8507,6 +8505,7 @@ packages: call-bind: 1.0.5 get-intrinsic: 1.2.2 object-inspect: 1.13.1 + dev: true /side-channel@1.0.6: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} @@ -8516,7 +8515,6 @@ packages: es-errors: 1.3.0 get-intrinsic: 1.2.4 object-inspect: 1.13.1 - dev: true /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -8786,8 +8784,8 @@ packages: engines: {node: '>=8'} dev: true - /stripe@14.16.0: - resolution: {integrity: sha512-1gOr2LzafWV84cPIO5Md/QPh4XVPLKULVuRpBVOV3Plq3seiHmg/eeOktX+hDl8jpNZuORHYaUJGrNqrABLwdg==} + /stripe@16.1.0: + resolution: {integrity: sha512-syeEEd112om/waJ5gOQ+SaYi+setuidQ4ZIPiQREF4yJeegXhn2HKy6C0JYm7uhVQKfMAvuZ22dIRsnoDv7AMw==} engines: {node: '>=12.*'} dependencies: '@types/node': 20.10.6 From 44c9101061efd664d4636faf33d25374326e4376 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 4 Jul 2024 15:49:31 +0200 Subject: [PATCH 188/326] :fire: delete unused api file --- src/app/api/stripe/customer/route.ts | 67 ---------------------------- 1 file changed, 67 deletions(-) delete mode 100644 src/app/api/stripe/customer/route.ts diff --git a/src/app/api/stripe/customer/route.ts b/src/app/api/stripe/customer/route.ts deleted file mode 100644 index 996a44e1a..000000000 --- a/src/app/api/stripe/customer/route.ts +++ /dev/null @@ -1,67 +0,0 @@ -// import Stripe from 'stripe'; - -// import prisma from 'lib/prisma'; - -// import type { NextApiRequest, NextApiResponse } from 'next'; - -// const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { -// apiVersion: '2023-10-16', -// }); - -// export default async function handler( -// req: NextApiRequest, -// res: NextApiResponse, -// ) { -// if (req.method === 'POST') { -// try { -// if (!req.body) { -// return res -// .status(404) -// .json({ success: false, message: `Company details not provided` }); -// } -// const result = createCustomerServerSchema.safeParse(req.body); -// if (result.success === false) { -// const errors = result.error.formErrors.fieldErrors; -// return res.status(422).json({ -// success: false, -// error: { message: 'Invalid request', errors }, -// }); -// } else { -// const { companyEmail, company } = result.data; -// const customerExists = await stripe.customers.search({ -// query: `email:'${companyEmail}'`, -// }); -// if (customerExists.data.length > 0) { -// return res.status(409).json({ -// success: false, -// message: 'A customer with the same company email already exists', -// }); -// } -// const customer = await stripe.customers.create({ -// email: companyEmail, -// name: company, -// }); -// if (!customer) { -// return res -// .status(500) -// .json({ message: 'There was a problem creating the customer' }); -// } -// await prisma.tenant.update({ -// where: { email: companyEmail }, -// data: { -// customerId: customer.id, -// }, -// }); -// return res.status(201).json({ customerId: customer.id }); -// } -// } catch (error) { -// if (error instanceof Error) { -// res.status(500).json({ success: false, error: error.message }); -// } -// } -// } else { -// return res -// .status(405) -// .json({ success: false, error: { message: 'Method not allowed' } }); -// } -// } From 3be32c7cfe599aa7a104db0be92fe4b543306b01 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 4 Jul 2024 15:53:03 +0200 Subject: [PATCH 189/326] :recycle: put stripe api version in constant --- src/actions/create-tenant/action.ts | 3 ++- src/actions/delete-tenant/action.ts | 4 ++-- src/app/api/stripe/billing/route.ts | 4 ++-- src/app/api/stripe/checkout/[id].ts | 3 ++- src/app/api/stripe/checkout/route.ts | 4 ++-- src/app/api/stripe/webhooks/route.ts | 3 ++- src/utils/constants.ts | 1 + 7 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/actions/create-tenant/action.ts b/src/actions/create-tenant/action.ts index 2cbf0859a..f9a1a712c 100644 --- a/src/actions/create-tenant/action.ts +++ b/src/actions/create-tenant/action.ts @@ -4,13 +4,14 @@ import Stripe from 'stripe'; import { ActionError, actionClient } from '@/lib/safe-actions'; +import { STRIPE_VERSION } from '@/utils'; import prisma from 'lib/prisma'; import 'server-only'; import { createTenantSchema } from './schema'; const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { - apiVersion: '2023-10-16', + apiVersion: STRIPE_VERSION, }); // const resend = new Resend(process.env.RESEND_API_KEY); diff --git a/src/actions/delete-tenant/action.ts b/src/actions/delete-tenant/action.ts index c91847738..a6b422c8d 100644 --- a/src/actions/delete-tenant/action.ts +++ b/src/actions/delete-tenant/action.ts @@ -4,13 +4,13 @@ import { Storage } from '@google-cloud/storage'; import { redirect } from 'next/navigation'; import Stripe from 'stripe'; -import { Routes } from '@/utils'; +import { Routes, STRIPE_VERSION } from '@/utils'; import prisma from 'lib/prisma'; import 'server-only'; const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { - apiVersion: '2023-10-16', + apiVersion: STRIPE_VERSION, }); // export const deleteTenant = authActionClient diff --git a/src/app/api/stripe/billing/route.ts b/src/app/api/stripe/billing/route.ts index ee13286a3..b943cb087 100644 --- a/src/app/api/stripe/billing/route.ts +++ b/src/app/api/stripe/billing/route.ts @@ -1,13 +1,13 @@ import { NextResponse } from 'next/server'; import Stripe from 'stripe'; -import { tenantIdSchema } from '@/lib'; import prisma from 'lib/prisma'; import type { NextRequest } from 'next/server'; +import { STRIPE_VERSION } from '@/utils'; const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { - apiVersion: '2023-10-16', + apiVersion: STRIPE_VERSION, }); type Products = { diff --git a/src/app/api/stripe/checkout/[id].ts b/src/app/api/stripe/checkout/[id].ts index c1ee2ac10..9bbb7f06b 100644 --- a/src/app/api/stripe/checkout/[id].ts +++ b/src/app/api/stripe/checkout/[id].ts @@ -1,9 +1,10 @@ import Stripe from 'stripe'; import type { NextApiRequest, NextApiResponse } from 'next'; +import { STRIPE_VERSION } from '@/utils'; const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { - apiVersion: '2023-10-16', + apiVersion: STRIPE_VERSION, }); export default async function handler( diff --git a/src/app/api/stripe/checkout/route.ts b/src/app/api/stripe/checkout/route.ts index 0aaa38c64..611a9834b 100644 --- a/src/app/api/stripe/checkout/route.ts +++ b/src/app/api/stripe/checkout/route.ts @@ -1,13 +1,13 @@ import { NextResponse } from 'next/server'; import Stripe from 'stripe'; -import { Routes } from '@/utils'; +import { Routes, STRIPE_VERSION } from '@/utils'; import type { NextRequest } from 'next/server'; import { createCheckoutSchema } from '@/lib/validations'; const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { - apiVersion: '2023-10-16', + apiVersion: STRIPE_VERSION, }); export async function POST(req: NextRequest) { diff --git a/src/app/api/stripe/webhooks/route.ts b/src/app/api/stripe/webhooks/route.ts index 569d3baec..d50aeb65b 100644 --- a/src/app/api/stripe/webhooks/route.ts +++ b/src/app/api/stripe/webhooks/route.ts @@ -4,9 +4,10 @@ import prisma from 'lib/prisma'; import type { IPlan } from '@/types'; import type { NextApiRequest, NextApiResponse } from 'next'; +import { STRIPE_VERSION } from '@/utils'; const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { - apiVersion: '2023-10-16', + apiVersion: STRIPE_VERSION, }); const webhookSecret = process.env.STRIPE_WEBHOOK_SECRET!; const STRIPE_SIGNATURE_HEADER = 'stripe-signature'; diff --git a/src/utils/constants.ts b/src/utils/constants.ts index c5a1122df..52a3c9971 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -9,3 +9,4 @@ export const ACCEPTED_IMAGE_TYPES = [ ]; export const ROLE = ['user', 'admin', 'tenant'] as const; export const PLAN = ['free', 'startup', 'enterprise'] as const; +export const STRIPE_VERSION = '2024-06-20'; From 512ffce247c3d5bf67376865ff94162de2248143 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 4 Jul 2024 15:57:58 +0200 Subject: [PATCH 190/326] :rotating_light: fix lint error --- src/actions/upsert-reaction/action.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/actions/upsert-reaction/action.ts b/src/actions/upsert-reaction/action.ts index ef9af9f79..d45e5b52e 100644 --- a/src/actions/upsert-reaction/action.ts +++ b/src/actions/upsert-reaction/action.ts @@ -14,7 +14,6 @@ export const upsertReaction = authActionClient .schema(upsertReactionSchema) .action( async ({ parsedInput: { nodeId, shortcode, emoji }, ctx: { userId } }) => { - console.log(nodeId); const reactionExists = await prisma.reaction.findFirst({ where: { shortcode, nodeId }, }); From d65ff618c5d6d0b0e89c917367dfe35cba41db0a Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 4 Jul 2024 16:12:54 +0200 Subject: [PATCH 191/326] :arrow_up: upgrade next-themes --- package.json | 2 +- pnpm-lock.yaml | 14 ++++++-------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 6f23fd986..3b52570e6 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "next-auth": "^4.24.7", "next-remove-imports": "^1.0.12", "next-safe-action": "^7.0.2", - "next-themes": "^0.2.1", + "next-themes": "^0.3.0", "nodemailer": "^6.9.14", "react": "18.2.0", "react-dom": "18.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0d7774358..86748a4d3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -99,8 +99,8 @@ dependencies: specifier: ^7.0.2 version: 7.0.2(next@14.2.4)(react-dom@18.2.0)(react@18.2.0)(zod@3.22.4) next-themes: - specifier: ^0.2.1 - version: 0.2.1(next@14.2.4)(react-dom@18.2.0)(react@18.2.0) + specifier: ^0.3.0 + version: 0.3.0(react-dom@18.2.0)(react@18.2.0) nodemailer: specifier: ^6.9.14 version: 6.9.14 @@ -7058,14 +7058,12 @@ packages: - zod-to-json-schema dev: false - /next-themes@0.2.1(next@14.2.4)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==} + /next-themes@0.3.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-/QHIrsYpd6Kfk7xakK4svpDI5mmXP0gfvCoJdGpZQ2TOrQZmsW0QxjaiLn8wbIKjtm4BTSqLoix4lxYYOnLJ/w==} peerDependencies: - next: '*' - react: '*' - react-dom: '*' + react: ^16.8 || ^17 || ^18 + react-dom: ^16.8 || ^17 || ^18 dependencies: - next: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false From f375c114cac11c24845461560afb9a34a83632c5 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 4 Jul 2024 16:13:23 +0200 Subject: [PATCH 192/326] :recycle: refacto theme provider --- src/app/providers.tsx | 3 ++- src/components/index.ts | 1 - src/components/theme/ThemeProvider.tsx | 8 -------- src/components/theme/index.ts | 1 - 4 files changed, 2 insertions(+), 11 deletions(-) delete mode 100644 src/components/theme/ThemeProvider.tsx delete mode 100644 src/components/theme/index.ts diff --git a/src/app/providers.tsx b/src/app/providers.tsx index 5ef5b509e..ba3677b56 100644 --- a/src/app/providers.tsx +++ b/src/app/providers.tsx @@ -4,9 +4,10 @@ import '@/styles/globals.css'; import { Provider } from 'jotai'; import { Inter, Merriweather } from 'next/font/google'; import { SessionProvider } from 'next-auth/react'; +import { ThemeProvider } from 'next-themes'; import { Toaster } from 'sonner'; -import { ThemeProvider, TooltipProvider } from '@/components'; +import { TooltipProvider } from '@/components'; const merriweather = Merriweather({ subsets: ['latin'], diff --git a/src/components/index.ts b/src/components/index.ts index 6d285dcc6..469e41863 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -15,6 +15,5 @@ export * from './popover'; export * from './select'; export * from './stepper'; export * from './tabs'; -export * from './theme'; export * from './toast'; export * from './tooltip'; diff --git a/src/components/theme/ThemeProvider.tsx b/src/components/theme/ThemeProvider.tsx deleted file mode 100644 index 1f84abd1a..000000000 --- a/src/components/theme/ThemeProvider.tsx +++ /dev/null @@ -1,8 +0,0 @@ -'use client'; - -import { ThemeProvider as NextThemesProvider } from 'next-themes'; -import { type ThemeProviderProps } from 'next-themes/dist/types'; - -export function ThemeProvider({ children, ...props }: ThemeProviderProps) { - return {children}; -} diff --git a/src/components/theme/index.ts b/src/components/theme/index.ts deleted file mode 100644 index 8abd195f6..000000000 --- a/src/components/theme/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './ThemeProvider'; From 7f538077ac892ab8f78b75b07ddd08340ca2d1d6 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 4 Jul 2024 16:46:12 +0200 Subject: [PATCH 193/326] :construction_worker: add ci test file --- .github/workflows/tests.yml | 74 +++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 .github/workflows/tests.yml diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 000000000..6756bfbe8 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,74 @@ +# name: Playwright Tests + +# on: +# push: +# branches: main +# pull_request: +# branches: main + +# jobs: +# test: +# env: +# DATABASE_URL: postgresql://postgres:postgres@postgres:5432/db +# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + +# runs-on: ubuntu-latest +# services: +# postgres: +# image: postgres +# env: +# POSTGRES_DB: db +# POSTGRES_USER: postgres +# POSTGRES_PASSWORD: postgres +# options: >- +# --health-cmd pg_isready +# --health-interval 10s +# --health-timeout 5s +# --health-retries 5 +# ports: +# - 5432:5432 + +# container: +# image: mcr.microsoft.com/playwright:v1.45.1-jammy + +# steps: +# - uses: actions/checkout@v4 +# - uses: pnpm/action-setup@v3 +# with: +# version: 8 + +# - name: Set up Node +# uses: actions/setup-node@v4 +# with: +# node-version: lts/* +# cache: 'pnpm' + +# - name: Install dependencies +# run: pnpm install && pnpm install:playwright:deps + +# - name: Build application +# run: pnpm build:ci + +# - name: Start application +# run: pnpm start & + +# - name: Push database +# run: pnpm push + +# - name: Run Playwright tests +# run: pnpm test +# env: +# HOME: /root +# TEST_EMAIL: ${{secrets.TEST_EMAIL}} +# TEST_PASSWORD: ${{secrets.TEST_PASSWORD}} +# GOOGLE_CLIENT_SECRET: ${{secrets.GOOGLE_CLIENT_SECRET}} +# GOOGLE_CLIENT_ID: ${{secrets.GOOGLE_CLIENT_ID}} +# NEXTAUTH_URL: ${{secrets.NEXTAUTH_URL}} +# NEXTAUTH_SECRET: ${{secrets.NEXTAUTH_SECRET}} + +# - uses: actions/upload-artifact@v4 +# if: always() +# with: +# name: playwright-report +# path: playwright-report/ +# retention-days: 30 \ No newline at end of file From ad862e43c3ff23a1e21ef69c61067d6dbb948927 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 4 Jul 2024 17:08:50 +0200 Subject: [PATCH 194/326] :fire: remove unused constants values --- src/utils/index.ts | 1 - src/utils/keys.ts | 15 -------------- src/utils/routing.ts | 48 +------------------------------------------- 3 files changed, 1 insertion(+), 63 deletions(-) delete mode 100644 src/utils/keys.ts diff --git a/src/utils/index.ts b/src/utils/index.ts index 4297faf16..968bdbbdc 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -3,7 +3,6 @@ export * from './cn'; export * from './constants'; export * from './dateFormat'; export * from './gcp'; -export * from './keys'; export * from './limits'; export * from './prisma'; export * from './routing'; diff --git a/src/utils/keys.ts b/src/utils/keys.ts deleted file mode 100644 index 0a5a0e9a6..000000000 --- a/src/utils/keys.ts +++ /dev/null @@ -1,15 +0,0 @@ -export const QueryKeys = { - NODES: 'nodes', - NODES_COUNT: 'nodes_count', - NODE: 'node', - QUESTIONS: 'questions', - ANSWERS: 'answers', - ME: 'me,', - USERS: 'users', - USERS_COUNT: 'users_count', - USER: 'user', - TAGS: 'tags', - TENANT: 'tenant', - SEARCH: 'search', - INTEGRATION: 'integration', -} as const; diff --git a/src/utils/routing.ts b/src/utils/routing.ts index e522f6d15..d27f21b42 100644 --- a/src/utils/routing.ts +++ b/src/utils/routing.ts @@ -18,54 +18,8 @@ export const Routes = { }, }, API: { - USERS: { - INDEX: '/api/users', - COUNT: '/api/users/count', - }, - NODES: { - INDEX: '/api/nodes', - COUNT: '/api/nodes/count', - }, - CHECKOUT: '/api/stripe/checkout', - COLORS: '/api/colors', - CUSTOMER: '/api/stripe/customer', BILLING: '/api/stripe/billing', - ANSWERS: '/api/answers', - QUESTIONS: '/api/questions', - SEARCH: { - INDEX: '/api/search', - TAGS: '/api/search/tags', - }, - TAGS: '/api/tags', - TENANT: { - INDEX: '/api/tenant', - LOGO: '/api/tenant/logo', - }, + CHECKOUT: '/api/stripe/checkout', WEBHOOKS: '/api/stripe/webhooks', - STORAGE: { - LOGO: '/api/storage/logo', - }, - INTEGRATIONS: { - INDEX: '/api/integrations', - SLACK: '/api/integrations/slack', - }, - }, -} as const; - -export const Redirects = { - NOT_FOUND: { - notFound: true, - }, - LOGIN: { - redirect: { - permanent: false, - destination: Routes.SITE.LOGIN, - }, - }, - HOME: { - redirect: { - permanent: false, - destination: Routes.SITE.HOME, - }, }, } as const; From 8512212964ffe69cfaa54c6de5bc4168d001ab28 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 4 Jul 2024 17:13:29 +0200 Subject: [PATCH 195/326] :arrow_up: upgrade lucide-react --- package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 3b52570e6..629c005d4 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "emoji-mart": "^5.6.0", "formidable": "^3.5.1", "jotai": "^2.6.4", - "lucide-react": "^0.344.0", + "lucide-react": "^0.400.0", "next": "14.2.4", "next-auth": "^4.24.7", "next-remove-imports": "^1.0.12", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 86748a4d3..09ba1af8b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -84,8 +84,8 @@ dependencies: specifier: ^2.6.4 version: 2.6.4(@types/react@18.0.27)(react@18.2.0) lucide-react: - specifier: ^0.344.0 - version: 0.344.0(react@18.2.0) + specifier: ^0.400.0 + version: 0.400.0(react@18.2.0) next: specifier: 14.2.4 version: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0)(react@18.2.0) @@ -6366,10 +6366,10 @@ packages: dependencies: yallist: 4.0.0 - /lucide-react@0.344.0(react@18.2.0): - resolution: {integrity: sha512-6YyBnn91GB45VuVT96bYCOKElbJzUHqp65vX8cDcu55MQL9T969v4dhGClpljamuI/+KMO9P6w9Acq1CVQGvIQ==} + /lucide-react@0.400.0(react@18.2.0): + resolution: {integrity: sha512-rpp7pFHh3Xd93KHixNgB0SqThMHpYNzsGUu69UaQbSZ75Q/J3m5t6EhKyMT3m4w2WOxmJ2mY0tD3vebnXqQryQ==} peerDependencies: - react: ^16.5.1 || ^17.0.0 || ^18.0.0 + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 dependencies: react: 18.2.0 dev: false From 5491b8108657fea2d06ee555e0324b071148b2ee Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 4 Jul 2024 17:17:47 +0200 Subject: [PATCH 196/326] :truck: rename files --- src/utils/{dateFormat.ts => date.ts} | 0 src/utils/{arraysEqual.ts => functions.ts} | 0 src/utils/index.ts | 4 ++-- 3 files changed, 2 insertions(+), 2 deletions(-) rename src/utils/{dateFormat.ts => date.ts} (100%) rename src/utils/{arraysEqual.ts => functions.ts} (100%) diff --git a/src/utils/dateFormat.ts b/src/utils/date.ts similarity index 100% rename from src/utils/dateFormat.ts rename to src/utils/date.ts diff --git a/src/utils/arraysEqual.ts b/src/utils/functions.ts similarity index 100% rename from src/utils/arraysEqual.ts rename to src/utils/functions.ts diff --git a/src/utils/index.ts b/src/utils/index.ts index 968bdbbdc..b558eb2e9 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1,7 +1,7 @@ -export * from './arraysEqual'; export * from './cn'; export * from './constants'; -export * from './dateFormat'; +export * from './date'; +export * from './functions'; export * from './gcp'; export * from './limits'; export * from './prisma'; From 7585bceba097c5b176a39858e4d71fc8b182da86 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 14 Jul 2024 20:40:29 +0200 Subject: [PATCH 197/326] :heavy_minus_sign: uninstall nodemailer --- package.json | 1 - pnpm-lock.yaml | 11792 ++++++++++++++++++++++++++--------------------- 2 files changed, 6591 insertions(+), 5202 deletions(-) diff --git a/package.json b/package.json index 629c005d4..0ef5ff7cb 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,6 @@ "next-remove-imports": "^1.0.12", "next-safe-action": "^7.0.2", "next-themes": "^0.3.0", - "nodemailer": "^6.9.14", "react": "18.2.0", "react-dom": "18.2.0", "react-dropzone": "^14.2.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 09ba1af8b..86c243e5f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,1103 +1,670 @@ -lockfileVersion: '6.0' +lockfileVersion: '9.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false -dependencies: - '@emoji-mart/data': - specifier: ^1.2.1 - version: 1.2.1 - '@emoji-mart/react': - specifier: ^1.1.1 - version: 1.1.1(emoji-mart@5.6.0)(react@18.2.0) - '@google-cloud/storage': - specifier: ^7.7.0 - version: 7.7.0 - '@hookform/resolvers': - specifier: ^3.3.4 - version: 3.3.4(react-hook-form@7.45.4) - '@next-auth/prisma-adapter': - specifier: ^1.0.7 - version: 1.0.7(@prisma/client@5.16.1)(next-auth@4.24.7) - '@prisma/client': - specifier: 5.16.1 - version: 5.16.1(prisma@5.16.1) - '@radix-ui/colors': - specifier: ^3.0.0 - version: 3.0.0 - '@radix-ui/react-avatar': - specifier: ^1.0.4 - version: 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-dialog': - specifier: ^1.0.5 - version: 1.0.5(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-dropdown-menu': - specifier: ^2.0.6 - version: 2.0.6(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-label': - specifier: ^2.0.2 - version: 2.0.2(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-popover': - specifier: ^1.1.1 - version: 1.1.1(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-select': - specifier: ^2.0.0 - version: 2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': - specifier: ^1.0.2 - version: 1.0.2(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-tabs': - specifier: ^1.0.4 - version: 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-tooltip': - specifier: ^1.0.7 - version: 1.0.7(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@sentry/nextjs': - specifier: ^7.102.1 - version: 7.102.1(next@14.2.4)(react@18.2.0)(webpack@5.89.0) - '@slack/webhook': - specifier: ^7.0.1 - version: 7.0.1 - '@stripe/stripe-js': - specifier: ^4.1.0 - version: 4.1.0 - '@uiw/react-markdown-preview': - specifier: ^5.0.6 - version: 5.0.6(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@uiw/react-md-editor': - specifier: ^4.0.3 - version: 4.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - class-variance-authority: - specifier: ^0.7.0 - version: 0.7.0 - clsx: - specifier: ^2.1.0 - version: 2.1.0 - emoji-mart: - specifier: ^5.6.0 - version: 5.6.0 - formidable: - specifier: ^3.5.1 - version: 3.5.1 - jotai: - specifier: ^2.6.4 - version: 2.6.4(@types/react@18.0.27)(react@18.2.0) - lucide-react: - specifier: ^0.400.0 - version: 0.400.0(react@18.2.0) - next: - specifier: 14.2.4 - version: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0)(react@18.2.0) - next-auth: - specifier: ^4.24.7 - version: 4.24.7(next@14.2.4)(nodemailer@6.9.14)(react-dom@18.2.0)(react@18.2.0) - next-remove-imports: - specifier: ^1.0.12 - version: 1.0.12(webpack@5.89.0) - next-safe-action: - specifier: ^7.0.2 - version: 7.0.2(next@14.2.4)(react-dom@18.2.0)(react@18.2.0)(zod@3.22.4) - next-themes: - specifier: ^0.3.0 - version: 0.3.0(react-dom@18.2.0)(react@18.2.0) - nodemailer: - specifier: ^6.9.14 - version: 6.9.14 - react: - specifier: 18.2.0 - version: 18.2.0 - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) - react-dropzone: - specifier: ^14.2.3 - version: 14.2.3(react@18.2.0) - react-error-boundary: - specifier: ^4.0.12 - version: 4.0.12(react@18.2.0) - react-hook-form: - specifier: ^7.45.4 - version: 7.45.4(react@18.2.0) - react-paginate: - specifier: ^8.2.0 - version: 8.2.0(react@18.2.0) - react-papaparse: - specifier: ^4.4.0 - version: 4.4.0 - rehype-sanitize: - specifier: ^6.0.0 - version: 6.0.0 - resend: - specifier: ^3.2.0 - version: 3.2.0 - slugify: - specifier: ^1.6.6 - version: 1.6.6 - sonner: - specifier: ^1.4.0 - version: 1.4.0(react-dom@18.2.0)(react@18.2.0) - stripe: - specifier: ^16.1.0 - version: 16.1.0 - tailwind-merge: - specifier: ^2.2.0 - version: 2.2.0 - tailwindcss-animate: - specifier: ^1.0.6 - version: 1.0.6(tailwindcss@3.4.1) - use-debounce: - specifier: ^10.0.0 - version: 10.0.0(react@18.2.0) - vaul: - specifier: ^0.9.0 - version: 0.9.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - zod: - specifier: ^3.22.4 - version: 3.22.4 - -devDependencies: - '@changesets/cli': - specifier: ^2.27.1 - version: 2.27.1 - '@playwright/test': - specifier: ^1.45.0 - version: 1.45.0 - '@swc-jotai/react-refresh': - specifier: ^0.1.0 - version: 0.1.0 - '@types/formidable': - specifier: ^3.4.5 - version: 3.4.5 - '@types/node': - specifier: ^20.5.6 - version: 20.5.6 - '@types/react': - specifier: ^18.0.27 - version: 18.0.27 - '@typescript-eslint/eslint-plugin': - specifier: ^7.14.1 - version: 7.14.1(@typescript-eslint/parser@7.12.0)(eslint@8.57.0)(typescript@5.3.3) - autoprefixer: - specifier: ^10.4.16 - version: 10.4.16(postcss@8.4.28) - dotenv: - specifier: ^16.4.5 - version: 16.4.5 - eslint: - specifier: 8.57.0 - version: 8.57.0 - eslint-config-airbnb: - specifier: ^19.0.4 - version: 19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.34.2)(eslint@8.57.0) - eslint-config-airbnb-typescript: - specifier: ^18.0.0 - version: 18.0.0(@typescript-eslint/eslint-plugin@7.14.1)(@typescript-eslint/parser@7.12.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0) - eslint-config-next: - specifier: 14.1.0 - version: 14.1.0(eslint@8.57.0)(typescript@5.3.3) - eslint-config-prettier: - specifier: ^9.0.0 - version: 9.0.0(eslint@8.57.0) - eslint-plugin-import: - specifier: ^2.29.1 - version: 2.29.1(@typescript-eslint/parser@7.12.0)(eslint@8.57.0) - eslint-plugin-jsx-a11y: - specifier: ^6.8.0 - version: 6.8.0(eslint@8.57.0) - eslint-plugin-playwright: - specifier: ^1.6.2 - version: 1.6.2(eslint@8.57.0) - eslint-plugin-prettier: - specifier: ^5.1.3 - version: 5.1.3(eslint-config-prettier@9.0.0)(eslint@8.57.0)(prettier@3.2.5) - eslint-plugin-react: - specifier: ^7.34.2 - version: 7.34.2(eslint@8.57.0) - eslint-plugin-react-hooks: - specifier: ^4.6.2 - version: 4.6.2(eslint@8.57.0) - eslint-plugin-tailwindcss: - specifier: ^3.17.3 - version: 3.17.3(tailwindcss@3.4.1) - eslint-plugin-unused-imports: - specifier: ^4.0.0 - version: 4.0.0(@typescript-eslint/eslint-plugin@7.14.1)(eslint@8.57.0) - husky: - specifier: ^9.0.11 - version: 9.0.11 - lint-staged: - specifier: ^15.0.2 - version: 15.0.2 - postcss: - specifier: ^8.4.28 - version: 8.4.28 - prettier: - specifier: ^3.2.5 - version: 3.2.5 - prettier-plugin-tailwindcss: - specifier: ^0.6.2 - version: 0.6.2(prettier@3.2.5) - prisma: - specifier: 5.16.1 - version: 5.16.1 - tailwindcss: - specifier: ^3.4.1 - version: 3.4.1(ts-node@10.9.1) - ts-node: - specifier: ^10.9.1 - version: 10.9.1(@types/node@20.5.6)(typescript@5.3.3) - typescript: - specifier: ^5.3.3 - version: 5.3.3 +importers: + + .: + dependencies: + '@emoji-mart/data': + specifier: ^1.2.1 + version: 1.2.1 + '@emoji-mart/react': + specifier: ^1.1.1 + version: 1.1.1(emoji-mart@5.6.0)(react@18.2.0) + '@google-cloud/storage': + specifier: ^7.7.0 + version: 7.7.0 + '@hookform/resolvers': + specifier: ^3.3.4 + version: 3.3.4(react-hook-form@7.45.4(react@18.2.0)) + '@next-auth/prisma-adapter': + specifier: ^1.0.7 + version: 1.0.7(@prisma/client@5.16.1(prisma@5.16.1))(next-auth@4.24.7(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) + '@prisma/client': + specifier: 5.16.1 + version: 5.16.1(prisma@5.16.1) + '@radix-ui/colors': + specifier: ^3.0.0 + version: 3.0.0 + '@radix-ui/react-avatar': + specifier: ^1.0.4 + version: 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-dialog': + specifier: ^1.0.5 + version: 1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-dropdown-menu': + specifier: ^2.0.6 + version: 2.0.6(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-label': + specifier: ^2.0.2 + version: 2.0.2(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-popover': + specifier: ^1.1.1 + version: 1.1.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-select': + specifier: ^2.0.0 + version: 2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': + specifier: ^1.0.2 + version: 1.0.2(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-tabs': + specifier: ^1.0.4 + version: 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-tooltip': + specifier: ^1.0.7 + version: 1.0.7(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@sentry/nextjs': + specifier: ^7.102.1 + version: 7.102.1(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0)(webpack@5.89.0) + '@slack/webhook': + specifier: ^7.0.1 + version: 7.0.1 + '@stripe/stripe-js': + specifier: ^4.1.0 + version: 4.1.0 + '@uiw/react-markdown-preview': + specifier: ^5.0.6 + version: 5.0.6(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@uiw/react-md-editor': + specifier: ^4.0.3 + version: 4.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + class-variance-authority: + specifier: ^0.7.0 + version: 0.7.0 + clsx: + specifier: ^2.1.0 + version: 2.1.0 + emoji-mart: + specifier: ^5.6.0 + version: 5.6.0 + formidable: + specifier: ^3.5.1 + version: 3.5.1 + jotai: + specifier: ^2.6.4 + version: 2.6.4(@types/react@18.0.27)(react@18.2.0) + lucide-react: + specifier: ^0.400.0 + version: 0.400.0(react@18.2.0) + next: + specifier: 14.2.4 + version: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + next-auth: + specifier: ^4.24.7 + version: 4.24.7(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + next-remove-imports: + specifier: ^1.0.12 + version: 1.0.12(webpack@5.89.0) + next-safe-action: + specifier: ^7.0.2 + version: 7.0.2(@types/json-schema@7.0.15)(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(zod@3.22.4) + next-themes: + specifier: ^0.3.0 + version: 0.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: + specifier: 18.2.0 + version: 18.2.0 + react-dom: + specifier: 18.2.0 + version: 18.2.0(react@18.2.0) + react-dropzone: + specifier: ^14.2.3 + version: 14.2.3(react@18.2.0) + react-error-boundary: + specifier: ^4.0.12 + version: 4.0.12(react@18.2.0) + react-hook-form: + specifier: ^7.45.4 + version: 7.45.4(react@18.2.0) + react-paginate: + specifier: ^8.2.0 + version: 8.2.0(react@18.2.0) + react-papaparse: + specifier: ^4.4.0 + version: 4.4.0 + rehype-sanitize: + specifier: ^6.0.0 + version: 6.0.0 + resend: + specifier: ^3.2.0 + version: 3.2.0 + slugify: + specifier: ^1.6.6 + version: 1.6.6 + sonner: + specifier: ^1.4.0 + version: 1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + stripe: + specifier: ^16.1.0 + version: 16.1.0 + tailwind-merge: + specifier: ^2.2.0 + version: 2.2.0 + tailwindcss-animate: + specifier: ^1.0.6 + version: 1.0.6(tailwindcss@3.4.1(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3))) + use-debounce: + specifier: ^10.0.0 + version: 10.0.0(react@18.2.0) + vaul: + specifier: ^0.9.0 + version: 0.9.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + zod: + specifier: ^3.22.4 + version: 3.22.4 + devDependencies: + '@changesets/cli': + specifier: ^2.27.1 + version: 2.27.1 + '@playwright/test': + specifier: ^1.45.0 + version: 1.45.0 + '@swc-jotai/react-refresh': + specifier: ^0.1.0 + version: 0.1.0 + '@types/formidable': + specifier: ^3.4.5 + version: 3.4.5 + '@types/node': + specifier: ^20.5.6 + version: 20.5.6 + '@types/react': + specifier: ^18.0.27 + version: 18.0.27 + '@typescript-eslint/eslint-plugin': + specifier: ^7.14.1 + version: 7.14.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3) + autoprefixer: + specifier: ^10.4.16 + version: 10.4.16(postcss@8.4.28) + dotenv: + specifier: ^16.4.5 + version: 16.4.5 + eslint: + specifier: 8.57.0 + version: 8.57.0 + eslint-config-airbnb: + specifier: ^19.0.4 + version: 19.0.4(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.0))(eslint-plugin-react@7.34.2(eslint@8.57.0))(eslint@8.57.0) + eslint-config-airbnb-typescript: + specifier: ^18.0.0 + version: 18.0.0(@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3))(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint@8.57.0) + eslint-config-next: + specifier: 14.1.0 + version: 14.1.0(eslint@8.57.0)(typescript@5.3.3) + eslint-config-prettier: + specifier: ^9.0.0 + version: 9.0.0(eslint@8.57.0) + eslint-plugin-import: + specifier: ^2.29.1 + version: 2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0) + eslint-plugin-jsx-a11y: + specifier: ^6.8.0 + version: 6.8.0(eslint@8.57.0) + eslint-plugin-playwright: + specifier: ^1.6.2 + version: 1.6.2(eslint@8.57.0) + eslint-plugin-prettier: + specifier: ^5.1.3 + version: 5.1.3(@types/eslint@8.56.0)(eslint-config-prettier@9.0.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.2.5) + eslint-plugin-react: + specifier: ^7.34.2 + version: 7.34.2(eslint@8.57.0) + eslint-plugin-react-hooks: + specifier: ^4.6.2 + version: 4.6.2(eslint@8.57.0) + eslint-plugin-tailwindcss: + specifier: ^3.17.3 + version: 3.17.3(tailwindcss@3.4.1(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3))) + eslint-plugin-unused-imports: + specifier: ^4.0.0 + version: 4.0.0(@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0) + husky: + specifier: ^9.0.11 + version: 9.0.11 + lint-staged: + specifier: ^15.0.2 + version: 15.0.2 + postcss: + specifier: ^8.4.28 + version: 8.4.28 + prettier: + specifier: ^3.2.5 + version: 3.2.5 + prettier-plugin-tailwindcss: + specifier: ^0.6.2 + version: 0.6.2(prettier@3.2.5) + prisma: + specifier: 5.16.1 + version: 5.16.1 + tailwindcss: + specifier: ^3.4.1 + version: 3.4.1(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3)) + ts-node: + specifier: ^10.9.1 + version: 10.9.1(@types/node@20.5.6)(typescript@5.3.3) + typescript: + specifier: ^5.3.3 + version: 5.3.3 packages: - /@aashutoshrathi/word-wrap@1.2.6: + '@aashutoshrathi/word-wrap@1.2.6': resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} engines: {node: '>=0.10.0'} - dev: true - /@alloc/quick-lru@5.2.0: + '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} - /@ampproject/remapping@2.2.1: + '@ampproject/remapping@2.2.1': resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 - dev: false - /@babel/code-frame@7.22.13: + '@babel/code-frame@7.22.13': resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.22.13 - chalk: 2.4.2 - /@babel/compat-data@7.22.9: + '@babel/compat-data@7.22.9': resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} engines: {node: '>=6.9.0'} - dev: false - /@babel/core@7.22.17: + '@babel/core@7.22.17': resolution: {integrity: sha512-2EENLmhpwplDux5PSsZnSbnSkB3tZ6QTksgO25xwEL7pIDcNOMhF5v/s6RzwjMZzZzw9Ofc30gHv5ChCC8pifQ==} engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.22.15 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-module-transforms': 7.22.17(@babel/core@7.22.17) - '@babel/helpers': 7.22.15 - '@babel/parser': 7.22.16 - '@babel/template': 7.22.15 - '@babel/traverse': 7.22.17 - '@babel/types': 7.22.17 - convert-source-map: 1.9.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/generator@7.22.15: + '@babel/generator@7.22.15': resolution: {integrity: sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.17 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 - jsesc: 2.5.2 - dev: false - /@babel/helper-compilation-targets@7.22.15: + '@babel/helper-compilation-targets@7.22.15': resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/compat-data': 7.22.9 - '@babel/helper-validator-option': 7.22.15 - browserslist: 4.21.10 - lru-cache: 5.1.1 - semver: 6.3.1 - dev: false - /@babel/helper-environment-visitor@7.22.5: + '@babel/helper-environment-visitor@7.22.5': resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} engines: {node: '>=6.9.0'} - dev: false - /@babel/helper-function-name@7.22.5: + '@babel/helper-function-name@7.22.5': resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.15 - '@babel/types': 7.22.17 - dev: false - /@babel/helper-hoist-variables@7.22.5: + '@babel/helper-hoist-variables@7.22.5': resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.17 - dev: false - /@babel/helper-module-imports@7.22.15: + '@babel/helper-module-imports@7.22.15': resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.17 - dev: false - /@babel/helper-module-transforms@7.22.17(@babel/core@7.22.17): + '@babel/helper-module-transforms@7.22.17': resolution: {integrity: sha512-XouDDhQESrLHTpnBtCKExJdyY4gJCdrvH2Pyv8r8kovX2U8G0dRUOT45T9XlbLtuu9CLXP15eusnkprhoPV5iQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.17 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.15 - dev: false - /@babel/helper-simple-access@7.22.5: + '@babel/helper-simple-access@7.22.5': resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.17 - dev: false - /@babel/helper-split-export-declaration@7.22.6: + '@babel/helper-split-export-declaration@7.22.6': resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.17 - dev: false - /@babel/helper-string-parser@7.22.5: + '@babel/helper-string-parser@7.22.5': resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} - dev: false - /@babel/helper-validator-identifier@7.22.15: + '@babel/helper-validator-identifier@7.22.15': resolution: {integrity: sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.22.15: + '@babel/helper-validator-option@7.22.15': resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} engines: {node: '>=6.9.0'} - dev: false - /@babel/helpers@7.22.15: + '@babel/helpers@7.22.15': resolution: {integrity: sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.15 - '@babel/traverse': 7.22.17 - '@babel/types': 7.22.17 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/highlight@7.22.13: + '@babel/highlight@7.22.13': resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.22.15 - chalk: 2.4.2 - js-tokens: 4.0.0 - /@babel/parser@7.22.16: + '@babel/parser@7.22.16': resolution: {integrity: sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==} engines: {node: '>=6.0.0'} hasBin: true - dependencies: - '@babel/types': 7.22.17 - dev: false - /@babel/runtime@7.22.11: + '@babel/runtime@7.22.11': resolution: {integrity: sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA==} engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.1 - dev: false - /@babel/runtime@7.23.6: + '@babel/runtime@7.23.6': resolution: {integrity: sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==} engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.1 - dev: false - /@babel/runtime@7.23.7: + '@babel/runtime@7.23.7': resolution: {integrity: sha512-w06OXVOFso7LcbzMiDGt+3X7Rh7Ho8MmgPoWU3rarH+8upf+wSU/grlGbWzQyr3DkdN6ZeuMFjpdwW0Q+HxobA==} engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.1 - /@babel/template@7.22.15: + '@babel/template@7.22.15': resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.22.13 - '@babel/parser': 7.22.16 - '@babel/types': 7.22.17 - dev: false - /@babel/traverse@7.22.17: + '@babel/traverse@7.22.17': resolution: {integrity: sha512-xK4Uwm0JnAMvxYZxOVecss85WxTEIbTa7bnGyf/+EgCL5Zt3U7htUpEOWv9detPlamGKuRzCqw74xVglDWpPdg==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.22.15 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.22.16 - '@babel/types': 7.22.17 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/types@7.22.17: + '@babel/types@7.22.17': resolution: {integrity: sha512-YSQPHLFtQNE5xN9tHuZnzu8vPr61wVTBZdfv1meex1NBosa4iT05k/Jw06ddJugi4bk7The/oSwQGFcksmEJQg==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.15 - to-fast-properties: 2.0.0 - dev: false - /@changesets/apply-release-plan@7.0.0: + '@changesets/apply-release-plan@7.0.0': resolution: {integrity: sha512-vfi69JR416qC9hWmFGSxj7N6wA5J222XNBmezSVATPWDVPIF7gkd4d8CpbEbXmRWbVrkoli3oerGS6dcL/BGsQ==} - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/config': 3.0.0 - '@changesets/get-version-range-type': 0.4.0 - '@changesets/git': 3.0.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - detect-indent: 6.1.0 - fs-extra: 7.0.1 - lodash.startcase: 4.4.0 - outdent: 0.5.0 - prettier: 2.8.8 - resolve-from: 5.0.0 - semver: 7.5.4 - dev: true - /@changesets/assemble-release-plan@6.0.0: + '@changesets/assemble-release-plan@6.0.0': resolution: {integrity: sha512-4QG7NuisAjisbW4hkLCmGW2lRYdPrKzro+fCtZaILX+3zdUELSvYjpL4GTv0E4aM9Mef3PuIQp89VmHJ4y2bfw==} - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.0.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - semver: 7.5.4 - dev: true - /@changesets/changelog-git@0.2.0: + '@changesets/changelog-git@0.2.0': resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==} - dependencies: - '@changesets/types': 6.0.0 - dev: true - /@changesets/cli@2.27.1: + '@changesets/cli@2.27.1': resolution: {integrity: sha512-iJ91xlvRnnrJnELTp4eJJEOPjgpF3NOh4qeQehM6Ugiz9gJPRZ2t+TsXun6E3AMN4hScZKjqVXl0TX+C7AB3ZQ==} hasBin: true - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/apply-release-plan': 7.0.0 - '@changesets/assemble-release-plan': 6.0.0 - '@changesets/changelog-git': 0.2.0 - '@changesets/config': 3.0.0 - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.0.0 - '@changesets/get-release-plan': 4.0.0 - '@changesets/git': 3.0.0 - '@changesets/logger': 0.1.0 - '@changesets/pre': 2.0.0 - '@changesets/read': 0.6.0 - '@changesets/types': 6.0.0 - '@changesets/write': 0.3.0 - '@manypkg/get-packages': 1.1.3 - '@types/semver': 7.5.1 - ansi-colors: 4.1.3 - chalk: 2.4.2 - ci-info: 3.8.0 - enquirer: 2.4.1 - external-editor: 3.1.0 - fs-extra: 7.0.1 - human-id: 1.0.2 - meow: 6.1.1 - outdent: 0.5.0 - p-limit: 2.3.0 - preferred-pm: 3.0.3 - resolve-from: 5.0.0 - semver: 7.5.4 - spawndamnit: 2.0.0 - term-size: 2.2.1 - tty-table: 4.2.1 - dev: true - /@changesets/config@3.0.0: + '@changesets/config@3.0.0': resolution: {integrity: sha512-o/rwLNnAo/+j9Yvw9mkBQOZySDYyOr/q+wptRLcAVGlU6djOeP9v1nlalbL9MFsobuBVQbZCTp+dIzdq+CLQUA==} - dependencies: - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.0.0 - '@changesets/logger': 0.1.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - fs-extra: 7.0.1 - micromatch: 4.0.5 - dev: true - /@changesets/errors@0.2.0: + '@changesets/errors@0.2.0': resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} - dependencies: - extendable-error: 0.1.7 - dev: true - /@changesets/get-dependents-graph@2.0.0: + '@changesets/get-dependents-graph@2.0.0': resolution: {integrity: sha512-cafUXponivK4vBgZ3yLu944mTvam06XEn2IZGjjKc0antpenkYANXiiE6GExV/yKdsCnE8dXVZ25yGqLYZmScA==} - dependencies: - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - chalk: 2.4.2 - fs-extra: 7.0.1 - semver: 7.5.4 - dev: true - /@changesets/get-release-plan@4.0.0: + '@changesets/get-release-plan@4.0.0': resolution: {integrity: sha512-9L9xCUeD/Tb6L/oKmpm8nyzsOzhdNBBbt/ZNcjynbHC07WW4E1eX8NMGC5g5SbM5z/V+MOrYsJ4lRW41GCbg3w==} - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/assemble-release-plan': 6.0.0 - '@changesets/config': 3.0.0 - '@changesets/pre': 2.0.0 - '@changesets/read': 0.6.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - dev: true - /@changesets/get-version-range-type@0.4.0: + '@changesets/get-version-range-type@0.4.0': resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} - dev: true - /@changesets/git@3.0.0: + '@changesets/git@3.0.0': resolution: {integrity: sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==} - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/errors': 0.2.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - is-subdir: 1.2.0 - micromatch: 4.0.5 - spawndamnit: 2.0.0 - dev: true - /@changesets/logger@0.1.0: + '@changesets/logger@0.1.0': resolution: {integrity: sha512-pBrJm4CQm9VqFVwWnSqKEfsS2ESnwqwH+xR7jETxIErZcfd1u2zBSqrHbRHR7xjhSgep9x2PSKFKY//FAshA3g==} - dependencies: - chalk: 2.4.2 - dev: true - /@changesets/parse@0.4.0: + '@changesets/parse@0.4.0': resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==} - dependencies: - '@changesets/types': 6.0.0 - js-yaml: 3.14.1 - dev: true - /@changesets/pre@2.0.0: + '@changesets/pre@2.0.0': resolution: {integrity: sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==} - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/errors': 0.2.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - fs-extra: 7.0.1 - dev: true - /@changesets/read@0.6.0: + '@changesets/read@0.6.0': resolution: {integrity: sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==} - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/git': 3.0.0 - '@changesets/logger': 0.1.0 - '@changesets/parse': 0.4.0 - '@changesets/types': 6.0.0 - chalk: 2.4.2 - fs-extra: 7.0.1 - p-filter: 2.1.0 - dev: true - /@changesets/types@4.1.0: + '@changesets/types@4.1.0': resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} - dev: true - /@changesets/types@6.0.0: + '@changesets/types@6.0.0': resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==} - dev: true - /@changesets/write@0.3.0: + '@changesets/write@0.3.0': resolution: {integrity: sha512-slGLb21fxZVUYbyea+94uFiD6ntQW0M2hIKNznFizDhZPDgn2c/fv1UzzlW43RVzh1BEDuIqW6hzlJ1OflNmcw==} - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/types': 6.0.0 - fs-extra: 7.0.1 - human-id: 1.0.2 - prettier: 2.8.8 - dev: true - /@cspotcode/source-map-support@0.8.1: + '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - /@emoji-mart/data@1.2.1: + '@emoji-mart/data@1.2.1': resolution: {integrity: sha512-no2pQMWiBy6gpBEiqGeU77/bFejDqUTRY7KX+0+iur13op3bqUsXdnwoZs6Xb1zbv0gAj5VvS1PWoUUckSr5Dw==} - dev: false - /@emoji-mart/react@1.1.1(emoji-mart@5.6.0)(react@18.2.0): + '@emoji-mart/react@1.1.1': resolution: {integrity: sha512-NMlFNeWgv1//uPsvLxvGQoIerPuVdXwK/EUek8OOkJ6wVOWPUizRBJU0hDqWZCOROVpfBgCemaC3m6jDOXi03g==} peerDependencies: emoji-mart: ^5.2 react: ^16.8 || ^17 || ^18 - dependencies: - emoji-mart: 5.6.0 - react: 18.2.0 - dev: false - /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): + '@eslint-community/eslint-utils@4.4.0': resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 8.57.0 - eslint-visitor-keys: 3.4.3 - dev: true - /@eslint-community/regexpp@4.10.1: + '@eslint-community/regexpp@4.10.1': resolution: {integrity: sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: true - /@eslint-community/regexpp@4.8.0: + '@eslint-community/regexpp@4.8.0': resolution: {integrity: sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: true - /@eslint/eslintrc@2.1.4: + '@eslint/eslintrc@2.1.4': resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 9.6.1 - globals: 13.21.0 - ignore: 5.2.4 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - /@eslint/js@8.57.0: + '@eslint/js@8.57.0': resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - /@floating-ui/core@1.4.1: + '@floating-ui/core@1.4.1': resolution: {integrity: sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ==} - dependencies: - '@floating-ui/utils': 0.1.1 - dev: false - /@floating-ui/dom@1.5.1: + '@floating-ui/dom@1.5.1': resolution: {integrity: sha512-KwvVcPSXg6mQygvA1TjbN/gh///36kKtllIF8SUm0qpFj8+rvYrpvlYdL1JoA71SHpDqgSSdGOSoQ0Mp3uY5aw==} - dependencies: - '@floating-ui/core': 1.4.1 - '@floating-ui/utils': 0.1.1 - dev: false - /@floating-ui/react-dom@2.0.2(react-dom@18.2.0)(react@18.2.0): + '@floating-ui/react-dom@2.0.2': resolution: {integrity: sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' - dependencies: - '@floating-ui/dom': 1.5.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@floating-ui/utils@0.1.1: + '@floating-ui/utils@0.1.1': resolution: {integrity: sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw==} - dev: false - /@google-cloud/paginator@5.0.0: + '@google-cloud/paginator@5.0.0': resolution: {integrity: sha512-87aeg6QQcEPxGCOthnpUjvw4xAZ57G7pL8FS0C4e/81fr3FjkpUpibf1s2v5XGyGhUVGF4Jfg7yEcxqn2iUw1w==} engines: {node: '>=14.0.0'} - dependencies: - arrify: 2.0.1 - extend: 3.0.2 - dev: false - /@google-cloud/projectify@4.0.0: + '@google-cloud/projectify@4.0.0': resolution: {integrity: sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==} engines: {node: '>=14.0.0'} - dev: false - /@google-cloud/promisify@4.0.0: + '@google-cloud/promisify@4.0.0': resolution: {integrity: sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==} engines: {node: '>=14'} - dev: false - /@google-cloud/storage@7.7.0: + '@google-cloud/storage@7.7.0': resolution: {integrity: sha512-EMCEY+6JiIkx7Dt8NXVGGjy1vRdSGdHkoqZoqjJw7cEBkT7ZkX0c7puedfn1MamnzW5SX4xoa2jVq5u7OWBmkQ==} engines: {node: '>=14'} - dependencies: - '@google-cloud/paginator': 5.0.0 - '@google-cloud/projectify': 4.0.0 - '@google-cloud/promisify': 4.0.0 - abort-controller: 3.0.0 - async-retry: 1.3.3 - compressible: 2.0.18 - duplexify: 4.1.2 - ent: 2.2.0 - fast-xml-parser: 4.3.4 - gaxios: 6.2.0 - google-auth-library: 9.6.3 - mime: 3.0.0 - mime-types: 2.1.35 - p-limit: 3.1.0 - retry-request: 7.0.2 - teeny-request: 9.0.0 - uuid: 8.3.2 - transitivePeerDependencies: - - encoding - - supports-color - dev: false - /@hookform/resolvers@3.3.4(react-hook-form@7.45.4): + '@hookform/resolvers@3.3.4': resolution: {integrity: sha512-o5cgpGOuJYrd+iMKvkttOclgwRW86EsWJZZRC23prf0uU2i48Htq4PuT73AVb9ionFyZrwYEITuOFGF+BydEtQ==} peerDependencies: react-hook-form: ^7.0.0 - dependencies: - react-hook-form: 7.45.4(react@18.2.0) - dev: false - /@humanwhocodes/config-array@0.11.14: + '@humanwhocodes/config-array@0.11.14': resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} - dependencies: - '@humanwhocodes/object-schema': 2.0.2 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - /@humanwhocodes/module-importer@1.0.1: + '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - dev: true - /@humanwhocodes/object-schema@2.0.2: + '@humanwhocodes/object-schema@2.0.2': resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} - dev: true - /@isaacs/cliui@8.0.2: + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} - dependencies: - string-width: 5.1.2 - string-width-cjs: /string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: /strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: /wrap-ansi@7.0.0 - /@jridgewell/gen-mapping@0.3.3: + '@jridgewell/gen-mapping@0.3.3': resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.20 - /@jridgewell/resolve-uri@3.1.1: + '@jridgewell/resolve-uri@3.1.1': resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} - /@jridgewell/set-array@1.1.2: + '@jridgewell/set-array@1.1.2': resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} - /@jridgewell/source-map@0.3.5: + '@jridgewell/source-map@0.3.5': resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 - dev: false - /@jridgewell/sourcemap-codec@1.4.15: + '@jridgewell/sourcemap-codec@1.4.15': resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - /@jridgewell/trace-mapping@0.3.20: + '@jridgewell/trace-mapping@0.3.20': resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 - /@jridgewell/trace-mapping@0.3.9: + '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 - /@manypkg/find-root@1.1.0: + '@manypkg/find-root@1.1.0': resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} - dependencies: - '@babel/runtime': 7.23.7 - '@types/node': 12.20.55 - find-up: 4.1.0 - fs-extra: 8.1.0 - dev: true - /@manypkg/get-packages@1.1.3: + '@manypkg/get-packages@1.1.3': resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/types': 4.1.0 - '@manypkg/find-root': 1.1.0 - fs-extra: 8.1.0 - globby: 11.1.0 - read-yaml-file: 1.1.0 - dev: true - /@next-auth/prisma-adapter@1.0.7(@prisma/client@5.16.1)(next-auth@4.24.7): + '@next-auth/prisma-adapter@1.0.7': resolution: {integrity: sha512-Cdko4KfcmKjsyHFrWwZ//lfLUbcLqlyFqjd/nYE2m3aZ7tjMNUjpks47iw7NTCnXf+5UWz5Ypyt1dSs1EP5QJw==} peerDependencies: '@prisma/client': '>=2.26.0 || >=3' next-auth: ^4 - dependencies: - '@prisma/client': 5.16.1(prisma@5.16.1) - next-auth: 4.24.7(next@14.2.4)(nodemailer@6.9.14)(react-dom@18.2.0)(react@18.2.0) - dev: false - /@next/env@14.2.4: + '@next/env@14.2.4': resolution: {integrity: sha512-3EtkY5VDkuV2+lNmKlbkibIJxcO4oIHEhBWne6PaAp+76J9KoSsGvNikp6ivzAT8dhhBMYrm6op2pS1ApG0Hzg==} - dev: false - /@next/eslint-plugin-next@14.1.0: + '@next/eslint-plugin-next@14.1.0': resolution: {integrity: sha512-x4FavbNEeXx/baD/zC/SdrvkjSby8nBn8KcCREqk6UuwvwoAPZmaV8TFCAuo/cpovBRTIY67mHhe86MQQm/68Q==} - dependencies: - glob: 10.3.10 - dev: true - /@next/swc-darwin-arm64@14.2.4: + '@next/swc-darwin-arm64@14.2.4': resolution: {integrity: sha512-AH3mO4JlFUqsYcwFUHb1wAKlebHU/Hv2u2kb1pAuRanDZ7pD/A/KPD98RHZmwsJpdHQwfEc/06mgpSzwrJYnNg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - requiresBuild: true - dev: false - optional: true - /@next/swc-darwin-x64@14.2.4: + '@next/swc-darwin-x64@14.2.4': resolution: {integrity: sha512-QVadW73sWIO6E2VroyUjuAxhWLZWEpiFqHdZdoQ/AMpN9YWGuHV8t2rChr0ahy+irKX5mlDU7OY68k3n4tAZTg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - requiresBuild: true - dev: false - optional: true - /@next/swc-linux-arm64-gnu@14.2.4: + '@next/swc-linux-arm64-gnu@14.2.4': resolution: {integrity: sha512-KT6GUrb3oyCfcfJ+WliXuJnD6pCpZiosx2X3k66HLR+DMoilRb76LpWPGb4tZprawTtcnyrv75ElD6VncVamUQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@next/swc-linux-arm64-musl@14.2.4: + '@next/swc-linux-arm64-musl@14.2.4': resolution: {integrity: sha512-Alv8/XGSs/ytwQcbCHwze1HmiIkIVhDHYLjczSVrf0Wi2MvKn/blt7+S6FJitj3yTlMwMxII1gIJ9WepI4aZ/A==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@next/swc-linux-x64-gnu@14.2.4: + '@next/swc-linux-x64-gnu@14.2.4': resolution: {integrity: sha512-ze0ShQDBPCqxLImzw4sCdfnB3lRmN3qGMB2GWDRlq5Wqy4G36pxtNOo2usu/Nm9+V2Rh/QQnrRc2l94kYFXO6Q==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@next/swc-linux-x64-musl@14.2.4: + '@next/swc-linux-x64-musl@14.2.4': resolution: {integrity: sha512-8dwC0UJoc6fC7PX70csdaznVMNr16hQrTDAMPvLPloazlcaWfdPogq+UpZX6Drqb1OBlwowz8iG7WR0Tzk/diQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@next/swc-win32-arm64-msvc@14.2.4: + '@next/swc-win32-arm64-msvc@14.2.4': resolution: {integrity: sha512-jxyg67NbEWkDyvM+O8UDbPAyYRZqGLQDTPwvrBBeOSyVWW/jFQkQKQ70JDqDSYg1ZDdl+E3nkbFbq8xM8E9x8A==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - requiresBuild: true - dev: false - optional: true - /@next/swc-win32-ia32-msvc@14.2.4: + '@next/swc-win32-ia32-msvc@14.2.4': resolution: {integrity: sha512-twrmN753hjXRdcrZmZttb/m5xaCBFa48Dt3FbeEItpJArxriYDunWxJn+QFXdJ3hPkm4u7CKxncVvnmgQMY1ag==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] - requiresBuild: true - dev: false - optional: true - /@next/swc-win32-x64-msvc@14.2.4: + '@next/swc-win32-x64-msvc@14.2.4': resolution: {integrity: sha512-tkLrjBzqFTP8DVrAAQmZelEahfR9OxWpFR++vAI9FBhCiIxtwHwBHC23SBHCTURBtwB4kc/x44imVOnkKGNVGg==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - requiresBuild: true - dev: false - optional: true - /@nodelib/fs.scandir@2.1.5: + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - /@nodelib/fs.stat@2.0.5: + '@nodelib/fs.stat@2.0.5': resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} - /@nodelib/fs.walk@1.2.8: + '@nodelib/fs.walk@1.2.8': resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 - /@one-ini/wasm@0.1.1: + '@one-ini/wasm@0.1.1': resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} - dev: false - /@panva/hkdf@1.1.1: + '@panva/hkdf@1.1.1': resolution: {integrity: sha512-dhPeilub1NuIG0X5Kvhh9lH4iW3ZsHlnzwgwbOlgwQ2wG1IqFzsgHqmKPk3WzsdWAeaxKJxgM0+W433RmN45GA==} - dev: false - /@pkgjs/parseargs@0.11.0: + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - requiresBuild: true - optional: true - /@pkgr/core@0.1.1: + '@pkgr/core@0.1.1': resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - dev: true - /@playwright/test@1.45.0: + '@playwright/test@1.45.0': resolution: {integrity: sha512-TVYsfMlGAaxeUllNkywbwek67Ncf8FRGn8ZlRdO291OL3NjG9oMbfVhyP82HQF0CZLMrYsvesqoUekxdWuF9Qw==} engines: {node: '>=18'} hasBin: true - dependencies: - playwright: 1.45.0 - /@prisma/client@5.16.1(prisma@5.16.1): + '@prisma/client@5.16.1': resolution: {integrity: sha512-wM9SKQjF0qLxdnOZIVAIMKiz6Hu7vDt4FFAih85K1dk/Rr2mdahy6d3QP41K62N9O0DJJA//gUDA3Mp49xsKIg==} engines: {node: '>=16.13'} - requiresBuild: true peerDependencies: prisma: '*' peerDependenciesMeta: prisma: optional: true - dependencies: - prisma: 5.16.1 - dev: false - /@prisma/debug@5.16.1: + '@prisma/debug@5.16.1': resolution: {integrity: sha512-JsNgZAg6BD9RInLSrg7ZYzo11N7cVvYArq3fHGSD89HSgtN0VDdjV6bib7YddbcO6snzjchTiLfjeTqBjtArVQ==} - /@prisma/engines-version@5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303: + '@prisma/engines-version@5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303': resolution: {integrity: sha512-HkT2WbfmFZ9WUPyuJHhkiADxazHg8Y4gByrTSVeb3OikP6tjQ7txtSUGu9OBOBH0C13dPKN2qqH12xKtHu/Hiw==} - /@prisma/engines@5.16.1: + '@prisma/engines@5.16.1': resolution: {integrity: sha512-KkyF3eIUtBIyp5A/rJHCtwQO18OjpGgx18PzjyGcJDY/+vNgaVyuVd+TgwBgeq6NLdd1XMwRCI+58vinHsAdfA==} - requiresBuild: true - dependencies: - '@prisma/debug': 5.16.1 - '@prisma/engines-version': 5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303 - '@prisma/fetch-engine': 5.16.1 - '@prisma/get-platform': 5.16.1 - /@prisma/fetch-engine@5.16.1: + '@prisma/fetch-engine@5.16.1': resolution: {integrity: sha512-oOkjaPU1lhcA/Rvr4GVfd1NLJBwExgNBE36Ueq7dr71kTMwy++a3U3oLd2ZwrV9dj9xoP6LjCcky799D9nEt4w==} - dependencies: - '@prisma/debug': 5.16.1 - '@prisma/engines-version': 5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303 - '@prisma/get-platform': 5.16.1 - /@prisma/get-platform@5.16.1: + '@prisma/get-platform@5.16.1': resolution: {integrity: sha512-R4IKnWnMkR2nUAbU5gjrPehdQYUUd7RENFD2/D+xXTNhcqczp0N+WEGQ3ViyI3+6mtVcjjNIMdnUTNyu3GxIgA==} - dependencies: - '@prisma/debug': 5.16.1 - /@radix-ui/colors@3.0.0: + '@radix-ui/colors@3.0.0': resolution: {integrity: sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg==} - dev: false - /@radix-ui/number@1.0.1: + '@radix-ui/number@1.0.1': resolution: {integrity: sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==} - dependencies: - '@babel/runtime': 7.23.7 - dev: false - /@radix-ui/primitive@1.0.1: + '@radix-ui/primitive@1.0.1': resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} - dependencies: - '@babel/runtime': 7.23.7 - dev: false - /@radix-ui/primitive@1.1.0: + '@radix-ui/primitive@1.1.0': resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} - dev: false - /@radix-ui/react-arrow@1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-arrow@1.0.3': resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} peerDependencies: '@types/react': '*' @@ -1109,15 +676,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-arrow@1.1.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-arrow@1.1.0': resolution: {integrity: sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==} peerDependencies: '@types/react': '*' @@ -1129,14 +689,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-avatar@1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-avatar@1.0.4': resolution: {integrity: sha512-kVK2K7ZD3wwj3qhle0ElXhOjbezIgyl2hVvgwfIdexL3rN6zJmy5AqqIf+D31lxVppdzV8CjAfZ6PklkmInZLw==} peerDependencies: '@types/react': '*' @@ -1148,18 +702,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-collection@1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-collection@1.0.3': resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} peerDependencies: '@types/react': '*' @@ -1171,18 +715,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-compose-refs@1.0.1(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-compose-refs@1.0.1': resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} peerDependencies: '@types/react': '*' @@ -1190,13 +724,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-compose-refs@1.1.0(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-compose-refs@1.1.0': resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} peerDependencies: '@types/react': '*' @@ -1204,12 +733,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-context@1.0.1(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-context@1.0.1': resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} peerDependencies: '@types/react': '*' @@ -1217,13 +742,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-context@1.1.0(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-context@1.1.0': resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==} peerDependencies: '@types/react': '*' @@ -1231,12 +751,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-dialog@1.0.5(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-dialog@1.0.5': resolution: {integrity: sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==} peerDependencies: '@types/react': '*' @@ -1248,28 +764,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - aria-hidden: 1.2.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.0.27)(react@18.2.0) - dev: false - /@radix-ui/react-direction@1.0.1(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-direction@1.0.1': resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} peerDependencies: '@types/react': '*' @@ -1277,13 +773,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-dismissable-layer@1.0.5(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-dismissable-layer@1.0.5': resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} peerDependencies: '@types/react': '*' @@ -1295,19 +786,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-dismissable-layer@1.1.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-dismissable-layer@1.1.0': resolution: {integrity: sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==} peerDependencies: '@types/react': '*' @@ -1319,18 +799,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-dropdown-menu@2.0.6(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-dropdown-menu@2.0.6': resolution: {integrity: sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==} peerDependencies: '@types/react': '*' @@ -1342,21 +812,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-menu': 2.0.6(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-focus-guards@1.0.1(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-focus-guards@1.0.1': resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} peerDependencies: '@types/react': '*' @@ -1364,13 +821,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-focus-guards@1.1.0(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-focus-guards@1.1.0': resolution: {integrity: sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==} peerDependencies: '@types/react': '*' @@ -1378,12 +830,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-focus-scope@1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-focus-scope@1.0.4': resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} peerDependencies: '@types/react': '*' @@ -1395,17 +843,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-focus-scope@1.1.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-focus-scope@1.1.0': resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==} peerDependencies: '@types/react': '*' @@ -1417,16 +856,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-id@1.0.1(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-id@1.0.1': resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} peerDependencies: '@types/react': '*' @@ -1434,14 +865,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-id@1.1.0(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-id@1.1.0': resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} peerDependencies: '@types/react': '*' @@ -1449,13 +874,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-label@2.0.2(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-label@2.0.2': resolution: {integrity: sha512-N5ehvlM7qoTLx7nWPodsPYPgMzA5WM8zZChQg8nyFJKnDO5WHdba1vv5/H6IO5LtJMfD2Q3wh1qHFGNtK0w3bQ==} peerDependencies: '@types/react': '*' @@ -1467,15 +887,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-menu@2.0.6(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-menu@2.0.6': resolution: {integrity: sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==} peerDependencies: '@types/react': '*' @@ -1487,32 +900,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - aria-hidden: 1.2.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.0.27)(react@18.2.0) - dev: false - /@radix-ui/react-popover@1.1.1(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-popover@1.1.1': resolution: {integrity: sha512-3y1A3isulwnWhvTTwmIreiB8CF4L+qRjZnK1wYLO7pplddzXKby/GnZ2M7OZY3qgnl6p9AodUIHRYGXNah8Y7g==} peerDependencies: '@types/react': '*' @@ -1524,28 +913,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.1.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.1.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-popper': 1.2.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.1.1(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.1.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - aria-hidden: 1.2.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.7(@types/react@18.0.27)(react@18.2.0) - dev: false - /@radix-ui/react-popper@1.1.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-popper@1.1.3': resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==} peerDependencies: '@types/react': '*' @@ -1557,24 +926,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@floating-ui/react-dom': 2.0.2(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-arrow': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-rect': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/rect': 1.0.1 - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-popper@1.2.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-popper@1.2.0': resolution: {integrity: sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==} peerDependencies: '@types/react': '*' @@ -1586,23 +939,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@floating-ui/react-dom': 2.0.2(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-arrow': 1.1.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-rect': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-size': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/rect': 1.1.0 - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-portal@1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-portal@1.0.4': resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} peerDependencies: '@types/react': '*' @@ -1614,15 +952,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-portal@1.1.1(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-portal@1.1.1': resolution: {integrity: sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==} peerDependencies: '@types/react': '*' @@ -1634,15 +965,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-presence@1.0.1(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-presence@1.0.1': resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} peerDependencies: '@types/react': '*' @@ -1654,16 +978,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-presence@1.1.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-presence@1.1.0': resolution: {integrity: sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==} peerDependencies: '@types/react': '*' @@ -1675,15 +991,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-primitive@1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-primitive@1.0.3': resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} peerDependencies: '@types/react': '*' @@ -1695,15 +1004,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-primitive@2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-primitive@2.0.0': resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} peerDependencies: '@types/react': '*' @@ -1715,14 +1017,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/react-slot': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-roving-focus@1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-roving-focus@1.0.4': resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} peerDependencies: '@types/react': '*' @@ -1734,23 +1030,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-select@2.0.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-select@2.0.0': resolution: {integrity: sha512-RH5b7af4oHtkcHS7pG6Sgv5rk5Wxa7XI8W5gvB1N/yiuDGZxko1ynvOiVhFM7Cis2A8zxF9bTOUVbRDzPepe6w==} peerDependencies: '@types/react': '*' @@ -1762,35 +1043,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/number': 1.0.1 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.0.27 - aria-hidden: 1.2.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.0.27)(react@18.2.0) - dev: false - /@radix-ui/react-slot@1.0.2(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-slot@1.0.2': resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} peerDependencies: '@types/react': '*' @@ -1798,14 +1052,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-slot@1.1.0(@types/react@18.0.27)(react@18.2.0): + '@radix-ui/react-slot@1.1.0': resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} peerDependencies: '@types/react': '*' @@ -1813,13 +1061,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 - react: 18.2.0 - dev: false - /@radix-ui/react-tabs@1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-tabs@1.0.4': resolution: {integrity: sha512-egZfYY/+wRNCflXNHx+dePvnz9FbmssDTJBtgRfDY7e8SE5oIo3Py2eCB1ckAbh1Q7cQ/6yJZThJ++sgbxibog==} peerDependencies: '@types/react': '*' @@ -1831,284 +1074,5232 @@ packages: optional: true '@types/react-dom': optional: true + + '@radix-ui/react-tooltip@1.0.7': + resolution: {integrity: sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-use-callback-ref@1.0.1': + resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-callback-ref@1.1.0': + resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.0.1': + resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.1.0': + resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.0.3': + resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.0': + resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.0.1': + resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.0': + resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-previous@1.0.1': + resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.0.1': + resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.1.0': + resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.0.1': + resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.1.0': + resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-visually-hidden@1.0.3': + resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/rect@1.0.1': + resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} + + '@radix-ui/rect@1.1.0': + resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} + + '@react-email/render@0.0.12': + resolution: {integrity: sha512-S8WRv/PqECEi6x0QJBj0asnAb5GFtJaHlnByxLETLkgJjc76cxMYDH4r9wdbuJ4sjkcbpwP3LPnVzwS+aIjT7g==} + engines: {node: '>=18.0.0'} + + '@rollup/plugin-commonjs@24.0.0': + resolution: {integrity: sha512-0w0wyykzdyRRPHOb0cQt14mIBLujfAv6GgP6g8nvg/iBxEm112t3YPPq+Buqe2+imvElTka+bjNlJ/gB56TD8g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.68.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/pluginutils@5.1.0': + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rushstack/eslint-patch@1.6.1': + resolution: {integrity: sha512-UY+FGM/2jjMkzQLn8pxcHGMaVLh9aEitG3zY2CiY7XHdLiz3bZOwa6oDxNqEMv7zZkV+cj5DOdz0cQ1BP5Hjgw==} + + '@selderee/plugin-htmlparser2@0.11.0': + resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} + + '@sentry-internal/feedback@7.102.1': + resolution: {integrity: sha512-vY4hpLLMNLjICtWiizc7KeGbWOTUMGrF7C+9dPCztZww3CLgzWy9A7DvPj5hodRiYzpdRnAMl8yQnMFbYXh7bA==} + engines: {node: '>=12'} + + '@sentry-internal/replay-canvas@7.102.1': + resolution: {integrity: sha512-GUX4RWI10uRjdjeyvCLtAAhWRVqnAnG6+yNxWfqUQ3qMA7B7XxG43KT2UhSnulmErNzODQ6hA68rGPwwYeRIww==} + engines: {node: '>=12'} + + '@sentry-internal/tracing@7.102.1': + resolution: {integrity: sha512-RkFlFyAC0fQOvBbBqnq0CLmFW5m3JJz9pKbZd5vXPraWAlniKSb1bC/4DF9SlNx0FN1LWG+IU3ISdpzwwTeAGg==} + engines: {node: '>=8'} + + '@sentry/browser@7.102.1': + resolution: {integrity: sha512-7BOfPBiM7Kp6q/iy0JIbsBTxIASV+zWXByqqjuEMWGj3X2u4oRIfm3gv4erPU/l+CORQUVQZLSPGoIoM1gbB/A==} + engines: {node: '>=8'} + + '@sentry/cli@1.77.3': + resolution: {integrity: sha512-c3eDqcDRmy4TFz2bFU5Y6QatlpoBPPa8cxBooaS4aMQpnIdLYPF1xhyyiW0LQlDUNc3rRjNF7oN5qKoaRoMTQQ==} + engines: {node: '>= 8'} + hasBin: true + + '@sentry/core@7.102.1': + resolution: {integrity: sha512-QjY+LSP3du3J/C8x/FfEbRxgZgsWd0jfTJ4P7s9f219I1csK4OeBMC3UA1HwEa0pY/9OF6H/egW2CjOcMM5Pdg==} + engines: {node: '>=8'} + + '@sentry/integrations@7.102.1': + resolution: {integrity: sha512-Its3Ru6xCAqpaLE3cTxW/b91js2SIFoXa8LWtQDJ7tmTdwPAbT8Pij1F4bOhhaqLYbjLtCXGl/NR2cffsiRLww==} + engines: {node: '>=8'} + + '@sentry/nextjs@7.102.1': + resolution: {integrity: sha512-gOI/GD7DWhc3WucyYnepl8Nu5jmpa1YfR6jWDzTkPE2CV9zKK9zulTdqk+Aig9ch62SAmJOGkgejm5k9PE2XzQ==} + engines: {node: '>=8'} + peerDependencies: + next: ^10.0.8 || ^11.0 || ^12.0 || ^13.0 || ^14.0 + react: 16.x || 17.x || 18.x + webpack: '>= 4.0.0' + peerDependenciesMeta: + webpack: + optional: true + + '@sentry/node@7.102.1': + resolution: {integrity: sha512-mb3vmM3SGuCruckPiv/Vafeh89UQavTfpPFoU6Jwe6dSpQ39BO8fO8k8Zev+/nP6r/FKLtX17mJobErHECXsYw==} + engines: {node: '>=8'} + + '@sentry/react@7.102.1': + resolution: {integrity: sha512-X4j2DgbktlEifnd21YJKCayAmff5hnaS+9MNz9OonEwD0ARi0ks7bo0wtWHMjPK20992MO+JwczVg/1BXJYDdQ==} + engines: {node: '>=8'} + peerDependencies: + react: 15.x || 16.x || 17.x || 18.x + + '@sentry/replay@7.102.1': + resolution: {integrity: sha512-HR/j9dGIvbrId8fh8mQlODx7JrhRmawEd9e9P3laPtogWCg/5TI+XPb2VGSaXOX9VWtb/6Z2UjHsaGjgg6YcuA==} + engines: {node: '>=12'} + + '@sentry/types@7.102.1': + resolution: {integrity: sha512-htKorf3t/D0XYtM7foTcmG+rM47rDP6XdbvCcX5gBCuCYlzpM1vqCt2rl3FLktZC6TaIpFRJw1TLfx6m+x5jdA==} + engines: {node: '>=8'} + + '@sentry/utils@7.102.1': + resolution: {integrity: sha512-+8WcFjHVV/HROXSAwMuUzveElBFC43EiTG7SNEBNgOUeQzQVTmbUZXyTVgLrUmtoWqvnIxCacoLxtZo1o67kdg==} + engines: {node: '>=8'} + + '@sentry/vercel-edge@7.102.1': + resolution: {integrity: sha512-iB6KCSxrvO172VjfQHGiYpyXPKNbx6Cz01GA1YDByRiUSgSpAq0qAFRY4lvd736w5KX4s9hen+XmZ7Gmqj8Pag==} + engines: {node: '>=8'} + + '@sentry/webpack-plugin@1.21.0': + resolution: {integrity: sha512-x0PYIMWcsTauqxgl7vWUY6sANl+XGKtx7DCVnnY7aOIIlIna0jChTAPANTfA2QrK+VK+4I/4JxatCEZBnXh3Og==} + engines: {node: '>= 8'} + + '@slack/types@2.10.0': + resolution: {integrity: sha512-JXY9l49rf7dDgvfMZi0maFyugzGkvq0s5u+kDlD68WaRUhjZNLBDKZcsrycMsVVDFfyOK0R1UKkYGmy9Ph069Q==} + engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} + + '@slack/webhook@7.0.1': + resolution: {integrity: sha512-0Uj/GQ1H8nmeAVEx+7zcWb6/q/zsSOrlIaGi6zFnwgMSxjmV6xGsVwv8w6DaAdkUbtqa43v1cirWjySeZaCOIA==} + engines: {node: '>= 18', npm: '>= 8.6.0'} + + '@stripe/stripe-js@4.1.0': + resolution: {integrity: sha512-HhstGRUz/4JdbZpb26OcOf8Qb/cFR02arvHvgz4sPFLSnI6ZNHC53Jc6JP/FGNwxtrF719YyUnK0gGy4oyhucQ==} + engines: {node: '>=12.16'} + + '@swc-jotai/react-refresh@0.1.0': + resolution: {integrity: sha512-CWV4W06GdfQo3cW3CoUM2fp7avH4Z/suR7SvECNJnQbr6Sa9U3p7o10nXjNv2zT6z09bbNUPM55HBw5Nwd24Iw==} + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/helpers@0.5.5': + resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} + + '@tootallnate/once@2.0.0': + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + + '@tsconfig/node10@1.0.9': + resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + + '@types/caseless@0.12.5': + resolution: {integrity: sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==} + + '@types/debug@4.1.8': + resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} + + '@types/eslint-scope@3.7.7': + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + + '@types/eslint@8.56.0': + resolution: {integrity: sha512-FlsN0p4FhuYRjIxpbdXovvHQhtlG05O1GG/RNWvdAxTboR438IOTwmrY/vLA+Xfgg06BTkP045M3vpFwTMv1dg==} + + '@types/estree-jsx@1.0.3': + resolution: {integrity: sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==} + + '@types/estree@1.0.5': + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + + '@types/formidable@3.4.5': + resolution: {integrity: sha512-s7YPsNVfnsng5L8sKnG/Gbb2tiwwJTY1conOkJzTMRvJAlLFW1nEua+ADsJQu8N1c0oTHx9+d5nqg10WuT9gHQ==} + + '@types/hast@2.3.5': + resolution: {integrity: sha512-SvQi0L/lNpThgPoleH53cdjB3y9zpLlVjRbqB3rH8hx1jiRSBGAhyjV3H+URFjNVRqt2EdYNrbZE5IsGlNfpRg==} + + '@types/hast@3.0.0': + resolution: {integrity: sha512-SoytUJRuf68HXYqcXicQIhCrLQjqeYU2anikr4G3p3Iz+OZO5QDQpDj++gv+RenHsnUBwNZ2dumBArF8VLSk2Q==} + + '@types/json-schema@7.0.12': + resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + '@types/mdast@4.0.3': + resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} + + '@types/minimist@1.2.2': + resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} + + '@types/ms@0.7.31': + resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} + + '@types/node@12.20.55': + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + + '@types/node@20.10.6': + resolution: {integrity: sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw==} + + '@types/node@20.5.6': + resolution: {integrity: sha512-Gi5wRGPbbyOTX+4Y2iULQ27oUPrefaB0PxGQJnfyWN3kvEDGM3mIB5M/gQLmitZf7A9FmLeaqxD3L1CXpm3VKQ==} + + '@types/normalize-package-data@2.4.1': + resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} + + '@types/papaparse@5.3.14': + resolution: {integrity: sha512-LxJ4iEFcpqc6METwp9f6BV6VVc43m6MfH0VqFosHvrUgfXiFe6ww7R3itkOQ+TCK6Y+Iv/+RnnvtRZnkc5Kc9g==} + + '@types/prismjs@1.26.0': + resolution: {integrity: sha512-ZTaqn/qSqUuAq1YwvOFQfVW1AR/oQJlLSZVustdjwI+GZ8kr0MSHBj0tsXPW1EqHubx50gtBEjbPGsdZwQwCjQ==} + + '@types/prop-types@15.7.5': + resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + + '@types/react@18.0.27': + resolution: {integrity: sha512-3vtRKHgVxu3Jp9t718R9BuzoD4NcQ8YJ5XRzsSKxNDiDonD2MXIT1TmSkenxuCycZJoQT5d2vE8LwWJxBC1gmA==} + + '@types/request@2.48.12': + resolution: {integrity: sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==} + + '@types/scheduler@0.16.3': + resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} + + '@types/semver@7.5.1': + resolution: {integrity: sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==} + + '@types/tough-cookie@4.0.5': + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + + '@types/unist@2.0.8': + resolution: {integrity: sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==} + + '@types/unist@3.0.0': + resolution: {integrity: sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==} + + '@typeschema/core@0.13.2': + resolution: {integrity: sha512-pAt0MK249/9szYaoPuvzhSfOd3smrLhhwCCpUNB4onX32mRx5F3lzDIveIYGQkLYRq58xOX5sjoW+n72f/MLLw==} + peerDependencies: + '@types/json-schema': ^7.0.15 + peerDependenciesMeta: + '@types/json-schema': + optional: true + + '@typeschema/main@0.13.10': + resolution: {integrity: sha512-ArdFC4GbgdVWWgPKg2tymxx2KHMus3xZ8I2kHwqw/0P4FtWBXCmSNAiBqDtpoXXF8h9cbcm7fVpcs5ftoWT9+A==} + peerDependencies: + '@typeschema/arktype': 0.13.2 + '@typeschema/class-validator': 0.1.2 + '@typeschema/deepkit': 0.13.4 + '@typeschema/effect': 0.13.4 + '@typeschema/fastest-validator': 0.1.0 + '@typeschema/function': 0.13.2 + '@typeschema/io-ts': 0.13.3 + '@typeschema/joi': 0.13.3 + '@typeschema/json': 0.13.3 + '@typeschema/ow': 0.13.3 + '@typeschema/runtypes': 0.13.2 + '@typeschema/superstruct': 0.13.2 + '@typeschema/suretype': 0.1.0 + '@typeschema/typebox': 0.13.4 + '@typeschema/valibot': 0.13.5 + '@typeschema/valita': 0.1.0 + '@typeschema/vine': 0.1.0 + '@typeschema/yup': 0.13.3 + '@typeschema/zod': 0.13.3 + peerDependenciesMeta: + '@typeschema/arktype': + optional: true + '@typeschema/class-validator': + optional: true + '@typeschema/deepkit': + optional: true + '@typeschema/effect': + optional: true + '@typeschema/fastest-validator': + optional: true + '@typeschema/function': + optional: true + '@typeschema/io-ts': + optional: true + '@typeschema/joi': + optional: true + '@typeschema/json': + optional: true + '@typeschema/ow': + optional: true + '@typeschema/runtypes': + optional: true + '@typeschema/superstruct': + optional: true + '@typeschema/suretype': + optional: true + '@typeschema/typebox': + optional: true + '@typeschema/valibot': + optional: true + '@typeschema/valita': + optional: true + '@typeschema/vine': + optional: true + '@typeschema/yup': + optional: true + '@typeschema/zod': + optional: true + + '@typeschema/zod@0.13.3': + resolution: {integrity: sha512-p5Hs22WIKkM/vZTAvw5QOLSA0EJ6QBUsQMGUrXlYnTAE2LSR/F5MLsDUb18O6S5VxGjrzU7x3VIznD5qOafJRw==} + peerDependencies: + zod: ^3.22.4 + zod-to-json-schema: ^3.22.4 + peerDependenciesMeta: + zod: + optional: true + zod-to-json-schema: + optional: true + + '@typescript-eslint/eslint-plugin@7.14.1': + resolution: {integrity: sha512-aAJd6bIf2vvQRjUG3ZkNXkmBpN+J7Wd0mfQiiVCJMu9Z5GcZZdcc0j8XwN/BM97Fl7e3SkTXODSk4VehUv7CGw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@6.17.0': + resolution: {integrity: sha512-C4bBaX2orvhK+LlwrY8oWGmSl4WolCfYm513gEccdWZj0CwGadbIADb0FtVEcI+WzUyjyoBj2JRP8g25E6IB8A==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@7.12.0': + resolution: {integrity: sha512-dm/J2UDY3oV3TKius2OUZIFHsomQmpHtsV0FTh1WO8EKgHLQ1QCADUqscPgTpU+ih1e21FQSRjXckHn3txn6kQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@6.17.0': + resolution: {integrity: sha512-RX7a8lwgOi7am0k17NUO0+ZmMOX4PpjLtLRgLmT1d3lBYdWH4ssBUbwdmc5pdRX8rXon8v9x8vaoOSpkHfcXGA==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/scope-manager@7.12.0': + resolution: {integrity: sha512-itF1pTnN6F3unPak+kutH9raIkL3lhH1YRPGgt7QQOh43DQKVJXmWkpb+vpc/TiDHs6RSd9CTbDsc/Y+Ygq7kg==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/scope-manager@7.14.1': + resolution: {integrity: sha512-gPrFSsoYcsffYXTOZ+hT7fyJr95rdVe4kGVX1ps/dJ+DfmlnjFN/GcMxXcVkeHDKqsq6uAcVaQaIi3cFffmAbA==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/type-utils@7.14.1': + resolution: {integrity: sha512-/MzmgNd3nnbDbOi3LfasXWWe292+iuo+umJ0bCCMCPc1jLO/z2BQmWUUUXvXLbrQey/JgzdF/OV+I5bzEGwJkQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@6.17.0': + resolution: {integrity: sha512-qRKs9tvc3a4RBcL/9PXtKSehI/q8wuU9xYJxe97WFxnzH8NWWtcW3ffNS+EWg8uPvIerhjsEZ+rHtDqOCiH57A==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/types@7.12.0': + resolution: {integrity: sha512-o+0Te6eWp2ppKY3mLCU+YA9pVJxhUJE15FV7kxuD9jgwIAa+w/ycGJBMrYDTpVGUM/tgpa9SeMOugSabWFq7bg==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/types@7.14.1': + resolution: {integrity: sha512-mL7zNEOQybo5R3AavY+Am7KLv8BorIv7HCYS5rKoNZKQD9tsfGUpO4KdAn3sSUvTiS4PQkr2+K0KJbxj8H9NDg==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/typescript-estree@6.17.0': + resolution: {integrity: sha512-gVQe+SLdNPfjlJn5VNGhlOhrXz4cajwFd5kAgWtZ9dCZf4XJf8xmgCTLIqec7aha3JwgLI2CK6GY1043FRxZwg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/typescript-estree@7.12.0': + resolution: {integrity: sha512-5bwqLsWBULv1h6pn7cMW5dXX/Y2amRqLaKqsASVwbBHMZSnHqE/HN4vT4fE0aFsiwxYvr98kqOWh1a8ZKXalCQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/typescript-estree@7.14.1': + resolution: {integrity: sha512-k5d0VuxViE2ulIO6FbxxSZaxqDVUyMbXcidC8rHvii0I56XZPv8cq+EhMns+d/EVIL41sMXqRbK3D10Oza1bbA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@7.14.1': + resolution: {integrity: sha512-CMmVVELns3nak3cpJhZosDkm63n+DwBlDX8g0k4QUa9BMnF+lH2lr3d130M1Zt1xxmB3LLk3NV7KQCq86ZBBhQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + + '@typescript-eslint/visitor-keys@6.17.0': + resolution: {integrity: sha512-H6VwB/k3IuIeQOyYczyyKN8wH6ed8EwliaYHLxOIhyF0dYEIsN8+Bk3GE19qafeMKyZJJHP8+O1HiFhFLUNKSg==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/visitor-keys@7.12.0': + resolution: {integrity: sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/visitor-keys@7.14.1': + resolution: {integrity: sha512-Crb+F75U1JAEtBeQGxSKwI60hZmmzaqA3z9sYsVm8X7W5cwLEm5bRe0/uXS6+MR/y8CVpKSR/ontIAIEPFcEkA==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@uiw/copy-to-clipboard@1.0.15': + resolution: {integrity: sha512-1bbGZ3T+SGmA07BoVPK4UCUDcowDN/moctviJGQexfOc9qL8TMLDQPr7mTPvDKhgJkgnlKkAQNFU8PiarIi9sQ==} + + '@uiw/react-markdown-preview@5.0.6': + resolution: {integrity: sha512-zd+T02xFhy6K75XPdkF3RRAWKzVzJctZ6CCpFDcn/CgdQlEj8Z+Z9k11nkPspzbznB43UYdoe4qQvnjgG6TfZw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@uiw/react-md-editor@4.0.3': + resolution: {integrity: sha512-TvChXxUBUS21Rk0cVC0aeJoWcFZ/G0xN/Hc4Lv9FGFK8wPOHESd7Bcq4jNRHJ6lEzE/+d4Wh00lEVNKj+rQyBw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@ungap/structured-clone@1.2.0': + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + + '@webassemblyjs/ast@1.11.6': + resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + + '@webassemblyjs/floating-point-hex-parser@1.11.6': + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + + '@webassemblyjs/helper-api-error@1.11.6': + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + + '@webassemblyjs/helper-buffer@1.11.6': + resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + + '@webassemblyjs/helper-numbers@1.11.6': + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + + '@webassemblyjs/helper-wasm-bytecode@1.11.6': + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + + '@webassemblyjs/helper-wasm-section@1.11.6': + resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} + + '@webassemblyjs/ieee754@1.11.6': + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + + '@webassemblyjs/leb128@1.11.6': + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + + '@webassemblyjs/utf8@1.11.6': + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + + '@webassemblyjs/wasm-edit@1.11.6': + resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} + + '@webassemblyjs/wasm-gen@1.11.6': + resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + + '@webassemblyjs/wasm-opt@1.11.6': + resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + + '@webassemblyjs/wasm-parser@1.11.6': + resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + + '@webassemblyjs/wast-printer@1.11.6': + resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + abbrev@2.0.0: + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + + acorn-import-assertions@1.9.0: + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + peerDependencies: + acorn: ^8 + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@8.3.0: + resolution: {integrity: sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==} + engines: {node: '>=0.4.0'} + + acorn@8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + agent-base@7.1.0: + resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} + engines: {node: '>= 14'} + + ajv-formats@2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + + ajv-keywords@5.1.0: + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + ansi-escapes@5.0.0: + resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} + engines: {node: '>=12'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-hidden@1.2.3: + resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==} + engines: {node: '>=10'} + + aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + + array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + + array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + + array-includes@3.1.7: + resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + engines: {node: '>= 0.4'} + + array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlastindex@1.2.3: + resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + + array.prototype.toreversed@1.1.2: + resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} + + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.2: + resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + + arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + + arrify@2.0.1: + resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} + engines: {node: '>=8'} + + asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + + ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + + async-retry@1.3.3: + resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} + + asynciterator.prototype@1.0.0: + resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + attr-accept@2.2.2: + resolution: {integrity: sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==} + engines: {node: '>=4'} + + autoprefixer@10.4.16: + resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + available-typed-arrays@1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + axe-core@4.7.0: + resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} + engines: {node: '>=4'} + + axios@1.6.2: + resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==} + + axobject-query@3.2.1: + resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} + + babel-loader@9.1.3: + resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} + engines: {node: '>= 14.15.0'} + peerDependencies: + '@babel/core': ^7.12.0 + webpack: '>=5' + + babel-plugin-transform-remove-imports@1.7.0: + resolution: {integrity: sha512-gprmWf6ry5qrnxMyiDaxZpXzZJP6R9FRA+p0AImLIWRmSEGtlKcFprHKeGMZYkII9rJR6Q1hYou+n1fk6rWf2g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + bcp-47-match@2.0.3: + resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} + + better-path-resolve@1.0.0: + resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} + engines: {node: '>=4'} + + bignumber.js@9.1.2: + resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} + + binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + + breakword@1.0.6: + resolution: {integrity: sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==} + + browserslist@4.21.10: + resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + browserslist@4.22.2: + resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + + call-bind@1.0.5: + resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + + camelcase-keys@6.2.2: + resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} + engines: {node: '>=8'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + caniuse-lite@1.0.30001572: + resolution: {integrity: sha512-1Pbh5FLmn5y4+QhNyJE9j3/7dK44dGB83/ZMjv/qJk86TvDbjk0LosiZo0i0WB0Vx607qMX9jYrn1VLHCkN4rw==} + + caniuse-lite@1.0.30001587: + resolution: {integrity: sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA==} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + + chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + + chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + + chrome-trace-event@1.0.3: + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + engines: {node: '>=6.0'} + + ci-info@3.8.0: + resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} + engines: {node: '>=8'} + + class-variance-authority@0.7.0: + resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} + + cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + cli-truncate@3.1.0: + resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + + cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + clsx@2.0.0: + resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} + engines: {node: '>=6'} + + clsx@2.1.0: + resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} + engines: {node: '>=6'} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + + commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + common-path-prefix@3.0.0: + resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} + + commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + + confusing-browser-globals@1.0.11: + resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + cross-spawn@5.1.0: + resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + css-selector-parser@3.0.4: + resolution: {integrity: sha512-pnmS1dbKsz6KA4EW4BznyPL2xxkNDRg62hcD0v8g6DEw2W7hxOln5M953jsp9hmw5Dg57S6o/A8GOn37mbAgcQ==} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + + csv-generate@3.4.3: + resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} + + csv-parse@4.16.3: + resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} + + csv-stringify@5.6.5: + resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} + + csv@5.5.3: + resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} + engines: {node: '>= 0.1.90'} + + damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + + data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize-keys@1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} + engines: {node: '>=0.10.0'} + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decode-named-character-reference@1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + dezalgo@1.0.4: + resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} + + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + direction@2.0.1: + resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} + hasBin: true + + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + + dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} + + duplexify@4.1.2: + resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + + editorconfig@1.0.4: + resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==} + engines: {node: '>=14'} + hasBin: true + + electron-to-chromium@1.4.503: + resolution: {integrity: sha512-LF2IQit4B0VrUHFeQkWhZm97KuJSGF2WJqq1InpY+ECpFRkXd8yTIaTtJxsO0OKDmiBYwWqcrNaXOurn2T2wiA==} + + electron-to-chromium@1.4.616: + resolution: {integrity: sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==} + + emoji-mart@5.6.0: + resolution: {integrity: sha512-eJp3QRe79pjwa+duv+n7+5YsNhRcMl812EcFVwrnRvYKoNPoQb5qxU8DG6Bgwji0akHdp6D4Ln6tYLG58MFSow==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + + enhanced-resolve@5.15.0: + resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} + engines: {node: '>=10.13.0'} + + enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + + ent@2.2.0: + resolution: {integrity: sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-abstract@1.22.3: + resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} + engines: {node: '>= 0.4'} + + es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-iterator-helpers@1.0.15: + resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} + + es-iterator-helpers@1.0.19: + resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.4.1: + resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} + + es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.0.2: + resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + + es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + + escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + eslint-config-airbnb-base@15.0.0: + resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.2 + + eslint-config-airbnb-typescript@18.0.0: + resolution: {integrity: sha512-oc+Lxzgzsu8FQyFVa4QFaVKiitTYiiW3frB9KYW5OWdPrqFc7FzxgB20hP4cHMlr+MBzGcLl3jnCOVOydL9mIg==} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^7.0.0 + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + + eslint-config-airbnb@19.0.4: + resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==} + engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.3 + eslint-plugin-jsx-a11y: ^6.5.1 + eslint-plugin-react: ^7.28.0 + eslint-plugin-react-hooks: ^4.3.0 + + eslint-config-next@14.1.0: + resolution: {integrity: sha512-SBX2ed7DoRFXC6CQSLc/SbLY9Ut6HxNB2wPTcoIWjUMd7aF7O/SIE7111L8FdZ9TXsNV4pulUDnfthpyPtbFUg==} + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + + eslint-config-prettier@9.0.0: + resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-import-resolver-typescript@3.6.1: + resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + + eslint-module-utils@2.8.0: + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-import@2.29.1: + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-jsx-a11y@6.8.0: + resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + + eslint-plugin-playwright@1.6.2: + resolution: {integrity: sha512-mraN4Em3b5jLt01q7qWPyLg0Q5v3KAWfJSlEWwldyUXoa7DSPrBR4k6B6LROLqipsG8ndkwWMdjl1Ffdh15tag==} + engines: {node: '>=16.6.0'} + peerDependencies: + eslint: '>=8.40.0' + eslint-plugin-jest: '>=25' + peerDependenciesMeta: + eslint-plugin-jest: + optional: true + + eslint-plugin-prettier@5.1.3: + resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + + eslint-plugin-react-hooks@4.6.2: + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + + eslint-plugin-react@7.34.2: + resolution: {integrity: sha512-2HCmrU+/JNigDN6tg55cRDKCQWicYAPB38JGSFDQt95jDm8rrvSUo7YPkOIm5l6ts1j1zCvysNcasvfTMQzUOw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + + eslint-plugin-tailwindcss@3.17.3: + resolution: {integrity: sha512-DVMVVUFQ+lPraRSuUk2I41XMnusXT6b3WaQZYlUHduULnERaqe9sNfmpRY1IyxlzmKoQxSbZ8IHRhl9ePo8PeA==} + engines: {node: '>=18.12.0'} + peerDependencies: + tailwindcss: ^3.4.0 + + eslint-plugin-unused-imports@4.0.0: + resolution: {integrity: sha512-mzM+y2B7XYpQryVa1usT+Y/BdNAtAZiXzwpSyDCboFoJN/LZRN67TNvQxKtuTK/Aplya3sLNQforiubzPPaIcQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': '8' + eslint: '9' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + + eslint-rule-composer@0.3.0: + resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} + engines: {node: '>=4.0.0'} + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + extendable-error@0.1.7: + resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} + + external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-xml-parser@4.3.4: + resolution: {integrity: sha512-utnwm92SyozgA3hhH2I8qldf2lBqm6qHOICawRNRFu1qMe3+oqr+GcXjGqTmXTMGE5T4eC03kr/rlh5C1IRdZA==} + hasBin: true + + fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + file-selector@0.6.0: + resolution: {integrity: sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==} + engines: {node: '>= 12'} + + fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + + find-cache-dir@4.0.0: + resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} + engines: {node: '>=14.16'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + find-up@6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + find-yarn-workspace-root2@1.2.16: + resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} + + flat-cache@3.1.0: + resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} + engines: {node: '>=12.0.0'} + + flatted@3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + + follow-redirects@1.15.2: + resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + + foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + + form-data@2.5.1: + resolution: {integrity: sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==} + engines: {node: '>= 0.12'} + + form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + + formidable@3.5.1: + resolution: {integrity: sha512-WJWKelbRHN41m5dumb0/k8TeAx7Id/y3a+Z7QfhxP/htI9Js5zYaEDtG8uMgG0vM0lOlqnmjE99/kfpOYi/0Og==} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + gaxios@6.2.0: + resolution: {integrity: sha512-H6+bHeoEAU5D6XNc6mPKeN5dLZqEDs9Gpk6I+SZBEzK5So58JVrHPmevNi35fRl1J9Y5TaeLW0kYx3pCJ1U2mQ==} + engines: {node: '>=14'} + + gcp-metadata@6.1.0: + resolution: {integrity: sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==} + engines: {node: '>=14'} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.2.2: + resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + + get-symbol-description@1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + + get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.7.2: + resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + + github-slugger@2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + glob@7.1.6: + resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + + glob@7.1.7: + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + + glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@13.21.0: + resolution: {integrity: sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==} + engines: {node: '>=8'} + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + google-auth-library@9.6.3: + resolution: {integrity: sha512-4CacM29MLC2eT9Cey5GDVK4Q8t+MMp8+OEdOaqD9MG6b0dOyLORaaeJMPQ7EESVgm/+z5EKYyFLxgzBJlJgyHQ==} + engines: {node: '>=14'} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + grapheme-splitter@1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + gtoken@7.1.0: + resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} + engines: {node: '>=14.0.0'} + + hard-rejection@2.1.0: + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + engines: {node: '>=6'} + + has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.1: + resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hast-util-from-html@2.0.1: + resolution: {integrity: sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==} + + hast-util-from-parse5@7.1.2: + resolution: {integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==} + + hast-util-from-parse5@8.0.1: + resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} + + hast-util-has-property@3.0.0: + resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} + + hast-util-heading-rank@3.0.0: + resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} + + hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + + hast-util-parse-selector@3.1.1: + resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} + + hast-util-parse-selector@4.0.0: + resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} + + hast-util-raw@9.0.1: + resolution: {integrity: sha512-5m1gmba658Q+lO5uqL5YNGQWeh1MYWZbZmWrM5lncdcuiXuo5E2HT/CIOp0rLF8ksfSwiCVJ3twlgVRyTGThGA==} + + hast-util-sanitize@5.0.0: + resolution: {integrity: sha512-L0g/qhOA82zG2hA3O29hnlv4mLU7YVVT1if5JZSr2tKO1ywkQbuMDcN05btgX0HtpqDXQniAM0ar0K+Lv4MDBQ==} + + hast-util-select@6.0.2: + resolution: {integrity: sha512-hT/SD/d/Meu+iobvgkffo1QecV8WeKWxwsNMzcTJsKw1cKTQKSR/7ArJeURLNJF9HDjp9nVoORyNNJxrvBye8Q==} + + hast-util-to-html@9.0.0: + resolution: {integrity: sha512-IVGhNgg7vANuUA2XKrT6sOIIPgaYZnmLx3l/CCOAK0PtgfoHrZwX7jCSYyFxHTrGmC6S9q8aQQekjp4JPZF+cw==} + + hast-util-to-jsx-runtime@2.3.0: + resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} + + hast-util-to-parse5@8.0.0: + resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} + + hast-util-to-string@2.0.0: + resolution: {integrity: sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==} + + hast-util-to-string@3.0.0: + resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + hastscript@7.2.0: + resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} + + hastscript@8.0.0: + resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} + + hexoid@1.0.0: + resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==} + engines: {node: '>=8'} + + hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + html-to-text@9.0.5: + resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} + engines: {node: '>=14'} + + html-url-attributes@3.0.0: + resolution: {integrity: sha512-/sXbVCWayk6GDVg3ctOX6nxaVj7So40FcFAnWlWGNAB1LpYKcV5Cd10APjPjW80O7zYW2MsjBV4zZ7IZO5fVow==} + + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + + htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + + http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + https-proxy-agent@7.0.2: + resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} + engines: {node: '>= 14'} + + human-id@1.0.2: + resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + husky@9.0.11: + resolution: {integrity: sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==} + engines: {node: '>=18'} + hasBin: true + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + ignore@5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + + ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + + immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + inline-style-parser@0.2.2: + resolution: {integrity: sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==} + + internal-slot@1.0.6: + resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} + engines: {node: '>= 0.4'} + + internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + + invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + + is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + + is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + + is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + + is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + + is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + + is-buffer@2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + + is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + + is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + + is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + + is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + + is-map@2.0.2: + resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + + is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + + is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-reference@1.2.1: + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + + is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + + is-set@2.0.2: + resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + + is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + + is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + + is-subdir@1.2.0: + resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} + engines: {node: '>=4'} + + is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + + is-weakmap@2.0.1: + resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + + is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + + is-weakset@2.0.2: + resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + + jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + jiti@1.19.3: + resolution: {integrity: sha512-5eEbBDQT/jF1xg6l36P+mWGGoH9Spuy0PCdSr2dtWRDGC6ph/w9ZCL4lmESW8f8F7MwT3XKescfP0wnZWAKL9w==} + hasBin: true + + jose@4.15.5: + resolution: {integrity: sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==} + + jotai@2.6.4: + resolution: {integrity: sha512-RniwQPX4893YlNR1muOtyUGHYaTD1fhEN4qnOuZJSrDHj6xdEMrqlRSN/hCm2fshwk78ruecB/P2l+NCVWe6TQ==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=17.0.0' + react: '>=17.0.0' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + + js-beautify@1.14.11: + resolution: {integrity: sha512-rPogWqAfoYh1Ryqqh2agUpVfbxAhbjuN1SmU86dskQUKouRiggUTCO4+2ym9UPXllc2WAp0J+T5qxn7Um3lCdw==} + engines: {node: '>=14'} + hasBin: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + json-bigint@1.0.0: + resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + + jwa@2.0.0: + resolution: {integrity: sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==} + + jws@4.0.0: + resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} + + keyv@4.5.3: + resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + + language-subtag-registry@0.3.22: + resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} + + language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} + + leac@0.6.0: + resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lie@3.1.1: + resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + lint-staged@15.0.2: + resolution: {integrity: sha512-vnEy7pFTHyVuDmCAIFKR5QDO8XLVlPFQQyujQ/STOxe40ICWqJ6knS2wSJ/ffX/Lw0rz83luRDh+ET7toN+rOw==} + engines: {node: '>=18.12.0'} + hasBin: true + + listr2@7.0.2: + resolution: {integrity: sha512-rJysbR9GKIalhTbVL2tYbF2hVyDnrf7pFUZBwjPaMIdadYHmeT+EVi/Bu3qd7ETQPahTotg2WRCatXwRBW554g==} + engines: {node: '>=16.0.0'} + + load-yaml-file@0.2.0: + resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} + engines: {node: '>=6'} + + loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + + localforage@1.10.0: + resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + + log-update@5.0.1: + resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lru-cache@10.2.0: + resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} + engines: {node: 14 || >=16.14} + + lru-cache@4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + lucide-react@0.400.0: + resolution: {integrity: sha512-rpp7pFHh3Xd93KHixNgB0SqThMHpYNzsGUu69UaQbSZ75Q/J3m5t6EhKyMT3m4w2WOxmJ2mY0tD3vebnXqQryQ==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + magic-string@0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + map-obj@1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + + map-obj@4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} + + markdown-table@3.0.3: + resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} + + mdast-util-find-and-replace@3.0.1: + resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} + + mdast-util-from-markdown@2.0.0: + resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} + + mdast-util-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} + + mdast-util-gfm-footnote@2.0.0: + resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} + + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + + mdast-util-gfm@3.0.0: + resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} + + mdast-util-mdx-expression@2.0.0: + resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} + + mdast-util-mdx-jsx@3.0.0: + resolution: {integrity: sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==} + + mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + + mdast-util-phrasing@4.0.0: + resolution: {integrity: sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==} + + mdast-util-to-hast@13.0.2: + resolution: {integrity: sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==} + + mdast-util-to-markdown@2.1.0: + resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + + meow@6.1.1: + resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} + engines: {node: '>=8'} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromark-core-commonmark@2.0.0: + resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==} + + micromark-extension-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} + + micromark-extension-gfm-footnote@2.0.0: + resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==} + + micromark-extension-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==} + + micromark-extension-gfm-table@2.0.0: + resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==} + + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + + micromark-extension-gfm-task-list-item@2.0.1: + resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==} + + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + + micromark-factory-destination@2.0.0: + resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} + + micromark-factory-label@2.0.0: + resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} + + micromark-factory-space@2.0.0: + resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} + + micromark-factory-title@2.0.0: + resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} + + micromark-factory-whitespace@2.0.0: + resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} + + micromark-util-character@2.0.1: + resolution: {integrity: sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==} + + micromark-util-chunked@2.0.0: + resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} + + micromark-util-classify-character@2.0.0: + resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + + micromark-util-combine-extensions@2.0.0: + resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} + + micromark-util-decode-numeric-character-reference@2.0.1: + resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} + + micromark-util-decode-string@2.0.0: + resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} + + micromark-util-encode@2.0.0: + resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} + + micromark-util-html-tag-name@2.0.0: + resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} + + micromark-util-normalize-identifier@2.0.0: + resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} + + micromark-util-resolve-all@2.0.0: + resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} + + micromark-util-sanitize-uri@2.0.0: + resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} + + micromark-util-subtokenize@2.0.0: + resolution: {integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==} + + micromark-util-symbol@2.0.0: + resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} + + micromark-util-types@2.0.0: + resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} + + micromark@4.0.0: + resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} + + micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + + minimatch@9.0.1: + resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} + engines: {node: '>=16 || 14 >=14.17'} + + minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + + minimatch@9.0.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist-options@4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + + mixme@0.5.9: + resolution: {integrity: sha512-VC5fg6ySUscaWUpI4gxCBTQMH2RdUpNrk+MsbpCYtIvf9SBJdiUey4qE7BXviJsJR4nDQxCZ+3yaYNW3guz/Pw==} + engines: {node: '>= 8.0.0'} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + next-auth@4.24.7: + resolution: {integrity: sha512-iChjE8ov/1K/z98gdKbn2Jw+2vLgJtVV39X+rCP5SGnVQuco7QOr19FRNGMIrD8d3LYhHWV9j9sKLzq1aDWWQQ==} + peerDependencies: + next: ^12.2.5 || ^13 || ^14 + nodemailer: ^6.6.5 + react: ^17.0.2 || ^18 + react-dom: ^17.0.2 || ^18 + peerDependenciesMeta: + nodemailer: + optional: true + + next-remove-imports@1.0.12: + resolution: {integrity: sha512-3tdL6VuSykJ/mcUwxfjQ+Fd4OpEmrwWVHtLZ/fhNcSaToWCutUp7nrfIww7/4CURe9I7BDCQE9AWl4fkY3YZOQ==} + + next-safe-action@7.0.2: + resolution: {integrity: sha512-Zjxo5HhOV0vUxKP2zf4UE5d603oCwdr9CNadc4aImJnYrcpfed3S/mUf2gfXEHjTjRyPoTQ+s4oLMy5rATGuPQ==} + engines: {node: '>=18.17'} + peerDependencies: + next: '>= 14.0.0' + react: '>= 18.2.0' + react-dom: '>= 18.2.0' + zod: '>= 3.0.0' + peerDependenciesMeta: + zod: + optional: true + + next-themes@0.3.0: + resolution: {integrity: sha512-/QHIrsYpd6Kfk7xakK4svpDI5mmXP0gfvCoJdGpZQ2TOrQZmsW0QxjaiLn8wbIKjtm4BTSqLoix4lxYYOnLJ/w==} + peerDependencies: + react: ^16.8 || ^17 || ^18 + react-dom: ^16.8 || ^17 || ^18 + + next@14.2.4: + resolution: {integrity: sha512-R8/V7vugY+822rsQGQCjoLhMuC9oFj9SOi4Cl4b2wjDrseD0LRZ10W7R6Czo4w9ZznVSshKjuIomsRjvm9EKJQ==} + engines: {node: '>=18.17.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + sass: + optional: true + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-releases@2.0.13: + resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + + node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + + nodemailer@6.9.14: + resolution: {integrity: sha512-Dobp/ebDKBvz91sbtRKhcznLThrKxKt97GI2FAlAyy+fk19j73Uz3sBXolVtmcXjaorivqsbbbjDY+Jkt4/bQA==} + engines: {node: '>=6.0.0'} + + nopt@7.2.0: + resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + not@0.1.0: + resolution: {integrity: sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==} + + npm-run-path@5.1.0: + resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + oauth@0.9.15: + resolution: {integrity: sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-hash@2.2.0: + resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} + engines: {node: '>= 6'} + + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + + object.entries@1.1.7: + resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} + engines: {node: '>= 0.4'} + + object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.7: + resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.groupby@1.0.1: + resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} + + object.hasown@1.1.4: + resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} + engines: {node: '>= 0.4'} + + object.values@1.1.7: + resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + engines: {node: '>= 0.4'} + + object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} + engines: {node: '>= 0.4'} + + oidc-token-hash@5.0.3: + resolution: {integrity: sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==} + engines: {node: ^10.13.0 || >=12.0.0} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + openid-client@5.6.5: + resolution: {integrity: sha512-5P4qO9nGJzB5PI0LFlhj4Dzg3m4odt0qsJTfyEtZyOlkgpILwEioOhVVJOrS1iVH494S4Ee5OCjjg6Bf5WOj3w==} + + optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + outdent@0.5.0: + resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} + + p-filter@2.1.0: + resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} + engines: {node: '>=8'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-map@2.1.0: + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + engines: {node: '>=6'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + papaparse@5.4.1: + resolution: {integrity: sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-entities@4.0.1: + resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-numeric-range@1.3.0: + resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} + + parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + + parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + + parseley@0.12.1: + resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + peberminta@0.9.0: + resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} + + picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pkg-dir@7.0.0: + resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} + engines: {node: '>=14.16'} + + playwright-core@1.45.0: + resolution: {integrity: sha512-lZmHlFQ0VYSpAs43dRq1/nJ9G/6SiTI7VPqidld9TDefL9tX87bTKExWZZUF5PeRyqtXqd8fQi2qmfIedkwsNQ==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.45.0: + resolution: {integrity: sha512-4z3ac3plDfYzGB6r0Q3LF8POPR20Z8D0aXcxbJvmfMgSSq1hkcgvFRXJk9rUq5H/MJ0Ktal869hhOdI/zUTeLA==} + engines: {node: '>=18'} + hasBin: true + + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.0.1: + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-load-config@4.0.1: + resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-nested@6.0.1: + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-selector-parser@6.0.13: + resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.28: + resolution: {integrity: sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==} + engines: {node: ^10 || ^12 || >=14} + + postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + + preact-render-to-string@5.2.3: + resolution: {integrity: sha512-aPDxUn5o3GhWdtJtW0svRC2SS/l8D9MAgo2+AWml+BhDImb27ALf04Q2d+AHqUUOc6RdSXFIBVa2gxzgMKgtZA==} + peerDependencies: + preact: '>=10' + + preact@10.11.3: + resolution: {integrity: sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==} + + preferred-pm@3.0.3: + resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} + engines: {node: '>=10'} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + + prettier-plugin-tailwindcss@0.6.2: + resolution: {integrity: sha512-eFefm4cg+1c2B57+H274Qm//CTWBdtQN9ansl0YTP/8TC8x3bugCTQSS/e4FC5Ctl9djhTzsbcMrZ7x2/abIow==} + engines: {node: '>=14.21.3'} + peerDependencies: + '@ianvs/prettier-plugin-sort-imports': '*' + '@prettier/plugin-pug': '*' + '@shopify/prettier-plugin-liquid': '*' + '@trivago/prettier-plugin-sort-imports': '*' + '@zackad/prettier-plugin-twig-melody': '*' + prettier: ^3.0 + prettier-plugin-astro: '*' + prettier-plugin-css-order: '*' + prettier-plugin-import-sort: '*' + prettier-plugin-jsdoc: '*' + prettier-plugin-marko: '*' + prettier-plugin-organize-attributes: '*' + prettier-plugin-organize-imports: '*' + prettier-plugin-sort-imports: '*' + prettier-plugin-style-order: '*' + prettier-plugin-svelte: '*' + peerDependenciesMeta: + '@ianvs/prettier-plugin-sort-imports': + optional: true + '@prettier/plugin-pug': + optional: true + '@shopify/prettier-plugin-liquid': + optional: true + '@trivago/prettier-plugin-sort-imports': + optional: true + '@zackad/prettier-plugin-twig-melody': + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-css-order: + optional: true + prettier-plugin-import-sort: + optional: true + prettier-plugin-jsdoc: + optional: true + prettier-plugin-marko: + optional: true + prettier-plugin-organize-attributes: + optional: true + prettier-plugin-organize-imports: + optional: true + prettier-plugin-sort-imports: + optional: true + prettier-plugin-style-order: + optional: true + prettier-plugin-svelte: + optional: true + + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} + engines: {node: '>=14'} + hasBin: true + + pretty-format@3.8.0: + resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==} + + prisma@5.16.1: + resolution: {integrity: sha512-Z1Uqodk44diztImxALgJJfNl2Uisl9xDRvqybMKEBYJLNKNhDfAHf+ZIJbZyYiBhLMbKU9cYGdDVG5IIXEnL2Q==} + engines: {node: '>=16.13'} + hasBin: true + + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + property-information@6.2.0: + resolution: {integrity: sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==} + + proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + pseudomap@1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + + punycode@2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} + + qs@6.11.2: + resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} + engines: {node: '>=0.6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + quick-lru@4.0.1: + resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} + engines: {node: '>=8'} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + react-dom@18.2.0: + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 + + react-dropzone@14.2.3: + resolution: {integrity: sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==} + engines: {node: '>= 10.13'} + peerDependencies: + react: '>= 16.8 || 18.0.0' + + react-error-boundary@4.0.12: + resolution: {integrity: sha512-kJdxdEYlb7CPC1A0SeUY38cHpjuu6UkvzKiAmqmOFL21VRfMhOcWxTCBgLVCO0VEMh9JhFNcVaXlV4/BTpiwOA==} + peerDependencies: + react: '>=16.13.1' + + react-hook-form@7.45.4: + resolution: {integrity: sha512-HGDV1JOOBPZj10LB3+OZgfDBTn+IeEsNOKiq/cxbQAIbKaiJUe/KV8DBUzsx0Gx/7IG/orWqRRm736JwOfUSWQ==} + engines: {node: '>=12.22.0'} + peerDependencies: + react: ^16.8.0 || ^17 || ^18 + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-markdown@9.0.1: + resolution: {integrity: sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==} + peerDependencies: + '@types/react': '>=18' + react: '>=18' + + react-paginate@8.2.0: + resolution: {integrity: sha512-sJCz1PW+9PNIjUSn919nlcRVuleN2YPoFBOvL+6TPgrH/3lwphqiSOgdrLafLdyLDxsgK+oSgviqacF4hxsDIw==} + peerDependencies: + react: ^16 || ^17 || ^18 + + react-papaparse@4.4.0: + resolution: {integrity: sha512-xTEwHZYJ+1dh9mQDQjjwJXmWyX20DdZ52u+ddw75V+Xm5qsjXSvWmC7c8K82vRwMjKAOH2S9uFyGpHEyEztkUQ==} + engines: {node: '>=8', npm: '>=5'} + + react-remove-scroll-bar@2.3.4: + resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.5.5: + resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.5.7: + resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-style-singleton@2.2.1: + resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + + read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + + read-yaml-file@1.1.0: + resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} + engines: {node: '>=6'} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + + reflect.getprototypeof@1.0.4: + resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} + engines: {node: '>= 0.4'} + + refractor@4.8.1: + resolution: {integrity: sha512-/fk5sI0iTgFYlmVGYVew90AoYnNMP6pooClx/XKqyeeCQXrL0Kvgn8V0VEht5ccdljbzzF1i3Q213gcntkRExg==} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regexp.prototype.flags@1.5.1: + resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + engines: {node: '>= 0.4'} + + regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} + + rehype-attr@3.0.3: + resolution: {integrity: sha512-Up50Xfra8tyxnkJdCzLBIBtxOcB2M1xdeKe1324U06RAvSjYm7ULSeoM+b/nYPQPVd7jsXJ9+39IG1WAJPXONw==} + engines: {node: '>=16'} + + rehype-autolink-headings@7.1.0: + resolution: {integrity: sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw==} + + rehype-ignore@2.0.2: + resolution: {integrity: sha512-BpAT/3lU9DMJ2siYVD/dSR0A/zQgD6Fb+fxkJd4j+wDVy6TYbYpK+FZqu8eM9EuNKGvi4BJR7XTZ/+zF02Dq8w==} + engines: {node: '>=16'} + + rehype-parse@8.0.5: + resolution: {integrity: sha512-Ds3RglaY/+clEX2U2mHflt7NlMA72KspZ0JLUJgBBLpRddBcEw3H8uYZQliQriku22NZpYMfjDdSgHcjxue24A==} + + rehype-parse@9.0.0: + resolution: {integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==} + + rehype-prism-plus@1.6.3: + resolution: {integrity: sha512-F6tn376zimnvy+xW0bSnryul+rvVL7NhDIkavc9kAuzDx5zIZW04A6jdXPkcFBhojcqZB8b6pHt6CLqiUx+Tbw==} + + rehype-prism-plus@2.0.0: + resolution: {integrity: sha512-FeM/9V2N7EvDZVdR2dqhAzlw5YI49m9Tgn7ZrYJeYHIahM6gcXpH0K1y2gNnKanZCydOMluJvX2cB9z3lhY8XQ==} + + rehype-raw@7.0.0: + resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} + + rehype-rewrite@4.0.2: + resolution: {integrity: sha512-rjLJ3z6fIV11phwCqHp/KRo8xuUCO8o9bFJCNw5o6O2wlLk6g8r323aRswdGBQwfXPFYeSuZdAjp4tzo6RGqEg==} + engines: {node: '>=16.0.0'} + + rehype-sanitize@6.0.0: + resolution: {integrity: sha512-CsnhKNsyI8Tub6L4sm5ZFsme4puGfc6pYylvXo1AeqaGbjOYyzNv3qZPwvs0oMJ39eryyeOdmxwUIo94IpEhqg==} + + rehype-slug@6.0.0: + resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} + + rehype-stringify@10.0.0: + resolution: {integrity: sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==} + + rehype@13.0.1: + resolution: {integrity: sha512-AcSLS2mItY+0fYu9xKxOu1LhUZeBZZBx8//5HKzF+0XP+eP8+6a5MXn2+DW2kfXR6Dtp1FEXMVrjyKAcvcU8vg==} + + remark-gfm@4.0.0: + resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} + + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + + remark-rehype@11.0.0: + resolution: {integrity: sha512-vx8x2MDMcxuE4lBmQ46zYUDfcFMmvg80WYX+UNLeG6ixjdCCLcw1lrgAukwBTuOFsS78eoAedHGn9sNM0w7TPw==} + + remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + + resend@3.2.0: + resolution: {integrity: sha512-lDHhexiFYPoLXy7zRlJ8D5eKxoXy6Tr9/elN3+Vv7PkUoYuSSD1fpiIfa/JYXEWyiyN2UczkCTLpkT8dDPJ4Pg==} + engines: {node: '>=18'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve@1.22.4: + resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} + hasBin: true + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + + restore-cursor@4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + retry-request@7.0.2: + resolution: {integrity: sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==} + engines: {node: '>=14'} + + retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.3.0: + resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + + rollup@2.78.0: + resolution: {integrity: sha512-4+YfbQC9QEVvKTanHhIAFVUFSRsezvQF8vFOJwtGfb9Bb+r014S+qryr9PSmw8x6sMnPkmFBGAvIFVQxvJxjtg==} + engines: {node: '>=10.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-array-concat@1.0.1: + resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} + engines: {node: '>=0.4'} + + safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-regex-test@1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + + safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + scheduler@0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + + schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + + schema-utils@4.2.0: + resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} + engines: {node: '>= 12.13.0'} + + selderee@0.11.0: + resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + + semver@7.6.2: + resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} + engines: {node: '>=10'} + hasBin: true + + serialize-javascript@6.0.1: + resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + set-function-length@1.1.1: + resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} + engines: {node: '>= 0.4'} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.1: + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + + slugify@1.6.6: + resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} + engines: {node: '>=8.0.0'} + + smartwrap@2.0.2: + resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} + engines: {node: '>=6'} + hasBin: true + + sonner@1.4.0: + resolution: {integrity: sha512-nvkTsIuOmi9e5Wz5If8ldasJjZNVfwiXYijBi2dbijvTQnQppvMcXTFNxL/NUFWlI2yJ1JX7TREDsg+gYm9WyA==} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + + source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + spawndamnit@2.0.0: + resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.13: + resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + stacktrace-parser@0.1.10: + resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} + engines: {node: '>=6'} + + stream-events@1.0.5: + resolution: {integrity: sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==} + + stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + + stream-transform@2.1.3: + resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} + + streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string.prototype.matchall@4.0.11: + resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} + engines: {node: '>= 0.4'} + + string.prototype.trim@1.2.8: + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + engines: {node: '>= 0.4'} + + string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.7: + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + + string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + + string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + stringify-entities@4.0.3: + resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + stripe@16.1.0: + resolution: {integrity: sha512-syeEEd112om/waJ5gOQ+SaYi+setuidQ4ZIPiQREF4yJeegXhn2HKy6C0JYm7uhVQKfMAvuZ22dIRsnoDv7AMw==} + engines: {node: '>=12.*'} + + strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + + stubs@3.0.0: + resolution: {integrity: sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==} + + style-to-object@1.0.5: + resolution: {integrity: sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==} + + styled-jsx@5.1.1: + resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + + sucrase@3.34.0: + resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} + engines: {node: '>=8'} + hasBin: true + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + synckit@0.8.8: + resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} + engines: {node: ^14.18.0 || >=16.0.0} + + tailwind-merge@2.2.0: + resolution: {integrity: sha512-SqqhhaL0T06SW59+JVNfAqKdqLs0497esifRrZ7jOaefP3o64fdFNDMrAQWZFMxTLJPiHVjRLUywT8uFz1xNWQ==} + + tailwindcss-animate@1.0.6: + resolution: {integrity: sha512-4WigSGMvbl3gCCact62ZvOngA+PRqhAn7si3TQ3/ZuPuQZcIEtVap+ENSXbzWhpojKB8CpvnIsrwBu8/RnHtuw==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + + tailwindcss@3.4.1: + resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==} + engines: {node: '>=14.0.0'} + hasBin: true + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + teeny-request@9.0.0: + resolution: {integrity: sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==} + engines: {node: '>=14'} + + term-size@2.2.1: + resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} + engines: {node: '>=8'} + + terser-webpack-plugin@5.3.10: + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + + terser@5.26.0: + resolution: {integrity: sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ==} + engines: {node: '>=10'} + hasBin: true + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + trim-newlines@3.0.1: + resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} + engines: {node: '>=8'} + + trough@2.1.0: + resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} + + ts-api-utils@1.0.3: + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' + + ts-api-utils@1.3.0: + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + ts-node@10.9.1: + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + + tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + + tty-table@4.2.1: + resolution: {integrity: sha512-xz0uKo+KakCQ+Dxj1D/tKn2FSyreSYWzdkL/BYhgN6oMW808g8QRMuh1atAV9fjTPbWBjfbkKQpI/5rEcnAc7g==} + engines: {node: '>=8.0.0'} + hasBin: true + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@0.13.1: + resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} + engines: {node: '>=10'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + + type-fest@0.7.1: + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} + + type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + + type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + + typed-array-buffer@1.0.0: + resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + engines: {node: '>= 0.4'} + + typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.0: + resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.0: + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + + typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} + + typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} + hasBin: true + + unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + unified@10.1.2: + resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} + + unified@11.0.4: + resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} + + unist-util-filter@4.0.1: + resolution: {integrity: sha512-RynicUM/vbOSTSiUK+BnaK9XMfmQUh6gyi7L6taNgc7FIf84GukXVV3ucGzEN/PhUUkdP5hb1MmXc+3cvPUm5Q==} + + unist-util-filter@5.0.1: + resolution: {integrity: sha512-pHx7D4Zt6+TsfwylH9+lYhBhzyhEnCXs/lbq/Hstxno5z4gVdyc2WEW0asfjGKPyG4pEKrnBv5hdkO6+aRnQJw==} + + unist-util-is@5.2.1: + resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} + + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-remove-position@5.0.0: + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} + + unist-util-stringify-position@3.0.3: + resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@5.1.3: + resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@4.1.2: + resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + update-browserslist-db@1.0.11: + resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + update-browserslist-db@1.0.13: + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + use-callback-ref@1.3.0: + resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-debounce@10.0.0: + resolution: {integrity: sha512-XRjvlvCB46bah9IBXVnq/ACP2lxqXyZj0D9hj4K5OzNroMDpTEBg8Anuh1/UfRTRs7pLhQ+RiNxxwZu9+MVl1A==} + engines: {node: '>= 16.0.0'} + peerDependencies: + react: '>=16.8.0' + + use-sidecar@1.1.2: + resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + vaul@0.9.0: + resolution: {integrity: sha512-bZSySGbAHiTXmZychprnX/dE0EsSige88xtyyL3/MCRbrFotRPQZo7UdydGXZWw+CKbNOw5Ow8gwAo93/nB/Cg==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + + vfile-location@4.1.0: + resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==} + + vfile-location@5.0.2: + resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} + + vfile-message@3.1.4: + resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} + + vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + + vfile@5.3.7: + resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} + + vfile@6.0.1: + resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} + + watchpack@2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + web-namespaces@2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + + webpack@5.89.0: + resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + + which-builtin-type@1.1.3: + resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + engines: {node: '>= 0.4'} + + which-collection@1.0.1: + resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} + + which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + + which-pm@2.0.0: + resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} + engines: {node: '>=8.15'} + + which-typed-array@1.1.13: + resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml@2.3.3: + resolution: {integrity: sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==} + engines: {node: '>= 14'} + + yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + + zod@3.22.4: + resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@aashutoshrathi/word-wrap@1.2.6': {} + + '@alloc/quick-lru@5.2.0': {} + + '@ampproject/remapping@2.2.1': + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + + '@babel/code-frame@7.22.13': + dependencies: + '@babel/highlight': 7.22.13 + chalk: 2.4.2 + + '@babel/compat-data@7.22.9': {} + + '@babel/core@7.22.17': + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.22.15 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-module-transforms': 7.22.17(@babel/core@7.22.17) + '@babel/helpers': 7.22.15 + '@babel/parser': 7.22.16 + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.17 + '@babel/types': 7.22.17 + convert-source-map: 1.9.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.22.15': + dependencies: + '@babel/types': 7.22.17 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + jsesc: 2.5.2 + + '@babel/helper-compilation-targets@7.22.15': + dependencies: + '@babel/compat-data': 7.22.9 + '@babel/helper-validator-option': 7.22.15 + browserslist: 4.21.10 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-environment-visitor@7.22.5': {} + + '@babel/helper-function-name@7.22.5': + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.22.17 + + '@babel/helper-hoist-variables@7.22.5': + dependencies: + '@babel/types': 7.22.17 + + '@babel/helper-module-imports@7.22.15': + dependencies: + '@babel/types': 7.22.17 + + '@babel/helper-module-transforms@7.22.17(@babel/core@7.22.17)': + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.15 + + '@babel/helper-simple-access@7.22.5': + dependencies: + '@babel/types': 7.22.17 + + '@babel/helper-split-export-declaration@7.22.6': + dependencies: + '@babel/types': 7.22.17 + + '@babel/helper-string-parser@7.22.5': {} + + '@babel/helper-validator-identifier@7.22.15': {} + + '@babel/helper-validator-option@7.22.15': {} + + '@babel/helpers@7.22.15': + dependencies: + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.17 + '@babel/types': 7.22.17 + transitivePeerDependencies: + - supports-color + + '@babel/highlight@7.22.13': + dependencies: + '@babel/helper-validator-identifier': 7.22.15 + chalk: 2.4.2 + js-tokens: 4.0.0 + + '@babel/parser@7.22.16': + dependencies: + '@babel/types': 7.22.17 + + '@babel/runtime@7.22.11': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/runtime@7.23.6': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/runtime@7.23.7': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/template@7.22.15': + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/parser': 7.22.16 + '@babel/types': 7.22.17 + + '@babel/traverse@7.22.17': + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.22.15 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.22.16 + '@babel/types': 7.22.17 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.22.17': + dependencies: + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.15 + to-fast-properties: 2.0.0 + + '@changesets/apply-release-plan@7.0.0': + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/config': 3.0.0 + '@changesets/get-version-range-type': 0.4.0 + '@changesets/git': 3.0.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + detect-indent: 6.1.0 + fs-extra: 7.0.1 + lodash.startcase: 4.4.0 + outdent: 0.5.0 + prettier: 2.8.8 + resolve-from: 5.0.0 + semver: 7.5.4 + + '@changesets/assemble-release-plan@6.0.0': + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.0.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + semver: 7.5.4 + + '@changesets/changelog-git@0.2.0': + dependencies: + '@changesets/types': 6.0.0 + + '@changesets/cli@2.27.1': + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/apply-release-plan': 7.0.0 + '@changesets/assemble-release-plan': 6.0.0 + '@changesets/changelog-git': 0.2.0 + '@changesets/config': 3.0.0 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.0.0 + '@changesets/get-release-plan': 4.0.0 + '@changesets/git': 3.0.0 + '@changesets/logger': 0.1.0 + '@changesets/pre': 2.0.0 + '@changesets/read': 0.6.0 + '@changesets/types': 6.0.0 + '@changesets/write': 0.3.0 + '@manypkg/get-packages': 1.1.3 + '@types/semver': 7.5.1 + ansi-colors: 4.1.3 + chalk: 2.4.2 + ci-info: 3.8.0 + enquirer: 2.4.1 + external-editor: 3.1.0 + fs-extra: 7.0.1 + human-id: 1.0.2 + meow: 6.1.1 + outdent: 0.5.0 + p-limit: 2.3.0 + preferred-pm: 3.0.3 + resolve-from: 5.0.0 + semver: 7.5.4 + spawndamnit: 2.0.0 + term-size: 2.2.1 + tty-table: 4.2.1 + + '@changesets/config@3.0.0': + dependencies: + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.0.0 + '@changesets/logger': 0.1.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + micromatch: 4.0.5 + + '@changesets/errors@0.2.0': + dependencies: + extendable-error: 0.1.7 + + '@changesets/get-dependents-graph@2.0.0': + dependencies: + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + chalk: 2.4.2 + fs-extra: 7.0.1 + semver: 7.5.4 + + '@changesets/get-release-plan@4.0.0': + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/assemble-release-plan': 6.0.0 + '@changesets/config': 3.0.0 + '@changesets/pre': 2.0.0 + '@changesets/read': 0.6.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + + '@changesets/get-version-range-type@0.4.0': {} + + '@changesets/git@3.0.0': + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/errors': 0.2.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + is-subdir: 1.2.0 + micromatch: 4.0.5 + spawndamnit: 2.0.0 + + '@changesets/logger@0.1.0': + dependencies: + chalk: 2.4.2 + + '@changesets/parse@0.4.0': + dependencies: + '@changesets/types': 6.0.0 + js-yaml: 3.14.1 + + '@changesets/pre@2.0.0': + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/errors': 0.2.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + + '@changesets/read@0.6.0': + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/git': 3.0.0 + '@changesets/logger': 0.1.0 + '@changesets/parse': 0.4.0 + '@changesets/types': 6.0.0 + chalk: 2.4.2 + fs-extra: 7.0.1 + p-filter: 2.1.0 + + '@changesets/types@4.1.0': {} + + '@changesets/types@6.0.0': {} + + '@changesets/write@0.3.0': + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/types': 6.0.0 + fs-extra: 7.0.1 + human-id: 1.0.2 + prettier: 2.8.8 + + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + + '@emoji-mart/data@1.2.1': {} + + '@emoji-mart/react@1.1.1(emoji-mart@5.6.0)(react@18.2.0)': + dependencies: + emoji-mart: 5.6.0 + react: 18.2.0 + + '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': + dependencies: + eslint: 8.57.0 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.10.1': {} + + '@eslint-community/regexpp@4.8.0': {} + + '@eslint/eslintrc@2.1.4': + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.21.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@8.57.0': {} + + '@floating-ui/core@1.4.1': + dependencies: + '@floating-ui/utils': 0.1.1 + + '@floating-ui/dom@1.5.1': + dependencies: + '@floating-ui/core': 1.4.1 + '@floating-ui/utils': 0.1.1 + + '@floating-ui/react-dom@2.0.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@floating-ui/dom': 1.5.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@floating-ui/utils@0.1.1': {} + + '@google-cloud/paginator@5.0.0': + dependencies: + arrify: 2.0.1 + extend: 3.0.2 + + '@google-cloud/projectify@4.0.0': {} + + '@google-cloud/promisify@4.0.0': {} + + '@google-cloud/storage@7.7.0': + dependencies: + '@google-cloud/paginator': 5.0.0 + '@google-cloud/projectify': 4.0.0 + '@google-cloud/promisify': 4.0.0 + abort-controller: 3.0.0 + async-retry: 1.3.3 + compressible: 2.0.18 + duplexify: 4.1.2 + ent: 2.2.0 + fast-xml-parser: 4.3.4 + gaxios: 6.2.0 + google-auth-library: 9.6.3 + mime: 3.0.0 + mime-types: 2.1.35 + p-limit: 3.1.0 + retry-request: 7.0.2 + teeny-request: 9.0.0 + uuid: 8.3.2 + transitivePeerDependencies: + - encoding + - supports-color + + '@hookform/resolvers@3.3.4(react-hook-form@7.45.4(react@18.2.0))': + dependencies: + react-hook-form: 7.45.4(react@18.2.0) + + '@humanwhocodes/config-array@0.11.14': + dependencies: + '@humanwhocodes/object-schema': 2.0.2 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/object-schema@2.0.2': {} + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@jridgewell/gen-mapping@0.3.3': + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.20 + + '@jridgewell/resolve-uri@3.1.1': {} + + '@jridgewell/set-array@1.1.2': {} + + '@jridgewell/source-map@0.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + + '@jridgewell/sourcemap-codec@1.4.15': {} + + '@jridgewell/trace-mapping@0.3.20': + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + + '@manypkg/find-root@1.1.0': + dependencies: + '@babel/runtime': 7.23.7 + '@types/node': 12.20.55 + find-up: 4.1.0 + fs-extra: 8.1.0 + + '@manypkg/get-packages@1.1.3': + dependencies: + '@babel/runtime': 7.23.7 + '@changesets/types': 4.1.0 + '@manypkg/find-root': 1.1.0 + fs-extra: 8.1.0 + globby: 11.1.0 + read-yaml-file: 1.1.0 + + '@next-auth/prisma-adapter@1.0.7(@prisma/client@5.16.1(prisma@5.16.1))(next-auth@4.24.7(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))': + dependencies: + '@prisma/client': 5.16.1(prisma@5.16.1) + next-auth: 4.24.7(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + + '@next/env@14.2.4': {} + + '@next/eslint-plugin-next@14.1.0': + dependencies: + glob: 10.3.10 + + '@next/swc-darwin-arm64@14.2.4': + optional: true + + '@next/swc-darwin-x64@14.2.4': + optional: true + + '@next/swc-linux-arm64-gnu@14.2.4': + optional: true + + '@next/swc-linux-arm64-musl@14.2.4': + optional: true + + '@next/swc-linux-x64-gnu@14.2.4': + optional: true + + '@next/swc-linux-x64-musl@14.2.4': + optional: true + + '@next/swc-win32-arm64-msvc@14.2.4': + optional: true + + '@next/swc-win32-ia32-msvc@14.2.4': + optional: true + + '@next/swc-win32-x64-msvc@14.2.4': + optional: true + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + + '@one-ini/wasm@0.1.1': {} + + '@panva/hkdf@1.1.1': {} + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@pkgr/core@0.1.1': {} + + '@playwright/test@1.45.0': + dependencies: + playwright: 1.45.0 + + '@prisma/client@5.16.1(prisma@5.16.1)': + optionalDependencies: + prisma: 5.16.1 + + '@prisma/debug@5.16.1': {} + + '@prisma/engines-version@5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303': {} + + '@prisma/engines@5.16.1': + dependencies: + '@prisma/debug': 5.16.1 + '@prisma/engines-version': 5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303 + '@prisma/fetch-engine': 5.16.1 + '@prisma/get-platform': 5.16.1 + + '@prisma/fetch-engine@5.16.1': + dependencies: + '@prisma/debug': 5.16.1 + '@prisma/engines-version': 5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303 + '@prisma/get-platform': 5.16.1 + + '@prisma/get-platform@5.16.1': + dependencies: + '@prisma/debug': 5.16.1 + + '@radix-ui/colors@3.0.0': {} + + '@radix-ui/number@1.0.1': + dependencies: + '@babel/runtime': 7.23.7 + + '@radix-ui/primitive@1.0.1': + dependencies: + '@babel/runtime': 7.23.7 + + '@radix-ui/primitive@1.1.0': {} + + '@radix-ui/react-arrow@1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-arrow@1.1.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-avatar@1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-collection@1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-compose-refs@1.0.1(@types/react@18.0.27)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-compose-refs@1.1.0(@types/react@18.0.27)(react@18.2.0)': + dependencies: + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-context@1.0.1(@types/react@18.0.27)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-context@1.1.0(@types/react@18.0.27)(react@18.2.0)': + dependencies: + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-dialog@1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) + aria-hidden: 1.2.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.0.27)(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-direction@1.0.1(@types/react@18.0.27)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-dismissable-layer@1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-dismissable-layer@1.1.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-dropdown-menu@2.0.6(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-menu': 2.0.6(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-focus-guards@1.0.1(@types/react@18.0.27)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-focus-guards@1.1.0(@types/react@18.0.27)(react@18.2.0)': + dependencies: + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-focus-scope@1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-focus-scope@1.1.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-id@1.0.1(@types/react@18.0.27)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-id@1.1.0(@types/react@18.0.27)(react@18.2.0)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-label@2.0.2(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-menu@2.0.6(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) + aria-hidden: 1.2.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.0.27)(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-popover@1.1.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.1.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.1.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-id': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-popper': 1.2.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-portal': 1.1.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-presence': 1.1.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.0.27)(react@18.2.0) + aria-hidden: 1.2.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.7(@types/react@18.0.27)(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-popper@1.1.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@floating-ui/react-dom': 2.0.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-arrow': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-rect': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/rect': 1.0.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-popper@1.2.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@floating-ui/react-dom': 2.0.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-arrow': 1.1.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-rect': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/rect': 1.1.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-portal@1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-portal@1.1.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-presence@1.0.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-presence@1.1.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-primitive@1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-primitive@2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/react-slot': 1.1.0(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-roving-focus@1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-select@2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/number': 1.0.1 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + aria-hidden: 1.2.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.0.27)(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-slot@1.0.2(@types/react@18.0.27)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-slot@1.1.0(@types/react@18.0.27)(react@18.2.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.27 + + '@radix-ui/react-tabs@1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.23.7 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) '@radix-ui/react-direction': 1.0.1(@types/react@18.0.27)(react@18.2.0) '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: false + optionalDependencies: + '@types/react': 18.0.27 - /@radix-ui/react-tooltip@1.0.7(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + '@radix-ui/react-tooltip@1.0.7(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.23.7 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.0.27 + '@radix-ui/react-visually-hidden': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: false + optionalDependencies: + '@types/react': 18.0.27 - /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.0.27)(react@18.2.0): - resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.0.27)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.7 - '@types/react': 18.0.27 react: 18.2.0 - dev: false + optionalDependencies: + '@types/react': 18.0.27 - /@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.0.27)(react@18.2.0): - resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.0.27)(react@18.2.0)': dependencies: - '@types/react': 18.0.27 react: 18.2.0 - dev: false + optionalDependencies: + '@types/react': 18.0.27 - /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.0.27)(react@18.2.0): - resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.0.27)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.7 '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 react: 18.2.0 - dev: false + optionalDependencies: + '@types/react': 18.0.27 - /@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.0.27)(react@18.2.0): - resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.0.27)(react@18.2.0)': dependencies: '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 react: 18.2.0 - dev: false + optionalDependencies: + '@types/react': 18.0.27 - /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.0.27)(react@18.2.0): - resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.0.27)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.7 '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 react: 18.2.0 - dev: false + optionalDependencies: + '@types/react': 18.0.27 - /@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.0.27)(react@18.2.0): - resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.0.27)(react@18.2.0)': dependencies: '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 react: 18.2.0 - dev: false + optionalDependencies: + '@types/react': 18.0.27 - /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.0.27)(react@18.2.0): - resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.0.27)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.7 - '@types/react': 18.0.27 react: 18.2.0 - dev: false + optionalDependencies: + '@types/react': 18.0.27 - /@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.0.27)(react@18.2.0): - resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.0.27)(react@18.2.0)': dependencies: - '@types/react': 18.0.27 react: 18.2.0 - dev: false + optionalDependencies: + '@types/react': 18.0.27 - /@radix-ui/react-use-previous@1.0.1(@types/react@18.0.27)(react@18.2.0): - resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-previous@1.0.1(@types/react@18.0.27)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.7 - '@types/react': 18.0.27 react: 18.2.0 - dev: false + optionalDependencies: + '@types/react': 18.0.27 - /@radix-ui/react-use-rect@1.0.1(@types/react@18.0.27)(react@18.2.0): - resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-rect@1.0.1(@types/react@18.0.27)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.7 '@radix-ui/rect': 1.0.1 - '@types/react': 18.0.27 react: 18.2.0 - dev: false + optionalDependencies: + '@types/react': 18.0.27 - /@radix-ui/react-use-rect@1.1.0(@types/react@18.0.27)(react@18.2.0): - resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-rect@1.1.0(@types/react@18.0.27)(react@18.2.0)': dependencies: '@radix-ui/rect': 1.1.0 - '@types/react': 18.0.27 react: 18.2.0 - dev: false + optionalDependencies: + '@types/react': 18.0.27 - /@radix-ui/react-use-size@1.0.1(@types/react@18.0.27)(react@18.2.0): - resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-size@1.0.1(@types/react@18.0.27)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.7 '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 react: 18.2.0 - dev: false + optionalDependencies: + '@types/react': 18.0.27 - /@radix-ui/react-use-size@1.1.0(@types/react@18.0.27)(react@18.2.0): - resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-size@1.1.0(@types/react@18.0.27)(react@18.2.0)': dependencies: '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@types/react': 18.0.27 react: 18.2.0 - dev: false + optionalDependencies: + '@types/react': 18.0.27 - /@radix-ui/react-visually-hidden@1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + '@radix-ui/react-visually-hidden@1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.23.7 - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.0.27 + '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: false + optionalDependencies: + '@types/react': 18.0.27 - /@radix-ui/rect@1.0.1: - resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} + '@radix-ui/rect@1.0.1': dependencies: '@babel/runtime': 7.23.7 - dev: false - /@radix-ui/rect@1.1.0: - resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} - dev: false + '@radix-ui/rect@1.1.0': {} - /@react-email/render@0.0.12: - resolution: {integrity: sha512-S8WRv/PqECEi6x0QJBj0asnAb5GFtJaHlnByxLETLkgJjc76cxMYDH4r9wdbuJ4sjkcbpwP3LPnVzwS+aIjT7g==} - engines: {node: '>=18.0.0'} + '@react-email/render@0.0.12': dependencies: html-to-text: 9.0.5 js-beautify: 1.14.11 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: false - /@rollup/plugin-commonjs@24.0.0(rollup@2.78.0): - resolution: {integrity: sha512-0w0wyykzdyRRPHOb0cQt14mIBLujfAv6GgP6g8nvg/iBxEm112t3YPPq+Buqe2+imvElTka+bjNlJ/gB56TD8g==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.68.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true + '@rollup/plugin-commonjs@24.0.0(rollup@2.78.0)': dependencies: '@rollup/pluginutils': 5.1.0(rollup@2.78.0) commondir: 1.0.1 @@ -2116,66 +6307,44 @@ packages: glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.27.0 + optionalDependencies: rollup: 2.78.0 - dev: false - /@rollup/pluginutils@5.1.0(rollup@2.78.0): - resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true + '@rollup/pluginutils@5.1.0(rollup@2.78.0)': dependencies: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 + optionalDependencies: rollup: 2.78.0 - dev: false - /@rushstack/eslint-patch@1.6.1: - resolution: {integrity: sha512-UY+FGM/2jjMkzQLn8pxcHGMaVLh9aEitG3zY2CiY7XHdLiz3bZOwa6oDxNqEMv7zZkV+cj5DOdz0cQ1BP5Hjgw==} - dev: true + '@rushstack/eslint-patch@1.6.1': {} - /@selderee/plugin-htmlparser2@0.11.0: - resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} + '@selderee/plugin-htmlparser2@0.11.0': dependencies: domhandler: 5.0.3 selderee: 0.11.0 - dev: false - /@sentry-internal/feedback@7.102.1: - resolution: {integrity: sha512-vY4hpLLMNLjICtWiizc7KeGbWOTUMGrF7C+9dPCztZww3CLgzWy9A7DvPj5hodRiYzpdRnAMl8yQnMFbYXh7bA==} - engines: {node: '>=12'} + '@sentry-internal/feedback@7.102.1': dependencies: '@sentry/core': 7.102.1 '@sentry/types': 7.102.1 '@sentry/utils': 7.102.1 - dev: false - /@sentry-internal/replay-canvas@7.102.1: - resolution: {integrity: sha512-GUX4RWI10uRjdjeyvCLtAAhWRVqnAnG6+yNxWfqUQ3qMA7B7XxG43KT2UhSnulmErNzODQ6hA68rGPwwYeRIww==} - engines: {node: '>=12'} + '@sentry-internal/replay-canvas@7.102.1': dependencies: '@sentry/core': 7.102.1 '@sentry/replay': 7.102.1 '@sentry/types': 7.102.1 '@sentry/utils': 7.102.1 - dev: false - /@sentry-internal/tracing@7.102.1: - resolution: {integrity: sha512-RkFlFyAC0fQOvBbBqnq0CLmFW5m3JJz9pKbZd5vXPraWAlniKSb1bC/4DF9SlNx0FN1LWG+IU3ISdpzwwTeAGg==} - engines: {node: '>=8'} + '@sentry-internal/tracing@7.102.1': dependencies: '@sentry/core': 7.102.1 '@sentry/types': 7.102.1 '@sentry/utils': 7.102.1 - dev: false - /@sentry/browser@7.102.1: - resolution: {integrity: sha512-7BOfPBiM7Kp6q/iy0JIbsBTxIASV+zWXByqqjuEMWGj3X2u4oRIfm3gv4erPU/l+CORQUVQZLSPGoIoM1gbB/A==} - engines: {node: '>=8'} + '@sentry/browser@7.102.1': dependencies: '@sentry-internal/feedback': 7.102.1 '@sentry-internal/replay-canvas': 7.102.1 @@ -2184,13 +6353,8 @@ packages: '@sentry/replay': 7.102.1 '@sentry/types': 7.102.1 '@sentry/utils': 7.102.1 - dev: false - /@sentry/cli@1.77.3: - resolution: {integrity: sha512-c3eDqcDRmy4TFz2bFU5Y6QatlpoBPPa8cxBooaS4aMQpnIdLYPF1xhyyiW0LQlDUNc3rRjNF7oN5qKoaRoMTQQ==} - engines: {node: '>= 8'} - hasBin: true - requiresBuild: true + '@sentry/cli@1.77.3': dependencies: https-proxy-agent: 5.0.1 mkdirp: 0.5.6 @@ -2201,36 +6365,20 @@ packages: transitivePeerDependencies: - encoding - supports-color - dev: false - /@sentry/core@7.102.1: - resolution: {integrity: sha512-QjY+LSP3du3J/C8x/FfEbRxgZgsWd0jfTJ4P7s9f219I1csK4OeBMC3UA1HwEa0pY/9OF6H/egW2CjOcMM5Pdg==} - engines: {node: '>=8'} + '@sentry/core@7.102.1': dependencies: '@sentry/types': 7.102.1 '@sentry/utils': 7.102.1 - dev: false - /@sentry/integrations@7.102.1: - resolution: {integrity: sha512-Its3Ru6xCAqpaLE3cTxW/b91js2SIFoXa8LWtQDJ7tmTdwPAbT8Pij1F4bOhhaqLYbjLtCXGl/NR2cffsiRLww==} - engines: {node: '>=8'} + '@sentry/integrations@7.102.1': dependencies: '@sentry/core': 7.102.1 '@sentry/types': 7.102.1 '@sentry/utils': 7.102.1 localforage: 1.10.0 - dev: false - /@sentry/nextjs@7.102.1(next@14.2.4)(react@18.2.0)(webpack@5.89.0): - resolution: {integrity: sha512-gOI/GD7DWhc3WucyYnepl8Nu5jmpa1YfR6jWDzTkPE2CV9zKK9zulTdqk+Aig9ch62SAmJOGkgejm5k9PE2XzQ==} - engines: {node: '>=8'} - peerDependencies: - next: ^10.0.8 || ^11.0 || ^12.0 || ^13.0 || ^14.0 - react: 16.x || 17.x || 18.x - webpack: '>= 4.0.0' - peerDependenciesMeta: - webpack: - optional: true + '@sentry/nextjs@7.102.1(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0)(webpack@5.89.0)': dependencies: '@rollup/plugin-commonjs': 24.0.0(rollup@2.78.0) '@sentry/core': 7.102.1 @@ -2242,32 +6390,25 @@ packages: '@sentry/vercel-edge': 7.102.1 '@sentry/webpack-plugin': 1.21.0 chalk: 3.0.0 - next: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0)(react@18.2.0) + next: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 resolve: 1.22.8 rollup: 2.78.0 stacktrace-parser: 0.1.10 + optionalDependencies: webpack: 5.89.0 transitivePeerDependencies: - encoding - supports-color - dev: false - /@sentry/node@7.102.1: - resolution: {integrity: sha512-mb3vmM3SGuCruckPiv/Vafeh89UQavTfpPFoU6Jwe6dSpQ39BO8fO8k8Zev+/nP6r/FKLtX17mJobErHECXsYw==} - engines: {node: '>=8'} + '@sentry/node@7.102.1': dependencies: '@sentry-internal/tracing': 7.102.1 '@sentry/core': 7.102.1 '@sentry/types': 7.102.1 '@sentry/utils': 7.102.1 - dev: false - /@sentry/react@7.102.1(react@18.2.0): - resolution: {integrity: sha512-X4j2DgbktlEifnd21YJKCayAmff5hnaS+9MNz9OonEwD0ARi0ks7bo0wtWHMjPK20992MO+JwczVg/1BXJYDdQ==} - engines: {node: '>=8'} - peerDependencies: - react: 15.x || 16.x || 17.x || 18.x + '@sentry/react@7.102.1(react@18.2.0)': dependencies: '@sentry/browser': 7.102.1 '@sentry/core': 7.102.1 @@ -2275,350 +6416,176 @@ packages: '@sentry/utils': 7.102.1 hoist-non-react-statics: 3.3.2 react: 18.2.0 - dev: false - /@sentry/replay@7.102.1: - resolution: {integrity: sha512-HR/j9dGIvbrId8fh8mQlODx7JrhRmawEd9e9P3laPtogWCg/5TI+XPb2VGSaXOX9VWtb/6Z2UjHsaGjgg6YcuA==} - engines: {node: '>=12'} + '@sentry/replay@7.102.1': dependencies: '@sentry-internal/tracing': 7.102.1 '@sentry/core': 7.102.1 '@sentry/types': 7.102.1 '@sentry/utils': 7.102.1 - dev: false - /@sentry/types@7.102.1: - resolution: {integrity: sha512-htKorf3t/D0XYtM7foTcmG+rM47rDP6XdbvCcX5gBCuCYlzpM1vqCt2rl3FLktZC6TaIpFRJw1TLfx6m+x5jdA==} - engines: {node: '>=8'} - dev: false + '@sentry/types@7.102.1': {} - /@sentry/utils@7.102.1: - resolution: {integrity: sha512-+8WcFjHVV/HROXSAwMuUzveElBFC43EiTG7SNEBNgOUeQzQVTmbUZXyTVgLrUmtoWqvnIxCacoLxtZo1o67kdg==} - engines: {node: '>=8'} + '@sentry/utils@7.102.1': dependencies: '@sentry/types': 7.102.1 - dev: false - /@sentry/vercel-edge@7.102.1: - resolution: {integrity: sha512-iB6KCSxrvO172VjfQHGiYpyXPKNbx6Cz01GA1YDByRiUSgSpAq0qAFRY4lvd736w5KX4s9hen+XmZ7Gmqj8Pag==} - engines: {node: '>=8'} + '@sentry/vercel-edge@7.102.1': dependencies: '@sentry-internal/tracing': 7.102.1 '@sentry/core': 7.102.1 '@sentry/types': 7.102.1 '@sentry/utils': 7.102.1 - dev: false - /@sentry/webpack-plugin@1.21.0: - resolution: {integrity: sha512-x0PYIMWcsTauqxgl7vWUY6sANl+XGKtx7DCVnnY7aOIIlIna0jChTAPANTfA2QrK+VK+4I/4JxatCEZBnXh3Og==} - engines: {node: '>= 8'} + '@sentry/webpack-plugin@1.21.0': dependencies: '@sentry/cli': 1.77.3 webpack-sources: 3.2.3 transitivePeerDependencies: - encoding - supports-color - dev: false - /@slack/types@2.10.0: - resolution: {integrity: sha512-JXY9l49rf7dDgvfMZi0maFyugzGkvq0s5u+kDlD68WaRUhjZNLBDKZcsrycMsVVDFfyOK0R1UKkYGmy9Ph069Q==} - engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} - dev: false + '@slack/types@2.10.0': {} - /@slack/webhook@7.0.1: - resolution: {integrity: sha512-0Uj/GQ1H8nmeAVEx+7zcWb6/q/zsSOrlIaGi6zFnwgMSxjmV6xGsVwv8w6DaAdkUbtqa43v1cirWjySeZaCOIA==} - engines: {node: '>= 18', npm: '>= 8.6.0'} + '@slack/webhook@7.0.1': dependencies: '@slack/types': 2.10.0 '@types/node': 20.5.6 axios: 1.6.2 transitivePeerDependencies: - debug - dev: false - /@stripe/stripe-js@4.1.0: - resolution: {integrity: sha512-HhstGRUz/4JdbZpb26OcOf8Qb/cFR02arvHvgz4sPFLSnI6ZNHC53Jc6JP/FGNwxtrF719YyUnK0gGy4oyhucQ==} - engines: {node: '>=12.16'} - dev: false + '@stripe/stripe-js@4.1.0': {} - /@swc-jotai/react-refresh@0.1.0: - resolution: {integrity: sha512-CWV4W06GdfQo3cW3CoUM2fp7avH4Z/suR7SvECNJnQbr6Sa9U3p7o10nXjNv2zT6z09bbNUPM55HBw5Nwd24Iw==} - dev: true + '@swc-jotai/react-refresh@0.1.0': {} - /@swc/counter@0.1.3: - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - dev: false + '@swc/counter@0.1.3': {} - /@swc/helpers@0.5.5: - resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} + '@swc/helpers@0.5.5': dependencies: '@swc/counter': 0.1.3 tslib: 2.6.2 - dev: false - /@tootallnate/once@2.0.0: - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} - dev: false + '@tootallnate/once@2.0.0': {} - /@tsconfig/node10@1.0.9: - resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + '@tsconfig/node10@1.0.9': {} - /@tsconfig/node12@1.0.11: - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + '@tsconfig/node12@1.0.11': {} - /@tsconfig/node14@1.0.3: - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + '@tsconfig/node14@1.0.3': {} - /@tsconfig/node16@1.0.4: - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + '@tsconfig/node16@1.0.4': {} - /@types/caseless@0.12.5: - resolution: {integrity: sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==} - dev: false + '@types/caseless@0.12.5': {} - /@types/debug@4.1.8: - resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} + '@types/debug@4.1.8': dependencies: '@types/ms': 0.7.31 - dev: false - /@types/eslint-scope@3.7.7: - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + '@types/eslint-scope@3.7.7': dependencies: '@types/eslint': 8.56.0 '@types/estree': 1.0.5 - dev: false - /@types/eslint@8.56.0: - resolution: {integrity: sha512-FlsN0p4FhuYRjIxpbdXovvHQhtlG05O1GG/RNWvdAxTboR438IOTwmrY/vLA+Xfgg06BTkP045M3vpFwTMv1dg==} + '@types/eslint@8.56.0': dependencies: '@types/estree': 1.0.5 '@types/json-schema': 7.0.15 - dev: false - /@types/estree-jsx@1.0.3: - resolution: {integrity: sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==} + '@types/estree-jsx@1.0.3': dependencies: '@types/estree': 1.0.5 - dev: false - /@types/estree@1.0.5: - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - dev: false + '@types/estree@1.0.5': {} - /@types/formidable@3.4.5: - resolution: {integrity: sha512-s7YPsNVfnsng5L8sKnG/Gbb2tiwwJTY1conOkJzTMRvJAlLFW1nEua+ADsJQu8N1c0oTHx9+d5nqg10WuT9gHQ==} + '@types/formidable@3.4.5': dependencies: '@types/node': 20.10.6 - dev: true - /@types/hast@2.3.5: - resolution: {integrity: sha512-SvQi0L/lNpThgPoleH53cdjB3y9zpLlVjRbqB3rH8hx1jiRSBGAhyjV3H+URFjNVRqt2EdYNrbZE5IsGlNfpRg==} + '@types/hast@2.3.5': dependencies: '@types/unist': 2.0.8 - dev: false - /@types/hast@3.0.0: - resolution: {integrity: sha512-SoytUJRuf68HXYqcXicQIhCrLQjqeYU2anikr4G3p3Iz+OZO5QDQpDj++gv+RenHsnUBwNZ2dumBArF8VLSk2Q==} + '@types/hast@3.0.0': dependencies: '@types/unist': 3.0.0 - dev: false - /@types/json-schema@7.0.12: - resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} - dev: false + '@types/json-schema@7.0.12': {} - /@types/json-schema@7.0.15: - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - dev: false + '@types/json-schema@7.0.15': {} - /@types/json5@0.0.29: - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - dev: true + '@types/json5@0.0.29': {} - /@types/mdast@4.0.3: - resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} + '@types/mdast@4.0.3': dependencies: '@types/unist': 3.0.0 - dev: false - /@types/minimist@1.2.2: - resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} - dev: true + '@types/minimist@1.2.2': {} - /@types/ms@0.7.31: - resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} - dev: false + '@types/ms@0.7.31': {} - /@types/node@12.20.55: - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - dev: true + '@types/node@12.20.55': {} - /@types/node@20.10.6: - resolution: {integrity: sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw==} + '@types/node@20.10.6': dependencies: undici-types: 5.26.5 - /@types/node@20.5.6: - resolution: {integrity: sha512-Gi5wRGPbbyOTX+4Y2iULQ27oUPrefaB0PxGQJnfyWN3kvEDGM3mIB5M/gQLmitZf7A9FmLeaqxD3L1CXpm3VKQ==} + '@types/node@20.5.6': {} - /@types/normalize-package-data@2.4.1: - resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} - dev: true + '@types/normalize-package-data@2.4.1': {} - /@types/papaparse@5.3.14: - resolution: {integrity: sha512-LxJ4iEFcpqc6METwp9f6BV6VVc43m6MfH0VqFosHvrUgfXiFe6ww7R3itkOQ+TCK6Y+Iv/+RnnvtRZnkc5Kc9g==} + '@types/papaparse@5.3.14': dependencies: '@types/node': 20.10.6 - dev: false - /@types/prismjs@1.26.0: - resolution: {integrity: sha512-ZTaqn/qSqUuAq1YwvOFQfVW1AR/oQJlLSZVustdjwI+GZ8kr0MSHBj0tsXPW1EqHubx50gtBEjbPGsdZwQwCjQ==} - dev: false + '@types/prismjs@1.26.0': {} - /@types/prop-types@15.7.5: - resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + '@types/prop-types@15.7.5': {} - /@types/react@18.0.27: - resolution: {integrity: sha512-3vtRKHgVxu3Jp9t718R9BuzoD4NcQ8YJ5XRzsSKxNDiDonD2MXIT1TmSkenxuCycZJoQT5d2vE8LwWJxBC1gmA==} + '@types/react@18.0.27': dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 csstype: 3.1.2 - /@types/request@2.48.12: - resolution: {integrity: sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==} + '@types/request@2.48.12': dependencies: '@types/caseless': 0.12.5 '@types/node': 20.10.6 '@types/tough-cookie': 4.0.5 form-data: 2.5.1 - dev: false - /@types/scheduler@0.16.3: - resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} + '@types/scheduler@0.16.3': {} - /@types/semver@7.5.1: - resolution: {integrity: sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==} - dev: true + '@types/semver@7.5.1': {} - /@types/tough-cookie@4.0.5: - resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} - dev: false + '@types/tough-cookie@4.0.5': {} - /@types/unist@2.0.8: - resolution: {integrity: sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==} - dev: false + '@types/unist@2.0.8': {} - /@types/unist@3.0.0: - resolution: {integrity: sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==} - dev: false + '@types/unist@3.0.0': {} - /@typeschema/core@0.13.2: - resolution: {integrity: sha512-pAt0MK249/9szYaoPuvzhSfOd3smrLhhwCCpUNB4onX32mRx5F3lzDIveIYGQkLYRq58xOX5sjoW+n72f/MLLw==} - peerDependencies: - '@types/json-schema': ^7.0.15 - peerDependenciesMeta: - '@types/json-schema': - optional: true - dev: false + '@typeschema/core@0.13.2(@types/json-schema@7.0.15)': + optionalDependencies: + '@types/json-schema': 7.0.15 - /@typeschema/main@0.13.10(@typeschema/zod@0.13.3): - resolution: {integrity: sha512-ArdFC4GbgdVWWgPKg2tymxx2KHMus3xZ8I2kHwqw/0P4FtWBXCmSNAiBqDtpoXXF8h9cbcm7fVpcs5ftoWT9+A==} - peerDependencies: - '@typeschema/arktype': 0.13.2 - '@typeschema/class-validator': 0.1.2 - '@typeschema/deepkit': 0.13.4 - '@typeschema/effect': 0.13.4 - '@typeschema/fastest-validator': 0.1.0 - '@typeschema/function': 0.13.2 - '@typeschema/io-ts': 0.13.3 - '@typeschema/joi': 0.13.3 - '@typeschema/json': 0.13.3 - '@typeschema/ow': 0.13.3 - '@typeschema/runtypes': 0.13.2 - '@typeschema/superstruct': 0.13.2 - '@typeschema/suretype': 0.1.0 - '@typeschema/typebox': 0.13.4 - '@typeschema/valibot': 0.13.5 - '@typeschema/valita': 0.1.0 - '@typeschema/vine': 0.1.0 - '@typeschema/yup': 0.13.3 - '@typeschema/zod': 0.13.3 - peerDependenciesMeta: - '@typeschema/arktype': - optional: true - '@typeschema/class-validator': - optional: true - '@typeschema/deepkit': - optional: true - '@typeschema/effect': - optional: true - '@typeschema/fastest-validator': - optional: true - '@typeschema/function': - optional: true - '@typeschema/io-ts': - optional: true - '@typeschema/joi': - optional: true - '@typeschema/json': - optional: true - '@typeschema/ow': - optional: true - '@typeschema/runtypes': - optional: true - '@typeschema/superstruct': - optional: true - '@typeschema/suretype': - optional: true - '@typeschema/typebox': - optional: true - '@typeschema/valibot': - optional: true - '@typeschema/valita': - optional: true - '@typeschema/vine': - optional: true - '@typeschema/yup': - optional: true - '@typeschema/zod': - optional: true + '@typeschema/main@0.13.10(@types/json-schema@7.0.15)(@typeschema/zod@0.13.3(@types/json-schema@7.0.15)(zod@3.22.4))': dependencies: - '@typeschema/core': 0.13.2 - '@typeschema/zod': 0.13.3(zod@3.22.4) + '@typeschema/core': 0.13.2(@types/json-schema@7.0.15) + optionalDependencies: + '@typeschema/zod': 0.13.3(@types/json-schema@7.0.15)(zod@3.22.4) transitivePeerDependencies: - '@types/json-schema' - dev: false - /@typeschema/zod@0.13.3(zod@3.22.4): - resolution: {integrity: sha512-p5Hs22WIKkM/vZTAvw5QOLSA0EJ6QBUsQMGUrXlYnTAE2LSR/F5MLsDUb18O6S5VxGjrzU7x3VIznD5qOafJRw==} - peerDependencies: - zod: ^3.22.4 - zod-to-json-schema: ^3.22.4 - peerDependenciesMeta: - zod: - optional: true - zod-to-json-schema: - optional: true + '@typeschema/zod@0.13.3(@types/json-schema@7.0.15)(zod@3.22.4)': dependencies: - '@typeschema/core': 0.13.2 + '@typeschema/core': 0.13.2(@types/json-schema@7.0.15) + optionalDependencies: zod: 3.22.4 transitivePeerDependencies: - '@types/json-schema' - dev: false - /@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.12.0)(eslint@8.57.0)(typescript@5.3.3): - resolution: {integrity: sha512-aAJd6bIf2vvQRjUG3ZkNXkmBpN+J7Wd0mfQiiVCJMu9Z5GcZZdcc0j8XwN/BM97Fl7e3SkTXODSk4VehUv7CGw==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3)': dependencies: '@eslint-community/regexpp': 4.10.1 '@typescript-eslint/parser': 7.12.0(eslint@8.57.0)(typescript@5.3.3) @@ -2631,20 +6598,12 @@ packages: ignore: 5.3.1 natural-compare: 1.4.0 ts-api-utils: 1.3.0(typescript@5.3.3) + optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3): - resolution: {integrity: sha512-C4bBaX2orvhK+LlwrY8oWGmSl4WolCfYm513gEccdWZj0CwGadbIADb0FtVEcI+WzUyjyoBj2JRP8g25E6IB8A==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3)': dependencies: '@typescript-eslint/scope-manager': 6.17.0 '@typescript-eslint/types': 6.17.0 @@ -2652,20 +6611,12 @@ packages: '@typescript-eslint/visitor-keys': 6.17.0 debug: 4.3.4 eslint: 8.57.0 + optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3): - resolution: {integrity: sha512-dm/J2UDY3oV3TKius2OUZIFHsomQmpHtsV0FTh1WO8EKgHLQ1QCADUqscPgTpU+ih1e21FQSRjXckHn3txn6kQ==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3)': dependencies: '@typescript-eslint/scope-manager': 7.12.0 '@typescript-eslint/types': 7.12.0 @@ -2673,78 +6624,45 @@ packages: '@typescript-eslint/visitor-keys': 7.12.0 debug: 4.3.4 eslint: 8.57.0 + optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/scope-manager@6.17.0: - resolution: {integrity: sha512-RX7a8lwgOi7am0k17NUO0+ZmMOX4PpjLtLRgLmT1d3lBYdWH4ssBUbwdmc5pdRX8rXon8v9x8vaoOSpkHfcXGA==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/scope-manager@6.17.0': dependencies: '@typescript-eslint/types': 6.17.0 '@typescript-eslint/visitor-keys': 6.17.0 - dev: true - /@typescript-eslint/scope-manager@7.12.0: - resolution: {integrity: sha512-itF1pTnN6F3unPak+kutH9raIkL3lhH1YRPGgt7QQOh43DQKVJXmWkpb+vpc/TiDHs6RSd9CTbDsc/Y+Ygq7kg==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/scope-manager@7.12.0': dependencies: '@typescript-eslint/types': 7.12.0 '@typescript-eslint/visitor-keys': 7.12.0 - dev: true - /@typescript-eslint/scope-manager@7.14.1: - resolution: {integrity: sha512-gPrFSsoYcsffYXTOZ+hT7fyJr95rdVe4kGVX1ps/dJ+DfmlnjFN/GcMxXcVkeHDKqsq6uAcVaQaIi3cFffmAbA==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/scope-manager@7.14.1': dependencies: '@typescript-eslint/types': 7.14.1 '@typescript-eslint/visitor-keys': 7.14.1 - dev: true - /@typescript-eslint/type-utils@7.14.1(eslint@8.57.0)(typescript@5.3.3): - resolution: {integrity: sha512-/MzmgNd3nnbDbOi3LfasXWWe292+iuo+umJ0bCCMCPc1jLO/z2BQmWUUUXvXLbrQey/JgzdF/OV+I5bzEGwJkQ==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/type-utils@7.14.1(eslint@8.57.0)(typescript@5.3.3)': dependencies: '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.3.3) '@typescript-eslint/utils': 7.14.1(eslint@8.57.0)(typescript@5.3.3) debug: 4.3.4 eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.3.3) + optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/types@6.17.0: - resolution: {integrity: sha512-qRKs9tvc3a4RBcL/9PXtKSehI/q8wuU9xYJxe97WFxnzH8NWWtcW3ffNS+EWg8uPvIerhjsEZ+rHtDqOCiH57A==} - engines: {node: ^16.0.0 || >=18.0.0} - dev: true + '@typescript-eslint/types@6.17.0': {} - /@typescript-eslint/types@7.12.0: - resolution: {integrity: sha512-o+0Te6eWp2ppKY3mLCU+YA9pVJxhUJE15FV7kxuD9jgwIAa+w/ycGJBMrYDTpVGUM/tgpa9SeMOugSabWFq7bg==} - engines: {node: ^18.18.0 || >=20.0.0} - dev: true + '@typescript-eslint/types@7.12.0': {} - /@typescript-eslint/types@7.14.1: - resolution: {integrity: sha512-mL7zNEOQybo5R3AavY+Am7KLv8BorIv7HCYS5rKoNZKQD9tsfGUpO4KdAn3sSUvTiS4PQkr2+K0KJbxj8H9NDg==} - engines: {node: ^18.18.0 || >=20.0.0} - dev: true + '@typescript-eslint/types@7.14.1': {} - /@typescript-eslint/typescript-estree@6.17.0(typescript@5.3.3): - resolution: {integrity: sha512-gVQe+SLdNPfjlJn5VNGhlOhrXz4cajwFd5kAgWtZ9dCZf4XJf8xmgCTLIqec7aha3JwgLI2CK6GY1043FRxZwg==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/typescript-estree@6.17.0(typescript@5.3.3)': dependencies: '@typescript-eslint/types': 6.17.0 '@typescript-eslint/visitor-keys': 6.17.0 @@ -2754,19 +6672,12 @@ packages: minimatch: 9.0.3 semver: 7.6.2 ts-api-utils: 1.0.3(typescript@5.3.3) + optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/typescript-estree@7.12.0(typescript@5.3.3): - resolution: {integrity: sha512-5bwqLsWBULv1h6pn7cMW5dXX/Y2amRqLaKqsASVwbBHMZSnHqE/HN4vT4fE0aFsiwxYvr98kqOWh1a8ZKXalCQ==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/typescript-estree@7.12.0(typescript@5.3.3)': dependencies: '@typescript-eslint/types': 7.12.0 '@typescript-eslint/visitor-keys': 7.12.0 @@ -2776,19 +6687,12 @@ packages: minimatch: 9.0.4 semver: 7.6.2 ts-api-utils: 1.3.0(typescript@5.3.3) + optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/typescript-estree@7.14.1(typescript@5.3.3): - resolution: {integrity: sha512-k5d0VuxViE2ulIO6FbxxSZaxqDVUyMbXcidC8rHvii0I56XZPv8cq+EhMns+d/EVIL41sMXqRbK3D10Oza1bbA==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/typescript-estree@7.14.1(typescript@5.3.3)': dependencies: '@typescript-eslint/types': 7.14.1 '@typescript-eslint/visitor-keys': 7.14.1 @@ -2798,16 +6702,12 @@ packages: minimatch: 9.0.4 semver: 7.6.2 ts-api-utils: 1.3.0(typescript@5.3.3) + optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/utils@7.14.1(eslint@8.57.0)(typescript@5.3.3): - resolution: {integrity: sha512-CMmVVELns3nak3cpJhZosDkm63n+DwBlDX8g0k4QUa9BMnF+lH2lr3d130M1Zt1xxmB3LLk3NV7KQCq86ZBBhQ==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 + '@typescript-eslint/utils@7.14.1(eslint@8.57.0)(typescript@5.3.3)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@typescript-eslint/scope-manager': 7.14.1 @@ -2817,41 +6717,25 @@ packages: transitivePeerDependencies: - supports-color - typescript - dev: true - /@typescript-eslint/visitor-keys@6.17.0: - resolution: {integrity: sha512-H6VwB/k3IuIeQOyYczyyKN8wH6ed8EwliaYHLxOIhyF0dYEIsN8+Bk3GE19qafeMKyZJJHP8+O1HiFhFLUNKSg==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/visitor-keys@6.17.0': dependencies: '@typescript-eslint/types': 6.17.0 eslint-visitor-keys: 3.4.3 - dev: true - /@typescript-eslint/visitor-keys@7.12.0: - resolution: {integrity: sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/visitor-keys@7.12.0': dependencies: '@typescript-eslint/types': 7.12.0 eslint-visitor-keys: 3.4.3 - dev: true - /@typescript-eslint/visitor-keys@7.14.1: - resolution: {integrity: sha512-Crb+F75U1JAEtBeQGxSKwI60hZmmzaqA3z9sYsVm8X7W5cwLEm5bRe0/uXS6+MR/y8CVpKSR/ontIAIEPFcEkA==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/visitor-keys@7.14.1': dependencies: '@typescript-eslint/types': 7.14.1 eslint-visitor-keys: 3.4.3 - dev: true - /@uiw/copy-to-clipboard@1.0.15: - resolution: {integrity: sha512-1bbGZ3T+SGmA07BoVPK4UCUDcowDN/moctviJGQexfOc9qL8TMLDQPr7mTPvDKhgJkgnlKkAQNFU8PiarIi9sQ==} - dev: false + '@uiw/copy-to-clipboard@1.0.15': {} - /@uiw/react-markdown-preview@5.0.6(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-zd+T02xFhy6K75XPdkF3RRAWKzVzJctZ6CCpFDcn/CgdQlEj8Z+Z9k11nkPspzbznB43UYdoe4qQvnjgG6TfZw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' + '@uiw/react-markdown-preview@5.0.6(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.22.11 '@uiw/copy-to-clipboard': 1.0.15 @@ -2870,16 +6754,11 @@ packages: transitivePeerDependencies: - '@types/react' - supports-color - dev: false - /@uiw/react-md-editor@4.0.3(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-TvChXxUBUS21Rk0cVC0aeJoWcFZ/G0xN/Hc4Lv9FGFK8wPOHESd7Bcq4jNRHJ6lEzE/+d4Wh00lEVNKj+rQyBw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' + '@uiw/react-md-editor@4.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.23.7 - '@uiw/react-markdown-preview': 5.0.6(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@uiw/react-markdown-preview': 5.0.6(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) rehype: 13.0.1 @@ -2887,69 +6766,46 @@ packages: transitivePeerDependencies: - '@types/react' - supports-color - dev: false - /@ungap/structured-clone@1.2.0: - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + '@ungap/structured-clone@1.2.0': {} - /@webassemblyjs/ast@1.11.6: - resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + '@webassemblyjs/ast@1.11.6': dependencies: '@webassemblyjs/helper-numbers': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - dev: false - /@webassemblyjs/floating-point-hex-parser@1.11.6: - resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} - dev: false + '@webassemblyjs/floating-point-hex-parser@1.11.6': {} - /@webassemblyjs/helper-api-error@1.11.6: - resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} - dev: false + '@webassemblyjs/helper-api-error@1.11.6': {} - /@webassemblyjs/helper-buffer@1.11.6: - resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} - dev: false + '@webassemblyjs/helper-buffer@1.11.6': {} - /@webassemblyjs/helper-numbers@1.11.6: - resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + '@webassemblyjs/helper-numbers@1.11.6': dependencies: '@webassemblyjs/floating-point-hex-parser': 1.11.6 '@webassemblyjs/helper-api-error': 1.11.6 '@xtuc/long': 4.2.2 - dev: false - /@webassemblyjs/helper-wasm-bytecode@1.11.6: - resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} - dev: false + '@webassemblyjs/helper-wasm-bytecode@1.11.6': {} - /@webassemblyjs/helper-wasm-section@1.11.6: - resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} + '@webassemblyjs/helper-wasm-section@1.11.6': dependencies: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/helper-buffer': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/wasm-gen': 1.11.6 - dev: false - /@webassemblyjs/ieee754@1.11.6: - resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + '@webassemblyjs/ieee754@1.11.6': dependencies: '@xtuc/ieee754': 1.2.0 - dev: false - /@webassemblyjs/leb128@1.11.6: - resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + '@webassemblyjs/leb128@1.11.6': dependencies: '@xtuc/long': 4.2.2 - dev: false - /@webassemblyjs/utf8@1.11.6: - resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} - dev: false + '@webassemblyjs/utf8@1.11.6': {} - /@webassemblyjs/wasm-edit@1.11.6: - resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} + '@webassemblyjs/wasm-edit@1.11.6': dependencies: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/helper-buffer': 1.11.6 @@ -2959,29 +6815,23 @@ packages: '@webassemblyjs/wasm-opt': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 '@webassemblyjs/wast-printer': 1.11.6 - dev: false - /@webassemblyjs/wasm-gen@1.11.6: - resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + '@webassemblyjs/wasm-gen@1.11.6': dependencies: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 - dev: false - /@webassemblyjs/wasm-opt@1.11.6: - resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + '@webassemblyjs/wasm-opt@1.11.6': dependencies: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/helper-buffer': 1.11.6 '@webassemblyjs/wasm-gen': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 - dev: false - /@webassemblyjs/wasm-parser@1.11.6: - resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + '@webassemblyjs/wasm-parser@1.11.6': dependencies: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/helper-api-error': 1.11.6 @@ -2989,232 +6839,139 @@ packages: '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 - dev: false - /@webassemblyjs/wast-printer@1.11.6: - resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + '@webassemblyjs/wast-printer@1.11.6': dependencies: '@webassemblyjs/ast': 1.11.6 '@xtuc/long': 4.2.2 - dev: false - /@xtuc/ieee754@1.2.0: - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - dev: false + '@xtuc/ieee754@1.2.0': {} - /@xtuc/long@4.2.2: - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - dev: false + '@xtuc/long@4.2.2': {} - /abbrev@2.0.0: - resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: false + abbrev@2.0.0: {} - /abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} + abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 - dev: false - /acorn-import-assertions@1.9.0(acorn@8.11.3): - resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} - peerDependencies: - acorn: ^8 + acorn-import-assertions@1.9.0(acorn@8.11.3): dependencies: acorn: 8.11.3 - dev: false - /acorn-jsx@5.3.2(acorn@8.11.3): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-jsx@5.3.2(acorn@8.11.3): dependencies: acorn: 8.11.3 - dev: true - /acorn-walk@8.3.0: - resolution: {integrity: sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==} - engines: {node: '>=0.4.0'} + acorn-walk@8.3.0: {} - /acorn@8.10.0: - resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} - engines: {node: '>=0.4.0'} - hasBin: true + acorn@8.10.0: {} - /acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} - engines: {node: '>=0.4.0'} - hasBin: true + acorn@8.11.3: {} - /agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} + agent-base@6.0.2: dependencies: debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: false - /agent-base@7.1.0: - resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} - engines: {node: '>= 14'} + agent-base@7.1.0: dependencies: debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: false - /ajv-formats@2.1.1(ajv@8.12.0): - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - dependencies: + ajv-formats@2.1.1(ajv@8.12.0): + optionalDependencies: ajv: 8.12.0 - dev: false - /ajv-keywords@3.5.2(ajv@6.12.6): - resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} - peerDependencies: - ajv: ^6.9.1 + ajv-keywords@3.5.2(ajv@6.12.6): dependencies: ajv: 6.12.6 - dev: false - /ajv-keywords@5.1.0(ajv@8.12.0): - resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} - peerDependencies: - ajv: ^8.8.2 + ajv-keywords@5.1.0(ajv@8.12.0): dependencies: ajv: 8.12.0 fast-deep-equal: 3.1.3 - dev: false - /ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - /ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + ajv@8.12.0: dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 uri-js: 4.4.1 - dev: false - /ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - dev: true + ansi-colors@4.1.3: {} - /ansi-escapes@5.0.0: - resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} - engines: {node: '>=12'} + ansi-escapes@5.0.0: dependencies: type-fest: 1.4.0 - dev: true - - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - /ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} + ansi-regex@5.0.1: {} - /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} + ansi-regex@6.0.1: {} + + ansi-styles@3.2.1: dependencies: color-convert: 1.9.3 - /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 - /ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} + ansi-styles@6.2.1: {} - /any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + any-promise@1.3.0: {} - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - /arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + arg@4.1.3: {} - /arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + arg@5.0.2: {} - /argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + argparse@1.0.10: dependencies: sprintf-js: 1.0.3 - dev: true - /argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true + argparse@2.0.1: {} - /aria-hidden@1.2.3: - resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==} - engines: {node: '>=10'} + aria-hidden@1.2.3: dependencies: tslib: 2.6.2 - dev: false - /aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + aria-query@5.3.0: dependencies: dequal: 2.0.3 - dev: true - /array-buffer-byte-length@1.0.0: - resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + array-buffer-byte-length@1.0.0: dependencies: call-bind: 1.0.5 is-array-buffer: 3.0.2 - dev: true - /array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} - engines: {node: '>= 0.4'} + array-buffer-byte-length@1.0.1: dependencies: call-bind: 1.0.7 is-array-buffer: 3.0.4 - dev: true - /array-includes@3.1.7: - resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} - engines: {node: '>= 0.4'} + array-includes@3.1.7: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 get-intrinsic: 1.2.2 is-string: 1.0.7 - dev: true - /array-includes@3.1.8: - resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} - engines: {node: '>= 0.4'} + array-includes@3.1.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -3222,16 +6979,10 @@ packages: es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 is-string: 1.0.7 - dev: true - /array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - dev: true + array-union@2.1.0: {} - /array.prototype.findlast@1.2.5: - resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} - engines: {node: '>= 0.4'} + array.prototype.findlast@1.2.5: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -3239,62 +6990,45 @@ packages: es-errors: 1.3.0 es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 - dev: true - /array.prototype.findlastindex@1.2.3: - resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} - engines: {node: '>= 0.4'} + array.prototype.findlastindex@1.2.3: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 es-shim-unscopables: 1.0.2 get-intrinsic: 1.2.2 - dev: true - /array.prototype.flat@1.3.2: - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} - engines: {node: '>= 0.4'} + array.prototype.flat@1.3.2: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 es-shim-unscopables: 1.0.2 - dev: true - /array.prototype.flatmap@1.3.2: - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} - engines: {node: '>= 0.4'} + array.prototype.flatmap@1.3.2: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 es-shim-unscopables: 1.0.2 - dev: true - /array.prototype.toreversed@1.1.2: - resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} + array.prototype.toreversed@1.1.2: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 es-shim-unscopables: 1.0.2 - dev: true - /array.prototype.tosorted@1.1.4: - resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} - engines: {node: '>= 0.4'} + array.prototype.tosorted@1.1.4: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-errors: 1.3.0 es-shim-unscopables: 1.0.2 - dev: true - /arraybuffer.prototype.slice@1.0.2: - resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} - engines: {node: '>= 0.4'} + arraybuffer.prototype.slice@1.0.2: dependencies: array-buffer-byte-length: 1.0.0 call-bind: 1.0.5 @@ -3303,11 +7037,8 @@ packages: get-intrinsic: 1.2.2 is-array-buffer: 3.0.2 is-shared-array-buffer: 1.0.2 - dev: true - /arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} - engines: {node: '>= 0.4'} + arraybuffer.prototype.slice@1.0.3: dependencies: array-buffer-byte-length: 1.0.1 call-bind: 1.0.7 @@ -3317,53 +7048,28 @@ packages: get-intrinsic: 1.2.4 is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.3 - dev: true - /arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - dev: true + arrify@1.0.1: {} - /arrify@2.0.1: - resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} - engines: {node: '>=8'} - dev: false + arrify@2.0.1: {} - /asap@2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - dev: false + asap@2.0.6: {} - /ast-types-flow@0.0.8: - resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} - dev: true + ast-types-flow@0.0.8: {} - /async-retry@1.3.3: - resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} + async-retry@1.3.3: dependencies: retry: 0.13.1 - dev: false - /asynciterator.prototype@1.0.0: - resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} + asynciterator.prototype@1.0.0: dependencies: has-symbols: 1.0.3 - dev: true - /asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: false + asynckit@0.4.0: {} - /attr-accept@2.2.2: - resolution: {integrity: sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==} - engines: {node: '>=4'} - dev: false + attr-accept@2.2.2: {} - /autoprefixer@10.4.16(postcss@8.4.28): - resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 + autoprefixer@10.4.16(postcss@8.4.28): dependencies: browserslist: 4.21.10 caniuse-lite: 1.0.30001572 @@ -3372,166 +7078,102 @@ packages: picocolors: 1.0.0 postcss: 8.4.28 postcss-value-parser: 4.2.0 - dev: true - /available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} - engines: {node: '>= 0.4'} - dev: true + available-typed-arrays@1.0.5: {} - /available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} + available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.0.0 - dev: true - /axe-core@4.7.0: - resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} - engines: {node: '>=4'} - dev: true + axe-core@4.7.0: {} - /axios@1.6.2: - resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==} + axios@1.6.2: dependencies: follow-redirects: 1.15.2 form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug - dev: false - /axobject-query@3.2.1: - resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} + axobject-query@3.2.1: dependencies: dequal: 2.0.3 - dev: true - /babel-loader@9.1.3(@babel/core@7.22.17)(webpack@5.89.0): - resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} - engines: {node: '>= 14.15.0'} - peerDependencies: - '@babel/core': ^7.12.0 - webpack: '>=5' + babel-loader@9.1.3(@babel/core@7.22.17)(webpack@5.89.0): dependencies: '@babel/core': 7.22.17 find-cache-dir: 4.0.0 schema-utils: 4.2.0 webpack: 5.89.0 - dev: false - /babel-plugin-transform-remove-imports@1.7.0(@babel/core@7.22.17): - resolution: {integrity: sha512-gprmWf6ry5qrnxMyiDaxZpXzZJP6R9FRA+p0AImLIWRmSEGtlKcFprHKeGMZYkII9rJR6Q1hYou+n1fk6rWf2g==} - peerDependencies: - '@babel/core': ^7.0.0-0 + babel-plugin-transform-remove-imports@1.7.0(@babel/core@7.22.17): dependencies: '@babel/core': 7.22.17 - dev: false - /bail@2.0.2: - resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - dev: false + bail@2.0.2: {} - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@1.0.2: {} - /base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: false + base64-js@1.5.1: {} - /bcp-47-match@2.0.3: - resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} - dev: false + bcp-47-match@2.0.3: {} - /better-path-resolve@1.0.0: - resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} - engines: {node: '>=4'} + better-path-resolve@1.0.0: dependencies: is-windows: 1.0.2 - dev: true - /bignumber.js@9.1.2: - resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} - dev: false + bignumber.js@9.1.2: {} - /binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} + binary-extensions@2.2.0: {} - /boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - dev: false + boolbase@1.0.0: {} - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - /brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + brace-expansion@2.0.1: dependencies: balanced-match: 1.0.2 - /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} + braces@3.0.2: dependencies: fill-range: 7.0.1 - /breakword@1.0.6: - resolution: {integrity: sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==} + breakword@1.0.6: dependencies: wcwidth: 1.0.1 - dev: true - /browserslist@4.21.10: - resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true + browserslist@4.21.10: dependencies: caniuse-lite: 1.0.30001572 electron-to-chromium: 1.4.503 node-releases: 2.0.13 update-browserslist-db: 1.0.11(browserslist@4.21.10) - /browserslist@4.22.2: - resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true + browserslist@4.22.2: dependencies: caniuse-lite: 1.0.30001587 electron-to-chromium: 1.4.616 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.22.2) - dev: false - /buffer-equal-constant-time@1.0.1: - resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} - dev: false + buffer-equal-constant-time@1.0.1: {} - /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: false + buffer-from@1.1.2: {} - /busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} + busboy@1.6.0: dependencies: streamsearch: 1.1.0 - dev: false - /call-bind@1.0.5: - resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + call-bind@1.0.5: dependencies: function-bind: 1.1.2 get-intrinsic: 1.2.2 set-function-length: 1.1.1 - dev: true - /call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} + call-bind@1.0.7: dependencies: es-define-property: 1.0.0 es-errors: 1.3.0 @@ -3539,92 +7181,53 @@ packages: get-intrinsic: 1.2.4 set-function-length: 1.2.2 - /callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - dev: true + callsites@3.1.0: {} - /camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} + camelcase-css@2.0.1: {} - /camelcase-keys@6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} - engines: {node: '>=8'} + camelcase-keys@6.2.2: dependencies: camelcase: 5.3.1 map-obj: 4.3.0 quick-lru: 4.0.1 - dev: true - /camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - dev: true + camelcase@5.3.1: {} - /caniuse-lite@1.0.30001572: - resolution: {integrity: sha512-1Pbh5FLmn5y4+QhNyJE9j3/7dK44dGB83/ZMjv/qJk86TvDbjk0LosiZo0i0WB0Vx607qMX9jYrn1VLHCkN4rw==} + caniuse-lite@1.0.30001572: {} - /caniuse-lite@1.0.30001587: - resolution: {integrity: sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA==} - dev: false + caniuse-lite@1.0.30001587: {} - /ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - dev: false + ccount@2.0.1: {} - /chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} + chalk@2.4.2: dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 - /chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} + chalk@3.0.0: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - dev: false - /chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - dev: true - /chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - dev: true + chalk@5.3.0: {} - /character-entities-html4@2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - dev: false + character-entities-html4@2.1.0: {} - /character-entities-legacy@3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - dev: false + character-entities-legacy@3.0.0: {} - /character-entities@2.0.2: - resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - dev: false + character-entities@2.0.2: {} - /character-reference-invalid@2.0.1: - resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - dev: false + character-reference-invalid@2.0.1: {} - /chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - dev: true + chardet@0.7.0: {} - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} + chokidar@3.5.3: dependencies: anymatch: 3.1.3 braces: 3.0.2 @@ -3636,511 +7239,300 @@ packages: optionalDependencies: fsevents: 2.3.3 - /chrome-trace-event@1.0.3: - resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} - engines: {node: '>=6.0'} - dev: false + chrome-trace-event@1.0.3: {} - /ci-info@3.8.0: - resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} - engines: {node: '>=8'} - dev: true + ci-info@3.8.0: {} - /class-variance-authority@0.7.0: - resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} + class-variance-authority@0.7.0: dependencies: clsx: 2.0.0 - dev: false - /cli-cursor@4.0.0: - resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + cli-cursor@4.0.0: dependencies: restore-cursor: 4.0.0 - dev: true - /cli-truncate@3.1.0: - resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + cli-truncate@3.1.0: dependencies: slice-ansi: 5.0.0 string-width: 5.1.2 - dev: true - /client-only@0.0.1: - resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - dev: false + client-only@0.0.1: {} - /cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + cliui@6.0.0: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 6.2.0 - dev: true - /cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} + cliui@8.0.1: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - dev: true - /clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - dev: true + clone@1.0.4: {} - /clsx@2.0.0: - resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} - engines: {node: '>=6'} - dev: false + clsx@2.0.0: {} - /clsx@2.1.0: - resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} - engines: {node: '>=6'} - dev: false + clsx@2.1.0: {} - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + color-convert@1.9.3: dependencies: color-name: 1.1.3 - /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} + color-convert@2.0.1: dependencies: color-name: 1.1.4 - /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + color-name@1.1.3: {} - /color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + color-name@1.1.4: {} - /colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - dev: true + colorette@2.0.20: {} - /combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} + combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 - dev: false - /comma-separated-tokens@2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - dev: false + comma-separated-tokens@2.0.3: {} - /commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} - dev: false + commander@10.0.1: {} - /commander@11.1.0: - resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} - engines: {node: '>=16'} - dev: true + commander@11.1.0: {} - /commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - dev: false + commander@2.20.3: {} - /commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} + commander@4.1.1: {} - /common-path-prefix@3.0.0: - resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} - dev: false + common-path-prefix@3.0.0: {} - /commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - dev: false + commondir@1.0.1: {} - /compressible@2.0.18: - resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} - engines: {node: '>= 0.6'} + compressible@2.0.18: dependencies: mime-db: 1.52.0 - dev: false - /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + concat-map@0.0.1: {} - /config-chain@1.1.13: - resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + config-chain@1.1.13: dependencies: ini: 1.3.8 proto-list: 1.2.4 - dev: false - /confusing-browser-globals@1.0.11: - resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} - dev: true + confusing-browser-globals@1.0.11: {} - /convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - dev: false + convert-source-map@1.9.0: {} - /cookie@0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} - engines: {node: '>= 0.6'} - dev: false + cookie@0.5.0: {} - /create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + create-require@1.1.1: {} - /cross-spawn@5.1.0: - resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} + cross-spawn@5.1.0: dependencies: lru-cache: 4.1.5 shebang-command: 1.2.0 which: 1.3.1 - dev: true - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} + cross-spawn@7.0.3: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - /css-selector-parser@3.0.4: - resolution: {integrity: sha512-pnmS1dbKsz6KA4EW4BznyPL2xxkNDRg62hcD0v8g6DEw2W7hxOln5M953jsp9hmw5Dg57S6o/A8GOn37mbAgcQ==} - dev: false + css-selector-parser@3.0.4: {} - /cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true + cssesc@3.0.0: {} - /csstype@3.1.2: - resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + csstype@3.1.2: {} - /csv-generate@3.4.3: - resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} - dev: true + csv-generate@3.4.3: {} - /csv-parse@4.16.3: - resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} - dev: true + csv-parse@4.16.3: {} - /csv-stringify@5.6.5: - resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} - dev: true + csv-stringify@5.6.5: {} - /csv@5.5.3: - resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} - engines: {node: '>= 0.1.90'} + csv@5.5.3: dependencies: csv-generate: 3.4.3 csv-parse: 4.16.3 csv-stringify: 5.6.5 stream-transform: 2.1.3 - dev: true - /damerau-levenshtein@1.0.8: - resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - dev: true + damerau-levenshtein@1.0.8: {} - /data-view-buffer@1.0.1: - resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} - engines: {node: '>= 0.4'} + data-view-buffer@1.0.1: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 - dev: true - /data-view-byte-length@1.0.1: - resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} - engines: {node: '>= 0.4'} + data-view-byte-length@1.0.1: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 - dev: true - /data-view-byte-offset@1.0.0: - resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} - engines: {node: '>= 0.4'} + data-view-byte-offset@1.0.0: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 - dev: true - /debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + debug@3.2.7: dependencies: ms: 2.1.2 - dev: true - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + debug@4.3.4: dependencies: ms: 2.1.2 - /decamelize-keys@1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} - engines: {node: '>=0.10.0'} + decamelize-keys@1.1.1: dependencies: decamelize: 1.2.0 map-obj: 1.0.1 - dev: true - /decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - dev: true + decamelize@1.2.0: {} - /decode-named-character-reference@1.0.2: - resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + decode-named-character-reference@1.0.2: dependencies: character-entities: 2.0.2 - dev: false - /deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: true + deep-is@0.1.4: {} - /deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - dev: false + deepmerge@4.3.1: {} - /defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + defaults@1.0.4: dependencies: clone: 1.0.4 - dev: true - /define-data-property@1.1.1: - resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} - engines: {node: '>= 0.4'} + define-data-property@1.1.1: dependencies: get-intrinsic: 1.2.2 gopd: 1.0.1 has-property-descriptors: 1.0.1 - dev: true - /define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} + define-data-property@1.1.4: dependencies: es-define-property: 1.0.0 es-errors: 1.3.0 gopd: 1.0.1 - /define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} + define-properties@1.2.1: dependencies: define-data-property: 1.1.1 has-property-descriptors: 1.0.1 object-keys: 1.1.1 - dev: true - /delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - dev: false + delayed-stream@1.0.0: {} - /dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} + dequal@2.0.3: {} - /detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - dev: true + detect-indent@6.1.0: {} - /detect-node-es@1.1.0: - resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} - dev: false + detect-node-es@1.1.0: {} - /devlop@1.1.0: - resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + devlop@1.1.0: dependencies: dequal: 2.0.3 - dev: false - /dezalgo@1.0.4: - resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} + dezalgo@1.0.4: dependencies: asap: 2.0.6 wrappy: 1.0.2 - dev: false - /didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + didyoumean@1.2.2: {} - /diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} + diff@4.0.2: {} - /dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} + dir-glob@3.0.1: dependencies: path-type: 4.0.0 - dev: true - /direction@2.0.1: - resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} - hasBin: true - dev: false + direction@2.0.1: {} - /dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dlv@1.1.3: {} - /doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} + doctrine@2.1.0: dependencies: esutils: 2.0.3 - dev: true - /doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} + doctrine@3.0.0: dependencies: esutils: 2.0.3 - dev: true - /dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + dom-serializer@2.0.0: dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 entities: 4.5.0 - dev: false - /domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - dev: false + domelementtype@2.3.0: {} - /domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} + domhandler@5.0.3: dependencies: domelementtype: 2.3.0 - dev: false - /domutils@3.1.0: - resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + domutils@3.1.0: dependencies: dom-serializer: 2.0.0 domelementtype: 2.3.0 domhandler: 5.0.3 - dev: false - /dotenv@16.4.5: - resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} - engines: {node: '>=12'} - dev: true + dotenv@16.4.5: {} - /duplexify@4.1.2: - resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==} + duplexify@4.1.2: dependencies: end-of-stream: 1.4.4 inherits: 2.0.4 readable-stream: 3.6.2 stream-shift: 1.0.3 - dev: false - /eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + eastasianwidth@0.2.0: {} - /ecdsa-sig-formatter@1.0.11: - resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + ecdsa-sig-formatter@1.0.11: dependencies: safe-buffer: 5.2.1 - dev: false - - /editorconfig@1.0.4: - resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==} - engines: {node: '>=14'} - hasBin: true + + editorconfig@1.0.4: dependencies: '@one-ini/wasm': 0.1.1 commander: 10.0.1 minimatch: 9.0.1 semver: 7.6.2 - dev: false - /electron-to-chromium@1.4.503: - resolution: {integrity: sha512-LF2IQit4B0VrUHFeQkWhZm97KuJSGF2WJqq1InpY+ECpFRkXd8yTIaTtJxsO0OKDmiBYwWqcrNaXOurn2T2wiA==} + electron-to-chromium@1.4.503: {} - /electron-to-chromium@1.4.616: - resolution: {integrity: sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==} - dev: false + electron-to-chromium@1.4.616: {} - /emoji-mart@5.6.0: - resolution: {integrity: sha512-eJp3QRe79pjwa+duv+n7+5YsNhRcMl812EcFVwrnRvYKoNPoQb5qxU8DG6Bgwji0akHdp6D4Ln6tYLG58MFSow==} - dev: false + emoji-mart@5.6.0: {} - /emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + emoji-regex@8.0.0: {} - /emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + emoji-regex@9.2.2: {} - /end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + end-of-stream@1.4.4: dependencies: once: 1.4.0 - dev: false - /enhanced-resolve@5.15.0: - resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} - engines: {node: '>=10.13.0'} + enhanced-resolve@5.15.0: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 - /enquirer@2.4.1: - resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} - engines: {node: '>=8.6'} + enquirer@2.4.1: dependencies: ansi-colors: 4.1.3 strip-ansi: 6.0.1 - dev: true - /ent@2.2.0: - resolution: {integrity: sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==} - dev: false + ent@2.2.0: {} - /entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - dev: false + entities@4.5.0: {} - /error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 - dev: true - /es-abstract@1.22.3: - resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} - engines: {node: '>= 0.4'} + es-abstract@1.22.3: dependencies: array-buffer-byte-length: 1.0.0 arraybuffer.prototype.slice: 1.0.2 @@ -4181,11 +7573,8 @@ packages: typed-array-length: 1.0.4 unbox-primitive: 1.0.2 which-typed-array: 1.1.13 - dev: true - /es-abstract@1.23.3: - resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} - engines: {node: '>= 0.4'} + es-abstract@1.23.3: dependencies: array-buffer-byte-length: 1.0.1 arraybuffer.prototype.slice: 1.0.3 @@ -4233,20 +7622,14 @@ packages: typed-array-length: 1.0.6 unbox-primitive: 1.0.2 which-typed-array: 1.1.15 - dev: true - /es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} + es-define-property@1.0.0: dependencies: get-intrinsic: 1.2.4 - /es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} + es-errors@1.3.0: {} - /es-iterator-helpers@1.0.15: - resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} + es-iterator-helpers@1.0.15: dependencies: asynciterator.prototype: 1.0.0 call-bind: 1.0.5 @@ -4262,11 +7645,8 @@ packages: internal-slot: 1.0.6 iterator.prototype: 1.1.2 safe-array-concat: 1.0.1 - dev: true - /es-iterator-helpers@1.0.19: - resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} - engines: {node: '>= 0.4'} + es-iterator-helpers@1.0.19: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -4282,176 +7662,109 @@ packages: internal-slot: 1.0.7 iterator.prototype: 1.1.2 safe-array-concat: 1.1.2 - dev: true - /es-module-lexer@1.4.1: - resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} - dev: false + es-module-lexer@1.4.1: {} - /es-object-atoms@1.0.0: - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} - engines: {node: '>= 0.4'} + es-object-atoms@1.0.0: dependencies: es-errors: 1.3.0 - dev: true - /es-set-tostringtag@2.0.2: - resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} - engines: {node: '>= 0.4'} + es-set-tostringtag@2.0.2: dependencies: get-intrinsic: 1.2.2 has-tostringtag: 1.0.0 hasown: 2.0.0 - dev: true - /es-set-tostringtag@2.0.3: - resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} - engines: {node: '>= 0.4'} + es-set-tostringtag@2.0.3: dependencies: get-intrinsic: 1.2.4 has-tostringtag: 1.0.2 hasown: 2.0.2 - dev: true - /es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + es-shim-unscopables@1.0.2: dependencies: hasown: 2.0.0 - dev: true - /es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} + es-to-primitive@1.2.1: dependencies: is-callable: 1.2.7 is-date-object: 1.0.5 is-symbol: 1.0.4 - dev: true - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} + escalade@3.1.1: {} - /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} + escape-string-regexp@1.0.5: {} - /escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - dev: true + escape-string-regexp@4.0.0: {} - /escape-string-regexp@5.0.0: - resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} - engines: {node: '>=12'} - dev: false + escape-string-regexp@5.0.0: {} - /eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.0): - resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - eslint: ^7.32.0 || ^8.2.0 - eslint-plugin-import: ^2.25.2 + eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint@8.57.0): dependencies: confusing-browser-globals: 1.0.11 eslint: 8.57.0 - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.12.0)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0) object.assign: 4.1.5 object.entries: 1.1.7 semver: 6.3.1 - dev: true - /eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@7.14.1)(@typescript-eslint/parser@7.12.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0): - resolution: {integrity: sha512-oc+Lxzgzsu8FQyFVa4QFaVKiitTYiiW3frB9KYW5OWdPrqFc7FzxgB20hP4cHMlr+MBzGcLl3jnCOVOydL9mIg==} - peerDependencies: - '@typescript-eslint/eslint-plugin': ^7.0.0 - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 + eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3))(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint@8.57.0): dependencies: - '@typescript-eslint/eslint-plugin': 7.14.1(@typescript-eslint/parser@7.12.0)(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/eslint-plugin': 7.14.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3) '@typescript-eslint/parser': 7.12.0(eslint@8.57.0)(typescript@5.3.3) eslint: 8.57.0 - eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint@8.57.0) transitivePeerDependencies: - eslint-plugin-import - dev: true - /eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.34.2)(eslint@8.57.0): - resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==} - engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^7.32.0 || ^8.2.0 - eslint-plugin-import: ^2.25.3 - eslint-plugin-jsx-a11y: ^6.5.1 - eslint-plugin-react: ^7.28.0 - eslint-plugin-react-hooks: ^4.3.0 + eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.0))(eslint-plugin-react@7.34.2(eslint@8.57.0))(eslint@8.57.0): dependencies: eslint: 8.57.0 - eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.12.0)(eslint@8.57.0) + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) eslint-plugin-react: 7.34.2(eslint@8.57.0) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) object.assign: 4.1.5 object.entries: 1.1.7 - dev: true - /eslint-config-next@14.1.0(eslint@8.57.0)(typescript@5.3.3): - resolution: {integrity: sha512-SBX2ed7DoRFXC6CQSLc/SbLY9Ut6HxNB2wPTcoIWjUMd7aF7O/SIE7111L8FdZ9TXsNV4pulUDnfthpyPtbFUg==} - peerDependencies: - eslint: ^7.23.0 || ^8.0.0 - typescript: '>=3.3.1' - peerDependenciesMeta: - typescript: - optional: true + eslint-config-next@14.1.0(eslint@8.57.0)(typescript@5.3.3): dependencies: '@next/eslint-plugin-next': 14.1.0 '@rushstack/eslint-patch': 1.6.1 '@typescript-eslint/parser': 6.17.0(eslint@8.57.0)(typescript@5.3.3) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) eslint-plugin-react: 7.34.2(eslint@8.57.0) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) + optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - eslint-import-resolver-webpack - supports-color - dev: true - /eslint-config-prettier@9.0.0(eslint@8.57.0): - resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' + eslint-config-prettier@9.0.0(eslint@8.57.0): dependencies: eslint: 8.57.0 - dev: true - /eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7 is-core-module: 2.13.1 resolve: 1.22.8 transitivePeerDependencies: - supports-color - dev: true - /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0): - resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: '*' - eslint-plugin-import: '*' + eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0): dependencies: debug: 4.3.4 enhanced-resolve: 5.15.0 eslint: 8.57.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) fast-glob: 3.3.2 get-tsconfig: 4.7.2 is-core-module: 2.13.1 @@ -4461,78 +7774,30 @@ packages: - eslint-import-resolver-node - eslint-import-resolver-webpack - supports-color - dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true + eslint-module-utils@2.8.0(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0): dependencies: - '@typescript-eslint/parser': 6.17.0(eslint@8.57.0)(typescript@5.3.3) debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 6.17.0(eslint@8.57.0)(typescript@5.3.3) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) transitivePeerDependencies: - supports-color - dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@7.12.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true + eslint-module-utils@2.8.0(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): dependencies: - '@typescript-eslint/parser': 7.12.0(eslint@8.57.0)(typescript@5.3.3) debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 7.12.0(eslint@8.57.0)(typescript@5.3.3) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): - resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true + eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): dependencies: - '@typescript-eslint/parser': 6.17.0(eslint@8.57.0)(typescript@5.3.3) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 @@ -4541,7 +7806,7 @@ packages: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -4551,23 +7816,15 @@ packages: object.values: 1.1.7 semver: 6.3.1 tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 6.17.0(eslint@8.57.0)(typescript@5.3.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0)(eslint@8.57.0): - resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true + eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0): dependencies: - '@typescript-eslint/parser': 7.12.0(eslint@8.57.0)(typescript@5.3.3) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 @@ -4576,7 +7833,7 @@ packages: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.12.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -4586,17 +7843,14 @@ packages: object.values: 1.1.7 semver: 6.3.1 tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 7.12.0(eslint@8.57.0)(typescript@5.3.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - dev: true - /eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0): - resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0): dependencies: '@babel/runtime': 7.23.7 aria-query: 5.3.0 @@ -4615,57 +7869,27 @@ packages: minimatch: 3.1.2 object.entries: 1.1.7 object.fromentries: 2.0.7 - dev: true - /eslint-plugin-playwright@1.6.2(eslint@8.57.0): - resolution: {integrity: sha512-mraN4Em3b5jLt01q7qWPyLg0Q5v3KAWfJSlEWwldyUXoa7DSPrBR4k6B6LROLqipsG8ndkwWMdjl1Ffdh15tag==} - engines: {node: '>=16.6.0'} - peerDependencies: - eslint: '>=8.40.0' - eslint-plugin-jest: '>=25' - peerDependenciesMeta: - eslint-plugin-jest: - optional: true + eslint-plugin-playwright@1.6.2(eslint@8.57.0): dependencies: eslint: 8.57.0 globals: 13.24.0 - dev: true - /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.0.0)(eslint@8.57.0)(prettier@3.2.5): - resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - '@types/eslint': '>=8.0.0' - eslint: '>=8.0.0' - eslint-config-prettier: '*' - prettier: '>=3.0.0' - peerDependenciesMeta: - '@types/eslint': - optional: true - eslint-config-prettier: - optional: true + eslint-plugin-prettier@5.1.3(@types/eslint@8.56.0)(eslint-config-prettier@9.0.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.2.5): dependencies: eslint: 8.57.0 - eslint-config-prettier: 9.0.0(eslint@8.57.0) prettier: 3.2.5 prettier-linter-helpers: 1.0.0 synckit: 0.8.8 - dev: true + optionalDependencies: + '@types/eslint': 8.56.0 + eslint-config-prettier: 9.0.0(eslint@8.57.0) - /eslint-plugin-react-hooks@4.6.2(eslint@8.57.0): - resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + eslint-plugin-react-hooks@4.6.2(eslint@8.57.0): dependencies: eslint: 8.57.0 - dev: true - /eslint-plugin-react@7.34.2(eslint@8.57.0): - resolution: {integrity: sha512-2HCmrU+/JNigDN6tg55cRDKCQWicYAPB38JGSFDQt95jDm8rrvSUo7YPkOIm5l6ts1j1zCvysNcasvfTMQzUOw==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + eslint-plugin-react@7.34.2(eslint@8.57.0): dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 @@ -4686,64 +7910,35 @@ packages: resolve: 2.0.0-next.5 semver: 6.3.1 string.prototype.matchall: 4.0.11 - dev: true - /eslint-plugin-tailwindcss@3.17.3(tailwindcss@3.4.1): - resolution: {integrity: sha512-DVMVVUFQ+lPraRSuUk2I41XMnusXT6b3WaQZYlUHduULnERaqe9sNfmpRY1IyxlzmKoQxSbZ8IHRhl9ePo8PeA==} - engines: {node: '>=18.12.0'} - peerDependencies: - tailwindcss: ^3.4.0 + eslint-plugin-tailwindcss@3.17.3(tailwindcss@3.4.1(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3))): dependencies: fast-glob: 3.3.2 postcss: 8.4.31 - tailwindcss: 3.4.1(ts-node@10.9.1) - dev: true + tailwindcss: 3.4.1(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3)) - /eslint-plugin-unused-imports@4.0.0(@typescript-eslint/eslint-plugin@7.14.1)(eslint@8.57.0): - resolution: {integrity: sha512-mzM+y2B7XYpQryVa1usT+Y/BdNAtAZiXzwpSyDCboFoJN/LZRN67TNvQxKtuTK/Aplya3sLNQforiubzPPaIcQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/eslint-plugin': '8' - eslint: '9' - peerDependenciesMeta: - '@typescript-eslint/eslint-plugin': - optional: true + eslint-plugin-unused-imports@4.0.0(@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0): dependencies: - '@typescript-eslint/eslint-plugin': 7.14.1(@typescript-eslint/parser@7.12.0)(eslint@8.57.0)(typescript@5.3.3) eslint: 8.57.0 eslint-rule-composer: 0.3.0 - dev: true + optionalDependencies: + '@typescript-eslint/eslint-plugin': 7.14.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3) - /eslint-rule-composer@0.3.0: - resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} - engines: {node: '>=4.0.0'} - dev: true + eslint-rule-composer@0.3.0: {} - /eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} + eslint-scope@5.1.1: dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 - dev: false - /eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-scope@7.2.2: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - dev: true - /eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true + eslint-visitor-keys@3.4.3: {} - /eslint@8.57.0: - resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true + eslint@8.57.0: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@eslint-community/regexpp': 4.8.0 @@ -4785,75 +7980,40 @@ packages: text-table: 0.2.0 transitivePeerDependencies: - supports-color - dev: true - /espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + espree@9.6.1: dependencies: acorn: 8.11.3 acorn-jsx: 5.3.2(acorn@8.11.3) eslint-visitor-keys: 3.4.3 - dev: true - /esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - dev: true + esprima@4.0.1: {} - /esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} + esquery@1.5.0: dependencies: estraverse: 5.3.0 - dev: true - /esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} + esrecurse@4.3.0: dependencies: estraverse: 5.3.0 - /estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - dev: false + estraverse@4.3.0: {} - /estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} + estraverse@5.3.0: {} - /estree-util-is-identifier-name@3.0.0: - resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} - dev: false + estree-util-is-identifier-name@3.0.0: {} - /estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - dev: false + estree-walker@2.0.2: {} - /esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - dev: true + esutils@2.0.3: {} - /event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - dev: false + event-target-shim@5.0.1: {} - /eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - dev: true + eventemitter3@5.0.1: {} - /events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - dev: false + events@3.3.0: {} - /execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} + execa@8.0.1: dependencies: cross-spawn: 7.0.3 get-stream: 8.0.1 @@ -4864,35 +8024,22 @@ packages: onetime: 6.0.0 signal-exit: 4.1.0 strip-final-newline: 3.0.0 - dev: true - /extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - dev: false + extend@3.0.2: {} - /extendable-error@0.1.7: - resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} - dev: true + extendable-error@0.1.7: {} - /external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} + external-editor@3.1.0: dependencies: chardet: 0.7.0 iconv-lite: 0.4.24 tmp: 0.0.33 - dev: true - /fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-deep-equal@3.1.3: {} - /fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - dev: true + fast-diff@1.3.0: {} - /fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} + fast-glob@3.3.2: dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 @@ -4900,205 +8047,126 @@ packages: merge2: 1.4.1 micromatch: 4.0.5 - /fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + fast-json-stable-stringify@2.1.0: {} - /fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - dev: true + fast-levenshtein@2.0.6: {} - /fast-xml-parser@4.3.4: - resolution: {integrity: sha512-utnwm92SyozgA3hhH2I8qldf2lBqm6qHOICawRNRFu1qMe3+oqr+GcXjGqTmXTMGE5T4eC03kr/rlh5C1IRdZA==} - hasBin: true + fast-xml-parser@4.3.4: dependencies: strnum: 1.0.5 - dev: false - /fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + fastq@1.15.0: dependencies: reusify: 1.0.4 - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + file-entry-cache@6.0.1: dependencies: flat-cache: 3.1.0 - dev: true - /file-selector@0.6.0: - resolution: {integrity: sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==} - engines: {node: '>= 12'} + file-selector@0.6.0: dependencies: tslib: 2.6.2 - dev: false - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} + fill-range@7.0.1: dependencies: to-regex-range: 5.0.1 - /find-cache-dir@4.0.0: - resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} - engines: {node: '>=14.16'} + find-cache-dir@4.0.0: dependencies: common-path-prefix: 3.0.0 pkg-dir: 7.0.0 - dev: false - /find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} + find-up@4.1.0: dependencies: locate-path: 5.0.0 path-exists: 4.0.0 - dev: true - - /find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} + + find-up@5.0.0: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - dev: true - /find-up@6.3.0: - resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + find-up@6.3.0: dependencies: locate-path: 7.2.0 path-exists: 5.0.0 - dev: false - /find-yarn-workspace-root2@1.2.16: - resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} + find-yarn-workspace-root2@1.2.16: dependencies: micromatch: 4.0.5 pkg-dir: 4.2.0 - dev: true - /flat-cache@3.1.0: - resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} - engines: {node: '>=12.0.0'} + flat-cache@3.1.0: dependencies: flatted: 3.2.7 keyv: 4.5.3 rimraf: 3.0.2 - dev: true - /flatted@3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - dev: true + flatted@3.2.7: {} - /follow-redirects@1.15.2: - resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dev: false + follow-redirects@1.15.2: {} - /for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + for-each@0.3.3: dependencies: is-callable: 1.2.7 - dev: true - /foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} - engines: {node: '>=14'} + foreground-child@3.1.1: dependencies: cross-spawn: 7.0.3 signal-exit: 4.1.0 - /form-data@2.5.1: - resolution: {integrity: sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==} - engines: {node: '>= 0.12'} + form-data@2.5.1: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - dev: false - /form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} + form-data@4.0.0: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - dev: false - /formidable@3.5.1: - resolution: {integrity: sha512-WJWKelbRHN41m5dumb0/k8TeAx7Id/y3a+Z7QfhxP/htI9Js5zYaEDtG8uMgG0vM0lOlqnmjE99/kfpOYi/0Og==} + formidable@3.5.1: dependencies: dezalgo: 1.0.4 hexoid: 1.0.0 once: 1.4.0 - dev: false - /fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - dev: true + fraction.js@4.3.7: {} - /fs-extra@7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} + fs-extra@7.0.1: dependencies: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 - dev: true - /fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} + fs-extra@8.1.0: dependencies: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 - dev: true - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + fs.realpath@1.0.0: {} - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true + fsevents@2.3.2: optional: true - /fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true + fsevents@2.3.3: optional: true - /function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + function-bind@1.1.2: {} - /function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} - engines: {node: '>= 0.4'} + function.prototype.name@1.1.6: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 functions-have-names: 1.2.3 - dev: true - /functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: true + functions-have-names@1.2.3: {} - /gaxios@6.2.0: - resolution: {integrity: sha512-H6+bHeoEAU5D6XNc6mPKeN5dLZqEDs9Gpk6I+SZBEzK5So58JVrHPmevNi35fRl1J9Y5TaeLW0kYx3pCJ1U2mQ==} - engines: {node: '>=14'} + gaxios@6.2.0: dependencies: extend: 3.0.2 https-proxy-agent: 7.0.2 @@ -5107,40 +8175,27 @@ packages: transitivePeerDependencies: - encoding - supports-color - dev: false - /gcp-metadata@6.1.0: - resolution: {integrity: sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==} - engines: {node: '>=14'} + gcp-metadata@6.1.0: dependencies: gaxios: 6.2.0 json-bigint: 1.0.0 transitivePeerDependencies: - encoding - supports-color - dev: false - /gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - dev: false + gensync@1.0.0-beta.2: {} - /get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - dev: true + get-caller-file@2.0.5: {} - /get-intrinsic@1.2.2: - resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + get-intrinsic@1.2.2: dependencies: function-bind: 1.1.2 has-proto: 1.0.1 has-symbols: 1.0.3 hasown: 2.0.0 - /get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} + get-intrinsic@1.2.4: dependencies: es-errors: 1.3.0 function-bind: 1.1.2 @@ -5148,63 +8203,38 @@ packages: has-symbols: 1.0.3 hasown: 2.0.0 - /get-nonce@1.0.1: - resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} - engines: {node: '>=6'} - dev: false + get-nonce@1.0.1: {} - /get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - dev: true + get-stream@8.0.1: {} - /get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} - engines: {node: '>= 0.4'} + get-symbol-description@1.0.0: dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 - dev: true - /get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} - engines: {node: '>= 0.4'} + get-symbol-description@1.0.2: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 - dev: true - /get-tsconfig@4.7.2: - resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + get-tsconfig@4.7.2: dependencies: resolve-pkg-maps: 1.0.0 - dev: true - /github-slugger@2.0.0: - resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} - dev: false + github-slugger@2.0.0: {} - /glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 - /glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} + glob-parent@6.0.2: dependencies: is-glob: 4.0.3 - /glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - dev: false + glob-to-regexp@0.4.1: {} - /glob@10.3.10: - resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true + glob@10.3.10: dependencies: foreground-child: 3.1.1 jackspeak: 2.3.6 @@ -5212,8 +8242,7 @@ packages: minipass: 7.0.4 path-scurry: 1.10.1 - /glob@7.1.6: - resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + glob@7.1.6: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -5222,8 +8251,7 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 - /glob@7.1.7: - resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + glob@7.1.7: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -5231,48 +8259,30 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 - dev: true - /glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} + glob@8.1.0: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 minimatch: 5.1.6 once: 1.4.0 - dev: false - /globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - dev: false + globals@11.12.0: {} - /globals@13.21.0: - resolution: {integrity: sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==} - engines: {node: '>=8'} + globals@13.21.0: dependencies: type-fest: 0.20.2 - dev: true - /globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} + globals@13.24.0: dependencies: type-fest: 0.20.2 - dev: true - /globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} - engines: {node: '>= 0.4'} + globalthis@1.0.3: dependencies: define-properties: 1.2.1 - dev: true - /globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} + globby@11.1.0: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 @@ -5280,11 +8290,8 @@ packages: ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 - dev: true - /google-auth-library@9.6.3: - resolution: {integrity: sha512-4CacM29MLC2eT9Cey5GDVK4Q8t+MMp8+OEdOaqD9MG6b0dOyLORaaeJMPQ7EESVgm/+z5EKYyFLxgzBJlJgyHQ==} - engines: {node: '>=14'} + google-auth-library@9.6.3: dependencies: base64-js: 1.5.1 ecdsa-sig-formatter: 1.0.11 @@ -5295,105 +8302,64 @@ packages: transitivePeerDependencies: - encoding - supports-color - dev: false - /gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + gopd@1.0.1: dependencies: get-intrinsic: 1.2.2 - /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + graceful-fs@4.2.11: {} - /grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: true + grapheme-splitter@1.0.4: {} - /graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - dev: true + graphemer@1.4.0: {} - /gtoken@7.1.0: - resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} - engines: {node: '>=14.0.0'} + gtoken@7.1.0: dependencies: gaxios: 6.2.0 jws: 4.0.0 transitivePeerDependencies: - encoding - supports-color - dev: false - /hard-rejection@2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} - dev: true + hard-rejection@2.1.0: {} - /has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - dev: true + has-bigints@1.0.2: {} - /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} + has-flag@3.0.0: {} - /has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} + has-flag@4.0.0: {} - /has-property-descriptors@1.0.1: - resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + has-property-descriptors@1.0.1: dependencies: get-intrinsic: 1.2.2 - dev: true - /has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.0 - /has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} - engines: {node: '>= 0.4'} + has-proto@1.0.1: {} - /has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} - dev: true + has-proto@1.0.3: {} - /has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} + has-symbols@1.0.3: {} - /has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} - engines: {node: '>= 0.4'} + has-tostringtag@1.0.0: dependencies: has-symbols: 1.0.3 - dev: true - /has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} + has-tostringtag@1.0.2: dependencies: has-symbols: 1.0.3 - dev: true - /hasown@2.0.0: - resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} - engines: {node: '>= 0.4'} + hasown@2.0.0: dependencies: function-bind: 1.1.2 - /hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} + hasown@2.0.2: dependencies: function-bind: 1.1.2 - dev: true - /hast-util-from-html@2.0.1: - resolution: {integrity: sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==} + hast-util-from-html@2.0.1: dependencies: '@types/hast': 3.0.0 devlop: 1.1.0 @@ -5401,10 +8367,8 @@ packages: parse5: 7.1.2 vfile: 6.0.1 vfile-message: 4.0.2 - dev: false - /hast-util-from-parse5@7.1.2: - resolution: {integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==} + hast-util-from-parse5@7.1.2: dependencies: '@types/hast': 2.3.5 '@types/unist': 2.0.8 @@ -5413,10 +8377,8 @@ packages: vfile: 5.3.7 vfile-location: 4.1.0 web-namespaces: 2.0.1 - dev: false - /hast-util-from-parse5@8.0.1: - resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} + hast-util-from-parse5@8.0.1: dependencies: '@types/hast': 3.0.0 '@types/unist': 3.0.0 @@ -5426,40 +8388,28 @@ packages: vfile: 6.0.1 vfile-location: 5.0.2 web-namespaces: 2.0.1 - dev: false - /hast-util-has-property@3.0.0: - resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} + hast-util-has-property@3.0.0: dependencies: '@types/hast': 3.0.0 - dev: false - /hast-util-heading-rank@3.0.0: - resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} + hast-util-heading-rank@3.0.0: dependencies: '@types/hast': 3.0.0 - dev: false - /hast-util-is-element@3.0.0: - resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + hast-util-is-element@3.0.0: dependencies: '@types/hast': 3.0.0 - dev: false - /hast-util-parse-selector@3.1.1: - resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} + hast-util-parse-selector@3.1.1: dependencies: '@types/hast': 2.3.5 - dev: false - /hast-util-parse-selector@4.0.0: - resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} + hast-util-parse-selector@4.0.0: dependencies: '@types/hast': 3.0.0 - dev: false - /hast-util-raw@9.0.1: - resolution: {integrity: sha512-5m1gmba658Q+lO5uqL5YNGQWeh1MYWZbZmWrM5lncdcuiXuo5E2HT/CIOp0rLF8ksfSwiCVJ3twlgVRyTGThGA==} + hast-util-raw@9.0.1: dependencies: '@types/hast': 3.0.0 '@types/unist': 3.0.0 @@ -5474,18 +8424,14 @@ packages: vfile: 6.0.1 web-namespaces: 2.0.1 zwitch: 2.0.4 - dev: false - /hast-util-sanitize@5.0.0: - resolution: {integrity: sha512-L0g/qhOA82zG2hA3O29hnlv4mLU7YVVT1if5JZSr2tKO1ywkQbuMDcN05btgX0HtpqDXQniAM0ar0K+Lv4MDBQ==} + hast-util-sanitize@5.0.0: dependencies: '@types/hast': 3.0.0 '@ungap/structured-clone': 1.2.0 unist-util-position: 5.0.0 - dev: false - /hast-util-select@6.0.2: - resolution: {integrity: sha512-hT/SD/d/Meu+iobvgkffo1QecV8WeKWxwsNMzcTJsKw1cKTQKSR/7ArJeURLNJF9HDjp9nVoORyNNJxrvBye8Q==} + hast-util-select@6.0.2: dependencies: '@types/hast': 3.0.0 '@types/unist': 3.0.0 @@ -5503,10 +8449,8 @@ packages: space-separated-tokens: 2.0.2 unist-util-visit: 5.0.0 zwitch: 2.0.4 - dev: false - /hast-util-to-html@9.0.0: - resolution: {integrity: sha512-IVGhNgg7vANuUA2XKrT6sOIIPgaYZnmLx3l/CCOAK0PtgfoHrZwX7jCSYyFxHTrGmC6S9q8aQQekjp4JPZF+cw==} + hast-util-to-html@9.0.0: dependencies: '@types/hast': 3.0.0 '@types/unist': 3.0.0 @@ -5520,10 +8464,8 @@ packages: space-separated-tokens: 2.0.2 stringify-entities: 4.0.3 zwitch: 2.0.4 - dev: false - /hast-util-to-jsx-runtime@2.3.0: - resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} + hast-util-to-jsx-runtime@2.3.0: dependencies: '@types/estree': 1.0.5 '@types/hast': 3.0.0 @@ -5542,10 +8484,8 @@ packages: vfile-message: 4.0.2 transitivePeerDependencies: - supports-color - dev: false - /hast-util-to-parse5@8.0.0: - resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} + hast-util-to-parse5@8.0.0: dependencies: '@types/hast': 3.0.0 comma-separated-tokens: 2.0.3 @@ -5554,697 +8494,410 @@ packages: space-separated-tokens: 2.0.2 web-namespaces: 2.0.1 zwitch: 2.0.4 - dev: false - /hast-util-to-string@2.0.0: - resolution: {integrity: sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==} + hast-util-to-string@2.0.0: dependencies: '@types/hast': 2.3.5 - dev: false - /hast-util-to-string@3.0.0: - resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} + hast-util-to-string@3.0.0: dependencies: '@types/hast': 3.0.0 - dev: false - /hast-util-whitespace@3.0.0: - resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + hast-util-whitespace@3.0.0: dependencies: '@types/hast': 3.0.0 - dev: false - /hastscript@7.2.0: - resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} + hastscript@7.2.0: dependencies: '@types/hast': 2.3.5 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 3.1.1 property-information: 6.2.0 space-separated-tokens: 2.0.2 - dev: false - /hastscript@8.0.0: - resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} + hastscript@8.0.0: dependencies: '@types/hast': 3.0.0 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 4.0.0 property-information: 6.2.0 space-separated-tokens: 2.0.2 - dev: false - /hexoid@1.0.0: - resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==} - engines: {node: '>=8'} - dev: false + hexoid@1.0.0: {} - /hoist-non-react-statics@3.3.2: - resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + hoist-non-react-statics@3.3.2: dependencies: react-is: 16.13.1 - dev: false - /hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - dev: true + hosted-git-info@2.8.9: {} - /html-to-text@9.0.5: - resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} - engines: {node: '>=14'} + html-to-text@9.0.5: dependencies: '@selderee/plugin-htmlparser2': 0.11.0 deepmerge: 4.3.1 dom-serializer: 2.0.0 htmlparser2: 8.0.2 selderee: 0.11.0 - dev: false - /html-url-attributes@3.0.0: - resolution: {integrity: sha512-/sXbVCWayk6GDVg3ctOX6nxaVj7So40FcFAnWlWGNAB1LpYKcV5Cd10APjPjW80O7zYW2MsjBV4zZ7IZO5fVow==} - dev: false + html-url-attributes@3.0.0: {} - /html-void-elements@3.0.0: - resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - dev: false + html-void-elements@3.0.0: {} - /htmlparser2@8.0.2: - resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + htmlparser2@8.0.2: dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 domutils: 3.1.0 entities: 4.5.0 - dev: false - /http-proxy-agent@5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} + http-proxy-agent@5.0.0: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: false - /https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} + https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: false - /https-proxy-agent@7.0.2: - resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} - engines: {node: '>= 14'} + https-proxy-agent@7.0.2: dependencies: agent-base: 7.1.0 debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: false - /human-id@1.0.2: - resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} - dev: true + human-id@1.0.2: {} - /human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - dev: true + human-signals@5.0.0: {} - /husky@9.0.11: - resolution: {integrity: sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==} - engines: {node: '>=18'} - hasBin: true - dev: true + husky@9.0.11: {} - /iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} + iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 - dev: true - /ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} - engines: {node: '>= 4'} - dev: true + ignore@5.2.4: {} - /ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} - engines: {node: '>= 4'} - dev: true + ignore@5.3.1: {} - /immediate@3.0.6: - resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - dev: false + immediate@3.0.6: {} - /import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} + import-fresh@3.3.0: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - dev: true - /imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - dev: true + imurmurhash@0.1.4: {} - /indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - dev: true + indent-string@4.0.0: {} - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + inflight@1.0.6: dependencies: once: 1.4.0 wrappy: 1.0.2 - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + inherits@2.0.4: {} - /ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - dev: false + ini@1.3.8: {} - /inline-style-parser@0.2.2: - resolution: {integrity: sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==} - dev: false + inline-style-parser@0.2.2: {} - /internal-slot@1.0.6: - resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} - engines: {node: '>= 0.4'} + internal-slot@1.0.6: dependencies: get-intrinsic: 1.2.2 hasown: 2.0.0 side-channel: 1.0.4 - dev: true - /internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} - engines: {node: '>= 0.4'} + internal-slot@1.0.7: dependencies: es-errors: 1.3.0 hasown: 2.0.0 side-channel: 1.0.4 - dev: true - /invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + invariant@2.2.4: dependencies: loose-envify: 1.4.0 - dev: false - /is-alphabetical@2.0.1: - resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} - dev: false + is-alphabetical@2.0.1: {} - /is-alphanumerical@2.0.1: - resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + is-alphanumerical@2.0.1: dependencies: is-alphabetical: 2.0.1 is-decimal: 2.0.1 - dev: false - /is-array-buffer@3.0.2: - resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + is-array-buffer@3.0.2: dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 is-typed-array: 1.1.12 - dev: true - /is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} - engines: {node: '>= 0.4'} + is-array-buffer@3.0.4: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 - dev: true - /is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - dev: true + is-arrayish@0.2.1: {} - /is-async-function@2.0.0: - resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} - engines: {node: '>= 0.4'} + is-async-function@2.0.0: dependencies: has-tostringtag: 1.0.0 - dev: true - /is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + is-bigint@1.0.4: dependencies: has-bigints: 1.0.2 - dev: true - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} + is-binary-path@2.1.0: dependencies: binary-extensions: 2.2.0 - /is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} + is-boolean-object@1.1.2: dependencies: call-bind: 1.0.5 has-tostringtag: 1.0.0 - dev: true - /is-buffer@2.0.5: - resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} - engines: {node: '>=4'} - dev: false + is-buffer@2.0.5: {} - /is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - dev: true + is-callable@1.2.7: {} - /is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + is-core-module@2.13.1: dependencies: hasown: 2.0.0 - /is-data-view@1.0.1: - resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} - engines: {node: '>= 0.4'} + is-data-view@1.0.1: dependencies: is-typed-array: 1.1.13 - dev: true - /is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} + is-date-object@1.0.5: dependencies: has-tostringtag: 1.0.0 - dev: true - /is-decimal@2.0.1: - resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - dev: false + is-decimal@2.0.1: {} - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} + is-extglob@2.1.1: {} - /is-finalizationregistry@1.0.2: - resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + is-finalizationregistry@1.0.2: dependencies: call-bind: 1.0.5 - dev: true - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} + is-fullwidth-code-point@3.0.0: {} - /is-fullwidth-code-point@4.0.0: - resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} - engines: {node: '>=12'} - dev: true + is-fullwidth-code-point@4.0.0: {} - /is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} + is-generator-function@1.0.10: dependencies: has-tostringtag: 1.0.0 - dev: true - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 - /is-hexadecimal@2.0.1: - resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - dev: false + is-hexadecimal@2.0.1: {} - /is-map@2.0.2: - resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} - dev: true + is-map@2.0.2: {} - /is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} - engines: {node: '>= 0.4'} - dev: true + is-negative-zero@2.0.2: {} - /is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - dev: true + is-negative-zero@2.0.3: {} - /is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} + is-number-object@1.0.7: dependencies: has-tostringtag: 1.0.0 - dev: true - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} + is-number@7.0.0: {} - /is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - dev: true + is-path-inside@3.0.3: {} - /is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} - dev: true + is-plain-obj@1.1.0: {} - /is-plain-obj@4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} - engines: {node: '>=12'} - dev: false + is-plain-obj@4.1.0: {} - /is-reference@1.2.1: - resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + is-reference@1.2.1: dependencies: '@types/estree': 1.0.5 - dev: false - /is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} + is-regex@1.1.4: dependencies: call-bind: 1.0.5 has-tostringtag: 1.0.0 - dev: true - /is-set@2.0.2: - resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} - dev: true + is-set@2.0.2: {} - /is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + is-shared-array-buffer@1.0.2: dependencies: call-bind: 1.0.5 - dev: true - /is-shared-array-buffer@1.0.3: - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} - engines: {node: '>= 0.4'} + is-shared-array-buffer@1.0.3: dependencies: call-bind: 1.0.7 - dev: true - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: false + is-stream@2.0.1: {} - /is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true + is-stream@3.0.0: {} - /is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} + is-string@1.0.7: dependencies: has-tostringtag: 1.0.0 - dev: true - /is-subdir@1.2.0: - resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} - engines: {node: '>=4'} + is-subdir@1.2.0: dependencies: better-path-resolve: 1.0.0 - dev: true - /is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} + is-symbol@1.0.4: dependencies: has-symbols: 1.0.3 - dev: true - /is-typed-array@1.1.12: - resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} - engines: {node: '>= 0.4'} + is-typed-array@1.1.12: dependencies: which-typed-array: 1.1.13 - dev: true - /is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} + is-typed-array@1.1.13: dependencies: which-typed-array: 1.1.15 - dev: true - /is-weakmap@2.0.1: - resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} - dev: true + is-weakmap@2.0.1: {} - /is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + is-weakref@1.0.2: dependencies: call-bind: 1.0.5 - dev: true - /is-weakset@2.0.2: - resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + is-weakset@2.0.2: dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 - dev: true - /is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - dev: true + is-windows@1.0.2: {} - /isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - dev: true + isarray@2.0.5: {} - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isexe@2.0.0: {} - /iterator.prototype@1.1.2: - resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + iterator.prototype@1.1.2: dependencies: define-properties: 1.2.1 get-intrinsic: 1.2.2 has-symbols: 1.0.3 reflect.getprototypeof: 1.0.4 set-function-name: 2.0.1 - dev: true - - /jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} + + jackspeak@2.3.6: dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 - /jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} + jest-worker@27.5.1: dependencies: '@types/node': 20.10.6 merge-stream: 2.0.0 supports-color: 8.1.1 - dev: false - /jiti@1.19.3: - resolution: {integrity: sha512-5eEbBDQT/jF1xg6l36P+mWGGoH9Spuy0PCdSr2dtWRDGC6ph/w9ZCL4lmESW8f8F7MwT3XKescfP0wnZWAKL9w==} - hasBin: true + jiti@1.19.3: {} - /jose@4.15.5: - resolution: {integrity: sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==} - dev: false + jose@4.15.5: {} - /jotai@2.6.4(@types/react@18.0.27)(react@18.2.0): - resolution: {integrity: sha512-RniwQPX4893YlNR1muOtyUGHYaTD1fhEN4qnOuZJSrDHj6xdEMrqlRSN/hCm2fshwk78ruecB/P2l+NCVWe6TQ==} - engines: {node: '>=12.20.0'} - peerDependencies: - '@types/react': '>=17.0.0' - react: '>=17.0.0' - peerDependenciesMeta: - '@types/react': - optional: true - react: - optional: true - dependencies: + jotai@2.6.4(@types/react@18.0.27)(react@18.2.0): + optionalDependencies: '@types/react': 18.0.27 react: 18.2.0 - dev: false - /js-beautify@1.14.11: - resolution: {integrity: sha512-rPogWqAfoYh1Ryqqh2agUpVfbxAhbjuN1SmU86dskQUKouRiggUTCO4+2ym9UPXllc2WAp0J+T5qxn7Um3lCdw==} - engines: {node: '>=14'} - hasBin: true + js-beautify@1.14.11: dependencies: config-chain: 1.1.13 editorconfig: 1.0.4 glob: 10.3.10 nopt: 7.2.0 - dev: false - /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + js-tokens@4.0.0: {} - /js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true + js-yaml@3.14.1: dependencies: argparse: 1.0.10 esprima: 4.0.1 - dev: true - /js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true + js-yaml@4.1.0: dependencies: argparse: 2.0.1 - dev: true - /jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - dev: false + jsesc@2.5.2: {} - /json-bigint@1.0.0: - resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} + json-bigint@1.0.0: dependencies: bignumber.js: 9.1.2 - dev: false - /json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - dev: true + json-buffer@3.0.1: {} - /json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + json-parse-even-better-errors@2.3.1: {} - /json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + json-schema-traverse@0.4.1: {} - /json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - dev: false + json-schema-traverse@1.0.0: {} - /json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: true + json-stable-stringify-without-jsonify@1.0.1: {} - /json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true + json5@1.0.2: dependencies: minimist: 1.2.8 - dev: true - /json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - dev: false + json5@2.2.3: {} - /jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 - dev: true - /jsx-ast-utils@3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} - engines: {node: '>=4.0'} + jsx-ast-utils@3.3.5: dependencies: array-includes: 3.1.7 array.prototype.flat: 1.3.2 object.assign: 4.1.5 object.values: 1.1.7 - dev: true - /jwa@2.0.0: - resolution: {integrity: sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==} + jwa@2.0.0: dependencies: buffer-equal-constant-time: 1.0.1 ecdsa-sig-formatter: 1.0.11 safe-buffer: 5.2.1 - dev: false - /jws@4.0.0: - resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} + jws@4.0.0: dependencies: jwa: 2.0.0 safe-buffer: 5.2.1 - dev: false - /keyv@4.5.3: - resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} + keyv@4.5.3: dependencies: json-buffer: 3.0.1 - dev: true - /kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - dev: true + kind-of@6.0.3: {} - /kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - dev: true + kleur@4.1.5: {} - /language-subtag-registry@0.3.22: - resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} - dev: true + language-subtag-registry@0.3.22: {} - /language-tags@1.0.9: - resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} - engines: {node: '>=0.10'} + language-tags@1.0.9: dependencies: language-subtag-registry: 0.3.22 - dev: true - /leac@0.6.0: - resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} - dev: false + leac@0.6.0: {} - /levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} + levn@0.4.1: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 - dev: true - /lie@3.1.1: - resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} + lie@3.1.1: dependencies: immediate: 3.0.6 - dev: false - /lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} + lilconfig@2.1.0: {} - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + lines-and-columns@1.2.4: {} - /lint-staged@15.0.2: - resolution: {integrity: sha512-vnEy7pFTHyVuDmCAIFKR5QDO8XLVlPFQQyujQ/STOxe40ICWqJ6knS2wSJ/ffX/Lw0rz83luRDh+ET7toN+rOw==} - engines: {node: '>=18.12.0'} - hasBin: true + lint-staged@15.0.2: dependencies: chalk: 5.3.0 commander: 11.1.0 @@ -6258,11 +8911,8 @@ packages: yaml: 2.3.3 transitivePeerDependencies: - supports-color - dev: true - /listr2@7.0.2: - resolution: {integrity: sha512-rJysbR9GKIalhTbVL2tYbF2hVyDnrf7pFUZBwjPaMIdadYHmeT+EVi/Bu3qd7ETQPahTotg2WRCatXwRBW554g==} - engines: {node: '>=16.0.0'} + listr2@7.0.2: dependencies: cli-truncate: 3.1.0 colorette: 2.0.20 @@ -6270,145 +8920,89 @@ packages: log-update: 5.0.1 rfdc: 1.3.0 wrap-ansi: 8.1.0 - dev: true - /load-yaml-file@0.2.0: - resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} - engines: {node: '>=6'} + load-yaml-file@0.2.0: dependencies: graceful-fs: 4.2.11 js-yaml: 3.14.1 pify: 4.0.1 strip-bom: 3.0.0 - dev: true - /loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} - engines: {node: '>=6.11.5'} - dev: false + loader-runner@4.3.0: {} - /localforage@1.10.0: - resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} + localforage@1.10.0: dependencies: lie: 3.1.1 - dev: false - /locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} + locate-path@5.0.0: dependencies: p-locate: 4.1.0 - dev: true - /locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} + locate-path@6.0.0: dependencies: p-locate: 5.0.0 - dev: true - /locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + locate-path@7.2.0: dependencies: p-locate: 6.0.0 - dev: false - /lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: true + lodash.merge@4.6.2: {} - /lodash.startcase@4.4.0: - resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - dev: true + lodash.startcase@4.4.0: {} - /log-update@5.0.1: - resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + log-update@5.0.1: dependencies: ansi-escapes: 5.0.0 cli-cursor: 4.0.0 slice-ansi: 5.0.0 strip-ansi: 7.1.0 wrap-ansi: 8.1.0 - dev: true - /longest-streak@3.1.0: - resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - dev: false + longest-streak@3.1.0: {} - /loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true + loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 - /lru-cache@10.2.0: - resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} - engines: {node: 14 || >=16.14} + lru-cache@10.2.0: {} - /lru-cache@4.1.5: - resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + lru-cache@4.1.5: dependencies: pseudomap: 1.0.2 yallist: 2.1.2 - dev: true - /lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 - dev: false - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} + lru-cache@6.0.0: dependencies: yallist: 4.0.0 - /lucide-react@0.400.0(react@18.2.0): - resolution: {integrity: sha512-rpp7pFHh3Xd93KHixNgB0SqThMHpYNzsGUu69UaQbSZ75Q/J3m5t6EhKyMT3m4w2WOxmJ2mY0tD3vebnXqQryQ==} - peerDependencies: - react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + lucide-react@0.400.0(react@18.2.0): dependencies: react: 18.2.0 - dev: false - /magic-string@0.27.0: - resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} - engines: {node: '>=12'} + magic-string@0.27.0: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - dev: false - /make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + make-error@1.3.6: {} - /map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} - dev: true + map-obj@1.0.1: {} - /map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} - dev: true + map-obj@4.3.0: {} - /markdown-table@3.0.3: - resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} - dev: false + markdown-table@3.0.3: {} - /mdast-util-find-and-replace@3.0.1: - resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} + mdast-util-find-and-replace@3.0.1: dependencies: '@types/mdast': 4.0.3 escape-string-regexp: 5.0.0 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - dev: false - /mdast-util-from-markdown@2.0.0: - resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} + mdast-util-from-markdown@2.0.0: dependencies: '@types/mdast': 4.0.3 '@types/unist': 3.0.0 @@ -6424,20 +9018,16 @@ packages: unist-util-stringify-position: 4.0.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-gfm-autolink-literal@2.0.0: - resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} + mdast-util-gfm-autolink-literal@2.0.0: dependencies: '@types/mdast': 4.0.3 ccount: 2.0.1 devlop: 1.1.0 mdast-util-find-and-replace: 3.0.1 micromark-util-character: 2.0.1 - dev: false - /mdast-util-gfm-footnote@2.0.0: - resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} + mdast-util-gfm-footnote@2.0.0: dependencies: '@types/mdast': 4.0.3 devlop: 1.1.0 @@ -6446,20 +9036,16 @@ packages: micromark-util-normalize-identifier: 2.0.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + mdast-util-gfm-strikethrough@2.0.0: dependencies: '@types/mdast': 4.0.3 mdast-util-from-markdown: 2.0.0 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-gfm-table@2.0.0: - resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + mdast-util-gfm-table@2.0.0: dependencies: '@types/mdast': 4.0.3 devlop: 1.1.0 @@ -6468,10 +9054,8 @@ packages: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-gfm-task-list-item@2.0.0: - resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + mdast-util-gfm-task-list-item@2.0.0: dependencies: '@types/mdast': 4.0.3 devlop: 1.1.0 @@ -6479,10 +9063,8 @@ packages: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-gfm@3.0.0: - resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} + mdast-util-gfm@3.0.0: dependencies: mdast-util-from-markdown: 2.0.0 mdast-util-gfm-autolink-literal: 2.0.0 @@ -6493,10 +9075,8 @@ packages: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-mdx-expression@2.0.0: - resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} + mdast-util-mdx-expression@2.0.0: dependencies: '@types/estree-jsx': 1.0.3 '@types/hast': 3.0.0 @@ -6506,10 +9086,8 @@ packages: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-mdx-jsx@3.0.0: - resolution: {integrity: sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==} + mdast-util-mdx-jsx@3.0.0: dependencies: '@types/estree-jsx': 1.0.3 '@types/hast': 3.0.0 @@ -6526,10 +9104,8 @@ packages: vfile-message: 4.0.2 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-mdxjs-esm@2.0.1: - resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + mdast-util-mdxjs-esm@2.0.1: dependencies: '@types/estree-jsx': 1.0.3 '@types/hast': 3.0.0 @@ -6539,17 +9115,13 @@ packages: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-phrasing@4.0.0: - resolution: {integrity: sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==} + mdast-util-phrasing@4.0.0: dependencies: '@types/mdast': 4.0.3 unist-util-is: 6.0.0 - dev: false - /mdast-util-to-hast@13.0.2: - resolution: {integrity: sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==} + mdast-util-to-hast@13.0.2: dependencies: '@types/hast': 3.0.0 '@types/mdast': 4.0.3 @@ -6559,10 +9131,8 @@ packages: trim-lines: 3.0.1 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 - dev: false - /mdast-util-to-markdown@2.1.0: - resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} + mdast-util-to-markdown@2.1.0: dependencies: '@types/mdast': 4.0.3 '@types/unist': 3.0.0 @@ -6572,17 +9142,12 @@ packages: micromark-util-decode-string: 2.0.0 unist-util-visit: 5.0.0 zwitch: 2.0.4 - dev: false - /mdast-util-to-string@4.0.0: - resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + mdast-util-to-string@4.0.0: dependencies: '@types/mdast': 4.0.3 - dev: false - /meow@6.1.1: - resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} - engines: {node: '>=8'} + meow@6.1.1: dependencies: '@types/minimist': 1.2.2 camelcase-keys: 6.2.2 @@ -6595,17 +9160,12 @@ packages: trim-newlines: 3.0.1 type-fest: 0.13.1 yargs-parser: 18.1.3 - dev: true - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + merge-stream@2.0.0: {} - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} + merge2@1.4.1: {} - /micromark-core-commonmark@2.0.0: - resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==} + micromark-core-commonmark@2.0.0: dependencies: decode-named-character-reference: 1.0.2 devlop: 1.1.0 @@ -6623,19 +9183,15 @@ packages: micromark-util-subtokenize: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-extension-gfm-autolink-literal@2.0.0: - resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} + micromark-extension-gfm-autolink-literal@2.0.0: dependencies: micromark-util-character: 2.0.1 micromark-util-sanitize-uri: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-extension-gfm-footnote@2.0.0: - resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==} + micromark-extension-gfm-footnote@2.0.0: dependencies: devlop: 1.1.0 micromark-core-commonmark: 2.0.0 @@ -6645,10 +9201,8 @@ packages: micromark-util-sanitize-uri: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-extension-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==} + micromark-extension-gfm-strikethrough@2.0.0: dependencies: devlop: 1.1.0 micromark-util-chunked: 2.0.0 @@ -6656,36 +9210,28 @@ packages: micromark-util-resolve-all: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-extension-gfm-table@2.0.0: - resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==} + micromark-extension-gfm-table@2.0.0: dependencies: devlop: 1.1.0 micromark-factory-space: 2.0.0 micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-extension-gfm-tagfilter@2.0.0: - resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + micromark-extension-gfm-tagfilter@2.0.0: dependencies: micromark-util-types: 2.0.0 - dev: false - /micromark-extension-gfm-task-list-item@2.0.1: - resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==} + micromark-extension-gfm-task-list-item@2.0.1: dependencies: devlop: 1.1.0 micromark-factory-space: 2.0.0 micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-extension-gfm@3.0.0: - resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + micromark-extension-gfm@3.0.0: dependencies: micromark-extension-gfm-autolink-literal: 2.0.0 micromark-extension-gfm-footnote: 2.0.0 @@ -6695,140 +9241,100 @@ packages: micromark-extension-gfm-task-list-item: 2.0.1 micromark-util-combine-extensions: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-factory-destination@2.0.0: - resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} + micromark-factory-destination@2.0.0: dependencies: micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-factory-label@2.0.0: - resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} + micromark-factory-label@2.0.0: dependencies: devlop: 1.1.0 micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-factory-space@2.0.0: - resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} + micromark-factory-space@2.0.0: dependencies: micromark-util-character: 2.0.1 micromark-util-types: 2.0.0 - dev: false - /micromark-factory-title@2.0.0: - resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} + micromark-factory-title@2.0.0: dependencies: micromark-factory-space: 2.0.0 micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-factory-whitespace@2.0.0: - resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} + micromark-factory-whitespace@2.0.0: dependencies: micromark-factory-space: 2.0.0 micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-util-character@2.0.1: - resolution: {integrity: sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==} + micromark-util-character@2.0.1: dependencies: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-util-chunked@2.0.0: - resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} + micromark-util-chunked@2.0.0: dependencies: micromark-util-symbol: 2.0.0 - dev: false - /micromark-util-classify-character@2.0.0: - resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + micromark-util-classify-character@2.0.0: dependencies: micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-util-combine-extensions@2.0.0: - resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} + micromark-util-combine-extensions@2.0.0: dependencies: micromark-util-chunked: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-util-decode-numeric-character-reference@2.0.1: - resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} + micromark-util-decode-numeric-character-reference@2.0.1: dependencies: micromark-util-symbol: 2.0.0 - dev: false - /micromark-util-decode-string@2.0.0: - resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} + micromark-util-decode-string@2.0.0: dependencies: decode-named-character-reference: 1.0.2 micromark-util-character: 2.0.1 micromark-util-decode-numeric-character-reference: 2.0.1 micromark-util-symbol: 2.0.0 - dev: false - /micromark-util-encode@2.0.0: - resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} - dev: false + micromark-util-encode@2.0.0: {} - /micromark-util-html-tag-name@2.0.0: - resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} - dev: false + micromark-util-html-tag-name@2.0.0: {} - /micromark-util-normalize-identifier@2.0.0: - resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} + micromark-util-normalize-identifier@2.0.0: dependencies: micromark-util-symbol: 2.0.0 - dev: false - /micromark-util-resolve-all@2.0.0: - resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} + micromark-util-resolve-all@2.0.0: dependencies: micromark-util-types: 2.0.0 - dev: false - /micromark-util-sanitize-uri@2.0.0: - resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} + micromark-util-sanitize-uri@2.0.0: dependencies: micromark-util-character: 2.0.1 micromark-util-encode: 2.0.0 micromark-util-symbol: 2.0.0 - dev: false - /micromark-util-subtokenize@2.0.0: - resolution: {integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==} + micromark-util-subtokenize@2.0.0: dependencies: devlop: 1.1.0 micromark-util-chunked: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-util-symbol@2.0.0: - resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} - dev: false + micromark-util-symbol@2.0.0: {} - /micromark-util-types@2.0.0: - resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} - dev: false + micromark-util-types@2.0.0: {} - /micromark@4.0.0: - resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} + micromark@4.0.0: dependencies: '@types/debug': 4.1.8 debug: 4.3.4 @@ -6849,154 +9355,85 @@ packages: micromark-util-types: 2.0.0 transitivePeerDependencies: - supports-color - dev: false - /micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} + micromatch@4.0.5: dependencies: braces: 3.0.2 picomatch: 2.3.1 - /mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - dev: false + mime-db@1.52.0: {} - /mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} + mime-types@2.1.35: dependencies: mime-db: 1.52.0 - dev: false - /mime@3.0.0: - resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} - engines: {node: '>=10.0.0'} - hasBin: true - dev: false + mime@3.0.0: {} - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - dev: true + mimic-fn@2.1.0: {} - /mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - dev: true + mimic-fn@4.0.0: {} - /min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - dev: true + min-indent@1.0.1: {} - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 - /minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} + minimatch@5.1.6: dependencies: brace-expansion: 2.0.1 - dev: false - /minimatch@9.0.1: - resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} - engines: {node: '>=16 || 14 >=14.17'} + minimatch@9.0.1: dependencies: brace-expansion: 2.0.1 - dev: false - /minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} + minimatch@9.0.3: dependencies: brace-expansion: 2.0.1 - dev: true - /minimatch@9.0.4: - resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} - engines: {node: '>=16 || 14 >=14.17'} + minimatch@9.0.4: dependencies: brace-expansion: 2.0.1 - /minimist-options@4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} + minimist-options@4.1.0: dependencies: arrify: 1.0.1 is-plain-obj: 1.1.0 kind-of: 6.0.3 - dev: true - /minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + minimist@1.2.8: {} - /minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} - engines: {node: '>=16 || 14 >=14.17'} + minipass@7.0.4: {} - /mixme@0.5.9: - resolution: {integrity: sha512-VC5fg6ySUscaWUpI4gxCBTQMH2RdUpNrk+MsbpCYtIvf9SBJdiUey4qE7BXviJsJR4nDQxCZ+3yaYNW3guz/Pw==} - engines: {node: '>= 8.0.0'} - dev: true + mixme@0.5.9: {} - /mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true + mkdirp@0.5.6: dependencies: minimist: 1.2.8 - dev: false - /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + ms@2.1.2: {} - /mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + mz@2.7.0: dependencies: any-promise: 1.3.0 object-assign: 4.1.1 thenify-all: 1.6.0 - /nanoid@3.3.6: - resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: true + nanoid@3.3.6: {} - /nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true + nanoid@3.3.7: {} - /natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - dev: true + natural-compare@1.4.0: {} - /neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - dev: false + neo-async@2.6.2: {} - /next-auth@4.24.7(next@14.2.4)(nodemailer@6.9.14)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-iChjE8ov/1K/z98gdKbn2Jw+2vLgJtVV39X+rCP5SGnVQuco7QOr19FRNGMIrD8d3LYhHWV9j9sKLzq1aDWWQQ==} - peerDependencies: - next: ^12.2.5 || ^13 || ^14 - nodemailer: ^6.6.5 - react: ^17.0.2 || ^18 - react-dom: ^17.0.2 || ^18 - peerDependenciesMeta: - nodemailer: - optional: true + next-auth@4.24.7(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@babel/runtime': 7.23.7 '@panva/hkdf': 1.1.1 cookie: 0.5.0 jose: 4.15.5 - next: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0)(react@18.2.0) - nodemailer: 6.9.14 + next: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) oauth: 0.9.15 openid-client: 5.6.5 preact: 10.11.3 @@ -7004,10 +9441,10 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) uuid: 8.3.2 - dev: false + optionalDependencies: + nodemailer: 6.9.14 - /next-remove-imports@1.0.12(webpack@5.89.0): - resolution: {integrity: sha512-3tdL6VuSykJ/mcUwxfjQ+Fd4OpEmrwWVHtLZ/fhNcSaToWCutUp7nrfIww7/4CURe9I7BDCQE9AWl4fkY3YZOQ==} + next-remove-imports@1.0.12(webpack@5.89.0): dependencies: '@babel/core': 7.22.17 babel-loader: 9.1.3(@babel/core@7.22.17)(webpack@5.89.0) @@ -7015,25 +9452,15 @@ packages: transitivePeerDependencies: - supports-color - webpack - dev: false - /next-safe-action@7.0.2(next@14.2.4)(react-dom@18.2.0)(react@18.2.0)(zod@3.22.4): - resolution: {integrity: sha512-Zjxo5HhOV0vUxKP2zf4UE5d603oCwdr9CNadc4aImJnYrcpfed3S/mUf2gfXEHjTjRyPoTQ+s4oLMy5rATGuPQ==} - engines: {node: '>=18.17'} - peerDependencies: - next: '>= 14.0.0' - react: '>= 18.2.0' - react-dom: '>= 18.2.0' - zod: '>= 3.0.0' - peerDependenciesMeta: - zod: - optional: true + next-safe-action@7.0.2(@types/json-schema@7.0.15)(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(zod@3.22.4): dependencies: - '@typeschema/main': 0.13.10(@typeschema/zod@0.13.3) - '@typeschema/zod': 0.13.3(zod@3.22.4) - next: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0)(react@18.2.0) + '@typeschema/main': 0.13.10(@types/json-schema@7.0.15)(@typeschema/zod@0.13.3(@types/json-schema@7.0.15)(zod@3.22.4)) + '@typeschema/zod': 0.13.3(@types/json-schema@7.0.15)(zod@3.22.4) + next: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + optionalDependencies: zod: 3.22.4 transitivePeerDependencies: - '@types/json-schema' @@ -7056,38 +9483,15 @@ packages: - '@typeschema/vine' - '@typeschema/yup' - zod-to-json-schema - dev: false - /next-themes@0.3.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-/QHIrsYpd6Kfk7xakK4svpDI5mmXP0gfvCoJdGpZQ2TOrQZmsW0QxjaiLn8wbIKjtm4BTSqLoix4lxYYOnLJ/w==} - peerDependencies: - react: ^16.8 || ^17 || ^18 - react-dom: ^16.8 || ^17 || ^18 + next-themes@0.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: false - /next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-R8/V7vugY+822rsQGQCjoLhMuC9oFj9SOi4Cl4b2wjDrseD0LRZ10W7R6Czo4w9ZznVSshKjuIomsRjvm9EKJQ==} - engines: {node: '>=18.17.0'} - hasBin: true - peerDependencies: - '@opentelemetry/api': ^1.1.0 - '@playwright/test': ^1.41.2 - react: ^18.2.0 - react-dom: ^18.2.0 - sass: ^1.3.0 - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - '@playwright/test': - optional: true - sass: - optional: true + next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@next/env': 14.2.4 - '@playwright/test': 1.45.0 '@swc/helpers': 0.5.5 busboy: 1.6.0 caniuse-lite: 1.0.30001587 @@ -7106,222 +9510,138 @@ packages: '@next/swc-win32-arm64-msvc': 14.2.4 '@next/swc-win32-ia32-msvc': 14.2.4 '@next/swc-win32-x64-msvc': 14.2.4 + '@playwright/test': 1.45.0 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - dev: false - /node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true + node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 - dev: false - /node-releases@2.0.13: - resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + node-releases@2.0.13: {} - /node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - dev: false + node-releases@2.0.14: {} - /nodemailer@6.9.14: - resolution: {integrity: sha512-Dobp/ebDKBvz91sbtRKhcznLThrKxKt97GI2FAlAyy+fk19j73Uz3sBXolVtmcXjaorivqsbbbjDY+Jkt4/bQA==} - engines: {node: '>=6.0.0'} - dev: false + nodemailer@6.9.14: + optional: true - /nopt@7.2.0: - resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - hasBin: true + nopt@7.2.0: dependencies: abbrev: 2.0.0 - dev: false - /normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + normalize-package-data@2.5.0: dependencies: hosted-git-info: 2.8.9 resolve: 1.22.8 semver: 5.7.2 validate-npm-package-license: 3.0.4 - dev: true - - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - /normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - dev: true + normalize-path@3.0.0: {} - /not@0.1.0: - resolution: {integrity: sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==} - dev: false + normalize-range@0.1.2: {} - /npm-run-path@5.1.0: - resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + not@0.1.0: {} + + npm-run-path@5.1.0: dependencies: path-key: 4.0.0 - dev: true - /nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + nth-check@2.1.1: dependencies: boolbase: 1.0.0 - dev: false - /oauth@0.9.15: - resolution: {integrity: sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==} - dev: false + oauth@0.9.15: {} - /object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} + object-assign@4.1.1: {} - /object-hash@2.2.0: - resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} - engines: {node: '>= 6'} - dev: false + object-hash@2.2.0: {} - /object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} + object-hash@3.0.0: {} - /object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + object-inspect@1.13.1: {} - /object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - dev: true + object-keys@1.1.1: {} - /object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} - engines: {node: '>= 0.4'} + object.assign@4.1.5: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 - dev: true - /object.entries@1.1.7: - resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} - engines: {node: '>= 0.4'} + object.entries@1.1.7: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - dev: true - /object.entries@1.1.8: - resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} - engines: {node: '>= 0.4'} + object.entries@1.1.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 - dev: true - /object.fromentries@2.0.7: - resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} - engines: {node: '>= 0.4'} + object.fromentries@2.0.7: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - dev: true - /object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} + object.fromentries@2.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-object-atoms: 1.0.0 - dev: true - /object.groupby@1.0.1: - resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} + object.groupby@1.0.1: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 get-intrinsic: 1.2.2 - dev: true - /object.hasown@1.1.4: - resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} - engines: {node: '>= 0.4'} + object.hasown@1.1.4: dependencies: define-properties: 1.2.1 es-abstract: 1.23.3 es-object-atoms: 1.0.0 - dev: true - /object.values@1.1.7: - resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} - engines: {node: '>= 0.4'} + object.values@1.1.7: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - dev: true - /object.values@1.2.0: - resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} - engines: {node: '>= 0.4'} + object.values@1.2.0: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 - dev: true - /oidc-token-hash@5.0.3: - resolution: {integrity: sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==} - engines: {node: ^10.13.0 || >=12.0.0} - dev: false + oidc-token-hash@5.0.3: {} - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + once@1.4.0: dependencies: wrappy: 1.0.2 - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} + onetime@5.1.2: dependencies: mimic-fn: 2.1.0 - dev: true - /onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} + onetime@6.0.0: dependencies: mimic-fn: 4.0.0 - dev: true - /openid-client@5.6.5: - resolution: {integrity: sha512-5P4qO9nGJzB5PI0LFlhj4Dzg3m4odt0qsJTfyEtZyOlkgpILwEioOhVVJOrS1iVH494S4Ee5OCjjg6Bf5WOj3w==} + openid-client@5.6.5: dependencies: jose: 4.15.5 lru-cache: 6.0.0 object-hash: 2.2.0 oidc-token-hash: 5.0.3 - dev: false - /optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} - engines: {node: '>= 0.8.0'} + optionator@0.9.3: dependencies: '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 @@ -7329,88 +9649,50 @@ packages: levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 - dev: true - /os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - dev: true + os-tmpdir@1.0.2: {} - /outdent@0.5.0: - resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} - dev: true + outdent@0.5.0: {} - /p-filter@2.1.0: - resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} - engines: {node: '>=8'} + p-filter@2.1.0: dependencies: p-map: 2.1.0 - dev: true - /p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} + p-limit@2.3.0: dependencies: p-try: 2.2.0 - dev: true - /p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 - /p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-limit@4.0.0: dependencies: yocto-queue: 1.0.0 - dev: false - /p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} + p-locate@4.1.0: dependencies: p-limit: 2.3.0 - dev: true - /p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} + p-locate@5.0.0: dependencies: p-limit: 3.1.0 - dev: true - /p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-locate@6.0.0: dependencies: p-limit: 4.0.0 - dev: false - /p-map@2.1.0: - resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} - engines: {node: '>=6'} - dev: true + p-map@2.1.0: {} - /p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - dev: true + p-try@2.2.0: {} - /papaparse@5.4.1: - resolution: {integrity: sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw==} - dev: false + papaparse@5.4.1: {} - /parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} + parent-module@1.0.1: dependencies: callsites: 3.1.0 - dev: true - /parse-entities@4.0.1: - resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} + parse-entities@4.0.1: dependencies: '@types/unist': 2.0.8 character-entities: 2.0.2 @@ -7420,428 +9702,211 @@ packages: is-alphanumerical: 2.0.1 is-decimal: 2.0.1 is-hexadecimal: 2.0.1 - dev: false - /parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} + parse-json@5.2.0: dependencies: '@babel/code-frame': 7.22.13 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - dev: true - /parse-numeric-range@1.3.0: - resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} - dev: false + parse-numeric-range@1.3.0: {} - /parse5@6.0.1: - resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - dev: false + parse5@6.0.1: {} - /parse5@7.1.2: - resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + parse5@7.1.2: dependencies: entities: 4.5.0 - dev: false - /parseley@0.12.1: - resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==} + parseley@0.12.1: dependencies: leac: 0.6.0 peberminta: 0.9.0 - dev: false - /path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - dev: true + path-exists@4.0.0: {} - /path-exists@5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: false + path-exists@5.0.0: {} - /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} + path-is-absolute@1.0.1: {} - /path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} + path-key@3.1.1: {} - /path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - dev: true + path-key@4.0.0: {} - /path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-parse@1.0.7: {} - /path-scurry@1.10.1: - resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} - engines: {node: '>=16 || 14 >=14.17'} + path-scurry@1.10.1: dependencies: lru-cache: 10.2.0 minipass: 7.0.4 - /path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - dev: true + path-type@4.0.0: {} - /peberminta@0.9.0: - resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} - dev: false + peberminta@0.9.0: {} - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + picocolors@1.0.0: {} - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} + picomatch@2.3.1: {} - /pidtree@0.6.0: - resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} - engines: {node: '>=0.10'} - hasBin: true - dev: true + pidtree@0.6.0: {} - /pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} + pify@2.3.0: {} - /pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - dev: true + pify@4.0.1: {} - /pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} + pirates@4.0.6: {} - /pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} + pkg-dir@4.2.0: dependencies: find-up: 4.1.0 - dev: true - /pkg-dir@7.0.0: - resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} - engines: {node: '>=14.16'} + pkg-dir@7.0.0: dependencies: find-up: 6.3.0 - dev: false - /playwright-core@1.45.0: - resolution: {integrity: sha512-lZmHlFQ0VYSpAs43dRq1/nJ9G/6SiTI7VPqidld9TDefL9tX87bTKExWZZUF5PeRyqtXqd8fQi2qmfIedkwsNQ==} - engines: {node: '>=18'} - hasBin: true + playwright-core@1.45.0: {} - /playwright@1.45.0: - resolution: {integrity: sha512-4z3ac3plDfYzGB6r0Q3LF8POPR20Z8D0aXcxbJvmfMgSSq1hkcgvFRXJk9rUq5H/MJ0Ktal869hhOdI/zUTeLA==} - engines: {node: '>=18'} - hasBin: true + playwright@1.45.0: dependencies: playwright-core: 1.45.0 optionalDependencies: fsevents: 2.3.2 - /possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} - dev: true + possible-typed-array-names@1.0.0: {} - /postcss-import@15.1.0(postcss@8.4.31): - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 + postcss-import@15.1.0(postcss@8.4.31): dependencies: postcss: 8.4.31 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - /postcss-js@4.0.1(postcss@8.4.31): - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 + postcss-js@4.0.1(postcss@8.4.31): dependencies: camelcase-css: 2.0.1 postcss: 8.4.31 - /postcss-load-config@4.0.1(postcss@8.4.31)(ts-node@10.9.1): - resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true + postcss-load-config@4.0.1(postcss@8.4.31)(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3)): dependencies: lilconfig: 2.1.0 + yaml: 2.3.3 + optionalDependencies: postcss: 8.4.31 ts-node: 10.9.1(@types/node@20.5.6)(typescript@5.3.3) - yaml: 2.3.3 - /postcss-nested@6.0.1(postcss@8.4.31): - resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 + postcss-nested@6.0.1(postcss@8.4.31): dependencies: postcss: 8.4.31 postcss-selector-parser: 6.0.13 - /postcss-selector-parser@6.0.13: - resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} - engines: {node: '>=4'} + postcss-selector-parser@6.0.13: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - /postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + postcss-value-parser@4.2.0: {} - /postcss@8.4.28: - resolution: {integrity: sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==} - engines: {node: ^10 || ^12 || >=14} + postcss@8.4.28: dependencies: nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 - dev: true - /postcss@8.4.31: - resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} - engines: {node: ^10 || ^12 || >=14} + postcss@8.4.31: dependencies: nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.0.2 - /preact-render-to-string@5.2.3(preact@10.11.3): - resolution: {integrity: sha512-aPDxUn5o3GhWdtJtW0svRC2SS/l8D9MAgo2+AWml+BhDImb27ALf04Q2d+AHqUUOc6RdSXFIBVa2gxzgMKgtZA==} - peerDependencies: - preact: '>=10' + preact-render-to-string@5.2.3(preact@10.11.3): dependencies: preact: 10.11.3 pretty-format: 3.8.0 - dev: false - /preact@10.11.3: - resolution: {integrity: sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==} - dev: false + preact@10.11.3: {} - /preferred-pm@3.0.3: - resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} - engines: {node: '>=10'} + preferred-pm@3.0.3: dependencies: find-up: 5.0.0 find-yarn-workspace-root2: 1.2.16 path-exists: 4.0.0 which-pm: 2.0.0 - dev: true - /prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - dev: true + prelude-ls@1.2.1: {} - /prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} + prettier-linter-helpers@1.0.0: dependencies: fast-diff: 1.3.0 - dev: true - /prettier-plugin-tailwindcss@0.6.2(prettier@3.2.5): - resolution: {integrity: sha512-eFefm4cg+1c2B57+H274Qm//CTWBdtQN9ansl0YTP/8TC8x3bugCTQSS/e4FC5Ctl9djhTzsbcMrZ7x2/abIow==} - engines: {node: '>=14.21.3'} - peerDependencies: - '@ianvs/prettier-plugin-sort-imports': '*' - '@prettier/plugin-pug': '*' - '@shopify/prettier-plugin-liquid': '*' - '@trivago/prettier-plugin-sort-imports': '*' - '@zackad/prettier-plugin-twig-melody': '*' - prettier: ^3.0 - prettier-plugin-astro: '*' - prettier-plugin-css-order: '*' - prettier-plugin-import-sort: '*' - prettier-plugin-jsdoc: '*' - prettier-plugin-marko: '*' - prettier-plugin-organize-attributes: '*' - prettier-plugin-organize-imports: '*' - prettier-plugin-sort-imports: '*' - prettier-plugin-style-order: '*' - prettier-plugin-svelte: '*' - peerDependenciesMeta: - '@ianvs/prettier-plugin-sort-imports': - optional: true - '@prettier/plugin-pug': - optional: true - '@shopify/prettier-plugin-liquid': - optional: true - '@trivago/prettier-plugin-sort-imports': - optional: true - '@zackad/prettier-plugin-twig-melody': - optional: true - prettier-plugin-astro: - optional: true - prettier-plugin-css-order: - optional: true - prettier-plugin-import-sort: - optional: true - prettier-plugin-jsdoc: - optional: true - prettier-plugin-marko: - optional: true - prettier-plugin-organize-attributes: - optional: true - prettier-plugin-organize-imports: - optional: true - prettier-plugin-sort-imports: - optional: true - prettier-plugin-style-order: - optional: true - prettier-plugin-svelte: - optional: true + prettier-plugin-tailwindcss@0.6.2(prettier@3.2.5): dependencies: prettier: 3.2.5 - dev: true - /prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - dev: true + prettier@2.8.8: {} - /prettier@3.2.5: - resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} - engines: {node: '>=14'} - hasBin: true - dev: true + prettier@3.2.5: {} - /pretty-format@3.8.0: - resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==} - dev: false + pretty-format@3.8.0: {} - /prisma@5.16.1: - resolution: {integrity: sha512-Z1Uqodk44diztImxALgJJfNl2Uisl9xDRvqybMKEBYJLNKNhDfAHf+ZIJbZyYiBhLMbKU9cYGdDVG5IIXEnL2Q==} - engines: {node: '>=16.13'} - hasBin: true - requiresBuild: true + prisma@5.16.1: dependencies: '@prisma/engines': 5.16.1 - /progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} - dev: false + progress@2.0.3: {} - /prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + prop-types@15.8.1: dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 - /property-information@6.2.0: - resolution: {integrity: sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==} - dev: false + property-information@6.2.0: {} - /proto-list@1.2.4: - resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} - dev: false + proto-list@1.2.4: {} - /proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - dev: false + proxy-from-env@1.1.0: {} - /pseudomap@1.0.2: - resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - dev: true + pseudomap@1.0.2: {} - /punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} - engines: {node: '>=6'} + punycode@2.3.0: {} - /qs@6.11.2: - resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} - engines: {node: '>=0.6'} + qs@6.11.2: dependencies: side-channel: 1.0.6 - dev: false - /queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + queue-microtask@1.2.3: {} - /quick-lru@4.0.1: - resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} - engines: {node: '>=8'} - dev: true + quick-lru@4.0.1: {} - /randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 - dev: false - /react-dom@18.2.0(react@18.2.0): - resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} - peerDependencies: - react: ^18.2.0 + react-dom@18.2.0(react@18.2.0): dependencies: loose-envify: 1.4.0 react: 18.2.0 scheduler: 0.23.0 - dev: false - /react-dropzone@14.2.3(react@18.2.0): - resolution: {integrity: sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==} - engines: {node: '>= 10.13'} - peerDependencies: - react: '>= 16.8 || 18.0.0' + react-dropzone@14.2.3(react@18.2.0): dependencies: attr-accept: 2.2.2 file-selector: 0.6.0 prop-types: 15.8.1 react: 18.2.0 - dev: false - /react-error-boundary@4.0.12(react@18.2.0): - resolution: {integrity: sha512-kJdxdEYlb7CPC1A0SeUY38cHpjuu6UkvzKiAmqmOFL21VRfMhOcWxTCBgLVCO0VEMh9JhFNcVaXlV4/BTpiwOA==} - peerDependencies: - react: '>=16.13.1' + react-error-boundary@4.0.12(react@18.2.0): dependencies: '@babel/runtime': 7.23.7 react: 18.2.0 - dev: false - /react-hook-form@7.45.4(react@18.2.0): - resolution: {integrity: sha512-HGDV1JOOBPZj10LB3+OZgfDBTn+IeEsNOKiq/cxbQAIbKaiJUe/KV8DBUzsx0Gx/7IG/orWqRRm736JwOfUSWQ==} - engines: {node: '>=12.22.0'} - peerDependencies: - react: ^16.8.0 || ^17 || ^18 + react-hook-form@7.45.4(react@18.2.0): dependencies: react: 18.2.0 - dev: false - /react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + react-is@16.13.1: {} - /react-markdown@9.0.1(@types/react@18.0.27)(react@18.2.0): - resolution: {integrity: sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==} - peerDependencies: - '@types/react': '>=18' - react: '>=18' + react-markdown@9.0.1(@types/react@18.0.27)(react@18.2.0): dependencies: '@types/hast': 3.0.0 '@types/react': 18.0.27 @@ -7856,164 +9921,101 @@ packages: unist-util-visit: 5.0.0 vfile: 6.0.1 transitivePeerDependencies: - - supports-color - dev: false - - /react-paginate@8.2.0(react@18.2.0): - resolution: {integrity: sha512-sJCz1PW+9PNIjUSn919nlcRVuleN2YPoFBOvL+6TPgrH/3lwphqiSOgdrLafLdyLDxsgK+oSgviqacF4hxsDIw==} - peerDependencies: - react: ^16 || ^17 || ^18 + - supports-color + + react-paginate@8.2.0(react@18.2.0): dependencies: prop-types: 15.8.1 react: 18.2.0 - dev: false - /react-papaparse@4.4.0: - resolution: {integrity: sha512-xTEwHZYJ+1dh9mQDQjjwJXmWyX20DdZ52u+ddw75V+Xm5qsjXSvWmC7c8K82vRwMjKAOH2S9uFyGpHEyEztkUQ==} - engines: {node: '>=8', npm: '>=5'} + react-papaparse@4.4.0: dependencies: '@types/papaparse': 5.3.14 papaparse: 5.4.1 - dev: false - /react-remove-scroll-bar@2.3.4(@types/react@18.0.27)(react@18.2.0): - resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + react-remove-scroll-bar@2.3.4(@types/react@18.0.27)(react@18.2.0): dependencies: - '@types/react': 18.0.27 react: 18.2.0 react-style-singleton: 2.2.1(@types/react@18.0.27)(react@18.2.0) tslib: 2.6.2 - dev: false + optionalDependencies: + '@types/react': 18.0.27 - /react-remove-scroll@2.5.5(@types/react@18.0.27)(react@18.2.0): - resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + react-remove-scroll@2.5.5(@types/react@18.0.27)(react@18.2.0): dependencies: - '@types/react': 18.0.27 react: 18.2.0 react-remove-scroll-bar: 2.3.4(@types/react@18.0.27)(react@18.2.0) react-style-singleton: 2.2.1(@types/react@18.0.27)(react@18.2.0) tslib: 2.6.2 use-callback-ref: 1.3.0(@types/react@18.0.27)(react@18.2.0) use-sidecar: 1.1.2(@types/react@18.0.27)(react@18.2.0) - dev: false + optionalDependencies: + '@types/react': 18.0.27 - /react-remove-scroll@2.5.7(@types/react@18.0.27)(react@18.2.0): - resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + react-remove-scroll@2.5.7(@types/react@18.0.27)(react@18.2.0): dependencies: - '@types/react': 18.0.27 react: 18.2.0 react-remove-scroll-bar: 2.3.4(@types/react@18.0.27)(react@18.2.0) react-style-singleton: 2.2.1(@types/react@18.0.27)(react@18.2.0) tslib: 2.6.2 use-callback-ref: 1.3.0(@types/react@18.0.27)(react@18.2.0) use-sidecar: 1.1.2(@types/react@18.0.27)(react@18.2.0) - dev: false + optionalDependencies: + '@types/react': 18.0.27 - /react-style-singleton@2.2.1(@types/react@18.0.27)(react@18.2.0): - resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + react-style-singleton@2.2.1(@types/react@18.0.27)(react@18.2.0): dependencies: - '@types/react': 18.0.27 get-nonce: 1.0.1 invariant: 2.2.4 react: 18.2.0 tslib: 2.6.2 - dev: false + optionalDependencies: + '@types/react': 18.0.27 - /react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} - engines: {node: '>=0.10.0'} + react@18.2.0: dependencies: loose-envify: 1.4.0 - dev: false - /read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + read-cache@1.0.0: dependencies: pify: 2.3.0 - /read-pkg-up@7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} + read-pkg-up@7.0.1: dependencies: find-up: 4.1.0 read-pkg: 5.2.0 type-fest: 0.8.1 - dev: true - /read-pkg@5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} + read-pkg@5.2.0: dependencies: '@types/normalize-package-data': 2.4.1 normalize-package-data: 2.5.0 parse-json: 5.2.0 type-fest: 0.6.0 - dev: true - /read-yaml-file@1.1.0: - resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} - engines: {node: '>=6'} + read-yaml-file@1.1.0: dependencies: graceful-fs: 4.2.11 js-yaml: 3.14.1 pify: 4.0.1 strip-bom: 3.0.0 - dev: true - /readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} + readable-stream@3.6.2: dependencies: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - dev: false - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} + readdirp@3.6.0: dependencies: picomatch: 2.3.1 - /redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} + redent@3.0.0: dependencies: indent-string: 4.0.0 strip-indent: 3.0.0 - dev: true - /reflect.getprototypeof@1.0.4: - resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} - engines: {node: '>= 0.4'} + reflect.getprototypeof@1.0.4: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 @@ -8021,49 +10023,35 @@ packages: get-intrinsic: 1.2.2 globalthis: 1.0.3 which-builtin-type: 1.1.3 - dev: true - /refractor@4.8.1: - resolution: {integrity: sha512-/fk5sI0iTgFYlmVGYVew90AoYnNMP6pooClx/XKqyeeCQXrL0Kvgn8V0VEht5ccdljbzzF1i3Q213gcntkRExg==} + refractor@4.8.1: dependencies: '@types/hast': 2.3.5 '@types/prismjs': 1.26.0 hastscript: 7.2.0 parse-entities: 4.0.1 - dev: false - /regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + regenerator-runtime@0.14.1: {} - /regexp.prototype.flags@1.5.1: - resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} - engines: {node: '>= 0.4'} + regexp.prototype.flags@1.5.1: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 set-function-name: 2.0.1 - dev: true - /regexp.prototype.flags@1.5.2: - resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} - engines: {node: '>= 0.4'} + regexp.prototype.flags@1.5.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-errors: 1.3.0 set-function-name: 2.0.2 - dev: true - /rehype-attr@3.0.3: - resolution: {integrity: sha512-Up50Xfra8tyxnkJdCzLBIBtxOcB2M1xdeKe1324U06RAvSjYm7ULSeoM+b/nYPQPVd7jsXJ9+39IG1WAJPXONw==} - engines: {node: '>=16'} + rehype-attr@3.0.3: dependencies: unified: 11.0.4 unist-util-visit: 5.0.0 - dev: false - /rehype-autolink-headings@7.1.0: - resolution: {integrity: sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw==} + rehype-autolink-headings@7.1.0: dependencies: '@types/hast': 3.0.0 '@ungap/structured-clone': 1.2.0 @@ -8071,36 +10059,27 @@ packages: hast-util-is-element: 3.0.0 unified: 11.0.4 unist-util-visit: 5.0.0 - dev: false - /rehype-ignore@2.0.2: - resolution: {integrity: sha512-BpAT/3lU9DMJ2siYVD/dSR0A/zQgD6Fb+fxkJd4j+wDVy6TYbYpK+FZqu8eM9EuNKGvi4BJR7XTZ/+zF02Dq8w==} - engines: {node: '>=16'} + rehype-ignore@2.0.2: dependencies: hast-util-select: 6.0.2 unified: 11.0.4 unist-util-visit: 5.0.0 - dev: false - /rehype-parse@8.0.5: - resolution: {integrity: sha512-Ds3RglaY/+clEX2U2mHflt7NlMA72KspZ0JLUJgBBLpRddBcEw3H8uYZQliQriku22NZpYMfjDdSgHcjxue24A==} + rehype-parse@8.0.5: dependencies: '@types/hast': 2.3.5 hast-util-from-parse5: 7.1.2 parse5: 6.0.1 unified: 10.1.2 - dev: false - /rehype-parse@9.0.0: - resolution: {integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==} + rehype-parse@9.0.0: dependencies: '@types/hast': 3.0.0 hast-util-from-html: 2.0.1 unified: 11.0.4 - dev: false - /rehype-prism-plus@1.6.3: - resolution: {integrity: sha512-F6tn376zimnvy+xW0bSnryul+rvVL7NhDIkavc9kAuzDx5zIZW04A6jdXPkcFBhojcqZB8b6pHt6CLqiUx+Tbw==} + rehype-prism-plus@1.6.3: dependencies: hast-util-to-string: 2.0.0 parse-numeric-range: 1.3.0 @@ -8108,10 +10087,8 @@ packages: rehype-parse: 8.0.5 unist-util-filter: 4.0.1 unist-util-visit: 4.1.2 - dev: false - /rehype-prism-plus@2.0.0: - resolution: {integrity: sha512-FeM/9V2N7EvDZVdR2dqhAzlw5YI49m9Tgn7ZrYJeYHIahM6gcXpH0K1y2gNnKanZCydOMluJvX2cB9z3lhY8XQ==} + rehype-prism-plus@2.0.0: dependencies: hast-util-to-string: 3.0.0 parse-numeric-range: 1.3.0 @@ -8119,61 +10096,46 @@ packages: rehype-parse: 9.0.0 unist-util-filter: 5.0.1 unist-util-visit: 5.0.0 - dev: false - /rehype-raw@7.0.0: - resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} + rehype-raw@7.0.0: dependencies: '@types/hast': 3.0.0 hast-util-raw: 9.0.1 vfile: 6.0.1 - dev: false - /rehype-rewrite@4.0.2: - resolution: {integrity: sha512-rjLJ3z6fIV11phwCqHp/KRo8xuUCO8o9bFJCNw5o6O2wlLk6g8r323aRswdGBQwfXPFYeSuZdAjp4tzo6RGqEg==} - engines: {node: '>=16.0.0'} + rehype-rewrite@4.0.2: dependencies: hast-util-select: 6.0.2 unified: 11.0.4 unist-util-visit: 5.0.0 - dev: false - /rehype-sanitize@6.0.0: - resolution: {integrity: sha512-CsnhKNsyI8Tub6L4sm5ZFsme4puGfc6pYylvXo1AeqaGbjOYyzNv3qZPwvs0oMJ39eryyeOdmxwUIo94IpEhqg==} + rehype-sanitize@6.0.0: dependencies: '@types/hast': 3.0.0 hast-util-sanitize: 5.0.0 - dev: false - /rehype-slug@6.0.0: - resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} + rehype-slug@6.0.0: dependencies: '@types/hast': 3.0.0 github-slugger: 2.0.0 hast-util-heading-rank: 3.0.0 hast-util-to-string: 3.0.0 unist-util-visit: 5.0.0 - dev: false - /rehype-stringify@10.0.0: - resolution: {integrity: sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==} + rehype-stringify@10.0.0: dependencies: '@types/hast': 3.0.0 hast-util-to-html: 9.0.0 unified: 11.0.4 - dev: false - /rehype@13.0.1: - resolution: {integrity: sha512-AcSLS2mItY+0fYu9xKxOu1LhUZeBZZBx8//5HKzF+0XP+eP8+6a5MXn2+DW2kfXR6Dtp1FEXMVrjyKAcvcU8vg==} + rehype@13.0.1: dependencies: '@types/hast': 3.0.0 rehype-parse: 9.0.0 rehype-stringify: 10.0.0 unified: 11.0.4 - dev: false - /remark-gfm@4.0.0: - resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} + remark-gfm@4.0.0: dependencies: '@types/mdast': 4.0.3 mdast-util-gfm: 3.0.0 @@ -8183,10 +10145,8 @@ packages: unified: 11.0.4 transitivePeerDependencies: - supports-color - dev: false - /remark-parse@11.0.0: - resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + remark-parse@11.0.0: dependencies: '@types/mdast': 4.0.3 mdast-util-from-markdown: 2.0.0 @@ -8194,97 +10154,61 @@ packages: unified: 11.0.4 transitivePeerDependencies: - supports-color - dev: false - /remark-rehype@11.0.0: - resolution: {integrity: sha512-vx8x2MDMcxuE4lBmQ46zYUDfcFMmvg80WYX+UNLeG6ixjdCCLcw1lrgAukwBTuOFsS78eoAedHGn9sNM0w7TPw==} + remark-rehype@11.0.0: dependencies: '@types/hast': 3.0.0 '@types/mdast': 4.0.3 mdast-util-to-hast: 13.0.2 unified: 11.0.4 vfile: 6.0.1 - dev: false - /remark-stringify@11.0.0: - resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + remark-stringify@11.0.0: dependencies: '@types/mdast': 4.0.3 mdast-util-to-markdown: 2.1.0 unified: 11.0.4 - dev: false - /require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - dev: true + require-directory@2.1.1: {} - /require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - dev: false + require-from-string@2.0.2: {} - /require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - dev: true + require-main-filename@2.0.0: {} - /resend@3.2.0: - resolution: {integrity: sha512-lDHhexiFYPoLXy7zRlJ8D5eKxoXy6Tr9/elN3+Vv7PkUoYuSSD1fpiIfa/JYXEWyiyN2UczkCTLpkT8dDPJ4Pg==} - engines: {node: '>=18'} + resend@3.2.0: dependencies: '@react-email/render': 0.0.12 - dev: false - /resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - dev: true + resolve-from@4.0.0: {} - /resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: true + resolve-from@5.0.0: {} - /resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - dev: true + resolve-pkg-maps@1.0.0: {} - /resolve@1.22.4: - resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} - hasBin: true + resolve@1.22.4: dependencies: is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - /resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true + resolve@1.22.8: dependencies: is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - /resolve@2.0.0-next.5: - resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} - hasBin: true + resolve@2.0.0-next.5: dependencies: is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: true - /restore-cursor@4.0.0: - resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + restore-cursor@4.0.0: dependencies: onetime: 5.1.2 signal-exit: 3.0.7 - dev: true - /retry-request@7.0.2: - resolution: {integrity: sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==} - engines: {node: '>=14'} + retry-request@7.0.2: dependencies: '@types/request': 2.48.12 extend: 3.0.2 @@ -8292,162 +10216,100 @@ packages: transitivePeerDependencies: - encoding - supports-color - dev: false - /retry@0.13.1: - resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} - engines: {node: '>= 4'} - dev: false + retry@0.13.1: {} - /reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + reusify@1.0.4: {} - /rfdc@1.3.0: - resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} - dev: true + rfdc@1.3.0: {} - /rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true + rimraf@3.0.2: dependencies: glob: 7.1.7 - dev: true - /rollup@2.78.0: - resolution: {integrity: sha512-4+YfbQC9QEVvKTanHhIAFVUFSRsezvQF8vFOJwtGfb9Bb+r014S+qryr9PSmw8x6sMnPkmFBGAvIFVQxvJxjtg==} - engines: {node: '>=10.0.0'} - hasBin: true + rollup@2.78.0: optionalDependencies: fsevents: 2.3.3 - dev: false - /run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 - /safe-array-concat@1.0.1: - resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} - engines: {node: '>=0.4'} + safe-array-concat@1.0.1: dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 has-symbols: 1.0.3 isarray: 2.0.5 - dev: true - /safe-array-concat@1.1.2: - resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} - engines: {node: '>=0.4'} + safe-array-concat@1.1.2: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 has-symbols: 1.0.3 isarray: 2.0.5 - dev: true - /safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: false + safe-buffer@5.2.1: {} - /safe-regex-test@1.0.0: - resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + safe-regex-test@1.0.0: dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 is-regex: 1.1.4 - dev: true - /safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} - engines: {node: '>= 0.4'} + safe-regex-test@1.0.3: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-regex: 1.1.4 - dev: true - /safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: true + safer-buffer@2.1.2: {} - /scheduler@0.23.0: - resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + scheduler@0.23.0: dependencies: loose-envify: 1.4.0 - dev: false - /schema-utils@3.3.0: - resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} - engines: {node: '>= 10.13.0'} + schema-utils@3.3.0: dependencies: '@types/json-schema': 7.0.15 ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) - dev: false - /schema-utils@4.2.0: - resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} - engines: {node: '>= 12.13.0'} + schema-utils@4.2.0: dependencies: '@types/json-schema': 7.0.12 ajv: 8.12.0 ajv-formats: 2.1.1(ajv@8.12.0) ajv-keywords: 5.1.0(ajv@8.12.0) - dev: false - /selderee@0.11.0: - resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==} + selderee@0.11.0: dependencies: parseley: 0.12.1 - dev: false - /semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true - dev: true + semver@5.7.2: {} - /semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true + semver@6.3.1: {} - /semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} - engines: {node: '>=10'} - hasBin: true + semver@7.5.4: dependencies: lru-cache: 6.0.0 - dev: true - /semver@7.6.2: - resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} - engines: {node: '>=10'} - hasBin: true + semver@7.6.2: {} - /serialize-javascript@6.0.1: - resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} + serialize-javascript@6.0.1: dependencies: randombytes: 2.1.0 - dev: false - /set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - dev: true + set-blocking@2.0.0: {} - /set-function-length@1.1.1: - resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} - engines: {node: '>= 0.4'} + set-function-length@1.1.1: dependencies: define-data-property: 1.1.1 get-intrinsic: 1.2.2 gopd: 1.0.1 has-property-descriptors: 1.0.1 - dev: true - /set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 @@ -8456,94 +10318,58 @@ packages: gopd: 1.0.1 has-property-descriptors: 1.0.2 - /set-function-name@2.0.1: - resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} - engines: {node: '>= 0.4'} + set-function-name@2.0.1: dependencies: define-data-property: 1.1.1 functions-have-names: 1.2.3 has-property-descriptors: 1.0.1 - dev: true - /set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} + set-function-name@2.0.2: dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 - dev: true - /shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} + shebang-command@1.2.0: dependencies: shebang-regex: 1.0.0 - dev: true - /shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 - /shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - dev: true + shebang-regex@1.0.0: {} - /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} + shebang-regex@3.0.0: {} - /side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + side-channel@1.0.4: dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 object-inspect: 1.13.1 - dev: true - /side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} - engines: {node: '>= 0.4'} + side-channel@1.0.6: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 object-inspect: 1.13.1 - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: true + signal-exit@3.0.7: {} - /signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} + signal-exit@4.1.0: {} - /slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - dev: true + slash@3.0.0: {} - /slice-ansi@5.0.0: - resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} - engines: {node: '>=12'} + slice-ansi@5.0.0: dependencies: ansi-styles: 6.2.1 is-fullwidth-code-point: 4.0.0 - dev: true - /slugify@1.6.6: - resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} - engines: {node: '>=8.0.0'} - dev: false + slugify@1.6.6: {} - /smartwrap@2.0.2: - resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} - engines: {node: '>=6'} - hasBin: true + smartwrap@2.0.2: dependencies: array.prototype.flat: 1.3.2 breakword: 1.0.6 @@ -8551,123 +10377,75 @@ packages: strip-ansi: 6.0.1 wcwidth: 1.0.1 yargs: 15.4.1 - dev: true - /sonner@1.4.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-nvkTsIuOmi9e5Wz5If8ldasJjZNVfwiXYijBi2dbijvTQnQppvMcXTFNxL/NUFWlI2yJ1JX7TREDsg+gYm9WyA==} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 + sonner@1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: false - /source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} + source-map-js@1.0.2: {} - /source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - dev: false - /source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - dev: false + source-map@0.6.1: {} - /space-separated-tokens@2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - dev: false + space-separated-tokens@2.0.2: {} - /spawndamnit@2.0.0: - resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} + spawndamnit@2.0.0: dependencies: cross-spawn: 5.1.0 signal-exit: 3.0.7 - dev: true - /spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.13 - dev: true - /spdx-exceptions@2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} - dev: true + spdx-exceptions@2.3.0: {} - /spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + spdx-expression-parse@3.0.1: dependencies: spdx-exceptions: 2.3.0 spdx-license-ids: 3.0.13 - dev: true - /spdx-license-ids@3.0.13: - resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} - dev: true + spdx-license-ids@3.0.13: {} - /sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: true + sprintf-js@1.0.3: {} - /stacktrace-parser@0.1.10: - resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} - engines: {node: '>=6'} + stacktrace-parser@0.1.10: dependencies: type-fest: 0.7.1 - dev: false - /stream-events@1.0.5: - resolution: {integrity: sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==} + stream-events@1.0.5: dependencies: stubs: 3.0.0 - dev: false - /stream-shift@1.0.3: - resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} - dev: false + stream-shift@1.0.3: {} - /stream-transform@2.1.3: - resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} + stream-transform@2.1.3: dependencies: mixme: 0.5.9 - dev: true - /streamsearch@1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} - dev: false + streamsearch@1.1.0: {} - /string-argv@0.3.2: - resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} - engines: {node: '>=0.6.19'} - dev: true + string-argv@0.3.2: {} - /string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - /string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} + string-width@5.1.2: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.1.0 - /string.prototype.matchall@4.0.11: - resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} - engines: {node: '>= 0.4'} + string.prototype.matchall@4.0.11: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -8681,151 +10459,92 @@ packages: regexp.prototype.flags: 1.5.2 set-function-name: 2.0.2 side-channel: 1.0.6 - dev: true - /string.prototype.trim@1.2.8: - resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} - engines: {node: '>= 0.4'} + string.prototype.trim@1.2.8: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - dev: true - /string.prototype.trim@1.2.9: - resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} - engines: {node: '>= 0.4'} + string.prototype.trim@1.2.9: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-object-atoms: 1.0.0 - dev: true - /string.prototype.trimend@1.0.7: - resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + string.prototype.trimend@1.0.7: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - dev: true - /string.prototype.trimend@1.0.8: - resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + string.prototype.trimend@1.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 - dev: true - /string.prototype.trimstart@1.0.7: - resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + string.prototype.trimstart@1.0.7: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - dev: true - /string.prototype.trimstart@1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} + string.prototype.trimstart@1.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 - dev: true - /string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 - dev: false - /stringify-entities@4.0.3: - resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} + stringify-entities@4.0.3: dependencies: character-entities-html4: 2.1.0 character-entities-legacy: 3.0.0 - dev: false - /strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 - /strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} + strip-ansi@7.1.0: dependencies: ansi-regex: 6.0.1 - /strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - dev: true + strip-bom@3.0.0: {} - /strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - dev: true + strip-final-newline@3.0.0: {} - /strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} + strip-indent@3.0.0: dependencies: min-indent: 1.0.1 - dev: true - /strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - dev: true + strip-json-comments@3.1.1: {} - /stripe@16.1.0: - resolution: {integrity: sha512-syeEEd112om/waJ5gOQ+SaYi+setuidQ4ZIPiQREF4yJeegXhn2HKy6C0JYm7uhVQKfMAvuZ22dIRsnoDv7AMw==} - engines: {node: '>=12.*'} + stripe@16.1.0: dependencies: '@types/node': 20.10.6 qs: 6.11.2 - dev: false - - /strnum@1.0.5: - resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} - dev: false - /stubs@3.0.0: - resolution: {integrity: sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==} - dev: false - - /style-to-object@1.0.5: - resolution: {integrity: sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==} - dependencies: - inline-style-parser: 0.2.2 - dev: false + strnum@1.0.5: {} - /styled-jsx@5.1.1(@babel/core@7.22.17)(react@18.2.0): - resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@babel/core': '*' - babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' - peerDependenciesMeta: - '@babel/core': - optional: true - babel-plugin-macros: - optional: true + stubs@3.0.0: {} + + style-to-object@1.0.5: + dependencies: + inline-style-parser: 0.2.2 + + styled-jsx@5.1.1(@babel/core@7.22.17)(react@18.2.0): dependencies: - '@babel/core': 7.22.17 client-only: 0.0.1 react: 18.2.0 - dev: false + optionalDependencies: + '@babel/core': 7.22.17 - /sucrase@3.34.0: - resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} - engines: {node: '>=8'} - hasBin: true + sucrase@3.34.0: dependencies: '@jridgewell/gen-mapping': 0.3.3 commander: 4.1.1 @@ -8835,55 +10554,34 @@ packages: pirates: 4.0.6 ts-interface-checker: 0.1.13 - /supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} + supports-color@5.5.0: dependencies: has-flag: 3.0.0 - /supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} + supports-color@7.2.0: dependencies: has-flag: 4.0.0 - /supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} + supports-color@8.1.1: dependencies: has-flag: 4.0.0 - dev: false - /supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} + supports-preserve-symlinks-flag@1.0.0: {} - /synckit@0.8.8: - resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} - engines: {node: ^14.18.0 || >=16.0.0} + synckit@0.8.8: dependencies: '@pkgr/core': 0.1.1 tslib: 2.6.2 - dev: true - /tailwind-merge@2.2.0: - resolution: {integrity: sha512-SqqhhaL0T06SW59+JVNfAqKdqLs0497esifRrZ7jOaefP3o64fdFNDMrAQWZFMxTLJPiHVjRLUywT8uFz1xNWQ==} + tailwind-merge@2.2.0: dependencies: '@babel/runtime': 7.23.6 - dev: false - /tailwindcss-animate@1.0.6(tailwindcss@3.4.1): - resolution: {integrity: sha512-4WigSGMvbl3gCCact62ZvOngA+PRqhAn7si3TQ3/ZuPuQZcIEtVap+ENSXbzWhpojKB8CpvnIsrwBu8/RnHtuw==} - peerDependencies: - tailwindcss: '>=3.0.0 || insiders' + tailwindcss-animate@1.0.6(tailwindcss@3.4.1(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3))): dependencies: - tailwindcss: 3.4.1(ts-node@10.9.1) - dev: false + tailwindcss: 3.4.1(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3)) - /tailwindcss@3.4.1(ts-node@10.9.1): - resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==} - engines: {node: '>=14.0.0'} - hasBin: true + tailwindcss@3.4.1(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -8902,7 +10600,7 @@ packages: postcss: 8.4.31 postcss-import: 15.1.0(postcss@8.4.31) postcss-js: 4.0.1(postcss@8.4.31) - postcss-load-config: 4.0.1(postcss@8.4.31)(ts-node@10.9.1) + postcss-load-config: 4.0.1(postcss@8.4.31)(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3)) postcss-nested: 6.0.1(postcss@8.4.31) postcss-selector-parser: 6.0.13 resolve: 1.22.4 @@ -8910,13 +10608,9 @@ packages: transitivePeerDependencies: - ts-node - /tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} + tapable@2.2.1: {} - /teeny-request@9.0.0: - resolution: {integrity: sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==} - engines: {node: '>=14'} + teeny-request@9.0.0: dependencies: http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 @@ -8926,28 +10620,10 @@ packages: transitivePeerDependencies: - encoding - supports-color - dev: false - /term-size@2.2.1: - resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} - engines: {node: '>=8'} - dev: true + term-size@2.2.1: {} - /terser-webpack-plugin@5.3.10(webpack@5.89.0): - resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true + terser-webpack-plugin@5.3.10(webpack@5.89.0): dependencies: '@jridgewell/trace-mapping': 0.3.20 jest-worker: 27.5.1 @@ -8955,103 +10631,53 @@ packages: serialize-javascript: 6.0.1 terser: 5.26.0 webpack: 5.89.0 - dev: false - /terser@5.26.0: - resolution: {integrity: sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ==} - engines: {node: '>=10'} - hasBin: true + terser@5.26.0: dependencies: '@jridgewell/source-map': 0.3.5 acorn: 8.11.3 commander: 2.20.3 source-map-support: 0.5.21 - dev: false - /text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: true + text-table@0.2.0: {} - /thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} + thenify-all@1.6.0: dependencies: thenify: 3.3.1 - /thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + thenify@3.3.1: dependencies: any-promise: 1.3.0 - /tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} + tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 - dev: true - /to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - dev: false + to-fast-properties@2.0.0: {} - /to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 - /tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: false + tr46@0.0.3: {} - /trim-lines@3.0.1: - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - dev: false + trim-lines@3.0.1: {} - /trim-newlines@3.0.1: - resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} - engines: {node: '>=8'} - dev: true + trim-newlines@3.0.1: {} - /trough@2.1.0: - resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} - dev: false + trough@2.1.0: {} - /ts-api-utils@1.0.3(typescript@5.3.3): - resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} - engines: {node: '>=16.13.0'} - peerDependencies: - typescript: '>=4.2.0' + ts-api-utils@1.0.3(typescript@5.3.3): dependencies: typescript: 5.3.3 - dev: true - /ts-api-utils@1.3.0(typescript@5.3.3): - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' + ts-api-utils@1.3.0(typescript@5.3.3): dependencies: typescript: 5.3.3 - dev: true - /ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + ts-interface-checker@0.1.13: {} - /ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3): - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true + ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 @@ -9069,22 +10695,16 @@ packages: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - /tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + tsconfig-paths@3.15.0: dependencies: '@types/json5': 0.0.29 json5: 1.0.2 minimist: 1.2.8 strip-bom: 3.0.0 - dev: true - /tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + tslib@2.6.2: {} - /tty-table@4.2.1: - resolution: {integrity: sha512-xz0uKo+KakCQ+Dxj1D/tKn2FSyreSYWzdkL/BYhgN6oMW808g8QRMuh1atAV9fjTPbWBjfbkKQpI/5rEcnAc7g==} - engines: {node: '>=8.0.0'} - hasBin: true + tty-table@4.2.1: dependencies: chalk: 4.1.2 csv: 5.5.3 @@ -9093,98 +10713,59 @@ packages: strip-ansi: 6.0.1 wcwidth: 1.0.1 yargs: 17.7.2 - dev: true - /type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 - dev: true - /type-fest@0.13.1: - resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} - engines: {node: '>=10'} - dev: true + type-fest@0.13.1: {} - /type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: true + type-fest@0.20.2: {} - /type-fest@0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} - dev: true + type-fest@0.6.0: {} - /type-fest@0.7.1: - resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} - engines: {node: '>=8'} - dev: false + type-fest@0.7.1: {} - /type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - dev: true + type-fest@0.8.1: {} - /type-fest@1.4.0: - resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} - engines: {node: '>=10'} - dev: true + type-fest@1.4.0: {} - /typed-array-buffer@1.0.0: - resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} - engines: {node: '>= 0.4'} + typed-array-buffer@1.0.0: dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 is-typed-array: 1.1.12 - dev: true - /typed-array-buffer@1.0.2: - resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} - engines: {node: '>= 0.4'} + typed-array-buffer@1.0.2: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-typed-array: 1.1.13 - dev: true - /typed-array-byte-length@1.0.0: - resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} - engines: {node: '>= 0.4'} + typed-array-byte-length@1.0.0: dependencies: call-bind: 1.0.5 for-each: 0.3.3 has-proto: 1.0.1 is-typed-array: 1.1.12 - dev: true - /typed-array-byte-length@1.0.1: - resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} - engines: {node: '>= 0.4'} + typed-array-byte-length@1.0.1: dependencies: call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 has-proto: 1.0.3 is-typed-array: 1.1.13 - dev: true - /typed-array-byte-offset@1.0.0: - resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} - engines: {node: '>= 0.4'} + typed-array-byte-offset@1.0.0: dependencies: available-typed-arrays: 1.0.5 call-bind: 1.0.5 for-each: 0.3.3 has-proto: 1.0.1 is-typed-array: 1.1.12 - dev: true - /typed-array-byte-offset@1.0.2: - resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} - engines: {node: '>= 0.4'} + typed-array-byte-offset@1.0.2: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.7 @@ -9192,19 +10773,14 @@ packages: gopd: 1.0.1 has-proto: 1.0.3 is-typed-array: 1.1.13 - dev: true - /typed-array-length@1.0.4: - resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + typed-array-length@1.0.4: dependencies: call-bind: 1.0.5 for-each: 0.3.3 is-typed-array: 1.1.12 - dev: true - /typed-array-length@1.0.6: - resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} - engines: {node: '>= 0.4'} + typed-array-length@1.0.6: dependencies: call-bind: 1.0.7 for-each: 0.3.3 @@ -9212,27 +10788,19 @@ packages: has-proto: 1.0.3 is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 - dev: true - /typescript@5.3.3: - resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} - engines: {node: '>=14.17'} - hasBin: true + typescript@5.3.3: {} - /unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + unbox-primitive@1.0.2: dependencies: call-bind: 1.0.5 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 - dev: true - /undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + undici-types@5.26.5: {} - /unified@10.1.2: - resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} + unified@10.1.2: dependencies: '@types/unist': 2.0.8 bail: 2.0.2 @@ -9241,10 +10809,8 @@ packages: is-plain-obj: 4.1.0 trough: 2.1.0 vfile: 5.3.7 - dev: false - /unified@11.0.4: - resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} + unified@11.0.4: dependencies: '@types/unist': 3.0.0 bail: 2.0.2 @@ -9253,280 +10819,174 @@ packages: is-plain-obj: 4.1.0 trough: 2.1.0 vfile: 6.0.1 - dev: false - /unist-util-filter@4.0.1: - resolution: {integrity: sha512-RynicUM/vbOSTSiUK+BnaK9XMfmQUh6gyi7L6taNgc7FIf84GukXVV3ucGzEN/PhUUkdP5hb1MmXc+3cvPUm5Q==} + unist-util-filter@4.0.1: dependencies: '@types/unist': 2.0.8 unist-util-is: 5.2.1 unist-util-visit-parents: 5.1.3 - dev: false - /unist-util-filter@5.0.1: - resolution: {integrity: sha512-pHx7D4Zt6+TsfwylH9+lYhBhzyhEnCXs/lbq/Hstxno5z4gVdyc2WEW0asfjGKPyG4pEKrnBv5hdkO6+aRnQJw==} + unist-util-filter@5.0.1: dependencies: '@types/unist': 3.0.0 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - dev: false - /unist-util-is@5.2.1: - resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} + unist-util-is@5.2.1: dependencies: '@types/unist': 2.0.8 - dev: false - /unist-util-is@6.0.0: - resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + unist-util-is@6.0.0: dependencies: '@types/unist': 3.0.0 - dev: false - /unist-util-position@5.0.0: - resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + unist-util-position@5.0.0: dependencies: '@types/unist': 3.0.0 - dev: false - /unist-util-remove-position@5.0.0: - resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} + unist-util-remove-position@5.0.0: dependencies: '@types/unist': 3.0.0 unist-util-visit: 5.0.0 - dev: false - /unist-util-stringify-position@3.0.3: - resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} + unist-util-stringify-position@3.0.3: dependencies: '@types/unist': 2.0.8 - dev: false - /unist-util-stringify-position@4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + unist-util-stringify-position@4.0.0: dependencies: '@types/unist': 3.0.0 - dev: false - /unist-util-visit-parents@5.1.3: - resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} + unist-util-visit-parents@5.1.3: dependencies: '@types/unist': 2.0.8 unist-util-is: 5.2.1 - dev: false - /unist-util-visit-parents@6.0.1: - resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + unist-util-visit-parents@6.0.1: dependencies: '@types/unist': 3.0.0 unist-util-is: 6.0.0 - dev: false - /unist-util-visit@4.1.2: - resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} + unist-util-visit@4.1.2: dependencies: '@types/unist': 2.0.8 unist-util-is: 5.2.1 unist-util-visit-parents: 5.1.3 - dev: false - /unist-util-visit@5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + unist-util-visit@5.0.0: dependencies: '@types/unist': 3.0.0 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - dev: false - /universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - dev: true + universalify@0.1.2: {} - /update-browserslist-db@1.0.11(browserslist@4.21.10): - resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' + update-browserslist-db@1.0.11(browserslist@4.21.10): dependencies: browserslist: 4.21.10 escalade: 3.1.1 picocolors: 1.0.0 - /update-browserslist-db@1.0.13(browserslist@4.22.2): - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' + update-browserslist-db@1.0.13(browserslist@4.22.2): dependencies: browserslist: 4.22.2 escalade: 3.1.1 picocolors: 1.0.0 - dev: false - /uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + uri-js@4.4.1: dependencies: punycode: 2.3.0 - /use-callback-ref@1.3.0(@types/react@18.0.27)(react@18.2.0): - resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + use-callback-ref@1.3.0(@types/react@18.0.27)(react@18.2.0): dependencies: - '@types/react': 18.0.27 react: 18.2.0 tslib: 2.6.2 - dev: false + optionalDependencies: + '@types/react': 18.0.27 - /use-debounce@10.0.0(react@18.2.0): - resolution: {integrity: sha512-XRjvlvCB46bah9IBXVnq/ACP2lxqXyZj0D9hj4K5OzNroMDpTEBg8Anuh1/UfRTRs7pLhQ+RiNxxwZu9+MVl1A==} - engines: {node: '>= 16.0.0'} - peerDependencies: - react: '>=16.8.0' + use-debounce@10.0.0(react@18.2.0): dependencies: react: 18.2.0 - dev: false - /use-sidecar@1.1.2(@types/react@18.0.27)(react@18.2.0): - resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + use-sidecar@1.1.2(@types/react@18.0.27)(react@18.2.0): dependencies: - '@types/react': 18.0.27 detect-node-es: 1.1.0 react: 18.2.0 tslib: 2.6.2 - dev: false + optionalDependencies: + '@types/react': 18.0.27 - /util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + util-deprecate@1.0.2: {} - /uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - dev: false + uuid@8.3.2: {} - /uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - dev: false + uuid@9.0.1: {} - /v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + v8-compile-cache-lib@3.0.1: {} - /validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - dev: true - /vaul@0.9.0(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-bZSySGbAHiTXmZychprnX/dE0EsSige88xtyyL3/MCRbrFotRPQZo7UdydGXZWw+CKbNOw5Ow8gwAo93/nB/Cg==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + vaul@0.9.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: - '@radix-ui/react-dialog': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-dialog': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: - '@types/react' - '@types/react-dom' - dev: false - /vfile-location@4.1.0: - resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==} + vfile-location@4.1.0: dependencies: '@types/unist': 2.0.8 vfile: 5.3.7 - dev: false - /vfile-location@5.0.2: - resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} + vfile-location@5.0.2: dependencies: '@types/unist': 3.0.0 vfile: 6.0.1 - dev: false - /vfile-message@3.1.4: - resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} + vfile-message@3.1.4: dependencies: '@types/unist': 2.0.8 unist-util-stringify-position: 3.0.3 - dev: false - /vfile-message@4.0.2: - resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + vfile-message@4.0.2: dependencies: '@types/unist': 3.0.0 unist-util-stringify-position: 4.0.0 - dev: false - /vfile@5.3.7: - resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} + vfile@5.3.7: dependencies: '@types/unist': 2.0.8 is-buffer: 2.0.5 unist-util-stringify-position: 3.0.3 vfile-message: 3.1.4 - dev: false - /vfile@6.0.1: - resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} + vfile@6.0.1: dependencies: '@types/unist': 3.0.0 unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - dev: false - /watchpack@2.4.0: - resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} - engines: {node: '>=10.13.0'} + watchpack@2.4.0: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 - dev: false - /wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + wcwidth@1.0.1: dependencies: defaults: 1.0.4 - dev: true - /web-namespaces@2.0.1: - resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - dev: false + web-namespaces@2.0.1: {} - /webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: false + webidl-conversions@3.0.1: {} - /webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} - engines: {node: '>=10.13.0'} - dev: false + webpack-sources@3.2.3: {} - /webpack@5.89.0: - resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true + webpack@5.89.0: dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -9556,28 +11016,21 @@ packages: - '@swc/core' - esbuild - uglify-js - dev: false - /whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - dev: false - /which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + which-boxed-primitive@1.0.2: dependencies: is-bigint: 1.0.4 is-boolean-object: 1.1.2 is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 - dev: true - /which-builtin-type@1.1.3: - resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} - engines: {node: '>= 0.4'} + which-builtin-type@1.1.3: dependencies: function.prototype.name: 1.1.6 has-tostringtag: 1.0.0 @@ -9591,133 +11044,85 @@ packages: which-boxed-primitive: 1.0.2 which-collection: 1.0.1 which-typed-array: 1.1.13 - dev: true - /which-collection@1.0.1: - resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} + which-collection@1.0.1: dependencies: is-map: 2.0.2 is-set: 2.0.2 is-weakmap: 2.0.1 is-weakset: 2.0.2 - dev: true - /which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - dev: true + which-module@2.0.1: {} - /which-pm@2.0.0: - resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} - engines: {node: '>=8.15'} + which-pm@2.0.0: dependencies: load-yaml-file: 0.2.0 path-exists: 4.0.0 - dev: true - /which-typed-array@1.1.13: - resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} - engines: {node: '>= 0.4'} + which-typed-array@1.1.13: dependencies: available-typed-arrays: 1.0.5 call-bind: 1.0.5 for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.0 - dev: true - /which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} - engines: {node: '>= 0.4'} + which-typed-array@1.1.15: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.2 - dev: true - /which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true + which@1.3.1: dependencies: isexe: 2.0.0 - dev: true - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true + which@2.0.2: dependencies: isexe: 2.0.0 - /wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} + wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: true - /wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - /wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} + wrap-ansi@8.1.0: dependencies: ansi-styles: 6.2.1 string-width: 5.1.2 strip-ansi: 7.1.0 - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + wrappy@1.0.2: {} - /y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - dev: true + y18n@4.0.3: {} - /y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - dev: true + y18n@5.0.8: {} - /yallist@2.1.2: - resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - dev: true + yallist@2.1.2: {} - /yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - dev: false + yallist@3.1.1: {} - /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yallist@4.0.0: {} - /yaml@2.3.3: - resolution: {integrity: sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==} - engines: {node: '>= 14'} + yaml@2.3.3: {} - /yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} + yargs-parser@18.1.3: dependencies: camelcase: 5.3.1 decamelize: 1.2.0 - dev: true - /yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - dev: true + yargs-parser@21.1.1: {} - /yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} + yargs@15.4.1: dependencies: cliui: 6.0.0 decamelize: 1.2.0 @@ -9730,11 +11135,8 @@ packages: which-module: 2.0.1 y18n: 4.0.3 yargs-parser: 18.1.3 - dev: true - /yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} + yargs@17.7.2: dependencies: cliui: 8.0.1 escalade: 3.1.1 @@ -9743,25 +11145,13 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 21.1.1 - dev: true - /yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} + yn@3.1.1: {} - /yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} + yocto-queue@0.1.0: {} - /yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} - dev: false + yocto-queue@1.0.0: {} - /zod@3.22.4: - resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} - dev: false + zod@3.22.4: {} - /zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - dev: false + zwitch@2.0.4: {} From 63519429209cfb9aa2c97920655a4b321abf4851 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 14 Jul 2024 20:42:10 +0200 Subject: [PATCH 198/326] :bulb: uncomment sign in function --- src/app/login/EmailForm.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/app/login/EmailForm.tsx b/src/app/login/EmailForm.tsx index 0a89ffd13..c2a0a955f 100644 --- a/src/app/login/EmailForm.tsx +++ b/src/app/login/EmailForm.tsx @@ -6,6 +6,7 @@ import { zodResolver } from '@hookform/resolvers/zod'; import { AtSign } from 'lucide-react'; import { useForm } from 'react-hook-form'; +import { emailSignIn } from '@/actions'; import { Button, Field, Input } from '@/components'; import { userEmailSchema } from '@/lib/validations'; @@ -34,7 +35,7 @@ export default function EmailForm() { Object.keys(data).forEach((key) => { formData.append(key, data[key]); }); - // await emailSignIn(formData); + await emailSignIn(formData); }; useEffect(() => { From 29c1fee62079da35d937c27e79e2c3184e83351a Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 14 Jul 2024 20:43:58 +0200 Subject: [PATCH 199/326] :label: add env values for email login --- .env.sample | 7 ++++++- src/types/environment.d.ts | 5 +++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.env.sample b/.env.sample index f68cff658..5b7970943 100644 --- a/.env.sample +++ b/.env.sample @@ -29,4 +29,9 @@ CLIENT_EMAIL= PRIVATE_KEY= # Resend key -RESEND_API_KEY= \ No newline at end of file +RESEND_API_KEY= +EMAIL_SERVER_USER= +EMAIL_SERVER_PASSWORD= +EMAIL_SERVER_HOST= +EMAIL_SERVER_PORT= +EMAIL_FROM= \ No newline at end of file diff --git a/src/types/environment.d.ts b/src/types/environment.d.ts index 222ea8905..b4eb45756 100644 --- a/src/types/environment.d.ts +++ b/src/types/environment.d.ts @@ -25,6 +25,11 @@ declare global { PRIVATE_KEY: string; RESEND_API_KEY: string; + EMAIL_SERVER_USER: string; + EMAIL_SERVER_PASSWORD: string; + EMAIL_SERVER_HOST: string; + EMAIL_SERVER_PORT: string; + EMAIL_FROM: string; } } } From 15867a83b25f6efe78d9f0db7c3496250d945365 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 14 Jul 2024 20:45:49 +0200 Subject: [PATCH 200/326] :bug: fix wrong type --- src/modules/home/Question.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/home/Question.tsx b/src/modules/home/Question.tsx index 800211ebb..f474e8e3a 100644 --- a/src/modules/home/Question.tsx +++ b/src/modules/home/Question.tsx @@ -241,7 +241,7 @@ export default function Question({ node, favorites }: Props) { font="small" weight="semibold" > - {String.fromCodePoint('0x1f604')} React + {String.fromCodePoint(0x1f604)} React From 2e9a5660f3c0579e5d77bc389e7df5650667b178 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Tue, 16 Jul 2024 14:29:57 +0200 Subject: [PATCH 201/326] :bug: move signIn function in client component --- src/actions/index.ts | 1 - src/actions/login/index.ts | 16 ---------------- src/app/login/EmailForm.tsx | 12 +++++------- 3 files changed, 5 insertions(+), 24 deletions(-) delete mode 100644 src/actions/login/index.ts diff --git a/src/actions/index.ts b/src/actions/index.ts index dbde19357..fb6078455 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -35,7 +35,6 @@ export { getUserAnswers } from './get-user-answers'; export { getUserQuestions } from './get-user-questions'; export { getUsers } from './get-users'; export { getUsersCount } from './get-users-count'; -export { emailSignIn } from './login'; export { updateAnswer, updateAnswerSchema } from './update-answer'; export { updateLogo, updateLogoSchema } from './update-logo'; export { updateNode, updateNodeSchema } from './update-node'; diff --git a/src/actions/login/index.ts b/src/actions/login/index.ts deleted file mode 100644 index 0b59d3073..000000000 --- a/src/actions/login/index.ts +++ /dev/null @@ -1,16 +0,0 @@ -'use server'; - -import { signIn } from 'next-auth/react'; - -import { successToast } from '@/components'; -import 'server-only'; - -type EmailSignInData = { - email: string; -}; - -export async function emailSignIn(formData: FormData) { - const data = Object.fromEntries(formData) as EmailSignInData; - await signIn('email', data); - successToast(`Link sent to ${data.email}`); -} diff --git a/src/app/login/EmailForm.tsx b/src/app/login/EmailForm.tsx index c2a0a955f..d5a41415f 100644 --- a/src/app/login/EmailForm.tsx +++ b/src/app/login/EmailForm.tsx @@ -4,10 +4,10 @@ import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; import { AtSign } from 'lucide-react'; +import { signIn } from 'next-auth/react'; import { useForm } from 'react-hook-form'; -import { emailSignIn } from '@/actions'; -import { Button, Field, Input } from '@/components'; +import { Button, Field, Input, successToast } from '@/components'; import { userEmailSchema } from '@/lib/validations'; import type { SubmitHandler } from 'react-hook-form'; @@ -31,11 +31,9 @@ export default function EmailForm() { }); const onSubmit: SubmitHandler = async (data) => { - const formData = new FormData(); - Object.keys(data).forEach((key) => { - formData.append(key, data[key]); - }); - await emailSignIn(formData); + const { email } = data; + await signIn('email', { email }); + successToast(`Link sent to ${data.email}`); }; useEffect(() => { From b0f42a8af4eb3cdc75a9acdb0c45bbb0a49d6f6e Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Tue, 16 Jul 2024 19:46:13 +0200 Subject: [PATCH 202/326] :construction: work on adding magic link login --- .../migration.sql | 17 +++++ .../migration.sql | 2 + prisma/schema.prisma | 12 +++ src/actions/get-me/index.ts | 2 + src/app/api/auth/[...nextauth]/route.ts | 74 +++++++------------ 5 files changed, 59 insertions(+), 48 deletions(-) create mode 100644 prisma/migrations/20240716155356_faqmaker_dev28/migration.sql create mode 100644 prisma/migrations/20240716174119_faqmaker_dev28/migration.sql diff --git a/prisma/migrations/20240716155356_faqmaker_dev28/migration.sql b/prisma/migrations/20240716155356_faqmaker_dev28/migration.sql new file mode 100644 index 000000000..07e237176 --- /dev/null +++ b/prisma/migrations/20240716155356_faqmaker_dev28/migration.sql @@ -0,0 +1,17 @@ +-- CreateTable +CREATE TABLE "VerificationToken" ( + "id" TEXT NOT NULL, + "identifier" TEXT NOT NULL, + "token" TEXT NOT NULL, + "expires" TIMESTAMP(3) NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "VerificationToken_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "VerificationToken_token_key" ON "VerificationToken"("token"); + +-- CreateIndex +CREATE UNIQUE INDEX "VerificationToken_identifier_token_key" ON "VerificationToken"("identifier", "token"); diff --git a/prisma/migrations/20240716174119_faqmaker_dev28/migration.sql b/prisma/migrations/20240716174119_faqmaker_dev28/migration.sql new file mode 100644 index 000000000..572834ff5 --- /dev/null +++ b/prisma/migrations/20240716174119_faqmaker_dev28/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "User" ADD COLUMN "emailVerified" TIMESTAMP(3); diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 47e55ae23..ab0b79582 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -31,6 +31,7 @@ model User { email String @unique image String? role Role @default(user) + emailVerified DateTime? tenant Tenant @relation(fields: [tenantId], references: [id], onDelete: Cascade) tenantId String questions Question[] @@ -180,3 +181,14 @@ model Session { @@unique([sessionToken]) } + +model VerificationToken { + id String @id @default(cuid()) + identifier String + token String @unique + expires DateTime + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + + @@unique([identifier, token]) +} diff --git a/src/actions/get-me/index.ts b/src/actions/get-me/index.ts index 3de45a776..2bd946dd4 100644 --- a/src/actions/get-me/index.ts +++ b/src/actions/get-me/index.ts @@ -1,3 +1,5 @@ +'use server'; + import { cache } from 'react'; import { getServerSession } from 'next-auth'; diff --git a/src/app/api/auth/[...nextauth]/route.ts b/src/app/api/auth/[...nextauth]/route.ts index 419b7da62..187453d6f 100644 --- a/src/app/api/auth/[...nextauth]/route.ts +++ b/src/app/api/auth/[...nextauth]/route.ts @@ -25,73 +25,51 @@ export const authOptions: NextAuthOptions = { }; }, }), - // EmailProvider({ - // server: { - // host: process.env.EMAIL_SERVER_HOST, - // port: process.env.EMAIL_SERVER_PORT, - // auth: { - // user: process.env.EMAIL_SERVER_USER, - // pass: process.env.EMAIL_SERVER_PASSWORD, - // }, - // }, - // from: process.env.EMAIL_FROM, - // sendVerificationRequest, - // }), + EmailProvider({ + server: { + host: process.env.EMAIL_SERVER_HOST, + port: process.env.EMAIL_SERVER_PORT, + auth: { + user: process.env.EMAIL_SERVER_USER, + pass: process.env.EMAIL_SERVER_PASSWORD, + }, + }, + from: process.env.EMAIL_FROM, + sendVerificationRequest, + }), ], pages: { signIn: Routes.SITE.LOGIN, error: Routes.SITE.LOGIN, }, callbacks: { - async signIn({ profile, account }) { - if (!profile?.email || !account) { + async signIn({ profile, account, user }) { + if (!account || !user) { return false; } - const maybeUser = await prisma.user.findUnique({ - where: { email: profile.email }, + const userExists = await prisma.user.findUnique({ + where: { email: user?.email }, }); - // if (!maybeUser) { - // const domain = profile.email?.split('@')[1]; - // const tenant = await prisma.tenant.findUnique({ where: { domain } }); - // if (!tenant) return false; - // const usersCount = await prisma.user.count({ - // where: { tenantId: tenant.id }, - // }); - // if ( - // (tenant.plan === 'free' && usersCount >= 5) || - // (tenant.plan === 'startup' && usersCount >= 100) - // ) { - // return false; - // } - // const newUser = await prisma.user.create({ - // data: { - // name: profile.name, - // email: profile.email, - // image: profile.picture, - // role: 'user', - // tenant: { connect: { id: tenant.id } }, - // }, - // }); - // if (!newUser) { - // return false; - // } - // return true; - // } + if (!userExists) { + return false; + } if ( - account.provider === 'google' && - (!maybeUser.name || !maybeUser.image) + account?.provider === 'google' && + (!userExists.name || !userExists.image) ) { await prisma.user.update({ - where: { id: maybeUser.id }, + where: { id: userExists?.id }, data: { - name: profile.name, - image: profile.picture, + name: profile?.name, + image: profile?.picture, }, }); } return true; }, async jwt({ token, account, user }) { + console.log('🚀 ~ jwt ~ user:', user); + console.log('🚀 ~ jwt ~ account:', account); if (account) { token.accessToken = account.access_token; token.id = user.id; From fcb9e05e07f5d215ea0db6fcff2a5394c44cded6 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Fri, 19 Jul 2024 19:42:45 +0200 Subject: [PATCH 203/326] :recycle: add redirect callback --- src/app/api/auth/[...nextauth]/route.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/app/api/auth/[...nextauth]/route.ts b/src/app/api/auth/[...nextauth]/route.ts index 187453d6f..11d5f5111 100644 --- a/src/app/api/auth/[...nextauth]/route.ts +++ b/src/app/api/auth/[...nextauth]/route.ts @@ -67,9 +67,10 @@ export const authOptions: NextAuthOptions = { } return true; }, + async redirect({ url, baseUrl }) { + return baseUrl; + }, async jwt({ token, account, user }) { - console.log('🚀 ~ jwt ~ user:', user); - console.log('🚀 ~ jwt ~ account:', account); if (account) { token.accessToken = account.access_token; token.id = user.id; From bbc66eb18aa5f9319cda4b9c9a619979fe33fd06 Mon Sep 17 00:00:00 2001 From: Thibaud Brault <77327446+thibaudbrault@users.noreply.github.com> Date: Wed, 31 Jul 2024 12:48:35 +0200 Subject: [PATCH 204/326] :memo: remove bad icon --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 158966736..5d7a20609 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Explore the exciting features and functionalities available in FAQMaker. FAQMaker is built using a stack of cutting-edge technologies. -![My Skills](https://skillicons.dev/icons?i=react,next,svelte,ts,tailwind,prisma,githubactions) +![My Skills](https://skillicons.dev/icons?i=react,next,ts,tailwind,prisma,githubactions) ## License From 42ffc4f688579260b4033ff7d861136bc2f862b7 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Wed, 4 Sep 2024 12:30:56 +0200 Subject: [PATCH 205/326] :fire: remove reaction feature --- package.json | 3 -- pnpm-lock.yaml | 30 ----------- prisma/schema.prisma | 26 --------- src/actions/get-reactions/index.ts | 22 -------- src/actions/index.ts | 3 -- src/actions/upsert-reaction/action.ts | 76 --------------------------- src/actions/upsert-reaction/index.ts | 2 - src/actions/upsert-reaction/schema.ts | 7 --- src/modules/home/Question.tsx | 46 ---------------- src/types/models/node.ts | 2 - src/utils/prisma.ts | 1 - 11 files changed, 218 deletions(-) delete mode 100644 src/actions/get-reactions/index.ts delete mode 100644 src/actions/upsert-reaction/action.ts delete mode 100644 src/actions/upsert-reaction/index.ts delete mode 100644 src/actions/upsert-reaction/schema.ts diff --git a/package.json b/package.json index 0ef5ff7cb..1160c37c6 100644 --- a/package.json +++ b/package.json @@ -31,8 +31,6 @@ "postinstall": "prisma generate" }, "dependencies": { - "@emoji-mart/data": "^1.2.1", - "@emoji-mart/react": "^1.1.1", "@google-cloud/storage": "^7.7.0", "@hookform/resolvers": "^3.3.4", "@next-auth/prisma-adapter": "^1.0.7", @@ -54,7 +52,6 @@ "@uiw/react-md-editor": "^4.0.3", "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", - "emoji-mart": "^5.6.0", "formidable": "^3.5.1", "jotai": "^2.6.4", "lucide-react": "^0.400.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 86c243e5f..5f0fe35cc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,12 +8,6 @@ importers: .: dependencies: - '@emoji-mart/data': - specifier: ^1.2.1 - version: 1.2.1 - '@emoji-mart/react': - specifier: ^1.1.1 - version: 1.1.1(emoji-mart@5.6.0)(react@18.2.0) '@google-cloud/storage': specifier: ^7.7.0 version: 7.7.0 @@ -77,9 +71,6 @@ importers: clsx: specifier: ^2.1.0 version: 2.1.0 - emoji-mart: - specifier: ^5.6.0 - version: 5.6.0 formidable: specifier: ^3.5.1 version: 3.5.1 @@ -419,15 +410,6 @@ packages: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} - '@emoji-mart/data@1.2.1': - resolution: {integrity: sha512-no2pQMWiBy6gpBEiqGeU77/bFejDqUTRY7KX+0+iur13op3bqUsXdnwoZs6Xb1zbv0gAj5VvS1PWoUUckSr5Dw==} - - '@emoji-mart/react@1.1.1': - resolution: {integrity: sha512-NMlFNeWgv1//uPsvLxvGQoIerPuVdXwK/EUek8OOkJ6wVOWPUizRBJU0hDqWZCOROVpfBgCemaC3m6jDOXi03g==} - peerDependencies: - emoji-mart: ^5.2 - react: ^16.8 || ^17 || ^18 - '@eslint-community/eslint-utils@4.4.0': resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2352,9 +2334,6 @@ packages: electron-to-chromium@1.4.616: resolution: {integrity: sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==} - emoji-mart@5.6.0: - resolution: {integrity: sha512-eJp3QRe79pjwa+duv+n7+5YsNhRcMl812EcFVwrnRvYKoNPoQb5qxU8DG6Bgwji0akHdp6D4Ln6tYLG58MFSow==} - emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -5507,13 +5486,6 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.9 - '@emoji-mart/data@1.2.1': {} - - '@emoji-mart/react@1.1.1(emoji-mart@5.6.0)(react@18.2.0)': - dependencies: - emoji-mart: 5.6.0 - react: 18.2.0 - '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': dependencies: eslint: 8.57.0 @@ -7504,8 +7476,6 @@ snapshots: electron-to-chromium@1.4.616: {} - emoji-mart@5.6.0: {} - emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} diff --git a/prisma/schema.prisma b/prisma/schema.prisma index ab0b79582..e59909e06 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -39,7 +39,6 @@ model User { accounts Account[] sessions Session[] favorites Favorite[] - reactions ReactionUser[] @@index([tenantId]) } @@ -54,7 +53,6 @@ model Node { tenant Tenant @relation(fields: [tenantId], references: [id], onDelete: Cascade) tenantId String favorites Favorite[] - reactions Reaction[] isPinned Boolean @default(false) @@index([tenantId]) @@ -109,30 +107,6 @@ model Favorite { @@index([userId, nodeId]) } -model Reaction { - id String @id @default(cuid()) - shortcode String - emoji String @default("") - count Int @default(1) - node Node @relation(fields: [nodeId], references: [id], onDelete: Cascade) - nodeId String - users ReactionUser[] - - @@unique([shortcode, nodeId]) - @@index([nodeId]) -} - -model ReactionUser { - id String @id @default(cuid()) - reaction Reaction @relation(fields: [reactionId], references: [id], onDelete: Cascade) - reactionId String - user User @relation(fields: [userId], references: [id], onDelete: Cascade) - userId String - - @@unique([reactionId, userId]) - @@index([reactionId, userId]) -} - model Integrations { id String @id @default(cuid()) slack String diff --git a/src/actions/get-reactions/index.ts b/src/actions/get-reactions/index.ts deleted file mode 100644 index 3d514407f..000000000 --- a/src/actions/get-reactions/index.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { cache } from 'react'; - -import prisma from 'lib/prisma'; - -import type { Reaction } from '@prisma/client'; - -export const getReactions = cache( - async (nodeId: string): Promise => { - try { - if (!nodeId) { - throw new Error('Node not found'); - } - const reactions = await prisma.reaction.findMany({ - where: { nodeId }, - }); - if (!reactions) return []; - return reactions; - } catch (error) { - throw new Error('Error fetching reactions'); - } - }, -); diff --git a/src/actions/index.ts b/src/actions/index.ts index fb6078455..c80f7a659 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -23,7 +23,6 @@ export { getMe } from './get-me'; export { getNode } from './get-node'; export { getPaginatedNodes } from './get-nodes'; export { getNodesCount } from './get-nodes-count'; -export { getReactions } from './get-reactions'; export { getSearchNodes } from './get-search-nodes'; export { getSearchTags } from './get-search-tags'; export { getSignedLogo } from './get-signed-logo'; @@ -44,5 +43,3 @@ export { upsertIntegrations, upsertIntegrationsSchema, } from './upsert-integrations'; - -export { upsertReaction, upsertReactionSchema } from './upsert-reaction'; diff --git a/src/actions/upsert-reaction/action.ts b/src/actions/upsert-reaction/action.ts deleted file mode 100644 index d45e5b52e..000000000 --- a/src/actions/upsert-reaction/action.ts +++ /dev/null @@ -1,76 +0,0 @@ -'use server'; - -import { revalidatePath } from 'next/cache'; - -import { authActionClient } from '@/lib/safe-actions'; -import { Routes } from '@/utils'; -import prisma from 'lib/prisma'; - -import 'server-only'; -import { upsertReactionSchema } from './schema'; - -export const upsertReaction = authActionClient - .metadata({ actionName: 'upsertReaction' }) - .schema(upsertReactionSchema) - .action( - async ({ parsedInput: { nodeId, shortcode, emoji }, ctx: { userId } }) => { - const reactionExists = await prisma.reaction.findFirst({ - where: { shortcode, nodeId }, - }); - if (reactionExists) { - const userReactionExists = await prisma.reactionUser.findFirst({ - where: { reactionId: reactionExists.id, userId }, - }); - if (userReactionExists) { - await prisma.reactionUser.delete({ - where: { id: userReactionExists.id }, - }); - const updatedReaction = await prisma.reaction.update({ - where: { shortcode, nodeId, id: reactionExists.id }, - data: { - count: { - decrement: 1, - }, - }, - }); - if (updatedReaction.count === 0) { - await prisma.reaction.delete({ - where: { shortcode, nodeId, id: reactionExists.id }, - }); - } - } else { - await prisma.reaction.update({ - where: { id: reactionExists.id }, - data: { - count: { - increment: 1, - }, - users: { - create: { - user: { - connect: { id: userId }, - }, - }, - }, - }, - }); - } - } else { - await prisma.reaction.create({ - data: { - shortcode, - nodeId, - emoji, - users: { - create: { - user: { - connect: { id: userId }, - }, - }, - }, - }, - }); - } - revalidatePath(`${Routes.SITE.QUESTION}/${nodeId}`); - }, - ); diff --git a/src/actions/upsert-reaction/index.ts b/src/actions/upsert-reaction/index.ts deleted file mode 100644 index af29b4d52..000000000 --- a/src/actions/upsert-reaction/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './schema'; -export * from './action'; diff --git a/src/actions/upsert-reaction/schema.ts b/src/actions/upsert-reaction/schema.ts deleted file mode 100644 index a1f3e0b6a..000000000 --- a/src/actions/upsert-reaction/schema.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { z } from 'zod'; - -export const upsertReactionSchema = z.object({ - nodeId: z.string().cuid2(), - shortcode: z.string(), - emoji: z.string(), -}); diff --git a/src/modules/home/Question.tsx b/src/modules/home/Question.tsx index f474e8e3a..26c1b1ca3 100644 --- a/src/modules/home/Question.tsx +++ b/src/modules/home/Question.tsx @@ -1,7 +1,5 @@ 'use client'; -import EmojiData from '@emoji-mart/data'; -import Picker from '@emoji-mart/react'; import { zodResolver } from '@hookform/resolvers/zod'; import { useAtomValue } from 'jotai'; import { @@ -22,14 +20,10 @@ import { createPin, deleteFavorite, deletePin, - upsertReaction, } from '@/actions'; import { Badge, Button, - Popover, - PopoverContent, - PopoverTrigger, Tooltip, TooltipContent, TooltipTrigger, @@ -97,11 +91,6 @@ export default function Question({ node, favorites }: Props) { } }; - const onEmojiSelect = async (shortcode, emoji, nodeId) => { - const data = { shortcode, emoji, nodeId }; - await upsertReaction(data); - }; - return (
  • )} - {node.reactions.map((reaction) => ( - - ))}
  • @@ -233,27 +208,6 @@ export default function Question({ node, favorites }: Props) { )}
    - - - - - - - onEmojiSelect(emoji.shortcodes, emoji.native, node.id) - } - showPreview={false} - /> - - Date: Wed, 4 Sep 2024 15:49:50 +0200 Subject: [PATCH 206/326] :arrow_up: migrate to eslint flat config --- .eslintrc.json | 107 ---- eslint.config.mjs | 85 +++ package.json | 23 +- pnpm-lock.yaml | 1538 +++++++++++++++++---------------------------- 4 files changed, 690 insertions(+), 1063 deletions(-) delete mode 100644 .eslintrc.json create mode 100644 eslint.config.mjs diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index c55d09ee1..000000000 --- a/.eslintrc.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - // Configuration for JavaScript files - "extends": [ - "airbnb-base", - "next/core-web-vitals", // Needed to avoid warning in next.js build: 'The Next.js plugin was not detected in your ESLint configuration' - "plugin:prettier/recommended" - ], - "rules": { - "prettier/prettier": [ - "error", - { - "trailingComma": "all", - "singleQuote": true, - "printWidth": 80, - "tabWidth": 2, - "endOfLine": "auto" - } - ] // Avoid conflict rule between Prettier and Airbnb Eslint - }, - "ignorePatterns": ["**/api/**/*.ts", "middleware.ts"], - "overrides": [ - // Configuration for TypeScript files - { - "files": ["**/*.ts", "**/*.tsx"], - "plugins": [ - "@typescript-eslint", - "unused-imports", - "tailwindcss" - ], - "extends": [ - "plugin:tailwindcss/recommended", - "airbnb", - "airbnb-typescript", - "next/core-web-vitals", - "plugin:prettier/recommended" - ], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "project": "./tsconfig.json" - }, - "rules": { - "prettier/prettier": [ - "error", - { - "trailingComma": "all", - "singleQuote": true, - "printWidth": 80, - "tabWidth": 2, - "endOfLine": "auto" - } - ], // Avoid conflict rule between Prettier and Airbnb Eslint - "import/extensions": "off", // Avoid missing file extension errors, TypeScript already provides a similar feature - "react/function-component-definition": "off", // Disable Airbnb's specific function type - "react/destructuring-assignment": "off", // Vscode doesn't support automatically destructuring, it's a pain to add a new variable - "react/require-default-props": "off", // Allow non-defined react props as undefined - "react/jsx-props-no-spreading": "off", // _app.tsx uses spread operator and also, react-hook-form - "@typescript-eslint/comma-dangle": "off", // Avoid conflict rule between Eslint and Prettier - "@typescript-eslint/consistent-type-imports": "error", // Ensure `import type` is used when it's necessary - "no-restricted-syntax": [ - "error", - "ForInStatement", - "LabeledStatement", - "WithStatement" - ], // Overrides Airbnb configuration and enable no-restricted-syntax - "import/prefer-default-export": "off", // Named export is easier to refactor automatically - "import/order": [ - "error", - { - "groups": [ - "builtin", - "external", - "internal", - ["parent", "sibling"], - "object", - "type", - "index" - ], - "pathGroups": [ - { - "pattern": "{react,react-dom/**}", - "group": "external", - "position": "before" - } - ], - "pathGroupsExcludedImportTypes": ["react"], - "newlines-between": "always", - "alphabetize": { - "order": "asc", - "caseInsensitive": true - } - } - ], - "@typescript-eslint/no-unused-vars": "off", - "unused-imports/no-unused-imports": "error", - "unused-imports/no-unused-vars": [ - "error", - { "argsIgnorePattern": "^_" } - ] - } - }, - // Configuration for Playwright - { - "files": ["**/*.test.ts"], - "extends": ["plugin:playwright/recommended"] - } - ] -} \ No newline at end of file diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 000000000..56fdddac8 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,85 @@ +/** @type {import('eslint').Linter.FlatConfig[]} */ + +import eslint from '@eslint/js'; +import tseslint from 'typescript-eslint'; +import eslintConfigPrettier from 'eslint-config-prettier'; +import unusedImports from "eslint-plugin-unused-imports"; +import eslintPluginImportX from 'eslint-plugin-import-x'; +import reactPlugin from 'eslint-plugin-react'; +import hooksPlugin from 'eslint-plugin-react-hooks'; +import { fixupConfigRules } from "@eslint/compat"; +import { FlatCompat } from "@eslint/eslintrc"; +import { fixupPluginRules } from '@eslint/compat'; + +const compat = new FlatCompat(); + +export default [ + eslint.configs.recommended, + ...tseslint.configs.recommended, + eslintConfigPrettier, + eslintPluginImportX.flatConfigs.recommended, + eslintPluginImportX.flatConfigs.typescript, + { + files: ['**/*.ts', '**/*.tsx'], + ignores: ['**/*.config.*', '**/*.test.ts', 'node_modules', '.next'], + languageOptions: { + parser: tseslint.parser, + sourceType: 'module', + ecmaVersion: 'latest', + parserOptions: { + project: './tsconfig.json', + extraFileExtensions: ['.tsx'], + }, + }, + plugins: { + '@typescript-eslint': tseslint.plugin, + react: reactPlugin, + 'react-hooks': fixupPluginRules(hooksPlugin), + "unused-imports": unusedImports, + }, + settings: { + 'import-x/extensions': ['.ts', '.tsx'] + }, + rules: { + ...reactPlugin.configs['jsx-runtime'].rules, + ...hooksPlugin.configs.recommended.rules, + // ...fixupConfigRules(compat.extends("next/core-web-vitals")), + "unused-imports/no-unused-imports": "error", + "unused-imports/no-unused-vars": [ + "error", + { "argsIgnorePattern": "^_" } + ], + "@typescript-eslint/no-unused-vars": "off", + "import-x/extensions": "off", + "import-x/no-unresolved": "off", + "import-x/prefer-default-export": "off", + "import-x/order": [ + "error", + { + "groups": [ + "builtin", + "external", + "internal", + ["parent", "sibling"], + "object", + "type", + "index" + ], + "pathGroups": [ + { + "pattern": "{react,react-dom/**}", + "group": "external", + "position": "before" + } + ], + "pathGroupsExcludedImportTypes": ["react"], + "newlines-between": "always", + "alphabetize": { + "order": "asc", + "caseInsensitive": true + } + } + ], + } + } +] \ No newline at end of file diff --git a/package.json b/package.json index 1160c37c6..1b2369d37 100644 --- a/package.json +++ b/package.json @@ -80,27 +80,27 @@ }, "devDependencies": { "@changesets/cli": "^2.27.1", + "@eslint/compat": "^1.1.1", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "^9.9.1", + "@next/eslint-plugin-next": "^14.2.7", "@playwright/test": "^1.45.0", "@swc-jotai/react-refresh": "^0.1.0", "@types/formidable": "^3.4.5", "@types/node": "^20.5.6", "@types/react": "^18.0.27", - "@typescript-eslint/eslint-plugin": "^7.14.1", "autoprefixer": "^10.4.16", "dotenv": "^16.4.5", - "eslint": "8.57.0", - "eslint-config-airbnb": "^19.0.4", - "eslint-config-airbnb-typescript": "^18.0.0", - "eslint-config-next": "14.1.0", + "eslint": "9.9.1", + "eslint-config-next": "^14.2.7", "eslint-config-prettier": "^9.0.0", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-jsx-a11y": "^6.8.0", + "eslint-import-resolver-typescript": "^3.6.3", + "eslint-plugin-import-x": "^4.2.0", "eslint-plugin-playwright": "^1.6.2", "eslint-plugin-prettier": "^5.1.3", - "eslint-plugin-react": "^7.34.2", + "eslint-plugin-react": "^7.35.2", "eslint-plugin-react-hooks": "^4.6.2", - "eslint-plugin-tailwindcss": "^3.17.3", - "eslint-plugin-unused-imports": "^4.0.0", + "eslint-plugin-unused-imports": "^4.1.3", "husky": "^9.0.11", "lint-staged": "^15.0.2", "postcss": "^8.4.28", @@ -109,6 +109,7 @@ "prisma": "5.16.1", "tailwindcss": "^3.4.1", "ts-node": "^10.9.1", - "typescript": "^5.3.3" + "typescript": "^5.3.3", + "typescript-eslint": "^8.4.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5f0fe35cc..d79ea117d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -150,6 +150,18 @@ importers: '@changesets/cli': specifier: ^2.27.1 version: 2.27.1 + '@eslint/compat': + specifier: ^1.1.1 + version: 1.1.1 + '@eslint/eslintrc': + specifier: ^3.1.0 + version: 3.1.0 + '@eslint/js': + specifier: ^9.9.1 + version: 9.9.1 + '@next/eslint-plugin-next': + specifier: ^14.2.7 + version: 14.2.7 '@playwright/test': specifier: ^1.45.0 version: 1.45.0 @@ -165,9 +177,6 @@ importers: '@types/react': specifier: ^18.0.27 version: 18.0.27 - '@typescript-eslint/eslint-plugin': - specifier: ^7.14.1 - version: 7.14.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3) autoprefixer: specifier: ^10.4.16 version: 10.4.16(postcss@8.4.28) @@ -175,44 +184,35 @@ importers: specifier: ^16.4.5 version: 16.4.5 eslint: - specifier: 8.57.0 - version: 8.57.0 - eslint-config-airbnb: - specifier: ^19.0.4 - version: 19.0.4(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.0))(eslint-plugin-react@7.34.2(eslint@8.57.0))(eslint@8.57.0) - eslint-config-airbnb-typescript: - specifier: ^18.0.0 - version: 18.0.0(@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3))(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint@8.57.0) + specifier: 9.9.1 + version: 9.9.1(jiti@1.19.3) eslint-config-next: - specifier: 14.1.0 - version: 14.1.0(eslint@8.57.0)(typescript@5.3.3) + specifier: ^14.2.7 + version: 14.2.7(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) eslint-config-prettier: specifier: ^9.0.0 - version: 9.0.0(eslint@8.57.0) - eslint-plugin-import: - specifier: ^2.29.1 - version: 2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0) - eslint-plugin-jsx-a11y: - specifier: ^6.8.0 - version: 6.8.0(eslint@8.57.0) + version: 9.0.0(eslint@9.9.1(jiti@1.19.3)) + eslint-import-resolver-typescript: + specifier: ^3.6.3 + version: 3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)) + eslint-plugin-import-x: + specifier: ^4.2.0 + version: 4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) eslint-plugin-playwright: specifier: ^1.6.2 - version: 1.6.2(eslint@8.57.0) + version: 1.6.2(eslint@9.9.1(jiti@1.19.3)) eslint-plugin-prettier: specifier: ^5.1.3 - version: 5.1.3(@types/eslint@8.56.0)(eslint-config-prettier@9.0.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.2.5) + version: 5.1.3(@types/eslint@8.56.0)(eslint-config-prettier@9.0.0(eslint@9.9.1(jiti@1.19.3)))(eslint@9.9.1(jiti@1.19.3))(prettier@3.2.5) eslint-plugin-react: - specifier: ^7.34.2 - version: 7.34.2(eslint@8.57.0) + specifier: ^7.35.2 + version: 7.35.2(eslint@9.9.1(jiti@1.19.3)) eslint-plugin-react-hooks: specifier: ^4.6.2 - version: 4.6.2(eslint@8.57.0) - eslint-plugin-tailwindcss: - specifier: ^3.17.3 - version: 3.17.3(tailwindcss@3.4.1(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3))) + version: 4.6.2(eslint@9.9.1(jiti@1.19.3)) eslint-plugin-unused-imports: - specifier: ^4.0.0 - version: 4.0.0(@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0) + specifier: ^4.1.3 + version: 4.1.3(@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint@9.9.1(jiti@1.19.3)) husky: specifier: ^9.0.11 version: 9.0.11 @@ -240,6 +240,9 @@ importers: typescript: specifier: ^5.3.3 version: 5.3.3 + typescript-eslint: + specifier: ^8.4.0 + version: 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) packages: @@ -416,21 +419,29 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.10.1': - resolution: {integrity: sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==} + '@eslint-community/regexpp@4.11.0': + resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint-community/regexpp@4.8.0': - resolution: {integrity: sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@eslint/compat@1.1.1': + resolution: {integrity: sha512-lpHyRyplhGPL5mGEh6M9O5nnKk0Gz4bFI+Zu6tKlPpDUN7XshWvH9C/px4UVm87IAANE0W81CEsNGbS1KlzXpA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@2.1.4': - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/config-array@0.18.0': + resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@8.57.0': - resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/eslintrc@3.1.0': + resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.9.1': + resolution: {integrity: sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.4': + resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@floating-ui/core@1.4.1': resolution: {integrity: sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ==} @@ -468,16 +479,13 @@ packages: peerDependencies: react-hook-form: ^7.0.0 - '@humanwhocodes/config-array@0.11.14': - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} - engines: {node: '>=10.10.0'} - '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - '@humanwhocodes/object-schema@2.0.2': - resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} + '@humanwhocodes/retry@0.3.0': + resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} + engines: {node: '>=18.18'} '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} @@ -522,8 +530,8 @@ packages: '@next/env@14.2.4': resolution: {integrity: sha512-3EtkY5VDkuV2+lNmKlbkibIJxcO4oIHEhBWne6PaAp+76J9KoSsGvNikp6ivzAT8dhhBMYrm6op2pS1ApG0Hzg==} - '@next/eslint-plugin-next@14.1.0': - resolution: {integrity: sha512-x4FavbNEeXx/baD/zC/SdrvkjSby8nBn8KcCREqk6UuwvwoAPZmaV8TFCAuo/cpovBRTIY67mHhe86MQQm/68Q==} + '@next/eslint-plugin-next@14.2.7': + resolution: {integrity: sha512-+7xh142AdhZGjY9/L0iFo7mqRBMJHe+q+uOL+hto1Lfo9DeWCGcR6no4StlFbVSVcA6fQLKEX6y6qhMsSKbgNQ==} '@next/swc-darwin-arm64@14.2.4': resolution: {integrity: sha512-AH3mO4JlFUqsYcwFUHb1wAKlebHU/Hv2u2kb1pAuRanDZ7pD/A/KPD98RHZmwsJpdHQwfEc/06mgpSzwrJYnNg==} @@ -591,6 +599,10 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@nolyfill/is-core-module@1.0.39': + resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} + engines: {node: '>=12.4.0'} + '@one-ini/wasm@0.1.1': resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} @@ -1228,8 +1240,11 @@ packages: rollup: optional: true - '@rushstack/eslint-patch@1.6.1': - resolution: {integrity: sha512-UY+FGM/2jjMkzQLn8pxcHGMaVLh9aEitG3zY2CiY7XHdLiz3bZOwa6oDxNqEMv7zZkV+cj5DOdz0cQ1BP5Hjgw==} + '@rtsao/scc@1.1.0': + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + + '@rushstack/eslint-patch@1.10.4': + resolution: {integrity: sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==} '@selderee/plugin-htmlparser2@0.11.0': resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} @@ -1509,73 +1524,64 @@ packages: zod-to-json-schema: optional: true - '@typescript-eslint/eslint-plugin@7.14.1': - resolution: {integrity: sha512-aAJd6bIf2vvQRjUG3ZkNXkmBpN+J7Wd0mfQiiVCJMu9Z5GcZZdcc0j8XwN/BM97Fl7e3SkTXODSk4VehUv7CGw==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/eslint-plugin@8.4.0': + resolution: {integrity: sha512-rg8LGdv7ri3oAlenMACk9e+AR4wUV0yrrG+XKsGKOK0EVgeEDqurkXMPILG2836fW4ibokTB5v4b6Z9+GYQDEw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/parser@6.17.0': - resolution: {integrity: sha512-C4bBaX2orvhK+LlwrY8oWGmSl4WolCfYm513gEccdWZj0CwGadbIADb0FtVEcI+WzUyjyoBj2JRP8g25E6IB8A==} + '@typescript-eslint/parser@7.2.0': + resolution: {integrity: sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/parser@7.12.0': - resolution: {integrity: sha512-dm/J2UDY3oV3TKius2OUZIFHsomQmpHtsV0FTh1WO8EKgHLQ1QCADUqscPgTpU+ih1e21FQSRjXckHn3txn6kQ==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/parser@8.4.0': + resolution: {integrity: sha512-NHgWmKSgJk5K9N16GIhQ4jSobBoJwrmURaLErad0qlLjrpP5bECYg+wxVTGlGZmJbU03jj/dfnb6V9bw+5icsA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 + eslint: ^8.57.0 || ^9.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/scope-manager@6.17.0': - resolution: {integrity: sha512-RX7a8lwgOi7am0k17NUO0+ZmMOX4PpjLtLRgLmT1d3lBYdWH4ssBUbwdmc5pdRX8rXon8v9x8vaoOSpkHfcXGA==} + '@typescript-eslint/scope-manager@7.2.0': + resolution: {integrity: sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==} engines: {node: ^16.0.0 || >=18.0.0} - '@typescript-eslint/scope-manager@7.12.0': - resolution: {integrity: sha512-itF1pTnN6F3unPak+kutH9raIkL3lhH1YRPGgt7QQOh43DQKVJXmWkpb+vpc/TiDHs6RSd9CTbDsc/Y+Ygq7kg==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/scope-manager@7.14.1': - resolution: {integrity: sha512-gPrFSsoYcsffYXTOZ+hT7fyJr95rdVe4kGVX1ps/dJ+DfmlnjFN/GcMxXcVkeHDKqsq6uAcVaQaIi3cFffmAbA==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/scope-manager@8.4.0': + resolution: {integrity: sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@7.14.1': - resolution: {integrity: sha512-/MzmgNd3nnbDbOi3LfasXWWe292+iuo+umJ0bCCMCPc1jLO/z2BQmWUUUXvXLbrQey/JgzdF/OV+I5bzEGwJkQ==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/type-utils@8.4.0': + resolution: {integrity: sha512-pu2PAmNrl9KX6TtirVOrbLPLwDmASpZhK/XU7WvoKoCUkdtq9zF7qQ7gna0GBZFN0hci0vHaSusiL2WpsQk37A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/types@6.17.0': - resolution: {integrity: sha512-qRKs9tvc3a4RBcL/9PXtKSehI/q8wuU9xYJxe97WFxnzH8NWWtcW3ffNS+EWg8uPvIerhjsEZ+rHtDqOCiH57A==} + '@typescript-eslint/types@7.2.0': + resolution: {integrity: sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==} engines: {node: ^16.0.0 || >=18.0.0} - '@typescript-eslint/types@7.12.0': - resolution: {integrity: sha512-o+0Te6eWp2ppKY3mLCU+YA9pVJxhUJE15FV7kxuD9jgwIAa+w/ycGJBMrYDTpVGUM/tgpa9SeMOugSabWFq7bg==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/types@7.14.1': - resolution: {integrity: sha512-mL7zNEOQybo5R3AavY+Am7KLv8BorIv7HCYS5rKoNZKQD9tsfGUpO4KdAn3sSUvTiS4PQkr2+K0KJbxj8H9NDg==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/types@8.4.0': + resolution: {integrity: sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@6.17.0': - resolution: {integrity: sha512-gVQe+SLdNPfjlJn5VNGhlOhrXz4cajwFd5kAgWtZ9dCZf4XJf8xmgCTLIqec7aha3JwgLI2CK6GY1043FRxZwg==} + '@typescript-eslint/typescript-estree@7.2.0': + resolution: {integrity: sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -1583,41 +1589,28 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@7.12.0': - resolution: {integrity: sha512-5bwqLsWBULv1h6pn7cMW5dXX/Y2amRqLaKqsASVwbBHMZSnHqE/HN4vT4fE0aFsiwxYvr98kqOWh1a8ZKXalCQ==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/typescript-estree@7.14.1': - resolution: {integrity: sha512-k5d0VuxViE2ulIO6FbxxSZaxqDVUyMbXcidC8rHvii0I56XZPv8cq+EhMns+d/EVIL41sMXqRbK3D10Oza1bbA==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/typescript-estree@8.4.0': + resolution: {integrity: sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/utils@7.14.1': - resolution: {integrity: sha512-CMmVVELns3nak3cpJhZosDkm63n+DwBlDX8g0k4QUa9BMnF+lH2lr3d130M1Zt1xxmB3LLk3NV7KQCq86ZBBhQ==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/utils@8.4.0': + resolution: {integrity: sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 + eslint: ^8.57.0 || ^9.0.0 - '@typescript-eslint/visitor-keys@6.17.0': - resolution: {integrity: sha512-H6VwB/k3IuIeQOyYczyyKN8wH6ed8EwliaYHLxOIhyF0dYEIsN8+Bk3GE19qafeMKyZJJHP8+O1HiFhFLUNKSg==} + '@typescript-eslint/visitor-keys@7.2.0': + resolution: {integrity: sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==} engines: {node: ^16.0.0 || >=18.0.0} - '@typescript-eslint/visitor-keys@7.12.0': - resolution: {integrity: sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/visitor-keys@7.14.1': - resolution: {integrity: sha512-Crb+F75U1JAEtBeQGxSKwI60hZmmzaqA3z9sYsVm8X7W5cwLEm5bRe0/uXS6+MR/y8CVpKSR/ontIAIEPFcEkA==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/visitor-keys@8.4.0': + resolution: {integrity: sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@uiw/copy-to-clipboard@1.0.15': resolution: {integrity: sha512-1bbGZ3T+SGmA07BoVPK4UCUDcowDN/moctviJGQexfOc9qL8TMLDQPr7mTPvDKhgJkgnlKkAQNFU8PiarIi9sQ==} @@ -1715,8 +1708,8 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} engines: {node: '>=0.4.0'} hasBin: true @@ -1803,20 +1796,13 @@ packages: resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==} engines: {node: '>=10'} - aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - - array-buffer-byte-length@1.0.0: - resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + aria-query@5.1.3: + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} array-buffer-byte-length@1.0.1: resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} engines: {node: '>= 0.4'} - array-includes@3.1.7: - resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} - engines: {node: '>= 0.4'} - array-includes@3.1.8: resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} engines: {node: '>= 0.4'} @@ -1829,8 +1815,8 @@ packages: resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} engines: {node: '>= 0.4'} - array.prototype.findlastindex@1.2.3: - resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} + array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} engines: {node: '>= 0.4'} array.prototype.flat@1.3.2: @@ -1841,17 +1827,10 @@ packages: resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} engines: {node: '>= 0.4'} - array.prototype.toreversed@1.1.2: - resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} - array.prototype.tosorted@1.1.4: resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} engines: {node: '>= 0.4'} - arraybuffer.prototype.slice@1.0.2: - resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} - engines: {node: '>= 0.4'} - arraybuffer.prototype.slice@1.0.3: resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} engines: {node: '>= 0.4'} @@ -1873,9 +1852,6 @@ packages: async-retry@1.3.3: resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} - asynciterator.prototype@1.0.0: - resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} - asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -1890,23 +1866,20 @@ packages: peerDependencies: postcss: ^8.1.0 - available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} - engines: {node: '>= 0.4'} - available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - axe-core@4.7.0: - resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} + axe-core@4.10.0: + resolution: {integrity: sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==} engines: {node: '>=4'} axios@1.6.2: resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==} - axobject-query@3.2.1: - resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} + axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} babel-loader@9.1.3: resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} @@ -1979,9 +1952,6 @@ packages: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} - call-bind@1.0.5: - resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} - call-bind@1.0.7: resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} engines: {node: '>= 0.4'} @@ -2141,9 +2111,6 @@ packages: config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} - confusing-browser-globals@1.0.11: - resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} - convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} @@ -2217,6 +2184,15 @@ packages: supports-color: optional: true + debug@4.3.6: + resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} engines: {node: '>=0.10.0'} @@ -2228,6 +2204,10 @@ packages: decode-named-character-reference@1.0.2: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + deep-equal@2.2.3: + resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} + engines: {node: '>= 0.4'} + deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -2238,10 +2218,6 @@ packages: defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - define-data-property@1.1.1: - resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} - engines: {node: '>= 0.4'} - define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} @@ -2361,10 +2337,6 @@ packages: error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - es-abstract@1.22.3: - resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} - engines: {node: '>= 0.4'} - es-abstract@1.23.3: resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} engines: {node: '>= 0.4'} @@ -2377,8 +2349,8 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-iterator-helpers@1.0.15: - resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} + es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} es-iterator-helpers@1.0.19: resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} @@ -2391,10 +2363,6 @@ packages: resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} engines: {node: '>= 0.4'} - es-set-tostringtag@2.0.2: - resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} - engines: {node: '>= 0.4'} - es-set-tostringtag@2.0.3: resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} engines: {node: '>= 0.4'} @@ -2422,32 +2390,8 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - eslint-config-airbnb-base@15.0.0: - resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - eslint: ^7.32.0 || ^8.2.0 - eslint-plugin-import: ^2.25.2 - - eslint-config-airbnb-typescript@18.0.0: - resolution: {integrity: sha512-oc+Lxzgzsu8FQyFVa4QFaVKiitTYiiW3frB9KYW5OWdPrqFc7FzxgB20hP4cHMlr+MBzGcLl3jnCOVOydL9mIg==} - peerDependencies: - '@typescript-eslint/eslint-plugin': ^7.0.0 - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 - - eslint-config-airbnb@19.0.4: - resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==} - engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^7.32.0 || ^8.2.0 - eslint-plugin-import: ^2.25.3 - eslint-plugin-jsx-a11y: ^6.5.1 - eslint-plugin-react: ^7.28.0 - eslint-plugin-react-hooks: ^4.3.0 - - eslint-config-next@14.1.0: - resolution: {integrity: sha512-SBX2ed7DoRFXC6CQSLc/SbLY9Ut6HxNB2wPTcoIWjUMd7aF7O/SIE7111L8FdZ9TXsNV4pulUDnfthpyPtbFUg==} + eslint-config-next@14.2.7: + resolution: {integrity: sha512-ppmy+QdQ7qkuCHGDlPjWaoSbJvjGpWSBD4zEW8f1eWlxYXYpZK7QzBOer1EcHKT3uKhlY1JjUus9g7Kvv712rw==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 typescript: '>=3.3.1' @@ -2464,15 +2408,21 @@ packages: eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - eslint-import-resolver-typescript@3.6.1: - resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} + eslint-import-resolver-typescript@3.6.3: + resolution: {integrity: sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true - eslint-module-utils@2.8.0: - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + eslint-module-utils@2.9.0: + resolution: {integrity: sha512-McVbYmwA3NEKwRQY5g4aWMdcZE5xZxV8i8l7CqJSrameuGSQJtSWaL/LxTEzSKKaCcOhlpDR8XEfYXWPrdo/ZQ==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -2492,8 +2442,14 @@ packages: eslint-import-resolver-webpack: optional: true - eslint-plugin-import@2.29.1: - resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + eslint-plugin-import-x@4.2.0: + resolution: {integrity: sha512-kEPB9oeuKSZ8U2LfH6DDoov5V4gTid5JHny9P0JyvKmB4LZNG8kGdqJyCq46QRimbp8FKTlOtsSIO5hdhoZS8A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + + eslint-plugin-import@2.30.0: + resolution: {integrity: sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -2502,11 +2458,11 @@ packages: '@typescript-eslint/parser': optional: true - eslint-plugin-jsx-a11y@6.8.0: - resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} + eslint-plugin-jsx-a11y@6.10.0: + resolution: {integrity: sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==} engines: {node: '>=4.0'} peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 eslint-plugin-playwright@1.6.2: resolution: {integrity: sha512-mraN4Em3b5jLt01q7qWPyLg0Q5v3KAWfJSlEWwldyUXoa7DSPrBR4k6B6LROLqipsG8ndkwWMdjl1Ffdh15tag==} @@ -2538,52 +2494,50 @@ packages: peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - eslint-plugin-react@7.34.2: - resolution: {integrity: sha512-2HCmrU+/JNigDN6tg55cRDKCQWicYAPB38JGSFDQt95jDm8rrvSUo7YPkOIm5l6ts1j1zCvysNcasvfTMQzUOw==} + eslint-plugin-react@7.35.2: + resolution: {integrity: sha512-Rbj2R9zwP2GYNcIak4xoAMV57hrBh3hTaR0k7hVjwCQgryE/pw5px4b13EYjduOI0hfXyZhwBxaGpOTbWSGzKQ==} engines: {node: '>=4'} peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - eslint-plugin-tailwindcss@3.17.3: - resolution: {integrity: sha512-DVMVVUFQ+lPraRSuUk2I41XMnusXT6b3WaQZYlUHduULnERaqe9sNfmpRY1IyxlzmKoQxSbZ8IHRhl9ePo8PeA==} - engines: {node: '>=18.12.0'} - peerDependencies: - tailwindcss: ^3.4.0 - - eslint-plugin-unused-imports@4.0.0: - resolution: {integrity: sha512-mzM+y2B7XYpQryVa1usT+Y/BdNAtAZiXzwpSyDCboFoJN/LZRN67TNvQxKtuTK/Aplya3sLNQforiubzPPaIcQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-plugin-unused-imports@4.1.3: + resolution: {integrity: sha512-lqrNZIZjFMUr7P06eoKtQLwyVRibvG7N+LtfKtObYGizAAGrcqLkc3tDx+iAik2z7q0j/XI3ihjupIqxhFabFA==} peerDependencies: - '@typescript-eslint/eslint-plugin': '8' - eslint: '9' + '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 + eslint: ^9.0.0 || ^8.0.0 peerDependenciesMeta: '@typescript-eslint/eslint-plugin': optional: true - eslint-rule-composer@0.3.0: - resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} - engines: {node: '>=4.0.0'} - eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} - eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-scope@8.0.2: + resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint@8.57.0: - resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-visitor-keys@4.0.0: + resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.9.1: + resolution: {integrity: sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + espree@10.1.0: + resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} @@ -2664,9 +2618,9 @@ packages: fastq@1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} - file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} file-selector@0.6.0: resolution: {integrity: sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==} @@ -2695,12 +2649,12 @@ packages: find-yarn-workspace-root2@1.2.16: resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} - flat-cache@3.1.0: - resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} - engines: {node: '>=12.0.0'} + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} - flatted@3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} follow-redirects@1.15.2: resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} @@ -2794,16 +2748,12 @@ packages: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} - get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} - engines: {node: '>= 0.4'} - get-symbol-description@1.0.2: resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} - get-tsconfig@4.7.2: - resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + get-tsconfig@4.8.0: + resolution: {integrity: sha512-Pgba6TExTZ0FJAn1qkJAjIeKoDJ3CsI2ChuLohJnZl/tTU8MVrq3b+2t5UOPfRa4RMsorClBjJALkJUMjG1PAw==} github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} @@ -2826,26 +2776,25 @@ packages: glob@7.1.6: resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} - - glob@7.1.7: - resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + deprecated: Glob versions prior to v9 are no longer supported glob@8.1.0: resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} engines: {node: '>=12'} + deprecated: Glob versions prior to v9 are no longer supported globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - globals@13.21.0: - resolution: {integrity: sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==} - engines: {node: '>=8'} - globals@13.24.0: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} @@ -2889,9 +2838,6 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - has-property-descriptors@1.0.1: - resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} - has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} @@ -2907,10 +2853,6 @@ packages: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} - engines: {node: '>= 0.4'} - has-tostringtag@1.0.2: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} @@ -3066,10 +3008,6 @@ packages: inline-style-parser@0.2.2: resolution: {integrity: sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==} - internal-slot@1.0.6: - resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} - engines: {node: '>= 0.4'} - internal-slot@1.0.7: resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} @@ -3083,8 +3021,9 @@ packages: is-alphanumerical@2.0.1: resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} - is-array-buffer@3.0.2: - resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} is-array-buffer@3.0.4: resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} @@ -3112,6 +3051,9 @@ packages: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} engines: {node: '>=4'} + is-bun-module@1.1.0: + resolution: {integrity: sha512-4mTAVPlrXpaN3jtF0lsnPCMGnq4+qZjVIKq0HCpfcqf8OC1SM5oATCIAPM5V5FN05qp2NNnFndphmdZS9CV3hA==} + is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -3119,6 +3061,10 @@ packages: is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + is-core-module@2.15.1: + resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} + engines: {node: '>= 0.4'} + is-data-view@1.0.1: resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} engines: {node: '>= 0.4'} @@ -3159,10 +3105,6 @@ packages: is-map@2.0.2: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} - is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} - engines: {node: '>= 0.4'} - is-negative-zero@2.0.3: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} @@ -3197,9 +3139,6 @@ packages: is-set@2.0.2: resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} - is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} - is-shared-array-buffer@1.0.3: resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} engines: {node: '>= 0.4'} @@ -3224,10 +3163,6 @@ packages: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} - is-typed-array@1.1.12: - resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} - engines: {node: '>= 0.4'} - is-typed-array@1.1.13: resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} @@ -3342,8 +3277,8 @@ packages: jws@4.0.0: resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} - keyv@4.5.3: - resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} @@ -3353,8 +3288,8 @@ packages: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} - language-subtag-registry@0.3.22: - resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} + language-subtag-registry@0.3.23: + resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} language-tags@1.0.9: resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} @@ -3805,6 +3740,10 @@ packages: object-inspect@1.13.1: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} + object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} @@ -3813,31 +3752,16 @@ packages: resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} - object.entries@1.1.7: - resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} - engines: {node: '>= 0.4'} - object.entries@1.1.8: resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} engines: {node: '>= 0.4'} - object.fromentries@2.0.7: - resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} - engines: {node: '>= 0.4'} - object.fromentries@2.0.8: resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} engines: {node: '>= 0.4'} - object.groupby@1.0.1: - resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} - - object.hasown@1.1.4: - resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} - engines: {node: '>= 0.4'} - - object.values@1.1.7: - resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} engines: {node: '>= 0.4'} object.values@1.2.0: @@ -4308,10 +4232,6 @@ packages: regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - regexp.prototype.flags@1.5.1: - resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} - engines: {node: '>= 0.4'} - regexp.prototype.flags@1.5.2: resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} engines: {node: '>= 0.4'} @@ -4427,10 +4347,6 @@ packages: rfdc@1.3.0: resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true - rollup@2.78.0: resolution: {integrity: sha512-4+YfbQC9QEVvKTanHhIAFVUFSRsezvQF8vFOJwtGfb9Bb+r014S+qryr9PSmw8x6sMnPkmFBGAvIFVQxvJxjtg==} engines: {node: '>=10.0.0'} @@ -4439,10 +4355,6 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - safe-array-concat@1.0.1: - resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} - engines: {node: '>=0.4'} - safe-array-concat@1.1.2: resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} engines: {node: '>=0.4'} @@ -4450,9 +4362,6 @@ packages: safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - safe-regex-test@1.0.0: - resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} - safe-regex-test@1.0.3: resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} engines: {node: '>= 0.4'} @@ -4492,24 +4401,21 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + serialize-javascript@6.0.1: resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - set-function-length@1.1.1: - resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} - engines: {node: '>= 0.4'} - set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} - set-function-name@2.0.1: - resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} - engines: {node: '>= 0.4'} - set-function-name@2.0.2: resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} engines: {node: '>= 0.4'} @@ -4530,9 +4436,6 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} - side-channel@1.0.6: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} engines: {node: '>= 0.4'} @@ -4599,10 +4502,17 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + stable-hash@0.0.4: + resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} + stacktrace-parser@0.1.10: resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} engines: {node: '>=6'} + stop-iteration-iterator@1.0.0: + resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} + engines: {node: '>= 0.4'} + stream-events@1.0.5: resolution: {integrity: sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==} @@ -4628,27 +4538,23 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} + string.prototype.includes@2.0.0: + resolution: {integrity: sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==} + string.prototype.matchall@4.0.11: resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} engines: {node: '>= 0.4'} - string.prototype.trim@1.2.8: - resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} - engines: {node: '>= 0.4'} + string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} string.prototype.trim@1.2.9: resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} engines: {node: '>= 0.4'} - string.prototype.trimend@1.0.7: - resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} - string.prototype.trimend@1.0.8: resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} - string.prototype.trimstart@1.0.7: - resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} - string.prototype.trimstart@1.0.8: resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} engines: {node: '>= 0.4'} @@ -4815,12 +4721,6 @@ packages: trough@2.1.0: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} - ts-api-utils@1.0.3: - resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} - engines: {node: '>=16.13.0'} - peerDependencies: - typescript: '>=4.2.0' - ts-api-utils@1.3.0: resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} engines: {node: '>=16'} @@ -4850,6 +4750,9 @@ packages: tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + tslib@2.7.0: + resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} + tty-table@4.2.1: resolution: {integrity: sha512-xz0uKo+KakCQ+Dxj1D/tKn2FSyreSYWzdkL/BYhgN6oMW808g8QRMuh1atAV9fjTPbWBjfbkKQpI/5rEcnAc7g==} engines: {node: '>=8.0.0'} @@ -4883,37 +4786,31 @@ packages: resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} engines: {node: '>=10'} - typed-array-buffer@1.0.0: - resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} - engines: {node: '>= 0.4'} - typed-array-buffer@1.0.2: resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} engines: {node: '>= 0.4'} - typed-array-byte-length@1.0.0: - resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} - engines: {node: '>= 0.4'} - typed-array-byte-length@1.0.1: resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} engines: {node: '>= 0.4'} - typed-array-byte-offset@1.0.0: - resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} - engines: {node: '>= 0.4'} - typed-array-byte-offset@1.0.2: resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} engines: {node: '>= 0.4'} - typed-array-length@1.0.4: - resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} - typed-array-length@1.0.6: resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} engines: {node: '>= 0.4'} + typescript-eslint@8.4.0: + resolution: {integrity: sha512-67qoc3zQZe3CAkO0ua17+7aCLI0dU+sSQd1eKPGq06QE4rfQjstVXR6woHO5qQvGUa550NfGckT4tzh3b3c8Pw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + typescript@5.3.3: resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} engines: {node: '>=14.17'} @@ -5100,10 +4997,6 @@ packages: resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} engines: {node: '>=8.15'} - which-typed-array@1.1.13: - resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} - engines: {node: '>= 0.4'} - which-typed-array@1.1.15: resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} engines: {node: '>= 0.4'} @@ -5486,22 +5379,30 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.9 - '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': + '@eslint-community/eslint-utils@4.4.0(eslint@9.9.1(jiti@1.19.3))': dependencies: - eslint: 8.57.0 + eslint: 9.9.1(jiti@1.19.3) eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.10.1': {} + '@eslint-community/regexpp@4.11.0': {} - '@eslint-community/regexpp@4.8.0': {} + '@eslint/compat@1.1.1': {} - '@eslint/eslintrc@2.1.4': + '@eslint/config-array@0.18.0': dependencies: - ajv: 6.12.6 + '@eslint/object-schema': 2.1.4 debug: 4.3.4 - espree: 9.6.1 - globals: 13.21.0 - ignore: 5.2.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/eslintrc@3.1.0': + dependencies: + ajv: 6.12.6 + debug: 4.3.6 + espree: 10.1.0 + globals: 14.0.0 + ignore: 5.3.1 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -5509,7 +5410,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@8.57.0': {} + '@eslint/js@9.9.1': {} + + '@eslint/object-schema@2.1.4': {} '@floating-ui/core@1.4.1': dependencies: @@ -5564,17 +5467,9 @@ snapshots: dependencies: react-hook-form: 7.45.4(react@18.2.0) - '@humanwhocodes/config-array@0.11.14': - dependencies: - '@humanwhocodes/object-schema': 2.0.2 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/object-schema@2.0.2': {} + '@humanwhocodes/retry@0.3.0': {} '@isaacs/cliui@8.0.2': dependencies: @@ -5635,7 +5530,7 @@ snapshots: '@next/env@14.2.4': {} - '@next/eslint-plugin-next@14.1.0': + '@next/eslint-plugin-next@14.2.7': dependencies: glob: 10.3.10 @@ -5678,6 +5573,8 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 + '@nolyfill/is-core-module@1.0.39': {} + '@one-ini/wasm@0.1.1': {} '@panva/hkdf@1.1.1': {} @@ -6290,7 +6187,9 @@ snapshots: optionalDependencies: rollup: 2.78.0 - '@rushstack/eslint-patch@1.6.1': {} + '@rtsao/scc@1.1.0': {} + + '@rushstack/eslint-patch@1.10.4': {} '@selderee/plugin-htmlparser2@0.11.0': dependencies: @@ -6557,15 +6456,15 @@ snapshots: transitivePeerDependencies: - '@types/json-schema' - '@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3)': + '@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3)': dependencies: - '@eslint-community/regexpp': 4.10.1 - '@typescript-eslint/parser': 7.12.0(eslint@8.57.0)(typescript@5.3.3) - '@typescript-eslint/scope-manager': 7.14.1 - '@typescript-eslint/type-utils': 7.14.1(eslint@8.57.0)(typescript@5.3.3) - '@typescript-eslint/utils': 7.14.1(eslint@8.57.0)(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 7.14.1 - eslint: 8.57.0 + '@eslint-community/regexpp': 4.11.0 + '@typescript-eslint/parser': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) + '@typescript-eslint/scope-manager': 8.4.0 + '@typescript-eslint/type-utils': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) + '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 8.4.0 + eslint: 9.9.1(jiti@1.19.3) graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 @@ -6575,101 +6474,79 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3)': + '@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3)': dependencies: - '@typescript-eslint/scope-manager': 6.17.0 - '@typescript-eslint/types': 6.17.0 - '@typescript-eslint/typescript-estree': 6.17.0(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.17.0 - debug: 4.3.4 - eslint: 8.57.0 + '@typescript-eslint/scope-manager': 7.2.0 + '@typescript-eslint/types': 7.2.0 + '@typescript-eslint/typescript-estree': 7.2.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 7.2.0 + debug: 4.3.6 + eslint: 9.9.1(jiti@1.19.3) optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3)': + '@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3)': dependencies: - '@typescript-eslint/scope-manager': 7.12.0 - '@typescript-eslint/types': 7.12.0 - '@typescript-eslint/typescript-estree': 7.12.0(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 7.12.0 + '@typescript-eslint/scope-manager': 8.4.0 + '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 8.4.0 debug: 4.3.4 - eslint: 8.57.0 + eslint: 9.9.1(jiti@1.19.3) optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@6.17.0': - dependencies: - '@typescript-eslint/types': 6.17.0 - '@typescript-eslint/visitor-keys': 6.17.0 - - '@typescript-eslint/scope-manager@7.12.0': + '@typescript-eslint/scope-manager@7.2.0': dependencies: - '@typescript-eslint/types': 7.12.0 - '@typescript-eslint/visitor-keys': 7.12.0 + '@typescript-eslint/types': 7.2.0 + '@typescript-eslint/visitor-keys': 7.2.0 - '@typescript-eslint/scope-manager@7.14.1': + '@typescript-eslint/scope-manager@8.4.0': dependencies: - '@typescript-eslint/types': 7.14.1 - '@typescript-eslint/visitor-keys': 7.14.1 + '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/visitor-keys': 8.4.0 - '@typescript-eslint/type-utils@7.14.1(eslint@8.57.0)(typescript@5.3.3)': + '@typescript-eslint/type-utils@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3)': dependencies: - '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.3.3) - '@typescript-eslint/utils': 7.14.1(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.3.3) + '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) debug: 4.3.4 - eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.3.3) optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: + - eslint - supports-color - '@typescript-eslint/types@6.17.0': {} - - '@typescript-eslint/types@7.12.0': {} + '@typescript-eslint/types@7.2.0': {} - '@typescript-eslint/types@7.14.1': {} + '@typescript-eslint/types@8.4.0': {} - '@typescript-eslint/typescript-estree@6.17.0(typescript@5.3.3)': + '@typescript-eslint/typescript-estree@7.2.0(typescript@5.3.3)': dependencies: - '@typescript-eslint/types': 6.17.0 - '@typescript-eslint/visitor-keys': 6.17.0 - debug: 4.3.4 + '@typescript-eslint/types': 7.2.0 + '@typescript-eslint/visitor-keys': 7.2.0 + debug: 4.3.6 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 - semver: 7.6.2 - ts-api-utils: 1.0.3(typescript@5.3.3) - optionalDependencies: - typescript: 5.3.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/typescript-estree@7.12.0(typescript@5.3.3)': - dependencies: - '@typescript-eslint/types': 7.12.0 - '@typescript-eslint/visitor-keys': 7.12.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.4 - semver: 7.6.2 + semver: 7.6.3 ts-api-utils: 1.3.0(typescript@5.3.3) optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@7.14.1(typescript@5.3.3)': + '@typescript-eslint/typescript-estree@8.4.0(typescript@5.3.3)': dependencies: - '@typescript-eslint/types': 7.14.1 - '@typescript-eslint/visitor-keys': 7.14.1 + '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/visitor-keys': 8.4.0 debug: 4.3.4 - globby: 11.1.0 + fast-glob: 3.3.2 is-glob: 4.0.3 minimatch: 9.0.4 semver: 7.6.2 @@ -6679,30 +6556,25 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.14.1(eslint@8.57.0)(typescript@5.3.3)': + '@typescript-eslint/utils@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@typescript-eslint/scope-manager': 7.14.1 - '@typescript-eslint/types': 7.14.1 - '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.3.3) - eslint: 8.57.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.19.3)) + '@typescript-eslint/scope-manager': 8.4.0 + '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.3.3) + eslint: 9.9.1(jiti@1.19.3) transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@6.17.0': - dependencies: - '@typescript-eslint/types': 6.17.0 - eslint-visitor-keys: 3.4.3 - - '@typescript-eslint/visitor-keys@7.12.0': + '@typescript-eslint/visitor-keys@7.2.0': dependencies: - '@typescript-eslint/types': 7.12.0 + '@typescript-eslint/types': 7.2.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@7.14.1': + '@typescript-eslint/visitor-keys@8.4.0': dependencies: - '@typescript-eslint/types': 7.14.1 + '@typescript-eslint/types': 8.4.0 eslint-visitor-keys: 3.4.3 '@uiw/copy-to-clipboard@1.0.15': {} @@ -6827,19 +6699,19 @@ snapshots: dependencies: event-target-shim: 5.0.1 - acorn-import-assertions@1.9.0(acorn@8.11.3): + acorn-import-assertions@1.9.0(acorn@8.12.1): dependencies: - acorn: 8.11.3 + acorn: 8.12.1 - acorn-jsx@5.3.2(acorn@8.11.3): + acorn-jsx@5.3.2(acorn@8.12.1): dependencies: - acorn: 8.11.3 + acorn: 8.12.1 acorn-walk@8.3.0: {} acorn@8.10.0: {} - acorn@8.11.3: {} + acorn@8.12.1: {} agent-base@6.0.2: dependencies: @@ -6921,28 +6793,15 @@ snapshots: dependencies: tslib: 2.6.2 - aria-query@5.3.0: - dependencies: - dequal: 2.0.3 - - array-buffer-byte-length@1.0.0: + aria-query@5.1.3: dependencies: - call-bind: 1.0.5 - is-array-buffer: 3.0.2 + deep-equal: 2.2.3 array-buffer-byte-length@1.0.1: dependencies: call-bind: 1.0.7 is-array-buffer: 3.0.4 - array-includes@3.1.7: - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 - is-string: 1.0.7 - array-includes@3.1.8: dependencies: call-bind: 1.0.7 @@ -6963,33 +6822,27 @@ snapshots: es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 - array.prototype.findlastindex@1.2.3: + array.prototype.findlastindex@1.2.5: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 - get-intrinsic: 1.2.2 array.prototype.flat@1.3.2: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 array.prototype.flatmap@1.3.2: dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - es-shim-unscopables: 1.0.2 - - array.prototype.toreversed@1.1.2: - dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 array.prototype.tosorted@1.1.4: @@ -7000,16 +6853,6 @@ snapshots: es-errors: 1.3.0 es-shim-unscopables: 1.0.2 - arraybuffer.prototype.slice@1.0.2: - dependencies: - array-buffer-byte-length: 1.0.0 - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 - is-array-buffer: 3.0.2 - is-shared-array-buffer: 1.0.2 - arraybuffer.prototype.slice@1.0.3: dependencies: array-buffer-byte-length: 1.0.1 @@ -7033,10 +6876,6 @@ snapshots: dependencies: retry: 0.13.1 - asynciterator.prototype@1.0.0: - dependencies: - has-symbols: 1.0.3 - asynckit@0.4.0: {} attr-accept@2.2.2: {} @@ -7051,13 +6890,11 @@ snapshots: postcss: 8.4.28 postcss-value-parser: 4.2.0 - available-typed-arrays@1.0.5: {} - available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.0.0 - axe-core@4.7.0: {} + axe-core@4.10.0: {} axios@1.6.2: dependencies: @@ -7067,9 +6904,7 @@ snapshots: transitivePeerDependencies: - debug - axobject-query@3.2.1: - dependencies: - dequal: 2.0.3 + axobject-query@4.1.0: {} babel-loader@9.1.3(@babel/core@7.22.17)(webpack@5.89.0): dependencies: @@ -7139,12 +6974,6 @@ snapshots: dependencies: streamsearch: 1.1.0 - call-bind@1.0.5: - dependencies: - function-bind: 1.1.2 - get-intrinsic: 1.2.2 - set-function-length: 1.1.1 - call-bind@1.0.7: dependencies: es-define-property: 1.0.0 @@ -7291,8 +7120,6 @@ snapshots: ini: 1.3.8 proto-list: 1.2.4 - confusing-browser-globals@1.0.11: {} - convert-source-map@1.9.0: {} cookie@0.5.0: {} @@ -7358,6 +7185,10 @@ snapshots: dependencies: ms: 2.1.2 + debug@4.3.6: + dependencies: + ms: 2.1.2 + decamelize-keys@1.1.1: dependencies: decamelize: 1.2.0 @@ -7369,19 +7200,34 @@ snapshots: dependencies: character-entities: 2.0.2 - deep-is@0.1.4: {} - - deepmerge@4.3.1: {} - - defaults@1.0.4: + deep-equal@2.2.3: dependencies: - clone: 1.0.4 - - define-data-property@1.1.1: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + es-get-iterator: 1.1.3 + get-intrinsic: 1.2.4 + is-arguments: 1.1.1 + is-array-buffer: 3.0.4 + is-date-object: 1.0.5 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + isarray: 2.0.5 + object-is: 1.1.6 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + side-channel: 1.0.6 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + which-typed-array: 1.1.15 + + deep-is@0.1.4: {} + + deepmerge@4.3.1: {} + + defaults@1.0.4: dependencies: - get-intrinsic: 1.2.2 - gopd: 1.0.1 - has-property-descriptors: 1.0.1 + clone: 1.0.4 define-data-property@1.1.4: dependencies: @@ -7391,8 +7237,8 @@ snapshots: define-properties@1.2.1: dependencies: - define-data-property: 1.1.1 - has-property-descriptors: 1.0.1 + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 object-keys: 1.1.1 delayed-stream@1.0.0: {} @@ -7502,48 +7348,6 @@ snapshots: dependencies: is-arrayish: 0.2.1 - es-abstract@1.22.3: - dependencies: - array-buffer-byte-length: 1.0.0 - arraybuffer.prototype.slice: 1.0.2 - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 - es-set-tostringtag: 2.0.2 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.2 - get-symbol-description: 1.0.0 - globalthis: 1.0.3 - gopd: 1.0.1 - has-property-descriptors: 1.0.1 - has-proto: 1.0.1 - has-symbols: 1.0.3 - hasown: 2.0.0 - internal-slot: 1.0.6 - is-array-buffer: 3.0.2 - is-callable: 1.2.7 - is-negative-zero: 2.0.2 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - is-string: 1.0.7 - is-typed-array: 1.1.12 - is-weakref: 1.0.2 - object-inspect: 1.13.1 - object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.1 - safe-array-concat: 1.0.1 - safe-regex-test: 1.0.0 - string.prototype.trim: 1.2.8 - string.prototype.trimend: 1.0.7 - string.prototype.trimstart: 1.0.7 - typed-array-buffer: 1.0.0 - typed-array-byte-length: 1.0.0 - typed-array-byte-offset: 1.0.0 - typed-array-length: 1.0.4 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.13 - es-abstract@1.23.3: dependencies: array-buffer-byte-length: 1.0.1 @@ -7599,22 +7403,17 @@ snapshots: es-errors@1.3.0: {} - es-iterator-helpers@1.0.15: + es-get-iterator@1.1.3: dependencies: - asynciterator.prototype: 1.0.0 - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - es-set-tostringtag: 2.0.2 - function-bind: 1.1.2 - get-intrinsic: 1.2.2 - globalthis: 1.0.3 - has-property-descriptors: 1.0.1 - has-proto: 1.0.1 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 - internal-slot: 1.0.6 - iterator.prototype: 1.1.2 - safe-array-concat: 1.0.1 + is-arguments: 1.1.1 + is-map: 2.0.2 + is-set: 2.0.2 + is-string: 1.0.7 + isarray: 2.0.5 + stop-iteration-iterator: 1.0.0 es-iterator-helpers@1.0.19: dependencies: @@ -7639,12 +7438,6 @@ snapshots: dependencies: es-errors: 1.3.0 - es-set-tostringtag@2.0.2: - dependencies: - get-intrinsic: 1.2.2 - has-tostringtag: 1.0.0 - hasown: 2.0.0 - es-set-tostringtag@2.0.3: dependencies: get-intrinsic: 1.2.4 @@ -7653,7 +7446,7 @@ snapshots: es-shim-unscopables@1.0.2: dependencies: - hasown: 2.0.0 + hasown: 2.0.2 es-to-primitive@1.2.1: dependencies: @@ -7669,277 +7462,252 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint@8.57.0): - dependencies: - confusing-browser-globals: 1.0.11 - eslint: 8.57.0 - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0) - object.assign: 4.1.5 - object.entries: 1.1.7 - semver: 6.3.1 - - eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3))(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint@8.57.0): + eslint-config-next@14.2.7(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3): dependencies: - '@typescript-eslint/eslint-plugin': 7.14.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3) - '@typescript-eslint/parser': 7.12.0(eslint@8.57.0)(typescript@5.3.3) - eslint: 8.57.0 - eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint@8.57.0) - transitivePeerDependencies: - - eslint-plugin-import - - eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.0))(eslint-plugin-react@7.34.2(eslint@8.57.0))(eslint@8.57.0): - dependencies: - eslint: 8.57.0 - eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0) - eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) - eslint-plugin-react: 7.34.2(eslint@8.57.0) - eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) - object.assign: 4.1.5 - object.entries: 1.1.7 - - eslint-config-next@14.1.0(eslint@8.57.0)(typescript@5.3.3): - dependencies: - '@next/eslint-plugin-next': 14.1.0 - '@rushstack/eslint-patch': 1.6.1 - '@typescript-eslint/parser': 6.17.0(eslint@8.57.0)(typescript@5.3.3) - eslint: 8.57.0 + '@next/eslint-plugin-next': 14.2.7 + '@rushstack/eslint-patch': 1.10.4 + '@typescript-eslint/parser': 7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) + eslint: 9.9.1(jiti@1.19.3) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) - eslint-plugin-react: 7.34.2(eslint@8.57.0) - eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)) + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1(jiti@1.19.3)) + eslint-plugin-jsx-a11y: 6.10.0(eslint@9.9.1(jiti@1.19.3)) + eslint-plugin-react: 7.35.2(eslint@9.9.1(jiti@1.19.3)) + eslint-plugin-react-hooks: 4.6.2(eslint@9.9.1(jiti@1.19.3)) optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - eslint-import-resolver-webpack + - eslint-plugin-import-x - supports-color - eslint-config-prettier@9.0.0(eslint@8.57.0): + eslint-config-prettier@9.0.0(eslint@9.9.1(jiti@1.19.3)): dependencies: - eslint: 8.57.0 + eslint: 9.9.1(jiti@1.19.3) eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7 - is-core-module: 2.13.1 + is-core-module: 2.15.1 resolve: 1.22.8 transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0): + eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)): dependencies: - debug: 4.3.4 + '@nolyfill/is-core-module': 1.0.39 + debug: 4.3.6 enhanced-resolve: 5.15.0 - eslint: 8.57.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint: 9.9.1(jiti@1.19.3) + eslint-module-utils: 2.9.0(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)))(eslint@9.9.1(jiti@1.19.3)) fast-glob: 3.3.2 - get-tsconfig: 4.7.2 - is-core-module: 2.13.1 + get-tsconfig: 4.8.0 + is-bun-module: 1.1.0 is-glob: 4.0.3 + optionalDependencies: + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1(jiti@1.19.3)) + eslint-plugin-import-x: 4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-node - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.8.0(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0): + eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)): dependencies: - debug: 3.2.7 + '@nolyfill/is-core-module': 1.0.39 + debug: 4.3.6 + enhanced-resolve: 5.15.0 + eslint: 9.9.1(jiti@1.19.3) + eslint-module-utils: 2.9.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)))(eslint@9.9.1(jiti@1.19.3)) + fast-glob: 3.3.2 + get-tsconfig: 4.8.0 + is-bun-module: 1.1.0 + is-glob: 4.0.3 optionalDependencies: - '@typescript-eslint/parser': 6.17.0(eslint@8.57.0)(typescript@5.3.3) - eslint: 8.57.0 - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1(jiti@1.19.3)) + eslint-plugin-import-x: 4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.8.0(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): + eslint-module-utils@2.9.0(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)))(eslint@9.9.1(jiti@1.19.3)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 7.12.0(eslint@8.57.0)(typescript@5.3.3) - eslint: 8.57.0 + '@typescript-eslint/parser': 7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) + eslint: 9.9.1(jiti@1.19.3) eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + eslint-module-utils@2.9.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)))(eslint@9.9.1(jiti@1.19.3)): dependencies: - array-includes: 3.1.7 - array.prototype.findlastindex: 1.2.3 - array.prototype.flat: 1.3.2 - array.prototype.flatmap: 1.3.2 debug: 3.2.7 - doctrine: 2.1.0 - eslint: 8.57.0 + optionalDependencies: + '@typescript-eslint/parser': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) + eslint: 9.9.1(jiti@1.19.3) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)) + transitivePeerDependencies: + - supports-color + + eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3): + dependencies: + '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) + debug: 4.3.4 + doctrine: 3.0.0 + eslint: 9.9.1(jiti@1.19.3) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.17.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) - hasown: 2.0.0 - is-core-module: 2.13.1 + get-tsconfig: 4.8.0 is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.7 - object.groupby: 1.0.1 - object.values: 1.1.7 - semver: 6.3.1 - tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 6.17.0(eslint@8.57.0)(typescript@5.3.3) + minimatch: 9.0.4 + semver: 7.6.3 + stable-hash: 0.0.4 + tslib: 2.7.0 transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - supports-color + - typescript - eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0): + eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1(jiti@1.19.3)): dependencies: - array-includes: 3.1.7 - array.prototype.findlastindex: 1.2.3 + '@rtsao/scc': 1.1.0 + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.57.0 + eslint: 9.9.1(jiti@1.19.3) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) - hasown: 2.0.0 - is-core-module: 2.13.1 + eslint-module-utils: 2.9.0(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)))(eslint@9.9.1(jiti@1.19.3)) + hasown: 2.0.2 + is-core-module: 2.15.1 is-glob: 4.0.3 minimatch: 3.1.2 - object.fromentries: 2.0.7 - object.groupby: 1.0.1 - object.values: 1.1.7 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 semver: 6.3.1 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 7.12.0(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/parser': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0): + eslint-plugin-jsx-a11y@6.10.0(eslint@9.9.1(jiti@1.19.3)): dependencies: - '@babel/runtime': 7.23.7 - aria-query: 5.3.0 - array-includes: 3.1.7 + aria-query: 5.1.3 + array-includes: 3.1.8 array.prototype.flatmap: 1.3.2 ast-types-flow: 0.0.8 - axe-core: 4.7.0 - axobject-query: 3.2.1 + axe-core: 4.10.0 + axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - es-iterator-helpers: 1.0.15 - eslint: 8.57.0 - hasown: 2.0.0 + es-iterator-helpers: 1.0.19 + eslint: 9.9.1(jiti@1.19.3) + hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 + object.fromentries: 2.0.8 + safe-regex-test: 1.0.3 + string.prototype.includes: 2.0.0 - eslint-plugin-playwright@1.6.2(eslint@8.57.0): + eslint-plugin-playwright@1.6.2(eslint@9.9.1(jiti@1.19.3)): dependencies: - eslint: 8.57.0 + eslint: 9.9.1(jiti@1.19.3) globals: 13.24.0 - eslint-plugin-prettier@5.1.3(@types/eslint@8.56.0)(eslint-config-prettier@9.0.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.2.5): + eslint-plugin-prettier@5.1.3(@types/eslint@8.56.0)(eslint-config-prettier@9.0.0(eslint@9.9.1(jiti@1.19.3)))(eslint@9.9.1(jiti@1.19.3))(prettier@3.2.5): dependencies: - eslint: 8.57.0 + eslint: 9.9.1(jiti@1.19.3) prettier: 3.2.5 prettier-linter-helpers: 1.0.0 synckit: 0.8.8 optionalDependencies: '@types/eslint': 8.56.0 - eslint-config-prettier: 9.0.0(eslint@8.57.0) + eslint-config-prettier: 9.0.0(eslint@9.9.1(jiti@1.19.3)) - eslint-plugin-react-hooks@4.6.2(eslint@8.57.0): + eslint-plugin-react-hooks@4.6.2(eslint@9.9.1(jiti@1.19.3)): dependencies: - eslint: 8.57.0 + eslint: 9.9.1(jiti@1.19.3) - eslint-plugin-react@7.34.2(eslint@8.57.0): + eslint-plugin-react@7.35.2(eslint@9.9.1(jiti@1.19.3)): dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 array.prototype.flatmap: 1.3.2 - array.prototype.toreversed: 1.1.2 array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.0.19 - eslint: 8.57.0 + eslint: 9.9.1(jiti@1.19.3) estraverse: 5.3.0 + hasown: 2.0.2 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 object.entries: 1.1.8 object.fromentries: 2.0.8 - object.hasown: 1.1.4 object.values: 1.2.0 prop-types: 15.8.1 resolve: 2.0.0-next.5 semver: 6.3.1 string.prototype.matchall: 4.0.11 + string.prototype.repeat: 1.0.0 - eslint-plugin-tailwindcss@3.17.3(tailwindcss@3.4.1(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3))): - dependencies: - fast-glob: 3.3.2 - postcss: 8.4.31 - tailwindcss: 3.4.1(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3)) - - eslint-plugin-unused-imports@4.0.0(@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0): + eslint-plugin-unused-imports@4.1.3(@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint@9.9.1(jiti@1.19.3)): dependencies: - eslint: 8.57.0 - eslint-rule-composer: 0.3.0 + eslint: 9.9.1(jiti@1.19.3) optionalDependencies: - '@typescript-eslint/eslint-plugin': 7.14.1(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3) - - eslint-rule-composer@0.3.0: {} + '@typescript-eslint/eslint-plugin': 8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) eslint-scope@5.1.1: dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 - eslint-scope@7.2.2: + eslint-scope@8.0.2: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 eslint-visitor-keys@3.4.3: {} - eslint@8.57.0: + eslint-visitor-keys@4.0.0: {} + + eslint@9.9.1(jiti@1.19.3): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@eslint-community/regexpp': 4.8.0 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.0 - '@humanwhocodes/config-array': 0.11.14 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.19.3)) + '@eslint-community/regexpp': 4.11.0 + '@eslint/config-array': 0.18.0 + '@eslint/eslintrc': 3.1.0 + '@eslint/js': 9.9.1 '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.3.0 '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 debug: 4.3.4 - doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 + eslint-scope: 8.0.2 + eslint-visitor-keys: 4.0.0 + espree: 10.1.0 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 + file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.21.0 - graphemer: 1.4.0 - ignore: 5.2.4 + ignore: 5.3.1 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 @@ -7948,14 +7716,16 @@ snapshots: optionator: 0.9.3 strip-ansi: 6.0.1 text-table: 0.2.0 + optionalDependencies: + jiti: 1.19.3 transitivePeerDependencies: - supports-color - espree@9.6.1: + espree@10.1.0: dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) - eslint-visitor-keys: 3.4.3 + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) + eslint-visitor-keys: 4.0.0 esprima@4.0.1: {} @@ -8029,9 +7799,9 @@ snapshots: dependencies: reusify: 1.0.4 - file-entry-cache@6.0.1: + file-entry-cache@8.0.0: dependencies: - flat-cache: 3.1.0 + flat-cache: 4.0.1 file-selector@0.6.0: dependencies: @@ -8066,13 +7836,12 @@ snapshots: micromatch: 4.0.5 pkg-dir: 4.2.0 - flat-cache@3.1.0: + flat-cache@4.0.1: dependencies: - flatted: 3.2.7 - keyv: 4.5.3 - rimraf: 3.0.2 + flatted: 3.3.1 + keyv: 4.5.4 - flatted@3.2.7: {} + flatted@3.3.1: {} follow-redirects@1.15.2: {} @@ -8129,9 +7898,9 @@ snapshots: function.prototype.name@1.1.6: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 functions-have-names: 1.2.3 functions-have-names@1.2.3: {} @@ -8177,18 +7946,13 @@ snapshots: get-stream@8.0.1: {} - get-symbol-description@1.0.0: - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - get-symbol-description@1.0.2: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 - get-tsconfig@4.7.2: + get-tsconfig@4.8.0: dependencies: resolve-pkg-maps: 1.0.0 @@ -8221,15 +7985,6 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - glob@7.1.7: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - glob@8.1.0: dependencies: fs.realpath: 1.0.0 @@ -8240,14 +7995,12 @@ snapshots: globals@11.12.0: {} - globals@13.21.0: - dependencies: - type-fest: 0.20.2 - globals@13.24.0: dependencies: type-fest: 0.20.2 + globals@14.0.0: {} + globalthis@1.0.3: dependencies: define-properties: 1.2.1 @@ -8299,10 +8052,6 @@ snapshots: has-flag@4.0.0: {} - has-property-descriptors@1.0.1: - dependencies: - get-intrinsic: 1.2.2 - has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.0 @@ -8313,10 +8062,6 @@ snapshots: has-symbols@1.0.3: {} - has-tostringtag@1.0.0: - dependencies: - has-symbols: 1.0.3 - has-tostringtag@1.0.2: dependencies: has-symbols: 1.0.3 @@ -8578,17 +8323,11 @@ snapshots: inline-style-parser@0.2.2: {} - internal-slot@1.0.6: - dependencies: - get-intrinsic: 1.2.2 - hasown: 2.0.0 - side-channel: 1.0.4 - internal-slot@1.0.7: dependencies: es-errors: 1.3.0 - hasown: 2.0.0 - side-channel: 1.0.4 + hasown: 2.0.2 + side-channel: 1.0.6 invariant@2.2.4: dependencies: @@ -8601,11 +8340,10 @@ snapshots: is-alphabetical: 2.0.1 is-decimal: 2.0.1 - is-array-buffer@3.0.2: + is-arguments@1.1.1: dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-typed-array: 1.1.12 + call-bind: 1.0.7 + has-tostringtag: 1.0.2 is-array-buffer@3.0.4: dependencies: @@ -8616,7 +8354,7 @@ snapshots: is-async-function@2.0.0: dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 is-bigint@1.0.4: dependencies: @@ -8628,24 +8366,32 @@ snapshots: is-boolean-object@1.1.2: dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 + call-bind: 1.0.7 + has-tostringtag: 1.0.2 is-buffer@2.0.5: {} + is-bun-module@1.1.0: + dependencies: + semver: 7.6.3 + is-callable@1.2.7: {} is-core-module@2.13.1: dependencies: hasown: 2.0.0 + is-core-module@2.15.1: + dependencies: + hasown: 2.0.2 + is-data-view@1.0.1: dependencies: is-typed-array: 1.1.13 is-date-object@1.0.5: dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 is-decimal@2.0.1: {} @@ -8653,7 +8399,7 @@ snapshots: is-finalizationregistry@1.0.2: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 is-fullwidth-code-point@3.0.0: {} @@ -8661,7 +8407,7 @@ snapshots: is-generator-function@1.0.10: dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 is-glob@4.0.3: dependencies: @@ -8671,13 +8417,11 @@ snapshots: is-map@2.0.2: {} - is-negative-zero@2.0.2: {} - is-negative-zero@2.0.3: {} is-number-object@1.0.7: dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 is-number@7.0.0: {} @@ -8693,15 +8437,11 @@ snapshots: is-regex@1.1.4: dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 + call-bind: 1.0.7 + has-tostringtag: 1.0.2 is-set@2.0.2: {} - is-shared-array-buffer@1.0.2: - dependencies: - call-bind: 1.0.5 - is-shared-array-buffer@1.0.3: dependencies: call-bind: 1.0.7 @@ -8712,7 +8452,7 @@ snapshots: is-string@1.0.7: dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 is-subdir@1.2.0: dependencies: @@ -8722,10 +8462,6 @@ snapshots: dependencies: has-symbols: 1.0.3 - is-typed-array@1.1.12: - dependencies: - which-typed-array: 1.1.13 - is-typed-array@1.1.13: dependencies: which-typed-array: 1.1.15 @@ -8734,12 +8470,12 @@ snapshots: is-weakref@1.0.2: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 is-weakset@2.0.2: dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 is-windows@1.0.2: {} @@ -8750,10 +8486,10 @@ snapshots: iterator.prototype@1.1.2: dependencies: define-properties: 1.2.1 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 reflect.getprototypeof: 1.0.4 - set-function-name: 2.0.1 + set-function-name: 2.0.2 jackspeak@2.3.6: dependencies: @@ -8822,10 +8558,10 @@ snapshots: jsx-ast-utils@3.3.5: dependencies: - array-includes: 3.1.7 + array-includes: 3.1.8 array.prototype.flat: 1.3.2 object.assign: 4.1.5 - object.values: 1.1.7 + object.values: 1.2.0 jwa@2.0.0: dependencies: @@ -8838,7 +8574,7 @@ snapshots: jwa: 2.0.0 safe-buffer: 5.2.1 - keyv@4.5.3: + keyv@4.5.4: dependencies: json-buffer: 3.0.1 @@ -8846,11 +8582,11 @@ snapshots: kleur@4.1.5: {} - language-subtag-registry@0.3.22: {} + language-subtag-registry@0.3.23: {} language-tags@1.0.9: dependencies: - language-subtag-registry: 0.3.22 + language-subtag-registry: 0.3.23 leac@0.6.0: {} @@ -9531,33 +9267,26 @@ snapshots: object-inspect@1.13.1: {} + object-is@1.1.6: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + object-keys@1.1.1: {} object.assign@4.1.5: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 - object.entries@1.1.7: - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - object.entries@1.1.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 - object.fromentries@2.0.7: - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - object.fromentries@2.0.8: dependencies: call-bind: 1.0.7 @@ -9565,24 +9294,11 @@ snapshots: es-abstract: 1.23.3 es-object-atoms: 1.0.0 - object.groupby@1.0.1: - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 - - object.hasown@1.1.4: + object.groupby@1.0.3: dependencies: + call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - - object.values@1.1.7: - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 object.values@1.2.0: dependencies: @@ -9987,10 +9703,10 @@ snapshots: reflect.getprototypeof@1.0.4: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + es-abstract: 1.23.3 + get-intrinsic: 1.2.4 globalthis: 1.0.3 which-builtin-type: 1.1.3 @@ -10003,12 +9719,6 @@ snapshots: regenerator-runtime@0.14.1: {} - regexp.prototype.flags@1.5.1: - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - set-function-name: 2.0.1 - regexp.prototype.flags@1.5.2: dependencies: call-bind: 1.0.7 @@ -10193,10 +9903,6 @@ snapshots: rfdc@1.3.0: {} - rimraf@3.0.2: - dependencies: - glob: 7.1.7 - rollup@2.78.0: optionalDependencies: fsevents: 2.3.3 @@ -10205,13 +9911,6 @@ snapshots: dependencies: queue-microtask: 1.2.3 - safe-array-concat@1.0.1: - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - has-symbols: 1.0.3 - isarray: 2.0.5 - safe-array-concat@1.1.2: dependencies: call-bind: 1.0.7 @@ -10221,12 +9920,6 @@ snapshots: safe-buffer@5.2.1: {} - safe-regex-test@1.0.0: - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-regex: 1.1.4 - safe-regex-test@1.0.3: dependencies: call-bind: 1.0.7 @@ -10266,19 +9959,14 @@ snapshots: semver@7.6.2: {} + semver@7.6.3: {} + serialize-javascript@6.0.1: dependencies: randombytes: 2.1.0 set-blocking@2.0.0: {} - set-function-length@1.1.1: - dependencies: - define-data-property: 1.1.1 - get-intrinsic: 1.2.2 - gopd: 1.0.1 - has-property-descriptors: 1.0.1 - set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -10288,12 +9976,6 @@ snapshots: gopd: 1.0.1 has-property-descriptors: 1.0.2 - set-function-name@2.0.1: - dependencies: - define-data-property: 1.1.1 - functions-have-names: 1.2.3 - has-property-descriptors: 1.0.1 - set-function-name@2.0.2: dependencies: define-data-property: 1.1.4 @@ -10313,12 +9995,6 @@ snapshots: shebang-regex@3.0.0: {} - side-channel@1.0.4: - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - object-inspect: 1.13.1 - side-channel@1.0.6: dependencies: call-bind: 1.0.7 @@ -10385,10 +10061,16 @@ snapshots: sprintf-js@1.0.3: {} + stable-hash@0.0.4: {} + stacktrace-parser@0.1.10: dependencies: type-fest: 0.7.1 + stop-iteration-iterator@1.0.0: + dependencies: + internal-slot: 1.0.7 + stream-events@1.0.5: dependencies: stubs: 3.0.0 @@ -10415,6 +10097,11 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.0 + string.prototype.includes@2.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.3 + string.prototype.matchall@4.0.11: dependencies: call-bind: 1.0.7 @@ -10430,11 +10117,10 @@ snapshots: set-function-name: 2.0.2 side-channel: 1.0.6 - string.prototype.trim@1.2.8: + string.prototype.repeat@1.0.0: dependencies: - call-bind: 1.0.5 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 string.prototype.trim@1.2.9: dependencies: @@ -10443,24 +10129,12 @@ snapshots: es-abstract: 1.23.3 es-object-atoms: 1.0.0 - string.prototype.trimend@1.0.7: - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - string.prototype.trimend@1.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 - string.prototype.trimstart@1.0.7: - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - string.prototype.trimstart@1.0.8: dependencies: call-bind: 1.0.7 @@ -10605,7 +10279,7 @@ snapshots: terser@5.26.0: dependencies: '@jridgewell/source-map': 0.3.5 - acorn: 8.11.3 + acorn: 8.12.1 commander: 2.20.3 source-map-support: 0.5.21 @@ -10637,10 +10311,6 @@ snapshots: trough@2.1.0: {} - ts-api-utils@1.0.3(typescript@5.3.3): - dependencies: - typescript: 5.3.3 - ts-api-utils@1.3.0(typescript@5.3.3): dependencies: typescript: 5.3.3 @@ -10674,6 +10344,8 @@ snapshots: tslib@2.6.2: {} + tslib@2.7.0: {} + tty-table@4.2.1: dependencies: chalk: 4.1.2 @@ -10700,25 +10372,12 @@ snapshots: type-fest@1.4.0: {} - typed-array-buffer@1.0.0: - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-typed-array: 1.1.12 - typed-array-buffer@1.0.2: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-typed-array: 1.1.13 - typed-array-byte-length@1.0.0: - dependencies: - call-bind: 1.0.5 - for-each: 0.3.3 - has-proto: 1.0.1 - is-typed-array: 1.1.12 - typed-array-byte-length@1.0.1: dependencies: call-bind: 1.0.7 @@ -10727,14 +10386,6 @@ snapshots: has-proto: 1.0.3 is-typed-array: 1.1.13 - typed-array-byte-offset@1.0.0: - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 - for-each: 0.3.3 - has-proto: 1.0.1 - is-typed-array: 1.1.12 - typed-array-byte-offset@1.0.2: dependencies: available-typed-arrays: 1.0.7 @@ -10744,12 +10395,6 @@ snapshots: has-proto: 1.0.3 is-typed-array: 1.1.13 - typed-array-length@1.0.4: - dependencies: - call-bind: 1.0.5 - for-each: 0.3.3 - is-typed-array: 1.1.12 - typed-array-length@1.0.6: dependencies: call-bind: 1.0.7 @@ -10759,11 +10404,22 @@ snapshots: is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 + typescript-eslint@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) + '@typescript-eslint/parser': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) + '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) + optionalDependencies: + typescript: 5.3.3 + transitivePeerDependencies: + - eslint + - supports-color + typescript@5.3.3: {} unbox-primitive@1.0.2: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 @@ -10963,8 +10619,8 @@ snapshots: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/wasm-edit': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 - acorn: 8.11.3 - acorn-import-assertions: 1.9.0(acorn@8.11.3) + acorn: 8.12.1 + acorn-import-assertions: 1.9.0(acorn@8.12.1) browserslist: 4.22.2 chrome-trace-event: 1.0.3 enhanced-resolve: 5.15.0 @@ -11003,7 +10659,7 @@ snapshots: which-builtin-type@1.1.3: dependencies: function.prototype.name: 1.1.6 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 is-async-function: 2.0.0 is-date-object: 1.0.5 is-finalizationregistry: 1.0.2 @@ -11013,7 +10669,7 @@ snapshots: isarray: 2.0.5 which-boxed-primitive: 1.0.2 which-collection: 1.0.1 - which-typed-array: 1.1.13 + which-typed-array: 1.1.15 which-collection@1.0.1: dependencies: @@ -11029,14 +10685,6 @@ snapshots: load-yaml-file: 0.2.0 path-exists: 4.0.0 - which-typed-array@1.1.13: - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.0 - which-typed-array@1.1.15: dependencies: available-typed-arrays: 1.0.7 From f574e7ac3407d3235a3a0a5399fba027da8760d3 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Wed, 4 Sep 2024 16:10:52 +0200 Subject: [PATCH 207/326] :rotating_light: run lint --- src/actions/create-users/action.ts | 2 +- src/actions/get-favorite/index.ts | 2 +- src/actions/get-favorites/index.ts | 2 +- src/actions/get-integration/index.ts | 2 +- src/actions/get-me/index.ts | 4 ++-- src/actions/get-node/index.ts | 2 +- src/actions/get-nodes-count/index.ts | 2 +- src/actions/get-nodes/index.ts | 4 ++-- src/actions/get-search-nodes/index.ts | 2 +- src/actions/get-search-tags/index.ts | 2 +- src/actions/get-signed-logo/index.ts | 2 +- src/actions/get-tags-count/index.ts | 2 +- src/actions/get-tags/index.ts | 2 +- src/actions/get-tenant/index.ts | 2 +- src/actions/get-user-answers/index.ts | 2 +- src/actions/get-user-questions/index.ts | 2 +- src/actions/get-user/index.ts | 2 +- src/actions/get-users-count/index.ts | 2 +- src/actions/get-users/index.ts | 2 +- src/app/api/auth/[...nextauth]/route.ts | 6 +++--- src/app/api/stripe/billing/route.ts | 4 ++-- src/app/api/stripe/checkout/[id].ts | 3 ++- src/app/api/stripe/checkout/route.ts | 4 ++-- src/app/api/stripe/webhooks/route.ts | 5 ++++- src/components/editor/Editor.tsx | 1 + src/components/toast/Toast.tsx | 1 + src/modules/settings/payment/Delete.tsx | 2 +- src/utils/functions.ts | 1 + 28 files changed, 38 insertions(+), 31 deletions(-) diff --git a/src/actions/create-users/action.ts b/src/actions/create-users/action.ts index a02feda8f..6a03b02dd 100644 --- a/src/actions/create-users/action.ts +++ b/src/actions/create-users/action.ts @@ -99,7 +99,7 @@ export async function createUsers(usersArray, formData) { if (errors.length > 0) { return { message: 'Some users could not be created', errors }; } - } catch (error) { + } catch { return { error: 'Error creating users' }; } diff --git a/src/actions/get-favorite/index.ts b/src/actions/get-favorite/index.ts index 1f38ad550..b015a2a4a 100644 --- a/src/actions/get-favorite/index.ts +++ b/src/actions/get-favorite/index.ts @@ -17,7 +17,7 @@ export const getFavorite = cache( }, }); return favorite as Favorite; - } catch (error) { + } catch { throw new Error('Error fetching favorite'); } }, diff --git a/src/actions/get-favorites/index.ts b/src/actions/get-favorites/index.ts index 00dff17c1..d0b55e229 100644 --- a/src/actions/get-favorites/index.ts +++ b/src/actions/get-favorites/index.ts @@ -24,7 +24,7 @@ export const getFavorites = cache( if (!favorites) return []; return favorites as ExtendedFavorites[]; - } catch (error) { + } catch { throw new Error('Error fetching favorites'); } }, diff --git a/src/actions/get-integration/index.ts b/src/actions/get-integration/index.ts index cb49135c1..57ff9b0d2 100644 --- a/src/actions/get-integration/index.ts +++ b/src/actions/get-integration/index.ts @@ -17,7 +17,7 @@ export const getIntegration = cache( if (!integrations) return null; return integrations; - } catch (error) { + } catch { throw new Error('Error fetching integrations'); } }, diff --git a/src/actions/get-me/index.ts b/src/actions/get-me/index.ts index 2bd946dd4..a23960b7f 100644 --- a/src/actions/get-me/index.ts +++ b/src/actions/get-me/index.ts @@ -25,7 +25,7 @@ export const getMe = cache(async (): Promise => { return null; } return me as Me; - } catch (error) { + } catch { throw new Error('Error fetching user'); } }); @@ -45,7 +45,7 @@ export const getUserId = cache( }); const userId = user?.id ?? null; return userId as string; - } catch (error) { + } catch { throw new Error('Error fetching user'); } }, diff --git a/src/actions/get-node/index.ts b/src/actions/get-node/index.ts index 2817984a3..88f4f733f 100644 --- a/src/actions/get-node/index.ts +++ b/src/actions/get-node/index.ts @@ -19,7 +19,7 @@ export const getNode = cache( }); if (!node) return redirect(Routes.SITE.HOME); return node as ExtendedNode; - } catch (error) { + } catch { throw new Error('Error fetching node'); } }, diff --git a/src/actions/get-nodes-count/index.ts b/src/actions/get-nodes-count/index.ts index fcc5ae5c6..c15b33a21 100644 --- a/src/actions/get-nodes-count/index.ts +++ b/src/actions/get-nodes-count/index.ts @@ -15,7 +15,7 @@ export const getNodesCount = cache( if (!nodes) return 0; return nodes; - } catch (error) { + } catch { throw new Error('Error fetching nodes count'); } }, diff --git a/src/actions/get-nodes/index.ts b/src/actions/get-nodes/index.ts index 4c3f74dbe..610475591 100644 --- a/src/actions/get-nodes/index.ts +++ b/src/actions/get-nodes/index.ts @@ -41,7 +41,7 @@ export const getPaginatedNodes = cache( if (!nodes) return []; return nodes as ExtendedNode[]; } - } catch (error) { + } catch { throw new Error('Error fetching nodes'); } }, @@ -61,7 +61,7 @@ export const getAllNodes = cache(async (tenantId: string) => { if (!nodes) return null; return nodes; - } catch (error) { + } catch { return { error: 'Error fetching nodes' }; } }); diff --git a/src/actions/get-search-nodes/index.ts b/src/actions/get-search-nodes/index.ts index 1bdedde70..53f28ed7e 100644 --- a/src/actions/get-search-nodes/index.ts +++ b/src/actions/get-search-nodes/index.ts @@ -38,7 +38,7 @@ export const getSearchNodes = cache( if (!nodes) return []; return nodes as ExtendedNode[]; } - } catch (error) { + } catch { throw new Error('Error fetching results'); } }, diff --git a/src/actions/get-search-tags/index.ts b/src/actions/get-search-tags/index.ts index 5d473a79d..41b63f9bf 100644 --- a/src/actions/get-search-tags/index.ts +++ b/src/actions/get-search-tags/index.ts @@ -40,7 +40,7 @@ export const getSearchTags = cache( if (!nodes) return []; return nodes as ExtendedNode[]; } - } catch (error) { + } catch { throw new Error('Error fetching results'); } }, diff --git a/src/actions/get-signed-logo/index.ts b/src/actions/get-signed-logo/index.ts index 3902dd341..898dcd455 100644 --- a/src/actions/get-signed-logo/index.ts +++ b/src/actions/get-signed-logo/index.ts @@ -48,7 +48,7 @@ export async function getSignedLogo(formData: FormData) { }; } return { error: 'Not signed in' }; - } catch (error) { + } catch { return { error: 'Error updating logo' }; } } diff --git a/src/actions/get-tags-count/index.ts b/src/actions/get-tags-count/index.ts index 95972aa80..f146ed1fa 100644 --- a/src/actions/get-tags-count/index.ts +++ b/src/actions/get-tags-count/index.ts @@ -14,7 +14,7 @@ export const getTagsCount = cache(async (tenantId: string): Promise => { if (!tags) return 0; return tags; - } catch (error) { + } catch { throw new Error('Error fetching tags count'); } }); diff --git a/src/actions/get-tags/index.ts b/src/actions/get-tags/index.ts index a13cda8cc..dc13209d6 100644 --- a/src/actions/get-tags/index.ts +++ b/src/actions/get-tags/index.ts @@ -14,7 +14,7 @@ export const getTags = cache(async (tenantId: string): Promise => { }); if (!tags) return []; return tags; - } catch (error) { + } catch { throw new Error('Error fetching tags'); } }); diff --git a/src/actions/get-tenant/index.ts b/src/actions/get-tenant/index.ts index 723958d0b..5d05c73b6 100644 --- a/src/actions/get-tenant/index.ts +++ b/src/actions/get-tenant/index.ts @@ -19,7 +19,7 @@ export const getTenant = cache(async (tenantId: string): Promise => { if (!tenant) redirect(Routes.SITE.HOME); return tenant; - } catch (error) { + } catch { throw new Error('Error fetching tenant'); } }); diff --git a/src/actions/get-user-answers/index.ts b/src/actions/get-user-answers/index.ts index 28483a09e..db0b69af8 100644 --- a/src/actions/get-user-answers/index.ts +++ b/src/actions/get-user-answers/index.ts @@ -29,7 +29,7 @@ export const getUserAnswers = cache( }); if (!answers) return []; return answers as NodeWithQuestionAndAnswer[]; - } catch (error) { + } catch { throw new Error('Error fetching answers'); } }, diff --git a/src/actions/get-user-questions/index.ts b/src/actions/get-user-questions/index.ts index 69d5a8b9d..2a3184567 100644 --- a/src/actions/get-user-questions/index.ts +++ b/src/actions/get-user-questions/index.ts @@ -19,7 +19,7 @@ export const getUserQuestions = cache( if (!questions) return []; return questions; - } catch (error) { + } catch { throw new Error('Error fetching questions'); } }, diff --git a/src/actions/get-user/index.ts b/src/actions/get-user/index.ts index aa2b2b44b..a0b1a5e9a 100644 --- a/src/actions/get-user/index.ts +++ b/src/actions/get-user/index.ts @@ -11,7 +11,7 @@ export const getUser = cache(async (id: string) => { where: { id }, }); return user; - } catch (error) { + } catch { return { error: 'Error fetching user' }; } }); diff --git a/src/actions/get-users-count/index.ts b/src/actions/get-users-count/index.ts index 01670e350..c76fd00f8 100644 --- a/src/actions/get-users-count/index.ts +++ b/src/actions/get-users-count/index.ts @@ -15,7 +15,7 @@ export const getUsersCount = cache( if (!users) return 0; return users; - } catch (error) { + } catch { throw new Error('Error fetching users count'); } }, diff --git a/src/actions/get-users/index.ts b/src/actions/get-users/index.ts index fb8ddd185..0b29d7b80 100644 --- a/src/actions/get-users/index.ts +++ b/src/actions/get-users/index.ts @@ -14,7 +14,7 @@ export const getUsers = cache(async (tenantId: string): Promise => { }); if (!users) return []; return users; - } catch (error) { + } catch { throw new Error('Error fetching users'); } }); diff --git a/src/app/api/auth/[...nextauth]/route.ts b/src/app/api/auth/[...nextauth]/route.ts index 11d5f5111..d4b540642 100644 --- a/src/app/api/auth/[...nextauth]/route.ts +++ b/src/app/api/auth/[...nextauth]/route.ts @@ -1,13 +1,13 @@ import { PrismaAdapter } from '@next-auth/prisma-adapter'; import NextAuth from 'next-auth'; -import GoogleProvider from 'next-auth/providers/google'; import EmailProvider from 'next-auth/providers/email'; +import GoogleProvider from 'next-auth/providers/google'; +import { sendVerificationRequest } from '@/lib'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; import type { NextAuthOptions } from 'next-auth'; -import { sendVerificationRequest } from '@/lib'; export const authOptions: NextAuthOptions = { adapter: PrismaAdapter(prisma), @@ -67,7 +67,7 @@ export const authOptions: NextAuthOptions = { } return true; }, - async redirect({ url, baseUrl }) { + async redirect({ baseUrl }) { return baseUrl; }, async jwt({ token, account, user }) { diff --git a/src/app/api/stripe/billing/route.ts b/src/app/api/stripe/billing/route.ts index b943cb087..62f220f5f 100644 --- a/src/app/api/stripe/billing/route.ts +++ b/src/app/api/stripe/billing/route.ts @@ -1,10 +1,10 @@ import { NextResponse } from 'next/server'; import Stripe from 'stripe'; +import { STRIPE_VERSION } from '@/utils'; import prisma from 'lib/prisma'; import type { NextRequest } from 'next/server'; -import { STRIPE_VERSION } from '@/utils'; const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { apiVersion: STRIPE_VERSION, @@ -122,7 +122,7 @@ export async function POST(req: NextRequest) { configuration: configuration.id, }); return NextResponse.json({ url, customerId, plan }); - } catch (error) { + } catch { return NextResponse.json( { error: 'Error creating billing session', diff --git a/src/app/api/stripe/checkout/[id].ts b/src/app/api/stripe/checkout/[id].ts index 9bbb7f06b..c0f68c062 100644 --- a/src/app/api/stripe/checkout/[id].ts +++ b/src/app/api/stripe/checkout/[id].ts @@ -1,8 +1,9 @@ import Stripe from 'stripe'; -import type { NextApiRequest, NextApiResponse } from 'next'; import { STRIPE_VERSION } from '@/utils'; +import type { NextApiRequest, NextApiResponse } from 'next'; + const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { apiVersion: STRIPE_VERSION, }); diff --git a/src/app/api/stripe/checkout/route.ts b/src/app/api/stripe/checkout/route.ts index 611a9834b..cbf06f298 100644 --- a/src/app/api/stripe/checkout/route.ts +++ b/src/app/api/stripe/checkout/route.ts @@ -1,10 +1,10 @@ import { NextResponse } from 'next/server'; import Stripe from 'stripe'; +import { createCheckoutSchema } from '@/lib/validations'; import { Routes, STRIPE_VERSION } from '@/utils'; import type { NextRequest } from 'next/server'; -import { createCheckoutSchema } from '@/lib/validations'; const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { apiVersion: STRIPE_VERSION, @@ -45,7 +45,7 @@ export async function POST(req: NextRequest) { automatic_tax: { enabled: true }, }); return NextResponse.json({ id: session.id }); - } catch (error) { + } catch { return NextResponse.json( { error: 'Error creating checkout session' }, { status: 500 }, diff --git a/src/app/api/stripe/webhooks/route.ts b/src/app/api/stripe/webhooks/route.ts index d50aeb65b..91122804d 100644 --- a/src/app/api/stripe/webhooks/route.ts +++ b/src/app/api/stripe/webhooks/route.ts @@ -1,10 +1,12 @@ +/* eslint-disable no-case-declarations */ + import { Stripe } from 'stripe'; +import { STRIPE_VERSION } from '@/utils'; import prisma from 'lib/prisma'; import type { IPlan } from '@/types'; import type { NextApiRequest, NextApiResponse } from 'next'; -import { STRIPE_VERSION } from '@/utils'; const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { apiVersion: STRIPE_VERSION, @@ -99,6 +101,7 @@ export default async function handler( email: customer.email, }, }); + break; case 'payment_intent.payment_failed': data = event.data.object as Stripe.PaymentIntent; console.log(`❌ Payment failed: ${data.last_payment_error?.message}`); diff --git a/src/components/editor/Editor.tsx b/src/components/editor/Editor.tsx index 0a2be7f56..8b37e9c78 100644 --- a/src/components/editor/Editor.tsx +++ b/src/components/editor/Editor.tsx @@ -10,6 +10,7 @@ import { useMediaQuery } from '@/hooks'; const MDEditor = dynamic(() => import('@uiw/react-md-editor'), { ssr: false }); type Props = { + /* eslint-disable-next-line @typescript-eslint/no-explicit-any*/ onChange: (...event: any[]) => void; value: string; }; diff --git a/src/components/toast/Toast.tsx b/src/components/toast/Toast.tsx index 80c0bc3f4..a08810088 100644 --- a/src/components/toast/Toast.tsx +++ b/src/components/toast/Toast.tsx @@ -10,6 +10,7 @@ export const successToast = (text: string) => { }; export const promiseToast = ( + /* eslint-disable-next-line @typescript-eslint/no-explicit-any*/ promise: Promise | (() => Promise), loading: string, ) => { diff --git a/src/modules/settings/payment/Delete.tsx b/src/modules/settings/payment/Delete.tsx index a3fbe7e6e..e9ca1c745 100644 --- a/src/modules/settings/payment/Delete.tsx +++ b/src/modules/settings/payment/Delete.tsx @@ -93,7 +93,7 @@ export const Delete = ({ tenantId, company }: Props) => { className="lowercase" style={{ fontVariant: 'small-caps' }} type="button" - // @ts-ignore + // @ts-expect-error Value of text must always be DELETE {company name} according to Zod schema onClick={() => setValue('text', '')} > Cancel diff --git a/src/utils/functions.ts b/src/utils/functions.ts index 10b94017f..6e804231c 100644 --- a/src/utils/functions.ts +++ b/src/utils/functions.ts @@ -1,3 +1,4 @@ +/* eslint-disable-next-line @typescript-eslint/no-explicit-any*/ export const arraysAreEqual = (array1: any[], array2: any[]) => array1.length === array2.length && array1.every((value, index) => value === array2[index]); From 72c55056988f77d003c83afb18cb5637f4a7ad64 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 5 Sep 2024 10:01:36 +0200 Subject: [PATCH 208/326] :recycle: refacto webhooks file --- src/app/api/stripe/webhooks/route.ts | 44 ++++++++++------------------ 1 file changed, 15 insertions(+), 29 deletions(-) diff --git a/src/app/api/stripe/webhooks/route.ts b/src/app/api/stripe/webhooks/route.ts index 91122804d..1ef85dbfa 100644 --- a/src/app/api/stripe/webhooks/route.ts +++ b/src/app/api/stripe/webhooks/route.ts @@ -1,47 +1,29 @@ /* eslint-disable no-case-declarations */ +import { headers } from 'next/headers'; +import { NextRequest, NextResponse } from 'next/server'; import { Stripe } from 'stripe'; import { STRIPE_VERSION } from '@/utils'; import prisma from 'lib/prisma'; import type { IPlan } from '@/types'; -import type { NextApiRequest, NextApiResponse } from 'next'; const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { apiVersion: STRIPE_VERSION, }); const webhookSecret = process.env.STRIPE_WEBHOOK_SECRET!; -const STRIPE_SIGNATURE_HEADER = 'stripe-signature'; -async function buffer(readable) { - const chunks = []; - for await (const chunk of readable) { - chunks.push(typeof chunk === 'string' ? Buffer.from(chunk) : chunk); - } - return Buffer.concat(chunks); -} - -export const config = { - api: { - bodyParser: false, - }, -}; - -export default async function handler( - req: NextApiRequest, - res: NextApiResponse, -) { - const body = await buffer(req); - const signature = req.headers[STRIPE_SIGNATURE_HEADER]; +export default async function handler(req: NextRequest) { + const body = await req.text(); + const signature = headers().get('Stripe-Signature') as string; let event: Stripe.Event; try { event = stripe.webhooks.constructEvent(body, signature!, webhookSecret); } catch (error) { - console.error(`Webhook signature verification failed.`, error.message); - return res.status(500).json({ error: error.message }); + return NextResponse.json({ error: error.message }, { status: 400 }); } const permittedEvents: string[] = [ @@ -121,13 +103,17 @@ export default async function handler( }); break; default: - throw new Error(`Unhandled event: ${event.type}`); + return NextResponse.json( + { message: `Unhandled event: ${event.type}` }, + { status: 400 }, + ); } } catch (error) { - if (error instanceof Error) { - return res.status(500).json({ error: error.message }); - } + return NextResponse.json( + { error: `Webhook error: ${error.message}` }, + { status: 500 }, + ); } } - return res.status(200).json({ message: 'Received' }); + return new NextResponse('Received'); } From 0e0b6d569c964bd775cd440d43423a98ffba52ab Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 5 Sep 2024 11:11:23 +0200 Subject: [PATCH 209/326] :arrow_up: upgraded some dependencies --- package.json | 12 +-- pnpm-lock.yaml | 253 +++++++++++++++++++++++++++---------------------- 2 files changed, 147 insertions(+), 118 deletions(-) diff --git a/package.json b/package.json index 1b2369d37..6f7d86029 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "clsx": "^2.1.0", "formidable": "^3.5.1", "jotai": "^2.6.4", - "lucide-react": "^0.400.0", + "lucide-react": "^0.438.0", "next": "14.2.4", "next-auth": "^4.24.7", "next-remove-imports": "^1.0.12", @@ -68,7 +68,7 @@ "react-paginate": "^8.2.0", "react-papaparse": "^4.4.0", "rehype-sanitize": "^6.0.0", - "resend": "^3.2.0", + "resend": "^4.0.0", "slugify": "^1.6.6", "sonner": "^1.4.0", "stripe": "^16.1.0", @@ -85,9 +85,9 @@ "@eslint/js": "^9.9.1", "@next/eslint-plugin-next": "^14.2.7", "@playwright/test": "^1.45.0", - "@swc-jotai/react-refresh": "^0.1.0", + "@swc-jotai/react-refresh": "^0.2.0", "@types/formidable": "^3.4.5", - "@types/node": "^20.5.6", + "@types/node": "^22.5.4", "@types/react": "^18.0.27", "autoprefixer": "^10.4.16", "dotenv": "^16.4.5", @@ -105,11 +105,11 @@ "lint-staged": "^15.0.2", "postcss": "^8.4.28", "prettier": "^3.2.5", - "prettier-plugin-tailwindcss": "^0.6.2", + "prettier-plugin-tailwindcss": "^0.6.6", "prisma": "5.16.1", "tailwindcss": "^3.4.1", "ts-node": "^10.9.1", - "typescript": "^5.3.3", + "typescript": "^5.5.4", "typescript-eslint": "^8.4.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d79ea117d..a36f567be 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -78,8 +78,8 @@ importers: specifier: ^2.6.4 version: 2.6.4(@types/react@18.0.27)(react@18.2.0) lucide-react: - specifier: ^0.400.0 - version: 0.400.0(react@18.2.0) + specifier: ^0.438.0 + version: 0.438.0(react@18.2.0) next: specifier: 14.2.4 version: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -120,8 +120,8 @@ importers: specifier: ^6.0.0 version: 6.0.0 resend: - specifier: ^3.2.0 - version: 3.2.0 + specifier: ^4.0.0 + version: 4.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) slugify: specifier: ^1.6.6 version: 1.6.6 @@ -136,7 +136,7 @@ importers: version: 2.2.0 tailwindcss-animate: specifier: ^1.0.6 - version: 1.0.6(tailwindcss@3.4.1(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3))) + version: 1.0.6(tailwindcss@3.4.1(ts-node@10.9.1(@types/node@22.5.4)(typescript@5.5.4))) use-debounce: specifier: ^10.0.0 version: 10.0.0(react@18.2.0) @@ -166,14 +166,14 @@ importers: specifier: ^1.45.0 version: 1.45.0 '@swc-jotai/react-refresh': - specifier: ^0.1.0 - version: 0.1.0 + specifier: ^0.2.0 + version: 0.2.0 '@types/formidable': specifier: ^3.4.5 version: 3.4.5 '@types/node': - specifier: ^20.5.6 - version: 20.5.6 + specifier: ^22.5.4 + version: 22.5.4 '@types/react': specifier: ^18.0.27 version: 18.0.27 @@ -188,16 +188,16 @@ importers: version: 9.9.1(jiti@1.19.3) eslint-config-next: specifier: ^14.2.7 - version: 14.2.7(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) + version: 14.2.7(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) eslint-config-prettier: specifier: ^9.0.0 version: 9.0.0(eslint@9.9.1(jiti@1.19.3)) eslint-import-resolver-typescript: specifier: ^3.6.3 - version: 3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)) + version: 3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)) eslint-plugin-import-x: specifier: ^4.2.0 - version: 4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) + version: 4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) eslint-plugin-playwright: specifier: ^1.6.2 version: 1.6.2(eslint@9.9.1(jiti@1.19.3)) @@ -212,7 +212,7 @@ importers: version: 4.6.2(eslint@9.9.1(jiti@1.19.3)) eslint-plugin-unused-imports: specifier: ^4.1.3 - version: 4.1.3(@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint@9.9.1(jiti@1.19.3)) + version: 4.1.3(@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint@9.9.1(jiti@1.19.3)) husky: specifier: ^9.0.11 version: 9.0.11 @@ -226,23 +226,23 @@ importers: specifier: ^3.2.5 version: 3.2.5 prettier-plugin-tailwindcss: - specifier: ^0.6.2 - version: 0.6.2(prettier@3.2.5) + specifier: ^0.6.6 + version: 0.6.6(prettier@3.2.5) prisma: specifier: 5.16.1 version: 5.16.1 tailwindcss: specifier: ^3.4.1 - version: 3.4.1(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3)) + version: 3.4.1(ts-node@10.9.1(@types/node@22.5.4)(typescript@5.5.4)) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@20.5.6)(typescript@5.3.3) + version: 10.9.1(@types/node@22.5.4)(typescript@5.5.4) typescript: - specifier: ^5.3.3 - version: 5.3.3 + specifier: ^5.5.4 + version: 5.5.4 typescript-eslint: specifier: ^8.4.0 - version: 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) + version: 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) packages: @@ -1218,9 +1218,12 @@ packages: '@radix-ui/rect@1.1.0': resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} - '@react-email/render@0.0.12': - resolution: {integrity: sha512-S8WRv/PqECEi6x0QJBj0asnAb5GFtJaHlnByxLETLkgJjc76cxMYDH4r9wdbuJ4sjkcbpwP3LPnVzwS+aIjT7g==} + '@react-email/render@0.0.17': + resolution: {integrity: sha512-xBQ+/73+WsGuXKY7r1U73zMBNV28xdV0cp9cFjhNYipBReDHhV97IpA6v7Hl0dDtDzt+yS/72dY5vYXrF1v8NA==} engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.2.0 + react-dom: ^18.2.0 '@rollup/plugin-commonjs@24.0.0': resolution: {integrity: sha512-0w0wyykzdyRRPHOb0cQt14mIBLujfAv6GgP6g8nvg/iBxEm112t3YPPq+Buqe2+imvElTka+bjNlJ/gB56TD8g==} @@ -1331,8 +1334,8 @@ packages: resolution: {integrity: sha512-HhstGRUz/4JdbZpb26OcOf8Qb/cFR02arvHvgz4sPFLSnI6ZNHC53Jc6JP/FGNwxtrF719YyUnK0gGy4oyhucQ==} engines: {node: '>=12.16'} - '@swc-jotai/react-refresh@0.1.0': - resolution: {integrity: sha512-CWV4W06GdfQo3cW3CoUM2fp7avH4Z/suR7SvECNJnQbr6Sa9U3p7o10nXjNv2zT6z09bbNUPM55HBw5Nwd24Iw==} + '@swc-jotai/react-refresh@0.2.0': + resolution: {integrity: sha512-LDkIeVcaL8sop/MHLP3RsUHj73fQ0kU7eYhJj7SuU4eAbx7xE3eeEgCjhTyPB3aYimSHwOk8/c71buLMV9SvPA==} '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} @@ -1407,8 +1410,8 @@ packages: '@types/node@20.10.6': resolution: {integrity: sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw==} - '@types/node@20.5.6': - resolution: {integrity: sha512-Gi5wRGPbbyOTX+4Y2iULQ27oUPrefaB0PxGQJnfyWN3kvEDGM3mIB5M/gQLmitZf7A9FmLeaqxD3L1CXpm3VKQ==} + '@types/node@22.5.4': + resolution: {integrity: sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==} '@types/normalize-package-data@2.4.1': resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} @@ -2595,6 +2598,9 @@ packages: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} + fast-deep-equal@2.0.1: + resolution: {integrity: sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==} + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -3375,10 +3381,10 @@ packages: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} - lucide-react@0.400.0: - resolution: {integrity: sha512-rpp7pFHh3Xd93KHixNgB0SqThMHpYNzsGUu69UaQbSZ75Q/J3m5t6EhKyMT3m4w2WOxmJ2mY0tD3vebnXqQryQ==} + lucide-react@0.438.0: + resolution: {integrity: sha512-uq6yCB+IzVfgIPMK8ibkecXSWTTSOMs9UjUgZigfrDCVqgdwkpIgYg1fSYnf0XXF2AoSyCJZhoZXQwzoai7VGw==} peerDependencies: - react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc magic-string@0.27.0: resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} @@ -4004,8 +4010,8 @@ packages: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} - prettier-plugin-tailwindcss@0.6.2: - resolution: {integrity: sha512-eFefm4cg+1c2B57+H274Qm//CTWBdtQN9ansl0YTP/8TC8x3bugCTQSS/e4FC5Ctl9djhTzsbcMrZ7x2/abIow==} + prettier-plugin-tailwindcss@0.6.6: + resolution: {integrity: sha512-OPva5S7WAsPLEsOuOWXATi13QrCKACCiIonFgIR6V4lYv4QLp++UXVhZSzRbZxXGimkQtQT86CC6fQqTOybGng==} engines: {node: '>=14.21.3'} peerDependencies: '@ianvs/prettier-plugin-sort-imports': '*' @@ -4019,6 +4025,7 @@ packages: prettier-plugin-import-sort: '*' prettier-plugin-jsdoc: '*' prettier-plugin-marko: '*' + prettier-plugin-multiline-arrays: '*' prettier-plugin-organize-attributes: '*' prettier-plugin-organize-imports: '*' prettier-plugin-sort-imports: '*' @@ -4045,6 +4052,8 @@ packages: optional: true prettier-plugin-marko: optional: true + prettier-plugin-multiline-arrays: + optional: true prettier-plugin-organize-attributes: optional: true prettier-plugin-organize-imports: @@ -4151,6 +4160,9 @@ packages: resolution: {integrity: sha512-xTEwHZYJ+1dh9mQDQjjwJXmWyX20DdZ52u+ddw75V+Xm5qsjXSvWmC7c8K82vRwMjKAOH2S9uFyGpHEyEztkUQ==} engines: {node: '>=8', npm: '>=5'} + react-promise-suspense@0.3.4: + resolution: {integrity: sha512-I42jl7L3Ze6kZaq+7zXWSunBa3b1on5yfvUW6Eo/3fFOj6dZ5Bqmcd264nJbTK/gn1HjjILAjSwnZbV4RpSaNQ==} + react-remove-scroll-bar@2.3.4: resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} engines: {node: '>=10'} @@ -4301,8 +4313,8 @@ packages: require-main-filename@2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - resend@3.2.0: - resolution: {integrity: sha512-lDHhexiFYPoLXy7zRlJ8D5eKxoXy6Tr9/elN3+Vv7PkUoYuSSD1fpiIfa/JYXEWyiyN2UczkCTLpkT8dDPJ4Pg==} + resend@4.0.0: + resolution: {integrity: sha512-rDX0rspl/XcmC2JV2V5obQvRX2arzxXUvNFUDMOv5ObBLR68+7kigCOysb7+dlkb0JE3erhQG0nHrbBt/ZCWIg==} engines: {node: '>=18'} resolve-from@4.0.0: @@ -4811,8 +4823,8 @@ packages: typescript: optional: true - typescript@5.3.3: - resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + typescript@5.5.4: + resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} engines: {node: '>=14.17'} hasBin: true @@ -4822,6 +4834,9 @@ packages: undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + unified@10.1.2: resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} @@ -6161,12 +6176,13 @@ snapshots: '@radix-ui/rect@1.1.0': {} - '@react-email/render@0.0.12': + '@react-email/render@0.0.17(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: html-to-text: 9.0.5 js-beautify: 1.14.11 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + react-promise-suspense: 0.3.4 '@rollup/plugin-commonjs@24.0.0(rollup@2.78.0)': dependencies: @@ -6321,14 +6337,14 @@ snapshots: '@slack/webhook@7.0.1': dependencies: '@slack/types': 2.10.0 - '@types/node': 20.5.6 + '@types/node': 20.10.6 axios: 1.6.2 transitivePeerDependencies: - debug '@stripe/stripe-js@4.1.0': {} - '@swc-jotai/react-refresh@0.1.0': {} + '@swc-jotai/react-refresh@0.2.0': {} '@swc/counter@0.1.3': {} @@ -6401,7 +6417,9 @@ snapshots: dependencies: undici-types: 5.26.5 - '@types/node@20.5.6': {} + '@types/node@22.5.4': + dependencies: + undici-types: 6.19.8 '@types/normalize-package-data@2.4.1': {} @@ -6456,47 +6474,47 @@ snapshots: transitivePeerDependencies: - '@types/json-schema' - '@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3)': + '@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) + '@typescript-eslint/parser': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) '@typescript-eslint/scope-manager': 8.4.0 - '@typescript-eslint/type-utils': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) - '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) + '@typescript-eslint/type-utils': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) + '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) '@typescript-eslint/visitor-keys': 8.4.0 eslint: 9.9.1(jiti@1.19.3) graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.3.3) + ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: - typescript: 5.3.3 + typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3)': + '@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4)': dependencies: '@typescript-eslint/scope-manager': 7.2.0 '@typescript-eslint/types': 7.2.0 - '@typescript-eslint/typescript-estree': 7.2.0(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 7.2.0(typescript@5.5.4) '@typescript-eslint/visitor-keys': 7.2.0 debug: 4.3.6 eslint: 9.9.1(jiti@1.19.3) optionalDependencies: - typescript: 5.3.3 + typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3)': + '@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4)': dependencies: '@typescript-eslint/scope-manager': 8.4.0 '@typescript-eslint/types': 8.4.0 - '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4) '@typescript-eslint/visitor-keys': 8.4.0 debug: 4.3.4 eslint: 9.9.1(jiti@1.19.3) optionalDependencies: - typescript: 5.3.3 + typescript: 5.5.4 transitivePeerDependencies: - supports-color @@ -6510,14 +6528,14 @@ snapshots: '@typescript-eslint/types': 8.4.0 '@typescript-eslint/visitor-keys': 8.4.0 - '@typescript-eslint/type-utils@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3)': + '@typescript-eslint/type-utils@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4)': dependencies: - '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.3.3) - '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4) + '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) debug: 4.3.4 - ts-api-utils: 1.3.0(typescript@5.3.3) + ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: - typescript: 5.3.3 + typescript: 5.5.4 transitivePeerDependencies: - eslint - supports-color @@ -6526,7 +6544,7 @@ snapshots: '@typescript-eslint/types@8.4.0': {} - '@typescript-eslint/typescript-estree@7.2.0(typescript@5.3.3)': + '@typescript-eslint/typescript-estree@7.2.0(typescript@5.5.4)': dependencies: '@typescript-eslint/types': 7.2.0 '@typescript-eslint/visitor-keys': 7.2.0 @@ -6535,13 +6553,13 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.3 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.3.3) + ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: - typescript: 5.3.3 + typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.4.0(typescript@5.3.3)': + '@typescript-eslint/typescript-estree@8.4.0(typescript@5.5.4)': dependencies: '@typescript-eslint/types': 8.4.0 '@typescript-eslint/visitor-keys': 8.4.0 @@ -6550,18 +6568,18 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.4 semver: 7.6.2 - ts-api-utils: 1.3.0(typescript@5.3.3) + ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: - typescript: 5.3.3 + typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3)': + '@typescript-eslint/utils@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.19.3)) '@typescript-eslint/scope-manager': 8.4.0 '@typescript-eslint/types': 8.4.0 - '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4) eslint: 9.9.1(jiti@1.19.3) transitivePeerDependencies: - supports-color @@ -7316,7 +7334,7 @@ snapshots: '@one-ini/wasm': 0.1.1 commander: 10.0.1 minimatch: 9.0.1 - semver: 7.6.2 + semver: 7.6.3 electron-to-chromium@1.4.503: {} @@ -7462,20 +7480,20 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-next@14.2.7(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3): + eslint-config-next@14.2.7(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4): dependencies: '@next/eslint-plugin-next': 14.2.7 '@rushstack/eslint-patch': 1.10.4 - '@typescript-eslint/parser': 7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) + '@typescript-eslint/parser': 7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) eslint: 9.9.1(jiti@1.19.3) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)) - eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1(jiti@1.19.3)) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)) + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1(jiti@1.19.3)) eslint-plugin-jsx-a11y: 6.10.0(eslint@9.9.1(jiti@1.19.3)) eslint-plugin-react: 7.35.2(eslint@9.9.1(jiti@1.19.3)) eslint-plugin-react-hooks: 4.6.2(eslint@9.9.1(jiti@1.19.3)) optionalDependencies: - typescript: 5.3.3 + typescript: 5.5.4 transitivePeerDependencies: - eslint-import-resolver-webpack - eslint-plugin-import-x @@ -7493,70 +7511,70 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)): + eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.3.6 enhanced-resolve: 5.15.0 eslint: 9.9.1(jiti@1.19.3) - eslint-module-utils: 2.9.0(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)))(eslint@9.9.1(jiti@1.19.3)) + eslint-module-utils: 2.9.0(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)))(eslint@9.9.1(jiti@1.19.3)) fast-glob: 3.3.2 get-tsconfig: 4.8.0 is-bun-module: 1.1.0 is-glob: 4.0.3 optionalDependencies: - eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1(jiti@1.19.3)) - eslint-plugin-import-x: 4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1(jiti@1.19.3)) + eslint-plugin-import-x: 4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-node - eslint-import-resolver-webpack - supports-color - eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)): + eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.3.6 enhanced-resolve: 5.15.0 eslint: 9.9.1(jiti@1.19.3) - eslint-module-utils: 2.9.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)))(eslint@9.9.1(jiti@1.19.3)) + eslint-module-utils: 2.9.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)))(eslint@9.9.1(jiti@1.19.3)) fast-glob: 3.3.2 get-tsconfig: 4.8.0 is-bun-module: 1.1.0 is-glob: 4.0.3 optionalDependencies: - eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1(jiti@1.19.3)) - eslint-plugin-import-x: 4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1(jiti@1.19.3)) + eslint-plugin-import-x: 4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-node - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.9.0(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)))(eslint@9.9.1(jiti@1.19.3)): + eslint-module-utils@2.9.0(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)))(eslint@9.9.1(jiti@1.19.3)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) + '@typescript-eslint/parser': 7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) eslint: 9.9.1(jiti@1.19.3) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.9.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)))(eslint@9.9.1(jiti@1.19.3)): + eslint-module-utils@2.9.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)))(eslint@9.9.1(jiti@1.19.3)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) + '@typescript-eslint/parser': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) eslint: 9.9.1(jiti@1.19.3) - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)) transitivePeerDependencies: - supports-color - eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3): + eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4): dependencies: - '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) + '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) debug: 4.3.4 doctrine: 3.0.0 eslint: 9.9.1(jiti@1.19.3) @@ -7571,7 +7589,7 @@ snapshots: - supports-color - typescript - eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1(jiti@1.19.3)): + eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1(jiti@1.19.3)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -7582,7 +7600,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.9.1(jiti@1.19.3) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.9.0(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)))(eslint@9.9.1(jiti@1.19.3)) + eslint-module-utils: 2.9.0(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)))(eslint@9.9.1(jiti@1.19.3)) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -7593,7 +7611,7 @@ snapshots: semver: 6.3.1 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) + '@typescript-eslint/parser': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -7660,11 +7678,11 @@ snapshots: string.prototype.matchall: 4.0.11 string.prototype.repeat: 1.0.0 - eslint-plugin-unused-imports@4.1.3(@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint@9.9.1(jiti@1.19.3)): + eslint-plugin-unused-imports@4.1.3(@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint@9.9.1(jiti@1.19.3)): dependencies: eslint: 9.9.1(jiti@1.19.3) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) + '@typescript-eslint/eslint-plugin': 8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) eslint-scope@5.1.1: dependencies: @@ -7775,6 +7793,8 @@ snapshots: iconv-lite: 0.4.24 tmp: 0.0.33 + fast-deep-equal@2.0.1: {} + fast-deep-equal@3.1.3: {} fast-diff@1.3.0: {} @@ -8685,7 +8705,7 @@ snapshots: dependencies: yallist: 4.0.0 - lucide-react@0.400.0(react@18.2.0): + lucide-react@0.438.0(react@18.2.0): dependencies: react: 18.2.0 @@ -9472,13 +9492,13 @@ snapshots: camelcase-css: 2.0.1 postcss: 8.4.31 - postcss-load-config@4.0.1(postcss@8.4.31)(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3)): + postcss-load-config@4.0.1(postcss@8.4.31)(ts-node@10.9.1(@types/node@22.5.4)(typescript@5.5.4)): dependencies: lilconfig: 2.1.0 yaml: 2.3.3 optionalDependencies: postcss: 8.4.31 - ts-node: 10.9.1(@types/node@20.5.6)(typescript@5.3.3) + ts-node: 10.9.1(@types/node@22.5.4)(typescript@5.5.4) postcss-nested@6.0.1(postcss@8.4.31): dependencies: @@ -9524,7 +9544,7 @@ snapshots: dependencies: fast-diff: 1.3.0 - prettier-plugin-tailwindcss@0.6.2(prettier@3.2.5): + prettier-plugin-tailwindcss@0.6.6(prettier@3.2.5): dependencies: prettier: 3.2.5 @@ -9619,6 +9639,10 @@ snapshots: '@types/papaparse': 5.3.14 papaparse: 5.4.1 + react-promise-suspense@0.3.4: + dependencies: + fast-deep-equal: 2.0.1 + react-remove-scroll-bar@2.3.4(@types/react@18.0.27)(react@18.2.0): dependencies: react: 18.2.0 @@ -9855,9 +9879,12 @@ snapshots: require-main-filename@2.0.0: {} - resend@3.2.0: + resend@4.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: - '@react-email/render': 0.0.12 + '@react-email/render': 0.0.17(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + transitivePeerDependencies: + - react + - react-dom resolve-from@4.0.0: {} @@ -10221,11 +10248,11 @@ snapshots: dependencies: '@babel/runtime': 7.23.6 - tailwindcss-animate@1.0.6(tailwindcss@3.4.1(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3))): + tailwindcss-animate@1.0.6(tailwindcss@3.4.1(ts-node@10.9.1(@types/node@22.5.4)(typescript@5.5.4))): dependencies: - tailwindcss: 3.4.1(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3)) + tailwindcss: 3.4.1(ts-node@10.9.1(@types/node@22.5.4)(typescript@5.5.4)) - tailwindcss@3.4.1(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3)): + tailwindcss@3.4.1(ts-node@10.9.1(@types/node@22.5.4)(typescript@5.5.4)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -10244,7 +10271,7 @@ snapshots: postcss: 8.4.31 postcss-import: 15.1.0(postcss@8.4.31) postcss-js: 4.0.1(postcss@8.4.31) - postcss-load-config: 4.0.1(postcss@8.4.31)(ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3)) + postcss-load-config: 4.0.1(postcss@8.4.31)(ts-node@10.9.1(@types/node@22.5.4)(typescript@5.5.4)) postcss-nested: 6.0.1(postcss@8.4.31) postcss-selector-parser: 6.0.13 resolve: 1.22.4 @@ -10311,27 +10338,27 @@ snapshots: trough@2.1.0: {} - ts-api-utils@1.3.0(typescript@5.3.3): + ts-api-utils@1.3.0(typescript@5.5.4): dependencies: - typescript: 5.3.3 + typescript: 5.5.4 ts-interface-checker@0.1.13: {} - ts-node@10.9.1(@types/node@20.5.6)(typescript@5.3.3): + ts-node@10.9.1(@types/node@22.5.4)(typescript@5.5.4): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.5.6 + '@types/node': 22.5.4 acorn: 8.10.0 acorn-walk: 8.3.0 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.3.3 + typescript: 5.5.4 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -10404,18 +10431,18 @@ snapshots: is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 - typescript-eslint@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3): + typescript-eslint@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4): dependencies: - '@typescript-eslint/eslint-plugin': 8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3))(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) - '@typescript-eslint/parser': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) - '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.3.3) + '@typescript-eslint/eslint-plugin': 8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) + '@typescript-eslint/parser': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) + '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) optionalDependencies: - typescript: 5.3.3 + typescript: 5.5.4 transitivePeerDependencies: - eslint - supports-color - typescript@5.3.3: {} + typescript@5.5.4: {} unbox-primitive@1.0.2: dependencies: @@ -10426,6 +10453,8 @@ snapshots: undici-types@5.26.5: {} + undici-types@6.19.8: {} + unified@10.1.2: dependencies: '@types/unist': 2.0.8 From 5154db81345bf066422c5a29e43a486c275956f6 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 5 Sep 2024 11:33:37 +0200 Subject: [PATCH 210/326] :wrench: create config file for deploy to railway --- nixpacks.toml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 nixpacks.toml diff --git a/nixpacks.toml b/nixpacks.toml new file mode 100644 index 000000000..7d216283e --- /dev/null +++ b/nixpacks.toml @@ -0,0 +1,2 @@ +[phases.install] + cmds = ["npm install -g corepack", "corepack enable", "corepack prepare pnpm@9.6.0 --activate", "pnpm install"] \ No newline at end of file From 56c5c8965f204496863dec993b72637675df0e8d Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 5 Sep 2024 11:40:22 +0200 Subject: [PATCH 211/326] :recycle: move options in different file --- src/app/api/auth/[...nextauth]/route.ts | 89 +------------------------ src/lib/auth.ts | 89 +++++++++++++++++++++++++ 2 files changed, 90 insertions(+), 88 deletions(-) create mode 100644 src/lib/auth.ts diff --git a/src/app/api/auth/[...nextauth]/route.ts b/src/app/api/auth/[...nextauth]/route.ts index d4b540642..7053c6ec4 100644 --- a/src/app/api/auth/[...nextauth]/route.ts +++ b/src/app/api/auth/[...nextauth]/route.ts @@ -1,93 +1,6 @@ -import { PrismaAdapter } from '@next-auth/prisma-adapter'; import NextAuth from 'next-auth'; -import EmailProvider from 'next-auth/providers/email'; -import GoogleProvider from 'next-auth/providers/google'; -import { sendVerificationRequest } from '@/lib'; -import { Routes } from '@/utils'; -import prisma from 'lib/prisma'; - -import type { NextAuthOptions } from 'next-auth'; - -export const authOptions: NextAuthOptions = { - adapter: PrismaAdapter(prisma), - providers: [ - GoogleProvider({ - clientId: process.env.GOOGLE_CLIENT_ID, - clientSecret: process.env.GOOGLE_CLIENT_SECRET, - allowDangerousEmailAccountLinking: true, - profile(profile) { - return { - id: profile.sub, - name: profile.name, - email: profile.email, - image: profile.picture, - }; - }, - }), - EmailProvider({ - server: { - host: process.env.EMAIL_SERVER_HOST, - port: process.env.EMAIL_SERVER_PORT, - auth: { - user: process.env.EMAIL_SERVER_USER, - pass: process.env.EMAIL_SERVER_PASSWORD, - }, - }, - from: process.env.EMAIL_FROM, - sendVerificationRequest, - }), - ], - pages: { - signIn: Routes.SITE.LOGIN, - error: Routes.SITE.LOGIN, - }, - callbacks: { - async signIn({ profile, account, user }) { - if (!account || !user) { - return false; - } - const userExists = await prisma.user.findUnique({ - where: { email: user?.email }, - }); - if (!userExists) { - return false; - } - if ( - account?.provider === 'google' && - (!userExists.name || !userExists.image) - ) { - await prisma.user.update({ - where: { id: userExists?.id }, - data: { - name: profile?.name, - image: profile?.picture, - }, - }); - } - return true; - }, - async redirect({ baseUrl }) { - return baseUrl; - }, - async jwt({ token, account, user }) { - if (account) { - token.accessToken = account.access_token; - token.id = user.id; - } - return token; - }, - async session({ session, token }) { - session.user.id = token.id as string; - return session; - }, - }, - session: { - strategy: `jwt`, - maxAge: 60 * 60, - }, - secret: process.env.NEXTAUTH_SECRET, -}; +import { authOptions } from '@/lib/auth.js'; const handler = NextAuth(authOptions); diff --git a/src/lib/auth.ts b/src/lib/auth.ts new file mode 100644 index 000000000..e9266ac6d --- /dev/null +++ b/src/lib/auth.ts @@ -0,0 +1,89 @@ +import { PrismaAdapter } from '@next-auth/prisma-adapter'; +import EmailProvider from 'next-auth/providers/email'; +import GoogleProvider from 'next-auth/providers/google'; + +import { sendVerificationRequest } from '@/lib'; +import { Routes } from '@/utils'; +import prisma from 'lib/prisma'; + +import type { NextAuthOptions } from 'next-auth'; + +export const authOptions: NextAuthOptions = { + adapter: PrismaAdapter(prisma), + providers: [ + GoogleProvider({ + clientId: process.env.GOOGLE_CLIENT_ID, + clientSecret: process.env.GOOGLE_CLIENT_SECRET, + allowDangerousEmailAccountLinking: true, + profile(profile) { + return { + id: profile.sub, + name: profile.name, + email: profile.email, + image: profile.picture, + }; + }, + }), + EmailProvider({ + server: { + host: process.env.EMAIL_SERVER_HOST, + port: process.env.EMAIL_SERVER_PORT, + auth: { + user: process.env.EMAIL_SERVER_USER, + pass: process.env.EMAIL_SERVER_PASSWORD, + }, + }, + from: process.env.EMAIL_FROM, + sendVerificationRequest, + }), + ], + pages: { + signIn: Routes.SITE.LOGIN, + error: Routes.SITE.LOGIN, + }, + callbacks: { + async signIn({ profile, account, user }) { + if (!account || !user) { + return false; + } + const userExists = await prisma.user.findUnique({ + where: { email: user?.email }, + }); + if (!userExists) { + return false; + } + if ( + account?.provider === 'google' && + (!userExists.name || !userExists.image) + ) { + await prisma.user.update({ + where: { id: userExists?.id }, + data: { + name: profile?.name, + image: profile?.picture, + }, + }); + } + return true; + }, + async redirect({ baseUrl }) { + return baseUrl; + }, + async jwt({ token, account, user }) { + if (account) { + token.accessToken = account.access_token; + token.id = user.id; + } + return token; + }, + async session({ session, token }) { + session.user.id = token.id as string; + return session; + }, + }, + session: { + strategy: `jwt`, + maxAge: 60 * 60, + }, + secret: process.env.NEXTAUTH_SECRET, +}; From b094d963d42086644d4d644d50f89e76f52c3960 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 5 Sep 2024 11:52:06 +0200 Subject: [PATCH 212/326] :pencil2: fix import file name --- src/app/api/auth/[...nextauth]/route.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/api/auth/[...nextauth]/route.ts b/src/app/api/auth/[...nextauth]/route.ts index 7053c6ec4..5d00646ba 100644 --- a/src/app/api/auth/[...nextauth]/route.ts +++ b/src/app/api/auth/[...nextauth]/route.ts @@ -1,6 +1,6 @@ import NextAuth from 'next-auth'; -import { authOptions } from '@/lib/auth.js'; +import { authOptions } from '@/lib/auth'; const handler = NextAuth(authOptions); From a0389a7a308659cc0ae997d31f29985ca69c5bd3 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 5 Sep 2024 12:52:21 +0200 Subject: [PATCH 213/326] :pencil2: fix wrong import path for authOptions --- src/actions/create-users/action.ts | 2 +- src/actions/get-me/index.ts | 2 +- src/actions/get-signed-logo/index.ts | 4 ++-- src/lib/safe-actions.ts | 3 ++- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/actions/create-users/action.ts b/src/actions/create-users/action.ts index 6a03b02dd..df85c3a88 100644 --- a/src/actions/create-users/action.ts +++ b/src/actions/create-users/action.ts @@ -3,7 +3,7 @@ import { revalidatePath } from 'next/cache'; import { getServerSession } from 'next-auth'; -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import { authOptions } from '@/lib/auth'; import prisma from 'lib/prisma'; import 'server-only'; diff --git a/src/actions/get-me/index.ts b/src/actions/get-me/index.ts index a23960b7f..f2850dc17 100644 --- a/src/actions/get-me/index.ts +++ b/src/actions/get-me/index.ts @@ -4,7 +4,7 @@ import { cache } from 'react'; import { getServerSession } from 'next-auth'; -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import { authOptions } from '@/lib/auth'; import prisma from 'lib/prisma'; import type { Me } from '@/types'; diff --git a/src/actions/get-signed-logo/index.ts b/src/actions/get-signed-logo/index.ts index 898dcd455..3b85d94d0 100644 --- a/src/actions/get-signed-logo/index.ts +++ b/src/actions/get-signed-logo/index.ts @@ -3,9 +3,9 @@ import { Storage } from '@google-cloud/storage'; import { getServerSession } from 'next-auth'; -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; - import 'server-only'; +import { authOptions } from '@/lib/auth'; + import { upsertLogoSchema } from './schema'; const bucketName = 'faqmaker'; diff --git a/src/lib/safe-actions.ts b/src/lib/safe-actions.ts index fa3115325..46f292603 100644 --- a/src/lib/safe-actions.ts +++ b/src/lib/safe-actions.ts @@ -3,7 +3,8 @@ import { createSafeActionClient } from 'next-safe-action'; import { z } from 'zod'; import { getUserId } from '@/actions/get-me'; -import { authOptions } from '@/app/api/auth/[...nextauth]/route'; + +import { authOptions } from './auth'; export class ActionError extends Error {} From 0f1a03fd3747605152b9fc4f0c211707d92c8155 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 5 Sep 2024 15:19:41 +0200 Subject: [PATCH 214/326] :bug: fix returned function name --- src/app/api/stripe/webhooks/route.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/api/stripe/webhooks/route.ts b/src/app/api/stripe/webhooks/route.ts index 1ef85dbfa..be1cdbbeb 100644 --- a/src/app/api/stripe/webhooks/route.ts +++ b/src/app/api/stripe/webhooks/route.ts @@ -14,7 +14,7 @@ const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { }); const webhookSecret = process.env.STRIPE_WEBHOOK_SECRET!; -export default async function handler(req: NextRequest) { +export default async function POST(req: NextRequest) { const body = await req.text(); const signature = headers().get('Stripe-Signature') as string; From 9022e95fc3833c1b1519be1f37221e70b36f67f8 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 5 Sep 2024 15:20:19 +0200 Subject: [PATCH 215/326] :goal_net: use throw error --- src/actions/get-nodes/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/actions/get-nodes/index.ts b/src/actions/get-nodes/index.ts index 610475591..5f7238706 100644 --- a/src/actions/get-nodes/index.ts +++ b/src/actions/get-nodes/index.ts @@ -50,7 +50,7 @@ export const getPaginatedNodes = cache( export const getAllNodes = cache(async (tenantId: string) => { try { if (!tenantId) { - return { error: 'Tenant not found' }; + throw new Error('Tenant not found'); } const nodes = await prisma.node.findMany({ where: { tenantId }, @@ -62,6 +62,6 @@ export const getAllNodes = cache(async (tenantId: string) => { return nodes; } catch { - return { error: 'Error fetching nodes' }; + throw new Error('Error fetching nodes'); } }); From 26e8fe6d7ed8e5fa9e844c6d97bc237db063ed86 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 5 Sep 2024 15:20:48 +0200 Subject: [PATCH 216/326] :goal_net: return error if no tenant found --- src/app/api/stripe/billing/route.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/app/api/stripe/billing/route.ts b/src/app/api/stripe/billing/route.ts index 62f220f5f..e4ae96ab4 100644 --- a/src/app/api/stripe/billing/route.ts +++ b/src/app/api/stripe/billing/route.ts @@ -27,13 +27,17 @@ export async function POST(req: NextRequest) { ); } const { tenantId } = body; - const { customerId, plan } = await prisma.tenant.findUnique({ + const tenant = await prisma.tenant.findUnique({ where: { id: tenantId }, select: { customerId: true, plan: true, }, }); + if (!tenant) { + return NextResponse.json({ error: 'Tenant not found' }, { status: 400 }); + } + const { customerId, plan } = tenant; const usersCount = await prisma.user.count({ where: { tenantId }, }); From ab9e8a6d42133254ad614201c7c08c836701fa2f Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 5 Sep 2024 15:27:55 +0200 Subject: [PATCH 217/326] :pencil2: remove default --- src/app/api/stripe/webhooks/route.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/api/stripe/webhooks/route.ts b/src/app/api/stripe/webhooks/route.ts index be1cdbbeb..6a6cb5e15 100644 --- a/src/app/api/stripe/webhooks/route.ts +++ b/src/app/api/stripe/webhooks/route.ts @@ -14,7 +14,7 @@ const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { }); const webhookSecret = process.env.STRIPE_WEBHOOK_SECRET!; -export default async function POST(req: NextRequest) { +export async function POST(req: NextRequest) { const body = await req.text(); const signature = headers().get('Stripe-Signature') as string; From b3b78619157a7ba976a18214fb4e616766ed6637 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 5 Sep 2024 16:03:01 +0200 Subject: [PATCH 218/326] :bug: fix problem with props passed to layout --- src/app/register/confirm/page.tsx | 7 ++++--- src/app/register/layout.tsx | 13 ++++--------- src/app/register/page.tsx | 7 ++++--- src/app/register/plan/page.tsx | 7 ++++--- src/app/register/user/page.tsx | 7 ++++--- src/context/authLayoutContext.tsx | 32 +++++++++++++++++++++++++++++++ src/context/index.ts | 1 + 7 files changed, 53 insertions(+), 21 deletions(-) create mode 100644 src/context/authLayoutContext.tsx create mode 100644 src/context/index.ts diff --git a/src/app/register/confirm/page.tsx b/src/app/register/confirm/page.tsx index 6f8051651..746febbaa 100644 --- a/src/app/register/confirm/page.tsx +++ b/src/app/register/confirm/page.tsx @@ -1,10 +1,11 @@ +import { AuthLayoutProvider } from '@/context'; + import Form from './form'; -import AuthLayout from '../layout'; export default function Page() { return ( - + - + ); } diff --git a/src/app/register/layout.tsx b/src/app/register/layout.tsx index 53c8292bd..b374401c7 100644 --- a/src/app/register/layout.tsx +++ b/src/app/register/layout.tsx @@ -1,15 +1,13 @@ import type { ReactNode } from 'react'; import { Stepper } from '@/components'; +import { useAuthLayout } from '@/context'; import { ThemeToggle } from '@/modules'; import type { TSteps } from '@/types'; type Props = { children: ReactNode; - hasBackground?: boolean; - currentStep?: number; - noStepper?: boolean; }; const steps: TSteps[] = [ @@ -18,12 +16,9 @@ const steps: TSteps[] = [ { id: 3, label: 'Confirm' }, ]; -export default function AuthLayout({ - children, - hasBackground, - currentStep, - noStepper, -}: Props) { +export default function Layout({ children }: Props) { + const { hasBackground, currentStep, noStepper } = useAuthLayout(); + return (
    diff --git a/src/app/register/page.tsx b/src/app/register/page.tsx index 25dd691ab..fbccdc7c4 100644 --- a/src/app/register/page.tsx +++ b/src/app/register/page.tsx @@ -1,10 +1,11 @@ +import { AuthLayoutProvider } from '@/context'; + import Form from './form'; -import AuthLayout from './layout'; export default function Page() { return ( - + - + ); } diff --git a/src/app/register/plan/page.tsx b/src/app/register/plan/page.tsx index 941df3dd6..8dab21bfa 100644 --- a/src/app/register/plan/page.tsx +++ b/src/app/register/plan/page.tsx @@ -1,10 +1,11 @@ +import { AuthLayoutProvider } from '@/context'; + import Form from './form'; -import AuthLayout from '../layout'; export default function Page() { return ( - + - + ); } diff --git a/src/app/register/user/page.tsx b/src/app/register/user/page.tsx index d9bb88186..c1d21c48c 100644 --- a/src/app/register/user/page.tsx +++ b/src/app/register/user/page.tsx @@ -1,10 +1,11 @@ +import { AuthLayoutProvider } from '@/context'; + import Form from './form'; -import AuthLayout from '../layout'; export default function Page() { return ( - + - + ); } diff --git a/src/context/authLayoutContext.tsx b/src/context/authLayoutContext.tsx new file mode 100644 index 000000000..e19bffe4b --- /dev/null +++ b/src/context/authLayoutContext.tsx @@ -0,0 +1,32 @@ +'use client'; + +import { createContext, useContext, ReactNode } from 'react'; + +type AuthLayoutContextType = { + hasBackground?: boolean; + currentStep?: number; + noStepper?: boolean; +}; + +const AuthLayoutContext = createContext({}); + +export const useAuthLayout = () => useContext(AuthLayoutContext); + +type AuthLayoutProviderProps = AuthLayoutContextType & { + children: ReactNode; +}; + +export const AuthLayoutProvider = ({ + children, + hasBackground, + currentStep, + noStepper, +}: AuthLayoutProviderProps) => { + return ( + + {children} + + ); +}; diff --git a/src/context/index.ts b/src/context/index.ts new file mode 100644 index 000000000..1842a9d3c --- /dev/null +++ b/src/context/index.ts @@ -0,0 +1 @@ +export * from './authLayoutContext'; From 17fc76d7634afabb0e5182a720927441ae94059d Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 5 Sep 2024 16:03:57 +0200 Subject: [PATCH 219/326] :wrench: modify creation of prisma client --- lib/prisma.ts | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/lib/prisma.ts b/lib/prisma.ts index 580e54a01..6d1f46c61 100644 --- a/lib/prisma.ts +++ b/lib/prisma.ts @@ -1,16 +1,15 @@ import { PrismaClient } from '@prisma/client'; -let prisma: PrismaClient; +const prismaClientSingleton = () => { + return new PrismaClient(); +}; -if (typeof window === 'undefined') { - if (process.env.NODE_ENV === 'production') { - prisma = new PrismaClient(); - } else { - if (!global.prisma) { - global.prisma = new PrismaClient(); - } - prisma = global.prisma; - } -} +declare const globalThis: { + prismaGlobal: ReturnType; +} & typeof global; + +const prisma = globalThis.prismaGlobal ?? prismaClientSingleton(); export default prisma; + +if (process.env.NODE_ENV !== 'production') globalThis.prismaGlobal = prisma; From 1d20b0988ef2aa3f964da6127d08d43167308a6a Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Fri, 6 Sep 2024 16:51:32 +0200 Subject: [PATCH 220/326] :recycle: refacto zod schema for delete tenant actions --- src/actions/delete-tenant/action.ts | 106 ++++++++---------------- src/actions/delete-tenant/schema.ts | 10 ++- src/modules/settings/payment/Delete.tsx | 7 +- 3 files changed, 45 insertions(+), 78 deletions(-) diff --git a/src/actions/delete-tenant/action.ts b/src/actions/delete-tenant/action.ts index a6b422c8d..a4a93f266 100644 --- a/src/actions/delete-tenant/action.ts +++ b/src/actions/delete-tenant/action.ts @@ -4,85 +4,51 @@ import { Storage } from '@google-cloud/storage'; import { redirect } from 'next/navigation'; import Stripe from 'stripe'; +import { authActionClient } from '@/lib/safe-actions'; import { Routes, STRIPE_VERSION } from '@/utils'; import prisma from 'lib/prisma'; import 'server-only'; +import { deleteTenantSchema } from './schema'; const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { apiVersion: STRIPE_VERSION, }); -// export const deleteTenant = authActionClient -// .metadata({ actionName: 'deleteTenant' }) -// .schema(deleteTenantSchema(data.company)) -// .action(async ({ parsedInput: { id, company } }) => { -// const tenant = await prisma.tenant.findUnique({ -// where: { id, company }, -// select: { -// customerId: true, -// logo: true, -// }, -// }); -// const { customerId, logo } = tenant; -// if (logo) { -// const storage = new Storage({ -// projectId: process.env.PROJECT_ID, -// credentials: { -// client_email: process.env.CLIENT_EMAIL, -// private_key: process.env.PRIVATE_KEY.replace(/\\n/g, '\n'), -// }, -// }); -// const bucketName = 'faqmaker'; -// const bucket = storage.bucket(bucketName); -// const fileName = logo.replace( -// 'https://storage.googleapis.com/faqmaker/', -// '', -// ); -// bucket.file(fileName).delete(); -// } -// await prisma.tenant.delete({ -// where: { id, company }, -// }); -// if (customerId) { -// await stripe.customers.del(customerId); -// } -// redirect(Routes.SITE.LOGIN); -// return { message: 'Account deleted successfully' }; -// }); - -export const deleteTenant = async (data) => { - const { id, company } = data; - const tenant = await prisma.tenant.findUnique({ - where: { id, company }, - select: { - customerId: true, - logo: true, - }, - }); - const { customerId, logo } = tenant; - if (logo) { - const storage = new Storage({ - projectId: process.env.PROJECT_ID, - credentials: { - client_email: process.env.CLIENT_EMAIL, - private_key: process.env.PRIVATE_KEY.replace(/\\n/g, '\n'), +export const deleteTenant = authActionClient + .metadata({ actionName: 'deleteTenant' }) + .schema(deleteTenantSchema) + .action(async ({ parsedInput: { id, company } }) => { + const tenant = await prisma.tenant.findUnique({ + where: { id, company }, + select: { + customerId: true, + logo: true, }, }); - const bucketName = 'faqmaker'; - const bucket = storage.bucket(bucketName); - const fileName = logo.replace( - 'https://storage.googleapis.com/faqmaker/', - '', - ); - bucket.file(fileName).delete(); - } - await prisma.tenant.delete({ - where: { id, company }, + const { customerId, logo } = tenant; + if (logo) { + const storage = new Storage({ + projectId: process.env.PROJECT_ID, + credentials: { + client_email: process.env.CLIENT_EMAIL, + private_key: process.env.PRIVATE_KEY.replace(/\\n/g, '\n'), + }, + }); + const bucketName = 'faqmaker'; + const bucket = storage.bucket(bucketName); + const fileName = logo.replace( + 'https://storage.googleapis.com/faqmaker/', + '', + ); + bucket.file(fileName).delete(); + } + await prisma.tenant.delete({ + where: { id, company }, + }); + if (customerId) { + await stripe.customers.del(customerId); + } + redirect(Routes.SITE.LOGIN); + return { message: 'Account deleted successfully' }; }); - if (customerId) { - await stripe.customers.del(customerId); - } - redirect(Routes.SITE.LOGIN); - return { message: 'Account deleted successfully' }; -}; diff --git a/src/actions/delete-tenant/schema.ts b/src/actions/delete-tenant/schema.ts index eed4dd979..95d121149 100644 --- a/src/actions/delete-tenant/schema.ts +++ b/src/actions/delete-tenant/schema.ts @@ -1,8 +1,12 @@ import { z } from 'zod'; -export const deleteTenantSchema = (company: string) => - z.object({ - text: z.literal(`DELETE ${company}`), +export const deleteTenantSchema = z + .object({ + text: z.string().trim().min(1), company: z.string(), id: z.string().cuid2(), + }) + .refine((data) => data.text === `DELETE ${data.company}`, { + message: 'Confirmation text does not match expected format', + path: ['text'], }); diff --git a/src/modules/settings/payment/Delete.tsx b/src/modules/settings/payment/Delete.tsx index e9ca1c745..154ed3567 100644 --- a/src/modules/settings/payment/Delete.tsx +++ b/src/modules/settings/payment/Delete.tsx @@ -26,11 +26,9 @@ type Props = { tenantId: string; company: string; }; +type Schema = z.infer; export const Delete = ({ tenantId, company }: Props) => { - const deleteSchema = deleteTenantSchema(company); - type Schema = z.infer; - const [disabled, setDisabled] = useState(true); const { @@ -39,7 +37,7 @@ export const Delete = ({ tenantId, company }: Props) => { setValue, formState: { isSubmitting, isValid }, } = useForm({ - resolver: zodResolver(deleteSchema), + resolver: zodResolver(deleteTenantSchema), mode: 'onBlur', defaultValues: { text: '', @@ -93,7 +91,6 @@ export const Delete = ({ tenantId, company }: Props) => { className="lowercase" style={{ fontVariant: 'small-caps' }} type="button" - // @ts-expect-error Value of text must always be DELETE {company name} according to Zod schema onClick={() => setValue('text', '')} > Cancel From 4c5aa2b0fb2569fbecc7df0522e50def35212f6e Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Fri, 6 Sep 2024 16:56:57 +0200 Subject: [PATCH 221/326] :fire: remove optional for usersArray --- src/actions/create-users/schema.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/actions/create-users/schema.ts b/src/actions/create-users/schema.ts index 49664746b..b46ee9a4c 100644 --- a/src/actions/create-users/schema.ts +++ b/src/actions/create-users/schema.ts @@ -3,5 +3,5 @@ import { z } from 'zod'; export const createUsersSchema = z.object({ tenantId: z.string().cuid2(), usersCount: z.number().min(0), - usersArray: z.array(z.string().email()).optional(), + usersArray: z.array(z.string().email()), }); From 1ac8c67af0fe4cdc6c40244fda0e6acd865f2d4f Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 9 Sep 2024 16:01:20 +0200 Subject: [PATCH 222/326] :hammer: remove unneeded code --- .husky/pre-commit | 3 --- 1 file changed, 3 deletions(-) diff --git a/.husky/pre-commit b/.husky/pre-commit index f1e568560..8b3e5b645 100644 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1 @@ -#!/usr/bin/env sh -. "$(dirname -- "$0")/_/husky.sh" - pnpm dlx lint-staged From f5a41e996fee3136dd20a660f05632e40cb9bb07 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 9 Sep 2024 16:08:44 +0200 Subject: [PATCH 223/326] :fire: remove import of server-only --- src/actions/create-answer/action.ts | 1 - src/actions/create-favorite/action.ts | 1 - src/actions/create-node/action.ts | 1 - src/actions/create-pin/action.ts | 1 - src/actions/create-tag/action.ts | 1 - src/actions/create-tenant/action.ts | 1 - src/actions/create-user/action.ts | 1 - src/actions/create-users/action.ts | 1 - src/actions/delete-favorite/action.ts | 1 - src/actions/delete-pin/action.ts | 1 - src/actions/delete-tag/action.ts | 1 - src/actions/delete-tenant/action.ts | 2 -- src/actions/delete-user/action.ts | 1 - src/actions/get-signed-logo/index.ts | 1 - src/actions/update-answer/action.ts | 1 - src/actions/update-logo/action.ts | 1 - src/actions/update-node/action.ts | 1 - src/actions/update-tenant/action.ts | 1 - src/actions/update-user/action.ts | 1 - src/actions/upsert-integrations/action.ts | 1 - 20 files changed, 21 deletions(-) diff --git a/src/actions/create-answer/action.ts b/src/actions/create-answer/action.ts index 4f81ba456..276f8d610 100644 --- a/src/actions/create-answer/action.ts +++ b/src/actions/create-answer/action.ts @@ -7,7 +7,6 @@ import { authActionClient } from '@/lib/safe-actions'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; -import 'server-only'; import { createAnswerSchema } from './schema'; export const createAnswer = authActionClient diff --git a/src/actions/create-favorite/action.ts b/src/actions/create-favorite/action.ts index 6d969ab78..c7f9eefdd 100644 --- a/src/actions/create-favorite/action.ts +++ b/src/actions/create-favorite/action.ts @@ -6,7 +6,6 @@ import { authActionClient } from '@/lib/safe-actions'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; -import 'server-only'; import { createFavoriteSchema } from './schema'; export const createFavorite = authActionClient diff --git a/src/actions/create-node/action.ts b/src/actions/create-node/action.ts index 7d6b975da..a6d27abec 100644 --- a/src/actions/create-node/action.ts +++ b/src/actions/create-node/action.ts @@ -9,7 +9,6 @@ import { ActionError, authActionClient } from '@/lib/safe-actions'; import { Routes, dateOptions, timeOptions } from '@/utils'; import prisma from 'lib/prisma'; -import 'server-only'; import { createNodeSchema, slackIntegrationSchema } from './schema'; export const slackNotification = async (body) => { diff --git a/src/actions/create-pin/action.ts b/src/actions/create-pin/action.ts index b2706fb45..612d3ee91 100644 --- a/src/actions/create-pin/action.ts +++ b/src/actions/create-pin/action.ts @@ -6,7 +6,6 @@ import { ActionError, authActionClient } from '@/lib/safe-actions'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; -import 'server-only'; import { createPinSchema } from './schema'; export const createPin = authActionClient diff --git a/src/actions/create-tag/action.ts b/src/actions/create-tag/action.ts index 36b9d876e..bda045ed9 100644 --- a/src/actions/create-tag/action.ts +++ b/src/actions/create-tag/action.ts @@ -6,7 +6,6 @@ import { ActionError, authActionClient } from '@/lib/safe-actions'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; -import 'server-only'; import { createTagSchema } from './schema'; export const createTag = authActionClient diff --git a/src/actions/create-tenant/action.ts b/src/actions/create-tenant/action.ts index f9a1a712c..af9a41964 100644 --- a/src/actions/create-tenant/action.ts +++ b/src/actions/create-tenant/action.ts @@ -7,7 +7,6 @@ import { ActionError, actionClient } from '@/lib/safe-actions'; import { STRIPE_VERSION } from '@/utils'; import prisma from 'lib/prisma'; -import 'server-only'; import { createTenantSchema } from './schema'; const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { diff --git a/src/actions/create-user/action.ts b/src/actions/create-user/action.ts index d749e2945..e205bdb72 100644 --- a/src/actions/create-user/action.ts +++ b/src/actions/create-user/action.ts @@ -8,7 +8,6 @@ import { Routes } from '@/utils'; import prisma from 'lib/prisma'; // import { NewUserEmailTemplate } from '@/components'; -import 'server-only'; import { createUserSchema } from './schema'; // const resend = new Resend(process.env.RESEND_API_KEY); diff --git a/src/actions/create-users/action.ts b/src/actions/create-users/action.ts index df85c3a88..87a42f3aa 100644 --- a/src/actions/create-users/action.ts +++ b/src/actions/create-users/action.ts @@ -6,7 +6,6 @@ import { getServerSession } from 'next-auth'; import { authOptions } from '@/lib/auth'; import prisma from 'lib/prisma'; -import 'server-only'; import { createUsersSchema } from './schema'; type CreateUsersData = { diff --git a/src/actions/delete-favorite/action.ts b/src/actions/delete-favorite/action.ts index 98111c28f..2f0d49bff 100644 --- a/src/actions/delete-favorite/action.ts +++ b/src/actions/delete-favorite/action.ts @@ -6,7 +6,6 @@ import { authActionClient } from '@/lib/safe-actions'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; -import 'server-only'; import { deleteFavoriteSchema } from './schema'; export const deleteFavorite = authActionClient diff --git a/src/actions/delete-pin/action.ts b/src/actions/delete-pin/action.ts index 02f07f63e..d8aaeb5fd 100644 --- a/src/actions/delete-pin/action.ts +++ b/src/actions/delete-pin/action.ts @@ -6,7 +6,6 @@ import { authActionClient } from '@/lib/safe-actions'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; -import 'server-only'; import { deletePinSchema } from './schema'; export const deletePin = authActionClient diff --git a/src/actions/delete-tag/action.ts b/src/actions/delete-tag/action.ts index 4a3ce3645..a3456e92b 100644 --- a/src/actions/delete-tag/action.ts +++ b/src/actions/delete-tag/action.ts @@ -6,7 +6,6 @@ import { authActionClient } from '@/lib/safe-actions'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; -import 'server-only'; import { deleteTagSchema } from './schema'; export const deleteTag = authActionClient diff --git a/src/actions/delete-tenant/action.ts b/src/actions/delete-tenant/action.ts index a6b422c8d..9c687a2d9 100644 --- a/src/actions/delete-tenant/action.ts +++ b/src/actions/delete-tenant/action.ts @@ -7,8 +7,6 @@ import Stripe from 'stripe'; import { Routes, STRIPE_VERSION } from '@/utils'; import prisma from 'lib/prisma'; -import 'server-only'; - const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { apiVersion: STRIPE_VERSION, }); diff --git a/src/actions/delete-user/action.ts b/src/actions/delete-user/action.ts index 89dabaebc..bbb36065d 100644 --- a/src/actions/delete-user/action.ts +++ b/src/actions/delete-user/action.ts @@ -6,7 +6,6 @@ import { authActionClient } from '@/lib/safe-actions'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; -import 'server-only'; import { deleteUserSchema } from './schema'; export const deleteUser = authActionClient diff --git a/src/actions/get-signed-logo/index.ts b/src/actions/get-signed-logo/index.ts index 3b85d94d0..cfb7ff829 100644 --- a/src/actions/get-signed-logo/index.ts +++ b/src/actions/get-signed-logo/index.ts @@ -3,7 +3,6 @@ import { Storage } from '@google-cloud/storage'; import { getServerSession } from 'next-auth'; -import 'server-only'; import { authOptions } from '@/lib/auth'; import { upsertLogoSchema } from './schema'; diff --git a/src/actions/update-answer/action.ts b/src/actions/update-answer/action.ts index cfd610c03..3defce2fd 100644 --- a/src/actions/update-answer/action.ts +++ b/src/actions/update-answer/action.ts @@ -7,7 +7,6 @@ import { authActionClient } from '@/lib/safe-actions'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; -import 'server-only'; import { updateAnswerSchema } from './schema'; export const updateAnswer = authActionClient diff --git a/src/actions/update-logo/action.ts b/src/actions/update-logo/action.ts index dd658ca90..208342360 100644 --- a/src/actions/update-logo/action.ts +++ b/src/actions/update-logo/action.ts @@ -8,7 +8,6 @@ import { authActionClient } from '@/lib/safe-actions'; import { Routes, bucketName } from '@/utils'; import prisma from 'lib/prisma'; -import 'server-only'; import { updateLogoSchema } from './schema'; export const updateLogo = authActionClient diff --git a/src/actions/update-node/action.ts b/src/actions/update-node/action.ts index 8bb969f5d..7c4b865ba 100644 --- a/src/actions/update-node/action.ts +++ b/src/actions/update-node/action.ts @@ -8,7 +8,6 @@ import { ActionError, authActionClient } from '@/lib/safe-actions'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; -import 'server-only'; import { updateNodeSchema } from './schema'; export const updateNode = authActionClient diff --git a/src/actions/update-tenant/action.ts b/src/actions/update-tenant/action.ts index 93ff88abc..66a6e995c 100644 --- a/src/actions/update-tenant/action.ts +++ b/src/actions/update-tenant/action.ts @@ -7,7 +7,6 @@ import { authActionClient } from '@/lib/safe-actions'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; -import 'server-only'; import { updateTenantSchema } from './schema'; export const updateTenant = authActionClient diff --git a/src/actions/update-user/action.ts b/src/actions/update-user/action.ts index 777ee9924..67ea09a77 100644 --- a/src/actions/update-user/action.ts +++ b/src/actions/update-user/action.ts @@ -6,7 +6,6 @@ import { authActionClient } from '@/lib/safe-actions'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; -import 'server-only'; import { updateUserSchema } from './schema'; export const updateUser = authActionClient diff --git a/src/actions/upsert-integrations/action.ts b/src/actions/upsert-integrations/action.ts index 2f0a20458..422d8cdb1 100644 --- a/src/actions/upsert-integrations/action.ts +++ b/src/actions/upsert-integrations/action.ts @@ -7,7 +7,6 @@ import { authActionClient } from '@/lib/safe-actions'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; -import 'server-only'; import { upsertIntegrationsSchema } from './schema'; export const upsertIntegrations = authActionClient From 81819163f211036b5c08dd8551156f21aabb2531 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 9 Sep 2024 16:30:31 +0200 Subject: [PATCH 224/326] :heavy_minus_sign: remove changesets --- .changeset/README.md | 8 - .changeset/config.json | 11 - package.json | 1 - pnpm-lock.yaml | 1094 +--------------------------------------- 4 files changed, 1 insertion(+), 1113 deletions(-) delete mode 100644 .changeset/README.md delete mode 100644 .changeset/config.json diff --git a/.changeset/README.md b/.changeset/README.md deleted file mode 100644 index e5b6d8d6a..000000000 --- a/.changeset/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Changesets - -Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works -with multi-package repos, or single-package repos to help you version and publish your code. You can -find the full documentation for it [in our repository](https://github.com/changesets/changesets) - -We have a quick list of common questions to get you started engaging with this project in -[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) diff --git a/.changeset/config.json b/.changeset/config.json deleted file mode 100644 index ab848d1a1..000000000 --- a/.changeset/config.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "$schema": "https://unpkg.com/@changesets/config@2.3.1/schema.json", - "changelog": "@changesets/cli/changelog", - "commit": false, - "fixed": [], - "linked": [], - "access": "restricted", - "baseBranch": "main", - "updateInternalDependencies": "patch", - "ignore": [] -} diff --git a/package.json b/package.json index 6f7d86029..ea4ead21d 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,6 @@ "zod": "^3.22.4" }, "devDependencies": { - "@changesets/cli": "^2.27.1", "@eslint/compat": "^1.1.1", "@eslint/eslintrc": "^3.1.0", "@eslint/js": "^9.9.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a36f567be..0ab1511c7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -147,9 +147,6 @@ importers: specifier: ^3.22.4 version: 3.22.4 devDependencies: - '@changesets/cli': - specifier: ^2.27.1 - version: 2.27.1 '@eslint/compat': specifier: ^1.1.1 version: 1.1.1 @@ -357,58 +354,6 @@ packages: resolution: {integrity: sha512-YSQPHLFtQNE5xN9tHuZnzu8vPr61wVTBZdfv1meex1NBosa4iT05k/Jw06ddJugi4bk7The/oSwQGFcksmEJQg==} engines: {node: '>=6.9.0'} - '@changesets/apply-release-plan@7.0.0': - resolution: {integrity: sha512-vfi69JR416qC9hWmFGSxj7N6wA5J222XNBmezSVATPWDVPIF7gkd4d8CpbEbXmRWbVrkoli3oerGS6dcL/BGsQ==} - - '@changesets/assemble-release-plan@6.0.0': - resolution: {integrity: sha512-4QG7NuisAjisbW4hkLCmGW2lRYdPrKzro+fCtZaILX+3zdUELSvYjpL4GTv0E4aM9Mef3PuIQp89VmHJ4y2bfw==} - - '@changesets/changelog-git@0.2.0': - resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==} - - '@changesets/cli@2.27.1': - resolution: {integrity: sha512-iJ91xlvRnnrJnELTp4eJJEOPjgpF3NOh4qeQehM6Ugiz9gJPRZ2t+TsXun6E3AMN4hScZKjqVXl0TX+C7AB3ZQ==} - hasBin: true - - '@changesets/config@3.0.0': - resolution: {integrity: sha512-o/rwLNnAo/+j9Yvw9mkBQOZySDYyOr/q+wptRLcAVGlU6djOeP9v1nlalbL9MFsobuBVQbZCTp+dIzdq+CLQUA==} - - '@changesets/errors@0.2.0': - resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} - - '@changesets/get-dependents-graph@2.0.0': - resolution: {integrity: sha512-cafUXponivK4vBgZ3yLu944mTvam06XEn2IZGjjKc0antpenkYANXiiE6GExV/yKdsCnE8dXVZ25yGqLYZmScA==} - - '@changesets/get-release-plan@4.0.0': - resolution: {integrity: sha512-9L9xCUeD/Tb6L/oKmpm8nyzsOzhdNBBbt/ZNcjynbHC07WW4E1eX8NMGC5g5SbM5z/V+MOrYsJ4lRW41GCbg3w==} - - '@changesets/get-version-range-type@0.4.0': - resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} - - '@changesets/git@3.0.0': - resolution: {integrity: sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==} - - '@changesets/logger@0.1.0': - resolution: {integrity: sha512-pBrJm4CQm9VqFVwWnSqKEfsS2ESnwqwH+xR7jETxIErZcfd1u2zBSqrHbRHR7xjhSgep9x2PSKFKY//FAshA3g==} - - '@changesets/parse@0.4.0': - resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==} - - '@changesets/pre@2.0.0': - resolution: {integrity: sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==} - - '@changesets/read@0.6.0': - resolution: {integrity: sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==} - - '@changesets/types@4.1.0': - resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} - - '@changesets/types@6.0.0': - resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==} - - '@changesets/write@0.3.0': - resolution: {integrity: sha512-slGLb21fxZVUYbyea+94uFiD6ntQW0M2hIKNznFizDhZPDgn2c/fv1UzzlW43RVzh1BEDuIqW6hzlJ1OflNmcw==} - '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} @@ -515,12 +460,6 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@manypkg/find-root@1.1.0': - resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} - - '@manypkg/get-packages@1.1.3': - resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} - '@next-auth/prisma-adapter@1.0.7': resolution: {integrity: sha512-Cdko4KfcmKjsyHFrWwZ//lfLUbcLqlyFqjd/nYE2m3aZ7tjMNUjpks47iw7NTCnXf+5UWz5Ypyt1dSs1EP5QJw==} peerDependencies: @@ -1398,24 +1337,15 @@ packages: '@types/mdast@4.0.3': resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} - '@types/minimist@1.2.2': - resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} - '@types/ms@0.7.31': resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} - '@types/node@12.20.55': - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - '@types/node@20.10.6': resolution: {integrity: sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw==} '@types/node@22.5.4': resolution: {integrity: sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==} - '@types/normalize-package-data@2.4.1': - resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} - '@types/papaparse@5.3.14': resolution: {integrity: sha512-LxJ4iEFcpqc6METwp9f6BV6VVc43m6MfH0VqFosHvrUgfXiFe6ww7R3itkOQ+TCK6Y+Iv/+RnnvtRZnkc5Kc9g==} @@ -1434,9 +1364,6 @@ packages: '@types/scheduler@0.16.3': resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} - '@types/semver@7.5.1': - resolution: {integrity: sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==} - '@types/tough-cookie@4.0.5': resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} @@ -1748,10 +1675,6 @@ packages: ajv@8.12.0: resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - ansi-escapes@5.0.0: resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} engines: {node: '>=12'} @@ -1789,9 +1712,6 @@ packages: arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -1838,10 +1758,6 @@ packages: resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} engines: {node: '>= 0.4'} - arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - arrify@2.0.1: resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} engines: {node: '>=8'} @@ -1908,10 +1824,6 @@ packages: bcp-47-match@2.0.3: resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} - better-path-resolve@1.0.0: - resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} - engines: {node: '>=4'} - bignumber.js@9.1.2: resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} @@ -1932,9 +1844,6 @@ packages: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} - breakword@1.0.6: - resolution: {integrity: sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==} - browserslist@4.21.10: resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -1967,14 +1876,6 @@ packages: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} - camelcase-keys@6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} - engines: {node: '>=8'} - - camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - caniuse-lite@1.0.30001572: resolution: {integrity: sha512-1Pbh5FLmn5y4+QhNyJE9j3/7dK44dGB83/ZMjv/qJk86TvDbjk0LosiZo0i0WB0Vx607qMX9jYrn1VLHCkN4rw==} @@ -2012,9 +1913,6 @@ packages: character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -2023,10 +1921,6 @@ packages: resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} engines: {node: '>=6.0'} - ci-info@3.8.0: - resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} - engines: {node: '>=8'} - class-variance-authority@0.7.0: resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} @@ -2041,17 +1935,6 @@ packages: client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} - - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - - clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - clsx@2.0.0: resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} engines: {node: '>=6'} @@ -2124,9 +2007,6 @@ packages: create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - cross-spawn@5.1.0: - resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} - cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -2142,19 +2022,6 @@ packages: csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} - csv-generate@3.4.3: - resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} - - csv-parse@4.16.3: - resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} - - csv-stringify@5.6.5: - resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} - - csv@5.5.3: - resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} - engines: {node: '>= 0.1.90'} - damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} @@ -2196,14 +2063,6 @@ packages: supports-color: optional: true - decamelize-keys@1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} - engines: {node: '>=0.10.0'} - - decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - decode-named-character-reference@1.0.2: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} @@ -2218,9 +2077,6 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} @@ -2237,10 +2093,6 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - detect-node-es@1.1.0: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} @@ -2326,10 +2178,6 @@ packages: resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} engines: {node: '>=10.13.0'} - enquirer@2.4.1: - resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} - engines: {node: '>=8.6'} - ent@2.2.0: resolution: {integrity: sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==} @@ -2337,9 +2185,6 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - es-abstract@1.23.3: resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} engines: {node: '>= 0.4'} @@ -2542,11 +2387,6 @@ packages: resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - esquery@1.5.0: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} @@ -2591,13 +2431,6 @@ packages: extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - extendable-error@0.1.7: - resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} - - external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - fast-deep-equal@2.0.1: resolution: {integrity: sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==} @@ -2640,10 +2473,6 @@ packages: resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} engines: {node: '>=14.16'} - find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -2652,9 +2481,6 @@ packages: resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - find-yarn-workspace-root2@1.2.16: - resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} - flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} @@ -2692,14 +2518,6 @@ packages: fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - fs-extra@7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} - - fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} - fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -2735,10 +2553,6 @@ packages: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - get-intrinsic@1.2.2: resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} @@ -2819,9 +2633,6 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} @@ -2829,10 +2640,6 @@ packages: resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} engines: {node: '>=14.0.0'} - hard-rejection@2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} - has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} @@ -2935,9 +2742,6 @@ packages: hoist-non-react-statics@3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} - hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - html-to-text@9.0.5: resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} engines: {node: '>=14'} @@ -2963,9 +2767,6 @@ packages: resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} engines: {node: '>= 14'} - human-id@1.0.2: - resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} - human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} @@ -2975,10 +2776,6 @@ packages: engines: {node: '>=18'} hasBin: true - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - ignore@5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} @@ -2998,10 +2795,6 @@ packages: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} - indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} @@ -3035,9 +2828,6 @@ packages: resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} engines: {node: '>= 0.4'} - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-async-function@2.0.0: resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} engines: {node: '>= 0.4'} @@ -3127,10 +2917,6 @@ packages: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} - is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} - is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} @@ -3161,10 +2947,6 @@ packages: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} - is-subdir@1.2.0: - resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} - engines: {node: '>=4'} - is-symbol@1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} @@ -3182,10 +2964,6 @@ packages: is-weakset@2.0.2: resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} - is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} @@ -3230,10 +3008,6 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true @@ -3270,9 +3044,6 @@ packages: engines: {node: '>=6'} hasBin: true - jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - jsx-ast-utils@3.3.5: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} @@ -3286,14 +3057,6 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - - kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - language-subtag-registry@0.3.23: resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} @@ -3327,10 +3090,6 @@ packages: resolution: {integrity: sha512-rJysbR9GKIalhTbVL2tYbF2hVyDnrf7pFUZBwjPaMIdadYHmeT+EVi/Bu3qd7ETQPahTotg2WRCatXwRBW554g==} engines: {node: '>=16.0.0'} - load-yaml-file@0.2.0: - resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} - engines: {node: '>=6'} - loader-runner@4.3.0: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} @@ -3338,10 +3097,6 @@ packages: localforage@1.10.0: resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} - locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -3353,9 +3108,6 @@ packages: lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash.startcase@4.4.0: - resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - log-update@5.0.1: resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -3371,9 +3123,6 @@ packages: resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} engines: {node: 14 || >=16.14} - lru-cache@4.1.5: - resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} - lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -3393,14 +3142,6 @@ packages: make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} - - map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} - markdown-table@3.0.3: resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} @@ -3449,10 +3190,6 @@ packages: mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - meow@6.1.1: - resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} - engines: {node: '>=8'} - merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -3569,10 +3306,6 @@ packages: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} - min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -3592,10 +3325,6 @@ packages: resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} engines: {node: '>=16 || 14 >=14.17'} - minimist-options@4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} - minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -3603,10 +3332,6 @@ packages: resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} engines: {node: '>=16 || 14 >=14.17'} - mixme@0.5.9: - resolution: {integrity: sha512-VC5fg6ySUscaWUpI4gxCBTQMH2RdUpNrk+MsbpCYtIvf9SBJdiUey4qE7BXviJsJR4nDQxCZ+3yaYNW3guz/Pw==} - engines: {node: '>= 8.0.0'} - mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true @@ -3707,9 +3432,6 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} hasBin: true - normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -3796,21 +3518,6 @@ packages: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} - os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - - outdent@0.5.0: - resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} - - p-filter@2.1.0: - resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} - engines: {node: '>=8'} - - p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} @@ -3819,10 +3526,6 @@ packages: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} @@ -3831,14 +3534,6 @@ packages: resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - p-map@2.1.0: - resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} - engines: {node: '>=6'} - - p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - papaparse@5.4.1: resolution: {integrity: sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw==} @@ -3849,10 +3544,6 @@ packages: parse-entities@4.0.1: resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} - parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - parse-numeric-range@1.3.0: resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} @@ -3915,18 +3606,10 @@ packages: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} - pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - pirates@4.0.6: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} - pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - pkg-dir@7.0.0: resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} engines: {node: '>=14.16'} @@ -3998,10 +3681,6 @@ packages: preact@10.11.3: resolution: {integrity: sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==} - preferred-pm@3.0.3: - resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} - engines: {node: '>=10'} - prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -4065,11 +3744,6 @@ packages: prettier-plugin-svelte: optional: true - prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - prettier@3.2.5: resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} engines: {node: '>=14'} @@ -4099,9 +3773,6 @@ packages: proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - pseudomap@1.0.2: - resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} @@ -4113,10 +3784,6 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - quick-lru@4.0.1: - resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} - engines: {node: '>=8'} - randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} @@ -4210,18 +3877,6 @@ packages: read-cache@1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - read-pkg-up@7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} - - read-pkg@5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} - - read-yaml-file@1.1.0: - resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} - engines: {node: '>=6'} - readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} @@ -4230,10 +3885,6 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} - redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} - reflect.getprototypeof@1.0.4: resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} engines: {node: '>= 0.4'} @@ -4302,17 +3953,10 @@ packages: remark-stringify@11.0.0: resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} - require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - resend@4.0.0: resolution: {integrity: sha512-rDX0rspl/XcmC2JV2V5obQvRX2arzxXUvNFUDMOv5ObBLR68+7kigCOysb7+dlkb0JE3erhQG0nHrbBt/ZCWIg==} engines: {node: '>=18'} @@ -4321,10 +3965,6 @@ packages: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} @@ -4378,9 +4018,6 @@ packages: resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} engines: {node: '>= 0.4'} - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} @@ -4395,19 +4032,10 @@ packages: selderee@0.11.0: resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==} - semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true - semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} - engines: {node: '>=10'} - hasBin: true - semver@7.6.2: resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} engines: {node: '>=10'} @@ -4421,9 +4049,6 @@ packages: serialize-javascript@6.0.1: resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} - set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -4432,18 +4057,10 @@ packages: resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} engines: {node: '>= 0.4'} - shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} - shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} - shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} @@ -4471,11 +4088,6 @@ packages: resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} engines: {node: '>=8.0.0'} - smartwrap@2.0.2: - resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} - engines: {node: '>=6'} - hasBin: true - sonner@1.4.0: resolution: {integrity: sha512-nvkTsIuOmi9e5Wz5If8ldasJjZNVfwiXYijBi2dbijvTQnQppvMcXTFNxL/NUFWlI2yJ1JX7TREDsg+gYm9WyA==} peerDependencies: @@ -4496,24 +4108,6 @@ packages: space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - spawndamnit@2.0.0: - resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} - - spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - - spdx-exceptions@2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} - - spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - - spdx-license-ids@3.0.13: - resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} - - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - stable-hash@0.0.4: resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} @@ -4531,9 +4125,6 @@ packages: stream-shift@1.0.3: resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} - stream-transform@2.1.3: - resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} - streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} @@ -4593,10 +4184,6 @@ packages: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} - strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} - strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -4673,10 +4260,6 @@ packages: resolution: {integrity: sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==} engines: {node: '>=14'} - term-size@2.2.1: - resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} - engines: {node: '>=8'} - terser-webpack-plugin@5.3.10: resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} @@ -4708,10 +4291,6 @@ packages: thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} @@ -4726,10 +4305,6 @@ packages: trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - trim-newlines@3.0.1: - resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} - engines: {node: '>=8'} - trough@2.1.0: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} @@ -4765,35 +4340,18 @@ packages: tslib@2.7.0: resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} - tty-table@4.2.1: - resolution: {integrity: sha512-xz0uKo+KakCQ+Dxj1D/tKn2FSyreSYWzdkL/BYhgN6oMW808g8QRMuh1atAV9fjTPbWBjfbkKQpI/5rEcnAc7g==} - engines: {node: '>=8.0.0'} - hasBin: true - type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - type-fest@0.13.1: - resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} - engines: {node: '>=10'} - type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} - type-fest@0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} - type-fest@0.7.1: resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} engines: {node: '>=8'} - type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - type-fest@1.4.0: resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} engines: {node: '>=10'} @@ -4879,10 +4437,6 @@ packages: unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - update-browserslist-db@1.0.11: resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} hasBin: true @@ -4938,9 +4492,6 @@ packages: v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - vaul@0.9.0: resolution: {integrity: sha512-bZSySGbAHiTXmZychprnX/dE0EsSige88xtyyL3/MCRbrFotRPQZo7UdydGXZWw+CKbNOw5Ow8gwAo93/nB/Cg==} peerDependencies: @@ -4969,9 +4520,6 @@ packages: resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} engines: {node: '>=10.13.0'} - wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} @@ -5005,30 +4553,15 @@ packages: which-collection@1.0.1: resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} - which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - - which-pm@2.0.0: - resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} - engines: {node: '>=8.15'} - which-typed-array@1.1.15: resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} engines: {node: '>= 0.4'} - which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} hasBin: true - wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -5040,16 +4573,6 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yallist@2.1.2: - resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} @@ -5060,22 +4583,6 @@ packages: resolution: {integrity: sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==} engines: {node: '>= 14'} - yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} - - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} - - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} @@ -5242,154 +4749,6 @@ snapshots: '@babel/helper-validator-identifier': 7.22.15 to-fast-properties: 2.0.0 - '@changesets/apply-release-plan@7.0.0': - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/config': 3.0.0 - '@changesets/get-version-range-type': 0.4.0 - '@changesets/git': 3.0.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - detect-indent: 6.1.0 - fs-extra: 7.0.1 - lodash.startcase: 4.4.0 - outdent: 0.5.0 - prettier: 2.8.8 - resolve-from: 5.0.0 - semver: 7.5.4 - - '@changesets/assemble-release-plan@6.0.0': - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.0.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - semver: 7.5.4 - - '@changesets/changelog-git@0.2.0': - dependencies: - '@changesets/types': 6.0.0 - - '@changesets/cli@2.27.1': - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/apply-release-plan': 7.0.0 - '@changesets/assemble-release-plan': 6.0.0 - '@changesets/changelog-git': 0.2.0 - '@changesets/config': 3.0.0 - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.0.0 - '@changesets/get-release-plan': 4.0.0 - '@changesets/git': 3.0.0 - '@changesets/logger': 0.1.0 - '@changesets/pre': 2.0.0 - '@changesets/read': 0.6.0 - '@changesets/types': 6.0.0 - '@changesets/write': 0.3.0 - '@manypkg/get-packages': 1.1.3 - '@types/semver': 7.5.1 - ansi-colors: 4.1.3 - chalk: 2.4.2 - ci-info: 3.8.0 - enquirer: 2.4.1 - external-editor: 3.1.0 - fs-extra: 7.0.1 - human-id: 1.0.2 - meow: 6.1.1 - outdent: 0.5.0 - p-limit: 2.3.0 - preferred-pm: 3.0.3 - resolve-from: 5.0.0 - semver: 7.5.4 - spawndamnit: 2.0.0 - term-size: 2.2.1 - tty-table: 4.2.1 - - '@changesets/config@3.0.0': - dependencies: - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.0.0 - '@changesets/logger': 0.1.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - fs-extra: 7.0.1 - micromatch: 4.0.5 - - '@changesets/errors@0.2.0': - dependencies: - extendable-error: 0.1.7 - - '@changesets/get-dependents-graph@2.0.0': - dependencies: - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - chalk: 2.4.2 - fs-extra: 7.0.1 - semver: 7.5.4 - - '@changesets/get-release-plan@4.0.0': - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/assemble-release-plan': 6.0.0 - '@changesets/config': 3.0.0 - '@changesets/pre': 2.0.0 - '@changesets/read': 0.6.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - - '@changesets/get-version-range-type@0.4.0': {} - - '@changesets/git@3.0.0': - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/errors': 0.2.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - is-subdir: 1.2.0 - micromatch: 4.0.5 - spawndamnit: 2.0.0 - - '@changesets/logger@0.1.0': - dependencies: - chalk: 2.4.2 - - '@changesets/parse@0.4.0': - dependencies: - '@changesets/types': 6.0.0 - js-yaml: 3.14.1 - - '@changesets/pre@2.0.0': - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/errors': 0.2.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - fs-extra: 7.0.1 - - '@changesets/read@0.6.0': - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/git': 3.0.0 - '@changesets/logger': 0.1.0 - '@changesets/parse': 0.4.0 - '@changesets/types': 6.0.0 - chalk: 2.4.2 - fs-extra: 7.0.1 - p-filter: 2.1.0 - - '@changesets/types@4.1.0': {} - - '@changesets/types@6.0.0': {} - - '@changesets/write@0.3.0': - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/types': 6.0.0 - fs-extra: 7.0.1 - human-id: 1.0.2 - prettier: 2.8.8 - '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 @@ -5522,22 +4881,6 @@ snapshots: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 - '@manypkg/find-root@1.1.0': - dependencies: - '@babel/runtime': 7.23.7 - '@types/node': 12.20.55 - find-up: 4.1.0 - fs-extra: 8.1.0 - - '@manypkg/get-packages@1.1.3': - dependencies: - '@babel/runtime': 7.23.7 - '@changesets/types': 4.1.0 - '@manypkg/find-root': 1.1.0 - fs-extra: 8.1.0 - globby: 11.1.0 - read-yaml-file: 1.1.0 - '@next-auth/prisma-adapter@1.0.7(@prisma/client@5.16.1(prisma@5.16.1))(next-auth@4.24.7(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))': dependencies: '@prisma/client': 5.16.1(prisma@5.16.1) @@ -6407,12 +5750,8 @@ snapshots: dependencies: '@types/unist': 3.0.0 - '@types/minimist@1.2.2': {} - '@types/ms@0.7.31': {} - '@types/node@12.20.55': {} - '@types/node@20.10.6': dependencies: undici-types: 5.26.5 @@ -6421,8 +5760,6 @@ snapshots: dependencies: undici-types: 6.19.8 - '@types/normalize-package-data@2.4.1': {} - '@types/papaparse@5.3.14': dependencies: '@types/node': 20.10.6 @@ -6446,8 +5783,6 @@ snapshots: '@types/scheduler@0.16.3': {} - '@types/semver@7.5.1': {} - '@types/tough-cookie@4.0.5': {} '@types/unist@2.0.8': {} @@ -6770,8 +6105,6 @@ snapshots: require-from-string: 2.0.2 uri-js: 4.4.1 - ansi-colors@4.1.3: {} - ansi-escapes@5.0.0: dependencies: type-fest: 1.4.0 @@ -6801,10 +6134,6 @@ snapshots: arg@5.0.2: {} - argparse@1.0.10: - dependencies: - sprintf-js: 1.0.3 - argparse@2.0.1: {} aria-hidden@1.2.3: @@ -6882,8 +6211,6 @@ snapshots: is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.3 - arrify@1.0.1: {} - arrify@2.0.1: {} asap@2.0.6: {} @@ -6943,10 +6270,6 @@ snapshots: bcp-47-match@2.0.3: {} - better-path-resolve@1.0.0: - dependencies: - is-windows: 1.0.2 - bignumber.js@9.1.2: {} binary-extensions@2.2.0: {} @@ -6966,10 +6289,6 @@ snapshots: dependencies: fill-range: 7.0.1 - breakword@1.0.6: - dependencies: - wcwidth: 1.0.1 - browserslist@4.21.10: dependencies: caniuse-lite: 1.0.30001572 @@ -7004,14 +6323,6 @@ snapshots: camelcase-css@2.0.1: {} - camelcase-keys@6.2.2: - dependencies: - camelcase: 5.3.1 - map-obj: 4.3.0 - quick-lru: 4.0.1 - - camelcase@5.3.1: {} - caniuse-lite@1.0.30001572: {} caniuse-lite@1.0.30001587: {} @@ -7044,8 +6355,6 @@ snapshots: character-reference-invalid@2.0.1: {} - chardet@0.7.0: {} - chokidar@3.5.3: dependencies: anymatch: 3.1.3 @@ -7060,8 +6369,6 @@ snapshots: chrome-trace-event@1.0.3: {} - ci-info@3.8.0: {} - class-variance-authority@0.7.0: dependencies: clsx: 2.0.0 @@ -7077,20 +6384,6 @@ snapshots: client-only@0.0.1: {} - cliui@6.0.0: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 6.2.0 - - cliui@8.0.1: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - clone@1.0.4: {} - clsx@2.0.0: {} clsx@2.1.0: {} @@ -7144,12 +6437,6 @@ snapshots: create-require@1.1.1: {} - cross-spawn@5.1.0: - dependencies: - lru-cache: 4.1.5 - shebang-command: 1.2.0 - which: 1.3.1 - cross-spawn@7.0.3: dependencies: path-key: 3.1.1 @@ -7162,19 +6449,6 @@ snapshots: csstype@3.1.2: {} - csv-generate@3.4.3: {} - - csv-parse@4.16.3: {} - - csv-stringify@5.6.5: {} - - csv@5.5.3: - dependencies: - csv-generate: 3.4.3 - csv-parse: 4.16.3 - csv-stringify: 5.6.5 - stream-transform: 2.1.3 - damerau-levenshtein@1.0.8: {} data-view-buffer@1.0.1: @@ -7207,13 +6481,6 @@ snapshots: dependencies: ms: 2.1.2 - decamelize-keys@1.1.1: - dependencies: - decamelize: 1.2.0 - map-obj: 1.0.1 - - decamelize@1.2.0: {} - decode-named-character-reference@1.0.2: dependencies: character-entities: 2.0.2 @@ -7243,10 +6510,6 @@ snapshots: deepmerge@4.3.1: {} - defaults@1.0.4: - dependencies: - clone: 1.0.4 - define-data-property@1.1.4: dependencies: es-define-property: 1.0.0 @@ -7263,8 +6526,6 @@ snapshots: dequal@2.0.3: {} - detect-indent@6.1.0: {} - detect-node-es@1.1.0: {} devlop@1.1.0: @@ -7353,19 +6614,10 @@ snapshots: graceful-fs: 4.2.11 tapable: 2.2.1 - enquirer@2.4.1: - dependencies: - ansi-colors: 4.1.3 - strip-ansi: 6.0.1 - ent@2.2.0: {} entities@4.5.0: {} - error-ex@1.3.2: - dependencies: - is-arrayish: 0.2.1 - es-abstract@1.23.3: dependencies: array-buffer-byte-length: 1.0.1 @@ -7745,8 +6997,6 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.12.1) eslint-visitor-keys: 4.0.0 - esprima@4.0.1: {} - esquery@1.5.0: dependencies: estraverse: 5.3.0 @@ -7785,14 +7035,6 @@ snapshots: extend@3.0.2: {} - extendable-error@0.1.7: {} - - external-editor@3.1.0: - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - fast-deep-equal@2.0.1: {} fast-deep-equal@3.1.3: {} @@ -7836,11 +7078,6 @@ snapshots: common-path-prefix: 3.0.0 pkg-dir: 7.0.0 - find-up@4.1.0: - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - find-up@5.0.0: dependencies: locate-path: 6.0.0 @@ -7851,11 +7088,6 @@ snapshots: locate-path: 7.2.0 path-exists: 5.0.0 - find-yarn-workspace-root2@1.2.16: - dependencies: - micromatch: 4.0.5 - pkg-dir: 4.2.0 - flat-cache@4.0.1: dependencies: flatted: 3.3.1 @@ -7894,18 +7126,6 @@ snapshots: fraction.js@4.3.7: {} - fs-extra@7.0.1: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - - fs-extra@8.1.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - fs.realpath@1.0.0: {} fsevents@2.3.2: @@ -7945,8 +7165,6 @@ snapshots: gensync@1.0.0-beta.2: {} - get-caller-file@2.0.5: {} - get-intrinsic@1.2.2: dependencies: function-bind: 1.1.2 @@ -8052,8 +7270,6 @@ snapshots: graceful-fs@4.2.11: {} - grapheme-splitter@1.0.4: {} - graphemer@1.4.0: {} gtoken@7.1.0: @@ -8064,8 +7280,6 @@ snapshots: - encoding - supports-color - hard-rejection@2.1.0: {} - has-bigints@1.0.2: {} has-flag@3.0.0: {} @@ -8264,8 +7478,6 @@ snapshots: dependencies: react-is: 16.13.1 - hosted-git-info@2.8.9: {} - html-to-text@9.0.5: dependencies: '@selderee/plugin-htmlparser2': 0.11.0 @@ -8307,16 +7519,10 @@ snapshots: transitivePeerDependencies: - supports-color - human-id@1.0.2: {} - human-signals@5.0.0: {} husky@9.0.11: {} - iconv-lite@0.4.24: - dependencies: - safer-buffer: 2.1.2 - ignore@5.2.4: {} ignore@5.3.1: {} @@ -8330,8 +7536,6 @@ snapshots: imurmurhash@0.1.4: {} - indent-string@4.0.0: {} - inflight@1.0.6: dependencies: once: 1.4.0 @@ -8370,8 +7574,6 @@ snapshots: call-bind: 1.0.7 get-intrinsic: 1.2.4 - is-arrayish@0.2.1: {} - is-async-function@2.0.0: dependencies: has-tostringtag: 1.0.2 @@ -8447,8 +7649,6 @@ snapshots: is-path-inside@3.0.3: {} - is-plain-obj@1.1.0: {} - is-plain-obj@4.1.0: {} is-reference@1.2.1: @@ -8474,10 +7674,6 @@ snapshots: dependencies: has-tostringtag: 1.0.2 - is-subdir@1.2.0: - dependencies: - better-path-resolve: 1.0.0 - is-symbol@1.0.4: dependencies: has-symbols: 1.0.3 @@ -8497,8 +7693,6 @@ snapshots: call-bind: 1.0.7 get-intrinsic: 1.2.4 - is-windows@1.0.2: {} - isarray@2.0.5: {} isexe@2.0.0: {} @@ -8519,7 +7713,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 20.10.6 + '@types/node': 22.5.4 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -8541,11 +7735,6 @@ snapshots: js-tokens@4.0.0: {} - js-yaml@3.14.1: - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - js-yaml@4.1.0: dependencies: argparse: 2.0.1 @@ -8572,10 +7761,6 @@ snapshots: json5@2.2.3: {} - jsonfile@4.0.0: - optionalDependencies: - graceful-fs: 4.2.11 - jsx-ast-utils@3.3.5: dependencies: array-includes: 3.1.8 @@ -8598,10 +7783,6 @@ snapshots: dependencies: json-buffer: 3.0.1 - kind-of@6.0.3: {} - - kleur@4.1.5: {} - language-subtag-registry@0.3.23: {} language-tags@1.0.9: @@ -8647,23 +7828,12 @@ snapshots: rfdc: 1.3.0 wrap-ansi: 8.1.0 - load-yaml-file@0.2.0: - dependencies: - graceful-fs: 4.2.11 - js-yaml: 3.14.1 - pify: 4.0.1 - strip-bom: 3.0.0 - loader-runner@4.3.0: {} localforage@1.10.0: dependencies: lie: 3.1.1 - locate-path@5.0.0: - dependencies: - p-locate: 4.1.0 - locate-path@6.0.0: dependencies: p-locate: 5.0.0 @@ -8674,8 +7844,6 @@ snapshots: lodash.merge@4.6.2: {} - lodash.startcase@4.4.0: {} - log-update@5.0.1: dependencies: ansi-escapes: 5.0.0 @@ -8692,11 +7860,6 @@ snapshots: lru-cache@10.2.0: {} - lru-cache@4.1.5: - dependencies: - pseudomap: 1.0.2 - yallist: 2.1.2 - lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -8715,10 +7878,6 @@ snapshots: make-error@1.3.6: {} - map-obj@1.0.1: {} - - map-obj@4.3.0: {} - markdown-table@3.0.3: {} mdast-util-find-and-replace@3.0.1: @@ -8873,20 +8032,6 @@ snapshots: dependencies: '@types/mdast': 4.0.3 - meow@6.1.1: - dependencies: - '@types/minimist': 1.2.2 - camelcase-keys: 6.2.2 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 2.5.0 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.13.1 - yargs-parser: 18.1.3 - merge-stream@2.0.0: {} merge2@1.4.1: {} @@ -9099,8 +8244,6 @@ snapshots: mimic-fn@4.0.0: {} - min-indent@1.0.1: {} - minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 @@ -9121,18 +8264,10 @@ snapshots: dependencies: brace-expansion: 2.0.1 - minimist-options@4.1.0: - dependencies: - arrify: 1.0.1 - is-plain-obj: 1.1.0 - kind-of: 6.0.3 - minimist@1.2.8: {} minipass@7.0.4: {} - mixme@0.5.9: {} - mkdirp@0.5.6: dependencies: minimist: 1.2.8 @@ -9256,13 +8391,6 @@ snapshots: dependencies: abbrev: 2.0.0 - normalize-package-data@2.5.0: - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.8 - semver: 5.7.2 - validate-npm-package-license: 3.0.4 - normalize-path@3.0.0: {} normalize-range@0.1.2: {} @@ -9356,18 +8484,6 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - os-tmpdir@1.0.2: {} - - outdent@0.5.0: {} - - p-filter@2.1.0: - dependencies: - p-map: 2.1.0 - - p-limit@2.3.0: - dependencies: - p-try: 2.2.0 - p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 @@ -9376,10 +8492,6 @@ snapshots: dependencies: yocto-queue: 1.0.0 - p-locate@4.1.0: - dependencies: - p-limit: 2.3.0 - p-locate@5.0.0: dependencies: p-limit: 3.1.0 @@ -9388,10 +8500,6 @@ snapshots: dependencies: p-limit: 4.0.0 - p-map@2.1.0: {} - - p-try@2.2.0: {} - papaparse@5.4.1: {} parent-module@1.0.1: @@ -9409,13 +8517,6 @@ snapshots: is-decimal: 2.0.1 is-hexadecimal: 2.0.1 - parse-json@5.2.0: - dependencies: - '@babel/code-frame': 7.22.13 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - parse-numeric-range@1.3.0: {} parse5@6.0.1: {} @@ -9458,14 +8559,8 @@ snapshots: pify@2.3.0: {} - pify@4.0.1: {} - pirates@4.0.6: {} - pkg-dir@4.2.0: - dependencies: - find-up: 4.1.0 - pkg-dir@7.0.0: dependencies: find-up: 6.3.0 @@ -9531,13 +8626,6 @@ snapshots: preact@10.11.3: {} - preferred-pm@3.0.3: - dependencies: - find-up: 5.0.0 - find-yarn-workspace-root2: 1.2.16 - path-exists: 4.0.0 - which-pm: 2.0.0 - prelude-ls@1.2.1: {} prettier-linter-helpers@1.0.0: @@ -9548,8 +8636,6 @@ snapshots: dependencies: prettier: 3.2.5 - prettier@2.8.8: {} - prettier@3.2.5: {} pretty-format@3.8.0: {} @@ -9572,8 +8658,6 @@ snapshots: proxy-from-env@1.1.0: {} - pseudomap@1.0.2: {} - punycode@2.3.0: {} qs@6.11.2: @@ -9582,8 +8666,6 @@ snapshots: queue-microtask@1.2.3: {} - quick-lru@4.0.1: {} - randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 @@ -9690,26 +8772,6 @@ snapshots: dependencies: pify: 2.3.0 - read-pkg-up@7.0.1: - dependencies: - find-up: 4.1.0 - read-pkg: 5.2.0 - type-fest: 0.8.1 - - read-pkg@5.2.0: - dependencies: - '@types/normalize-package-data': 2.4.1 - normalize-package-data: 2.5.0 - parse-json: 5.2.0 - type-fest: 0.6.0 - - read-yaml-file@1.1.0: - dependencies: - graceful-fs: 4.2.11 - js-yaml: 3.14.1 - pify: 4.0.1 - strip-bom: 3.0.0 - readable-stream@3.6.2: dependencies: inherits: 2.0.4 @@ -9720,11 +8782,6 @@ snapshots: dependencies: picomatch: 2.3.1 - redent@3.0.0: - dependencies: - indent-string: 4.0.0 - strip-indent: 3.0.0 - reflect.getprototypeof@1.0.4: dependencies: call-bind: 1.0.7 @@ -9873,12 +8930,8 @@ snapshots: mdast-util-to-markdown: 2.1.0 unified: 11.0.4 - require-directory@2.1.1: {} - require-from-string@2.0.2: {} - require-main-filename@2.0.0: {} - resend@4.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@react-email/render': 0.0.17(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -9888,8 +8941,6 @@ snapshots: resolve-from@4.0.0: {} - resolve-from@5.0.0: {} - resolve-pkg-maps@1.0.0: {} resolve@1.22.4: @@ -9953,8 +9004,6 @@ snapshots: es-errors: 1.3.0 is-regex: 1.1.4 - safer-buffer@2.1.2: {} - scheduler@0.23.0: dependencies: loose-envify: 1.4.0 @@ -9976,14 +9025,8 @@ snapshots: dependencies: parseley: 0.12.1 - semver@5.7.2: {} - semver@6.3.1: {} - semver@7.5.4: - dependencies: - lru-cache: 6.0.0 - semver@7.6.2: {} semver@7.6.3: {} @@ -9992,8 +9035,6 @@ snapshots: dependencies: randombytes: 2.1.0 - set-blocking@2.0.0: {} - set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -10010,16 +9051,10 @@ snapshots: functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 - shebang-command@1.2.0: - dependencies: - shebang-regex: 1.0.0 - shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 - shebang-regex@1.0.0: {} - shebang-regex@3.0.0: {} side-channel@1.0.6: @@ -10042,15 +9077,6 @@ snapshots: slugify@1.6.6: {} - smartwrap@2.0.2: - dependencies: - array.prototype.flat: 1.3.2 - breakword: 1.0.6 - grapheme-splitter: 1.0.4 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - yargs: 15.4.1 - sonner@1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: react: 18.2.0 @@ -10067,27 +9093,6 @@ snapshots: space-separated-tokens@2.0.2: {} - spawndamnit@2.0.0: - dependencies: - cross-spawn: 5.1.0 - signal-exit: 3.0.7 - - spdx-correct@3.2.0: - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.13 - - spdx-exceptions@2.3.0: {} - - spdx-expression-parse@3.0.1: - dependencies: - spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.13 - - spdx-license-ids@3.0.13: {} - - sprintf-js@1.0.3: {} - stable-hash@0.0.4: {} stacktrace-parser@0.1.10: @@ -10104,10 +9109,6 @@ snapshots: stream-shift@1.0.3: {} - stream-transform@2.1.3: - dependencies: - mixme: 0.5.9 - streamsearch@1.1.0: {} string-argv@0.3.2: {} @@ -10189,10 +9190,6 @@ snapshots: strip-final-newline@3.0.0: {} - strip-indent@3.0.0: - dependencies: - min-indent: 1.0.1 - strip-json-comments@3.1.1: {} stripe@16.1.0: @@ -10292,8 +9289,6 @@ snapshots: - encoding - supports-color - term-size@2.2.1: {} - terser-webpack-plugin@5.3.10(webpack@5.89.0): dependencies: '@jridgewell/trace-mapping': 0.3.20 @@ -10320,10 +9315,6 @@ snapshots: dependencies: any-promise: 1.3.0 - tmp@0.0.33: - dependencies: - os-tmpdir: 1.0.2 - to-fast-properties@2.0.0: {} to-regex-range@5.0.1: @@ -10334,8 +9325,6 @@ snapshots: trim-lines@3.0.1: {} - trim-newlines@3.0.1: {} - trough@2.1.0: {} ts-api-utils@1.3.0(typescript@5.5.4): @@ -10373,30 +9362,14 @@ snapshots: tslib@2.7.0: {} - tty-table@4.2.1: - dependencies: - chalk: 4.1.2 - csv: 5.5.3 - kleur: 4.1.5 - smartwrap: 2.0.2 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - yargs: 17.7.2 - type-check@0.4.0: dependencies: prelude-ls: 1.2.1 - type-fest@0.13.1: {} - type-fest@0.20.2: {} - type-fest@0.6.0: {} - type-fest@0.7.1: {} - type-fest@0.8.1: {} - type-fest@1.4.0: {} typed-array-buffer@1.0.2: @@ -10534,8 +9507,6 @@ snapshots: unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - universalify@0.1.2: {} - update-browserslist-db@1.0.11(browserslist@4.21.10): dependencies: browserslist: 4.21.10 @@ -10579,11 +9550,6 @@ snapshots: v8-compile-cache-lib@3.0.1: {} - validate-npm-package-license@3.0.4: - dependencies: - spdx-correct: 3.2.0 - spdx-expression-parse: 3.0.1 - vaul@0.9.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@radix-ui/react-dialog': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -10631,10 +9597,6 @@ snapshots: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 - wcwidth@1.0.1: - dependencies: - defaults: 1.0.4 - web-namespaces@2.0.1: {} webidl-conversions@3.0.1: {} @@ -10707,13 +9669,6 @@ snapshots: is-weakmap: 2.0.1 is-weakset: 2.0.2 - which-module@2.0.1: {} - - which-pm@2.0.0: - dependencies: - load-yaml-file: 0.2.0 - path-exists: 4.0.0 - which-typed-array@1.1.15: dependencies: available-typed-arrays: 1.0.7 @@ -10722,20 +9677,10 @@ snapshots: gopd: 1.0.1 has-tostringtag: 1.0.2 - which@1.3.1: - dependencies: - isexe: 2.0.0 - which@2.0.2: dependencies: isexe: 2.0.0 - wrap-ansi@6.2.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 @@ -10750,49 +9695,12 @@ snapshots: wrappy@1.0.2: {} - y18n@4.0.3: {} - - y18n@5.0.8: {} - - yallist@2.1.2: {} - yallist@3.1.1: {} yallist@4.0.0: {} yaml@2.3.3: {} - yargs-parser@18.1.3: - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - - yargs-parser@21.1.1: {} - - yargs@15.4.1: - dependencies: - cliui: 6.0.0 - decamelize: 1.2.0 - find-up: 4.1.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 - string-width: 4.2.3 - which-module: 2.0.1 - y18n: 4.0.3 - yargs-parser: 18.1.3 - - yargs@17.7.2: - dependencies: - cliui: 8.0.1 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - yn@3.1.1: {} yocto-queue@0.1.0: {} From 2db729fdd48d3883f8d71e8b9d2f49a5a0e00ef1 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 9 Sep 2024 16:33:34 +0200 Subject: [PATCH 225/326] :mag: add favicon --- src/app/favicon.ico | Bin 0 -> 182395 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/app/favicon.ico diff --git a/src/app/favicon.ico b/src/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..f5d4fbd344df3cb34b6a7a159d0049a5c2d8da43 GIT binary patch literal 182395 zcmeF42YejG^~YC|ZP~`)LW!v|y@Lt8+JFfqbWBUAfrR7_A%qe_La-q85_%}1nhpsi z^lnNhp@iPC1@5+_>;0tte}A*L^7?$IyVKq2B;)<)r!6--^XARWn>TOX%vx5RHN+Y* z!s0x}`t<94)NWgYUzdTTxINs1@V zb55289cymlz})jM5eWz@f~~-i%)Op11%3op0E2-W)||86Ka}6+fJeYD!TI0?@FDmB zJO$1I>w>O$6i4QML(a2-T>w-0UGWb9?z=iK3*H0X_fy=92Bq(P9_9Y`pbofkoXm9+ zc*9NSehqLiP+Z>M+PEJN^!{q#W8nQ=*9q_tcs0jw`u%<|2pkULAp3o#srTQ_@teZV z02>4GI{RJSw*v9|D3DFRevg5P;2MzYebIk3P(3&jd;z@S6zB2af~@B%$J>Aph);h3 zDzE*4c<;ucJRbr?pVD%lPvLqLcro)#?`#cL1u7Fa+)S=F1uCP@JF)mpn;E16Dlh@1n^|pZ7W$ z@>@yb$aiGQQSlrDo&qOv2ry(3xpKkyysE}VYzf$f3f7vJ9ih2D|eeG?R--Hqp5!Ycl;Kr+pJp6@K# zsXBHL@XGak;nh|p5B36H`J6BO4TKXtYk{vozHshy)q&AK?Ou6zpXWQP?kU^$uCC8h9b{NI0_)Y+- z)9&vdaJ>^yKEz+~+5OFXew*j&Z`TG>bA*vB+BWI5!6&nRSDZtD(#Ti0C-YlF+@awy zuDxmNS~B1epg7J1E}!(9WQ5y(uHriTUCH3%fZi330bcp*hQFWZgMj4xZ-DME2g zS36VPeH0u4wg#%3M}ilCmuGJL3OfRr_~E}f$DFg?YXxpt?^$uFzDu^`;-$jA0@VIY zoNg!M-bej0Jy&}W|GaS*x>j9~%#==NB{Fi~jo;~K)GkfiR2u7mtHJjm7Z2R@R6eTb z#{<;?6L&niXg}YTMmS{hhR#t>_)WoC;29v9GaV>R$>}@5&%tP5-ZAGz;vPrT!$Bh` zQ|S_sXj{!-3URd%r}VHfU_8(`&>Rc^v-L1NS6jA&tqW*1bo;G%#AkFRg)w@i^d|D* z)Xgsa!QqSawoExFd?`mV?6YD~!{4pomE;!uU7$~R+5%~z_eCTl{Thd;J`V>&Qc-^$ z=LLBPsZK1cQ{|&6^Pbx36F_xD?d@)`FBqAKwJY8gz#iZnAbIf;P#t;`JO^$AzXNKE zqRpX2I!h>&FKP2!eT$Q)z+~QY>!{AEr>}z>fb_{I@cy3bx}7kpmy!$O4Q1va9}#hf z_oDZ3pf;B)-cp~bUwayCp9q8C~n^s2oh)bneITT;tPx zX?mZlj;!d$!@0T0_Y{ZPnEHMz9&_l(+~3RDn?`rnY9oIGn*!;zUxV(#dw=s2R=OKJ z=#rshxu07?9EwkMKy6(z!W(}v*Eb@^ox14o{^TCSp}Ic{gnRI=`b@QT>YZQhQnI!f zy1ikpLUFceQ-U;Y^^+6wkLhoe%?&^9yk$I{^TLPs& z5UB6Tj=#|TRT&*nI&Vvf?@P8z_NdGNI(`AzgWeeZ&?sdQWE2;Q*XYt_3Q&3hR-qM7lS`wUs2GWrdO0Pnlr>$~}F zFhCDN?~NJxfj(kv*jIJ)p5mAa{tv7~zv0#gt0NiHwRobs;RoLIyw@ss_1R_|l=OX%4j7C1yn4_&gnOl% zc-;6(IjdYxOoSafuw-`j(b>xQFVR)M)*!rOLPrJY_>MS^#OChk8=ib;)1Yxuf-xuI zh2h{dFb$NFS2wKs_=mxk8C#W!H#^Pj`xJUH?-*q4HfrzZgO5O=@t5j`#*Rw&Ky>P* zI6Gy_7_5}T=;ZDkfTO3bN?eD6>%bJCI`{=py?Y1T55%u6f#gY7KBQykJDSHg+Rc_F zi~~(zIA{b7Kr=yQ%m(qcbJR5x4``S|+%2TR$h;{{nzB=j1;>CcJH=YL?Gywthi%(k zwjej3k$H10J?{@kX1rx&fd9q03(5)E5XTl$C?5&xLs~M#j2|TT9T_TK$OhAqY`4;h z_NuWWL;oPs`xTHJ{2f>~9&VQ|Z)pzCj?OdV+*s7dIBTvI^U$a;VQ7bb`YJzlH8>3U zPg@BN#uiZ@U(hF!H{@l&XGM}h%Wi9{NS>5F*aEn7tCHK2GdF-;p?_&(%kt0>amGt4 z^7}Y&BKRA)7d#1G1kZuTz%Afhptia(^bdk5!7t!h4-MVc3al>mK< zbO)bHT2W{92WrE-KLLb5HR;V4_iLoPbF>v%ZrVluJ}OtHGBRisamfCfFO6zHSDiW% z*;OySPPVjS59z*%sIe8qkN;18tJe$e8>H{5F?wqA#b|;eyrS%r?i>D^eT$$($w`r`W-+u-opirFoen)-; z9h-+4M|as0rH|x$rbHGkOyWiQvGc)bmj{) zpZ9kJi^wBv4n{xZH`xw)T2I|{)jwYfMur2vI>wYkGx3&Frf%GKB1;E}|E{j2c1`@k zvfvHihArouB%W8m-@#KL49bbmeOG0$HRvjX4u99Ub}yb+f=6yz)jFS_3@vEKo%oAI zQf3}cdT+JTtYp0JK<9EQgGeM|##-21MsWXn1?gA6_b6xv{{k^ksXR!JSKnd3Vcp_32I;lyfTP*kD`dFgA3?sM3{kyqoQg)o6)<8!`L`i=6&gF+39%i@8$QAz=}qr?if{R z9|olFdBYaEo*avW>!RoniVr?)#<{hGI3!~Z*Sndqvf{a@!25dV*W!O9o;J1-^S-l& zWln*2v-2Z)Z$*rMlhL17;QoIl#35SLr*_o^u1_!G{eMQofq|Mo(V_Q&+TpY!-gWaJ zU3@oSMdO-x*4V}PPu*TZ9E$5~#SycOtwnU~4%BzK>Et@!6AR&^4E>Re-zVWEPc=r* z6+YLq52*L1Eyd(Nh+Us|g`a^`3GqBiJH#%ochv@h($^+;^S+v(=G$Q6ICXKjSt5uh7}4gDHNCh1qg?Pk8^FD1mK_-~^u8#PXM$D#44 zuYuGm9oqWb*<8yewHD}pda?zUW*#q!turvOhW$4$xj0{wqnxFl& zg!rO_Jt-WYCqA07kavw$m;J%~hR-i;t)t!48Kt!nQ2&;T&RowVA9n_(&U6vag~~u_ zWqgK^aYd~Mann%$^n0LjN=6^_TMhO-rj8^d?bz~L(H%0rrcU1_KK&E8aTIgD3P1A! zP8y5a5%t`u2gcv#z7pe(6JGR8pgt{=@XR$UUct1ps2QiKzj_B0L$e#^P1??{5-~3Q8FgAh_C;m*)e*deCZt<%dWg% zP96%;*WK^)N&6S^czeC{H2LEcduUC7?4(J}L9r$Xya~EXtJ1%HOL~Xce)<1MUu7Kw zcB)bi`9a4cVbflSOY-72P-@*RHDBuUo&#IQL##&?4?$0lbUbQgEAgou zD3!KC;inSkAE+zKab{f0SgnZqUMO$I_a~zxW!87DO8lpR_d!qFrJEP=`)hCs*zkmR z%(#;N0^Y|R{h$zi#s02xOlQ_p#2mjJ>41lVJHh851VoQZTduQyR~`HY{0p1_)=b*Q zU)J=`n*XfUVKXP5#$Mgo>gcRyPR;QvRQuQm`~}om`ZyDawXwF11PWPOLXU+|ob6w_ax#vliWu(Hm%(=;V zPs^|LzRpv0Zp@rnj@7Jt_w0H=WuFzM`bYgDNo3Q(eX|0&^m3k}d-BtwvnQX159B|t z=bZ7uvaCt$DWbD&{w(p&p2F)ow>bQjpVoNL47&WZc#vy789|mD9u7!G#u5ws3TYSg zv(nM3=cDCGzNVL2+b3BieFuGQ5P2Vgjyfc6^d2*&x6(A|bShCaosv)XJ&`OQIQ4zf zM@%2c*^HH~&UCBQ+0j~b+?5WPX1?3xKN67b>P8^@%Oe0=o_|a%+*;4I>HnpB<XWyFM?=k8G|lBJkM`G$`&EYc51Ks7uY++}RO_dM zTkwwhms7!I;2+>Ypt-n*z&+sa;LqR}K>GEnygS(SLo{nI)ISqpX%Z$NQqOgI~8Ea{D-yK5g|zW|Q`c;=T+^ir}f z$iCANckG*{gRL+#q#H(^wZ&%@L9g;8z4aXGt!ySg0ctZ}fduF-kEQ%3o79uw81lbj zBr|_#);m*Pl|1Y=bSP7Q&0KD433(8WvgMVMuTsN`r>ajUgV7p4$==3wkNhHY@lE5g zBx_Ru_70;fmP%u9gqJLO4IE5;ZB&~`M&@_6LWga_Br zhpaAHjE&Qh?Yi9K$qQC<`#{NU$*xjpszum0k&)xm{sel2bd>UBg5+w7zMZx;l)OLQ z5ArXbPXmXtKL~!I(pAgjLAV{etYato4e?gPE>VqoG9OxxXPuj48!JOsNSQuXb8!9* ziSs*94SK5)Cp_>UnNIlYq@Q+nbd)R(jGht0H`kGYyOa0170&-m;(Gx64M>ktxmA)E zvxsl+Bz`WPsWkdrX|_7}=jd}^^x#fnfwY%6$L7*Mq8WWC=AYxrefflFuCrQcyYWi?T@UD!17pAh@FH-3 zujX0(&++Q(-TdpCXTs^dM8l)hx1}>_x@oH)nBGh2UzdpC3x~~2hZ*Zcee$2Gmd@iX zPx1d`VDx{bue}Gbp^G0c0dLr9T`L{Ke<%OORx*rdPxV6jNz(W^P}1gz#p#dY#t;38 zUPxa&{Tf|o73n)VL<<-R-UHR*xf`#>QwIQ(w*J}n94jzAB^qw-h4e*-biplvp+RSS z9!7KS4cV{!@9(DV=3iyOv++RV1D99TI%|$X^E6%g=Xwn24I7u*|L>Ky<}KVqdycdw zJ{1o(0at-)%0lUz2LUJljQ6n*tW)JQy=D0vW3Uk#YfA6X5skL7p2_UhX2GBac(Xb5 zTnDN#9#kFF+@zC#qxS|iCaosVz4?!m)+q@;dym0`SjI*xd%M;V391{+p{q~Y4#+-O z$+3~rKMZ8@ueRs!t@`isLF1lZCqnImL6=EQ7InC#&)36 z)uA)^5$Fy1=jLDMAbh_8*|&i&+F|HOv!9u3pU`@&G;+bn#;93CUa9_(bOS#HPX0Bg z9yWWt%g@70Ur(>qzSNe~&q&WN6pv*78PKqt@@mg#-YFv&v~NeJ>mTp3XQoRA^&ShFJ)h7u#Jja7%3GwC1$6LHV9GK{}FPYz24}5N!@y@}PznSd$s>f-wH=v>US0%)& zdT`n&8k1+}6OqYymoJ{`l*Y}u@>T4!Tc}F|-T3W!U2z}5vvPPloA<}M@g^4Dqg{2Q zSo+>T_K%SK_a2HD-mb>ETs`e1&4&V2rD`)vL z6`TKWsO$JMIQ7#+l!=RawKDNcDTmjTt?igJ4c(iI~*Sj zU4xZCDSgX-(MOlnoRxco7PO^}h^w43dIfnmLNd>LDF3#zAMM%1pUtyU?yrs{{Pmi1 z)S)`u7By}8B;u9br%+rPADr0{53)bag7UX*M>pm-=`GS<3dNJ}_p>8&6J2v}E)PQO zvsL~ot8IY#?R@VSdj28rt_p}teL$vdX-#z`@FyU>FJByz5x1!9wLeCpa{!ifB;snRueX^$GJ8aPw2@`F3>5 zLCU{vFIc1L)&Z?6F|3m3CT1Rs#A?6u0wljMRIQ_SLV+RxWT3|=&_yo@C zGnVa;uZ_ZJZ{f`MM;v*=&L_-)#p$+y;ROW$=5y{q5j&K}2ybFDnM`6=~$8+jkB zJjQ5S`Hsi}IXjND%8>&at1*7}FKhhKw03}U_2w@h4MzV}eTQ#TzBICPAL42$Bk$4| zuqO~_!mJ|6m$Z?AnhT3L`-Yy+d&P`j@|A^jxqpEl&$H)Ce>Y=$t+ldg({`qgix{(cXTdwl|4`1q1m)NzR1Rm_{zzR~zD$fO3LUXXD}12MIeP&-&-?lESL}1f8?3L2 z1~#G&(vB$yQ@5S7ThH~(*o0!*yTiXd_jiFXC^ns3;r_)~a-`O*cJO_rVh)u>ym}|pf;#+ zXT;gtTslW3=<()3<@!DN5_}BAW9iT3v^Q`3ihK7s%GsiECahGsZ0? z&)H$6i$$0#k43{)h_zwleLL`SAL4;z#JA4Qmab@!Nfda~$+E4?THL zb68J+T@vxY0O>0+?UO^F;~4NV5M4dVPqFW)-+TdR-5que zbUF|Xx0WU6dcre}m(x-9DJ6Z)VWDR&3ta~T>21=vrT-S2ukOMniDw$P6C6N(M`@n| zV{;Q>;kf-z6)*u#}MCo=wyRb z)?BXjrsn%mCok||GXLH1dJ7<5L-Q2*X-})o_4d~3l4h~ML?s-z?zA1AaZaX8( z#>}}PbFQ<^egzEiGUrK|5$L$gxha#IrWWVBHN!bKG_!@l6w4fqS!eyGW0AA-xa-?D z-W?ZoEwIZ%&a?T}joxo|e%HPU=KT?w^MK5mjUCK${yFDn?|Fb#H%0gL=G?4vv*>is z<|RWnf%IJ+ez6*L9>%$aJi`m+U-al&hsz(AU*lXpx@WTwgoe;2I3+hl7Zg~F&J?PN zh=MdPOrm6YT*t}TFv8Y85qp5E^w=81e~tr|>=WTIV#)t%a{zfqpOG7p=zL>8tu_sP zHGb{IVR+-reajAUF8B@DkiKD%bP(x&5&t~vQ5v@9@(LYhOvgT8vO`6+K9I43(W8jR z*qcpRDBcBSqIn#BH@JhnIn*C%KB6-=uTWA||6Tl%ID;SRTV4CGt1sP5e)b|C!<}#L zpf^BwuKhYhs9FC*K8eTVF@a9WJ}?cbaBv9xS%tVZ1hR+i0`GPs-krJL5o`f}RwvBT z=%fQ|zxD?s4(WvO)V|}@Ufa7Po8g*+(VPl2YOIh;$Mp03MQ|eYuhS6^$=2hPeULG4 zKz3WLt#|4IdzwfeS(7lDw>Sgb0bT*0fT>_6(0q={LT8Q7ri0JH+u%_kyYhkXXA}6d zbj+RGhhJ&4w_2v>%g#&{?$ri>^mdIYa`DG~rg_OPz%|f3UUf=#a>r2b<2e5mTm!xWYL~^vQA#+Kjq2HbK=o>r_AwT(glZo4Eavt!CUN%B)Y!BXx-}oJ z_E*X~<%SKCp6dEx@MdYwv~Ne|RfA7vFA=qqsDEYB`UsRue{a37viuj=IT;H#(7vr$ zlD)~96R7l|euD4XlSWOxO;;{IHBLX9x@3ITlBqWAZ-wXBO5tIWy)xC0(g*EHTII~k zmz&p~zAst+Z_0VIczc5OCZE>I^>M0`(rIYNE0E4xpr>@!`aR@>e^0(QX7(`G99*T2 z1U?UmFyA+IbdOr+vz+v$6CA1aTV{?L{kIZ_i~^Ez#Jv+J#aFMKyj1Jm`Q+i~u)ocG zA5mkQau0_;>gWAxWB&owqFwRI23jfGaXvbwrytyrXs^?{3+1n;hvr8U%nN0{>9jZT zmgAq8k6t~O{`fMO1pW_P4y03vU){ae)8D2M?=Gy-usTwyp0WpDHb-YCuFXKTbRf+? zU4*aIa+-_an(qNf%kQD5M41=}@tH>MWBZ+SN3(lqwaCKX? zv2+R>T2lMnmh>%{QhDQszn*+I7BfF4TV`h5yFauAfg4A)&X3XlvBOb*_#_49en(w0 zdrZ;ZnA>!|qf@Q4-FP)t+YT6?rhIisHe_eK#W%d1eQDhHt9ds47xHdd*|k(Q8J%k# zX!s|nR{xcqryKc>l(SC~{zJJAo9}36Y(Bd}S8w{iBuMXNa5gvrTn0V{y~P{xY9`~3 zE!4)o{r;s~>@o6*IxU;w)gYU{y>;K4Jju?}InlNm*37To&dVQkj#c4JHFb_`n)=ec zY!oX{M;7T%qh<|;>DMO`rc`@sU&>=Sw5UJYC$71ztZ|w4B(`Vx>-ha|pqw#;G=PTQ5@rhbSb}P}PHK?4&foUM$JJotVi*njjba)Tl!=pVot1PRPcCL75VyD_d z`eB-VceVCYw4kRBvf@eDiNW ziZat-{4^N*@cgzK(DM>wis2epxQA^|Gxi_a+yT(j+wEQaVU9dFTy`NHHs3zBV+oCw zAE^a@NOJ^m*@N!Ex?^ND@>>1rT|oVQZ?r2njsH-eF)>0YKo^k|&5 zI?%UmyLgmfT?lKY#iLRD_Dk>|ps}o*hiaa&CHq%XpRU7vk1rIGz32H}O5d9|wV%U{ zJ=e^&Ic27`&nedQs?U!GeOiY$ns6GsY79{A`t%iPm@?}F{1LCFfR$CB)pvOh$)(Kq zCaezm89062shpJuFP|%U{Uzi0F8;`-0fv&^vsFy9JNo6vb2B=<=GcrKI(rUSb_YSf z+o^9jo9{|hi{4L2r%7q)NNUYXuuXQ2$3b`bsOE3dyB@+;zo~|XYWpd4j_f&3XTJgM zqh{7Iuf;pBSApjDS#Pw8bXFa9Bw>YEJ54$dR3WWWdHN+ZoPr&5bVPj^eQfp`V6DZs z?{fAiA?!ZD^&c%Yt$g8Mb?dU>Pb}uxoWo{KOTKq{@?3S|Gw>YvA4q^=;!(I)0Ja9~ zb|@#Bd`t7 zUz+bav~n(%&iRBr8QaT1&G+bg(cXjKM6+num_GoDjki#^>sn*_{`!LSWbc3m=^64V zD)fFazdw$QSVm>+K=}(x#$8on{C>h8;hQ%%=UQ{o&0On`2=h*f@#f2e>c^SDddFiU z(>?r=U0&s$@7+?K|EcZs7RuIUk)-){8A>DdU-z(kr7ElU( z`NFCm?ya=EHbmXSpLID;2l?JD<@q1%bbFU;Iz8oI?A#N}q^^P`F<99QRO~UC&33Zyk3UXM3p7yQ_CsE%g(GPUm)N=V~D#;@#Ih5YjDL*>#;I~Nq3J1kr~cf;CykE^8C_N%+G%R3;F`(DaPI~}z_Evd(hNSbGamGZ#;VV;eoAu^JHi2J=R+VY4Ba)JjlJR%`F=4+eGd-pK z4cHWzwyQM7pUzHvV$JwTeh~fx_#Ihg_UoC;S+ctYJO+-%XJMq)1HJ!a^fk{KJiV{} zknue_mf6SJo7bLP{}nvnD+-JYbA{mzZ-1vEruqJ7+S zm@%e&=*Xky-AHE$`CXazGZr0Vb9goeEZs>M`E)q;=mom0@iCDvJo~;8?&rK;s=km- zW12Yr(7|50xG)<&b=56%(@iDPZb%D&8D0WPefW9L_-)q zOt&t%`7U&}+tCeGb{fw+{8^8)X%fl>E~eX93CZ_dvP!z3lp>IrrDVB(Oyy78nvYK8t)SpmUzp*)hL2vtM*tl7IFr z_7i|l(2YC{v){6OA^dxCe;!c#`vS;LC_O(r-?{G9UZ;bPfX25c(=X^75z9w?F_Vt$ zqL2JdZD~=vanZ#0azL#obJmopKCv!22(LoEAzW+Su=w?BpfT2^;5zhu*(`73d?RP} zTQc(;XK{Tb*a6$x%Itq&#{Jx@EyItGz@p#usAN`=U(P|K?xid;X|tCiPq>a-SV;Cj3^ z09BYNmNiE4XLvZqA_JN05z4TxA#s@giT|7$>}IE2{M?@dR7P>2ysI2_twYyt9hk&* zrp}o9;JvmLn5^imxH(L{a`qKvLs1^sEqa`}b`mgkHM7an&LwePceMn))l4A)6mT;h-a6rAkY}T49m44!dY-?fP4CxR3 zBscw!%!Ki4(44FBS=|Z#9{~;pn4oDwo%~vD*);!8oAp59n zkDq|s!9nnU6mu4JTx*PJ#s|ghU7Ss=_A-to8CPI;VXS1%nwJgp-KI42%c*cXY53~d z{}($%5QMa57+}i+*eL76(Quuev^Gd^S!czeFh!`l$qH}cMHbbBO@v7 zi_EikFh{BK?#qYP<3al$fb!+?y3lz(Vdcwp68vA=w&&K%4rcrXGBPSizY&eL%Li&p z>a5z1_$^yarEOv^t)l-+KzaC2hws~@{k|b-&8>(g>Pcruvd`%fu^H1OhY#u@UsP{D z1Xt28Y|HmfmL}hg#J3_mIGX30qyH8ZYFjQ3D|J>`sI5MMOgfhHO7U1*gW81TW`g;N zzM|7fJ|IKKK;tyf)BHe&w4*_d!LIxP@!u_nujw03ga^yX4ilWqx2Cgn>1wx&zwR^0=*zT8$)MIB zU>StT^X(eb#oD#*d10UUYV%)hF7vIQRiWcQKS2JgEzm#vU!fn|+K$evlWx?T`cX$J z#y+RU4_*4B`Y5-3{?N`EBkmoI1o=*@Gj6MP{a5^*ogGd;90~41`aeV&v0PsPT#Pnz$%$>v?nIS_bl)<>t4ZSqOH9CX%*|4Mf{m;#;$nun<6xbRbKsyo|3 z)+Auh)!ap;565oFo>K7$ZO!br)yBCN^?eq$sB=ks8?ZV$`Kq-0jk%T$?Z2Q_b>da{ zzP9EH(-oeJ)xJVn)0t$=6ZzW<$Zl8*-hYSO+dr-S%w?mL{wLcY=+HMw^bOHS;K>@% zCRuzZ_KH!Ned{XL1cKoR^CQghI^RBFo~tIjmwozV<~SQPpJ@9SgJ#x++rGFdhm1bH zE#bbZ5sjMjIV%wi4@!jC3#$U{!1#Ge=ZWCo?0hq_R_$B!U~8-YZ=3dU&brkeh*X-JA{W=+s&>t+kFGo(oyLtGa{Tcpz+K1NoJot&b7IH^v-Wm)0msUTN zuU>^%i|3=>5%w5R%ee)u0az)C%=oN~HlQ{C24U?rX8N{T@m}d(n~FvnH5c055e>+% z+K=azQ%8$~0fVB+E8vg~_cCI6a z{0V#^Te;bvxwq#tvw8C^GH9&q_G+`G9^n9cV;UbEv+qx>`ZI5yq;qWva;`bo+&SNE z)>;>RQ~43XdEc$Ywff1c;r#%)Oy;z51$&WuNx z8`NHCQP!NAy&k^oL-eZ7TuJ@s8(x$_k!zD*W6zy*B!G{f**~LJdYsGi?6c(h%iv6~ zJGPfys3*s9eLt87vcuQ<{ww-{Ev1h}?c!{tYFd-(DC0v0KS@vMy)=eX%~J znESsn8V-$+o}jt}oqR{c$joK9)|_aq?Nr_I?O%LjaTr)c1hJ-yyeJ=j`Ibnx?k=8M z{l+|NU=7i!Z=^)q*@u!bWh!lKo+^t?fP8amMPH$G+56kSfoxUThn^*3ZStcy0s8x@ zZ`Ezs1Z8JfhX(b#g%d&9bBPHM(7T&cy$CK(6*H zIb>T;NCsWohv`>7&Z6$ux!-Vf>k-c-`!&b=av!Guw+P01%}Zn-wms8|u@4x1LvtUd zU;Jl3B)*Y^uIW9DEtkHT-{s5X*0;WP{*|2w)#dW@)3+rx*9Z27{yBX(4-c{~eA#UN zrse&`WyPwOPxJ9<4RSgxQaF@(|~~X2X3OIlmg{qFWaU<|t_s8c$Z@ z+X*heDt&&7d8Fl%>}inCj%dD3DnHmDz5}t~DEf+hfc!yf={w`)!$%s!XpY5uB=pUU zaABLR(#4*`#ZTDOPKpRMDKtfd-6_i>3x%uvFIYcK$*Irv8C#Q>XWz3Dt#?JT|mCk%gvmd z;Z?8$xop1kSN0ws?@*T8L}KVhd~-41SWRsMdxoI#!IM?av&+L@Yb{ZjKFE7W9x^w{ z9)kWep`)ku&rPGy`M~)sk=fk8)-l+@fhvm!IU7Y3qCfmc0!6I!^KF?+?p}yHr z{qKxiMSUAgIt$fB&;AA)pHHg*FVN-u>RYS;Wt;CXGBE02kMydo2R*@e&qrwwo9x5! zIhQQV2&H2Sj&_H>f6%P6M zzWkzf&Mg4R1Nv)?J*&CaA%JdqjPe&lFUWNyp)nAbFNe_syW?NEzfGZ?t*UmP{hc1i z|J1h>G+YbHO-Jva8ukYk`F_1O|3?0VWs?ugs!*D_=>C##+pm@VeS0q*k-5`o|7IS3 zSLmo_Thv%le*OgJD}_;eL%Ng-nnvS&r`8(CN`IQ%#BxROB+mr293 zw5L^R_pBFNxUY9Jt~JB@MkVPS5303hHBNpHi?RQ2p?%{zJ36eW-^^JwLr=AAgPqj5 z8}Wk~q`H@VICdGM3v34sZ-P?mn!?YZf8Q@OcLsY3rx(%p+%$uHv&Rj*^izn8_c5XqJs0LS%I0~NFUk?I-UZ_68O_X z*dt>B{IM8kDo?o%^);D!59yxO)cG!?4K}JB7IP$7$D9m@8W|tmRYIPNsR!OL3EJcz z?bw{U4%rE^c%=Je4BI}s8fCB&<#Z~vd;s#zA8Ncc7yJ`FVuw^4YtJ>N$?VaQop1T8 zq?sQJN9IW1`YrFpfS0~XUCXw(y|Ir6irWi9`=`YHW*?zFcvoZQO3{)X&xh2(jb;0b zVJFBw)Lymkjgj9`ANxxgd;L++a~*gLJP%~Qe+ZmUxLx?Z{jhK>X8Q1Gy1Q}jgREN( z$@WGYtm=M_H{lB~G{*dj_*(2?$}7e}R#icYw+D%T4RrNYSH?k^?*^n zCCR!FWCeKuf!SKC5L}A=Fjv42dbxD8ZIJdJkSq%^zoPw$LN;fl^Wn0C@w6LC0s2q%4P<4-e7C|eh6wkBcQTzI3DuIq(#Qtg8i&wseS_7~B zNX?o4!?wQyvkGO))IqHmu;a5;2K$n>WL7p!mALOje*c59^$?A(OFiU|CEWyQJbYV~ zXmsbQ!RB$SM{?RhZ*N00}`F$eP9RhQ5Ey`E#E-`zJoqU{FmGjDsdRw_MG|3hh<0ol(FG`PxV@t-tNwlXJ^qL4N#ip9FfF) zD-v&QF!5F0U&B9xbWTU6jFh~WkHGXm+Q{>sw}JLb*oE`a?tL!Z;X3rM zJ?Uph>iZMoWd}Mz3SUY2QyJMxJ_$pg;mAsjr#jL}{0~D`G=R*B`ZabqmbhL5N#ISR z($^Y8oME@M59kO`Z=kgjhxo6&#}ir~X7(DXraqL-6P3dg@bE8S*L2wUZZsNM5)BTZ zUN>Ma$eeUj*ga@v>>kb>B%k_fhW4vOgyKGcG!wDW@#N zf638QG&GoWnt|j*E;_39EJ1qG6~6$_fSbTYl*u1Cp9nNQz5v_}WJ{2osdjz$=Jh4o z;d=U3OteaSakKX(c3fmp(6cUrbT|GI?kcv{MD z>I2icbgMp2ap6 zR2kd};y*NypuR$4anNO*a8k55Uj=oyu+!##=bE#~XT z+jDHI6J0o#<;&KaFd>x`;8~ii|m|4nOj~Ew>*}HTc|JoEq!5 ze)?ZC-iyzc|4L|6XuSngbMB@$%jI42awPUZeJhuFIjyrV&#u-TKYRL{=65<`Y3BTl z|NV%}xc_5l?XUWg{87}eZ8GbtH!5nA?J187y{EPio;Tgh8QOtab;!zfq5pF59q7$E zTTWU*>`5;|?@t-?50M=Q!EfwPWZA?z*+ z*s+*v4lekfz~avT?EE=CB{x$J>a&@rWezJnd$xSWSHK@z`qS2w*H6Gfw3VZ{=eyv3 zzC{IO_YeDjPun?>>*JYsISe`eQ?9oI>!ZhvPDgx=QR5%vlyyfsVZJ4rO-HTn(HRRL z*0=>>tR~NOo!w$t!_5QBnnWJzGS{mpKa+H$3ywz5wF%@rX7SyEFeYmEd6Vb4UUr{1 zaNV4_QAF;wBASwUu9Um3$Jrv%Ihs7zkUhnHP6ExIYxmM3FIbkfrrOfrDW&&ld$4yyq-Pp3=xBe4g?QNWDYi=Vkt-Qs&Y1*k9(Kv-MEyF~^jR|93 z&AjXg2#1O$1?M1;39=p+&3c2jQD=?O6-S-5<|dYbbHC*O5)Lfkz!DBD;lL6OEaAWs z4lLoo5)O3F0jZeLFzeT_VKWx5>q0nljZgOdXRj^IxBG~e{Ms)$pmL3|&llyt17&{$ zcn!SC9KC$DPGF7G>N7rjfw`rq6^YKr9@;nNv->5p`xw#kQ84R`B7p-a>;C}FZOH~L z`>A|~Wgo?dDsVkEzH#B$yuoGp&l3+<&@DxLCM6tE$i^%GjxLb~!>ZDjwgHSlrYj`II0<^MBi`87C`-UGw(}8P!YfJc{9i|P1{ky}9Pk>w2 z-JRvDFW))Mw_E{Fx3}9u1Jus6&QvJ%5Z|@$lGCQ0Ik$KsxIE>*3+p$2OZi_xc|JmV zZvy$rd&Y&*uQm3n{$jF+TurfXBe!DF0tj{#%41v0>a( z7aVl9w&q=zTx$OMa(LB$a4dPB2D&TvT)zc)=QHpSd^?)9xuVmT_>r%3^U7H14-SmZ zVdQr>5?zM!{|P#W)`{E?RMskIm9OUgD?RV6_(cD7@F{p5+(kZ42iw};&l+fC1pMjn zY0pFE{rZR>UnT1kvQhnJPs`t}6Osv1wSnKhCbWDK{(-~hMea9pc zZDWtQz&^BX`CYvP)IOzeC_Xpt-aN}UUh+cgPSwx-nfkb+J$L?~xco8DGh9@%3~Cuy zX5IHL%}DEMgR&uu%!cVT?=-)0S%eAm7JYTuPeyV7x} z{}5mPjZ8R=vR^Bz_M&~d&`;btUCZ(-H*Ne{Ud3?UYWuP|vHF%2h*BbYoxc)h^ z=1$J<0o9XAmsd68Q$O@7b^2n}U)xUBX`P?GAL5((zNri4mPIYz*IvH<4rDaC9FUG* z4IZi;smxU$QdLT$8g%E1Q?lwEa1-)i&(1`6p!P1-I&bPmEsC(LG_@{+yh!iekF#{S zTzOvdY*D_*&rE&8b(H&dKGv0MpIZ96lJ;*ZtMDrHa+2==BopoG1D;$`{w3G{7(9Cu zeMa9rUANPIP5QJInm@hY^a-~8nHBNJB?HbUFMU-P>+3Q|wuh&|(aBh7X|uLR>(8-S z_Vq)4oo1{X4g3W9KLCB5*L|5j={T3u7pyPGGU){|v+r8po;!2)_Y4h(_J@{~f7$h) zITZin=miI}j>CL&%C?`TKbY5NMZp(uJ;pwl`qmF)wd(F;*q7UGrD>C0@od&BtP*Z# zU0!-V>v|U6N4&382-z|;&%(L~t-pJFi3})P2Do(zJBR-UYz7-@9|U7N!j9M%j}$ho zjznlF%6{^a@~>F=s~%{q_yF}_+s;T^1J`}hR*=L8NVI`dfb8II9bR&-3@@IAr+Y*r zfkta)CV~8L7^?6^OYs#UzPg*7JNO3^@QwEp*?~6md#LebqQZ=5Hzy(v?}>u zB1;@w_<^xVuu9Wp_&zaBu(2DrXekNN{_EY*v z`G=vi1!%l2NN&lOqwmYEXh7dT-NE+bgPp|35gn{nhxRr|u%8O{iq+uV?Lc!IeVK={ zxyxtyDsa5<@nqk4Y#1jpmvIZvWXr}D*QfI!{{9nPa9!LLt(jlFTa)59K00O|I5+}& zE(88P&bOJ+cV#LRSihA$b7(`3kGIJ~z?x^zsb?%BTh_fm^`tM?W7W~C6S2^88h^=0 zy*CeihezK}iiHB&f9oV5zuLacFZ_G`r!$5cu5vf~8GGj0oNp1aXN&4WBp_LK9ne~a zzMQ9-j0I2QTL^>srdhB05ClRoHsknS`!vfB{C|C%Pb$N!&`(#Q4w!k%d~JnrZXMW& z>&N;*zCOkm`+)FNyDkyR|2@8Z`R&Pbca23X5*S1Md$J$!Xeu&tT#U6R#pp^w<9mF) z>?}u+H|dFeSq4Cx|2gK4H%RauvY2mnPl~kYceI|0y?Cuugm1q`{1?NU{@{~&J9MrN ziYkA7w^hE!K;xNLK_4%FQ%A2%$M_B=^KsGWqTkvpx_}D=RKMv<$)`Oy5x#uc4|rqK zj{k_wY(#h83D3^9bOfL}b8COdBQ$=74dx&_G=nt~U7HYPXREAx*?5facgTFhU4BcQ z{ew5G2Mb4rCRi_4?BVz}nQww#(?9ZPWYpuaXm}NUV_f#ZN*^kJJJMc<+&>$h$UnQU z%SA&UWBar5xgV+T_Y~9ryY@`-yC!+Ov%lmMIvL{x&JVQBt*dnTYra9cGd$UtG~}1x zFUmec=RMeY)&%U|J+ol5uVmB08Er~HBR zVXdX^Pwl~_^#=6$)nn-P#_pFj7Ifw@**hWZE#RJ9$kv@^Uj2M z0;GXkclzV`f8=dTQ@{C^TTc&_e^B4#i<<9(w)S(Ls2r2zWh%Ix>*L|iUX=en$hO~c z|0s|TV}D<7s(kv<0k4P$>ATA)|4zQu-5CrHC%!j8e{2W2Xzm~{>JPMbS#y@^(`4t> z`tyEb($N+thWWQ`yB^@LuH)MiWPW9rN|K@~Q^CpJKz<926|?>;Rd4-hM{; z&sx&<`>pIlXZKH%?Y0=(w_6A7cJ^6w_VtxdTtAot@3-YsjW+L%Q@ZYpl>LB`%D;{M z>)PA3u21`NdE;Ah-T(OUC2je~rSt*ljoA8w+fw$6tKP41p5_JK0iOWb%of+WJ(sfo zT`A>{Pgy-U1)eMpHXm=fYF+Ka;9zWho5B;>H8;Q>v=e9TWit(U!!HikG4gkBO#5dR zv0t(J33R`D_;5Su55DllmQk2Fp!3;ZWo`Ur2Rh%1bo@Q-m$Z&GFcQe;uRr*+7Mo`` z-22)uHxeoA8>aH_NF@iLGyWG|NPlqS=@629|c1cl3A`%*>%$AQI3_q&BPQez6Olj57%RwCiYS2XY!AigawNFw*1 z@uipx2z1{E&`$7uGP>~M)CXS09Pdh$XIFdAbrFq*tUx@fHEm}sMrH5T;ZG?0p|-z! z9>^a8+(G^qr#YXCSud+^j^`@&u4lA;D|($73;cF5EdQygNMKFSmET+!*EAZ4YAkRxSe$$TRDLtSE+DTCV8;IPhjRAw>+e2LU3C`O ze-_^vTBgvqhUEK?-IFmwaCgq%z=y6l7K7_Ke0%BVpxg3KC1M%_Yfsw6Deq^dqJgEQ z-xoSGK4fj{D&+s##f%5i=VjBa&&LBh9I-mX;Sq#c-0c46pwr5}moMvG&m*yU)(iG+ z$N~S42`}H5{;@Q*dPP<-}Jav_Gz6*V4ED~+C zEVk7_UtEKCP6b-;=m-5Jzq#nd-_d^!$Xoubk=5FZ3;Jt4h+x~i1>`M%_VQyNiO>e*adGqc(OCAVK--*# z82cnh&n@QAx0+n=PF*S%Qa$(+alHuo+njL}J@{Ubzx=~tZ2zH+7Q^zF-1;Ydz`C0E z3%37wVy>Nawa(hgwn#@Ek`l(d}O20e>ceA{v*i$NN7Fsv$*yDuHGVFpMw*@ zz(9@jw7#JyhrZEbpf#3}*Z{`V2NJLLLh8#lQ~7e-2J)7FEFP$f#{z2+W^pZl)q~f- zez90!i0r}kn_u?myUo%eLalQdC+fSj*p0#=@lE{gtNnrKx)J0p|9H5KzO8+69RIoP z-#x!a`#(An@{J64@Evi!$H<&_PecLbu64v=%Z~Al>PTobc7{9QvDTNlY4w#eJ8d05vi$!Z$#BMEFXs2l6M0=vz1)t;kRR z7tcN0H(+mL2fET;LJFwzM%$0!>ckiVJcT>FX)n1Sry z9duj%j1L*l`0s)4zA~1PF7+X0aS1%#pFJD4LC)?>8OcXOcKP|Bl025&dzm({XDZ?w zl9W$q3H#_kBjs;=i3ekA=u5ibH0ap~bX)%9y8*~o5Ph-c?O*cq8D#Rtw%wt2W%le* zKdbMLX4a_54yS!PDp?04v$Ut?;mJ^-QRS~PE%p$7U;x06!0gLcDH&K!JYS-xj>_fx z?9CVcujoL2&2>oLmXlt&@2VYsP8qBZ>ZF%>53Ny^yzT7hkiK#=sK&Va6Uu&ndcQMap=1Qfzl-q{O zd7m{4f&D<<@ro)1?cZX5iviH8wVdUom+##ey2q`lWMVK*)H&;6zK7VC`A$>d7tmGf zIpbF9@E<_8eZTUdaWDHmEep-HwgIqaC$v3&o88iEx%!N8_e(AR&i1ytbilWKmFX(PORfFhqnN(m z<#QT6Hx&!ZN8&%wUaNTk{1yC+>-_^QTCLwGyWnNPc`3?tZg(tP=r_l%V&=bg zhVGUc(Jr1$XFh#R%D>w&pvphvlO=oWw^g9`8~T`^tDh-kKk+gWI%JzX1Jue__*-Lx z#vX0k^Sq=LyiUfWRw^Eq?(znxv~9iE`reKndMqfY132X$g5UlNpjT_1icOVeE1-KnCc$-TD3V#CyYk*@MEtVd&mlQU`7%j#B#r z>W%-5RM5X#JQ%Hy2l*aYk^W#V4fxRwgXR}VTY7AF`K!ins&m&R+LEm2T6C|gV(Wq_ ze@CwFPkgn~12z8qhH~EsuokcIe)g2T%HIknjUDqx)PwDbV-nDKBHz9?($Sx#z5JfO zWNb3(8$Or%lw!Y>V#j>iKOn^(LfCxp0Sq2Ye6`a1KV{r8PTzkimiBygLf=Ws)a570 zPc7=Q+DDwc+`?F9aM(ZB3i%4lv&{bW^kIH0lxoMG9T)}H!nXmL5ZIgYIfl8JUvYgD z*pug)LtY)eEn~f+z7L&w8h!r!;&mt6o{9YVj_*meY5q)gtrqhq>bLF=`+e+j*}cw` zugtyA+h%;pnpylIqyEE*_d8Gxc~vM*=}&VQ2OJ!eKLGt}p}joZJS?aOv<3Qwa9dK} zv2932LPOHA;8NxsYHx_NCrp`B{#Gy?&ACUQ8)vRF{1K0&dkhADCaqe{oqUNNysz?F ziSk!}rf;XRH=5SXJq%PZ@#AU{<8^7;A+bbb$Nq4P&*8~>pEhiEKRse^Svs@EC|9!S2Xf@+j+F>xYK z{g2b1H${`dx@fGO`Pky^nw8>*Hy-t`+E*|YZFhZsWiziu*^7VgQx~`4Y{tS~I?K6s zbn2k?#aW8D>4$5&FEsu*>}MVIt!%fdpVpY5G&xWXFTC#>IU-%N6+Jr~T#xqgG_=)9 zM`|Vg^Ai3U4GH?|N*~0n_RqN1zXf@G7ZlT8s})B6823}|8`zQ0j4Y1_9e>bD=R03~ zZhzm&ntAGhY$T7?u=kZlt%b5#p&qsDy&!h2HYmWU9^Fn4`RzBC&D&Jz_#W&pl zEWF>VBNl5={}f}Ms8pSxRE8M8<5}~}nt)WIRo{u${Lb^BR(g?mHH|*#*tu!+7+>-8 zlcnZe{zFCvgu|mb-%q-fK~3v`^8P0fh--v$!f14h>K9z0OkCEf&gm_V0l?GuR^&eJ~o>k+lB{ilwuf z;bh-?6j^XwEF4;)lX|K#Vwyc$qOH@>>x=W-&(5pv_3oT+-*Co2(lt^c>G-=Kdu}65 z>G{>nS21xv$r_dQ%^DSSk!l~}M|SZxevSR|55%MLaTfj z%($F&xwH+|=@;R@p*#xd1aqLWcF{LJ10wXp4E=lNsCuloi%nVXni z+Wc-g^&}SaS#gkv`9{Ep%RxSyYBs&Sbw3N5o}#QSrJp)dI%@}WLLt#?^jK%EP}gRC zA7gi|FOoj5{>_A8pD60UK+1nZ?vLX6)tuh|8h`XwKDtXsK1FACCZmHp=<{q}{&|sd z$~xb>(tpLX6yMWmMvD^1f+&cR-8 z%XZHCl1NbUF`M2c_m$&`+Se0|@wbfn=UFp9f5ntRt;*lj0p`b&p;l|YJ+&U2v+Tp~ zEvW-lYXh&q+nrlG>F*@1zgP_7btf_~5d?-jeUeRzv2!fzI{QFYT|jHp8<0 zwXu1-WuASG#~CM~heqZ^w10&3C)s7H!G|AOoRaxd7}M?%wnO!fjk9-k{p_;NcP}3) z`AQ{xv4Q9U2SN9npf8M*`)i%iT+(y!a%X$ymB?838jKgejw@d|Rr9&#Lt}hL!uCCk zP8jM7w(aASiB7PnEY$q*d+2#b zQ}+0d2d!wZwa<+4%Be4uJN*DQcYkCc`((>bB%A6yP>J@kIK&}dJi?sncJ21OdiG$i zsQ*?uWmlMB7H(T=g>&zuup&=nmee~dYRrV_qmk&f9MmB0`jM|VtjYF&>jbc zc-r57mn?|;Tdj1`XFYZ%>#X9wRp7-W@KL57EKc%3HoW=FE5A*@cS5^x;}rXJ{=A;!K*)k_dzR=4Xn4?XQk7TZZpr6JNrPSgZ|O> z?D=&a##ea;`R+ZRor)G(6(W=0q8(t3K?nAZwzm3oz&{$F`rpAn&3Vagp!HP!K_;lJ zi`E(78T?F6NG02s>+G0cpPbKFetw(wt*!zG7mp}q>#*m|x7are|DrH+%AujG$=ek@ z3I8j<{5B*L@c-{qbwOn=U0&n3525u6Xdcfvw-Ng5D1X}eoF(nOgeq!$OVAPEA3iSr zI`$+T&=Cr*h_3iEczmm;E~u@^C#E-LgVK_}oBST<0OmS_*JGq~-WalrHq^bhPy%vzhE)?5rsCtF9t^F83XeEM7;J&hlNK=MI#LhZ7gK3(N3 z{X=CP2Aac={P~7H{eI3T;WzkW_R1RqEd!yYp));~GS@oO!fVvCvbp58NDhd%ogI90 zkGcTQnQIOVPW#)JMNaI*z7P0!`Y-3%Bj95oKUvj_cHjdlLod{Zz4r>Eu!8#V|A0HF zbAMuu%|v`fH%%wo*kdTr$aB`B2kN!YtJ?XJqc$AS9t}X>0bswq;2_F>Fl93o3}er( zQGAzg)l@XH9(84N`i-5iKkSkWw(p7^YFEPS5fA!yPlkN-*Zv(Cn{VC`53id}23KP5 zixK>;F*@t1`9@qgNO}AChQe&hdroaKTZL4qyOlls`pkgm@LQ8ScedSP4Y!%sw8mwg zwpb0O`M9sOFgiBwO-)V!?wd@$GXc2I9Ft6d1^2|uvEZI~7rJ*MSn#_;n8%f>N#Q;B zCPL4>i4fA=!$j!0mmpBqx{gWQr@QW)JbUk(vVK>Bou2TGS@$Bq`@0D6#wP-@@4fUW z$4-7Sd+LpI?}tw@$u_zCYie=tGe0=@5a`^GbE4tC+0v1@hhXPE^FH_HXDf5>6g7`B z={307$HArq^|oqCjplql)TB=g8NA(hYRkVl63C3u@E9AN6!7( zS@)u)$>h)}58V&<+>5r%y@@6Ny_4#K-*ewj>Wa_#-E$x3Cu>qO>6w(A`Z|t#hyKj{ z6z*Frj!A|}acP{nciKlI?@r)ervMdg{H z!~NY}R34gqWPX>tbO>=CK&~sm%mc{F5bpfmq&+DO>&+D#+la_B;ee3iNH*U*A-zVx-N>FGU43_Cb{)O{z`{crM_H(S#u&z^AVp6wfb_Ugkg{^_Ci+uA?7{8x8>_}0H0|NYC?>Ib}a z;jxDe|Lm{dHI9qFz11=C|6J9SKIY}O>Iba+Xx)yZpZe$3TikWjL(kp&&_fTNxaLEb zrvCo!S~q?D-t)V^J}G_58b7}Fq!qY(;qA*G8F9v@*S`Dwgx4o^KHjwY3IBU$($RJM z58P+WMr%K_%Xt^C(QIvSNAsA6UcPVqeJckZ8F$-EUq{RScYgZuHK$!a`I%pA7X4Xk z;+gd(?>77HJ65}4tvjOEY_slwy5>O-?i4=ifHOw!(OSR5E|VX;WX$hhx!~Jf#=Lm< z9-r^}^q_A~eEf`Y2X1)a;BUT~z2~@_*SmP=&7JRVzxpNvCY;;yk+0#DiRa()%9xi& z{pI+d{Px^4t;Wm4zc}ypHHSWU;(bTe@Aud@$F&C^9o95=`CC7p{MR-1-~Y}#Mx3|Y zfT80De{tIC6V`8DVdq_T-sOVx4qbZW(E2;i+jXC}tcwRf)%nQ-|2O#l2iIC-t>)eR z&5ffjny|*G2S%*F(j^}?TrqKO-2s1keS_!`6W2K4&+Qkix6Bb+9KOu-_Ot(b)cWIp zxzDffZaVLSA)g)?|KO}^j~L&&(s$9L*Er$%i`QHGkoATS|Ixs8&RzeQ`q2$PX*%ul z^(O9r>3HjV>wr&=o&V;sKi++eDJN3MEA z{r4Z=bMH2fO#Eu(QU`5$X#0eg%JoenN_l{lX ztfKUXe>LLMtv(nuxBkcp z&#m#%&yP51!kVuwf6L};?taj+YYbUs!Y-!jPTbF0_ke8&?Y-u9R}A^<`X`+* z>9dC~X zuK~~Obm;6aJ{fV)n#+%gt$5N!WM$_AeNQ+4&06=P>Ca60{lqJedw%A6V=w>p(qHfS z(D;Gtg<3a0XYA&`9Cr7`H*Gn)dC&(F4&Sq5;PBVCIB&(hxA~_2}#{bEdYxbn?o3EkF3Ok!xIfXz0>`=N+`(8q4i=_vL#nef?%1+_lCn2ZuL0Wrc12 zb;_t4uRCJS!|T3s-de+7U!h~^3+9hGbmB9UU)}M5-wt`=;3qHpXtyUXx_Ga7Urb#0 z^u2alY04?d$rqh=#WAnV*n0XQBMv;_xeLc!^ysaf!zQ1w{EiKKANT%q2kiZ?rWKwa z7YcQZt(!G{sZX}}e*jrProW-%z$>6jqC61gE@FZKxDMRGdjOhro?XU{QPbW4|IY12v>ni zC||1TWf8e9@Bq;+(Di}q{I*z#zBj)@w^BlJ_-;tthR|FDOibjL;p@nEq$iQyH%T0F z<KJ)K@$F~Qsz(U>NJcBpk?(^0T~t1bArC1 z!t1~*SU7JO%h1a>u;;W-WC23O`~{1czug@&Ye`8vT-CjXFWz^MxNkm@&eG7OCcoj?9Nz-o+*7+MSvWppmc7R!s&w!6m`Hd=< zfMrD6>ZIGP6yhTv-_^$13F2aaOFRIhL#4g`9(&G#)&N8m9|)bJqbvz>Smh|_ONf67 zcmX(t?fBE!;?M7x!5|a71(2*jst6oG^c4}ksw!UrmlUr2Da`)l#3?&zD4-q!XXSDAZkK9U z92M0wF431jzk%)gXR)N6!>p)(Cg=}ktH1+Rgsi-m#<_^#?P<3w=U{glPg7fGc<%aG29^3tUMWNaxOuSC@RL?8ChVY7Hs-I=>zJAWy(#GY2%#cRT7ty1pA$qCT&h<*!O_-|l|A2~T& zA;EeLd5@uK!Zj*ISTqV z=HdS?7U!>$+xj_M$6-E!Nvz%5AysNoOm}Rkc(2=m@`yPF=I8hNqi&CZ7XZy>697%R z;FMO}qoWU4ZcLAg_!kj*6XE;Vu73`5=;Y*V2f<9o3E+I%jl81DNWB$*qKUiO(MH23 z1)@d;6joMDLmeL8Uwh8L3xJGXT%y~9YOm~K87mP+XBGY!)gOz<3s}qTgH_6vvm1;7 zuVeSuDbOjzcUR^{u8AW~@Ln8L!u^?2GOz+5%j{Ec5&pOUN2?!6BYt^Gao+&_F31lN zUd3Yj1N&Wa_B8?4`RSC^6-XkYad9YmA9Y`~hCW#w>762ohXJA0Y5`EKR`>dIZ-{|k zG!i6;c!qrxwv!jD2rq#CErB1Zd291@-kjaQ8jhgfK^O-n1?^6(ywwrt#x_}*FxX!m z%Lh&X)axC4lBQmi8)fN~l0qElG{P$&-vhp%Ci)DMFaDg}A+0XtX!_Vw(S{GAAwjEZv$^*DV#&(i$7=g30d_E z=&-_+pi#GdrgJoCwqwg3CUN`288|Qkpq@%h62QT|a*@M}oq{j8V+e1l@FOhD_X2rx zPtM*_z*30IK%~e@PlFn8k+RKF9sqhNI zp90^*cK*Tp%sB@UhiRcND-3}g0Xz|%Z}vJXc!>c9y@p`V7gHu7Jyv`D>)|rrk2(b} zatxK%5q^wi_dPcVpEoCG9U+!1R0U#`Wlf|Ad=?dYvr~76{nD5Rm#k*8j*ShLX)rJg zO48vkKZrU7^)iOYtE}1l$I0#eoWVpeQ{V-K63Qe(FG#}1!qH~aMTLX`o^ifs0^t6A zJ1I%rLpw#L8ZdvX6}l*x26;`CzoKiYy}8YwGsrlskf;hosN8iv@Fd~ILiNA9pCtb! zwPK05yRMpbK&lA$JblRpc0%r-Xavr?5rtP!{x|RnU_1YdhKGS{t2Rg1E(iXAD$pe5&-`2m6Ln@8CThLAHdAKdHu`ffNOI- zCTb%im67NS=y!m(6~2LWXvx_+2@s`6oE`}lWc|7W*81fItTjz7V8Xaa-adV!1Xz8_ z8`!y@S!uW0;^gj9v)gt~@X6lq{;&rE;3uEV0q`f^p62Y4A*r`|XEA&KM`>>VF!@ck z9X!wk>cA3E7qkh|Mu=4D0zHKu(3A8r{oSlBR(b8vVUP*zhMvTBx16U_6p=%~%Lsqu zRSV+vr>b04O}keQ0J|mtmeQ`O4k03;C}DY}9UZ|&H~k(aEhotr|3*lF4%XwolOEml zXaLLUv4jbN251|kCqmDA69S0z6nY}s!+PPRi(j+FU%>?OBqji+FdMhB?x1i)}*Z+zXmt^ufmh8`dLWi&DEwAnMpgGb9N2dOkY)Oz5F|yqrH+JgIEs1se-HFq zSc-3PPtU~Q(gj-S(ZF`}2MV_Zt}A*=MP@)|oDc7XvDDj@r6`PR@R&5zttg%%5XGK5 z^DSOEJyGiPl1Z<69Q3TJoCCd$^kUqFtHs@!b^&yQ%?r=Lr%whV2+{0pGzAeFn2qV(&?S`v}*7OQ>81ZiC*#)ca<7 zv_P7ubQ(jmaj`ef)|UF?QH8)cj!jni@Y3Dxt7nhQ`$XFybD*DN3w{C<0?(@rUOg|S z)jeC2G`7wVc3u(@xdF_!dVV(Py7pdvsJ;n+EXKLq>(WhPs!4%3jEbUi0_)fRO)S4Z zcPg!+nCjldcKZjwb>K^o&qd@5L2j3e!NPK@n*rNX-o)=W4qu%Hu18$ftOVEo51}f@kx2q z-Ig%&zOgr%?z^S|%nvQdXlHmxRK5ZHHLSoV5BEJx0^9+<1U>`(0+<1L0L%l+feRYT ztxgg+!3nlK?~xs;D1j5oVMx8+?v-k#SyVf~ZQwTwX9ZqTcnf$UYJ2dQAK zt7ldU?cQFsv+SDy_}~AZj{x|afAu`IV$qd4!8j@}U^l}zvE3oZ9CRIQ$Dai*fP5tA zZ$y)ep>`L;B#JtPVN?nvKA~DF@Sxt~Nzzv3 zZmkr45qbZmDmPH-Sg7$VYoWx0n&?%={9iGuU$|m?J6ax@xid%W^qH7?!y>XHL%ZV= z>ze?0`14lo;PwAd(&$HgE*2E49Z zfy8?XfkRd4bdxwN%A6{(A`e8lfasf;=64?Jw|@{TJOeCrdJOo!INwJ2`EzIWt7H$Z z@s0|Bh4z|1qo@vtNXa?Z>c&$juK+&;d70elmtZmcd2I224E$7`|3F0_h<9Ces<9TR zMay_uyG%nvgW)oHR5Mtw5zN)w43!IXSHi9f{oPL8&6Y>}6&J>{h&B~zW17!V>|QvC zf?y2c4U`_jtVd@@dWHH*sS6rVuiNb{WM| za2wdo|4TuBDe#FnxgABCIDtlag_1L8`EX_b_(&h;D_B^tJEA#TqI%4067axzSyW*T zxF<>n(*Vw4et`l9$283H15P8niE>||O;TFH^Vy8W%-lYjY zoabOq?oow%z97emdRCYuFEH|yrSrbSnD9b{pJt8WnvFg58F{j61d$Rh2 z0&TUJ{wKh{2KlAJ9f3v{^|eAsr7hHt#KgnjW2x0e5yIH@yz{dlE#QIG zDXfNsCpcIeMFGnaj1m1aq^qC{4XdG<80t?x)sAWa0*DF<&Z#^H{0Pf_ z8e8{I4jM5Q7yp^UFM$sQxs?z$9g!Zy%oy)HSbV4s(M{l2m}7Jv^v58__xdyLBEnjd z(5r~QsX;;j*J7maO@+5505Z>SJ+1W1zK@_on9Bb{;3W=jo_`Z70Qng7UwZNHD7qMG zp%=Sl4ZPLPluHN0EizWMU2M5&vF;%0`Xq2G&dZme%U(1_IF!!d8{uHxH&x&~=mPK{ zhM7RL?R6hS0h~xy-|Qf%f}8|7kE#C$wU>XQa97}`z|Rpr>ABv6iD)!#yNIGcNLudW z@y-G0&~TyItoQCBd;ruy>X={P=w5%uU8Dp&2hvfv=#|e`B6`&zo0QQXc4T43-s8+} z4MC0qFJn9Z2@Yn=zpJnSTu|Z95&sV8gU}a}Uf3m3^YTqr52g?pt=Y!DveHEq7F!X8 zgtm&i0`vrpu^NJ`*T6vt8)s&~^8zo5aHba06JZh1^;-5wb?5v6+Y$f^P5V%Spa>3J z+STX#*a)wKxcC7U1>RNL{Xf$nnG5gNqGY^H^sKu0w?Sa1L?bCQLXB^N{#M`!=0ACp zH6PMJU<7#8iQGl#qOxSswf-mpTM_`7?Z48oZYBu$$fJSOP+q{Q{Z4c6YQYuDdA|;C7E*6pmF0Qt$p)wSRJPCcQQh=3cIJVuHk*kj@5HO8QB?b*7C&N2eT;uy#Wn z+l5HP@UZP+MN z%c>lqPkxXsX#h9x*8!-O3rOGyoC{U;9G1;>j)Nho*OLG%px01-gX3e+2eC#f>rV05 z4vvUk$_lSUK?PAUA=9!DTbOvtort@KhGlFeDkBtuP(_@X0P01FG?DI~4~5--??Ho3 zDI^IT3M@6c2%dlhM}kl9zkU=WjipY(tZ^*PfvQ(w26$JjS?MvX<=8=R2!c63Ur^;c zzylGvt*WT^EUnnJ9~<8O{j?F14Me; ze9hlsOD8gl&7O^tB&ZZz#jBpcI-j1v95x4yd63_Lz7Nbq9q)s(BT39;8{cLc=hC_| z>ukr*j<8iE8fg_J2_~_)`6MtNBz`Qg#WJKq#gc0%pz6})oFGI9oj|n}#7Wjpd`YcL z`98{QEm>T8P&%On?SY2}4?Ojo!f-m==Fp*?ll57m(Ept}GXMHg%a>Q$jpeD4n^@K4 z6qZ{u(Z_2!Cg_&Njq>raCl{uSTpJ@k=lI`vZR;73kOIyAM ze1*tojd0>d*|+M6gxy5Kgk8`EzMDSAVMu4BhEoC59R&3(ql=~b{u_n=Ey4Z9ForwsRmGK$EbrKp$d9T;m3;peazQ%P`V9w zfOk;+m%vX|_(YVhAgjf<+d21JTdZ!i?Q98CQC{a@mU1p3drqJA(OJekc}sInA1F9J1!+PlGfYLRp*ea}-mxBWwN5C&2q6{Ayw8 zpC-QJ8pT?aT%8H^`I9?tmaY<{pZx!v`EBd(o&4sFu8+S0ZUWDvOmZ-UfCEk;@)mGi z;37h|SAbG?yDz;-0gy=?*HfuJP*#q}7$T<>eIDC&4xRvj&wvZSLOXf*bZ&O%U*A^i z`u$~GXnusqL1Q8s6XgV6o>Qx{cnwqePqQ;BaaNV~=shutQWO{loeB%_X$pK6c&@*3 zxZ7G$QwZyI(^f`CwjTgGnx41Y_nH9wyVI}HjG`zE{nd1?ZLuik^yW={HM&nHQ4+=Mi2*`F~Z2T1A<0LJRQpVc6yILsl(WZ+BB~g*L@n zrXN?UIhpL!cOE1hrrn*yuETWm`>d$Y#C$i~VnYI8HTAb;GbB+8DjWx10y%~`nhp{k zSi$V%Yl_SOovd^3cx`J{theWF#|xY=R4P&moogiiFv<%8-vRj^HbnI~**#y2V{Nw` z1BXKl< zYbqovvYP(AmGte+X#knVVM!%tv77NAm274-K~pCgvqf5UPe`)O!8g<6CPxD&T%KK| zQVNGrUI+dFZj&2XgJ`c3g5yU&$ocCZ1a?F>PCuUPvR93DFCO^7T>0f|&kA-!ZuLbs z%!7J|I8g*Cr>g&Rm;>sdNa2iSgewR)5xUk3ZTm0kv+*CQ6;*vr;ctlTwy!XF_U;fC zvj2C0H)5~Vm1e&p0(OFj+cC}Ivp#JYavK|>~ih=G{abD z(XFr{6QGgim!FudIR}MU^$@ljO>rTtm1GbTZ3mY>T#khC`i03kh-zKni$^A_S65n51Hoq#f?x-H0qO6HdPEb_W}Ec>hEhoEgr7#_pu}MxM;+vbir&GJfp&_}BS!?z zE4(hIW>4+)m;D;-h7`tu^IrAaC=u`#itlMcx!8}o9RcgPa32!_dpcfw4=4bKMfF@5 z>#`_!=$8O^wCSfR1z=iab;#pE%KFRbU>S3B8tQ^V%g#oiCLIF6g@PZ7cTH0@7Z1FFkEQO7rqXNFPQ_e3bW4#o=hsAyO0|9VS zgx7!%L*4=f(h7XmqU5+({8- z8p{C~XMfzFJ4q*<@Uz4YWMO3p8oUz4Lm<OSNBf4?6d%I z_Hv5Gf~<&A$J!qrBpfiIwoy!bkxIGV=K6{8Eky#J7zV7jV(P7!z?J2nRLZEz2zGO3 z{n-wZ08rLOdM~jq{ybJLGgjV04!o`&p{PzOdICGY`!TJ$1Pm)WnmDZ}DvGkRqisyq zs7PWX#-+)@$pct_60&H(VW)byK0Q*MjN+i!iz)UtcRHS^0c75PB@X_6o0>YN1hI6` zgGpP~G=Lqr@m3c{2pmQ^h3xBwDn*5wqD5rqHwPct?b>MuzEGrFC`TQ!xZr_9EE+I{ z>T^MqECP4X&1j5ygoQo%0h|CelG^$@Dn7*y69V69Pb1j}T!3;V711vtKo< z&=!AxW?O3HSDJqF%%{aG+$m-!l7!hHLgI8F!VVu~p(w*YJ>9!Ej9_EWVh*PHpm_Rv; zaug-piU8QCqz*B=KNA24l}J=tSTtZK6W;@D=O1H#`&J^cQRq=WzQEYHJua+RmSHhO z^x; zvR}Oazw>Q?rV|z&+Vp)GVv*5}VmeX6)JP>jb+G0d>>dJ)ARNOSf?FyOd+aaO>q@=; z(ES}^-sxlPZyR;HcwMtQciO#O!i2!~YKr%cHn1$hVztn22Z9E&*4Aq$=)^IdIOg)j zHfN8FNSZl$Q04?YieUH46fmw(cIp`J6gOoFJW&H!=g2K!i7C^d2U`PB?Wt-6c(z&O zvhMt5p`C*6zllm7=qbz#EU3!L{oYtI>~_8~uoIiV?;GDOyM6cAJdIj9b4!S0n| zU=-1jdbt&L!q5lmHmrR;UTw%kh)X~`SPl9ZCIt4gjk;Yt5UU+qMpYl`oRbn@f_A^{ zXbF}ZaYNx=f^>?K5T~WhJEr>bT4mlH5E zhaL!gB_f|V(HT|gV`koJ*>n+@1UV=p!=HrJVd!d?FYdNTO{*GK1F%C4#`;dI){*C; z!WUuSt}nNfMy*`*wQ`YKdFM9f$M{T&z#-5hx>^H3 z0E~z-&cSy6Wej6=`bXHtPMxIbD^WKNUOrYER;#cag?**Yb_G6B_;W!ninvZGbo{e- zF7)jUMTK-6MhUwH)0zu_v=URN*@6b}H3DGuX#k9>--^QADhPjTgdNm$JMItv?KcKufXrr?BBFZ($OAkOhEZ z8IX5?U!(F9;3BZ3_#_MjuexK?fY$TxfBQKAzWnS4uYdDg&~Ep}P!6-!m*OC^J|UrZVFI9Zm? zB9Cr!Cc@+Rovz7B4HLdu&%}eC1-PC7(}spx&6P^W4fPcF)R64soq%f+zyTG38b~ex z)+k~&*K0t4>dOjOuxT~-vChG5Oc0nBrHmnZL_|*^`aJL|Ym=1*aq)xgu1lEB{{iqW z@QETb4vnR6^?r|j2+2N74R}f670~g$J~;zMT2LkcN->v{{OXjHo$A8yhi>9`6HK`%R~4 zMUX5*Ew{JU$P#u+z_i$6J_7n8w)ndsiDaso=m@5^9>v0mgL*C%(_*dyp8}ttd;(lS z{Q~0RDBLZ-n;-&RFD_86I`jzWS*!`hK@a~uj*`N#pf%l~dGwF~Se*p4meuBL5a_;2 zQQZpytS);3o09WrAzUUb9D`@KDrTxA>2V+7OW-%C{6u{4Dax|CsHZORqNcEn4(&!z zNbz0?MXJCF&~x@kuKqusBIrn(9JL|M^2vDsY9;`Z3xKDPg<=M6ac`757T&uIe3d?4 z0{ODI;O06Anmx6h5;3D zF8w!o1YrM@+4^0zFy%$yCkXF@ekm&VfXJbKvGuYzF^|xmsC^!!T|}$V1QsrR16%yL z=l{tR#VSiHY()Sx8}=BCwh>W$bEtr5u+bOG8EAUIoWeEW0_NfW4B?7*{$3CV4-MGJ zIzo?(^gme9XxNSCeS)YG)+@9Rw+pTpOpEe1mMwW`uTS7UAW)2c&I>^mvH;O|D6|ptD={$hYHi09*Cr%(lv`Fs!+wat|X3Bu?sy*(d%liF!yJl&M{#&95K7Crq;gD=w}Ics(tgLt zH=(DIPEI9Y6PxzKs(qM1m=KnG5|n!dOqIyh|NTn@+(7i_i2idC{!En*73w#CGeIp} zMpaP1w`DzXkjOaF~4YZxkmGisI6yUdU6-fbh}Z1`vmUgd`Nw zT!5VY#{!nd`#$h9;A0WJDI&cfP==@B=EZ4hsbxK}3$}iiXtucArdBP|>%}PWt6I#D z8kA!xoY_jpI-1>>qG$zVI)SqYuc&$Z zzlrrnD3afMnntMgN z7f~q{>2)J&wNemA$#LM@2;W!uK5z!}_UDCXTO+GA*|6jOVF92IJ!Z>4zYzNa#maZD zV0HT+A zvpqz0bBTLTss_w=|NX^1;A1S_f4kF*JF0MR*?N(`d}^{UZ@SX{UB9BH%|W9mDmdqc z6-g&ca|T=VuVSITY4TlvCvoeJ&1(Qz5I`~$fQKG)1{V+9RMlSqpQ_Rp0D)e#OMSc6 zp{m4jEY7(xtnJxbSS8;JtnK(!_SYbk{eYx%E4Qct=;Iy^{5Y`vKm%*q`FY~~4S}u` zo1*i^b5lF|M)gN_d<95HP=#R_dhdsva}y$RR8>!5i~e*oe7vWhLl_Y3^t0D_TB>Sh{$ri)uUQ2tM?w1Z4c_0Z?)1l zQdE>g6C8pjo}gGPsP{Eh9gpMqFt*sA$GrNlrhgvY>yvbVNU-$pn5_ta#AO1&D-Z_+ zk?ckfsGO~$z=B$1kGt4~-vxxQQWhU4qnKmwP2f#ceF5v)H^JJpO?L81{cNp_TR!f`L6bXA0OV{+FQT#15AEi*P|Y^ zWICE07L_w%%{hLA26xZ1w`J)d3)7;GDqgYEyY~O>l6DM70Uq)Bx5kbDzFg3uTBrcY6>CL<8FSWk!++tC2l)sANZpe@Ki^^?n4#i?ombVuelWLLhn(1Ji% zo){{jI)r)r^Zt;7O&4JqWWyoh$D06a8%QPqnpi{0_2c4l_MWr@j22XPW_(*Qv0S1L zPfaif@`FxPL@AS-fBS(h$TA`gAlZl}_}H6fof+UUb)o@-)loKQ6{jMhX#m^z0F)xT z%;%GiJ1>N>hDEYTGdY7!2UsEr8i;OP0Ia*z3AXs_X=ov5@CbkcNXQN>Qc2A}NmSAy z69vsx|NTG$bWmAgPFjqKQh53=J=p}1Q~)T;kPCnT#feJh1l%@0RU*7NfIvNAJ{)F0 zpsBOow>Y`tDYjwx@Kb;5$#$cXU|z)~ase=?grbz#p;p>{wJ%)YfKZTpJltTD_U>Q> zXdv1pE<#+~(B1Gv6Ch0lS`p0!z8DgqQi%jC&FgH8+N0q8Q; z$Y;a9`1mm3+S3?VQDI4PAHbke0mc!AShrIzHG2SzZE)Ie7W!S+^Dh8us0@MT5rDxZ zYYBf3WQlbp;iIEZ7X)9E2eA6oGypRJI!}GIoZUu%VG)_e`tG^aOSi>bAl23RK_M_A zmIRdd@*8YgzylRh4PfIuR%KMR!z+nb>e!^&4tamTK|_EMtPR%@pyGgnWchqbqtT$z zXl&|5(~DdHj;M9=9op+Jn)9_N&{W|*Y+e97Rs(RdS_~8`EQ8J~w8UOKcL)s*0*t2Z zw@-phMYsn_5Ebd_X5{t!iYa)3v&-v5ilAqJ^OzQp=K%~RnF(+o)6_SWvj12CP$`5dFH$H?-@p*~7>(8Lm1h&)`?(zKqLc1ACh1I|A083(~K#_cO^Po`z zUO@RHK}GPt=sMa}?@@vcwFdWTGx&PDS4263jp=>~I7(gwH0Z2|>I}jIc0vPK{Y$qR z4~)g6%RS8I%)P>c$4TI?VBy-kBS|Y(TuTXhhia19;vZD9!n_q=5oGC3Fx+`A zx=-6}Tw!}!CSZ!hC=0+GqD}Iuz(K@es`@LKPv9)@bA^u@Npz)L3>K3_y*}a$(1MnO zPB1FS^S}?V-Tzgr2}thm8El%V+P|PkYtlz72V)d;<8^yatOi_e^s*ntn3r(|lQ=np zNq~jyO4v4E0bcUxj8B+HwSk!kS(Dcio?$_zfD;HW0H?8#Vs7RQHj1sq8DJiW1i$HB z`H32U$m(VhVFKW`+MDM20E10{+46_59leeDa2{aSFUEHFVJv|t8|+cU?uk70ckuDR z5~{bb>zcsk7v@t;fK_=C0rwQWg;3w?Z=Um1vKjFOpqAbhQy@pMh)$*fRLE!e?N<~N z>esOl;Hvk(R@->v<|hh(B({w}6Bql4`LGt<713o(AmqEm{y{NeFwVoRq8zK4zqwCm zpOFcGYnXF>OAULTEC3>N08dU`@ogr3uTjg=f)_DIQ+5O83^tM;xkvxmApsUd z;gbOM0@ikT4!D689^}rzoSfYy>(e=lZN~MvrI!Bci@RDX1e6M!v&=WB5~j1Klt`5s zRjy*DKrR4sa&{L5<`u3g%qFT)u@G?n#N?J0e28CVFDm0Cueu@ z*v|hYa7UG1AVR6IHTTZOddaW0na~KB0lAFIeEMPXXh2TR?vVg@1^pbjMH>Fw>P*Ou zi4CXV6b*cmRJw~|_QwOra{_X5c9|}={w@p53dC86=P{%Gp30`C$rPGZ?|TvIbQz01 z&SCAMs^sCooSc55n8v*f%!!IBUb*x($p zoSd93?@?^PU4y5RDPNh3ExL6Ud_hIXV3$wf(su za7R_+KxE4cKVw4zV60MMtnyI0cm&)6xqz7gn`%RplasS)JeGj>8E^|F7ALFSySB>a zCd&F%hkqovxf41~UVS?9h0soE;;={531-V;2h>c~(b@Q^Xv(HLN7KOkOiENMvh#3Al^sEiL;6 zdd_FPT{i3aU(e<=fb^sECT?i4`x1z6BHRKlVe{#ZlIH~s3O$4+;0~6#c?WA8(Lgm; zaEO!y#y}3EdJ^Fr)(j+%>I@DZsH@fe&!8-_6hugbm z36O0c0d^0RM5rP%40=+Px3IS0Z(*Ha z7Whign^=; zdXo4>g$8!>b;)M~>;>5xTE;ZE&&2xwS;Wo5Xm$G|8@H|j*eCQuuD8Rd0 z>@c}0u$x4{=fJ-J`2e^q$i1oyx{)SNZTX`>7zopoH3BEgNy4YtjW>tgbbo-22+P?$ zva;V9;3{xUqG&-2g&obg*_HrspeHu>zZT&r){{P`|0pJSe}?i7!nIh!|Z(u%w+`Q{Q5pWs!6{^<|Np^bi!xja=Sj}3-FRrw+A0?{(j);6F;$Fp^N4YPc z|1^QiDDMKFi0VR7d%lNQLuZAflTS9?AJqt!S~fIvv;~;s@HX%vmLo8Qg$Z*lpnqg* zrVd<2^<)3jpYXd*70#}LStoO!_vn>-K+uWUV zTCLU;i$7n+@|A1YaLL>ku=ChZ2oto|MVRrTU9T`+HSKJx*Z zdrN1JToL6ac8v>U(}!|)nwUpye+q>ixBWA=DF8AQMG%n))l0xHF^5s^3+NAu?fzdN zdRr~)4+ku+ba&(puBVSi~{CE!a{{Vk>mpupG;+WqU<>7oxG5!SI8f?uhrF|*|5!aGem7*b|M z+#=!<5r^zVZs;R;5fnj@Sdj%q=CIIX-UDK1NwDTR*Dwv>YLX<2^x2QLLneSBx~N4N z1Ir7z1bl$`0!DWFy$(1Ev;p3cGS)b`j&zw_>k~;$XK?hs>9|M;} zV#jqKg z>=;epBSHTHxD+^v60dz%vvx!PWO)Jg`szmHT~}s(IYFI&3G`c-JHJ><~c;q7=!6_)gNrhJ3uI@TH&&ccbAb6tAK5KaFNb zO#r{{ws3I;T-*b$3i6JkBUno5k-mScXCDE|3Zn>B)(P^R=n@04va$j^GwWh2v(hU8sw6|B~|c!xN%e*CTX7s7}uI=wj)Ij zdToJEuWf&BtMd`gN8GQ5^hzOuuOJ*pIEx9NTm#r1O{~c3Cjythe9-MWaWuOz&F=0g z$bH*|N7Bf^N~6gscT$}1&3Fm_(u+F^yb4+a$)f^W!(pk`&jY7b8J`#~Ep{U>wTd;2 z$g29X-2RQS+_c|I)NaC~jb;E^RSBnoQ&<+@&|aT_eT-K#f$s?X+Iij)n0aZuC|*?$ zjqGj<#=fiJ1?>UoLSd{o8aM8HhWvVMmyVd%|6P<%M7dLIX>+;YwNTvsZtQ&*0I^uvi}$lwRNzqh88US?XLAVV46Iv7nNg2XiB zz4EB`T>uOXnZIbck=Bn`T)BtH4d7kYYRik5N}H>gn`apKhA2JY5Go&f=f4yUZ^hMx zmW!&8CYCHWyKDLVD(R3g!6lAPZAnV)p-F`^0H2G#HC`VHiAVKeuyppSJKzZrvq)B4wmfmxd`uuLGVGP z7&KOzF<~IYdz=!t>zc=dx;dQ!=ZNEkVlg}g`ZmfRVEyOMV7pCjYi^CKMf)X?FF|i( zZM>GS*mD=r7!XtnK*c5kF@fq4tQW}3m@qzyC2r+xom;@qfqx^y&+a^^Uzr@Oa_ROw z0KfOjsXhI0yDk8-T=n^G%y21W*=r$;lW~{$-xuZY0^i1*P5F(tH4@C>)WsJ3EaqsP z!304)o#`m3RDp3srhyZvp1{t11rx#{xgg#u2}le0P|<&?;(wy(?0BWpy5DGVXvm_e zyY2OVls!wwy;BN#y%RCgj-vl?yn64Sw4)24zf3>V_s9jnRtZ=uy&hw2pvM`k)pQG$ zDE+r3U!mW6%F= zhUhFJ@1Z)5*`8B-eR7@=%D^<{Xieau$beuwd^RLBcff8RMd$(7LH`xV&jh(HD!uM^ zAxS*m4^BIUT^9hE$}_9V9|CdU2v;ow-D8F5nIs@z*t^LR%0+~CfnNicMBH*gL+wb9 zB(_Yey;l7*_Ffn9YRPA+qbO&wh(NCX=j=NaVukC9{!8`x&(-S}BCIZ37VPu7>z?8xXS<4E{ z$=MGyu)K?RL4O5&=0xuiNL(GRpx&CQja3Kpmfkx7kna3rbxPjZ)LF6MK;Aw)XFqWh z_;VG0F36{%e$J`Jo^({xfHzRybpeni0yWZs6Fy)hwfj$Ko(7z=e^|y6tlm@Mm%ztf zm~$#o>>SxVzpbL8MfE?y>dX8rP zlFPc;neD${RR4_KYYCQmMOWIf&6ZR~fioy4$lFZk3?2zK4*fRP$M0t<`fe1)H=;r} zs(hu)G=q@FA@0*FI)g-n}y|Qdg++9 zOV36h+g%d@a|?|003wqBEH&;@3aPQW%!L(2RqLHGG6C>BaDv?XpECfc4Xe2>@IJ!(C?A1b z!?~sI@iC%;Lwx^7cJC&;CIFfpQ<=txy3%Mf3UU}Y20BSTXD(;&@R*l>8MF64MD$(Y zBXN9{c(oVUyJe% z=mmtE2=|7|-R^R$gox0|MX_Cf3Ah7X z1b!~6zmP<4q^j!d?Gb$PON>m73koYMq{CAvO0Oaf*F}CZs zuvY0GW0`$_83yjca;w+AH`n0&bCZNovf8+FV&vIYQu{6dG67nM5?bX#=n_9A%JY~2 zc-Bm+oWZ35auf7pY{&l+xGuuXC)XadUpzj}>EokB-I!;~&;MllE&xWO7(nifRb{*v zk76Bvj$sbKoSc5)v9MkTSimOqTmX5;dHszjGits)|MIbMmb(!rrq&WtpEX*%`x z2oetac_!FK$sqTCYYUbW?$^%18|At(ee`0e}pLf-_y z(vm6vqCK$G-$`=YKc|0qY|;0yG~O(m?_JPeV;y_%srW?2(W*LvB>hG2IeF+{Hlyl) z6hHw{L1hX{{XIc00CIL7kE!~XfG^VH64thB7W^WFNuGA{F#Qt%tHY-hybBRMglPcB z`ue^*OSY>-*v_KZl$}C)gydO_dx2urdfATO#Afkb2R>BfLxE2Vq1>z#!)T@5B~H-5 znR{<|cz>1b_LIIX#4P_OD0N60!$k?>L)ggaBkUjVzqNo;ZXw*l1i>&iYwrx!&oCDN zyN_Vqd1ipC3RlGz|4ooPz^sbQwYzbz8zne_(79(lq`xKlCIDP$&c9@S)JY}DI{zGH zaBKgSwcS3!yvO%Zy#ZW6z#wN;C~M)O zo4^f}+t@BMgLQ?8u?WVez+YnijFVVLwM3 z6~GIqB&wrBC9XVJ;oOvY^z$A6>GazfCzy(S447cB1i&Iz2yzor8(*0L?uv3pl(}N$ zmfNKyk=3Pd58Wg|y+%?AW;E8WAP-P3V;aCT=I1!N?(q;N2=hDg$@DNyYYt1-ee`ig zkvodqueqgW+mG0QiTtc?ncWZoHB2oYW^ZCJna4O`t@e90Gfa_B5kB{UTtTGn;v^FF z35f3%yas;l?i#9D^z!Fd=J@fsBP@5K809|71Kb9Rd(mPt>0ZT8*&-Aif{qs6M>5$H&p!t zO=J6_B&TA}!g!V9x{rEzgEr)Rs|5m)M2sdwD#!{Jo4yG+L5mI@^0>o_Jg3MRQ9S{i zKsbR3g%NBrQl=3+su{R-A8pW9fv$VZuEF|i0k+FGu^Rk)2zM|6c@5=?_wKqTvM7P? ziPIRtqj(o4zVToT_2AOGb#ijhzW)AYH>v>>v4s}z!uRpmg1^h!4u6NW9sd@%yUqm* zNz#i2=|^mMy~zPUOwbyEK?k7HP&)Cd+btpU|_kAvbzS&v}n zzKt#NI(8kh$48$pV;aB$a9@%8y>>W1a%d&$b&6<`FYw)>e;R--Ed|;N%VKrdJ6UP@ zs6E+bt*_hXqWTHQXAoRfs3S=iGy?VBCtgxDU$uYfAx>>bbdiWQ|D!0<67;qrcggI3 zMQ{{FbPVJWD$^*(L63kQMr0ghTvaF2R_Zm7GHZh1aazHXe)gpE`J|ug*F4Y8eKS4( z^S~S`cM(i9O zN1i_}6qzMJWor9+!J2*6EL7TgYUK%YxOP>kOKHP zzypU4<(fdh>7xc90A6k3Ul;T)c7u#;>E(WR$6r!Q3b_b;it0rXxhBGWQRyifD;mc& z)HR3kwH7Wafg7NN(A2tj#e}36DxMYAI@UNIjuKepK&1py6=4j~F@<48t0)YVDdJ87WWbzUPf zA!7D>7IpDJl4#)1(U3A-U12D@KXUe%zH0zpr4fkEV5OOtu^nrC3$L}pT0D3b+wCoD z&(d}8p#Fa1B@#*RauL%(0>O1{mmV3~y&JDqdve=@dZ%M2DG`u|oMn$Wlj%dDMR9S| zCBxK|qz1kWln^PR6j2JSX$0$^XIg+`T~d=k;!Oic*1gmE@Lab0w?$~9v_!QnNGo<> zd+gd=uXS{kxcGF}gd()45RiaA{ru$gpS}x#QlL?y%!7Odybl@zFJqd(`t5jq3&!=2 zS=cC>(e|mLpQ?F~mjr2oM4&N9var%&e5iya>peR?9R)!pA!v*eS5fdS&o$_Jo7YIN~|L;C1b$=P}OwjC}uY!HYO2n0!# z)4=PX-v!31&;yG23y0H5>mnW*cAk;%_uv=l(=A8uwfTHf$6DhO0&H zE;KndX*EaBLON)@zHU)zdZvN|M9KcMzsnMq_2K2NPhR~#{r&9UX!xPxP+PzYvQ&8Qa!R^_FlBzQcEOTWU`dE#?&a=xCvYXDh)^&o(``;KGN zvIKmF$|Y>!ukWgp*_rFR@I*e*xD&-xCBy~!UZ0b*Q}lf`Wr;RRtq#Q?AkL<%J}IYr zok@#8;Dn*l!?F5j!M4xI*=zC+i8(nrIXO8wIXO8wIXO8wIXO8wIXO8wIXO8wIXO8w iIXO8wIXOA|ng1W&HnJ Date: Mon, 16 Sep 2024 12:21:01 +0200 Subject: [PATCH 226/326] :recycle: delete disabled variants and move them into other variants --- src/app/login/EmailForm.tsx | 2 +- src/app/question/answer/answer.tsx | 2 +- src/app/question/edit/edit.tsx | 6 +----- src/app/question/new/new.tsx | 4 ++-- src/app/register/confirm/form.tsx | 2 +- src/app/register/form.tsx | 2 +- src/app/register/user/form.tsx | 2 +- src/components/button/Button.tsx | 12 +++--------- src/modules/question/TagsList.tsx | 2 +- src/modules/settings/payment/Delete.tsx | 2 +- src/modules/settings/tags/Create.tsx | 2 +- src/modules/settings/users/Create.tsx | 2 +- src/modules/settings/users/FileInput.tsx | 10 ++++------ src/modules/settings/users/Update.tsx | 2 +- 14 files changed, 20 insertions(+), 32 deletions(-) diff --git a/src/app/login/EmailForm.tsx b/src/app/login/EmailForm.tsx index d5a41415f..d567afcb6 100644 --- a/src/app/login/EmailForm.tsx +++ b/src/app/login/EmailForm.tsx @@ -60,7 +60,7 @@ export default function EmailForm() {
    - + Information + +
    +
    + {me.image ? ( + Profile picture + ) : ( + + )} +
      + {fields.map((field) => ( +
    • + + + +
    • + ))} +
    • + + Role: + {' '} + {me.role} +
    • +
    +
    + +
    +
    ); }; diff --git a/src/modules/question/TagsList.tsx b/src/modules/question/TagsList.tsx index 840df80aa..f105a730c 100644 --- a/src/modules/question/TagsList.tsx +++ b/src/modules/question/TagsList.tsx @@ -27,7 +27,7 @@ export const TagsList = ({ tags, selectedTags, setSelectedTags }: Props) => { {tags.map((tag) => (
  • - -
  • - ); -} diff --git a/src/modules/settings/general/index.ts b/src/modules/settings/general/index.ts index 3f32c9372..0ab02c523 100644 --- a/src/modules/settings/general/index.ts +++ b/src/modules/settings/general/index.ts @@ -1,2 +1 @@ export * from './General'; -export * from './Data'; diff --git a/src/modules/settings/tags/Tags.tsx b/src/modules/settings/tags/Tags.tsx index 65c0ba91c..dd17d5a99 100644 --- a/src/modules/settings/tags/Tags.tsx +++ b/src/modules/settings/tags/Tags.tsx @@ -2,13 +2,29 @@ import { useEffect, useState } from 'react'; -import { deleteTag } from '@/actions'; -import { Button, resultToast } from '@/components'; +import { zodResolver } from '@hookform/resolvers/zod'; +import { TagIcon } from 'lucide-react'; +import { SubmitHandler, useForm } from 'react-hook-form'; +import { z } from 'zod'; + +import { deleteTag, updateTag, updateTagSchema } from '@/actions'; +import { + Button, + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogTrigger, + Field, + Input, + resultToast, +} from '@/components'; import { CreateTag } from './Create'; import type { $Enums, Tag } from '@prisma/client'; + type Props = { tenantId: string; plan: $Enums.Plan; @@ -16,8 +32,26 @@ type Props = { tagsCount: number; }; +type Schema = z.infer; + export const Tags = ({ tenantId, plan, tags, tagsCount }: Props) => { const [limit, setLimit] = useState(3); + const [disabled, setDisabled] = useState(false); + + const { + register, + handleSubmit, + formState: { isSubmitting, isDirty, isValid }, + } = useForm({ + resolver: zodResolver(updateTagSchema), + mode: 'onBlur', + defaultValues: {}, + }); + + const onSubmit: SubmitHandler = async (data) => { + const result = await updateTag(data); + resultToast(result?.serverError, result?.data?.message); + }; const handleDeleteTag = async (id: string) => { const result = await deleteTag({ id, tenantId }); @@ -30,40 +64,95 @@ export const Tags = ({ tenantId, plan, tags, tagsCount }: Props) => { } }, [plan]); + useEffect(() => { + setDisabled(isSubmitting || !isValid || !isDirty); + }, [isSubmitting, isValid, isDirty]); + return ( -
    - {tags && tags.length > 0 ? ( -
      - {tags.map((tag) => ( -
    • -

      {tag.label}

      - -
    • - ))} -
    - ) : ( -

    No tags

    - )} - - {tags && tags.length > 0 && plan !== 'enterprise' && ( -

    - Tags limit: {tags.length} /{' '} - {limit} -

    - )} + + +

    {tag.label}

    +
    + + + Edit the tag + +
    + + + + } + type="text" + placeholder={tag.label} + /> + +
    + + +
    +
    +
    +
    + + ))} + + ) : ( +

    No tags

    + )} + + {tags && tags.length > 0 && plan !== 'enterprise' && ( +

    + Tags limit: {tags.length} /{' '} + {limit} +

    + )} +
    ); }; diff --git a/src/modules/settings/users/Create.tsx b/src/modules/settings/users/Create.tsx index e0c6109df..39ac05fb6 100644 --- a/src/modules/settings/users/Create.tsx +++ b/src/modules/settings/users/Create.tsx @@ -3,7 +3,7 @@ import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; -import { AtSign, PlusCircle } from 'lucide-react'; +import { AtSign, Mail, PlusCircle } from 'lucide-react'; import { Controller, useForm } from 'react-hook-form'; import { createUser, createUserSchema } from '@/actions'; @@ -125,12 +125,16 @@ const Form = ({ tenantId, usersCount }: Props) => { ); diff --git a/src/modules/settings/users/Users.tsx b/src/modules/settings/users/Users.tsx index d80890323..14e1be4f6 100644 --- a/src/modules/settings/users/Users.tsx +++ b/src/modules/settings/users/Users.tsx @@ -41,44 +41,53 @@ export const Users = ({ userId, tenantId, plan, users, usersCount }: Props) => { }; return ( -
      - {users?.map((user) => ( -
    • -
      -
      - -
      -

      - {user.name} -

      -

      {user.email}

      +
      +

      + Users +

      +
        + {users?.map((user) => ( +
      • +
        +
        + +
        +

        + {user.name} +

        + {user.email} +
        +
        +
        + + {(user.role === 'user' || user.id !== userId) && ( + + )}
        -
        - - {(user.role === 'user' || user.id !== userId) && ( - - )} -
        -
      -
    • - ))} + + ))} +
    @@ -91,6 +100,6 @@ export const Users = ({ userId, tenantId, plan, users, usersCount }: Props) => { plan={plan} usersCount={usersCount} /> - + ); }; diff --git a/src/types/models/node.ts b/src/types/models/node.ts index 41293a311..574b24c3e 100644 --- a/src/types/models/node.ts +++ b/src/types/models/node.ts @@ -24,6 +24,7 @@ export type ExtendedNode = Node & { export type NodeWithQuestionAndAnswer = Node & { answer: { text: string; + updatedAt: Date; }; question: { id: string; From e5626cdd70ebec37ae1dc097033f1f9a5d86f89d Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Tue, 17 Sep 2024 20:31:19 +0200 Subject: [PATCH 228/326] :lipstick: change style of favorites list --- src/modules/profile/Favorites.tsx | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/src/modules/profile/Favorites.tsx b/src/modules/profile/Favorites.tsx index f9bc1ec68..d20b54dae 100644 --- a/src/modules/profile/Favorites.tsx +++ b/src/modules/profile/Favorites.tsx @@ -18,27 +18,24 @@ export const UserFavorites = ({ favorites }: Props) => { Favorites {favorites && favorites.length > 0 ? ( -
      +
      {favorites.map((favorite) => ( -
    • -

      - - {favorite.node.question.text} - -

      -

      +

      {favorite.node.question.text}

      + Asked on{' '} {new Date(favorite.node.question.createdAt).toLocaleDateString( undefined, dateOptions, )} -

      -
    • + + ))} -
    +
    ) : (

    No answers

    )} From 6e83f3af6c822d9ef752d46e338d3fa250b54c1e Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Tue, 17 Sep 2024 20:31:58 +0200 Subject: [PATCH 229/326] :memo: change title of page --- src/modules/profile/Update.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/profile/Update.tsx b/src/modules/profile/Update.tsx index 78623d282..aae63cdf7 100644 --- a/src/modules/profile/Update.tsx +++ b/src/modules/profile/Update.tsx @@ -78,7 +78,7 @@ export const UpdateProfile = ({ me }: Props) => { className="text-xl font-semibold lowercase" style={{ fontVariant: 'small-caps' }} > - Information + Profile
    Date: Tue, 17 Sep 2024 20:32:28 +0200 Subject: [PATCH 230/326] :rotating_light: run lint + prettier --- src/modules/settings/tags/Tags.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/modules/settings/tags/Tags.tsx b/src/modules/settings/tags/Tags.tsx index dd17d5a99..0ebdf4ac9 100644 --- a/src/modules/settings/tags/Tags.tsx +++ b/src/modules/settings/tags/Tags.tsx @@ -24,7 +24,6 @@ import { CreateTag } from './Create'; import type { $Enums, Tag } from '@prisma/client'; - type Props = { tenantId: string; plan: $Enums.Plan; From fa84297f89052b544b268ff08c95d54efb27ca32 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Wed, 18 Sep 2024 10:37:43 +0200 Subject: [PATCH 231/326] :recycle: replace red colors with reusable variable --- src/app/login/page.tsx | 2 +- src/app/question/answer/answer.tsx | 2 +- src/components/button/Button.tsx | 2 +- src/components/dialog/Dialog.tsx | 2 +- src/components/field/Field.tsx | 6 +++--- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index c4685a2d6..50dd1ebfa 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -27,7 +27,7 @@ type ErrorProps = { const LoginError = ({ error }: ErrorProps) => { const errorMessage = error && (loginErrors[error] ?? loginErrors.default); - return
    {errorMessage}
    ; + return
    {errorMessage}
    ; }; export default function Page({ searchParams }) { diff --git a/src/app/question/answer/answer.tsx b/src/app/question/answer/answer.tsx index 3a1f31a99..b45d564c2 100644 --- a/src/app/question/answer/answer.tsx +++ b/src/app/question/answer/answer.tsx @@ -90,7 +90,7 @@ export default function Answer({ node }: Props) { />
    {errors.text && ( - + {errors.text.message} )} diff --git a/src/components/button/Button.tsx b/src/components/button/Button.tsx index 5ad377c0e..68fe39335 100644 --- a/src/components/button/Button.tsx +++ b/src/components/button/Button.tsx @@ -19,7 +19,7 @@ const button = cva('transition-all duration-300', { 'bg-transparent text-tealA-11 shadow-sm shadow-tealA-7 hover:shadow-tealA-8', ], destructive: [ - 'bg-red-6 text-white shadow-sm shadow-transparent hover:bg-red-5 disabled:bg-red-surfaceLight disabled:text-redA-11 disabled:shadow-sm disabled:shadow-redA-7 disabled:hover:shadow-redA-8 disabled:dark:bg-red-surfaceDark', + 'bg-destructive text-white shadow-sm shadow-transparent hover:bg-destructive-hover disabled:bg-destructive-disabled disabled:text-redA-11 disabled:shadow-sm disabled:shadow-redA-7 disabled:hover:shadow-redA-8 disabled:dark:bg-destructive-disabled-dark', ], }, icon: { diff --git a/src/components/dialog/Dialog.tsx b/src/components/dialog/Dialog.tsx index 14fcd03c5..4cf643d0d 100644 --- a/src/components/dialog/Dialog.tsx +++ b/src/components/dialog/Dialog.tsx @@ -50,7 +50,7 @@ const DialogContent = forwardRef< {...props} > {children} - + Close diff --git a/src/components/field/Field.tsx b/src/components/field/Field.tsx index 528153fc9..2d6a7dbb8 100644 --- a/src/components/field/Field.tsx +++ b/src/components/field/Field.tsx @@ -32,7 +32,7 @@ export const Field = ({
    @@ -50,13 +50,13 @@ export const Field = ({ {children}
    {error && ( - + {error} )} {limit && ( limit ? 'text-red-10' : 'text-gray-11'}`} + className={`col-start-2 justify-self-end text-xs ${curLength > limit ? 'text-destructive' : 'text-gray-11'}`} > {curLength} / {limit} characters From af4508753857371ed45ee746d1fa4819f2fb2897 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Wed, 18 Sep 2024 10:41:23 +0200 Subject: [PATCH 232/326] :recycle: replace divider color with reusable variable --- src/app/profile/profile.tsx | 2 +- src/app/question/[id]/question.tsx | 4 ++-- src/app/settings/settings.tsx | 2 +- src/modules/header/Header.tsx | 2 +- src/modules/home/Question.tsx | 4 ++-- src/modules/settings/general/General.tsx | 2 +- src/modules/settings/users/Users.tsx | 4 ++-- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/app/profile/profile.tsx b/src/app/profile/profile.tsx index 60b3e5d02..883091a56 100644 --- a/src/app/profile/profile.tsx +++ b/src/app/profile/profile.tsx @@ -50,7 +50,7 @@ export default function Profile({ me, questions, answers, favorites }: Props) { Manage your account information and find your questions / answers.

    -
    +
    ))} -
    +
    {node.answer ? ( No answer

    )} -
    +

    diff --git a/src/app/settings/settings.tsx b/src/app/settings/settings.tsx index 63746f49a..e46ddafdc 100644 --- a/src/app/settings/settings.tsx +++ b/src/app/settings/settings.tsx @@ -46,7 +46,7 @@ export default function Settings({ Manage your account settings and invite users.

    -
    +
    diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index 50dd1ebfa..27a7c81b8 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -42,7 +42,9 @@ export default function Page({ searchParams }) { > Login -

    Use your associated account

    +

    + Use your associated account +

    diff --git a/src/app/profile/profile.tsx b/src/app/profile/profile.tsx index 883091a56..b2129cc4f 100644 --- a/src/app/profile/profile.tsx +++ b/src/app/profile/profile.tsx @@ -46,7 +46,7 @@ export default function Profile({ me, questions, answers, favorites }: Props) {

    Profile

    -

    +

    Manage your account information and find your questions / answers.

    diff --git a/src/app/providers.tsx b/src/app/providers.tsx index ba3677b56..69e8949c7 100644 --- a/src/app/providers.tsx +++ b/src/app/providers.tsx @@ -40,7 +40,7 @@ export default function Providers({ children }) { />
    {children}
    diff --git a/src/app/question/[id]/question.tsx b/src/app/question/[id]/question.tsx index 3aa4835f6..54f2385c4 100644 --- a/src/app/question/[id]/question.tsx +++ b/src/app/question/[id]/question.tsx @@ -75,7 +75,7 @@ export default function Question({ node, favorite }: Props) { Edit @@ -110,7 +110,7 @@ export default function Question({ node, favorite }: Props) {
    diff --git a/src/app/register/confirm/form.tsx b/src/app/register/confirm/form.tsx index 2463b2070..a92985e21 100644 --- a/src/app/register/confirm/form.tsx +++ b/src/app/register/confirm/form.tsx @@ -57,7 +57,7 @@ export default function Form() { > Confirm -

    Confirm the information

    +

    Confirm the information

    Company

    diff --git a/src/app/register/form.tsx b/src/app/register/form.tsx index bfd6a6b89..bb83fdd87 100644 --- a/src/app/register/form.tsx +++ b/src/app/register/form.tsx @@ -63,7 +63,7 @@ export default function Form() { > Company -

    Your company details

    +

    Your company details

    {fields.map((field) => (
    diff --git a/src/app/register/layout.tsx b/src/app/register/layout.tsx index b374401c7..7c1ffeb2e 100644 --- a/src/app/register/layout.tsx +++ b/src/app/register/layout.tsx @@ -28,7 +28,7 @@ export default function Layout({ children }: Props) { )} {hasBackground ? ( -
    +
    {children}
    ) : ( diff --git a/src/app/register/plan/form.tsx b/src/app/register/plan/form.tsx index 792384c78..bac2336b6 100644 --- a/src/app/register/plan/form.tsx +++ b/src/app/register/plan/form.tsx @@ -104,19 +104,19 @@ export default function Form() {

    Plan

    -

    Choose the right plan for you

    +

    Choose the right plan for you

    {plans.map((plan) => ( saveData(plan.value, plan.lookup_key))} key={plan.value} - className="w-full overflow-hidden rounded-md bg-grayA-3 p-4 text-center text-gray-12 shadow-sm shadow-tealA-7 transition-all duration-300 hover:shadow-tealA-8" + className="w-full overflow-hidden rounded-md bg-grayA-3 p-4 text-center text-primary shadow-sm shadow-tealA-7 transition-all duration-300 hover:shadow-tealA-8" >

    @@ -127,7 +127,7 @@ export default function Form() {


    -

    +

    {plan.message}

    @@ -141,9 +141,9 @@ export default function Form() { {plan.drawbacks?.map((drawback) => (
  • - +

    {drawback}

  • ))} diff --git a/src/app/register/user/form.tsx b/src/app/register/user/form.tsx index 3531b6f5c..49cee9c53 100644 --- a/src/app/register/user/form.tsx +++ b/src/app/register/user/form.tsx @@ -49,7 +49,7 @@ export default function Form() { > User -

    Your connection mail

    +

    Your connection mail

    Settings

    -

    +

    Manage your account settings and invite users.

    diff --git a/src/components/badge/Badge.tsx b/src/components/badge/Badge.tsx index df17525e4..bcf61a5a1 100644 --- a/src/components/badge/Badge.tsx +++ b/src/components/badge/Badge.tsx @@ -8,8 +8,8 @@ import { cn } from '@/utils'; const badge = cva('text-xs font-semibold', { variants: { variant: { - primary: ['bg-gray-12 text-center text-gray-1'], - disabled: ['bg-gray-11 text-center text-gray-1'], + primary: ['bg-gray-12 text-center text-primary-negative'], + disabled: ['bg-gray-11 text-center text-primary-negative'], }, rounded: { full: ['rounded-full'], diff --git a/src/components/button/Button.tsx b/src/components/button/Button.tsx index 68fe39335..57078c4b6 100644 --- a/src/components/button/Button.tsx +++ b/src/components/button/Button.tsx @@ -10,10 +10,10 @@ const button = cva('transition-all duration-300', { variants: { variant: { primary: [ - 'bg-gray-12 text-gray-1 shadow-sm shadow-transparent disabled:bg-gray-10 disabled:text-gray-12 disabled:shadow-sm disabled:shadow-grayA-7 disabled:hover:shadow-grayA-8 disabled:dark:bg-gray-surfaceDark', + 'bg-gray-12 text-primary-negative shadow-sm shadow-transparent disabled:bg-gray-10 disabled:text-primary disabled:shadow-sm disabled:shadow-grayA-7 disabled:hover:shadow-grayA-8 disabled:dark:bg-gray-surfaceDark', ], ghost: [ - 'bg-gray-3 text-gray-12 shadow-sm shadow-grayA-8 hover:bg-gray-4 disabled:shadow-transparent disabled:bg-transparent', + 'bg-gray-3 text-primary shadow-sm shadow-grayA-8 hover:bg-gray-4 disabled:shadow-transparent disabled:bg-transparent', ], secondary: [ 'bg-transparent text-tealA-11 shadow-sm shadow-tealA-7 hover:shadow-tealA-8', diff --git a/src/components/dialog/Dialog.tsx b/src/components/dialog/Dialog.tsx index 4cf643d0d..cabd56454 100644 --- a/src/components/dialog/Dialog.tsx +++ b/src/components/dialog/Dialog.tsx @@ -50,7 +50,7 @@ const DialogContent = forwardRef< {...props} > {children} - + Close diff --git a/src/components/editor/Editor.tsx b/src/components/editor/Editor.tsx index 8b37e9c78..7fb438131 100644 --- a/src/components/editor/Editor.tsx +++ b/src/components/editor/Editor.tsx @@ -21,7 +21,7 @@ export const Editor = ({ onChange, value }: Props) => { return (
    limit ? 'text-destructive' : 'text-gray-11'}`} + className={`col-start-2 justify-self-end text-xs ${curLength > limit ? 'text-destructive' : 'text-primary-muted'}`} > {curLength} / {limit} characters diff --git a/src/components/pagination/Pagination.tsx b/src/components/pagination/Pagination.tsx index 5effc82e5..1b24c9453 100644 --- a/src/components/pagination/Pagination.tsx +++ b/src/components/pagination/Pagination.tsx @@ -31,10 +31,10 @@ export const Pagination = ({ nodesLength }: Props) => { className="flex list-none items-center justify-center gap-4" pageLinkClassName="w-10 h-10 flex items-center justify-center font-semibold rounded-md hover:bg-gray-4" breakLinkClassName="font-semibold" - activeLinkClassName="bg-gray-12 text-gray-1 hover:!bg-gray-11" + activeLinkClassName="bg-gray-12 text-primary-negative hover:!bg-gray-11" previousClassName="font-semibold h-10 px-2 flex items-center justify-center rounded-md hover:bg-gray-4" nextClassName="font-semibold h-10 px-2 flex items-center justify-center rounded-md hover:bg-gray-4" - disabledClassName="text-gray-11 hover:text-gray-11 hover:!bg-transparent" + disabledClassName="text-primary-muted hover:text-primary-muted hover:!bg-transparent" breakLabel="..." onPageChange={handlePageChange} nextLabel="Next →" diff --git a/src/components/select/Select.tsx b/src/components/select/Select.tsx index 1791d87ad..07b744b1f 100644 --- a/src/components/select/Select.tsx +++ b/src/components/select/Select.tsx @@ -19,7 +19,7 @@ const SelectTrigger = forwardRef< { return ( -
    )} /> - diff --git a/src/modules/settings/payment/Billing.tsx b/src/modules/settings/payment/Billing.tsx index 6b5fdcf63..85a9145f4 100644 --- a/src/modules/settings/payment/Billing.tsx +++ b/src/modules/settings/payment/Billing.tsx @@ -32,13 +32,7 @@ export const Billing = ({ tenantId }: Props) => { return (
    - diff --git a/src/modules/settings/payment/Delete.tsx b/src/modules/settings/payment/Delete.tsx index f9333568a..bb427dfef 100644 --- a/src/modules/settings/payment/Delete.tsx +++ b/src/modules/settings/payment/Delete.tsx @@ -57,13 +57,7 @@ export const Delete = ({ tenantId, company }: Props) => { return ( - @@ -87,23 +81,13 @@ export const Delete = ({ tenantId, company }: Props) => { - diff --git a/src/modules/settings/tags/Create.tsx b/src/modules/settings/tags/Create.tsx index 6df88ed47..a08d5bb6c 100644 --- a/src/modules/settings/tags/Create.tsx +++ b/src/modules/settings/tags/Create.tsx @@ -86,13 +86,7 @@ const Form = ({ tenantId, plan, tagsCount }: Props) => { /> - @@ -121,8 +115,6 @@ export const CreateTag = ({ tenantId, plan, tagsCount }: Props) => { font="large" size="full" weight="bold" - className="lowercase" - style={{ fontVariant: 'small-caps' }} disabled={disabled} > New tag @@ -146,8 +138,6 @@ export const CreateTag = ({ tenantId, plan, tagsCount }: Props) => { font="large" size="full" weight="bold" - className="lowercase" - style={{ fontVariant: 'small-caps' }} disabled={disabled} > New tag diff --git a/src/modules/settings/tags/Tags.tsx b/src/modules/settings/tags/Tags.tsx index 71dd97f51..1e74d9e3d 100644 --- a/src/modules/settings/tags/Tags.tsx +++ b/src/modules/settings/tags/Tags.tsx @@ -116,10 +116,7 @@ export const Tags = ({ tenantId, plan, tags, tagsCount }: Props) => { variant="primary" type="submit" size="full" - weight="semibold" - className="lowercase" disabled={disabled} - style={{ fontVariant: 'small-caps' }} > Update @@ -127,9 +124,6 @@ export const Tags = ({ tenantId, plan, tags, tagsCount }: Props) => { variant="destructive" type="button" size="full" - weight="semibold" - className="lowercase" - style={{ fontVariant: 'small-caps' }} onClick={() => handleDeleteTag(tag.id)} > Delete diff --git a/src/modules/settings/users/Create.tsx b/src/modules/settings/users/Create.tsx index fde24d2dc..a9a4d6c3c 100644 --- a/src/modules/settings/users/Create.tsx +++ b/src/modules/settings/users/Create.tsx @@ -130,10 +130,7 @@ const Form = ({ tenantId, usersCount, plan }: Props) => { variant="primary" size="medium" font="large" - icon="withIcon" - weight="semibold" - className="lowercase" - style={{ fontVariant: 'small-caps' }} + icon={true} disabled={disabled} > @@ -164,9 +161,6 @@ export const CreateUser = ({ tenantId, usersCount, plan }: Props) => { variant="primary" size="full" font="large" - weight="semibold" - className="lowercase" - style={{ fontVariant: 'small-caps' }} disabled={disabled} > New user @@ -185,15 +179,7 @@ export const CreateUser = ({ tenantId, usersCount, plan }: Props) => { return ( - diff --git a/src/modules/settings/users/FileInput.tsx b/src/modules/settings/users/FileInput.tsx index e340bd7df..c5fd651df 100644 --- a/src/modules/settings/users/FileInput.tsx +++ b/src/modules/settings/users/FileInput.tsx @@ -138,9 +138,7 @@ export const FileInput = ({ tenantId, users, plan, usersCount }: Props) => { size="full" font="large" icon={true} - weight="semibold" - className={`rounded-none rounded-tl-md lowercase`} - style={{ fontVariant: 'small-caps' }} + className={`rounded-none rounded-tl-md`} onClick={handleButtonClick} type="button" > @@ -169,9 +167,7 @@ export const FileInput = ({ tenantId, users, plan, usersCount }: Props) => { variant="primary" size="full" font="large" - weight="semibold" - className="col-span-2 rounded-none rounded-b-md lowercase" - style={{ fontVariant: 'small-caps' }} + className="col-span-2 rounded-none rounded-b-md" disabled={disabled} type="submit" > @@ -224,9 +220,6 @@ export const FileInput = ({ tenantId, users, plan, usersCount }: Props) => {
    )} - @@ -152,13 +146,7 @@ export const UpdateUser = ({ user, tenantId }: Props) => { return ( - @@ -175,13 +163,7 @@ export const UpdateUser = ({ user, tenantId }: Props) => { return ( - diff --git a/src/modules/settings/users/Users.tsx b/src/modules/settings/users/Users.tsx index 82283778b..4f65f9e93 100644 --- a/src/modules/settings/users/Users.tsx +++ b/src/modules/settings/users/Users.tsx @@ -78,9 +78,6 @@ export const Users = ({ userId, tenantId, plan, users, usersCount }: Props) => {
    diff --git a/src/app/register/layout.tsx b/src/app/register/layout.tsx index 7c1ffeb2e..0dfd5899f 100644 --- a/src/app/register/layout.tsx +++ b/src/app/register/layout.tsx @@ -28,7 +28,7 @@ export default function Layout({ children }: Props) { )} {hasBackground ? ( -
    +
    {children}
    ) : ( diff --git a/src/app/register/plan/form.tsx b/src/app/register/plan/form.tsx index 12b5f3a7d..98a72509c 100644 --- a/src/app/register/plan/form.tsx +++ b/src/app/register/plan/form.tsx @@ -116,7 +116,7 @@ export default function Form() {
    saveData(plan.value, plan.lookup_key))} key={plan.value} - className="w-full overflow-hidden rounded-md bg-grayA-3 p-4 text-center text-primary shadow-sm shadow-tealA-7 transition-all duration-300 hover:shadow-tealA-8" + className="w-full overflow-hidden rounded-md bg-primary-foreground-alpha p-4 text-center text-primary shadow-sm shadow-tealA-7 transition-all duration-300 hover:shadow-tealA-8" >

    diff --git a/src/components/avatar/Avatar.tsx b/src/components/avatar/Avatar.tsx index c5c4ac333..071b20c42 100644 --- a/src/components/avatar/Avatar.tsx +++ b/src/components/avatar/Avatar.tsx @@ -14,7 +14,7 @@ const Avatar = forwardRef< ( ); diff --git a/src/components/tooltip/Tooltip.tsx b/src/components/tooltip/Tooltip.tsx index 53087fd3a..fb2246c4a 100644 --- a/src/components/tooltip/Tooltip.tsx +++ b/src/components/tooltip/Tooltip.tsx @@ -21,7 +21,7 @@ const TooltipContent = forwardRef< ref={ref} sideOffset={sideOffset} className={cn( - 'z-50 overflow-hidden rounded-md border border-gray-6 bg-primary-foreground px-3 py-1.5 text-sm font-semibold text-primary shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95', + 'z-50 overflow-hidden rounded-md border border-primary bg-primary-foreground px-3 py-1.5 text-sm font-semibold text-primary shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95', className, )} {...props} diff --git a/src/modules/home/Question.tsx b/src/modules/home/Question.tsx index 4a74b79ba..ea07be747 100644 --- a/src/modules/home/Question.tsx +++ b/src/modules/home/Question.tsx @@ -93,7 +93,7 @@ export default function Question({ node, favorites }: Props) { return (
  • diff --git a/src/modules/settings/general/Files.tsx b/src/modules/settings/general/Files.tsx index e81ca35ff..6d516fdee 100644 --- a/src/modules/settings/general/Files.tsx +++ b/src/modules/settings/general/Files.tsx @@ -103,7 +103,7 @@ export const Files = ({ tenant }: Props) => { > {({ getRootProps, getInputProps, open, isDragActive }) => (
    { {file?.name diff --git a/tailwind.config.js b/tailwind.config.js index 75c312a80..a0e544ba3 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -13,6 +13,10 @@ module.exports = { boxShadow: { sm: '0 0 0 1px', }, + borderColor: { + primary: 'var(--gray-6)', + accent: 'var(--teal-6)' + }, backgroundColor: { divider: 'var(--gray-6)', primary: { @@ -21,12 +25,13 @@ module.exports = { DEFAULT: 'var(--gray-3)', hover: 'var(--gray-4)', active: 'var(--gray-4)', + alpha: 'var(--gray-a3)' }, negative: { DEFAULT: 'var(--gray-12)', hover: 'var(--gray-11)', disabled: 'var(--gray-10)' - } + }, }, destructive: { DEFAULT: 'var(--red-6)', From 31639da3fbe8cd82b7ccd8f8714f1b388e6cbac0 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 23 Sep 2024 17:24:51 +0200 Subject: [PATCH 242/326] :closed_lock_with_key: add cloudfront url env variable --- .env.sample | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.env.sample b/.env.sample index 5b7970943..d7e0ef5f9 100644 --- a/.env.sample +++ b/.env.sample @@ -30,8 +30,6 @@ PRIVATE_KEY= # Resend key RESEND_API_KEY= -EMAIL_SERVER_USER= -EMAIL_SERVER_PASSWORD= -EMAIL_SERVER_HOST= -EMAIL_SERVER_PORT= -EMAIL_FROM= \ No newline at end of file + +# AWS variables +CLOUDFRONT_URL= \ No newline at end of file From 83a4875698abeb15420a8cd54c396907ac53eb15 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 23 Sep 2024 17:26:33 +0200 Subject: [PATCH 243/326] :children_crossing: improve invitation email template --- src/actions/create-user/action.ts | 31 +++++++---- src/components/email/NewUser.tsx | 93 +++++++++++++++++++++++++++++-- 2 files changed, 108 insertions(+), 16 deletions(-) diff --git a/src/actions/create-user/action.ts b/src/actions/create-user/action.ts index 39b13d482..8ea6878ae 100644 --- a/src/actions/create-user/action.ts +++ b/src/actions/create-user/action.ts @@ -1,16 +1,17 @@ 'use server'; import { revalidatePath } from 'next/cache'; -// import { Resend } from 'resend'; +import { Resend } from 'resend'; +import { NewUserEmailTemplate } from '@/components'; import { ActionError, authActionClient } from '@/lib/safe-actions'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; -// import { NewUserEmailTemplate } from '@/components'; import { createUserSchema } from './schema'; +import { getMe } from '../get-me'; -// const resend = new Resend(process.env.RESEND_API_KEY); +const resend = new Resend(process.env.RESEND_API_KEY); export const createUser = authActionClient .metadata({ actionName: 'createUser' }) @@ -39,13 +40,23 @@ export const createUser = authActionClient if (!newUser) { throw new ActionError('User could not be created'); } - // const { data: domains } = await resend.domains.list(); - // await resend.emails.send({ - // from: `noreply@${domains?.data[0].name}`, - // to: [email], - // subject: 'Welcome to FAQMaker', - // react: NewUserEmailTemplate(), - // }); + const tenant = await prisma.tenant.findFirst({ + where: { id: tenantId }, + }); + const me = await getMe(); + const { company } = tenant; + const { data: domains } = await resend.domains.list(); + await resend.emails.send({ + from: `FAQMaker - `, + to: [email], + subject: `You're invited to FAQMaker`, + react: NewUserEmailTemplate({ + company, + username: email, + invitedByUsername: me?.name, + invitedByEmail: me?.email, + }), + }); revalidatePath(Routes.SITE.SETTINGS); return { message: 'User created successfully' }; }, diff --git a/src/components/email/NewUser.tsx b/src/components/email/NewUser.tsx index 27fc45310..31269b90d 100644 --- a/src/components/email/NewUser.tsx +++ b/src/components/email/NewUser.tsx @@ -1,6 +1,87 @@ -export const NewUserEmailTemplate = () => ( -
    -

    You now have access to FAQMaker

    - Login -
    -); +import { + Body, + Button, + Container, + Head, + Heading, + Hr, + Html, + Img, + Link, + Preview, + Section, + Tailwind, + Text, +} from '@react-email/components'; + +interface Props { + company: string; + username: string; + invitedByUsername: string; + invitedByEmail: string; +} + +export const NewUserEmailTemplate = ({ + company, + username, + invitedByUsername, + invitedByEmail, +}: Props) => { + const previewText = `Join XXX on FAQMaker`; + + return ( + + + {previewText} + + + +
    + FAQMaker +
    + + Join {company} on FAQMaker + + Hello XXX, + + {invitedByUsername} ( + + {invitedByEmail} + + ) has invited you to the {company} team on{' '} + FAQMaker. + +
    + +
    +
    + + This invitation was intended for{' '} + {username}. If you were not + expecting this invitation, you can ignore this email. If you are + concerned about your account's safety, please reply to this email + to get in touch with us. + +
    + +
    + + ); +}; + +export default NewUserEmailTemplate; From 5f2b5ea4aa6c94c69c96349879aaf59b4375ae7f Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 23 Sep 2024 17:27:05 +0200 Subject: [PATCH 244/326] :heavy_plus_sign: add react-email dependencies --- package.json | 2 + pnpm-lock.yaml | 12197 ++++++++++++++++++++++------------------------- 2 files changed, 5573 insertions(+), 6626 deletions(-) diff --git a/package.json b/package.json index ea4ead21d..4e84b1cda 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "@radix-ui/react-slot": "^1.0.2", "@radix-ui/react-tabs": "^1.0.4", "@radix-ui/react-tooltip": "^1.0.7", + "@react-email/components": "^0.0.25", "@sentry/nextjs": "^7.102.1", "@slack/webhook": "^7.0.1", "@stripe/stripe-js": "^4.1.0", @@ -63,6 +64,7 @@ "react": "18.2.0", "react-dom": "18.2.0", "react-dropzone": "^14.2.3", + "react-email": "^3.0.1", "react-error-boundary": "^4.0.12", "react-hook-form": "^7.45.4", "react-paginate": "^8.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0ab1511c7..a1f28ebb1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,616 +1,1184 @@ -lockfileVersion: '9.0' +lockfileVersion: '6.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false -importers: - - .: - dependencies: - '@google-cloud/storage': - specifier: ^7.7.0 - version: 7.7.0 - '@hookform/resolvers': - specifier: ^3.3.4 - version: 3.3.4(react-hook-form@7.45.4(react@18.2.0)) - '@next-auth/prisma-adapter': - specifier: ^1.0.7 - version: 1.0.7(@prisma/client@5.16.1(prisma@5.16.1))(next-auth@4.24.7(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) - '@prisma/client': - specifier: 5.16.1 - version: 5.16.1(prisma@5.16.1) - '@radix-ui/colors': - specifier: ^3.0.0 - version: 3.0.0 - '@radix-ui/react-avatar': - specifier: ^1.0.4 - version: 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-dialog': - specifier: ^1.0.5 - version: 1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-dropdown-menu': - specifier: ^2.0.6 - version: 2.0.6(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-label': - specifier: ^2.0.2 - version: 2.0.2(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-popover': - specifier: ^1.1.1 - version: 1.1.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-select': - specifier: ^2.0.0 - version: 2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': - specifier: ^1.0.2 - version: 1.0.2(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-tabs': - specifier: ^1.0.4 - version: 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-tooltip': - specifier: ^1.0.7 - version: 1.0.7(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@sentry/nextjs': - specifier: ^7.102.1 - version: 7.102.1(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0)(webpack@5.89.0) - '@slack/webhook': - specifier: ^7.0.1 - version: 7.0.1 - '@stripe/stripe-js': - specifier: ^4.1.0 - version: 4.1.0 - '@uiw/react-markdown-preview': - specifier: ^5.0.6 - version: 5.0.6(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@uiw/react-md-editor': - specifier: ^4.0.3 - version: 4.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - class-variance-authority: - specifier: ^0.7.0 - version: 0.7.0 - clsx: - specifier: ^2.1.0 - version: 2.1.0 - formidable: - specifier: ^3.5.1 - version: 3.5.1 - jotai: - specifier: ^2.6.4 - version: 2.6.4(@types/react@18.0.27)(react@18.2.0) - lucide-react: - specifier: ^0.438.0 - version: 0.438.0(react@18.2.0) - next: - specifier: 14.2.4 - version: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - next-auth: - specifier: ^4.24.7 - version: 4.24.7(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - next-remove-imports: - specifier: ^1.0.12 - version: 1.0.12(webpack@5.89.0) - next-safe-action: - specifier: ^7.0.2 - version: 7.0.2(@types/json-schema@7.0.15)(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(zod@3.22.4) - next-themes: - specifier: ^0.3.0 - version: 0.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: - specifier: 18.2.0 - version: 18.2.0 - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) - react-dropzone: - specifier: ^14.2.3 - version: 14.2.3(react@18.2.0) - react-error-boundary: - specifier: ^4.0.12 - version: 4.0.12(react@18.2.0) - react-hook-form: - specifier: ^7.45.4 - version: 7.45.4(react@18.2.0) - react-paginate: - specifier: ^8.2.0 - version: 8.2.0(react@18.2.0) - react-papaparse: - specifier: ^4.4.0 - version: 4.4.0 - rehype-sanitize: - specifier: ^6.0.0 - version: 6.0.0 - resend: - specifier: ^4.0.0 - version: 4.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - slugify: - specifier: ^1.6.6 - version: 1.6.6 - sonner: - specifier: ^1.4.0 - version: 1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - stripe: - specifier: ^16.1.0 - version: 16.1.0 - tailwind-merge: - specifier: ^2.2.0 - version: 2.2.0 - tailwindcss-animate: - specifier: ^1.0.6 - version: 1.0.6(tailwindcss@3.4.1(ts-node@10.9.1(@types/node@22.5.4)(typescript@5.5.4))) - use-debounce: - specifier: ^10.0.0 - version: 10.0.0(react@18.2.0) - vaul: - specifier: ^0.9.0 - version: 0.9.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - zod: - specifier: ^3.22.4 - version: 3.22.4 - devDependencies: - '@eslint/compat': - specifier: ^1.1.1 - version: 1.1.1 - '@eslint/eslintrc': - specifier: ^3.1.0 - version: 3.1.0 - '@eslint/js': - specifier: ^9.9.1 - version: 9.9.1 - '@next/eslint-plugin-next': - specifier: ^14.2.7 - version: 14.2.7 - '@playwright/test': - specifier: ^1.45.0 - version: 1.45.0 - '@swc-jotai/react-refresh': - specifier: ^0.2.0 - version: 0.2.0 - '@types/formidable': - specifier: ^3.4.5 - version: 3.4.5 - '@types/node': - specifier: ^22.5.4 - version: 22.5.4 - '@types/react': - specifier: ^18.0.27 - version: 18.0.27 - autoprefixer: - specifier: ^10.4.16 - version: 10.4.16(postcss@8.4.28) - dotenv: - specifier: ^16.4.5 - version: 16.4.5 - eslint: - specifier: 9.9.1 - version: 9.9.1(jiti@1.19.3) - eslint-config-next: - specifier: ^14.2.7 - version: 14.2.7(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) - eslint-config-prettier: - specifier: ^9.0.0 - version: 9.0.0(eslint@9.9.1(jiti@1.19.3)) - eslint-import-resolver-typescript: - specifier: ^3.6.3 - version: 3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)) - eslint-plugin-import-x: - specifier: ^4.2.0 - version: 4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) - eslint-plugin-playwright: - specifier: ^1.6.2 - version: 1.6.2(eslint@9.9.1(jiti@1.19.3)) - eslint-plugin-prettier: - specifier: ^5.1.3 - version: 5.1.3(@types/eslint@8.56.0)(eslint-config-prettier@9.0.0(eslint@9.9.1(jiti@1.19.3)))(eslint@9.9.1(jiti@1.19.3))(prettier@3.2.5) - eslint-plugin-react: - specifier: ^7.35.2 - version: 7.35.2(eslint@9.9.1(jiti@1.19.3)) - eslint-plugin-react-hooks: - specifier: ^4.6.2 - version: 4.6.2(eslint@9.9.1(jiti@1.19.3)) - eslint-plugin-unused-imports: - specifier: ^4.1.3 - version: 4.1.3(@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint@9.9.1(jiti@1.19.3)) - husky: - specifier: ^9.0.11 - version: 9.0.11 - lint-staged: - specifier: ^15.0.2 - version: 15.0.2 - postcss: - specifier: ^8.4.28 - version: 8.4.28 - prettier: - specifier: ^3.2.5 - version: 3.2.5 - prettier-plugin-tailwindcss: - specifier: ^0.6.6 - version: 0.6.6(prettier@3.2.5) - prisma: - specifier: 5.16.1 - version: 5.16.1 - tailwindcss: - specifier: ^3.4.1 - version: 3.4.1(ts-node@10.9.1(@types/node@22.5.4)(typescript@5.5.4)) - ts-node: - specifier: ^10.9.1 - version: 10.9.1(@types/node@22.5.4)(typescript@5.5.4) - typescript: - specifier: ^5.5.4 - version: 5.5.4 - typescript-eslint: - specifier: ^8.4.0 - version: 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) +dependencies: + '@google-cloud/storage': + specifier: ^7.7.0 + version: 7.13.0 + '@hookform/resolvers': + specifier: ^3.3.4 + version: 3.9.0(react-hook-form@7.53.0) + '@next-auth/prisma-adapter': + specifier: ^1.0.7 + version: 1.0.7(@prisma/client@5.16.1)(next-auth@4.24.7) + '@prisma/client': + specifier: 5.16.1 + version: 5.16.1(prisma@5.16.1) + '@radix-ui/colors': + specifier: ^3.0.0 + version: 3.0.0 + '@radix-ui/react-avatar': + specifier: ^1.0.4 + version: 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-dialog': + specifier: ^1.0.5 + version: 1.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-dropdown-menu': + specifier: ^2.0.6 + version: 2.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-label': + specifier: ^2.0.2 + version: 2.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-popover': + specifier: ^1.1.1 + version: 1.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-select': + specifier: ^2.0.0 + version: 2.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': + specifier: ^1.0.2 + version: 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-tabs': + specifier: ^1.0.4 + version: 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-tooltip': + specifier: ^1.0.7 + version: 1.1.2(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@react-email/components': + specifier: ^0.0.25 + version: 0.0.25(react-dom@18.2.0)(react@18.2.0) + '@sentry/nextjs': + specifier: ^7.102.1 + version: 7.119.0(next@14.2.4)(react@18.2.0)(webpack@5.94.0) + '@slack/webhook': + specifier: ^7.0.1 + version: 7.0.3 + '@stripe/stripe-js': + specifier: ^4.1.0 + version: 4.5.0 + '@uiw/react-markdown-preview': + specifier: ^5.0.6 + version: 5.1.3(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@uiw/react-md-editor': + specifier: ^4.0.3 + version: 4.0.4(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + class-variance-authority: + specifier: ^0.7.0 + version: 0.7.0 + clsx: + specifier: ^2.1.0 + version: 2.1.1 + formidable: + specifier: ^3.5.1 + version: 3.5.1 + jotai: + specifier: ^2.6.4 + version: 2.10.0(@types/react@18.3.8)(react@18.2.0) + lucide-react: + specifier: ^0.438.0 + version: 0.438.0(react@18.2.0) + next: + specifier: 14.2.4 + version: 14.2.4(@babel/core@7.25.2)(@playwright/test@1.47.2)(react-dom@18.2.0)(react@18.2.0) + next-auth: + specifier: ^4.24.7 + version: 4.24.7(next@14.2.4)(react-dom@18.2.0)(react@18.2.0) + next-remove-imports: + specifier: ^1.0.12 + version: 1.0.12(webpack@5.94.0) + next-safe-action: + specifier: ^7.0.2 + version: 7.9.3(next@14.2.4)(react-dom@18.2.0)(react@18.2.0)(zod@3.23.8) + next-themes: + specifier: ^0.3.0 + version: 0.3.0(react-dom@18.2.0)(react@18.2.0) + react: + specifier: 18.2.0 + version: 18.2.0 + react-dom: + specifier: 18.2.0 + version: 18.2.0(react@18.2.0) + react-dropzone: + specifier: ^14.2.3 + version: 14.2.3(react@18.2.0) + react-email: + specifier: ^3.0.1 + version: 3.0.1(@playwright/test@1.47.2)(react-dom@18.2.0)(react@18.2.0) + react-error-boundary: + specifier: ^4.0.12 + version: 4.0.13(react@18.2.0) + react-hook-form: + specifier: ^7.45.4 + version: 7.53.0(react@18.2.0) + react-paginate: + specifier: ^8.2.0 + version: 8.2.0(react@18.2.0) + react-papaparse: + specifier: ^4.4.0 + version: 4.4.0 + rehype-sanitize: + specifier: ^6.0.0 + version: 6.0.0 + resend: + specifier: ^4.0.0 + version: 4.0.0(react-dom@18.2.0)(react@18.2.0) + slugify: + specifier: ^1.6.6 + version: 1.6.6 + sonner: + specifier: ^1.4.0 + version: 1.5.0(react-dom@18.2.0)(react@18.2.0) + stripe: + specifier: ^16.1.0 + version: 16.12.0 + tailwind-merge: + specifier: ^2.2.0 + version: 2.5.2 + tailwindcss-animate: + specifier: ^1.0.6 + version: 1.0.7(tailwindcss@3.4.12) + use-debounce: + specifier: ^10.0.0 + version: 10.0.3(react@18.2.0) + vaul: + specifier: ^0.9.0 + version: 0.9.4(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + zod: + specifier: ^3.22.4 + version: 3.23.8 + +devDependencies: + '@eslint/compat': + specifier: ^1.1.1 + version: 1.1.1 + '@eslint/eslintrc': + specifier: ^3.1.0 + version: 3.1.0 + '@eslint/js': + specifier: ^9.9.1 + version: 9.11.0 + '@next/eslint-plugin-next': + specifier: ^14.2.7 + version: 14.2.13 + '@playwright/test': + specifier: ^1.45.0 + version: 1.47.2 + '@swc-jotai/react-refresh': + specifier: ^0.2.0 + version: 0.2.0 + '@types/formidable': + specifier: ^3.4.5 + version: 3.4.5 + '@types/node': + specifier: ^22.5.4 + version: 22.5.5 + '@types/react': + specifier: ^18.0.27 + version: 18.3.8 + autoprefixer: + specifier: ^10.4.16 + version: 10.4.20(postcss@8.4.47) + dotenv: + specifier: ^16.4.5 + version: 16.4.5 + eslint: + specifier: 9.9.1 + version: 9.9.1 + eslint-config-next: + specifier: ^14.2.7 + version: 14.2.13(eslint-plugin-import-x@4.3.0)(eslint@9.9.1)(typescript@5.6.2) + eslint-config-prettier: + specifier: ^9.0.0 + version: 9.1.0(eslint@9.9.1) + eslint-import-resolver-typescript: + specifier: ^3.6.3 + version: 3.6.3(@typescript-eslint/parser@8.6.0)(eslint-plugin-import-x@4.3.0)(eslint@9.9.1) + eslint-plugin-import-x: + specifier: ^4.2.0 + version: 4.3.0(eslint@9.9.1)(typescript@5.6.2) + eslint-plugin-playwright: + specifier: ^1.6.2 + version: 1.6.2(eslint@9.9.1) + eslint-plugin-prettier: + specifier: ^5.1.3 + version: 5.2.1(eslint-config-prettier@9.1.0)(eslint@9.9.1)(prettier@3.3.3) + eslint-plugin-react: + specifier: ^7.35.2 + version: 7.36.1(eslint@9.9.1) + eslint-plugin-react-hooks: + specifier: ^4.6.2 + version: 4.6.2(eslint@9.9.1) + eslint-plugin-unused-imports: + specifier: ^4.1.3 + version: 4.1.4(eslint@9.9.1) + husky: + specifier: ^9.0.11 + version: 9.1.6 + lint-staged: + specifier: ^15.0.2 + version: 15.2.10 + postcss: + specifier: ^8.4.28 + version: 8.4.47 + prettier: + specifier: ^3.2.5 + version: 3.3.3 + prettier-plugin-tailwindcss: + specifier: ^0.6.6 + version: 0.6.6(prettier@3.3.3) + prisma: + specifier: 5.16.1 + version: 5.16.1 + tailwindcss: + specifier: ^3.4.1 + version: 3.4.12(ts-node@10.9.2) + ts-node: + specifier: ^10.9.1 + version: 10.9.2(@types/node@22.5.5)(typescript@5.6.2) + typescript: + specifier: ^5.5.4 + version: 5.6.2 + typescript-eslint: + specifier: ^8.4.0 + version: 8.6.0(eslint@9.9.1)(typescript@5.6.2) packages: - '@aashutoshrathi/word-wrap@1.2.6': - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - - '@alloc/quick-lru@5.2.0': + /@alloc/quick-lru@5.2.0: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} - '@ampproject/remapping@2.2.1': - resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + /@ampproject/remapping@2.3.0: + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + dev: false - '@babel/code-frame@7.22.13': - resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.22.9': - resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} + /@babel/code-frame@7.24.7: + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.24.7 + picocolors: 1.1.0 + dev: false - '@babel/core@7.22.17': - resolution: {integrity: sha512-2EENLmhpwplDux5PSsZnSbnSkB3tZ6QTksgO25xwEL7pIDcNOMhF5v/s6RzwjMZzZzw9Ofc30gHv5ChCC8pifQ==} + /@babel/compat-data@7.25.4: + resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==} engines: {node: '>=6.9.0'} + dev: false - '@babel/generator@7.22.15': - resolution: {integrity: sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==} + /@babel/core@7.24.5: + resolution: {integrity: sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==} engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.6 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.24.5) + '@babel/helpers': 7.25.6 + '@babel/parser': 7.25.6 + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 + convert-source-map: 2.0.0 + debug: 4.3.7 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/helper-compilation-targets@7.22.15': - resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} + /@babel/core@7.25.2: + resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.6 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helpers': 7.25.6 + '@babel/parser': 7.25.6 + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 + convert-source-map: 2.0.0 + debug: 4.3.7 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/helper-environment-visitor@7.22.5': - resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} + /@babel/generator@7.25.6: + resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.25.6 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + dev: false - '@babel/helper-function-name@7.22.5': - resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} + /@babel/helper-compilation-targets@7.25.2: + resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.25.4 + '@babel/helper-validator-option': 7.24.8 + browserslist: 4.23.3 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: false - '@babel/helper-hoist-variables@7.22.5': - resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + /@babel/helper-module-imports@7.24.7: + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/helper-module-imports@7.22.15': - resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + /@babel/helper-module-transforms@7.25.2(@babel/core@7.24.5): + resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.6 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/helper-module-transforms@7.22.17': - resolution: {integrity: sha512-XouDDhQESrLHTpnBtCKExJdyY4gJCdrvH2Pyv8r8kovX2U8G0dRUOT45T9XlbLtuu9CLXP15eusnkprhoPV5iQ==} + /@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2): + resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.6 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/helper-simple-access@7.22.5': - resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + /@babel/helper-simple-access@7.24.7: + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/helper-split-export-declaration@7.22.6': - resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + /@babel/helper-string-parser@7.24.8: + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} engines: {node: '>=6.9.0'} + dev: false - '@babel/helper-string-parser@7.22.5': - resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} + /@babel/helper-validator-identifier@7.24.7: + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} + dev: false - '@babel/helper-validator-identifier@7.22.15': - resolution: {integrity: sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==} + /@babel/helper-validator-option@7.24.8: + resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} engines: {node: '>=6.9.0'} + dev: false - '@babel/helper-validator-option@7.22.15': - resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} + /@babel/helpers@7.25.6: + resolution: {integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.25.0 + '@babel/types': 7.25.6 + dev: false - '@babel/helpers@7.22.15': - resolution: {integrity: sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==} + /@babel/highlight@7.24.7: + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.1.0 + dev: false - '@babel/highlight@7.22.13': - resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} - engines: {node: '>=6.9.0'} + /@babel/parser@7.24.5: + resolution: {integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.25.6 + dev: false - '@babel/parser@7.22.16': - resolution: {integrity: sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==} + /@babel/parser@7.25.6: + resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==} engines: {node: '>=6.0.0'} hasBin: true + dependencies: + '@babel/types': 7.25.6 + dev: false - '@babel/runtime@7.22.11': - resolution: {integrity: sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA==} + /@babel/runtime@7.25.6: + resolution: {integrity: sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==} engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 + dev: false - '@babel/runtime@7.23.6': - resolution: {integrity: sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==} + /@babel/template@7.25.0: + resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 + dev: false - '@babel/runtime@7.23.7': - resolution: {integrity: sha512-w06OXVOFso7LcbzMiDGt+3X7Rh7Ho8MmgPoWU3rarH+8upf+wSU/grlGbWzQyr3DkdN6ZeuMFjpdwW0Q+HxobA==} + /@babel/traverse@7.25.6: + resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.6 + '@babel/parser': 7.25.6 + '@babel/template': 7.25.0 + '@babel/types': 7.25.6 + debug: 4.3.7 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/template@7.22.15': - resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} + /@babel/types@7.25.6: + resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + dev: false - '@babel/traverse@7.22.17': - resolution: {integrity: sha512-xK4Uwm0JnAMvxYZxOVecss85WxTEIbTa7bnGyf/+EgCL5Zt3U7htUpEOWv9detPlamGKuRzCqw74xVglDWpPdg==} - engines: {node: '>=6.9.0'} + /@cspotcode/source-map-support@0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/trace-mapping': 0.3.9 - '@babel/types@7.22.17': - resolution: {integrity: sha512-YSQPHLFtQNE5xN9tHuZnzu8vPr61wVTBZdfv1meex1NBosa4iT05k/Jw06ddJugi4bk7The/oSwQGFcksmEJQg==} - engines: {node: '>=6.9.0'} + /@esbuild/aix-ppc64@0.19.11: + resolution: {integrity: sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: false + optional: true - '@cspotcode/source-map-support@0.8.1': - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + /@esbuild/android-arm64@0.19.11: + resolution: {integrity: sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@esbuild/android-arm@0.19.11: + resolution: {integrity: sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@esbuild/android-x64@0.19.11: + resolution: {integrity: sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@esbuild/darwin-arm64@0.19.11: + resolution: {integrity: sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@esbuild/darwin-x64@0.19.11: + resolution: {integrity: sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@esbuild/freebsd-arm64@0.19.11: + resolution: {integrity: sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/freebsd-x64@0.19.11: + resolution: {integrity: sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-arm64@0.19.11: + resolution: {integrity: sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-arm@0.19.11: + resolution: {integrity: sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-ia32@0.19.11: + resolution: {integrity: sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-loong64@0.19.11: + resolution: {integrity: sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-mips64el@0.19.11: + resolution: {integrity: sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-ppc64@0.19.11: + resolution: {integrity: sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-riscv64@0.19.11: + resolution: {integrity: sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-s390x@0.19.11: + resolution: {integrity: sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-x64@0.19.11: + resolution: {integrity: sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/netbsd-x64@0.19.11: + resolution: {integrity: sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/openbsd-x64@0.19.11: + resolution: {integrity: sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/sunos-x64@0.19.11: + resolution: {integrity: sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: false + optional: true + + /@esbuild/win32-arm64@0.19.11: + resolution: {integrity: sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@esbuild/win32-ia32@0.19.11: + resolution: {integrity: sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@esbuild/win32-x64@0.19.11: + resolution: {integrity: sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==} engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true - '@eslint-community/eslint-utils@4.4.0': + /@eslint-community/eslint-utils@4.4.0(eslint@9.9.1): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 9.9.1 + eslint-visitor-keys: 3.4.3 + dev: true - '@eslint-community/regexpp@4.11.0': - resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} + /@eslint-community/regexpp@4.11.1: + resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true - '@eslint/compat@1.1.1': + /@eslint/compat@1.1.1: resolution: {integrity: sha512-lpHyRyplhGPL5mGEh6M9O5nnKk0Gz4bFI+Zu6tKlPpDUN7XshWvH9C/px4UVm87IAANE0W81CEsNGbS1KlzXpA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true - '@eslint/config-array@0.18.0': + /@eslint/config-array@0.18.0: resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + '@eslint/object-schema': 2.1.4 + debug: 4.3.7 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true - '@eslint/eslintrc@3.1.0': + /@eslint/eslintrc@3.1.0: resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.7 + espree: 10.1.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@9.11.0: + resolution: {integrity: sha512-LPkkenkDqyzTFauZLLAPhIb48fj6drrfMvRGSL9tS3AcZBSVTllemLSNyCvHNNL2t797S/6DJNSIwRwXgMO/eQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true - '@eslint/js@9.9.1': + /@eslint/js@9.9.1: resolution: {integrity: sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true - '@eslint/object-schema@2.1.4': + /@eslint/object-schema@2.1.4: resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true - '@floating-ui/core@1.4.1': - resolution: {integrity: sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ==} + /@floating-ui/core@1.6.8: + resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==} + dependencies: + '@floating-ui/utils': 0.2.8 + dev: false - '@floating-ui/dom@1.5.1': - resolution: {integrity: sha512-KwvVcPSXg6mQygvA1TjbN/gh///36kKtllIF8SUm0qpFj8+rvYrpvlYdL1JoA71SHpDqgSSdGOSoQ0Mp3uY5aw==} + /@floating-ui/dom@1.6.11: + resolution: {integrity: sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==} + dependencies: + '@floating-ui/core': 1.6.8 + '@floating-ui/utils': 0.2.8 + dev: false - '@floating-ui/react-dom@2.0.2': - resolution: {integrity: sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ==} + /@floating-ui/react-dom@2.1.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' + dependencies: + '@floating-ui/dom': 1.6.11 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@floating-ui/utils@0.1.1': - resolution: {integrity: sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw==} + /@floating-ui/utils@0.2.8: + resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==} + dev: false - '@google-cloud/paginator@5.0.0': - resolution: {integrity: sha512-87aeg6QQcEPxGCOthnpUjvw4xAZ57G7pL8FS0C4e/81fr3FjkpUpibf1s2v5XGyGhUVGF4Jfg7yEcxqn2iUw1w==} + /@google-cloud/paginator@5.0.2: + resolution: {integrity: sha512-DJS3s0OVH4zFDB1PzjxAsHqJT6sKVbRwwML0ZBP9PbU7Yebtu/7SWMRzvO2J3nUi9pRNITCfu4LJeooM2w4pjg==} engines: {node: '>=14.0.0'} + dependencies: + arrify: 2.0.1 + extend: 3.0.2 + dev: false - '@google-cloud/projectify@4.0.0': + /@google-cloud/projectify@4.0.0: resolution: {integrity: sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==} engines: {node: '>=14.0.0'} + dev: false - '@google-cloud/promisify@4.0.0': + /@google-cloud/promisify@4.0.0: resolution: {integrity: sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==} engines: {node: '>=14'} + dev: false - '@google-cloud/storage@7.7.0': - resolution: {integrity: sha512-EMCEY+6JiIkx7Dt8NXVGGjy1vRdSGdHkoqZoqjJw7cEBkT7ZkX0c7puedfn1MamnzW5SX4xoa2jVq5u7OWBmkQ==} + /@google-cloud/storage@7.13.0: + resolution: {integrity: sha512-Y0rYdwM5ZPW3jw/T26sMxxfPrVQTKm9vGrZG8PRyGuUmUJ8a2xNuQ9W/NNA1prxqv2i54DSydV8SJqxF2oCVgA==} engines: {node: '>=14'} + dependencies: + '@google-cloud/paginator': 5.0.2 + '@google-cloud/projectify': 4.0.0 + '@google-cloud/promisify': 4.0.0 + abort-controller: 3.0.0 + async-retry: 1.3.3 + duplexify: 4.1.3 + fast-xml-parser: 4.5.0 + gaxios: 6.7.1 + google-auth-library: 9.14.1 + html-entities: 2.5.2 + mime: 3.0.0 + p-limit: 3.1.0 + retry-request: 7.0.2 + teeny-request: 9.0.0 + uuid: 8.3.2 + transitivePeerDependencies: + - encoding + - supports-color + dev: false - '@hookform/resolvers@3.3.4': - resolution: {integrity: sha512-o5cgpGOuJYrd+iMKvkttOclgwRW86EsWJZZRC23prf0uU2i48Htq4PuT73AVb9ionFyZrwYEITuOFGF+BydEtQ==} + /@hookform/resolvers@3.9.0(react-hook-form@7.53.0): + resolution: {integrity: sha512-bU0Gr4EepJ/EQsH/IwEzYLsT/PEj5C0ynLQ4m+GSHS+xKH4TfSelhluTgOaoc4kA5s7eCsQbM4wvZLzELmWzUg==} peerDependencies: react-hook-form: ^7.0.0 + dependencies: + react-hook-form: 7.53.0(react@18.2.0) + dev: false - '@humanwhocodes/module-importer@1.0.1': + /@humanwhocodes/module-importer@1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} + dev: true - '@humanwhocodes/retry@0.3.0': + /@humanwhocodes/retry@0.3.0: resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} engines: {node: '>=18.18'} + dev: true - '@isaacs/cliui@8.0.2': + /@isaacs/cliui@8.0.2: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 - '@jridgewell/gen-mapping@0.3.3': - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 - '@jridgewell/resolve-uri@3.1.1': - resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/set-array@1.1.2': - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} - '@jridgewell/source-map@0.3.5': - resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} + /@jridgewell/source-map@0.3.6: + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + dev: false - '@jridgewell/sourcemap-codec@1.4.15': - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + /@jridgewell/sourcemap-codec@1.5.0: + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - '@jridgewell/trace-mapping@0.3.20': - resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping@0.3.9': + /@jridgewell/trace-mapping@0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 - '@next-auth/prisma-adapter@1.0.7': + /@next-auth/prisma-adapter@1.0.7(@prisma/client@5.16.1)(next-auth@4.24.7): resolution: {integrity: sha512-Cdko4KfcmKjsyHFrWwZ//lfLUbcLqlyFqjd/nYE2m3aZ7tjMNUjpks47iw7NTCnXf+5UWz5Ypyt1dSs1EP5QJw==} peerDependencies: '@prisma/client': '>=2.26.0 || >=3' next-auth: ^4 + dependencies: + '@prisma/client': 5.16.1(prisma@5.16.1) + next-auth: 4.24.7(next@14.2.4)(react-dom@18.2.0)(react@18.2.0) + dev: false - '@next/env@14.2.4': + /@next/env@14.2.3: + resolution: {integrity: sha512-W7fd7IbkfmeeY2gXrzJYDx8D2lWKbVoTIj1o1ScPHNzvp30s1AuoEFSdr39bC5sjxJaxTtq3OTCZboNp0lNWHA==} + dev: false + + /@next/env@14.2.4: resolution: {integrity: sha512-3EtkY5VDkuV2+lNmKlbkibIJxcO4oIHEhBWne6PaAp+76J9KoSsGvNikp6ivzAT8dhhBMYrm6op2pS1ApG0Hzg==} + dev: false + + /@next/eslint-plugin-next@14.2.13: + resolution: {integrity: sha512-z8Mk0VljxhIzsSiZUSdt3wp+t2lKd+jk5a9Jsvh3zDGkItgDMfjv/ZbET6HsxEl/fSihVoHGsXV6VLyDH0lfTQ==} + dependencies: + glob: 10.3.10 + dev: true - '@next/eslint-plugin-next@14.2.7': - resolution: {integrity: sha512-+7xh142AdhZGjY9/L0iFo7mqRBMJHe+q+uOL+hto1Lfo9DeWCGcR6no4StlFbVSVcA6fQLKEX6y6qhMsSKbgNQ==} + /@next/swc-darwin-arm64@14.2.3: + resolution: {integrity: sha512-3pEYo/RaGqPP0YzwnlmPN2puaF2WMLM3apt5jLW2fFdXD9+pqcoTzRk+iZsf8ta7+quAe4Q6Ms0nR0SFGFdS1A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true - '@next/swc-darwin-arm64@14.2.4': + /@next/swc-darwin-arm64@14.2.4: resolution: {integrity: sha512-AH3mO4JlFUqsYcwFUHb1wAKlebHU/Hv2u2kb1pAuRanDZ7pD/A/KPD98RHZmwsJpdHQwfEc/06mgpSzwrJYnNg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-darwin-x64@14.2.3: + resolution: {integrity: sha512-6adp7waE6P1TYFSXpY366xwsOnEXM+y1kgRpjSRVI2CBDOcbRjsJ67Z6EgKIqWIue52d2q/Mx8g9MszARj8IEA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true - '@next/swc-darwin-x64@14.2.4': + /@next/swc-darwin-x64@14.2.4: resolution: {integrity: sha512-QVadW73sWIO6E2VroyUjuAxhWLZWEpiFqHdZdoQ/AMpN9YWGuHV8t2rChr0ahy+irKX5mlDU7OY68k3n4tAZTg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-gnu@14.2.3: + resolution: {integrity: sha512-cuzCE/1G0ZSnTAHJPUT1rPgQx1w5tzSX7POXSLaS7w2nIUJUD+e25QoXD/hMfxbsT9rslEXugWypJMILBj/QsA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true - '@next/swc-linux-arm64-gnu@14.2.4': + /@next/swc-linux-arm64-gnu@14.2.4: resolution: {integrity: sha512-KT6GUrb3oyCfcfJ+WliXuJnD6pCpZiosx2X3k66HLR+DMoilRb76LpWPGb4tZprawTtcnyrv75ElD6VncVamUQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-musl@14.2.3: + resolution: {integrity: sha512-0D4/oMM2Y9Ta3nGuCcQN8jjJjmDPYpHX9OJzqk42NZGJocU2MqhBq5tWkJrUQOQY9N+In9xOdymzapM09GeiZw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true - '@next/swc-linux-arm64-musl@14.2.4': + /@next/swc-linux-arm64-musl@14.2.4: resolution: {integrity: sha512-Alv8/XGSs/ytwQcbCHwze1HmiIkIVhDHYLjczSVrf0Wi2MvKn/blt7+S6FJitj3yTlMwMxII1gIJ9WepI4aZ/A==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + requiresBuild: true + dev: false + optional: true - '@next/swc-linux-x64-gnu@14.2.4': - resolution: {integrity: sha512-ze0ShQDBPCqxLImzw4sCdfnB3lRmN3qGMB2GWDRlq5Wqy4G36pxtNOo2usu/Nm9+V2Rh/QQnrRc2l94kYFXO6Q==} + /@next/swc-linux-x64-gnu@14.2.3: + resolution: {integrity: sha512-ENPiNnBNDInBLyUU5ii8PMQh+4XLr4pG51tOp6aJ9xqFQ2iRI6IH0Ds2yJkAzNV1CfyagcyzPfROMViS2wOZ9w==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + requiresBuild: true + dev: false + optional: true - '@next/swc-linux-x64-musl@14.2.4': - resolution: {integrity: sha512-8dwC0UJoc6fC7PX70csdaznVMNr16hQrTDAMPvLPloazlcaWfdPogq+UpZX6Drqb1OBlwowz8iG7WR0Tzk/diQ==} + /@next/swc-linux-x64-gnu@14.2.4: + resolution: {integrity: sha512-ze0ShQDBPCqxLImzw4sCdfnB3lRmN3qGMB2GWDRlq5Wqy4G36pxtNOo2usu/Nm9+V2Rh/QQnrRc2l94kYFXO6Q==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + requiresBuild: true + dev: false + optional: true - '@next/swc-win32-arm64-msvc@14.2.4': - resolution: {integrity: sha512-jxyg67NbEWkDyvM+O8UDbPAyYRZqGLQDTPwvrBBeOSyVWW/jFQkQKQ70JDqDSYg1ZDdl+E3nkbFbq8xM8E9x8A==} + /@next/swc-linux-x64-musl@14.2.3: + resolution: {integrity: sha512-BTAbq0LnCbF5MtoM7I/9UeUu/8ZBY0i8SFjUMCbPDOLv+un67e2JgyN4pmgfXBwy/I+RHu8q+k+MCkDN6P9ViQ==} engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - - '@next/swc-win32-ia32-msvc@14.2.4': + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-musl@14.2.4: + resolution: {integrity: sha512-8dwC0UJoc6fC7PX70csdaznVMNr16hQrTDAMPvLPloazlcaWfdPogq+UpZX6Drqb1OBlwowz8iG7WR0Tzk/diQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-arm64-msvc@14.2.3: + resolution: {integrity: sha512-AEHIw/dhAMLNFJFJIJIyOFDzrzI5bAjI9J26gbO5xhAKHYTZ9Or04BesFPXiAYXDNdrwTP2dQceYA4dL1geu8A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-arm64-msvc@14.2.4: + resolution: {integrity: sha512-jxyg67NbEWkDyvM+O8UDbPAyYRZqGLQDTPwvrBBeOSyVWW/jFQkQKQ70JDqDSYg1ZDdl+E3nkbFbq8xM8E9x8A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-ia32-msvc@14.2.3: + resolution: {integrity: sha512-vga40n1q6aYb0CLrM+eEmisfKCR45ixQYXuBXxOOmmoV8sYST9k7E3US32FsY+CkkF7NtzdcebiFT4CHuMSyZw==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-ia32-msvc@14.2.4: resolution: {integrity: sha512-twrmN753hjXRdcrZmZttb/m5xaCBFa48Dt3FbeEItpJArxriYDunWxJn+QFXdJ3hPkm4u7CKxncVvnmgQMY1ag==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-x64-msvc@14.2.3: + resolution: {integrity: sha512-Q1/zm43RWynxrO7lW4ehciQVj+5ePBhOK+/K2P7pLFX3JaJ/IZVC69SHidrmZSOkqz7ECIOhhy7XhAFG4JYyHA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true - '@next/swc-win32-x64-msvc@14.2.4': + /@next/swc-win32-x64-msvc@14.2.4: resolution: {integrity: sha512-tkLrjBzqFTP8DVrAAQmZelEahfR9OxWpFR++vAI9FBhCiIxtwHwBHC23SBHCTURBtwB4kc/x44imVOnkKGNVGg==} engines: {node: '>= 10'} cpu: [x64] os: [win32] + requiresBuild: true + dev: false + optional: true - '@nodelib/fs.scandir@2.1.5': + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 - '@nodelib/fs.stat@2.0.5': + /@nodelib/fs.stat@2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} - '@nodelib/fs.walk@1.2.8': + /@nodelib/fs.walk@1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 - '@nolyfill/is-core-module@1.0.39': + /@nolyfill/is-core-module@1.0.39: resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} engines: {node: '>=12.4.0'} + dev: true - '@one-ini/wasm@0.1.1': + /@one-ini/wasm@0.1.1: resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} + dev: false - '@panva/hkdf@1.1.1': - resolution: {integrity: sha512-dhPeilub1NuIG0X5Kvhh9lH4iW3ZsHlnzwgwbOlgwQ2wG1IqFzsgHqmKPk3WzsdWAeaxKJxgM0+W433RmN45GA==} + /@panva/hkdf@1.2.1: + resolution: {integrity: sha512-6oclG6Y3PiDFcoyk8srjLfVKyMfVCKJ27JwNPViuXziFpmdz+MZnZN/aKY0JGXgYuO/VghU0jcOAZgWXZ1Dmrw==} + dev: false - '@pkgjs/parseargs@0.11.0': + /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} + requiresBuild: true + optional: true - '@pkgr/core@0.1.1': + /@pkgr/core@0.1.1: resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dev: true - '@playwright/test@1.45.0': - resolution: {integrity: sha512-TVYsfMlGAaxeUllNkywbwek67Ncf8FRGn8ZlRdO291OL3NjG9oMbfVhyP82HQF0CZLMrYsvesqoUekxdWuF9Qw==} + /@playwright/test@1.47.2: + resolution: {integrity: sha512-jTXRsoSPONAs8Za9QEQdyjFn+0ZQFjCiIztAIF6bi1HqhBzG9Ma7g1WotyiGqFSBRZjIEqMdT8RUlbk1QVhzCQ==} engines: {node: '>=18'} hasBin: true + dependencies: + playwright: 1.47.2 - '@prisma/client@5.16.1': + /@prisma/client@5.16.1(prisma@5.16.1): resolution: {integrity: sha512-wM9SKQjF0qLxdnOZIVAIMKiz6Hu7vDt4FFAih85K1dk/Rr2mdahy6d3QP41K62N9O0DJJA//gUDA3Mp49xsKIg==} engines: {node: '>=16.13'} + requiresBuild: true peerDependencies: prisma: '*' peerDependenciesMeta: prisma: optional: true + dependencies: + prisma: 5.16.1 + dev: false - '@prisma/debug@5.16.1': + /@prisma/debug@5.16.1: resolution: {integrity: sha512-JsNgZAg6BD9RInLSrg7ZYzo11N7cVvYArq3fHGSD89HSgtN0VDdjV6bib7YddbcO6snzjchTiLfjeTqBjtArVQ==} - '@prisma/engines-version@5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303': + /@prisma/engines-version@5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303: resolution: {integrity: sha512-HkT2WbfmFZ9WUPyuJHhkiADxazHg8Y4gByrTSVeb3OikP6tjQ7txtSUGu9OBOBH0C13dPKN2qqH12xKtHu/Hiw==} - '@prisma/engines@5.16.1': + /@prisma/engines@5.16.1: resolution: {integrity: sha512-KkyF3eIUtBIyp5A/rJHCtwQO18OjpGgx18PzjyGcJDY/+vNgaVyuVd+TgwBgeq6NLdd1XMwRCI+58vinHsAdfA==} + requiresBuild: true + dependencies: + '@prisma/debug': 5.16.1 + '@prisma/engines-version': 5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303 + '@prisma/fetch-engine': 5.16.1 + '@prisma/get-platform': 5.16.1 - '@prisma/fetch-engine@5.16.1': + /@prisma/fetch-engine@5.16.1: resolution: {integrity: sha512-oOkjaPU1lhcA/Rvr4GVfd1NLJBwExgNBE36Ueq7dr71kTMwy++a3U3oLd2ZwrV9dj9xoP6LjCcky799D9nEt4w==} + dependencies: + '@prisma/debug': 5.16.1 + '@prisma/engines-version': 5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303 + '@prisma/get-platform': 5.16.1 - '@prisma/get-platform@5.16.1': + /@prisma/get-platform@5.16.1: resolution: {integrity: sha512-R4IKnWnMkR2nUAbU5gjrPehdQYUUd7RENFD2/D+xXTNhcqczp0N+WEGQ3ViyI3+6mtVcjjNIMdnUTNyu3GxIgA==} + dependencies: + '@prisma/debug': 5.16.1 - '@radix-ui/colors@3.0.0': + /@radix-ui/colors@3.0.0: resolution: {integrity: sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg==} + dev: false - '@radix-ui/number@1.0.1': - resolution: {integrity: sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==} - - '@radix-ui/primitive@1.0.1': - resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} + /@radix-ui/number@1.1.0: + resolution: {integrity: sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==} + dev: false - '@radix-ui/primitive@1.1.0': + /@radix-ui/primitive@1.1.0: resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} + dev: false - '@radix-ui/react-arrow@1.0.3': - resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-arrow@1.1.0': + /@radix-ui/react-arrow@1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==} peerDependencies: '@types/react': '*' @@ -622,43 +1190,58 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.3.8 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-avatar@1.0.4': - resolution: {integrity: sha512-kVK2K7ZD3wwj3qhle0ElXhOjbezIgyl2hVvgwfIdexL3rN6zJmy5AqqIf+D31lxVppdzV8CjAfZ6PklkmInZLw==} + /@radix-ui/react-avatar@1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Q/PbuSMk/vyAd/UoIShVGZ7StHHeRFYU7wXmi5GV+8cLXflZAEpHL/F697H1klrzxKXNtZ97vWiC0q3RKUH8UA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/react-context': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@types/react': 18.3.8 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-collection@1.0.3': - resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} + /@radix-ui/react-collection@1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@types/react': 18.3.8 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-compose-refs@1.0.1': - resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-compose-refs@1.1.0': + /@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.8)(react@18.2.0): resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} peerDependencies: '@types/react': '*' @@ -666,17 +1249,12 @@ packages: peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@types/react': 18.3.8 + react: 18.2.0 + dev: false - '@radix-ui/react-context@1.0.1': - resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-context@1.1.0': + /@radix-ui/react-context@1.1.0(@types/react@18.3.8)(react@18.2.0): resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==} peerDependencies: '@types/react': '*' @@ -684,43 +1262,57 @@ packages: peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@types/react': 18.3.8 + react: 18.2.0 + dev: false - '@radix-ui/react-dialog@1.0.5': - resolution: {integrity: sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==} + /@radix-ui/react-dialog@1.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-zysS+iU4YP3STKNS6USvFVqI4qqx8EpiwmT5TuCApVEBca+eRCbONi4EgzfNSuVnOXvC5UPHHMjs8RXO6DH9Bg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-portal': 1.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@types/react': 18.3.8 + aria-hidden: 1.2.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.7(@types/react@18.3.8)(react@18.2.0) + dev: false - '@radix-ui/react-direction@1.0.1': - resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-dismissable-layer@1.0.5': - resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} + /@radix-ui/react-direction@1.1.0(@types/react@18.3.8)(react@18.2.0): + resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==} peerDependencies: '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@types/react-dom': - optional: true + dependencies: + '@types/react': 18.3.8 + react: 18.2.0 + dev: false - '@radix-ui/react-dismissable-layer@1.1.0': + /@radix-ui/react-dismissable-layer@1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==} peerDependencies: '@types/react': '*' @@ -732,30 +1324,43 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@types/react': 18.3.8 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-dropdown-menu@2.0.6': - resolution: {integrity: sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==} + /@radix-ui/react-dropdown-menu@2.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-y8E+x9fBq9qvteD2Zwa4397pUVhYsh9iq44b5RD5qu1GMJWBCBuVg1hMyItbc6+zH00TxGRqd9Iot4wzf3OoBQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-menu': 2.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@types/react': 18.3.8 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-focus-guards@1.0.1': - resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-focus-guards@1.1.0': + /@radix-ui/react-focus-guards@1.1.0(@types/react@18.3.8)(react@18.2.0): resolution: {integrity: sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==} peerDependencies: '@types/react': '*' @@ -763,21 +1368,12 @@ packages: peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@types/react': 18.3.8 + react: 18.2.0 + dev: false - '@radix-ui/react-focus-scope@1.0.4': - resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-focus-scope@1.1.0': + /@radix-ui/react-focus-scope@1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==} peerDependencies: '@types/react': '*' @@ -789,17 +1385,16 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@types/react': 18.3.8 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-id@1.0.1': - resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-id@1.1.0': + /@radix-ui/react-id@1.1.0(@types/react@18.3.8)(react@18.2.0): resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} peerDependencies: '@types/react': '*' @@ -807,34 +1402,68 @@ packages: peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@types/react': 18.3.8 + react: 18.2.0 + dev: false - '@radix-ui/react-label@2.0.2': - resolution: {integrity: sha512-N5ehvlM7qoTLx7nWPodsPYPgMzA5WM8zZChQg8nyFJKnDO5WHdba1vv5/H6IO5LtJMfD2Q3wh1qHFGNtK0w3bQ==} + /@radix-ui/react-label@2.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-peLblDlFw/ngk3UWq0VnYaOLy6agTZZ+MUO/WhVfm14vJGML+xH4FAl2XQGLqdefjNb7ApRg6Yn7U42ZhmYXdw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.3.8 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-menu@2.0.6': - resolution: {integrity: sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==} + /@radix-ui/react-menu@2.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-oa3mXRRVjHi6DZu/ghuzdylyjaMXLymx83irM7hTxutQbD+7IhPKdMdRHD26Rm+kHRrWcrUkkRPv5pd47a2xFQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-popper': 1.2.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@types/react': 18.3.8 + aria-hidden: 1.2.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.7(@types/react@18.3.8)(react@18.2.0) + dev: false - '@radix-ui/react-popover@1.1.1': + /@radix-ui/react-popover@1.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-3y1A3isulwnWhvTTwmIreiB8CF4L+qRjZnK1wYLO7pplddzXKby/GnZ2M7OZY3qgnl6p9AodUIHRYGXNah8Y7g==} peerDependencies: '@types/react': '*' @@ -846,22 +1475,57 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-popper': 1.2.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@types/react': 18.3.8 + aria-hidden: 1.2.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.7(@types/react@18.3.8)(react@18.2.0) + dev: false - '@radix-ui/react-popper@1.1.3': - resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==} + /@radix-ui/react-popper@1.2.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true + dependencies: + '@floating-ui/react-dom': 2.1.2(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-arrow': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-use-rect': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/rect': 1.1.0 + '@types/react': 18.3.8 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-popper@1.2.0': - resolution: {integrity: sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==} + /@radix-ui/react-portal@1.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -872,22 +1536,36 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@types/react': 18.3.8 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-portal@1.0.4': - resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} + /@radix-ui/react-presence@1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@types/react': 18.3.8 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-portal@1.1.1': - resolution: {integrity: sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==} + /@radix-ui/react-primitive@2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -898,22 +1576,42 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@types/react': 18.3.8 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-presence@1.0.1': - resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} + /@radix-ui/react-roving-focus@1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@types/react': 18.3.8 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-presence@1.1.0': - resolution: {integrity: sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==} + /@radix-ui/react-select@2.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-8iRDfyLtzxlprOo9IicnzvpsO1wNCkuwzzCM+Z5Rb5tNOpCdMvcc2AkzX0Fz+Tz9v6NJ5B/7EEgyZveo4FBRfQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -924,22 +1622,49 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/number': 1.1.0 + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-popper': 1.2.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.3.8 + aria-hidden: 1.2.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.7(@types/react@18.3.8)(react@18.2.0) + dev: false - '@radix-ui/react-primitive@1.0.3': - resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} + /@radix-ui/react-slot@1.1.0(@types/react@18.3.8)(react@18.2.0): + resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} peerDependencies: '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@types/react-dom': - optional: true + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@types/react': 18.3.8 + react: 18.2.0 + dev: false - '@radix-ui/react-primitive@2.0.0': - resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} + /@radix-ui/react-tabs@1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-bZgOKB/LtZIij75FSuPzyEti/XBhJH52ExgtdVqjCIh+Nx/FW+LhnbXtbCzIi34ccyMsyOja8T0thCzoHFXNKA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -950,4641 +1675,493 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-context': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-presence': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@types/react': 18.3.8 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-roving-focus@1.0.4': - resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} + /@radix-ui/react-tooltip@1.1.2(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-9XRsLwe6Yb9B/tlnYCPVUd/TFS4J7HuOZW345DCeC6vKIxQGMZdx21RK4VoZauPD5frgkXTYVS5y90L+3YBn4w==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-popper': 1.2.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.3.8 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@radix-ui/react-select@2.0.0': - resolution: {integrity: sha512-RH5b7af4oHtkcHS7pG6Sgv5rk5Wxa7XI8W5gvB1N/yiuDGZxko1ynvOiVhFM7Cis2A8zxF9bTOUVbRDzPepe6w==} + /@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.8)(react@18.2.0): + resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} peerDependencies: '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-slot@1.0.2': - resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-slot@1.1.0': - resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-tabs@1.0.4': - resolution: {integrity: sha512-egZfYY/+wRNCflXNHx+dePvnz9FbmssDTJBtgRfDY7e8SE5oIo3Py2eCB1ckAbh1Q7cQ/6yJZThJ++sgbxibog==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-tooltip@1.0.7': - resolution: {integrity: sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-use-callback-ref@1.0.1': - resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-callback-ref@1.1.0': - resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-controllable-state@1.0.1': - resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-controllable-state@1.1.0': - resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-escape-keydown@1.0.3': - resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-escape-keydown@1.1.0': - resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-layout-effect@1.0.1': - resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-layout-effect@1.1.0': - resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-previous@1.0.1': - resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-rect@1.0.1': - resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-rect@1.1.0': - resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-size@1.0.1': - resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-size@1.1.0': - resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-visually-hidden@1.0.3': - resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/rect@1.0.1': - resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} - - '@radix-ui/rect@1.1.0': - resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} - - '@react-email/render@0.0.17': - resolution: {integrity: sha512-xBQ+/73+WsGuXKY7r1U73zMBNV28xdV0cp9cFjhNYipBReDHhV97IpA6v7Hl0dDtDzt+yS/72dY5vYXrF1v8NA==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.2.0 - react-dom: ^18.2.0 - - '@rollup/plugin-commonjs@24.0.0': - resolution: {integrity: sha512-0w0wyykzdyRRPHOb0cQt14mIBLujfAv6GgP6g8nvg/iBxEm112t3YPPq+Buqe2+imvElTka+bjNlJ/gB56TD8g==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.68.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/pluginutils@5.1.0': - resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rtsao/scc@1.1.0': - resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - - '@rushstack/eslint-patch@1.10.4': - resolution: {integrity: sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==} - - '@selderee/plugin-htmlparser2@0.11.0': - resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} - - '@sentry-internal/feedback@7.102.1': - resolution: {integrity: sha512-vY4hpLLMNLjICtWiizc7KeGbWOTUMGrF7C+9dPCztZww3CLgzWy9A7DvPj5hodRiYzpdRnAMl8yQnMFbYXh7bA==} - engines: {node: '>=12'} - - '@sentry-internal/replay-canvas@7.102.1': - resolution: {integrity: sha512-GUX4RWI10uRjdjeyvCLtAAhWRVqnAnG6+yNxWfqUQ3qMA7B7XxG43KT2UhSnulmErNzODQ6hA68rGPwwYeRIww==} - engines: {node: '>=12'} - - '@sentry-internal/tracing@7.102.1': - resolution: {integrity: sha512-RkFlFyAC0fQOvBbBqnq0CLmFW5m3JJz9pKbZd5vXPraWAlniKSb1bC/4DF9SlNx0FN1LWG+IU3ISdpzwwTeAGg==} - engines: {node: '>=8'} - - '@sentry/browser@7.102.1': - resolution: {integrity: sha512-7BOfPBiM7Kp6q/iy0JIbsBTxIASV+zWXByqqjuEMWGj3X2u4oRIfm3gv4erPU/l+CORQUVQZLSPGoIoM1gbB/A==} - engines: {node: '>=8'} - - '@sentry/cli@1.77.3': - resolution: {integrity: sha512-c3eDqcDRmy4TFz2bFU5Y6QatlpoBPPa8cxBooaS4aMQpnIdLYPF1xhyyiW0LQlDUNc3rRjNF7oN5qKoaRoMTQQ==} - engines: {node: '>= 8'} - hasBin: true - - '@sentry/core@7.102.1': - resolution: {integrity: sha512-QjY+LSP3du3J/C8x/FfEbRxgZgsWd0jfTJ4P7s9f219I1csK4OeBMC3UA1HwEa0pY/9OF6H/egW2CjOcMM5Pdg==} - engines: {node: '>=8'} - - '@sentry/integrations@7.102.1': - resolution: {integrity: sha512-Its3Ru6xCAqpaLE3cTxW/b91js2SIFoXa8LWtQDJ7tmTdwPAbT8Pij1F4bOhhaqLYbjLtCXGl/NR2cffsiRLww==} - engines: {node: '>=8'} - - '@sentry/nextjs@7.102.1': - resolution: {integrity: sha512-gOI/GD7DWhc3WucyYnepl8Nu5jmpa1YfR6jWDzTkPE2CV9zKK9zulTdqk+Aig9ch62SAmJOGkgejm5k9PE2XzQ==} - engines: {node: '>=8'} - peerDependencies: - next: ^10.0.8 || ^11.0 || ^12.0 || ^13.0 || ^14.0 - react: 16.x || 17.x || 18.x - webpack: '>= 4.0.0' - peerDependenciesMeta: - webpack: - optional: true - - '@sentry/node@7.102.1': - resolution: {integrity: sha512-mb3vmM3SGuCruckPiv/Vafeh89UQavTfpPFoU6Jwe6dSpQ39BO8fO8k8Zev+/nP6r/FKLtX17mJobErHECXsYw==} - engines: {node: '>=8'} - - '@sentry/react@7.102.1': - resolution: {integrity: sha512-X4j2DgbktlEifnd21YJKCayAmff5hnaS+9MNz9OonEwD0ARi0ks7bo0wtWHMjPK20992MO+JwczVg/1BXJYDdQ==} - engines: {node: '>=8'} - peerDependencies: - react: 15.x || 16.x || 17.x || 18.x - - '@sentry/replay@7.102.1': - resolution: {integrity: sha512-HR/j9dGIvbrId8fh8mQlODx7JrhRmawEd9e9P3laPtogWCg/5TI+XPb2VGSaXOX9VWtb/6Z2UjHsaGjgg6YcuA==} - engines: {node: '>=12'} - - '@sentry/types@7.102.1': - resolution: {integrity: sha512-htKorf3t/D0XYtM7foTcmG+rM47rDP6XdbvCcX5gBCuCYlzpM1vqCt2rl3FLktZC6TaIpFRJw1TLfx6m+x5jdA==} - engines: {node: '>=8'} - - '@sentry/utils@7.102.1': - resolution: {integrity: sha512-+8WcFjHVV/HROXSAwMuUzveElBFC43EiTG7SNEBNgOUeQzQVTmbUZXyTVgLrUmtoWqvnIxCacoLxtZo1o67kdg==} - engines: {node: '>=8'} - - '@sentry/vercel-edge@7.102.1': - resolution: {integrity: sha512-iB6KCSxrvO172VjfQHGiYpyXPKNbx6Cz01GA1YDByRiUSgSpAq0qAFRY4lvd736w5KX4s9hen+XmZ7Gmqj8Pag==} - engines: {node: '>=8'} - - '@sentry/webpack-plugin@1.21.0': - resolution: {integrity: sha512-x0PYIMWcsTauqxgl7vWUY6sANl+XGKtx7DCVnnY7aOIIlIna0jChTAPANTfA2QrK+VK+4I/4JxatCEZBnXh3Og==} - engines: {node: '>= 8'} - - '@slack/types@2.10.0': - resolution: {integrity: sha512-JXY9l49rf7dDgvfMZi0maFyugzGkvq0s5u+kDlD68WaRUhjZNLBDKZcsrycMsVVDFfyOK0R1UKkYGmy9Ph069Q==} - engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} - - '@slack/webhook@7.0.1': - resolution: {integrity: sha512-0Uj/GQ1H8nmeAVEx+7zcWb6/q/zsSOrlIaGi6zFnwgMSxjmV6xGsVwv8w6DaAdkUbtqa43v1cirWjySeZaCOIA==} - engines: {node: '>= 18', npm: '>= 8.6.0'} - - '@stripe/stripe-js@4.1.0': - resolution: {integrity: sha512-HhstGRUz/4JdbZpb26OcOf8Qb/cFR02arvHvgz4sPFLSnI6ZNHC53Jc6JP/FGNwxtrF719YyUnK0gGy4oyhucQ==} - engines: {node: '>=12.16'} - - '@swc-jotai/react-refresh@0.2.0': - resolution: {integrity: sha512-LDkIeVcaL8sop/MHLP3RsUHj73fQ0kU7eYhJj7SuU4eAbx7xE3eeEgCjhTyPB3aYimSHwOk8/c71buLMV9SvPA==} - - '@swc/counter@0.1.3': - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - - '@swc/helpers@0.5.5': - resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} - - '@tootallnate/once@2.0.0': - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} - - '@tsconfig/node10@1.0.9': - resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} - - '@tsconfig/node12@1.0.11': - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - - '@tsconfig/node14@1.0.3': - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - - '@tsconfig/node16@1.0.4': - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - - '@types/caseless@0.12.5': - resolution: {integrity: sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==} - - '@types/debug@4.1.8': - resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} - - '@types/eslint-scope@3.7.7': - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - - '@types/eslint@8.56.0': - resolution: {integrity: sha512-FlsN0p4FhuYRjIxpbdXovvHQhtlG05O1GG/RNWvdAxTboR438IOTwmrY/vLA+Xfgg06BTkP045M3vpFwTMv1dg==} - - '@types/estree-jsx@1.0.3': - resolution: {integrity: sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==} - - '@types/estree@1.0.5': - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - - '@types/formidable@3.4.5': - resolution: {integrity: sha512-s7YPsNVfnsng5L8sKnG/Gbb2tiwwJTY1conOkJzTMRvJAlLFW1nEua+ADsJQu8N1c0oTHx9+d5nqg10WuT9gHQ==} - - '@types/hast@2.3.5': - resolution: {integrity: sha512-SvQi0L/lNpThgPoleH53cdjB3y9zpLlVjRbqB3rH8hx1jiRSBGAhyjV3H+URFjNVRqt2EdYNrbZE5IsGlNfpRg==} - - '@types/hast@3.0.0': - resolution: {integrity: sha512-SoytUJRuf68HXYqcXicQIhCrLQjqeYU2anikr4G3p3Iz+OZO5QDQpDj++gv+RenHsnUBwNZ2dumBArF8VLSk2Q==} - - '@types/json-schema@7.0.12': - resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} - - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - - '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - - '@types/mdast@4.0.3': - resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} - - '@types/ms@0.7.31': - resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} - - '@types/node@20.10.6': - resolution: {integrity: sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw==} - - '@types/node@22.5.4': - resolution: {integrity: sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==} - - '@types/papaparse@5.3.14': - resolution: {integrity: sha512-LxJ4iEFcpqc6METwp9f6BV6VVc43m6MfH0VqFosHvrUgfXiFe6ww7R3itkOQ+TCK6Y+Iv/+RnnvtRZnkc5Kc9g==} - - '@types/prismjs@1.26.0': - resolution: {integrity: sha512-ZTaqn/qSqUuAq1YwvOFQfVW1AR/oQJlLSZVustdjwI+GZ8kr0MSHBj0tsXPW1EqHubx50gtBEjbPGsdZwQwCjQ==} - - '@types/prop-types@15.7.5': - resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} - - '@types/react@18.0.27': - resolution: {integrity: sha512-3vtRKHgVxu3Jp9t718R9BuzoD4NcQ8YJ5XRzsSKxNDiDonD2MXIT1TmSkenxuCycZJoQT5d2vE8LwWJxBC1gmA==} - - '@types/request@2.48.12': - resolution: {integrity: sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==} - - '@types/scheduler@0.16.3': - resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} - - '@types/tough-cookie@4.0.5': - resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} - - '@types/unist@2.0.8': - resolution: {integrity: sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==} - - '@types/unist@3.0.0': - resolution: {integrity: sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==} - - '@typeschema/core@0.13.2': - resolution: {integrity: sha512-pAt0MK249/9szYaoPuvzhSfOd3smrLhhwCCpUNB4onX32mRx5F3lzDIveIYGQkLYRq58xOX5sjoW+n72f/MLLw==} - peerDependencies: - '@types/json-schema': ^7.0.15 - peerDependenciesMeta: - '@types/json-schema': - optional: true - - '@typeschema/main@0.13.10': - resolution: {integrity: sha512-ArdFC4GbgdVWWgPKg2tymxx2KHMus3xZ8I2kHwqw/0P4FtWBXCmSNAiBqDtpoXXF8h9cbcm7fVpcs5ftoWT9+A==} - peerDependencies: - '@typeschema/arktype': 0.13.2 - '@typeschema/class-validator': 0.1.2 - '@typeschema/deepkit': 0.13.4 - '@typeschema/effect': 0.13.4 - '@typeschema/fastest-validator': 0.1.0 - '@typeschema/function': 0.13.2 - '@typeschema/io-ts': 0.13.3 - '@typeschema/joi': 0.13.3 - '@typeschema/json': 0.13.3 - '@typeschema/ow': 0.13.3 - '@typeschema/runtypes': 0.13.2 - '@typeschema/superstruct': 0.13.2 - '@typeschema/suretype': 0.1.0 - '@typeschema/typebox': 0.13.4 - '@typeschema/valibot': 0.13.5 - '@typeschema/valita': 0.1.0 - '@typeschema/vine': 0.1.0 - '@typeschema/yup': 0.13.3 - '@typeschema/zod': 0.13.3 - peerDependenciesMeta: - '@typeschema/arktype': - optional: true - '@typeschema/class-validator': - optional: true - '@typeschema/deepkit': - optional: true - '@typeschema/effect': - optional: true - '@typeschema/fastest-validator': - optional: true - '@typeschema/function': - optional: true - '@typeschema/io-ts': - optional: true - '@typeschema/joi': - optional: true - '@typeschema/json': - optional: true - '@typeschema/ow': - optional: true - '@typeschema/runtypes': - optional: true - '@typeschema/superstruct': - optional: true - '@typeschema/suretype': - optional: true - '@typeschema/typebox': - optional: true - '@typeschema/valibot': - optional: true - '@typeschema/valita': - optional: true - '@typeschema/vine': - optional: true - '@typeschema/yup': - optional: true - '@typeschema/zod': - optional: true - - '@typeschema/zod@0.13.3': - resolution: {integrity: sha512-p5Hs22WIKkM/vZTAvw5QOLSA0EJ6QBUsQMGUrXlYnTAE2LSR/F5MLsDUb18O6S5VxGjrzU7x3VIznD5qOafJRw==} - peerDependencies: - zod: ^3.22.4 - zod-to-json-schema: ^3.22.4 - peerDependenciesMeta: - zod: - optional: true - zod-to-json-schema: - optional: true - - '@typescript-eslint/eslint-plugin@8.4.0': - resolution: {integrity: sha512-rg8LGdv7ri3oAlenMACk9e+AR4wUV0yrrG+XKsGKOK0EVgeEDqurkXMPILG2836fW4ibokTB5v4b6Z9+GYQDEw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/parser@7.2.0': - resolution: {integrity: sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/parser@8.4.0': - resolution: {integrity: sha512-NHgWmKSgJk5K9N16GIhQ4jSobBoJwrmURaLErad0qlLjrpP5bECYg+wxVTGlGZmJbU03jj/dfnb6V9bw+5icsA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/scope-manager@7.2.0': - resolution: {integrity: sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==} - engines: {node: ^16.0.0 || >=18.0.0} - - '@typescript-eslint/scope-manager@8.4.0': - resolution: {integrity: sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/type-utils@8.4.0': - resolution: {integrity: sha512-pu2PAmNrl9KX6TtirVOrbLPLwDmASpZhK/XU7WvoKoCUkdtq9zF7qQ7gna0GBZFN0hci0vHaSusiL2WpsQk37A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/types@7.2.0': - resolution: {integrity: sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==} - engines: {node: ^16.0.0 || >=18.0.0} - - '@typescript-eslint/types@8.4.0': - resolution: {integrity: sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@7.2.0': - resolution: {integrity: sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/typescript-estree@8.4.0': - resolution: {integrity: sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/utils@8.4.0': - resolution: {integrity: sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - - '@typescript-eslint/visitor-keys@7.2.0': - resolution: {integrity: sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==} - engines: {node: ^16.0.0 || >=18.0.0} - - '@typescript-eslint/visitor-keys@8.4.0': - resolution: {integrity: sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@uiw/copy-to-clipboard@1.0.15': - resolution: {integrity: sha512-1bbGZ3T+SGmA07BoVPK4UCUDcowDN/moctviJGQexfOc9qL8TMLDQPr7mTPvDKhgJkgnlKkAQNFU8PiarIi9sQ==} - - '@uiw/react-markdown-preview@5.0.6': - resolution: {integrity: sha512-zd+T02xFhy6K75XPdkF3RRAWKzVzJctZ6CCpFDcn/CgdQlEj8Z+Z9k11nkPspzbznB43UYdoe4qQvnjgG6TfZw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@uiw/react-md-editor@4.0.3': - resolution: {integrity: sha512-TvChXxUBUS21Rk0cVC0aeJoWcFZ/G0xN/Hc4Lv9FGFK8wPOHESd7Bcq4jNRHJ6lEzE/+d4Wh00lEVNKj+rQyBw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@ungap/structured-clone@1.2.0': - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - - '@webassemblyjs/ast@1.11.6': - resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} - - '@webassemblyjs/floating-point-hex-parser@1.11.6': - resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} - - '@webassemblyjs/helper-api-error@1.11.6': - resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} - - '@webassemblyjs/helper-buffer@1.11.6': - resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} - - '@webassemblyjs/helper-numbers@1.11.6': - resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} - - '@webassemblyjs/helper-wasm-bytecode@1.11.6': - resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} - - '@webassemblyjs/helper-wasm-section@1.11.6': - resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} - - '@webassemblyjs/ieee754@1.11.6': - resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} - - '@webassemblyjs/leb128@1.11.6': - resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} - - '@webassemblyjs/utf8@1.11.6': - resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} - - '@webassemblyjs/wasm-edit@1.11.6': - resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} - - '@webassemblyjs/wasm-gen@1.11.6': - resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} - - '@webassemblyjs/wasm-opt@1.11.6': - resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} - - '@webassemblyjs/wasm-parser@1.11.6': - resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} - - '@webassemblyjs/wast-printer@1.11.6': - resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} - - '@xtuc/ieee754@1.2.0': - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - - '@xtuc/long@4.2.2': - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - - abbrev@2.0.0: - resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} - - acorn-import-assertions@1.9.0: - resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} - peerDependencies: - acorn: ^8 - - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn-walk@8.3.0: - resolution: {integrity: sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==} - engines: {node: '>=0.4.0'} - - acorn@8.10.0: - resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@8.12.1: - resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} - engines: {node: '>=0.4.0'} - hasBin: true - - agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - - agent-base@7.1.0: - resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} - engines: {node: '>= 14'} - - ajv-formats@2.1.1: - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - - ajv-keywords@3.5.2: - resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} - peerDependencies: - ajv: ^6.9.1 - - ajv-keywords@5.1.0: - resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} - peerDependencies: - ajv: ^8.8.2 - - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - - ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} - - ansi-escapes@5.0.0: - resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} - engines: {node: '>=12'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - - arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - aria-hidden@1.2.3: - resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==} - engines: {node: '>=10'} - - aria-query@5.1.3: - resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} - - array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} - engines: {node: '>= 0.4'} - - array-includes@3.1.8: - resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} - engines: {node: '>= 0.4'} - - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - - array.prototype.findlast@1.2.5: - resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} - engines: {node: '>= 0.4'} - - array.prototype.findlastindex@1.2.5: - resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} - engines: {node: '>= 0.4'} - - array.prototype.flat@1.3.2: - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} - engines: {node: '>= 0.4'} - - array.prototype.flatmap@1.3.2: - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} - engines: {node: '>= 0.4'} - - array.prototype.tosorted@1.1.4: - resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} - engines: {node: '>= 0.4'} - - arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} - engines: {node: '>= 0.4'} - - arrify@2.0.1: - resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} - engines: {node: '>=8'} - - asap@2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - - ast-types-flow@0.0.8: - resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} - - async-retry@1.3.3: - resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} - - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - - attr-accept@2.2.2: - resolution: {integrity: sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==} - engines: {node: '>=4'} - - autoprefixer@10.4.16: - resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - - available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} - - axe-core@4.10.0: - resolution: {integrity: sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==} - engines: {node: '>=4'} - - axios@1.6.2: - resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==} - - axobject-query@4.1.0: - resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} - engines: {node: '>= 0.4'} - - babel-loader@9.1.3: - resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} - engines: {node: '>= 14.15.0'} - peerDependencies: - '@babel/core': ^7.12.0 - webpack: '>=5' - - babel-plugin-transform-remove-imports@1.7.0: - resolution: {integrity: sha512-gprmWf6ry5qrnxMyiDaxZpXzZJP6R9FRA+p0AImLIWRmSEGtlKcFprHKeGMZYkII9rJR6Q1hYou+n1fk6rWf2g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - bail@2.0.2: - resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - bcp-47-match@2.0.3: - resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} - - bignumber.js@9.1.2: - resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} - - binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - - boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - - browserslist@4.21.10: - resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - browserslist@4.22.2: - resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - buffer-equal-constant-time@1.0.1: - resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} - - call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} - - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - - caniuse-lite@1.0.30001572: - resolution: {integrity: sha512-1Pbh5FLmn5y4+QhNyJE9j3/7dK44dGB83/ZMjv/qJk86TvDbjk0LosiZo0i0WB0Vx607qMX9jYrn1VLHCkN4rw==} - - caniuse-lite@1.0.30001587: - resolution: {integrity: sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA==} - - ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - - chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - - character-entities-html4@2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - - character-entities-legacy@3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - - character-entities@2.0.2: - resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - - character-reference-invalid@2.0.1: - resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - - chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - - chrome-trace-event@1.0.3: - resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} - engines: {node: '>=6.0'} - - class-variance-authority@0.7.0: - resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} - - cli-cursor@4.0.0: - resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - cli-truncate@3.1.0: - resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - client-only@0.0.1: - resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - - clsx@2.0.0: - resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} - engines: {node: '>=6'} - - clsx@2.1.0: - resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} - engines: {node: '>=6'} - - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - - comma-separated-tokens@2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - - commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} - - commander@11.1.0: - resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} - engines: {node: '>=16'} - - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - - common-path-prefix@3.0.0: - resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} - - commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - - compressible@2.0.18: - resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} - engines: {node: '>= 0.6'} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - config-chain@1.1.13: - resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} - - convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - - cookie@0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} - engines: {node: '>= 0.6'} - - create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - - css-selector-parser@3.0.4: - resolution: {integrity: sha512-pnmS1dbKsz6KA4EW4BznyPL2xxkNDRg62hcD0v8g6DEw2W7hxOln5M953jsp9hmw5Dg57S6o/A8GOn37mbAgcQ==} - - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - - csstype@3.1.2: - resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} - - damerau-levenshtein@1.0.8: - resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - - data-view-buffer@1.0.1: - resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} - engines: {node: '>= 0.4'} - - data-view-byte-length@1.0.1: - resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} - engines: {node: '>= 0.4'} - - data-view-byte-offset@1.0.0: - resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} - engines: {node: '>= 0.4'} - - debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.3.6: - resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decode-named-character-reference@1.0.2: - resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} - - deep-equal@2.2.3: - resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} - engines: {node: '>= 0.4'} - - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - - deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - - define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - - define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - - dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - - detect-node-es@1.1.0: - resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} - - devlop@1.1.0: - resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - - dezalgo@1.0.4: - resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} - - didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - - diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - - direction@2.0.1: - resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} - hasBin: true - - dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - - doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - - dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - - domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - - domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - - domutils@3.1.0: - resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} - - dotenv@16.4.5: - resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} - engines: {node: '>=12'} - - duplexify@4.1.2: - resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==} - - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - ecdsa-sig-formatter@1.0.11: - resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} - - editorconfig@1.0.4: - resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==} - engines: {node: '>=14'} - hasBin: true - - electron-to-chromium@1.4.503: - resolution: {integrity: sha512-LF2IQit4B0VrUHFeQkWhZm97KuJSGF2WJqq1InpY+ECpFRkXd8yTIaTtJxsO0OKDmiBYwWqcrNaXOurn2T2wiA==} - - electron-to-chromium@1.4.616: - resolution: {integrity: sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - - enhanced-resolve@5.15.0: - resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} - engines: {node: '>=10.13.0'} - - ent@2.2.0: - resolution: {integrity: sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==} - - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - - es-abstract@1.23.3: - resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} - engines: {node: '>= 0.4'} - - es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - es-get-iterator@1.1.3: - resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} - - es-iterator-helpers@1.0.19: - resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} - engines: {node: '>= 0.4'} - - es-module-lexer@1.4.1: - resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} - - es-object-atoms@1.0.0: - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} - engines: {node: '>= 0.4'} - - es-set-tostringtag@2.0.3: - resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} - engines: {node: '>= 0.4'} - - es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} - - es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} - - escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} - - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - escape-string-regexp@5.0.0: - resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} - engines: {node: '>=12'} - - eslint-config-next@14.2.7: - resolution: {integrity: sha512-ppmy+QdQ7qkuCHGDlPjWaoSbJvjGpWSBD4zEW8f1eWlxYXYpZK7QzBOer1EcHKT3uKhlY1JjUus9g7Kvv712rw==} - peerDependencies: - eslint: ^7.23.0 || ^8.0.0 - typescript: '>=3.3.1' - peerDependenciesMeta: - typescript: - optional: true - - eslint-config-prettier@9.0.0: - resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - - eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - - eslint-import-resolver-typescript@3.6.3: - resolution: {integrity: sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: '*' - eslint-plugin-import: '*' - eslint-plugin-import-x: '*' - peerDependenciesMeta: - eslint-plugin-import: - optional: true - eslint-plugin-import-x: - optional: true - - eslint-module-utils@2.9.0: - resolution: {integrity: sha512-McVbYmwA3NEKwRQY5g4aWMdcZE5xZxV8i8l7CqJSrameuGSQJtSWaL/LxTEzSKKaCcOhlpDR8XEfYXWPrdo/ZQ==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - - eslint-plugin-import-x@4.2.0: - resolution: {integrity: sha512-kEPB9oeuKSZ8U2LfH6DDoov5V4gTid5JHny9P0JyvKmB4LZNG8kGdqJyCq46QRimbp8FKTlOtsSIO5hdhoZS8A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - - eslint-plugin-import@2.30.0: - resolution: {integrity: sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - - eslint-plugin-jsx-a11y@6.10.0: - resolution: {integrity: sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - - eslint-plugin-playwright@1.6.2: - resolution: {integrity: sha512-mraN4Em3b5jLt01q7qWPyLg0Q5v3KAWfJSlEWwldyUXoa7DSPrBR4k6B6LROLqipsG8ndkwWMdjl1Ffdh15tag==} - engines: {node: '>=16.6.0'} - peerDependencies: - eslint: '>=8.40.0' - eslint-plugin-jest: '>=25' - peerDependenciesMeta: - eslint-plugin-jest: - optional: true - - eslint-plugin-prettier@5.1.3: - resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - '@types/eslint': '>=8.0.0' - eslint: '>=8.0.0' - eslint-config-prettier: '*' - prettier: '>=3.0.0' - peerDependenciesMeta: - '@types/eslint': - optional: true - eslint-config-prettier: - optional: true - - eslint-plugin-react-hooks@4.6.2: - resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - - eslint-plugin-react@7.35.2: - resolution: {integrity: sha512-Rbj2R9zwP2GYNcIak4xoAMV57hrBh3hTaR0k7hVjwCQgryE/pw5px4b13EYjduOI0hfXyZhwBxaGpOTbWSGzKQ==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - - eslint-plugin-unused-imports@4.1.3: - resolution: {integrity: sha512-lqrNZIZjFMUr7P06eoKtQLwyVRibvG7N+LtfKtObYGizAAGrcqLkc3tDx+iAik2z7q0j/XI3ihjupIqxhFabFA==} - peerDependencies: - '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 - eslint: ^9.0.0 || ^8.0.0 - peerDependenciesMeta: - '@typescript-eslint/eslint-plugin': - optional: true - - eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - - eslint-scope@8.0.2: - resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-visitor-keys@4.0.0: - resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint@9.9.1: - resolution: {integrity: sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - peerDependencies: - jiti: '*' - peerDependenciesMeta: - jiti: - optional: true - - espree@10.1.0: - resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - estree-util-is-identifier-name@3.0.0: - resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} - - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - - execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} - - extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - - fast-deep-equal@2.0.1: - resolution: {integrity: sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==} - - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - - fast-xml-parser@4.3.4: - resolution: {integrity: sha512-utnwm92SyozgA3hhH2I8qldf2lBqm6qHOICawRNRFu1qMe3+oqr+GcXjGqTmXTMGE5T4eC03kr/rlh5C1IRdZA==} - hasBin: true - - fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} - - file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} - - file-selector@0.6.0: - resolution: {integrity: sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==} - engines: {node: '>= 12'} - - fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - - find-cache-dir@4.0.0: - resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} - engines: {node: '>=14.16'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - find-up@6.3.0: - resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} - - flatted@3.3.1: - resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - - follow-redirects@1.15.2: - resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - - for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - - foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} - engines: {node: '>=14'} - - form-data@2.5.1: - resolution: {integrity: sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==} - engines: {node: '>= 0.12'} - - form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} - - formidable@3.5.1: - resolution: {integrity: sha512-WJWKelbRHN41m5dumb0/k8TeAx7Id/y3a+Z7QfhxP/htI9Js5zYaEDtG8uMgG0vM0lOlqnmjE99/kfpOYi/0Og==} - - fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} - engines: {node: '>= 0.4'} - - functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - - gaxios@6.2.0: - resolution: {integrity: sha512-H6+bHeoEAU5D6XNc6mPKeN5dLZqEDs9Gpk6I+SZBEzK5So58JVrHPmevNi35fRl1J9Y5TaeLW0kYx3pCJ1U2mQ==} - engines: {node: '>=14'} - - gcp-metadata@6.1.0: - resolution: {integrity: sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==} - engines: {node: '>=14'} - - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - - get-intrinsic@1.2.2: - resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} - - get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} - - get-nonce@1.0.1: - resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} - engines: {node: '>=6'} - - get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - - get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} - engines: {node: '>= 0.4'} - - get-tsconfig@4.8.0: - resolution: {integrity: sha512-Pgba6TExTZ0FJAn1qkJAjIeKoDJ3CsI2ChuLohJnZl/tTU8MVrq3b+2t5UOPfRa4RMsorClBjJALkJUMjG1PAw==} - - github-slugger@2.0.0: - resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - - glob@10.3.10: - resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - - glob@7.1.6: - resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} - deprecated: Glob versions prior to v9 are no longer supported - - glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - deprecated: Glob versions prior to v9 are no longer supported - - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - - globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - - globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} - engines: {node: '>= 0.4'} - - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - - google-auth-library@9.6.3: - resolution: {integrity: sha512-4CacM29MLC2eT9Cey5GDVK4Q8t+MMp8+OEdOaqD9MG6b0dOyLORaaeJMPQ7EESVgm/+z5EKYyFLxgzBJlJgyHQ==} - engines: {node: '>=14'} - - gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - - gtoken@7.1.0: - resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} - engines: {node: '>=14.0.0'} - - has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - - has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} - engines: {node: '>= 0.4'} - - has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} - - has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - - hasown@2.0.0: - resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} - engines: {node: '>= 0.4'} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - hast-util-from-html@2.0.1: - resolution: {integrity: sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==} - - hast-util-from-parse5@7.1.2: - resolution: {integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==} - - hast-util-from-parse5@8.0.1: - resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} - - hast-util-has-property@3.0.0: - resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} - - hast-util-heading-rank@3.0.0: - resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} - - hast-util-is-element@3.0.0: - resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} - - hast-util-parse-selector@3.1.1: - resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} - - hast-util-parse-selector@4.0.0: - resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} - - hast-util-raw@9.0.1: - resolution: {integrity: sha512-5m1gmba658Q+lO5uqL5YNGQWeh1MYWZbZmWrM5lncdcuiXuo5E2HT/CIOp0rLF8ksfSwiCVJ3twlgVRyTGThGA==} - - hast-util-sanitize@5.0.0: - resolution: {integrity: sha512-L0g/qhOA82zG2hA3O29hnlv4mLU7YVVT1if5JZSr2tKO1ywkQbuMDcN05btgX0HtpqDXQniAM0ar0K+Lv4MDBQ==} - - hast-util-select@6.0.2: - resolution: {integrity: sha512-hT/SD/d/Meu+iobvgkffo1QecV8WeKWxwsNMzcTJsKw1cKTQKSR/7ArJeURLNJF9HDjp9nVoORyNNJxrvBye8Q==} - - hast-util-to-html@9.0.0: - resolution: {integrity: sha512-IVGhNgg7vANuUA2XKrT6sOIIPgaYZnmLx3l/CCOAK0PtgfoHrZwX7jCSYyFxHTrGmC6S9q8aQQekjp4JPZF+cw==} - - hast-util-to-jsx-runtime@2.3.0: - resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} - - hast-util-to-parse5@8.0.0: - resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} - - hast-util-to-string@2.0.0: - resolution: {integrity: sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==} - - hast-util-to-string@3.0.0: - resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} - - hast-util-whitespace@3.0.0: - resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - - hastscript@7.2.0: - resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} - - hastscript@8.0.0: - resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} - - hexoid@1.0.0: - resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==} - engines: {node: '>=8'} - - hoist-non-react-statics@3.3.2: - resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} - - html-to-text@9.0.5: - resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} - engines: {node: '>=14'} - - html-url-attributes@3.0.0: - resolution: {integrity: sha512-/sXbVCWayk6GDVg3ctOX6nxaVj7So40FcFAnWlWGNAB1LpYKcV5Cd10APjPjW80O7zYW2MsjBV4zZ7IZO5fVow==} - - html-void-elements@3.0.0: - resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - - htmlparser2@8.0.2: - resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} - - http-proxy-agent@5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} - - https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - - https-proxy-agent@7.0.2: - resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} - engines: {node: '>= 14'} - - human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - - husky@9.0.11: - resolution: {integrity: sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==} - engines: {node: '>=18'} - hasBin: true - - ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} - engines: {node: '>= 4'} - - ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} - engines: {node: '>= 4'} - - immediate@3.0.6: - resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - - inline-style-parser@0.2.2: - resolution: {integrity: sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==} - - internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} - engines: {node: '>= 0.4'} - - invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} - - is-alphabetical@2.0.1: - resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} - - is-alphanumerical@2.0.1: - resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} - - is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} - - is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} - engines: {node: '>= 0.4'} - - is-async-function@2.0.0: - resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} - engines: {node: '>= 0.4'} - - is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} - - is-buffer@2.0.5: - resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} - engines: {node: '>=4'} - - is-bun-module@1.1.0: - resolution: {integrity: sha512-4mTAVPlrXpaN3jtF0lsnPCMGnq4+qZjVIKq0HCpfcqf8OC1SM5oATCIAPM5V5FN05qp2NNnFndphmdZS9CV3hA==} - - is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - - is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} - - is-core-module@2.15.1: - resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} - engines: {node: '>= 0.4'} - - is-data-view@1.0.1: - resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} - engines: {node: '>= 0.4'} - - is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} - - is-decimal@2.0.1: - resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-finalizationregistry@1.0.2: - resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-fullwidth-code-point@4.0.0: - resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} - engines: {node: '>=12'} - - is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-hexadecimal@2.0.1: - resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - - is-map@2.0.2: - resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} - - is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - - is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - - is-plain-obj@4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} - engines: {node: '>=12'} - - is-reference@1.2.1: - resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} - - is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - - is-set@2.0.2: - resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} - - is-shared-array-buffer@1.0.3: - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} - engines: {node: '>= 0.4'} - - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - - is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - - is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} - - is-weakmap@2.0.1: - resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} - - is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - - is-weakset@2.0.2: - resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} - - isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - iterator.prototype@1.1.2: - resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} - - jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} - - jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} - - jiti@1.19.3: - resolution: {integrity: sha512-5eEbBDQT/jF1xg6l36P+mWGGoH9Spuy0PCdSr2dtWRDGC6ph/w9ZCL4lmESW8f8F7MwT3XKescfP0wnZWAKL9w==} - hasBin: true - - jose@4.15.5: - resolution: {integrity: sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==} - - jotai@2.6.4: - resolution: {integrity: sha512-RniwQPX4893YlNR1muOtyUGHYaTD1fhEN4qnOuZJSrDHj6xdEMrqlRSN/hCm2fshwk78ruecB/P2l+NCVWe6TQ==} - engines: {node: '>=12.20.0'} - peerDependencies: - '@types/react': '>=17.0.0' - react: '>=17.0.0' - peerDependenciesMeta: - '@types/react': - optional: true - react: - optional: true - - js-beautify@1.14.11: - resolution: {integrity: sha512-rPogWqAfoYh1Ryqqh2agUpVfbxAhbjuN1SmU86dskQUKouRiggUTCO4+2ym9UPXllc2WAp0J+T5qxn7Um3lCdw==} - engines: {node: '>=14'} - hasBin: true - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - - json-bigint@1.0.0: - resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} - - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - - json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - - json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - - json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - - jsx-ast-utils@3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} - engines: {node: '>=4.0'} - - jwa@2.0.0: - resolution: {integrity: sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==} - - jws@4.0.0: - resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} - - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - - language-subtag-registry@0.3.23: - resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} - - language-tags@1.0.9: - resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} - engines: {node: '>=0.10'} - - leac@0.6.0: - resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} - - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - - lie@3.1.1: - resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} - - lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - lint-staged@15.0.2: - resolution: {integrity: sha512-vnEy7pFTHyVuDmCAIFKR5QDO8XLVlPFQQyujQ/STOxe40ICWqJ6knS2wSJ/ffX/Lw0rz83luRDh+ET7toN+rOw==} - engines: {node: '>=18.12.0'} - hasBin: true - - listr2@7.0.2: - resolution: {integrity: sha512-rJysbR9GKIalhTbVL2tYbF2hVyDnrf7pFUZBwjPaMIdadYHmeT+EVi/Bu3qd7ETQPahTotg2WRCatXwRBW554g==} - engines: {node: '>=16.0.0'} - - loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} - engines: {node: '>=6.11.5'} - - localforage@1.10.0: - resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - log-update@5.0.1: - resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - longest-streak@3.1.0: - resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - - lru-cache@10.2.0: - resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} - engines: {node: 14 || >=16.14} - - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - - lucide-react@0.438.0: - resolution: {integrity: sha512-uq6yCB+IzVfgIPMK8ibkecXSWTTSOMs9UjUgZigfrDCVqgdwkpIgYg1fSYnf0XXF2AoSyCJZhoZXQwzoai7VGw==} - peerDependencies: - react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc - - magic-string@0.27.0: - resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} - engines: {node: '>=12'} - - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - markdown-table@3.0.3: - resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} - - mdast-util-find-and-replace@3.0.1: - resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} - - mdast-util-from-markdown@2.0.0: - resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} - - mdast-util-gfm-autolink-literal@2.0.0: - resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} - - mdast-util-gfm-footnote@2.0.0: - resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} - - mdast-util-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} - - mdast-util-gfm-table@2.0.0: - resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} - - mdast-util-gfm-task-list-item@2.0.0: - resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} - - mdast-util-gfm@3.0.0: - resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} - - mdast-util-mdx-expression@2.0.0: - resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} - - mdast-util-mdx-jsx@3.0.0: - resolution: {integrity: sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==} - - mdast-util-mdxjs-esm@2.0.1: - resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} - - mdast-util-phrasing@4.0.0: - resolution: {integrity: sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==} - - mdast-util-to-hast@13.0.2: - resolution: {integrity: sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==} - - mdast-util-to-markdown@2.1.0: - resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} - - mdast-util-to-string@4.0.0: - resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - micromark-core-commonmark@2.0.0: - resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==} - - micromark-extension-gfm-autolink-literal@2.0.0: - resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} - - micromark-extension-gfm-footnote@2.0.0: - resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==} - - micromark-extension-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==} - - micromark-extension-gfm-table@2.0.0: - resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==} - - micromark-extension-gfm-tagfilter@2.0.0: - resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} - - micromark-extension-gfm-task-list-item@2.0.1: - resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==} - - micromark-extension-gfm@3.0.0: - resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} - - micromark-factory-destination@2.0.0: - resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} - - micromark-factory-label@2.0.0: - resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} - - micromark-factory-space@2.0.0: - resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} - - micromark-factory-title@2.0.0: - resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} - - micromark-factory-whitespace@2.0.0: - resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} - - micromark-util-character@2.0.1: - resolution: {integrity: sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==} - - micromark-util-chunked@2.0.0: - resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} - - micromark-util-classify-character@2.0.0: - resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} - - micromark-util-combine-extensions@2.0.0: - resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} - - micromark-util-decode-numeric-character-reference@2.0.1: - resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} - - micromark-util-decode-string@2.0.0: - resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} - - micromark-util-encode@2.0.0: - resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} - - micromark-util-html-tag-name@2.0.0: - resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} - - micromark-util-normalize-identifier@2.0.0: - resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} - - micromark-util-resolve-all@2.0.0: - resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} - - micromark-util-sanitize-uri@2.0.0: - resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} - - micromark-util-subtokenize@2.0.0: - resolution: {integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==} - - micromark-util-symbol@2.0.0: - resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} - - micromark-util-types@2.0.0: - resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} - - micromark@4.0.0: - resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} - - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - - mime@3.0.0: - resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} - engines: {node: '>=10.0.0'} - hasBin: true - - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - - minimatch@9.0.1: - resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} - engines: {node: '>=16 || 14 >=14.17'} - - minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} - - minimatch@9.0.4: - resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} - engines: {node: '>=16 || 14 >=14.17'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} - engines: {node: '>=16 || 14 >=14.17'} - - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - - nanoid@3.3.6: - resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - - next-auth@4.24.7: - resolution: {integrity: sha512-iChjE8ov/1K/z98gdKbn2Jw+2vLgJtVV39X+rCP5SGnVQuco7QOr19FRNGMIrD8d3LYhHWV9j9sKLzq1aDWWQQ==} - peerDependencies: - next: ^12.2.5 || ^13 || ^14 - nodemailer: ^6.6.5 - react: ^17.0.2 || ^18 - react-dom: ^17.0.2 || ^18 - peerDependenciesMeta: - nodemailer: - optional: true - - next-remove-imports@1.0.12: - resolution: {integrity: sha512-3tdL6VuSykJ/mcUwxfjQ+Fd4OpEmrwWVHtLZ/fhNcSaToWCutUp7nrfIww7/4CURe9I7BDCQE9AWl4fkY3YZOQ==} - - next-safe-action@7.0.2: - resolution: {integrity: sha512-Zjxo5HhOV0vUxKP2zf4UE5d603oCwdr9CNadc4aImJnYrcpfed3S/mUf2gfXEHjTjRyPoTQ+s4oLMy5rATGuPQ==} - engines: {node: '>=18.17'} - peerDependencies: - next: '>= 14.0.0' - react: '>= 18.2.0' - react-dom: '>= 18.2.0' - zod: '>= 3.0.0' - peerDependenciesMeta: - zod: - optional: true - - next-themes@0.3.0: - resolution: {integrity: sha512-/QHIrsYpd6Kfk7xakK4svpDI5mmXP0gfvCoJdGpZQ2TOrQZmsW0QxjaiLn8wbIKjtm4BTSqLoix4lxYYOnLJ/w==} - peerDependencies: - react: ^16.8 || ^17 || ^18 - react-dom: ^16.8 || ^17 || ^18 - - next@14.2.4: - resolution: {integrity: sha512-R8/V7vugY+822rsQGQCjoLhMuC9oFj9SOi4Cl4b2wjDrseD0LRZ10W7R6Czo4w9ZznVSshKjuIomsRjvm9EKJQ==} - engines: {node: '>=18.17.0'} - hasBin: true - peerDependencies: - '@opentelemetry/api': ^1.1.0 - '@playwright/test': ^1.41.2 - react: ^18.2.0 - react-dom: ^18.2.0 - sass: ^1.3.0 - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - '@playwright/test': - optional: true - sass: - optional: true - - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-releases@2.0.13: - resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} - - node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - - nodemailer@6.9.14: - resolution: {integrity: sha512-Dobp/ebDKBvz91sbtRKhcznLThrKxKt97GI2FAlAyy+fk19j73Uz3sBXolVtmcXjaorivqsbbbjDY+Jkt4/bQA==} - engines: {node: '>=6.0.0'} - - nopt@7.2.0: - resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - hasBin: true - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - - not@0.1.0: - resolution: {integrity: sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==} - - npm-run-path@5.1.0: - resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - - oauth@0.9.15: - resolution: {integrity: sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==} - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - object-hash@2.2.0: - resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} - engines: {node: '>= 6'} - - object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - - object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} - - object-is@1.1.6: - resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} - engines: {node: '>= 0.4'} - - object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - - object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} - engines: {node: '>= 0.4'} - - object.entries@1.1.8: - resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} - engines: {node: '>= 0.4'} - - object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} - - object.groupby@1.0.3: - resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} - engines: {node: '>= 0.4'} - - object.values@1.2.0: - resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} - engines: {node: '>= 0.4'} - - oidc-token-hash@5.0.3: - resolution: {integrity: sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==} - engines: {node: ^10.13.0 || >=12.0.0} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - - onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - - openid-client@5.6.5: - resolution: {integrity: sha512-5P4qO9nGJzB5PI0LFlhj4Dzg3m4odt0qsJTfyEtZyOlkgpILwEioOhVVJOrS1iVH494S4Ee5OCjjg6Bf5WOj3w==} - - optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} - engines: {node: '>= 0.8.0'} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - papaparse@5.4.1: - resolution: {integrity: sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw==} - - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - - parse-entities@4.0.1: - resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} - - parse-numeric-range@1.3.0: - resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} - - parse5@6.0.1: - resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - - parse5@7.1.2: - resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} - - parseley@0.12.1: - resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-exists@5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - path-scurry@1.10.1: - resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} - engines: {node: '>=16 || 14 >=14.17'} - - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - - peberminta@0.9.0: - resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} - - picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - pidtree@0.6.0: - resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} - engines: {node: '>=0.10'} - hasBin: true - - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - - pkg-dir@7.0.0: - resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} - engines: {node: '>=14.16'} - - playwright-core@1.45.0: - resolution: {integrity: sha512-lZmHlFQ0VYSpAs43dRq1/nJ9G/6SiTI7VPqidld9TDefL9tX87bTKExWZZUF5PeRyqtXqd8fQi2qmfIedkwsNQ==} - engines: {node: '>=18'} - hasBin: true - - playwright@1.45.0: - resolution: {integrity: sha512-4z3ac3plDfYzGB6r0Q3LF8POPR20Z8D0aXcxbJvmfMgSSq1hkcgvFRXJk9rUq5H/MJ0Ktal869hhOdI/zUTeLA==} - engines: {node: '>=18'} - hasBin: true - - possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} - - postcss-import@15.1.0: - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 - - postcss-js@4.0.1: - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - - postcss-load-config@4.0.1: - resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - - postcss-nested@6.0.1: - resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - - postcss-selector-parser@6.0.13: - resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} - engines: {node: '>=4'} - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - postcss@8.4.28: - resolution: {integrity: sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==} - engines: {node: ^10 || ^12 || >=14} - - postcss@8.4.31: - resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} - engines: {node: ^10 || ^12 || >=14} - - preact-render-to-string@5.2.3: - resolution: {integrity: sha512-aPDxUn5o3GhWdtJtW0svRC2SS/l8D9MAgo2+AWml+BhDImb27ALf04Q2d+AHqUUOc6RdSXFIBVa2gxzgMKgtZA==} - peerDependencies: - preact: '>=10' - - preact@10.11.3: - resolution: {integrity: sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==} - - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} - - prettier-plugin-tailwindcss@0.6.6: - resolution: {integrity: sha512-OPva5S7WAsPLEsOuOWXATi13QrCKACCiIonFgIR6V4lYv4QLp++UXVhZSzRbZxXGimkQtQT86CC6fQqTOybGng==} - engines: {node: '>=14.21.3'} - peerDependencies: - '@ianvs/prettier-plugin-sort-imports': '*' - '@prettier/plugin-pug': '*' - '@shopify/prettier-plugin-liquid': '*' - '@trivago/prettier-plugin-sort-imports': '*' - '@zackad/prettier-plugin-twig-melody': '*' - prettier: ^3.0 - prettier-plugin-astro: '*' - prettier-plugin-css-order: '*' - prettier-plugin-import-sort: '*' - prettier-plugin-jsdoc: '*' - prettier-plugin-marko: '*' - prettier-plugin-multiline-arrays: '*' - prettier-plugin-organize-attributes: '*' - prettier-plugin-organize-imports: '*' - prettier-plugin-sort-imports: '*' - prettier-plugin-style-order: '*' - prettier-plugin-svelte: '*' - peerDependenciesMeta: - '@ianvs/prettier-plugin-sort-imports': - optional: true - '@prettier/plugin-pug': - optional: true - '@shopify/prettier-plugin-liquid': - optional: true - '@trivago/prettier-plugin-sort-imports': - optional: true - '@zackad/prettier-plugin-twig-melody': - optional: true - prettier-plugin-astro: - optional: true - prettier-plugin-css-order: - optional: true - prettier-plugin-import-sort: - optional: true - prettier-plugin-jsdoc: - optional: true - prettier-plugin-marko: - optional: true - prettier-plugin-multiline-arrays: - optional: true - prettier-plugin-organize-attributes: - optional: true - prettier-plugin-organize-imports: - optional: true - prettier-plugin-sort-imports: - optional: true - prettier-plugin-style-order: - optional: true - prettier-plugin-svelte: - optional: true - - prettier@3.2.5: - resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} - engines: {node: '>=14'} - hasBin: true - - pretty-format@3.8.0: - resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==} - - prisma@5.16.1: - resolution: {integrity: sha512-Z1Uqodk44diztImxALgJJfNl2Uisl9xDRvqybMKEBYJLNKNhDfAHf+ZIJbZyYiBhLMbKU9cYGdDVG5IIXEnL2Q==} - engines: {node: '>=16.13'} - hasBin: true - - progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} - - prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - - property-information@6.2.0: - resolution: {integrity: sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==} - - proto-list@1.2.4: - resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} - - proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - - punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} - engines: {node: '>=6'} - - qs@6.11.2: - resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} - engines: {node: '>=0.6'} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - react-dom@18.2.0: - resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} - peerDependencies: - react: ^18.2.0 - - react-dropzone@14.2.3: - resolution: {integrity: sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==} - engines: {node: '>= 10.13'} - peerDependencies: - react: '>= 16.8 || 18.0.0' - - react-error-boundary@4.0.12: - resolution: {integrity: sha512-kJdxdEYlb7CPC1A0SeUY38cHpjuu6UkvzKiAmqmOFL21VRfMhOcWxTCBgLVCO0VEMh9JhFNcVaXlV4/BTpiwOA==} - peerDependencies: - react: '>=16.13.1' - - react-hook-form@7.45.4: - resolution: {integrity: sha512-HGDV1JOOBPZj10LB3+OZgfDBTn+IeEsNOKiq/cxbQAIbKaiJUe/KV8DBUzsx0Gx/7IG/orWqRRm736JwOfUSWQ==} - engines: {node: '>=12.22.0'} - peerDependencies: - react: ^16.8.0 || ^17 || ^18 - - react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - - react-markdown@9.0.1: - resolution: {integrity: sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==} - peerDependencies: - '@types/react': '>=18' - react: '>=18' - - react-paginate@8.2.0: - resolution: {integrity: sha512-sJCz1PW+9PNIjUSn919nlcRVuleN2YPoFBOvL+6TPgrH/3lwphqiSOgdrLafLdyLDxsgK+oSgviqacF4hxsDIw==} - peerDependencies: - react: ^16 || ^17 || ^18 - - react-papaparse@4.4.0: - resolution: {integrity: sha512-xTEwHZYJ+1dh9mQDQjjwJXmWyX20DdZ52u+ddw75V+Xm5qsjXSvWmC7c8K82vRwMjKAOH2S9uFyGpHEyEztkUQ==} - engines: {node: '>=8', npm: '>=5'} - - react-promise-suspense@0.3.4: - resolution: {integrity: sha512-I42jl7L3Ze6kZaq+7zXWSunBa3b1on5yfvUW6Eo/3fFOj6dZ5Bqmcd264nJbTK/gn1HjjILAjSwnZbV4RpSaNQ==} - - react-remove-scroll-bar@2.3.4: - resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-remove-scroll@2.5.5: - resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-remove-scroll@2.5.7: - resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-style-singleton@2.2.1: - resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} - engines: {node: '>=0.10.0'} - - read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - reflect.getprototypeof@1.0.4: - resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} - engines: {node: '>= 0.4'} - - refractor@4.8.1: - resolution: {integrity: sha512-/fk5sI0iTgFYlmVGYVew90AoYnNMP6pooClx/XKqyeeCQXrL0Kvgn8V0VEht5ccdljbzzF1i3Q213gcntkRExg==} - - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - regexp.prototype.flags@1.5.2: - resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} - engines: {node: '>= 0.4'} - - rehype-attr@3.0.3: - resolution: {integrity: sha512-Up50Xfra8tyxnkJdCzLBIBtxOcB2M1xdeKe1324U06RAvSjYm7ULSeoM+b/nYPQPVd7jsXJ9+39IG1WAJPXONw==} - engines: {node: '>=16'} - - rehype-autolink-headings@7.1.0: - resolution: {integrity: sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw==} - - rehype-ignore@2.0.2: - resolution: {integrity: sha512-BpAT/3lU9DMJ2siYVD/dSR0A/zQgD6Fb+fxkJd4j+wDVy6TYbYpK+FZqu8eM9EuNKGvi4BJR7XTZ/+zF02Dq8w==} - engines: {node: '>=16'} - - rehype-parse@8.0.5: - resolution: {integrity: sha512-Ds3RglaY/+clEX2U2mHflt7NlMA72KspZ0JLUJgBBLpRddBcEw3H8uYZQliQriku22NZpYMfjDdSgHcjxue24A==} - - rehype-parse@9.0.0: - resolution: {integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==} - - rehype-prism-plus@1.6.3: - resolution: {integrity: sha512-F6tn376zimnvy+xW0bSnryul+rvVL7NhDIkavc9kAuzDx5zIZW04A6jdXPkcFBhojcqZB8b6pHt6CLqiUx+Tbw==} - - rehype-prism-plus@2.0.0: - resolution: {integrity: sha512-FeM/9V2N7EvDZVdR2dqhAzlw5YI49m9Tgn7ZrYJeYHIahM6gcXpH0K1y2gNnKanZCydOMluJvX2cB9z3lhY8XQ==} - - rehype-raw@7.0.0: - resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} - - rehype-rewrite@4.0.2: - resolution: {integrity: sha512-rjLJ3z6fIV11phwCqHp/KRo8xuUCO8o9bFJCNw5o6O2wlLk6g8r323aRswdGBQwfXPFYeSuZdAjp4tzo6RGqEg==} - engines: {node: '>=16.0.0'} - - rehype-sanitize@6.0.0: - resolution: {integrity: sha512-CsnhKNsyI8Tub6L4sm5ZFsme4puGfc6pYylvXo1AeqaGbjOYyzNv3qZPwvs0oMJ39eryyeOdmxwUIo94IpEhqg==} - - rehype-slug@6.0.0: - resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} - - rehype-stringify@10.0.0: - resolution: {integrity: sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==} - - rehype@13.0.1: - resolution: {integrity: sha512-AcSLS2mItY+0fYu9xKxOu1LhUZeBZZBx8//5HKzF+0XP+eP8+6a5MXn2+DW2kfXR6Dtp1FEXMVrjyKAcvcU8vg==} - - remark-gfm@4.0.0: - resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} - - remark-parse@11.0.0: - resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} - - remark-rehype@11.0.0: - resolution: {integrity: sha512-vx8x2MDMcxuE4lBmQ46zYUDfcFMmvg80WYX+UNLeG6ixjdCCLcw1lrgAukwBTuOFsS78eoAedHGn9sNM0w7TPw==} - - remark-stringify@11.0.0: - resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} - - require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - - resend@4.0.0: - resolution: {integrity: sha512-rDX0rspl/XcmC2JV2V5obQvRX2arzxXUvNFUDMOv5ObBLR68+7kigCOysb7+dlkb0JE3erhQG0nHrbBt/ZCWIg==} - engines: {node: '>=18'} - - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - - resolve@1.22.4: - resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} - hasBin: true - - resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true - - resolve@2.0.0-next.5: - resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} - hasBin: true - - restore-cursor@4.0.0: - resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - retry-request@7.0.2: - resolution: {integrity: sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==} - engines: {node: '>=14'} - - retry@0.13.1: - resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} - engines: {node: '>= 4'} - - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - rfdc@1.3.0: - resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} - - rollup@2.78.0: - resolution: {integrity: sha512-4+YfbQC9QEVvKTanHhIAFVUFSRsezvQF8vFOJwtGfb9Bb+r014S+qryr9PSmw8x6sMnPkmFBGAvIFVQxvJxjtg==} - engines: {node: '>=10.0.0'} - hasBin: true - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - safe-array-concat@1.1.2: - resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} - engines: {node: '>=0.4'} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} - engines: {node: '>= 0.4'} - - scheduler@0.23.0: - resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} - - schema-utils@3.3.0: - resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} - engines: {node: '>= 10.13.0'} - - schema-utils@4.2.0: - resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} - engines: {node: '>= 12.13.0'} - - selderee@0.11.0: - resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==} - - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - - semver@7.6.2: - resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} - engines: {node: '>=10'} - hasBin: true - - semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} - engines: {node: '>=10'} - hasBin: true - - serialize-javascript@6.0.1: - resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} - - set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - - set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} - engines: {node: '>= 0.4'} - - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - - slice-ansi@5.0.0: - resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} - engines: {node: '>=12'} - - slugify@1.6.6: - resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} - engines: {node: '>=8.0.0'} - - sonner@1.4.0: - resolution: {integrity: sha512-nvkTsIuOmi9e5Wz5If8ldasJjZNVfwiXYijBi2dbijvTQnQppvMcXTFNxL/NUFWlI2yJ1JX7TREDsg+gYm9WyA==} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - space-separated-tokens@2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - - stable-hash@0.0.4: - resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} - - stacktrace-parser@0.1.10: - resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} - engines: {node: '>=6'} - - stop-iteration-iterator@1.0.0: - resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} - engines: {node: '>= 0.4'} - - stream-events@1.0.5: - resolution: {integrity: sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==} - - stream-shift@1.0.3: - resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} - - streamsearch@1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} - - string-argv@0.3.2: - resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} - engines: {node: '>=0.6.19'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - - string.prototype.includes@2.0.0: - resolution: {integrity: sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==} - - string.prototype.matchall@4.0.11: - resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} - engines: {node: '>= 0.4'} - - string.prototype.repeat@1.0.0: - resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} - - string.prototype.trim@1.2.9: - resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} - engines: {node: '>= 0.4'} - - string.prototype.trimend@1.0.8: - resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} - - string.prototype.trimstart@1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} - - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - - stringify-entities@4.0.3: - resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - stripe@16.1.0: - resolution: {integrity: sha512-syeEEd112om/waJ5gOQ+SaYi+setuidQ4ZIPiQREF4yJeegXhn2HKy6C0JYm7uhVQKfMAvuZ22dIRsnoDv7AMw==} - engines: {node: '>=12.*'} - - strnum@1.0.5: - resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} - - stubs@3.0.0: - resolution: {integrity: sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==} - - style-to-object@1.0.5: - resolution: {integrity: sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==} - - styled-jsx@5.1.1: - resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@babel/core': '*' - babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' - peerDependenciesMeta: - '@babel/core': - optional: true - babel-plugin-macros: - optional: true - - sucrase@3.34.0: - resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} - engines: {node: '>=8'} - hasBin: true - - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - synckit@0.8.8: - resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} - engines: {node: ^14.18.0 || >=16.0.0} - - tailwind-merge@2.2.0: - resolution: {integrity: sha512-SqqhhaL0T06SW59+JVNfAqKdqLs0497esifRrZ7jOaefP3o64fdFNDMrAQWZFMxTLJPiHVjRLUywT8uFz1xNWQ==} - - tailwindcss-animate@1.0.6: - resolution: {integrity: sha512-4WigSGMvbl3gCCact62ZvOngA+PRqhAn7si3TQ3/ZuPuQZcIEtVap+ENSXbzWhpojKB8CpvnIsrwBu8/RnHtuw==} - peerDependencies: - tailwindcss: '>=3.0.0 || insiders' - - tailwindcss@3.4.1: - resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==} - engines: {node: '>=14.0.0'} - hasBin: true - - tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - - teeny-request@9.0.0: - resolution: {integrity: sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==} - engines: {node: '>=14'} - - terser-webpack-plugin@5.3.10: - resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - - terser@5.26.0: - resolution: {integrity: sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ==} - engines: {node: '>=10'} - hasBin: true - - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - - to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - trim-lines@3.0.1: - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - - trough@2.1.0: - resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} - - ts-api-utils@1.3.0: - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' - - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - - ts-node@10.9.1: - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - - tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - - tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - - tslib@2.7.0: - resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} - - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - - type-fest@0.7.1: - resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} - engines: {node: '>=8'} - - type-fest@1.4.0: - resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} - engines: {node: '>=10'} - - typed-array-buffer@1.0.2: - resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} - engines: {node: '>= 0.4'} - - typed-array-byte-length@1.0.1: - resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} - engines: {node: '>= 0.4'} - - typed-array-byte-offset@1.0.2: - resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} - engines: {node: '>= 0.4'} - - typed-array-length@1.0.6: - resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} - engines: {node: '>= 0.4'} - - typescript-eslint@8.4.0: - resolution: {integrity: sha512-67qoc3zQZe3CAkO0ua17+7aCLI0dU+sSQd1eKPGq06QE4rfQjstVXR6woHO5qQvGUa550NfGckT4tzh3b3c8Pw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - typescript@5.5.4: - resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} - engines: {node: '>=14.17'} - hasBin: true - - unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - - unified@10.1.2: - resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} - - unified@11.0.4: - resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} - - unist-util-filter@4.0.1: - resolution: {integrity: sha512-RynicUM/vbOSTSiUK+BnaK9XMfmQUh6gyi7L6taNgc7FIf84GukXVV3ucGzEN/PhUUkdP5hb1MmXc+3cvPUm5Q==} - - unist-util-filter@5.0.1: - resolution: {integrity: sha512-pHx7D4Zt6+TsfwylH9+lYhBhzyhEnCXs/lbq/Hstxno5z4gVdyc2WEW0asfjGKPyG4pEKrnBv5hdkO6+aRnQJw==} - - unist-util-is@5.2.1: - resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} - - unist-util-is@6.0.0: - resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} - - unist-util-position@5.0.0: - resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} - - unist-util-remove-position@5.0.0: - resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} - - unist-util-stringify-position@3.0.3: - resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} - - unist-util-stringify-position@4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - - unist-util-visit-parents@5.1.3: - resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} - - unist-util-visit-parents@6.0.1: - resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} - - unist-util-visit@4.1.2: - resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} - - unist-util-visit@5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - - update-browserslist-db@1.0.11: - resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - update-browserslist-db@1.0.13: - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - - use-callback-ref@1.3.0: - resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - use-debounce@10.0.0: - resolution: {integrity: sha512-XRjvlvCB46bah9IBXVnq/ACP2lxqXyZj0D9hj4K5OzNroMDpTEBg8Anuh1/UfRTRs7pLhQ+RiNxxwZu9+MVl1A==} - engines: {node: '>= 16.0.0'} - peerDependencies: - react: '>=16.8.0' - - use-sidecar@1.1.2: - resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - - uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - - v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - - vaul@0.9.0: - resolution: {integrity: sha512-bZSySGbAHiTXmZychprnX/dE0EsSige88xtyyL3/MCRbrFotRPQZo7UdydGXZWw+CKbNOw5Ow8gwAo93/nB/Cg==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - - vfile-location@4.1.0: - resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==} - - vfile-location@5.0.2: - resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} - - vfile-message@3.1.4: - resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} - - vfile-message@4.0.2: - resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} - - vfile@5.3.7: - resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} - - vfile@6.0.1: - resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} - - watchpack@2.4.0: - resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} - engines: {node: '>=10.13.0'} - - web-namespaces@2.0.1: - resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} - engines: {node: '>=10.13.0'} - - webpack@5.89.0: - resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - - which-builtin-type@1.1.3: - resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} - engines: {node: '>= 0.4'} - - which-collection@1.0.1: - resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} - - which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} - engines: {node: '>= 0.4'} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yaml@2.3.3: - resolution: {integrity: sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==} - engines: {node: '>= 14'} - - yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - - yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} - - zod@3.22.4: - resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} - - zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - -snapshots: - - '@aashutoshrathi/word-wrap@1.2.6': {} - - '@alloc/quick-lru@5.2.0': {} - - '@ampproject/remapping@2.2.1': - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 - - '@babel/code-frame@7.22.13': - dependencies: - '@babel/highlight': 7.22.13 - chalk: 2.4.2 - - '@babel/compat-data@7.22.9': {} - - '@babel/core@7.22.17': - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.22.15 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-module-transforms': 7.22.17(@babel/core@7.22.17) - '@babel/helpers': 7.22.15 - '@babel/parser': 7.22.16 - '@babel/template': 7.22.15 - '@babel/traverse': 7.22.17 - '@babel/types': 7.22.17 - convert-source-map: 1.9.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.22.15': - dependencies: - '@babel/types': 7.22.17 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 - jsesc: 2.5.2 - - '@babel/helper-compilation-targets@7.22.15': - dependencies: - '@babel/compat-data': 7.22.9 - '@babel/helper-validator-option': 7.22.15 - browserslist: 4.21.10 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-environment-visitor@7.22.5': {} - - '@babel/helper-function-name@7.22.5': - dependencies: - '@babel/template': 7.22.15 - '@babel/types': 7.22.17 - - '@babel/helper-hoist-variables@7.22.5': - dependencies: - '@babel/types': 7.22.17 - - '@babel/helper-module-imports@7.22.15': - dependencies: - '@babel/types': 7.22.17 - - '@babel/helper-module-transforms@7.22.17(@babel/core@7.22.17)': - dependencies: - '@babel/core': 7.22.17 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.15 - - '@babel/helper-simple-access@7.22.5': - dependencies: - '@babel/types': 7.22.17 - - '@babel/helper-split-export-declaration@7.22.6': - dependencies: - '@babel/types': 7.22.17 - - '@babel/helper-string-parser@7.22.5': {} - - '@babel/helper-validator-identifier@7.22.15': {} - - '@babel/helper-validator-option@7.22.15': {} - - '@babel/helpers@7.22.15': - dependencies: - '@babel/template': 7.22.15 - '@babel/traverse': 7.22.17 - '@babel/types': 7.22.17 - transitivePeerDependencies: - - supports-color - - '@babel/highlight@7.22.13': - dependencies: - '@babel/helper-validator-identifier': 7.22.15 - chalk: 2.4.2 - js-tokens: 4.0.0 - - '@babel/parser@7.22.16': - dependencies: - '@babel/types': 7.22.17 - - '@babel/runtime@7.22.11': - dependencies: - regenerator-runtime: 0.14.1 - - '@babel/runtime@7.23.6': - dependencies: - regenerator-runtime: 0.14.1 - - '@babel/runtime@7.23.7': - dependencies: - regenerator-runtime: 0.14.1 - - '@babel/template@7.22.15': - dependencies: - '@babel/code-frame': 7.22.13 - '@babel/parser': 7.22.16 - '@babel/types': 7.22.17 - - '@babel/traverse@7.22.17': - dependencies: - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.22.15 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.22.16 - '@babel/types': 7.22.17 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/types@7.22.17': - dependencies: - '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.15 - to-fast-properties: 2.0.0 - - '@cspotcode/source-map-support@0.8.1': - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - - '@eslint-community/eslint-utils@4.4.0(eslint@9.9.1(jiti@1.19.3))': - dependencies: - eslint: 9.9.1(jiti@1.19.3) - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.11.0': {} - - '@eslint/compat@1.1.1': {} - - '@eslint/config-array@0.18.0': - dependencies: - '@eslint/object-schema': 2.1.4 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - '@eslint/eslintrc@3.1.0': - dependencies: - ajv: 6.12.6 - debug: 4.3.6 - espree: 10.1.0 - globals: 14.0.0 - ignore: 5.3.1 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@9.9.1': {} - - '@eslint/object-schema@2.1.4': {} - - '@floating-ui/core@1.4.1': - dependencies: - '@floating-ui/utils': 0.1.1 - - '@floating-ui/dom@1.5.1': - dependencies: - '@floating-ui/core': 1.4.1 - '@floating-ui/utils': 0.1.1 - - '@floating-ui/react-dom@2.0.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@floating-ui/dom': 1.5.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@floating-ui/utils@0.1.1': {} - - '@google-cloud/paginator@5.0.0': - dependencies: - arrify: 2.0.1 - extend: 3.0.2 - - '@google-cloud/projectify@4.0.0': {} - - '@google-cloud/promisify@4.0.0': {} - - '@google-cloud/storage@7.7.0': - dependencies: - '@google-cloud/paginator': 5.0.0 - '@google-cloud/projectify': 4.0.0 - '@google-cloud/promisify': 4.0.0 - abort-controller: 3.0.0 - async-retry: 1.3.3 - compressible: 2.0.18 - duplexify: 4.1.2 - ent: 2.2.0 - fast-xml-parser: 4.3.4 - gaxios: 6.2.0 - google-auth-library: 9.6.3 - mime: 3.0.0 - mime-types: 2.1.35 - p-limit: 3.1.0 - retry-request: 7.0.2 - teeny-request: 9.0.0 - uuid: 8.3.2 - transitivePeerDependencies: - - encoding - - supports-color - - '@hookform/resolvers@3.3.4(react-hook-form@7.45.4(react@18.2.0))': - dependencies: - react-hook-form: 7.45.4(react@18.2.0) - - '@humanwhocodes/module-importer@1.0.1': {} - - '@humanwhocodes/retry@0.3.0': {} - - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - - '@jridgewell/gen-mapping@0.3.3': - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.20 - - '@jridgewell/resolve-uri@3.1.1': {} - - '@jridgewell/set-array@1.1.2': {} - - '@jridgewell/source-map@0.3.5': - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 - - '@jridgewell/sourcemap-codec@1.4.15': {} - - '@jridgewell/trace-mapping@0.3.20': - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 - - '@jridgewell/trace-mapping@0.3.9': - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 - - '@next-auth/prisma-adapter@1.0.7(@prisma/client@5.16.1(prisma@5.16.1))(next-auth@4.24.7(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))': - dependencies: - '@prisma/client': 5.16.1(prisma@5.16.1) - next-auth: 4.24.7(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - - '@next/env@14.2.4': {} - - '@next/eslint-plugin-next@14.2.7': - dependencies: - glob: 10.3.10 - - '@next/swc-darwin-arm64@14.2.4': - optional: true - - '@next/swc-darwin-x64@14.2.4': - optional: true - - '@next/swc-linux-arm64-gnu@14.2.4': - optional: true - - '@next/swc-linux-arm64-musl@14.2.4': - optional: true - - '@next/swc-linux-x64-gnu@14.2.4': - optional: true - - '@next/swc-linux-x64-musl@14.2.4': - optional: true - - '@next/swc-win32-arm64-msvc@14.2.4': - optional: true - - '@next/swc-win32-ia32-msvc@14.2.4': - optional: true - - '@next/swc-win32-x64-msvc@14.2.4': - optional: true - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 - - '@nolyfill/is-core-module@1.0.39': {} - - '@one-ini/wasm@0.1.1': {} - - '@panva/hkdf@1.1.1': {} - - '@pkgjs/parseargs@0.11.0': - optional: true - - '@pkgr/core@0.1.1': {} - - '@playwright/test@1.45.0': - dependencies: - playwright: 1.45.0 - - '@prisma/client@5.16.1(prisma@5.16.1)': - optionalDependencies: - prisma: 5.16.1 - - '@prisma/debug@5.16.1': {} - - '@prisma/engines-version@5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303': {} - - '@prisma/engines@5.16.1': - dependencies: - '@prisma/debug': 5.16.1 - '@prisma/engines-version': 5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303 - '@prisma/fetch-engine': 5.16.1 - '@prisma/get-platform': 5.16.1 - - '@prisma/fetch-engine@5.16.1': - dependencies: - '@prisma/debug': 5.16.1 - '@prisma/engines-version': 5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303 - '@prisma/get-platform': 5.16.1 - - '@prisma/get-platform@5.16.1': - dependencies: - '@prisma/debug': 5.16.1 - - '@radix-ui/colors@3.0.0': {} - - '@radix-ui/number@1.0.1': - dependencies: - '@babel/runtime': 7.23.7 - - '@radix-ui/primitive@1.0.1': - dependencies: - '@babel/runtime': 7.23.7 - - '@radix-ui/primitive@1.1.0': {} - - '@radix-ui/react-arrow@1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@types/react': 18.3.8 react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 + dev: false - '@radix-ui/react-arrow@1.1.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + /@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.8)(react@18.2.0): + resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@types/react': 18.3.8 react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 + dev: false - '@radix-ui/react-avatar@1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + /@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.8)(react@18.2.0): + resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@types/react': 18.3.8 react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 + dev: false - '@radix-ui/react-collection@1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + /@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.8)(react@18.2.0): + resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) + '@types/react': 18.3.8 react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 + dev: false - '@radix-ui/react-compose-refs@1.0.1(@types/react@18.0.27)(react@18.2.0)': + /@radix-ui/react-use-previous@1.1.0(@types/react@18.3.8)(react@18.2.0): + resolution: {integrity: sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true dependencies: - '@babel/runtime': 7.23.7 + '@types/react': 18.3.8 react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 + dev: false - '@radix-ui/react-compose-refs@1.1.0(@types/react@18.0.27)(react@18.2.0)': + /@radix-ui/react-use-rect@1.1.0(@types/react@18.3.8)(react@18.2.0): + resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@radix-ui/rect': 1.1.0 + '@types/react': 18.3.8 react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 + dev: false - '@radix-ui/react-context@1.0.1(@types/react@18.0.27)(react@18.2.0)': + /@radix-ui/react-use-size@1.1.0(@types/react@18.3.8)(react@18.2.0): + resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true dependencies: - '@babel/runtime': 7.23.7 + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.8)(react@18.2.0) + '@types/react': 18.3.8 react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 + dev: false - '@radix-ui/react-context@1.1.0(@types/react@18.0.27)(react@18.2.0)': + /@radix-ui/react-visually-hidden@1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true dependencies: - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-dialog@1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) - aria-hidden: 1.2.3 + '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.3.8 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.0.27)(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-direction@1.0.1(@types/react@18.0.27)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 + dev: false - '@radix-ui/react-dismissable-layer@1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 + /@radix-ui/rect@1.1.0: + resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} + dev: false - '@radix-ui/react-dismissable-layer@1.1.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + /@react-email/body@0.0.10(react@18.2.0): + resolution: {integrity: sha512-dMJyL9aU25ieatdPtVjCyQ/WHZYHwNc+Hy/XpF8Cc18gu21cUynVEeYQzFSeigDRMeBQ3PGAyjVDPIob7YlGwA==} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-dropdown-menu@2.0.6(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-menu': 2.0.6(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 + dev: false - '@radix-ui/react-focus-guards@1.0.1(@types/react@18.0.27)(react@18.2.0)': + /@react-email/button@0.0.17(react@18.2.0): + resolution: {integrity: sha512-ioHdsk+BpGS/PqjU6JS7tUrVy9yvbUx92Z+Cem2+MbYp55oEwQ9VHf7u4f5NoM0gdhfKSehBwRdYlHt/frEMcg==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc dependencies: - '@babel/runtime': 7.23.7 react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 + dev: false - '@radix-ui/react-focus-guards@1.1.0(@types/react@18.0.27)(react@18.2.0)': + /@react-email/code-block@0.0.9(react@18.2.0): + resolution: {integrity: sha512-Zrhc71VYrSC1fVXJuaViKoB/dBjxLw6nbE53Bm/eUuZPdnnZ1+ZUIh8jfaRKC5MzMjgnLGQTweGXVnfIrhyxtQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc dependencies: + prismjs: 1.29.0 react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 + dev: false - '@radix-ui/react-focus-scope@1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + /@react-email/code-inline@0.0.4(react@18.2.0): + resolution: {integrity: sha512-zj3oMQiiUCZbddSNt3k0zNfIBFK0ZNDIzzDyBaJKy6ZASTtWfB+1WFX0cpTX8q0gUiYK+A94rk5Qp68L6YXjXQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 + dev: false - '@radix-ui/react-focus-scope@1.1.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + /@react-email/column@0.0.12(react@18.2.0): + resolution: {integrity: sha512-Rsl7iSdDaeHZO938xb+0wR5ud0Z3MVfdtPbNKJNojZi2hApwLAQXmDrnn/AcPDM5Lpl331ZljJS8vHTWxxkvKw==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 + dev: false - '@radix-ui/react-id@1.0.1(@types/react@18.0.27)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) + /@react-email/components@0.0.25(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-lnfVVrThEcET5NPoeaXvrz9UxtWpGRcut2a07dLbyKgNbP7vj/cXTI5TuHtanCvhCddFpMDnElNRghDOfPzwUg==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc + dependencies: + '@react-email/body': 0.0.10(react@18.2.0) + '@react-email/button': 0.0.17(react@18.2.0) + '@react-email/code-block': 0.0.9(react@18.2.0) + '@react-email/code-inline': 0.0.4(react@18.2.0) + '@react-email/column': 0.0.12(react@18.2.0) + '@react-email/container': 0.0.14(react@18.2.0) + '@react-email/font': 0.0.8(react@18.2.0) + '@react-email/head': 0.0.11(react@18.2.0) + '@react-email/heading': 0.0.14(react@18.2.0) + '@react-email/hr': 0.0.10(react@18.2.0) + '@react-email/html': 0.0.10(react@18.2.0) + '@react-email/img': 0.0.10(react@18.2.0) + '@react-email/link': 0.0.10(react@18.2.0) + '@react-email/markdown': 0.0.12(react@18.2.0) + '@react-email/preview': 0.0.11(react@18.2.0) + '@react-email/render': 1.0.1(react-dom@18.2.0)(react@18.2.0) + '@react-email/row': 0.0.10(react@18.2.0) + '@react-email/section': 0.0.14(react@18.2.0) + '@react-email/tailwind': 0.1.0(react@18.2.0) + '@react-email/text': 0.0.10(react@18.2.0) react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 + transitivePeerDependencies: + - react-dom + dev: false - '@radix-ui/react-id@1.1.0(@types/react@18.0.27)(react@18.2.0)': + /@react-email/container@0.0.14(react@18.2.0): + resolution: {integrity: sha512-NgoaJJd9tTtsrveL86Ocr/AYLkGyN3prdXKd/zm5fQpfDhy/NXezyT3iF6VlwAOEUIu64ErHpAJd+P6ygR+vjg==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 + dev: false - '@radix-ui/react-label@2.0.2(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + /@react-email/font@0.0.8(react@18.2.0): + resolution: {integrity: sha512-fSBEqYyVPAyyACBBHcs3wEYzNknpHMuwcSAAKE8fOoDfGqURr/vSxKPdh4tOa9z7G4hlcEfgGrCYEa2iPT22cw==} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-menu@2.0.6(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - aria-hidden: 1.2.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.0.27)(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 + dev: false - '@radix-ui/react-popover@1.1.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + /@react-email/head@0.0.11(react@18.2.0): + resolution: {integrity: sha512-skw5FUgyamIMK+LN+fZQ5WIKQYf0dPiRAvsUAUR2eYoZp9oRsfkIpFHr0GWPkKAYjFEj+uJjaxQ/0VzQH7svVg==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.1.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.1.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-popper': 1.2.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-portal': 1.1.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.1.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.0.27)(react@18.2.0) - aria-hidden: 1.2.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.7(@types/react@18.0.27)(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-popper@1.1.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - '@floating-ui/react-dom': 2.0.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-arrow': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-rect': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/rect': 1.0.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-popper@1.2.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@floating-ui/react-dom': 2.0.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-arrow': 1.1.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-rect': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-size': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/rect': 1.1.0 react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 + dev: false - '@radix-ui/react-portal@1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + /@react-email/heading@0.0.14(react@18.2.0): + resolution: {integrity: sha512-jZM7IVuZOXa0G110ES8OkxajPTypIKlzlO1K1RIe1auk76ukQRiCg1IRV4HZlWk1GGUbec5hNxsvZa2kU8cb9w==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 + dev: false - '@radix-ui/react-portal@1.1.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + /@react-email/hr@0.0.10(react@18.2.0): + resolution: {integrity: sha512-3AA4Yjgl3zEid/KVx6uf6TuLJHVZvUc2cG9Wm9ZpWeAX4ODA+8g9HyuC0tfnjbRsVMhMcCGiECuWWXINi+60vA==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 + dev: false - '@radix-ui/react-presence@1.0.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + /@react-email/html@0.0.10(react@18.2.0): + resolution: {integrity: sha512-06uiuSKJBWQJfhCKv4MPupELei4Lepyz9Sth7Yq7Fq29CAeB1ejLgKkGqn1I+FZ72hQxPLdYF4iq4yloKv3JCg==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 + dev: false - '@radix-ui/react-presence@1.1.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + /@react-email/img@0.0.10(react@18.2.0): + resolution: {integrity: sha512-pJ8glJjDNaJ53qoM95pvX9SK05yh0bNQY/oyBKmxlBDdUII6ixuMc3SCwYXPMl+tgkQUyDgwEBpSTrLAnjL3hA==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 + dev: false - '@radix-ui/react-primitive@1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + /@react-email/link@0.0.10(react@18.2.0): + resolution: {integrity: sha512-tva3wvAWSR10lMJa9fVA09yRn7pbEki0ZZpHE6GD1jKbFhmzt38VgLO9B797/prqoDZdAr4rVK7LJFcdPx3GwA==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 + dev: false - '@radix-ui/react-primitive@2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + /@react-email/markdown@0.0.12(react@18.2.0): + resolution: {integrity: sha512-wsuvj1XAb6O63aizCLNEeqVgKR3oFjAwt9vjfg2y2oh4G1dZeo8zonZM2x1fmkEkBZhzwSHraNi70jSXhA3A9w==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc dependencies: - '@radix-ui/react-slot': 1.1.0(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-roving-focus@1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-select@2.0.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/number': 1.0.1 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - aria-hidden: 1.2.3 + md-to-react-email: 5.0.2(react@18.2.0) react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.0.27)(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 + dev: false - '@radix-ui/react-slot@1.0.2(@types/react@18.0.27)(react@18.2.0)': + /@react-email/preview@0.0.11(react@18.2.0): + resolution: {integrity: sha512-7O/CT4b16YlSGrj18htTPx3Vbhu2suCGv/cSe5c+fuSrIM/nMiBSZ3Js16Vj0XJbAmmmlVmYFZw9L20wXJ+LjQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 + dev: false - '@radix-ui/react-slot@1.1.0(@types/react@18.0.27)(react@18.2.0)': + /@react-email/render@0.0.17(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-xBQ+/73+WsGuXKY7r1U73zMBNV28xdV0cp9cFjhNYipBReDHhV97IpA6v7Hl0dDtDzt+yS/72dY5vYXrF1v8NA==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.2.0 + react-dom: ^18.2.0 dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-tabs@1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-tooltip@1.0.7(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + html-to-text: 9.0.5 + js-beautify: 1.15.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.0.27)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.0.27)(react@18.2.0)': - dependencies: - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.0.27)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.0.27)(react@18.2.0)': - dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.0.27)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.0.27)(react@18.2.0)': - dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.0.27)(react@18.2.0) - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.0.27)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.0.27)(react@18.2.0)': - dependencies: - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-use-previous@1.0.1(@types/react@18.0.27)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 - - '@radix-ui/react-use-rect@1.0.1(@types/react@18.0.27)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/rect': 1.0.1 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 + react-promise-suspense: 0.3.4 + dev: false - '@radix-ui/react-use-rect@1.1.0(@types/react@18.0.27)(react@18.2.0)': + /@react-email/render@1.0.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-W3gTrcmLOVYnG80QuUp22ReIT/xfLsVJ+n7ghSlG2BITB8evNABn1AO2rGQoXuK84zKtDAlxCdm3hRyIpZdGSA==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^18.0 || ^19.0 || ^19.0.0-rc dependencies: - '@radix-ui/rect': 1.1.0 + html-to-text: 9.0.5 + js-beautify: 1.15.1 react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 + react-dom: 18.2.0(react@18.2.0) + react-promise-suspense: 0.3.4 + dev: false - '@radix-ui/react-use-size@1.0.1(@types/react@18.0.27)(react@18.2.0)': + /@react-email/row@0.0.10(react@18.2.0): + resolution: {integrity: sha512-jPyEhG3gsLX+Eb9U+A30fh0gK6hXJwF4ghJ+ZtFQtlKAKqHX+eCpWlqB3Xschd/ARJLod8WAswg0FB+JD9d0/A==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 + dev: false - '@radix-ui/react-use-size@1.1.0(@types/react@18.0.27)(react@18.2.0)': + /@react-email/section@0.0.14(react@18.2.0): + resolution: {integrity: sha512-+fYWLb4tPU1A/+GE5J1+SEMA7/wR3V30lQ+OR9t2kAJqNrARDbMx0bLnYnR1QL5TiFRz0pCF05SQUobk6gHEDQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.0.27)(react@18.2.0) react: 18.2.0 - optionalDependencies: - '@types/react': 18.0.27 + dev: false - '@radix-ui/react-visually-hidden@1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + /@react-email/tailwind@0.1.0(react@18.2.0): + resolution: {integrity: sha512-qysVUEY+M3SKUvu35XDpzn7yokhqFOT3tPU6Mj/pgc62TL5tQFj6msEbBtwoKs2qO3WZvai0DIHdLhaOxBQSow==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc dependencies: - '@babel/runtime': 7.23.7 - '@radix-ui/react-primitive': 1.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 + dev: false - '@radix-ui/rect@1.0.1': - dependencies: - '@babel/runtime': 7.23.7 - - '@radix-ui/rect@1.1.0': {} - - '@react-email/render@0.0.17(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + /@react-email/text@0.0.10(react@18.2.0): + resolution: {integrity: sha512-wNAnxeEAiFs6N+SxS0y6wTJWfewEzUETuyS2aZmT00xk50VijwyFRuhm4sYSjusMyshevomFwz5jNISCxRsGWw==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc dependencies: - html-to-text: 9.0.5 - js-beautify: 1.14.11 react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-promise-suspense: 0.3.4 + dev: false - '@rollup/plugin-commonjs@24.0.0(rollup@2.78.0)': + /@rollup/plugin-commonjs@24.0.0(rollup@2.78.0): + resolution: {integrity: sha512-0w0wyykzdyRRPHOb0cQt14mIBLujfAv6GgP6g8nvg/iBxEm112t3YPPq+Buqe2+imvElTka+bjNlJ/gB56TD8g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.68.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@2.78.0) + '@rollup/pluginutils': 5.1.1(rollup@2.78.0) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.27.0 - optionalDependencies: rollup: 2.78.0 + dev: false - '@rollup/pluginutils@5.1.0(rollup@2.78.0)': + /@rollup/pluginutils@5.1.1(rollup@2.78.0): + resolution: {integrity: sha512-bVRmQqBIyGD+VMihdEV2IBurfIrdW9tD9yzJUL3CBRDbyPBVzQnBSMSgyUZHl1E335rpMRj7r4o683fXLYw8iw==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 2.3.1 - optionalDependencies: rollup: 2.78.0 + dev: false - '@rtsao/scc@1.1.0': {} + /@rtsao/scc@1.1.0: + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + dev: true - '@rushstack/eslint-patch@1.10.4': {} + /@rushstack/eslint-patch@1.10.4: + resolution: {integrity: sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==} + dev: true - '@selderee/plugin-htmlparser2@0.11.0': + /@selderee/plugin-htmlparser2@0.11.0: + resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} dependencies: domhandler: 5.0.3 selderee: 0.11.0 + dev: false - '@sentry-internal/feedback@7.102.1': + /@sentry-internal/feedback@7.119.0: + resolution: {integrity: sha512-om8TkAU5CQGO8nkmr7qsSBVkP+/vfeS4JgtW3sjoTK0fhj26+DljR6RlfCGWtYQdPSP6XV7atcPTjbSnsmG9FQ==} + engines: {node: '>=12'} dependencies: - '@sentry/core': 7.102.1 - '@sentry/types': 7.102.1 - '@sentry/utils': 7.102.1 + '@sentry/core': 7.119.0 + '@sentry/types': 7.119.0 + '@sentry/utils': 7.119.0 + dev: false - '@sentry-internal/replay-canvas@7.102.1': + /@sentry-internal/replay-canvas@7.119.0: + resolution: {integrity: sha512-NL02VQx6ekPxtVRcsdp1bp5Tb5w6vnfBKSIfMKuDRBy5A10Uc3GSoy/c3mPyHjOxB84452A+xZSx6bliEzAnuA==} + engines: {node: '>=12'} dependencies: - '@sentry/core': 7.102.1 - '@sentry/replay': 7.102.1 - '@sentry/types': 7.102.1 - '@sentry/utils': 7.102.1 + '@sentry/core': 7.119.0 + '@sentry/replay': 7.119.0 + '@sentry/types': 7.119.0 + '@sentry/utils': 7.119.0 + dev: false - '@sentry-internal/tracing@7.102.1': + /@sentry-internal/tracing@7.119.0: + resolution: {integrity: sha512-oKdFJnn+56f0DHUADlL8o9l8jTib3VDLbWQBVkjD9EprxfaCwt2m8L5ACRBdQ8hmpxCEo4I8/6traZ7qAdBUqA==} + engines: {node: '>=8'} dependencies: - '@sentry/core': 7.102.1 - '@sentry/types': 7.102.1 - '@sentry/utils': 7.102.1 + '@sentry/core': 7.119.0 + '@sentry/types': 7.119.0 + '@sentry/utils': 7.119.0 + dev: false - '@sentry/browser@7.102.1': + /@sentry/browser@7.119.0: + resolution: {integrity: sha512-WwmW1Y4D764kVGeKmdsNvQESZiAn9t8LmCWO0ucBksrjL2zw9gBPtOpRcO6l064sCLeSxxzCN+kIxhRm1gDFEA==} + engines: {node: '>=8'} dependencies: - '@sentry-internal/feedback': 7.102.1 - '@sentry-internal/replay-canvas': 7.102.1 - '@sentry-internal/tracing': 7.102.1 - '@sentry/core': 7.102.1 - '@sentry/replay': 7.102.1 - '@sentry/types': 7.102.1 - '@sentry/utils': 7.102.1 - - '@sentry/cli@1.77.3': + '@sentry-internal/feedback': 7.119.0 + '@sentry-internal/replay-canvas': 7.119.0 + '@sentry-internal/tracing': 7.119.0 + '@sentry/core': 7.119.0 + '@sentry/integrations': 7.119.0 + '@sentry/replay': 7.119.0 + '@sentry/types': 7.119.0 + '@sentry/utils': 7.119.0 + dev: false + + /@sentry/cli@1.77.3: + resolution: {integrity: sha512-c3eDqcDRmy4TFz2bFU5Y6QatlpoBPPa8cxBooaS4aMQpnIdLYPF1xhyyiW0LQlDUNc3rRjNF7oN5qKoaRoMTQQ==} + engines: {node: '>= 8'} + hasBin: true + requiresBuild: true dependencies: https-proxy-agent: 5.0.1 mkdirp: 0.5.6 @@ -5595,367 +2172,459 @@ snapshots: transitivePeerDependencies: - encoding - supports-color + dev: false - '@sentry/core@7.102.1': + /@sentry/core@7.119.0: + resolution: {integrity: sha512-CS2kUv9rAJJEjiRat6wle3JATHypB0SyD7pt4cpX5y0dN5dZ1JrF57oLHRMnga9fxRivydHz7tMTuBhSSwhzjw==} + engines: {node: '>=8'} dependencies: - '@sentry/types': 7.102.1 - '@sentry/utils': 7.102.1 + '@sentry/types': 7.119.0 + '@sentry/utils': 7.119.0 + dev: false - '@sentry/integrations@7.102.1': + /@sentry/integrations@7.119.0: + resolution: {integrity: sha512-OHShvtsRW0A+ZL/ZbMnMqDEtJddPasndjq+1aQXw40mN+zeP7At/V1yPZyFaURy86iX7Ucxw5BtmzuNy7hLyTA==} + engines: {node: '>=8'} dependencies: - '@sentry/core': 7.102.1 - '@sentry/types': 7.102.1 - '@sentry/utils': 7.102.1 + '@sentry/core': 7.119.0 + '@sentry/types': 7.119.0 + '@sentry/utils': 7.119.0 localforage: 1.10.0 + dev: false - '@sentry/nextjs@7.102.1(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0)(webpack@5.89.0)': + /@sentry/nextjs@7.119.0(next@14.2.4)(react@18.2.0)(webpack@5.94.0): + resolution: {integrity: sha512-D2P0LmgQbF/d7Ar6u2OKj+strM1id6OFfsHAKeTYd6KVipwc4YBpbS5OYkwH3BhtofCXvtfU3VmayVJD1onOiw==} + engines: {node: '>=8'} + peerDependencies: + next: ^10.0.8 || ^11.0 || ^12.0 || ^13.0 || ^14.0 + react: 16.x || 17.x || 18.x + webpack: '>= 4.0.0' + peerDependenciesMeta: + webpack: + optional: true dependencies: '@rollup/plugin-commonjs': 24.0.0(rollup@2.78.0) - '@sentry/core': 7.102.1 - '@sentry/integrations': 7.102.1 - '@sentry/node': 7.102.1 - '@sentry/react': 7.102.1(react@18.2.0) - '@sentry/types': 7.102.1 - '@sentry/utils': 7.102.1 - '@sentry/vercel-edge': 7.102.1 + '@sentry/core': 7.119.0 + '@sentry/integrations': 7.119.0 + '@sentry/node': 7.119.0 + '@sentry/react': 7.119.0(react@18.2.0) + '@sentry/types': 7.119.0 + '@sentry/utils': 7.119.0 + '@sentry/vercel-edge': 7.119.0 '@sentry/webpack-plugin': 1.21.0 chalk: 3.0.0 - next: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + next: 14.2.4(@babel/core@7.25.2)(@playwright/test@1.47.2)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 resolve: 1.22.8 rollup: 2.78.0 stacktrace-parser: 0.1.10 - optionalDependencies: - webpack: 5.89.0 + webpack: 5.94.0 transitivePeerDependencies: - encoding - supports-color + dev: false - '@sentry/node@7.102.1': + /@sentry/node@7.119.0: + resolution: {integrity: sha512-9PFzN8xS6U0oZCflpVxS2SSIsHkCaj7qYBlsvHj4CTGWfao9ImwrU6+smy4qoG6oxwPfoVb5pOOMb4WpWOvXcQ==} + engines: {node: '>=8'} dependencies: - '@sentry-internal/tracing': 7.102.1 - '@sentry/core': 7.102.1 - '@sentry/types': 7.102.1 - '@sentry/utils': 7.102.1 + '@sentry-internal/tracing': 7.119.0 + '@sentry/core': 7.119.0 + '@sentry/integrations': 7.119.0 + '@sentry/types': 7.119.0 + '@sentry/utils': 7.119.0 + dev: false - '@sentry/react@7.102.1(react@18.2.0)': + /@sentry/react@7.119.0(react@18.2.0): + resolution: {integrity: sha512-cf8Cei+qdSA26gx+IMAuc/k44PeBImNzIpXi3930SLhUe44ypT5OZ/44L6xTODHZzTIyMSJPduf59vT2+eW9yg==} + engines: {node: '>=8'} + peerDependencies: + react: 15.x || 16.x || 17.x || 18.x dependencies: - '@sentry/browser': 7.102.1 - '@sentry/core': 7.102.1 - '@sentry/types': 7.102.1 - '@sentry/utils': 7.102.1 + '@sentry/browser': 7.119.0 + '@sentry/core': 7.119.0 + '@sentry/types': 7.119.0 + '@sentry/utils': 7.119.0 hoist-non-react-statics: 3.3.2 react: 18.2.0 + dev: false - '@sentry/replay@7.102.1': + /@sentry/replay@7.119.0: + resolution: {integrity: sha512-BnNsYL+X5I4WCH6wOpY6HQtp4MgVt0NVlhLUsEyrvMUiTs0bPkDBrulsgZQBUKJsbOr3l9nHrFoNVB/0i6WNLA==} + engines: {node: '>=12'} dependencies: - '@sentry-internal/tracing': 7.102.1 - '@sentry/core': 7.102.1 - '@sentry/types': 7.102.1 - '@sentry/utils': 7.102.1 + '@sentry-internal/tracing': 7.119.0 + '@sentry/core': 7.119.0 + '@sentry/types': 7.119.0 + '@sentry/utils': 7.119.0 + dev: false - '@sentry/types@7.102.1': {} + /@sentry/types@7.119.0: + resolution: {integrity: sha512-27qQbutDBPKGbuJHROxhIWc1i0HJaGLA90tjMu11wt0E4UNxXRX+UQl4Twu68v4EV3CPvQcEpQfgsViYcXmq+w==} + engines: {node: '>=8'} + dev: false - '@sentry/utils@7.102.1': + /@sentry/utils@7.119.0: + resolution: {integrity: sha512-ZwyXexWn2ZIe2bBoYnXJVPc2esCSbKpdc6+0WJa8eutXfHq3FRKg4ohkfCBpfxljQGEfP1+kfin945lA21Ka+A==} + engines: {node: '>=8'} dependencies: - '@sentry/types': 7.102.1 + '@sentry/types': 7.119.0 + dev: false - '@sentry/vercel-edge@7.102.1': + /@sentry/vercel-edge@7.119.0: + resolution: {integrity: sha512-9gi5SrBSHhHFYBq/+vG1qC9r80eEskCf7ti/qYSvXc6zij5ieilurF5tunyAle+ayxfHdPTdkhUnDZT6G9jdmA==} + engines: {node: '>=8'} dependencies: - '@sentry-internal/tracing': 7.102.1 - '@sentry/core': 7.102.1 - '@sentry/types': 7.102.1 - '@sentry/utils': 7.102.1 + '@sentry-internal/tracing': 7.119.0 + '@sentry/core': 7.119.0 + '@sentry/integrations': 7.119.0 + '@sentry/types': 7.119.0 + '@sentry/utils': 7.119.0 + dev: false - '@sentry/webpack-plugin@1.21.0': + /@sentry/webpack-plugin@1.21.0: + resolution: {integrity: sha512-x0PYIMWcsTauqxgl7vWUY6sANl+XGKtx7DCVnnY7aOIIlIna0jChTAPANTfA2QrK+VK+4I/4JxatCEZBnXh3Og==} + engines: {node: '>= 8'} dependencies: '@sentry/cli': 1.77.3 webpack-sources: 3.2.3 transitivePeerDependencies: - encoding - supports-color + dev: false - '@slack/types@2.10.0': {} + /@slack/types@2.14.0: + resolution: {integrity: sha512-n0EGm7ENQRxlXbgKSrQZL69grzg1gHLAVd+GlRVQJ1NSORo0FrApR7wql/gaKdu2n4TO83Sq/AmeUOqD60aXUA==} + engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} + dev: false - '@slack/webhook@7.0.1': + /@slack/webhook@7.0.3: + resolution: {integrity: sha512-qRPMq3In5znBpRLw4IQvYy8M3+CRd8/FKfZjA0BoNx/Q1qm4+kom8BTaOz+HMoRpnywMbr+4B/Tc5JR3nUJ+ew==} + engines: {node: '>= 18', npm: '>= 8.6.0'} dependencies: - '@slack/types': 2.10.0 - '@types/node': 20.10.6 - axios: 1.6.2 + '@slack/types': 2.14.0 + '@types/node': 22.5.5 + axios: 1.7.7 transitivePeerDependencies: - debug + dev: false + + /@socket.io/component-emitter@3.1.2: + resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} + dev: false - '@stripe/stripe-js@4.1.0': {} + /@stripe/stripe-js@4.5.0: + resolution: {integrity: sha512-dMOzc58AOlsF20nYM/avzV8RFhO/vgYTY7ajLMH6mjlnZysnOHZxsECQvjEmL8Q/ukPwHkOnxSPW/QGCCnp7XA==} + engines: {node: '>=12.16'} + dev: false - '@swc-jotai/react-refresh@0.2.0': {} + /@swc-jotai/react-refresh@0.2.0: + resolution: {integrity: sha512-LDkIeVcaL8sop/MHLP3RsUHj73fQ0kU7eYhJj7SuU4eAbx7xE3eeEgCjhTyPB3aYimSHwOk8/c71buLMV9SvPA==} + dev: true - '@swc/counter@0.1.3': {} + /@swc/counter@0.1.3: + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + dev: false - '@swc/helpers@0.5.5': + /@swc/helpers@0.5.5: + resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} dependencies: '@swc/counter': 0.1.3 - tslib: 2.6.2 + tslib: 2.7.0 + dev: false - '@tootallnate/once@2.0.0': {} + /@tootallnate/once@2.0.0: + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + dev: false - '@tsconfig/node10@1.0.9': {} + /@tsconfig/node10@1.0.11: + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} - '@tsconfig/node12@1.0.11': {} + /@tsconfig/node12@1.0.11: + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - '@tsconfig/node14@1.0.3': {} + /@tsconfig/node14@1.0.3: + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - '@tsconfig/node16@1.0.4': {} + /@tsconfig/node16@1.0.4: + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - '@types/caseless@0.12.5': {} + /@types/caseless@0.12.5: + resolution: {integrity: sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==} + dev: false - '@types/debug@4.1.8': - dependencies: - '@types/ms': 0.7.31 + /@types/cookie@0.4.1: + resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} + dev: false - '@types/eslint-scope@3.7.7': + /@types/cors@2.8.17: + resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} dependencies: - '@types/eslint': 8.56.0 - '@types/estree': 1.0.5 + '@types/node': 22.5.5 + dev: false - '@types/eslint@8.56.0': + /@types/debug@4.1.12: + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} dependencies: - '@types/estree': 1.0.5 - '@types/json-schema': 7.0.15 + '@types/ms': 0.7.34 + dev: false - '@types/estree-jsx@1.0.3': + /@types/estree-jsx@1.0.5: + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 + dev: false - '@types/estree@1.0.5': {} + /@types/estree@1.0.6: + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + dev: false - '@types/formidable@3.4.5': + /@types/formidable@3.4.5: + resolution: {integrity: sha512-s7YPsNVfnsng5L8sKnG/Gbb2tiwwJTY1conOkJzTMRvJAlLFW1nEua+ADsJQu8N1c0oTHx9+d5nqg10WuT9gHQ==} dependencies: - '@types/node': 20.10.6 + '@types/node': 22.5.5 + dev: true - '@types/hast@2.3.5': + /@types/hast@2.3.10: + resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==} dependencies: - '@types/unist': 2.0.8 + '@types/unist': 2.0.11 + dev: false - '@types/hast@3.0.0': + /@types/hast@3.0.4: + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} dependencies: - '@types/unist': 3.0.0 + '@types/unist': 3.0.3 + dev: false - '@types/json-schema@7.0.12': {} - - '@types/json-schema@7.0.15': {} + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + dev: false - '@types/json5@0.0.29': {} + /@types/json5@0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: true - '@types/mdast@4.0.3': + /@types/mdast@4.0.4: + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} dependencies: - '@types/unist': 3.0.0 - - '@types/ms@0.7.31': {} + '@types/unist': 3.0.3 + dev: false - '@types/node@20.10.6': - dependencies: - undici-types: 5.26.5 + /@types/ms@0.7.34: + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + dev: false - '@types/node@22.5.4': + /@types/node@22.5.5: + resolution: {integrity: sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==} dependencies: undici-types: 6.19.8 - '@types/papaparse@5.3.14': + /@types/papaparse@5.3.14: + resolution: {integrity: sha512-LxJ4iEFcpqc6METwp9f6BV6VVc43m6MfH0VqFosHvrUgfXiFe6ww7R3itkOQ+TCK6Y+Iv/+RnnvtRZnkc5Kc9g==} dependencies: - '@types/node': 20.10.6 + '@types/node': 22.5.5 + dev: false - '@types/prismjs@1.26.0': {} + /@types/prismjs@1.26.4: + resolution: {integrity: sha512-rlAnzkW2sZOjbqZ743IHUhFcvzaGbqijwOu8QZnZCjfQzBqFE3s4lOTJEsxikImav9uzz/42I+O7YUs1mWgMlg==} + dev: false - '@types/prop-types@15.7.5': {} + /@types/prop-types@15.7.13: + resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} - '@types/react@18.0.27': + /@types/react@18.3.8: + resolution: {integrity: sha512-syBUrW3/XpnW4WJ41Pft+I+aPoDVbrBVQGEnbD7NijDGlVC+8gV/XKRY+7vMDlfPpbwYt0l1vd/Sj8bJGMbs9Q==} dependencies: - '@types/prop-types': 15.7.5 - '@types/scheduler': 0.16.3 - csstype: 3.1.2 + '@types/prop-types': 15.7.13 + csstype: 3.1.3 - '@types/request@2.48.12': + /@types/request@2.48.12: + resolution: {integrity: sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==} dependencies: '@types/caseless': 0.12.5 - '@types/node': 20.10.6 + '@types/node': 22.5.5 '@types/tough-cookie': 4.0.5 form-data: 2.5.1 + dev: false - '@types/scheduler@0.16.3': {} - - '@types/tough-cookie@4.0.5': {} - - '@types/unist@2.0.8': {} - - '@types/unist@3.0.0': {} - - '@typeschema/core@0.13.2(@types/json-schema@7.0.15)': - optionalDependencies: - '@types/json-schema': 7.0.15 + /@types/tough-cookie@4.0.5: + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + dev: false - '@typeschema/main@0.13.10(@types/json-schema@7.0.15)(@typeschema/zod@0.13.3(@types/json-schema@7.0.15)(zod@3.22.4))': - dependencies: - '@typeschema/core': 0.13.2(@types/json-schema@7.0.15) - optionalDependencies: - '@typeschema/zod': 0.13.3(@types/json-schema@7.0.15)(zod@3.22.4) - transitivePeerDependencies: - - '@types/json-schema' + /@types/unist@2.0.11: + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} + dev: false - '@typeschema/zod@0.13.3(@types/json-schema@7.0.15)(zod@3.22.4)': - dependencies: - '@typeschema/core': 0.13.2(@types/json-schema@7.0.15) - optionalDependencies: - zod: 3.22.4 - transitivePeerDependencies: - - '@types/json-schema' + /@types/unist@3.0.3: + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + dev: false - '@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4)': + /@typescript-eslint/eslint-plugin@8.6.0(@typescript-eslint/parser@8.6.0)(eslint@9.9.1)(typescript@5.6.2): + resolution: {integrity: sha512-UOaz/wFowmoh2G6Mr9gw60B1mm0MzUtm6Ic8G2yM1Le6gyj5Loi/N+O5mocugRGY+8OeeKmkMmbxNqUCq3B4Sg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) - '@typescript-eslint/scope-manager': 8.4.0 - '@typescript-eslint/type-utils': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) - '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 8.4.0 - eslint: 9.9.1(jiti@1.19.3) + '@eslint-community/regexpp': 4.11.1 + '@typescript-eslint/parser': 8.6.0(eslint@9.9.1)(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.6.0 + '@typescript-eslint/type-utils': 8.6.0(eslint@9.9.1)(typescript@5.6.2) + '@typescript-eslint/utils': 8.6.0(eslint@9.9.1)(typescript@5.6.2) + '@typescript-eslint/visitor-keys': 8.6.0 + eslint: 9.9.1 graphemer: 1.4.0 - ignore: 5.3.1 + ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.5.4) - optionalDependencies: - typescript: 5.5.4 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4)': - dependencies: - '@typescript-eslint/scope-manager': 7.2.0 - '@typescript-eslint/types': 7.2.0 - '@typescript-eslint/typescript-estree': 7.2.0(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 7.2.0 - debug: 4.3.6 - eslint: 9.9.1(jiti@1.19.3) - optionalDependencies: - typescript: 5.5.4 + ts-api-utils: 1.3.0(typescript@5.6.2) + typescript: 5.6.2 transitivePeerDependencies: - supports-color + dev: true - '@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4)': + /@typescript-eslint/parser@8.6.0(eslint@9.9.1)(typescript@5.6.2): + resolution: {integrity: sha512-eQcbCuA2Vmw45iGfcyG4y6rS7BhWfz9MQuk409WD47qMM+bKCGQWXxvoOs1DUp+T7UBMTtRTVT+kXr7Sh4O9Ow==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@typescript-eslint/scope-manager': 8.4.0 - '@typescript-eslint/types': 8.4.0 - '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 8.4.0 - debug: 4.3.4 - eslint: 9.9.1(jiti@1.19.3) - optionalDependencies: - typescript: 5.5.4 + '@typescript-eslint/scope-manager': 8.6.0 + '@typescript-eslint/types': 8.6.0 + '@typescript-eslint/typescript-estree': 8.6.0(typescript@5.6.2) + '@typescript-eslint/visitor-keys': 8.6.0 + debug: 4.3.7 + eslint: 9.9.1 + typescript: 5.6.2 transitivePeerDependencies: - supports-color + dev: true - '@typescript-eslint/scope-manager@7.2.0': - dependencies: - '@typescript-eslint/types': 7.2.0 - '@typescript-eslint/visitor-keys': 7.2.0 - - '@typescript-eslint/scope-manager@8.4.0': + /@typescript-eslint/scope-manager@8.6.0: + resolution: {integrity: sha512-ZuoutoS5y9UOxKvpc/GkvF4cuEmpokda4wRg64JEia27wX+PysIE9q+lzDtlHHgblwUWwo5/Qn+/WyTUvDwBHw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - '@typescript-eslint/types': 8.4.0 - '@typescript-eslint/visitor-keys': 8.4.0 + '@typescript-eslint/types': 8.6.0 + '@typescript-eslint/visitor-keys': 8.6.0 + dev: true - '@typescript-eslint/type-utils@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4)': + /@typescript-eslint/type-utils@8.6.0(eslint@9.9.1)(typescript@5.6.2): + resolution: {integrity: sha512-dtePl4gsuenXVwC7dVNlb4mGDcKjDT/Ropsk4za/ouMBPplCLyznIaR+W65mvCvsyS97dymoBRrioEXI7k0XIg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4) - '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) - debug: 4.3.4 - ts-api-utils: 1.3.0(typescript@5.5.4) - optionalDependencies: - typescript: 5.5.4 + '@typescript-eslint/typescript-estree': 8.6.0(typescript@5.6.2) + '@typescript-eslint/utils': 8.6.0(eslint@9.9.1)(typescript@5.6.2) + debug: 4.3.7 + ts-api-utils: 1.3.0(typescript@5.6.2) + typescript: 5.6.2 transitivePeerDependencies: - eslint - supports-color + dev: true - '@typescript-eslint/types@7.2.0': {} - - '@typescript-eslint/types@8.4.0': {} - - '@typescript-eslint/typescript-estree@7.2.0(typescript@5.5.4)': - dependencies: - '@typescript-eslint/types': 7.2.0 - '@typescript-eslint/visitor-keys': 7.2.0 - debug: 4.3.6 - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.3 - semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.5.4) - optionalDependencies: - typescript: 5.5.4 - transitivePeerDependencies: - - supports-color + /@typescript-eslint/types@8.6.0: + resolution: {integrity: sha512-rojqFZGd4MQxw33SrOy09qIDS8WEldM8JWtKQLAjf/X5mGSeEFh5ixQlxssMNyPslVIk9yzWqXCsV2eFhYrYUw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true - '@typescript-eslint/typescript-estree@8.4.0(typescript@5.5.4)': + /@typescript-eslint/typescript-estree@8.6.0(typescript@5.6.2): + resolution: {integrity: sha512-MOVAzsKJIPIlLK239l5s06YXjNqpKTVhBVDnqUumQJja5+Y94V3+4VUFRA0G60y2jNnTVwRCkhyGQpavfsbq/g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@typescript-eslint/types': 8.4.0 - '@typescript-eslint/visitor-keys': 8.4.0 - debug: 4.3.4 + '@typescript-eslint/types': 8.6.0 + '@typescript-eslint/visitor-keys': 8.6.0 + debug: 4.3.7 fast-glob: 3.3.2 is-glob: 4.0.3 - minimatch: 9.0.4 - semver: 7.6.2 - ts-api-utils: 1.3.0(typescript@5.5.4) - optionalDependencies: - typescript: 5.5.4 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.6.2) + typescript: 5.6.2 transitivePeerDependencies: - supports-color + dev: true - '@typescript-eslint/utils@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4)': + /@typescript-eslint/utils@8.6.0(eslint@9.9.1)(typescript@5.6.2): + resolution: {integrity: sha512-eNp9cWnYf36NaOVjkEUznf6fEgVy1TWpE0o52e4wtojjBx7D1UV2WAWGzR+8Y5lVFtpMLPwNbC67T83DWSph4A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.19.3)) - '@typescript-eslint/scope-manager': 8.4.0 - '@typescript-eslint/types': 8.4.0 - '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4) - eslint: 9.9.1(jiti@1.19.3) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1) + '@typescript-eslint/scope-manager': 8.6.0 + '@typescript-eslint/types': 8.6.0 + '@typescript-eslint/typescript-estree': 8.6.0(typescript@5.6.2) + eslint: 9.9.1 transitivePeerDependencies: - supports-color - typescript + dev: true - '@typescript-eslint/visitor-keys@7.2.0': - dependencies: - '@typescript-eslint/types': 7.2.0 - eslint-visitor-keys: 3.4.3 - - '@typescript-eslint/visitor-keys@8.4.0': + /@typescript-eslint/visitor-keys@8.6.0: + resolution: {integrity: sha512-wapVFfZg9H0qOYh4grNVQiMklJGluQrOUiOhYRrQWhx7BY/+I1IYb8BczWNbbUpO+pqy0rDciv3lQH5E1bCLrg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/types': 8.6.0 eslint-visitor-keys: 3.4.3 + dev: true - '@uiw/copy-to-clipboard@1.0.15': {} + /@uiw/copy-to-clipboard@1.0.17: + resolution: {integrity: sha512-O2GUHV90Iw2VrSLVLK0OmNIMdZ5fgEg4NhvtwINsX+eZ/Wf6DWD0TdsK9xwV7dNRnK/UI2mQtl0a2/kRgm1m1A==} + dev: false - '@uiw/react-markdown-preview@5.0.6(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + /@uiw/react-markdown-preview@5.1.3(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-jV02wO4XHWFk54kz7sLqOkdPgJLttSfKLyen47XgjcyGgQXU2I4WJBygmdpV2AT9m/MiQ8qrN1Y+E5Syv9ZDpw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' dependencies: - '@babel/runtime': 7.22.11 - '@uiw/copy-to-clipboard': 1.0.15 + '@babel/runtime': 7.25.6 + '@uiw/copy-to-clipboard': 1.0.17 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-markdown: 9.0.1(@types/react@18.0.27)(react@18.2.0) + react-markdown: 9.0.1(@types/react@18.3.8)(react@18.2.0) rehype-attr: 3.0.3 rehype-autolink-headings: 7.1.0 rehype-ignore: 2.0.2 - rehype-prism-plus: 1.6.3 + rehype-prism-plus: 2.0.0 rehype-raw: 7.0.0 rehype-rewrite: 4.0.2 rehype-slug: 6.0.0 remark-gfm: 4.0.0 + remark-github-blockquote-alert: 1.2.1 unist-util-visit: 5.0.0 transitivePeerDependencies: - '@types/react' - supports-color + dev: false - '@uiw/react-md-editor@4.0.3(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + /@uiw/react-md-editor@4.0.4(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-JH9nDXXRhJtWPP4yE61VE+9ryFo9tg9v7KMwGfJCnaOOKuLF1MR3l/MNsiJCGkRjUwyto5WrU7kBSq8ODJEtYw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' dependencies: - '@babel/runtime': 7.23.7 - '@uiw/react-markdown-preview': 5.0.6(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@babel/runtime': 7.25.6 + '@uiw/react-markdown-preview': 5.1.3(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) rehype: 13.0.1 @@ -5963,193 +2632,312 @@ snapshots: transitivePeerDependencies: - '@types/react' - supports-color + dev: false - '@ungap/structured-clone@1.2.0': {} + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: false - '@webassemblyjs/ast@1.11.6': + /@webassemblyjs/ast@1.12.1: + resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} dependencies: '@webassemblyjs/helper-numbers': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + dev: false - '@webassemblyjs/floating-point-hex-parser@1.11.6': {} + /@webassemblyjs/floating-point-hex-parser@1.11.6: + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + dev: false - '@webassemblyjs/helper-api-error@1.11.6': {} + /@webassemblyjs/helper-api-error@1.11.6: + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + dev: false - '@webassemblyjs/helper-buffer@1.11.6': {} + /@webassemblyjs/helper-buffer@1.12.1: + resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} + dev: false - '@webassemblyjs/helper-numbers@1.11.6': + /@webassemblyjs/helper-numbers@1.11.6: + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} dependencies: '@webassemblyjs/floating-point-hex-parser': 1.11.6 '@webassemblyjs/helper-api-error': 1.11.6 '@xtuc/long': 4.2.2 + dev: false - '@webassemblyjs/helper-wasm-bytecode@1.11.6': {} + /@webassemblyjs/helper-wasm-bytecode@1.11.6: + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + dev: false - '@webassemblyjs/helper-wasm-section@1.11.6': + /@webassemblyjs/helper-wasm-section@1.12.1: + resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-gen': 1.12.1 + dev: false - '@webassemblyjs/ieee754@1.11.6': + /@webassemblyjs/ieee754@1.11.6: + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} dependencies: '@xtuc/ieee754': 1.2.0 + dev: false - '@webassemblyjs/leb128@1.11.6': + /@webassemblyjs/leb128@1.11.6: + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} dependencies: '@xtuc/long': 4.2.2 + dev: false - '@webassemblyjs/utf8@1.11.6': {} + /@webassemblyjs/utf8@1.11.6: + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + dev: false - '@webassemblyjs/wasm-edit@1.11.6': + /@webassemblyjs/wasm-edit@1.12.1: + resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/helper-wasm-section': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - '@webassemblyjs/wasm-opt': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 - '@webassemblyjs/wast-printer': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-opt': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + '@webassemblyjs/wast-printer': 1.12.1 + dev: false - '@webassemblyjs/wasm-gen@1.11.6': + /@webassemblyjs/wasm-gen@1.12.1: + resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} dependencies: - '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 + dev: false - '@webassemblyjs/wasm-opt@1.11.6': + /@webassemblyjs/wasm-opt@1.12.1: + resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + dev: false - '@webassemblyjs/wasm-parser@1.11.6': + /@webassemblyjs/wasm-parser@1.12.1: + resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} dependencies: - '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/helper-api-error': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 + dev: false - '@webassemblyjs/wast-printer@1.11.6': + /@webassemblyjs/wast-printer@1.12.1: + resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} dependencies: - '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/ast': 1.12.1 '@xtuc/long': 4.2.2 + dev: false - '@xtuc/ieee754@1.2.0': {} + /@xtuc/ieee754@1.2.0: + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + dev: false - '@xtuc/long@4.2.2': {} + /@xtuc/long@4.2.2: + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + dev: false - abbrev@2.0.0: {} + /abbrev@2.0.0: + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: false - abort-controller@3.0.0: + /abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} dependencies: event-target-shim: 5.0.1 + dev: false - acorn-import-assertions@1.9.0(acorn@8.12.1): + /accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} dependencies: - acorn: 8.12.1 + mime-types: 2.1.35 + negotiator: 0.6.3 + dev: false - acorn-jsx@5.3.2(acorn@8.12.1): + /acorn-import-attributes@1.9.5(acorn@8.12.1): + resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} + peerDependencies: + acorn: ^8 dependencies: acorn: 8.12.1 + dev: false - acorn-walk@8.3.0: {} + /acorn-jsx@5.3.2(acorn@8.12.1): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.12.1 + dev: true - acorn@8.10.0: {} + /acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + dependencies: + acorn: 8.12.1 - acorn@8.12.1: {} + /acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + engines: {node: '>=0.4.0'} + hasBin: true - agent-base@6.0.2: + /agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.4 + debug: 4.3.7 transitivePeerDependencies: - supports-color + dev: false - agent-base@7.1.0: + /agent-base@7.1.1: + resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} + engines: {node: '>= 14'} dependencies: - debug: 4.3.4 + debug: 4.3.7 transitivePeerDependencies: - supports-color + dev: false - ajv-formats@2.1.1(ajv@8.12.0): - optionalDependencies: - ajv: 8.12.0 + /ajv-formats@2.1.1(ajv@8.17.1): + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + dependencies: + ajv: 8.17.1 + dev: false - ajv-keywords@3.5.2(ajv@6.12.6): + /ajv-keywords@3.5.2(ajv@6.12.6): + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 dependencies: ajv: 6.12.6 + dev: false - ajv-keywords@5.1.0(ajv@8.12.0): + /ajv-keywords@5.1.0(ajv@8.17.1): + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 dependencies: - ajv: 8.12.0 + ajv: 8.17.1 fast-deep-equal: 3.1.3 + dev: false - ajv@6.12.6: + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.12.0: + /ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} dependencies: fast-deep-equal: 3.1.3 + fast-uri: 3.0.1 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - uri-js: 4.4.1 + dev: false - ansi-escapes@5.0.0: + /ansi-escapes@7.0.0: + resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} + engines: {node: '>=18'} dependencies: - type-fest: 1.4.0 + environment: 1.1.0 + dev: true - ansi-regex@5.0.1: {} + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} - ansi-regex@6.0.1: {} + /ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} - ansi-styles@3.2.1: + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} dependencies: color-convert: 1.9.3 + dev: false - ansi-styles@4.3.0: + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} dependencies: color-convert: 2.0.1 - ansi-styles@6.2.1: {} + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} - any-promise@1.3.0: {} + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - anymatch@3.1.3: + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - arg@4.1.3: {} + /arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - arg@5.0.2: {} + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - argparse@2.0.1: {} + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true - aria-hidden@1.2.3: + /aria-hidden@1.2.4: + resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} + engines: {node: '>=10'} dependencies: - tslib: 2.6.2 + tslib: 2.7.0 + dev: false - aria-query@5.1.3: + /aria-query@5.1.3: + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} dependencies: deep-equal: 2.2.3 + dev: true - array-buffer-byte-length@1.0.1: + /array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 is-array-buffer: 3.0.4 + dev: true - array-includes@3.1.8: + /array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -6157,10 +2945,11 @@ snapshots: es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 is-string: 1.0.7 + dev: true - array-union@2.1.0: {} - - array.prototype.findlast@1.2.5: + /array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -6168,8 +2957,11 @@ snapshots: es-errors: 1.3.0 es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 + dev: true - array.prototype.findlastindex@1.2.5: + /array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -6177,30 +2969,42 @@ snapshots: es-errors: 1.3.0 es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 + dev: true - array.prototype.flat@1.3.2: + /array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 + dev: true - array.prototype.flatmap@1.3.2: + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 + dev: true - array.prototype.tosorted@1.1.4: + /array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-errors: 1.3.0 es-shim-unscopables: 1.0.2 + dev: true - arraybuffer.prototype.slice@1.0.3: + /arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.1 call-bind: 1.0.7 @@ -6210,108 +3014,193 @@ snapshots: get-intrinsic: 1.2.4 is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.3 + dev: true - arrify@2.0.1: {} + /arrify@2.0.1: + resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} + engines: {node: '>=8'} + dev: false - asap@2.0.6: {} + /asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + dev: false - ast-types-flow@0.0.8: {} + /ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + dev: true - async-retry@1.3.3: + /async-retry@1.3.3: + resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} dependencies: retry: 0.13.1 + dev: false - asynckit@0.4.0: {} + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: false - attr-accept@2.2.2: {} + /attr-accept@2.2.2: + resolution: {integrity: sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==} + engines: {node: '>=4'} + dev: false - autoprefixer@10.4.16(postcss@8.4.28): + /autoprefixer@10.4.20(postcss@8.4.47): + resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 dependencies: - browserslist: 4.21.10 - caniuse-lite: 1.0.30001572 + browserslist: 4.23.3 + caniuse-lite: 1.0.30001663 fraction.js: 4.3.7 normalize-range: 0.1.2 - picocolors: 1.0.0 - postcss: 8.4.28 + picocolors: 1.1.0 + postcss: 8.4.47 postcss-value-parser: 4.2.0 + dev: true - available-typed-arrays@1.0.7: + /available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} dependencies: possible-typed-array-names: 1.0.0 + dev: true - axe-core@4.10.0: {} + /axe-core@4.10.0: + resolution: {integrity: sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==} + engines: {node: '>=4'} + dev: true - axios@1.6.2: + /axios@1.7.7: + resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} dependencies: - follow-redirects: 1.15.2 + follow-redirects: 1.15.9 form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug + dev: false - axobject-query@4.1.0: {} + /axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} + dev: true - babel-loader@9.1.3(@babel/core@7.22.17)(webpack@5.89.0): + /babel-loader@9.2.1(@babel/core@7.25.2)(webpack@5.94.0): + resolution: {integrity: sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==} + engines: {node: '>= 14.15.0'} + peerDependencies: + '@babel/core': ^7.12.0 + webpack: '>=5' dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.25.2 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.89.0 + webpack: 5.94.0 + dev: false - babel-plugin-transform-remove-imports@1.7.0(@babel/core@7.22.17): + /babel-plugin-transform-remove-imports@1.8.0(@babel/core@7.25.2): + resolution: {integrity: sha512-QdE5ZnIjON1pSgTPU8KzLnl/LEzdq9PLmZNuHgGKTx0LOI9PBrHBj0fz9uCg2CdssiTw7v/zVRYs8GJxbvhKnQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.25.2 + dev: false + + /bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + dev: false + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - bail@2.0.2: {} + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: false - balanced-match@1.0.2: {} + /base64id@2.0.0: + resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} + engines: {node: ^4.5.0 || >= 5.9} + dev: false - base64-js@1.5.1: {} + /bcp-47-match@2.0.3: + resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} + dev: false - bcp-47-match@2.0.3: {} + /bignumber.js@9.1.2: + resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} + dev: false - bignumber.js@9.1.2: {} + /binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} - binary-extensions@2.2.0: {} + /bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: false - boolbase@1.0.0: {} + /boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: false - brace-expansion@1.1.11: + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 + dev: true - brace-expansion@2.0.1: + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: balanced-match: 1.0.2 - braces@3.0.2: + /braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} dependencies: - fill-range: 7.0.1 + fill-range: 7.1.1 - browserslist@4.21.10: + /browserslist@4.23.3: + resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true dependencies: - caniuse-lite: 1.0.30001572 - electron-to-chromium: 1.4.503 - node-releases: 2.0.13 - update-browserslist-db: 1.0.11(browserslist@4.21.10) + caniuse-lite: 1.0.30001663 + electron-to-chromium: 1.5.27 + node-releases: 2.0.18 + update-browserslist-db: 1.1.0(browserslist@4.23.3) - browserslist@4.22.2: - dependencies: - caniuse-lite: 1.0.30001587 - electron-to-chromium: 1.4.616 - node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.22.2) + /buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + dev: false - buffer-equal-constant-time@1.0.1: {} + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: false - buffer-from@1.1.2: {} + /buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: false - busboy@1.6.0: + /busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} dependencies: streamsearch: 1.1.0 + dev: false - call-bind@1.0.7: + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} dependencies: es-define-property: 1.0.0 es-errors: 1.3.0 @@ -6319,46 +3208,73 @@ snapshots: get-intrinsic: 1.2.4 set-function-length: 1.2.2 - callsites@3.1.0: {} - - camelcase-css@2.0.1: {} + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true - caniuse-lite@1.0.30001572: {} + /camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} - caniuse-lite@1.0.30001587: {} + /caniuse-lite@1.0.30001663: + resolution: {integrity: sha512-o9C3X27GLKbLeTYZ6HBOLU1tsAcBZsLis28wrVzddShCS16RujjHp9GDHKZqrB3meE0YjhawvMFsGb/igqiPzA==} - ccount@2.0.1: {} + /ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + dev: false - chalk@2.4.2: + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 + dev: false - chalk@3.0.0: + /chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 + dev: false - chalk@4.1.2: + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - chalk@5.3.0: {} + /chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: true - character-entities-html4@2.1.0: {} + /character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + dev: false - character-entities-legacy@3.0.0: {} + /character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + dev: false - character-entities@2.0.2: {} + /character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + dev: false - character-reference-invalid@2.0.1: {} + /character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + dev: false - chokidar@3.5.3: + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} dependencies: anymatch: 3.1.3 - braces: 3.0.2 + braces: 3.0.3 glob-parent: 5.1.2 is-binary-path: 2.1.0 is-glob: 4.0.3 @@ -6367,125 +3283,251 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - chrome-trace-event@1.0.3: {} + /chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} + engines: {node: '>=6.0'} + dev: false - class-variance-authority@0.7.0: + /class-variance-authority@0.7.0: + resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} dependencies: clsx: 2.0.0 + dev: false + + /cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + dependencies: + restore-cursor: 3.1.0 + dev: false - cli-cursor@4.0.0: + /cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} dependencies: - restore-cursor: 4.0.0 + restore-cursor: 5.1.0 + dev: true + + /cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + dev: false - cli-truncate@3.1.0: + /cli-truncate@4.0.0: + resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} + engines: {node: '>=18'} dependencies: slice-ansi: 5.0.0 - string-width: 5.1.2 + string-width: 7.2.0 + dev: true + + /client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + dev: false - client-only@0.0.1: {} + /clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + dev: false - clsx@2.0.0: {} + /clsx@2.0.0: + resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} + engines: {node: '>=6'} + dev: false - clsx@2.1.0: {} + /clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + dev: false - color-convert@1.9.3: + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 + dev: false - color-convert@2.0.1: + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 - color-name@1.1.3: {} + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: false - color-name@1.1.4: {} + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - colorette@2.0.20: {} + /colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + dev: true - combined-stream@1.0.8: + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 + dev: false - comma-separated-tokens@2.0.3: {} + /comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + dev: false - commander@10.0.1: {} + /commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + dev: false - commander@11.1.0: {} + /commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + dev: false - commander@2.20.3: {} + /commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} + dev: true - commander@4.1.1: {} + /commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: false - common-path-prefix@3.0.0: {} + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} - commondir@1.0.1: {} + /common-path-prefix@3.0.0: + resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} + dev: false - compressible@2.0.18: - dependencies: - mime-db: 1.52.0 + /commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + dev: false - concat-map@0.0.1: {} + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true - config-chain@1.1.13: + /config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} dependencies: ini: 1.3.8 proto-list: 1.2.4 + dev: false - convert-source-map@1.9.0: {} + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: false - cookie@0.5.0: {} + /cookie@0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} + dev: false + + /cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + dev: false - create-require@1.1.1: {} + /cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + dev: false + + /create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - cross-spawn@7.0.3: + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - css-selector-parser@3.0.4: {} + /css-selector-parser@3.0.5: + resolution: {integrity: sha512-3itoDFbKUNx1eKmVpYMFyqKX04Ww9osZ+dLgrk6GEv6KMVeXUhUnp4I5X+evw+u3ZxVU6RFXSSRxlTeMh8bA+g==} + dev: false - cssesc@3.0.0: {} + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true - csstype@3.1.2: {} + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - damerau-levenshtein@1.0.8: {} + /damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + dev: true - data-view-buffer@1.0.1: + /data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 + dev: true - data-view-byte-length@1.0.1: + /data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 + dev: true - data-view-byte-offset@1.0.0: + /data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 + dev: true - debug@3.2.7: - dependencies: - ms: 2.1.2 + /debounce@2.0.0: + resolution: {integrity: sha512-xRetU6gL1VJbs85Mc4FoEGSjQxzpdxRyFhe3lmWFyy2EzydIcD4xzUvRJMD+NPDfMwKNhxa3PvsIOU32luIWeA==} + engines: {node: '>=18'} + dev: false - debug@4.3.4: + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: - ms: 2.1.2 + ms: 2.1.3 + dev: true - debug@4.3.6: + /debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: - ms: 2.1.2 + ms: 2.1.3 - decode-named-character-reference@1.0.2: + /decode-named-character-reference@1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} dependencies: character-entities: 2.0.2 + dev: false - deep-equal@2.2.3: + /deep-equal@2.2.3: + resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} + engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.1 call-bind: 1.0.7 @@ -6503,122 +3545,223 @@ snapshots: regexp.prototype.flags: 1.5.2 side-channel: 1.0.6 which-boxed-primitive: 1.0.2 - which-collection: 1.0.1 + which-collection: 1.0.2 which-typed-array: 1.1.15 + dev: true + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true - deep-is@0.1.4: {} + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: false - deepmerge@4.3.1: {} + /defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + dependencies: + clone: 1.0.4 + dev: false - define-data-property@1.1.4: + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} dependencies: es-define-property: 1.0.0 es-errors: 1.3.0 gopd: 1.0.1 - define-properties@1.2.1: + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.4 has-property-descriptors: 1.0.2 object-keys: 1.1.1 + dev: true - delayed-stream@1.0.0: {} + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: false - dequal@2.0.3: {} + /dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + dev: false - detect-node-es@1.1.0: {} + /detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + dev: false - devlop@1.1.0: + /devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} dependencies: dequal: 2.0.3 + dev: false - dezalgo@1.0.4: + /dezalgo@1.0.4: + resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} dependencies: asap: 2.0.6 wrappy: 1.0.2 + dev: false - didyoumean@1.2.2: {} - - diff@4.0.2: {} + /didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - dir-glob@3.0.1: - dependencies: - path-type: 4.0.0 + /diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} - direction@2.0.1: {} + /direction@2.0.1: + resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} + hasBin: true + dev: false - dlv@1.1.3: {} + /dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - doctrine@2.1.0: + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} dependencies: esutils: 2.0.3 + dev: true - doctrine@3.0.0: + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 + dev: true - dom-serializer@2.0.0: + /dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 entities: 4.5.0 + dev: false - domelementtype@2.3.0: {} + /domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: false - domhandler@5.0.3: + /domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} dependencies: domelementtype: 2.3.0 + dev: false - domutils@3.1.0: + /domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} dependencies: dom-serializer: 2.0.0 domelementtype: 2.3.0 domhandler: 5.0.3 + dev: false - dotenv@16.4.5: {} + /dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} + dev: true - duplexify@4.1.2: + /duplexify@4.1.3: + resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} dependencies: end-of-stream: 1.4.4 inherits: 2.0.4 readable-stream: 3.6.2 stream-shift: 1.0.3 + dev: false - eastasianwidth@0.2.0: {} + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - ecdsa-sig-formatter@1.0.11: + /ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} dependencies: safe-buffer: 5.2.1 + dev: false - editorconfig@1.0.4: + /editorconfig@1.0.4: + resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==} + engines: {node: '>=14'} + hasBin: true dependencies: '@one-ini/wasm': 0.1.1 commander: 10.0.1 minimatch: 9.0.1 semver: 7.6.3 + dev: false - electron-to-chromium@1.4.503: {} + /electron-to-chromium@1.5.27: + resolution: {integrity: sha512-o37j1vZqCoEgBuWWXLHQgTN/KDKe7zwpiY5CPeq2RvUqOyJw9xnrULzZAEVQ5p4h+zjMk7hgtOoPdnLxr7m/jw==} - electron-to-chromium@1.4.616: {} + /emoji-regex@10.4.0: + resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + dev: true - emoji-regex@8.0.0: {} + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - emoji-regex@9.2.2: {} + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - end-of-stream@1.4.4: + /end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: once: 1.4.0 + dev: false - enhanced-resolve@5.15.0: + /engine.io-parser@5.2.3: + resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} + engines: {node: '>=10.0.0'} + dev: false + + /engine.io@6.5.5: + resolution: {integrity: sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==} + engines: {node: '>=10.2.0'} + dependencies: + '@types/cookie': 0.4.1 + '@types/cors': 2.8.17 + '@types/node': 22.5.5 + accepts: 1.3.8 + base64id: 2.0.0 + cookie: 0.4.2 + cors: 2.8.5 + debug: 4.3.7 + engine.io-parser: 5.2.3 + ws: 8.17.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: false + + /enhanced-resolve@5.17.1: + resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} + engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 - ent@2.2.0: {} + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: false - entities@4.5.0: {} + /environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + dev: true - es-abstract@1.23.3: + /es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.1 arraybuffer.prototype.slice: 1.0.3 @@ -6635,7 +3778,7 @@ snapshots: function.prototype.name: 1.1.6 get-intrinsic: 1.2.4 get-symbol-description: 1.0.2 - globalthis: 1.0.3 + globalthis: 1.0.4 gopd: 1.0.1 has-property-descriptors: 1.0.2 has-proto: 1.0.3 @@ -6651,7 +3794,7 @@ snapshots: is-string: 1.0.7 is-typed-array: 1.1.13 is-weakref: 1.0.2 - object-inspect: 1.13.1 + object-inspect: 1.13.2 object-keys: 1.1.1 object.assign: 4.1.5 regexp.prototype.flags: 1.5.2 @@ -6666,26 +3809,35 @@ snapshots: typed-array-length: 1.0.6 unbox-primitive: 1.0.2 which-typed-array: 1.1.15 + dev: true - es-define-property@1.0.0: + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.4 - es-errors@1.3.0: {} + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} - es-get-iterator@1.1.3: + /es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 has-symbols: 1.0.3 is-arguments: 1.1.1 - is-map: 2.0.2 - is-set: 2.0.2 + is-map: 2.0.3 + is-set: 2.0.3 is-string: 1.0.7 isarray: 2.0.5 stop-iteration-iterator: 1.0.0 + dev: true - es-iterator-helpers@1.0.19: + /es-iterator-helpers@1.0.19: + resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -6694,165 +3846,309 @@ snapshots: es-set-tostringtag: 2.0.3 function-bind: 1.1.2 get-intrinsic: 1.2.4 - globalthis: 1.0.3 + globalthis: 1.0.4 has-property-descriptors: 1.0.2 has-proto: 1.0.3 has-symbols: 1.0.3 internal-slot: 1.0.7 iterator.prototype: 1.1.2 safe-array-concat: 1.1.2 + dev: true - es-module-lexer@1.4.1: {} + /es-module-lexer@1.5.4: + resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + dev: false - es-object-atoms@1.0.0: + /es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 + dev: true - es-set-tostringtag@2.0.3: + /es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.4 has-tostringtag: 1.0.2 hasown: 2.0.2 + dev: true - es-shim-unscopables@1.0.2: + /es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} dependencies: hasown: 2.0.2 + dev: true - es-to-primitive@1.2.1: + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} dependencies: is-callable: 1.2.7 is-date-object: 1.0.5 is-symbol: 1.0.4 + dev: true - escalade@3.1.1: {} + /esbuild@0.19.11: + resolution: {integrity: sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.19.11 + '@esbuild/android-arm': 0.19.11 + '@esbuild/android-arm64': 0.19.11 + '@esbuild/android-x64': 0.19.11 + '@esbuild/darwin-arm64': 0.19.11 + '@esbuild/darwin-x64': 0.19.11 + '@esbuild/freebsd-arm64': 0.19.11 + '@esbuild/freebsd-x64': 0.19.11 + '@esbuild/linux-arm': 0.19.11 + '@esbuild/linux-arm64': 0.19.11 + '@esbuild/linux-ia32': 0.19.11 + '@esbuild/linux-loong64': 0.19.11 + '@esbuild/linux-mips64el': 0.19.11 + '@esbuild/linux-ppc64': 0.19.11 + '@esbuild/linux-riscv64': 0.19.11 + '@esbuild/linux-s390x': 0.19.11 + '@esbuild/linux-x64': 0.19.11 + '@esbuild/netbsd-x64': 0.19.11 + '@esbuild/openbsd-x64': 0.19.11 + '@esbuild/sunos-x64': 0.19.11 + '@esbuild/win32-arm64': 0.19.11 + '@esbuild/win32-ia32': 0.19.11 + '@esbuild/win32-x64': 0.19.11 + dev: false + + /escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} - escape-string-regexp@1.0.5: {} + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: false - escape-string-regexp@4.0.0: {} + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true - escape-string-regexp@5.0.0: {} + /escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + dev: false - eslint-config-next@14.2.7(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4): + /eslint-config-next@14.2.13(eslint-plugin-import-x@4.3.0)(eslint@9.9.1)(typescript@5.6.2): + resolution: {integrity: sha512-aro1EKAoyYchnO/3Tlo91hnNBO7QO7qnv/79MAFC+4Jq8TdUVKQlht5d2F+YjrePjdpOvfL+mV9JPfyYNwkk1g==} + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@next/eslint-plugin-next': 14.2.7 + '@next/eslint-plugin-next': 14.2.13 '@rushstack/eslint-patch': 1.10.4 - '@typescript-eslint/parser': 7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) - eslint: 9.9.1(jiti@1.19.3) + '@typescript-eslint/eslint-plugin': 8.6.0(@typescript-eslint/parser@8.6.0)(eslint@9.9.1)(typescript@5.6.2) + '@typescript-eslint/parser': 8.6.0(eslint@9.9.1)(typescript@5.6.2) + eslint: 9.9.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)) - eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1(jiti@1.19.3)) - eslint-plugin-jsx-a11y: 6.10.0(eslint@9.9.1(jiti@1.19.3)) - eslint-plugin-react: 7.35.2(eslint@9.9.1(jiti@1.19.3)) - eslint-plugin-react-hooks: 4.6.2(eslint@9.9.1(jiti@1.19.3)) - optionalDependencies: - typescript: 5.5.4 + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.6.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.3.0)(eslint-plugin-import@2.30.0)(eslint@9.9.1) + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.6.0)(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1) + eslint-plugin-jsx-a11y: 6.10.0(eslint@9.9.1) + eslint-plugin-react: 7.36.1(eslint@9.9.1) + eslint-plugin-react-hooks: 4.6.2(eslint@9.9.1) + typescript: 5.6.2 transitivePeerDependencies: - eslint-import-resolver-webpack - eslint-plugin-import-x - supports-color + dev: true - eslint-config-prettier@9.0.0(eslint@9.9.1(jiti@1.19.3)): + /eslint-config-prettier@9.1.0(eslint@9.9.1): + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' dependencies: - eslint: 9.9.1(jiti@1.19.3) + eslint: 9.9.1 + dev: true - eslint-import-resolver-node@0.3.9: + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} dependencies: debug: 3.2.7 is-core-module: 2.15.1 resolve: 1.22.8 transitivePeerDependencies: - supports-color + dev: true - eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)): + /eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.6.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.3.0)(eslint-plugin-import@2.30.0)(eslint@9.9.1): + resolution: {integrity: sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true dependencies: '@nolyfill/is-core-module': 1.0.39 - debug: 4.3.6 - enhanced-resolve: 5.15.0 - eslint: 9.9.1(jiti@1.19.3) - eslint-module-utils: 2.9.0(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)))(eslint@9.9.1(jiti@1.19.3)) + debug: 4.3.7 + enhanced-resolve: 5.17.1 + eslint: 9.9.1 + eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.6.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1) + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.6.0)(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1) + eslint-plugin-import-x: 4.3.0(eslint@9.9.1)(typescript@5.6.2) fast-glob: 3.3.2 - get-tsconfig: 4.8.0 - is-bun-module: 1.1.0 + get-tsconfig: 4.8.1 + is-bun-module: 1.2.1 is-glob: 4.0.3 - optionalDependencies: - eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1(jiti@1.19.3)) - eslint-plugin-import-x: 4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-node - eslint-import-resolver-webpack - supports-color + dev: true - eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)): + /eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.6.0)(eslint-plugin-import-x@4.3.0)(eslint@9.9.1): + resolution: {integrity: sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true dependencies: '@nolyfill/is-core-module': 1.0.39 - debug: 4.3.6 - enhanced-resolve: 5.15.0 - eslint: 9.9.1(jiti@1.19.3) - eslint-module-utils: 2.9.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)))(eslint@9.9.1(jiti@1.19.3)) + debug: 4.3.7 + enhanced-resolve: 5.17.1 + eslint: 9.9.1 + eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.6.0)(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1) + eslint-plugin-import-x: 4.3.0(eslint@9.9.1)(typescript@5.6.2) fast-glob: 3.3.2 - get-tsconfig: 4.8.0 - is-bun-module: 1.1.0 + get-tsconfig: 4.8.1 + is-bun-module: 1.2.1 is-glob: 4.0.3 - optionalDependencies: - eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1(jiti@1.19.3)) - eslint-plugin-import-x: 4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-node - eslint-import-resolver-webpack - supports-color + dev: true - eslint-module-utils@2.9.0(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)))(eslint@9.9.1(jiti@1.19.3)): + /eslint-module-utils@2.11.0(@typescript-eslint/parser@8.6.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1): + resolution: {integrity: sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true dependencies: + '@typescript-eslint/parser': 8.6.0(eslint@9.9.1)(typescript@5.6.2) debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) - eslint: 9.9.1(jiti@1.19.3) + eslint: 9.9.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.6.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.3.0)(eslint-plugin-import@2.30.0)(eslint@9.9.1) transitivePeerDependencies: - supports-color + dev: true - eslint-module-utils@2.9.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)))(eslint@9.9.1(jiti@1.19.3)): + /eslint-module-utils@2.11.0(@typescript-eslint/parser@8.6.0)(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1): + resolution: {integrity: sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true dependencies: + '@typescript-eslint/parser': 8.6.0(eslint@9.9.1)(typescript@5.6.2) debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) - eslint: 9.9.1(jiti@1.19.3) - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)) + eslint: 9.9.1 + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.6.0)(eslint-plugin-import-x@4.3.0)(eslint@9.9.1) transitivePeerDependencies: - supports-color + dev: true - eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4): + /eslint-plugin-import-x@4.3.0(eslint@9.9.1)(typescript@5.6.2): + resolution: {integrity: sha512-PxGzP7gAjF2DLeRnQtbYkkgZDg1intFyYr/XS1LgTYXUDrSXMHGkXx8++6i2eDv2jMs0jfeO6G6ykyeWxiFX7w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 dependencies: - '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) - debug: 4.3.4 + '@typescript-eslint/utils': 8.6.0(eslint@9.9.1)(typescript@5.6.2) + debug: 4.3.7 doctrine: 3.0.0 - eslint: 9.9.1(jiti@1.19.3) + eslint: 9.9.1 eslint-import-resolver-node: 0.3.9 - get-tsconfig: 4.8.0 + get-tsconfig: 4.8.1 is-glob: 4.0.3 - minimatch: 9.0.4 + minimatch: 9.0.5 semver: 7.6.3 stable-hash: 0.0.4 tslib: 2.7.0 transitivePeerDependencies: - supports-color - typescript + dev: true - eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1(jiti@1.19.3)): + /eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.6.0)(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1): + resolution: {integrity: sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true dependencies: '@rtsao/scc': 1.1.0 + '@typescript-eslint/parser': 8.6.0(eslint@9.9.1)(typescript@5.6.2) array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.9.1(jiti@1.19.3) + eslint: 9.9.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.9.0(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.2.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@9.9.1(jiti@1.19.3)))(eslint@9.9.1(jiti@1.19.3)) + eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.6.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -6862,14 +4158,17 @@ snapshots: object.values: 1.2.0 semver: 6.3.1 tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color + dev: true - eslint-plugin-jsx-a11y@6.10.0(eslint@9.9.1(jiti@1.19.3)): + /eslint-plugin-jsx-a11y@6.10.0(eslint@9.9.1): + resolution: {integrity: sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 dependencies: aria-query: 5.1.3 array-includes: 3.1.8 @@ -6880,7 +4179,7 @@ snapshots: damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 es-iterator-helpers: 1.0.19 - eslint: 9.9.1(jiti@1.19.3) + eslint: 9.9.1 hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -6888,27 +4187,57 @@ snapshots: object.fromentries: 2.0.8 safe-regex-test: 1.0.3 string.prototype.includes: 2.0.0 + dev: true - eslint-plugin-playwright@1.6.2(eslint@9.9.1(jiti@1.19.3)): + /eslint-plugin-playwright@1.6.2(eslint@9.9.1): + resolution: {integrity: sha512-mraN4Em3b5jLt01q7qWPyLg0Q5v3KAWfJSlEWwldyUXoa7DSPrBR4k6B6LROLqipsG8ndkwWMdjl1Ffdh15tag==} + engines: {node: '>=16.6.0'} + peerDependencies: + eslint: '>=8.40.0' + eslint-plugin-jest: '>=25' + peerDependenciesMeta: + eslint-plugin-jest: + optional: true dependencies: - eslint: 9.9.1(jiti@1.19.3) + eslint: 9.9.1 globals: 13.24.0 + dev: true - eslint-plugin-prettier@5.1.3(@types/eslint@8.56.0)(eslint-config-prettier@9.0.0(eslint@9.9.1(jiti@1.19.3)))(eslint@9.9.1(jiti@1.19.3))(prettier@3.2.5): + /eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0)(eslint@9.9.1)(prettier@3.3.3): + resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true dependencies: - eslint: 9.9.1(jiti@1.19.3) - prettier: 3.2.5 + eslint: 9.9.1 + eslint-config-prettier: 9.1.0(eslint@9.9.1) + prettier: 3.3.3 prettier-linter-helpers: 1.0.0 - synckit: 0.8.8 - optionalDependencies: - '@types/eslint': 8.56.0 - eslint-config-prettier: 9.0.0(eslint@9.9.1(jiti@1.19.3)) + synckit: 0.9.1 + dev: true - eslint-plugin-react-hooks@4.6.2(eslint@9.9.1(jiti@1.19.3)): + /eslint-plugin-react-hooks@4.6.2(eslint@9.9.1): + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 9.9.1(jiti@1.19.3) + eslint: 9.9.1 + dev: true - eslint-plugin-react@7.35.2(eslint@9.9.1(jiti@1.19.3)): + /eslint-plugin-react@7.36.1(eslint@9.9.1): + resolution: {integrity: sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 @@ -6916,7 +4245,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.0.19 - eslint: 9.9.1(jiti@1.19.3) + eslint: 9.9.1 estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -6929,31 +4258,58 @@ snapshots: semver: 6.3.1 string.prototype.matchall: 4.0.11 string.prototype.repeat: 1.0.0 + dev: true - eslint-plugin-unused-imports@4.1.3(@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint@9.9.1(jiti@1.19.3)): + /eslint-plugin-unused-imports@4.1.4(eslint@9.9.1): + resolution: {integrity: sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 + eslint: ^9.0.0 || ^8.0.0 + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true dependencies: - eslint: 9.9.1(jiti@1.19.3) - optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) + eslint: 9.9.1 + dev: true - eslint-scope@5.1.1: + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 + dev: false - eslint-scope@8.0.2: + /eslint-scope@8.0.2: + resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 + dev: true - eslint-visitor-keys@3.4.3: {} + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true - eslint-visitor-keys@4.0.0: {} + /eslint-visitor-keys@4.0.0: + resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true - eslint@9.9.1(jiti@1.19.3): + /eslint@9.9.1: + resolution: {integrity: sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.19.3)) - '@eslint-community/regexpp': 4.11.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1) + '@eslint-community/regexpp': 4.11.1 '@eslint/config-array': 0.18.0 '@eslint/eslintrc': 3.1.0 '@eslint/js': 9.9.1 @@ -6963,18 +4319,18 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4 + debug: 4.3.7 escape-string-regexp: 4.0.0 eslint-scope: 8.0.2 eslint-visitor-keys: 4.0.0 espree: 10.1.0 - esquery: 1.5.0 + esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - ignore: 5.3.1 + ignore: 5.3.2 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 @@ -6983,410 +4339,605 @@ snapshots: lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.3 + optionator: 0.9.4 strip-ansi: 6.0.1 text-table: 0.2.0 - optionalDependencies: - jiti: 1.19.3 transitivePeerDependencies: - supports-color + dev: true - espree@10.1.0: + /espree@10.1.0: + resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: acorn: 8.12.1 acorn-jsx: 5.3.2(acorn@8.12.1) eslint-visitor-keys: 4.0.0 + dev: true - esquery@1.5.0: + /esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 + dev: true - esrecurse@4.3.0: + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 - estraverse@4.3.0: {} + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: false - estraverse@5.3.0: {} + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} - estree-util-is-identifier-name@3.0.0: {} + /estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + dev: false - estree-walker@2.0.2: {} + /estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + dev: false - esutils@2.0.3: {} + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true - event-target-shim@5.0.1: {} + /event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + dev: false - eventemitter3@5.0.1: {} + /eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + dev: true - events@3.3.0: {} + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: false - execa@8.0.1: + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} dependencies: cross-spawn: 7.0.3 get-stream: 8.0.1 human-signals: 5.0.0 is-stream: 3.0.0 merge-stream: 2.0.0 - npm-run-path: 5.1.0 + npm-run-path: 5.3.0 onetime: 6.0.0 signal-exit: 4.1.0 strip-final-newline: 3.0.0 + dev: true - extend@3.0.2: {} + /extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: false - fast-deep-equal@2.0.1: {} + /fast-deep-equal@2.0.1: + resolution: {integrity: sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==} + dev: false - fast-deep-equal@3.1.3: {} + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-diff@1.3.0: {} + /fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + dev: true - fast-glob@3.3.2: + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.5 + micromatch: 4.0.8 - fast-json-stable-stringify@2.1.0: {} + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true - fast-levenshtein@2.0.6: {} + /fast-uri@3.0.1: + resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==} + dev: false - fast-xml-parser@4.3.4: + /fast-xml-parser@4.5.0: + resolution: {integrity: sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg==} + hasBin: true dependencies: strnum: 1.0.5 + dev: false - fastq@1.15.0: + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} dependencies: reusify: 1.0.4 - file-entry-cache@8.0.0: + /file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} dependencies: flat-cache: 4.0.1 + dev: true - file-selector@0.6.0: + /file-selector@0.6.0: + resolution: {integrity: sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==} + engines: {node: '>= 12'} dependencies: - tslib: 2.6.2 + tslib: 2.7.0 + dev: false - fill-range@7.0.1: + /fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - find-cache-dir@4.0.0: + /find-cache-dir@4.0.0: + resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} + engines: {node: '>=14.16'} dependencies: common-path-prefix: 3.0.0 pkg-dir: 7.0.0 + dev: false - find-up@5.0.0: + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} dependencies: locate-path: 6.0.0 path-exists: 4.0.0 + dev: true - find-up@6.3.0: + /find-up@6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: locate-path: 7.2.0 path-exists: 5.0.0 + dev: false - flat-cache@4.0.1: + /flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} dependencies: flatted: 3.3.1 keyv: 4.5.4 + dev: true - flatted@3.3.1: {} + /flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + dev: true - follow-redirects@1.15.2: {} + /follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: false - for-each@0.3.3: + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 + dev: true - foreground-child@3.1.1: + /foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} dependencies: cross-spawn: 7.0.3 signal-exit: 4.1.0 - form-data@2.5.1: + /form-data@2.5.1: + resolution: {integrity: sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==} + engines: {node: '>= 0.12'} dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 + dev: false - form-data@4.0.0: + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 + dev: false - formidable@3.5.1: + /formidable@3.5.1: + resolution: {integrity: sha512-WJWKelbRHN41m5dumb0/k8TeAx7Id/y3a+Z7QfhxP/htI9Js5zYaEDtG8uMgG0vM0lOlqnmjE99/kfpOYi/0Og==} dependencies: dezalgo: 1.0.4 hexoid: 1.0.0 once: 1.4.0 + dev: false - fraction.js@4.3.7: {} + /fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + dev: true - fs.realpath@1.0.0: {} + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: false - fsevents@2.3.2: + /fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true optional: true - fsevents@2.3.3: + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true optional: true - function-bind@1.1.2: {} + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - function.prototype.name@1.1.6: + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 functions-have-names: 1.2.3 + dev: true - functions-have-names@1.2.3: {} + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true - gaxios@6.2.0: + /gaxios@6.7.1: + resolution: {integrity: sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==} + engines: {node: '>=14'} dependencies: extend: 3.0.2 - https-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.5 is-stream: 2.0.1 node-fetch: 2.7.0 + uuid: 9.0.1 transitivePeerDependencies: - encoding - supports-color + dev: false - gcp-metadata@6.1.0: + /gcp-metadata@6.1.0: + resolution: {integrity: sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==} + engines: {node: '>=14'} dependencies: - gaxios: 6.2.0 + gaxios: 6.7.1 json-bigint: 1.0.0 transitivePeerDependencies: - encoding - supports-color + dev: false - gensync@1.0.0-beta.2: {} + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: false - get-intrinsic@1.2.2: - dependencies: - function-bind: 1.1.2 - has-proto: 1.0.1 - has-symbols: 1.0.3 - hasown: 2.0.0 + /get-east-asian-width@1.2.0: + resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} + engines: {node: '>=18'} + dev: true - get-intrinsic@1.2.4: + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 function-bind: 1.1.2 - has-proto: 1.0.1 + has-proto: 1.0.3 has-symbols: 1.0.3 - hasown: 2.0.0 + hasown: 2.0.2 - get-nonce@1.0.1: {} + /get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + dev: false - get-stream@8.0.1: {} + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + dev: true - get-symbol-description@1.0.2: + /get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 + dev: true - get-tsconfig@4.8.0: + /get-tsconfig@4.8.1: + resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} dependencies: resolve-pkg-maps: 1.0.0 + dev: true - github-slugger@2.0.0: {} + /github-slugger@2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + dev: false - glob-parent@5.1.2: + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 - glob-parent@6.0.2: + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 - glob-to-regexp@0.4.1: {} + /glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + dev: false - glob@10.3.10: + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true dependencies: - foreground-child: 3.1.1 + foreground-child: 3.3.0 jackspeak: 2.3.6 - minimatch: 9.0.4 - minipass: 7.0.4 - path-scurry: 1.10.1 + minimatch: 9.0.5 + minipass: 7.1.2 + path-scurry: 1.11.1 + dev: true - glob@7.1.6: + /glob@10.3.4: + resolution: {integrity: sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 + foreground-child: 3.3.0 + jackspeak: 2.3.6 + minimatch: 9.0.5 + minipass: 7.1.2 + path-scurry: 1.11.1 + dev: false + + /glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + dependencies: + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 1.11.1 - glob@8.1.0: + /glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + deprecated: Glob versions prior to v9 are no longer supported dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 minimatch: 5.1.6 once: 1.4.0 + dev: false - globals@11.12.0: {} + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: false - globals@13.24.0: + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} dependencies: type-fest: 0.20.2 + dev: true - globals@14.0.0: {} + /globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + dev: true - globalthis@1.0.3: + /globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.1 + gopd: 1.0.1 + dev: true - globby@11.1.0: - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.2.4 - merge2: 1.4.1 - slash: 3.0.0 - - google-auth-library@9.6.3: + /google-auth-library@9.14.1: + resolution: {integrity: sha512-Rj+PMjoNFGFTmtItH7gHfbHpGVSb3vmnGK3nwNBqxQF9NoBpttSZI/rc0WiM63ma2uGDQtYEkMHkK9U6937NiA==} + engines: {node: '>=14'} dependencies: base64-js: 1.5.1 ecdsa-sig-formatter: 1.0.11 - gaxios: 6.2.0 + gaxios: 6.7.1 gcp-metadata: 6.1.0 gtoken: 7.1.0 jws: 4.0.0 transitivePeerDependencies: - encoding - supports-color + dev: false - gopd@1.0.1: + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 - graceful-fs@4.2.11: {} + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - graphemer@1.4.0: {} + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true - gtoken@7.1.0: + /gtoken@7.1.0: + resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} + engines: {node: '>=14.0.0'} dependencies: - gaxios: 6.2.0 + gaxios: 6.7.1 jws: 4.0.0 transitivePeerDependencies: - encoding - supports-color + dev: false - has-bigints@1.0.2: {} + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true - has-flag@3.0.0: {} + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: false - has-flag@4.0.0: {} + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} - has-property-descriptors@1.0.2: + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} dependencies: es-define-property: 1.0.0 - has-proto@1.0.1: {} - - has-proto@1.0.3: {} + /has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} - has-symbols@1.0.3: {} + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} - has-tostringtag@1.0.2: + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 + dev: true - hasown@2.0.0: - dependencies: - function-bind: 1.1.2 - - hasown@2.0.2: + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 - hast-util-from-html@2.0.1: + /hast-util-from-html@2.0.3: + resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==} dependencies: - '@types/hast': 3.0.0 + '@types/hast': 3.0.4 devlop: 1.1.0 hast-util-from-parse5: 8.0.1 parse5: 7.1.2 - vfile: 6.0.1 + vfile: 6.0.3 vfile-message: 4.0.2 + dev: false - hast-util-from-parse5@7.1.2: - dependencies: - '@types/hast': 2.3.5 - '@types/unist': 2.0.8 - hastscript: 7.2.0 - property-information: 6.2.0 - vfile: 5.3.7 - vfile-location: 4.1.0 - web-namespaces: 2.0.1 - - hast-util-from-parse5@8.0.1: + /hast-util-from-parse5@8.0.1: + resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} dependencies: - '@types/hast': 3.0.0 - '@types/unist': 3.0.0 + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 devlop: 1.1.0 hastscript: 8.0.0 - property-information: 6.2.0 - vfile: 6.0.1 - vfile-location: 5.0.2 + property-information: 6.5.0 + vfile: 6.0.3 + vfile-location: 5.0.3 web-namespaces: 2.0.1 + dev: false - hast-util-has-property@3.0.0: + /hast-util-has-property@3.0.0: + resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} dependencies: - '@types/hast': 3.0.0 + '@types/hast': 3.0.4 + dev: false - hast-util-heading-rank@3.0.0: + /hast-util-heading-rank@3.0.0: + resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} dependencies: - '@types/hast': 3.0.0 + '@types/hast': 3.0.4 + dev: false - hast-util-is-element@3.0.0: + /hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} dependencies: - '@types/hast': 3.0.0 + '@types/hast': 3.0.4 + dev: false - hast-util-parse-selector@3.1.1: + /hast-util-parse-selector@3.1.1: + resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} dependencies: - '@types/hast': 2.3.5 + '@types/hast': 2.3.10 + dev: false - hast-util-parse-selector@4.0.0: + /hast-util-parse-selector@4.0.0: + resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} dependencies: - '@types/hast': 3.0.0 + '@types/hast': 3.0.4 + dev: false - hast-util-raw@9.0.1: + /hast-util-raw@9.0.4: + resolution: {integrity: sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA==} dependencies: - '@types/hast': 3.0.0 - '@types/unist': 3.0.0 + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 '@ungap/structured-clone': 1.2.0 hast-util-from-parse5: 8.0.1 hast-util-to-parse5: 8.0.0 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.0.2 + mdast-util-to-hast: 13.2.0 parse5: 7.1.2 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 - vfile: 6.0.1 + vfile: 6.0.3 web-namespaces: 2.0.1 zwitch: 2.0.4 + dev: false - hast-util-sanitize@5.0.0: + /hast-util-sanitize@5.0.1: + resolution: {integrity: sha512-IGrgWLuip4O2nq5CugXy4GI2V8kx4sFVy5Hd4vF7AR2gxS0N9s7nEAVUyeMtZKZvzrxVsHt73XdTsno1tClIkQ==} dependencies: - '@types/hast': 3.0.0 + '@types/hast': 3.0.4 '@ungap/structured-clone': 1.2.0 unist-util-position: 5.0.0 + dev: false - hast-util-select@6.0.2: + /hast-util-select@6.0.2: + resolution: {integrity: sha512-hT/SD/d/Meu+iobvgkffo1QecV8WeKWxwsNMzcTJsKw1cKTQKSR/7ArJeURLNJF9HDjp9nVoORyNNJxrvBye8Q==} dependencies: - '@types/hast': 3.0.0 - '@types/unist': 3.0.0 + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 bcp-47-match: 2.0.3 comma-separated-tokens: 2.0.3 - css-selector-parser: 3.0.4 + css-selector-parser: 3.0.5 devlop: 1.1.0 direction: 2.0.1 hast-util-has-property: 3.0.0 @@ -7394,503 +4945,852 @@ snapshots: hast-util-whitespace: 3.0.0 not: 0.1.0 nth-check: 2.1.1 - property-information: 6.2.0 + property-information: 6.5.0 space-separated-tokens: 2.0.2 unist-util-visit: 5.0.0 zwitch: 2.0.4 + dev: false - hast-util-to-html@9.0.0: + /hast-util-to-html@9.0.3: + resolution: {integrity: sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==} dependencies: - '@types/hast': 3.0.0 - '@types/unist': 3.0.0 + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 ccount: 2.0.1 comma-separated-tokens: 2.0.3 - hast-util-raw: 9.0.1 hast-util-whitespace: 3.0.0 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.0.2 - property-information: 6.2.0 + mdast-util-to-hast: 13.2.0 + property-information: 6.5.0 space-separated-tokens: 2.0.2 - stringify-entities: 4.0.3 + stringify-entities: 4.0.4 zwitch: 2.0.4 + dev: false - hast-util-to-jsx-runtime@2.3.0: + /hast-util-to-jsx-runtime@2.3.0: + resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} dependencies: - '@types/estree': 1.0.5 - '@types/hast': 3.0.0 - '@types/unist': 3.0.0 + '@types/estree': 1.0.6 + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 comma-separated-tokens: 2.0.3 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.0 - mdast-util-mdx-jsx: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.1.3 mdast-util-mdxjs-esm: 2.0.1 - property-information: 6.2.0 + property-information: 6.5.0 space-separated-tokens: 2.0.2 - style-to-object: 1.0.5 + style-to-object: 1.0.8 unist-util-position: 5.0.0 vfile-message: 4.0.2 transitivePeerDependencies: - supports-color + dev: false - hast-util-to-parse5@8.0.0: + /hast-util-to-parse5@8.0.0: + resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} dependencies: - '@types/hast': 3.0.0 + '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 devlop: 1.1.0 - property-information: 6.2.0 + property-information: 6.5.0 space-separated-tokens: 2.0.2 web-namespaces: 2.0.1 zwitch: 2.0.4 + dev: false - hast-util-to-string@2.0.0: - dependencies: - '@types/hast': 2.3.5 - - hast-util-to-string@3.0.0: + /hast-util-to-string@3.0.0: + resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} dependencies: - '@types/hast': 3.0.0 + '@types/hast': 3.0.4 + dev: false - hast-util-whitespace@3.0.0: + /hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} dependencies: - '@types/hast': 3.0.0 + '@types/hast': 3.0.4 + dev: false - hastscript@7.2.0: + /hastscript@7.2.0: + resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} dependencies: - '@types/hast': 2.3.5 + '@types/hast': 2.3.10 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 3.1.1 - property-information: 6.2.0 + property-information: 6.5.0 space-separated-tokens: 2.0.2 + dev: false - hastscript@8.0.0: + /hastscript@8.0.0: + resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} dependencies: - '@types/hast': 3.0.0 + '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 4.0.0 - property-information: 6.2.0 + property-information: 6.5.0 space-separated-tokens: 2.0.2 + dev: false - hexoid@1.0.0: {} + /hexoid@1.0.0: + resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==} + engines: {node: '>=8'} + dev: false - hoist-non-react-statics@3.3.2: + /hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} dependencies: react-is: 16.13.1 + dev: false - html-to-text@9.0.5: + /html-entities@2.5.2: + resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==} + dev: false + + /html-to-text@9.0.5: + resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} + engines: {node: '>=14'} dependencies: '@selderee/plugin-htmlparser2': 0.11.0 deepmerge: 4.3.1 dom-serializer: 2.0.0 htmlparser2: 8.0.2 selderee: 0.11.0 + dev: false - html-url-attributes@3.0.0: {} + /html-url-attributes@3.0.0: + resolution: {integrity: sha512-/sXbVCWayk6GDVg3ctOX6nxaVj7So40FcFAnWlWGNAB1LpYKcV5Cd10APjPjW80O7zYW2MsjBV4zZ7IZO5fVow==} + dev: false - html-void-elements@3.0.0: {} + /html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + dev: false - htmlparser2@8.0.2: + /htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 domutils: 3.1.0 entities: 4.5.0 + dev: false - http-proxy-agent@5.0.0: + /http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.7 transitivePeerDependencies: - supports-color + dev: false - https-proxy-agent@5.0.1: + /https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.7 transitivePeerDependencies: - supports-color + dev: false - https-proxy-agent@7.0.2: + /https-proxy-agent@7.0.5: + resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} + engines: {node: '>= 14'} dependencies: - agent-base: 7.1.0 - debug: 4.3.4 + agent-base: 7.1.1 + debug: 4.3.7 transitivePeerDependencies: - supports-color + dev: false - human-signals@5.0.0: {} + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + dev: true - husky@9.0.11: {} + /husky@9.1.6: + resolution: {integrity: sha512-sqbjZKK7kf44hfdE94EoX8MZNk0n7HeW37O4YrVGCF4wzgQjp+akPAkfUK5LZ6KuR/6sqeAVuXHji+RzQgOn5A==} + engines: {node: '>=18'} + hasBin: true + dev: true - ignore@5.2.4: {} + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: false - ignore@5.3.1: {} + /ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + dev: true - immediate@3.0.6: {} + /immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + dev: false - import-fresh@3.3.0: + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 + dev: true - imurmurhash@0.1.4: {} + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true - inflight@1.0.6: + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. dependencies: once: 1.4.0 wrappy: 1.0.2 + dev: false - inherits@2.0.4: {} + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: false - ini@1.3.8: {} + /ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: false - inline-style-parser@0.2.2: {} + /inline-style-parser@0.2.4: + resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} + dev: false - internal-slot@1.0.7: + /internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 hasown: 2.0.2 side-channel: 1.0.6 + dev: true - invariant@2.2.4: + /invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} dependencies: loose-envify: 1.4.0 + dev: false - is-alphabetical@2.0.1: {} + /is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + dev: false - is-alphanumerical@2.0.1: + /is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} dependencies: is-alphabetical: 2.0.1 is-decimal: 2.0.1 + dev: false - is-arguments@1.1.1: + /is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 has-tostringtag: 1.0.2 + dev: true - is-array-buffer@3.0.4: + /is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 + dev: true - is-async-function@2.0.0: + /is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.2 + dev: true - is-bigint@1.0.4: + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 + dev: true - is-binary-path@2.1.0: + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} dependencies: - binary-extensions: 2.2.0 + binary-extensions: 2.3.0 - is-boolean-object@1.1.2: + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 has-tostringtag: 1.0.2 + dev: true - is-buffer@2.0.5: {} - - is-bun-module@1.1.0: + /is-bun-module@1.2.1: + resolution: {integrity: sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==} dependencies: semver: 7.6.3 + dev: true - is-callable@1.2.7: {} - - is-core-module@2.13.1: - dependencies: - hasown: 2.0.0 + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: true - is-core-module@2.15.1: + /is-core-module@2.15.1: + resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} + engines: {node: '>= 0.4'} dependencies: hasown: 2.0.2 - is-data-view@1.0.1: + /is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} dependencies: is-typed-array: 1.1.13 + dev: true - is-date-object@1.0.5: + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.2 + dev: true - is-decimal@2.0.1: {} + /is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + dev: false - is-extglob@2.1.1: {} + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} - is-finalizationregistry@1.0.2: + /is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} dependencies: call-bind: 1.0.7 + dev: true + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} - is-fullwidth-code-point@3.0.0: {} + /is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + dev: true - is-fullwidth-code-point@4.0.0: {} + /is-fullwidth-code-point@5.0.0: + resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} + engines: {node: '>=18'} + dependencies: + get-east-asian-width: 1.2.0 + dev: true - is-generator-function@1.0.10: + /is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.2 + dev: true - is-glob@4.0.3: + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - is-hexadecimal@2.0.1: {} + /is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + dev: false + + /is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + dev: false - is-map@2.0.2: {} + /is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + dev: true - is-negative-zero@2.0.3: {} + /is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + dev: true - is-number-object@1.0.7: + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.2 + dev: true - is-number@7.0.0: {} + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} - is-path-inside@3.0.3: {} + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true - is-plain-obj@4.1.0: {} + /is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + dev: false - is-reference@1.2.1: + /is-reference@1.2.1: + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 + dev: false - is-regex@1.1.4: + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 has-tostringtag: 1.0.2 + dev: true - is-set@2.0.2: {} + /is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + dev: true - is-shared-array-buffer@1.0.3: + /is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 + dev: true - is-stream@2.0.1: {} + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: false - is-stream@3.0.0: {} + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true - is-string@1.0.7: + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.2 + dev: true - is-symbol@1.0.4: + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 + dev: true - is-typed-array@1.1.13: + /is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} dependencies: which-typed-array: 1.1.15 + dev: true + + /is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + dev: false - is-weakmap@2.0.1: {} + /is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + dev: true - is-weakref@1.0.2: + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.7 + dev: true - is-weakset@2.0.2: + /is-weakset@2.0.3: + resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 + dev: true - isarray@2.0.5: {} + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true - isexe@2.0.0: {} + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - iterator.prototype@1.1.2: + /iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} dependencies: define-properties: 1.2.1 get-intrinsic: 1.2.4 has-symbols: 1.0.3 - reflect.getprototypeof: 1.0.4 + reflect.getprototypeof: 1.0.6 set-function-name: 2.0.2 + dev: true + + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 - jackspeak@2.3.6: + /jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jest-worker@27.5.1: + /jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 22.5.4 + '@types/node': 22.5.5 merge-stream: 2.0.0 supports-color: 8.1.1 + dev: false - jiti@1.19.3: {} + /jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + hasBin: true - jose@4.15.5: {} + /jose@4.15.9: + resolution: {integrity: sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==} + dev: false - jotai@2.6.4(@types/react@18.0.27)(react@18.2.0): - optionalDependencies: - '@types/react': 18.0.27 + /jotai@2.10.0(@types/react@18.3.8)(react@18.2.0): + resolution: {integrity: sha512-8W4u0aRlOIwGlLQ0sqfl/c6+eExl5D8lZgAUolirZLktyaj4WnxO/8a0HEPmtriQAB6X5LMhXzZVmw02X0P0qQ==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=17.0.0' + react: '>=17.0.0' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + dependencies: + '@types/react': 18.3.8 react: 18.2.0 + dev: false - js-beautify@1.14.11: + /js-beautify@1.15.1: + resolution: {integrity: sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==} + engines: {node: '>=14'} + hasBin: true dependencies: config-chain: 1.1.13 editorconfig: 1.0.4 - glob: 10.3.10 - nopt: 7.2.0 + glob: 10.4.5 + js-cookie: 3.0.5 + nopt: 7.2.1 + dev: false + + /js-cookie@3.0.5: + resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} + engines: {node: '>=14'} + dev: false - js-tokens@4.0.0: {} + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@4.1.0: + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true dependencies: argparse: 2.0.1 + dev: true - jsesc@2.5.2: {} + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: false - json-bigint@1.0.0: + /json-bigint@1.0.0: + resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} dependencies: bignumber.js: 9.1.2 + dev: false - json-buffer@3.0.1: {} + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true - json-parse-even-better-errors@2.3.1: {} + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: false - json-schema-traverse@0.4.1: {} + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - json-schema-traverse@1.0.0: {} + /json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: false - json-stable-stringify-without-jsonify@1.0.1: {} + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true - json5@1.0.2: + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true dependencies: minimist: 1.2.8 + dev: true - json5@2.2.3: {} + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: false - jsx-ast-utils@3.3.5: + /jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} dependencies: array-includes: 3.1.8 array.prototype.flat: 1.3.2 object.assign: 4.1.5 object.values: 1.2.0 + dev: true - jwa@2.0.0: + /jwa@2.0.0: + resolution: {integrity: sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==} dependencies: buffer-equal-constant-time: 1.0.1 ecdsa-sig-formatter: 1.0.11 safe-buffer: 5.2.1 + dev: false - jws@4.0.0: + /jws@4.0.0: + resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} dependencies: jwa: 2.0.0 safe-buffer: 5.2.1 + dev: false - keyv@4.5.4: + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} dependencies: json-buffer: 3.0.1 + dev: true - language-subtag-registry@0.3.23: {} + /language-subtag-registry@0.3.23: + resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} + dev: true - language-tags@1.0.9: + /language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} dependencies: language-subtag-registry: 0.3.23 + dev: true - leac@0.6.0: {} + /leac@0.6.0: + resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} + dev: false - levn@0.4.1: + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 + dev: true - lie@3.1.1: + /lie@3.1.1: + resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} dependencies: immediate: 3.0.6 + dev: false + + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} - lilconfig@2.1.0: {} + /lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + engines: {node: '>=14'} - lines-and-columns@1.2.4: {} + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - lint-staged@15.0.2: + /lint-staged@15.2.10: + resolution: {integrity: sha512-5dY5t743e1byO19P9I4b3x8HJwalIznL5E1FWYnU6OWw33KxNBSLAc6Cy7F2PsFEO8FKnLwjwm5hx7aMF0jzZg==} + engines: {node: '>=18.12.0'} + hasBin: true dependencies: chalk: 5.3.0 - commander: 11.1.0 - debug: 4.3.4 + commander: 12.1.0 + debug: 4.3.7 execa: 8.0.1 - lilconfig: 2.1.0 - listr2: 7.0.2 - micromatch: 4.0.5 + lilconfig: 3.1.2 + listr2: 8.2.4 + micromatch: 4.0.8 pidtree: 0.6.0 string-argv: 0.3.2 - yaml: 2.3.3 + yaml: 2.5.1 transitivePeerDependencies: - supports-color + dev: true - listr2@7.0.2: + /listr2@8.2.4: + resolution: {integrity: sha512-opevsywziHd3zHCVQGAj8zu+Z3yHNkkoYhWIGnq54RrCVwLz0MozotJEDnKsIBLvkfLGN6BLOyAeRrYI0pKA4g==} + engines: {node: '>=18.0.0'} dependencies: - cli-truncate: 3.1.0 + cli-truncate: 4.0.0 colorette: 2.0.20 eventemitter3: 5.0.1 - log-update: 5.0.1 - rfdc: 1.3.0 - wrap-ansi: 8.1.0 + log-update: 6.1.0 + rfdc: 1.4.1 + wrap-ansi: 9.0.0 + dev: true - loader-runner@4.3.0: {} + /loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + dev: false - localforage@1.10.0: + /localforage@1.10.0: + resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} dependencies: lie: 3.1.1 + dev: false - locate-path@6.0.0: + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} dependencies: p-locate: 5.0.0 + dev: true - locate-path@7.2.0: + /locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: p-locate: 6.0.0 + dev: false - lodash.merge@4.6.2: {} + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true - log-update@5.0.1: + /log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} dependencies: - ansi-escapes: 5.0.0 - cli-cursor: 4.0.0 - slice-ansi: 5.0.0 + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: false + + /log-update@6.1.0: + resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} + engines: {node: '>=18'} + dependencies: + ansi-escapes: 7.0.0 + cli-cursor: 5.0.0 + slice-ansi: 7.1.0 strip-ansi: 7.1.0 - wrap-ansi: 8.1.0 + wrap-ansi: 9.0.0 + dev: true - longest-streak@3.1.0: {} + /longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + dev: false - loose-envify@1.4.0: + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true dependencies: js-tokens: 4.0.0 - lru-cache@10.2.0: {} + /lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@5.1.1: + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: yallist: 3.1.1 + dev: false - lru-cache@6.0.0: + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} dependencies: yallist: 4.0.0 + dev: false - lucide-react@0.438.0(react@18.2.0): + /lucide-react@0.438.0(react@18.2.0): + resolution: {integrity: sha512-uq6yCB+IzVfgIPMK8ibkecXSWTTSOMs9UjUgZigfrDCVqgdwkpIgYg1fSYnf0XXF2AoSyCJZhoZXQwzoai7VGw==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc dependencies: react: 18.2.0 + dev: false - magic-string@0.27.0: + /magic-string@0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 + dev: false + + /make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - make-error@1.3.6: {} + /markdown-table@3.0.3: + resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} + dev: false + + /marked@7.0.4: + resolution: {integrity: sha512-t8eP0dXRJMtMvBojtkcsA7n48BkauktUKzfkPSCq85ZMTJ0v76Rke4DYz01omYpPTUh4p/f7HePgRo3ebG8+QQ==} + engines: {node: '>= 16'} + hasBin: true + dev: false - markdown-table@3.0.3: {} + /md-to-react-email@5.0.2(react@18.2.0): + resolution: {integrity: sha512-x6kkpdzIzUhecda/yahltfEl53mH26QdWu4abUF9+S0Jgam8P//Ciro8cdhyMHnT5MQUJYrIbO6ORM2UxPiNNA==} + peerDependencies: + react: 18.x + dependencies: + marked: 7.0.4 + react: 18.2.0 + dev: false - mdast-util-find-and-replace@3.0.1: + /mdast-util-find-and-replace@3.0.1: + resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 escape-string-regexp: 5.0.0 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 + dev: false - mdast-util-from-markdown@2.0.0: + /mdast-util-from-markdown@2.0.1: + resolution: {integrity: sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==} dependencies: - '@types/mdast': 4.0.3 - '@types/unist': 3.0.0 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 decode-named-character-reference: 1.0.2 devlop: 1.1.0 mdast-util-to-string: 4.0.0 @@ -7903,56 +5803,68 @@ snapshots: unist-util-stringify-position: 4.0.0 transitivePeerDependencies: - supports-color + dev: false - mdast-util-gfm-autolink-literal@2.0.0: + /mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 ccount: 2.0.1 devlop: 1.1.0 mdast-util-find-and-replace: 3.0.1 - micromark-util-character: 2.0.1 + micromark-util-character: 2.1.0 + dev: false - mdast-util-gfm-footnote@2.0.0: + /mdast-util-gfm-footnote@2.0.0: + resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 micromark-util-normalize-identifier: 2.0.0 transitivePeerDependencies: - supports-color + dev: false - mdast-util-gfm-strikethrough@2.0.0: + /mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} dependencies: - '@types/mdast': 4.0.3 - mdast-util-from-markdown: 2.0.0 + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color + dev: false - mdast-util-gfm-table@2.0.0: + /mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 devlop: 1.1.0 markdown-table: 3.0.3 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color + dev: false - mdast-util-gfm-task-list-item@2.0.0: + /mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color + dev: false - mdast-util-gfm@3.0.0: + /mdast-util-gfm@3.0.0: + resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} dependencies: - mdast-util-from-markdown: 2.0.0 - mdast-util-gfm-autolink-literal: 2.0.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-gfm-autolink-literal: 2.0.1 mdast-util-gfm-footnote: 2.0.0 mdast-util-gfm-strikethrough: 2.0.0 mdast-util-gfm-table: 2.0.0 @@ -7960,83 +5872,102 @@ snapshots: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color + dev: false - mdast-util-mdx-expression@2.0.0: + /mdast-util-mdx-expression@2.0.1: + resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} dependencies: - '@types/estree-jsx': 1.0.3 - '@types/hast': 3.0.0 - '@types/mdast': 4.0.3 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color + dev: false - mdast-util-mdx-jsx@3.0.0: + /mdast-util-mdx-jsx@3.1.3: + resolution: {integrity: sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==} dependencies: - '@types/estree-jsx': 1.0.3 - '@types/hast': 3.0.0 - '@types/mdast': 4.0.3 - '@types/unist': 3.0.0 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 ccount: 2.0.1 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 parse-entities: 4.0.1 - stringify-entities: 4.0.3 - unist-util-remove-position: 5.0.0 + stringify-entities: 4.0.4 unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 transitivePeerDependencies: - supports-color + dev: false - mdast-util-mdxjs-esm@2.0.1: + /mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} dependencies: - '@types/estree-jsx': 1.0.3 - '@types/hast': 3.0.0 - '@types/mdast': 4.0.3 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color + dev: false - mdast-util-phrasing@4.0.0: + /mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 unist-util-is: 6.0.0 + dev: false - mdast-util-to-hast@13.0.2: + /mdast-util-to-hast@13.2.0: + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} dependencies: - '@types/hast': 3.0.0 - '@types/mdast': 4.0.3 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 '@ungap/structured-clone': 1.2.0 devlop: 1.1.0 micromark-util-sanitize-uri: 2.0.0 trim-lines: 3.0.1 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 + vfile: 6.0.3 + dev: false - mdast-util-to-markdown@2.1.0: + /mdast-util-to-markdown@2.1.0: + resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} dependencies: - '@types/mdast': 4.0.3 - '@types/unist': 3.0.0 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 longest-streak: 3.1.0 - mdast-util-phrasing: 4.0.0 + mdast-util-phrasing: 4.1.0 mdast-util-to-string: 4.0.0 micromark-util-decode-string: 2.0.0 unist-util-visit: 5.0.0 zwitch: 2.0.4 + dev: false - mdast-util-to-string@4.0.0: + /mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 + dev: false - merge-stream@2.0.0: {} + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - merge2@1.4.1: {} + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} - micromark-core-commonmark@2.0.0: + /micromark-core-commonmark@2.0.1: + resolution: {integrity: sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==} dependencies: decode-named-character-reference: 1.0.2 devlop: 1.1.0 @@ -8045,35 +5976,41 @@ snapshots: micromark-factory-space: 2.0.0 micromark-factory-title: 2.0.0 micromark-factory-whitespace: 2.0.0 - micromark-util-character: 2.0.1 + micromark-util-character: 2.1.0 micromark-util-chunked: 2.0.0 micromark-util-classify-character: 2.0.0 micromark-util-html-tag-name: 2.0.0 micromark-util-normalize-identifier: 2.0.0 micromark-util-resolve-all: 2.0.0 - micromark-util-subtokenize: 2.0.0 + micromark-util-subtokenize: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-extension-gfm-autolink-literal@2.0.0: + /micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} dependencies: - micromark-util-character: 2.0.1 + micromark-util-character: 2.1.0 micromark-util-sanitize-uri: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-extension-gfm-footnote@2.0.0: + /micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} dependencies: devlop: 1.1.0 - micromark-core-commonmark: 2.0.0 + micromark-core-commonmark: 2.0.1 micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 + micromark-util-character: 2.1.0 micromark-util-normalize-identifier: 2.0.0 micromark-util-sanitize-uri: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-extension-gfm-strikethrough@2.0.0: + /micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} dependencies: devlop: 1.1.0 micromark-util-chunked: 2.0.0 @@ -8081,139 +6018,187 @@ snapshots: micromark-util-resolve-all: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-extension-gfm-table@2.0.0: + /micromark-extension-gfm-table@2.1.0: + resolution: {integrity: sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==} dependencies: devlop: 1.1.0 micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 + micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-extension-gfm-tagfilter@2.0.0: + /micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} dependencies: micromark-util-types: 2.0.0 + dev: false - micromark-extension-gfm-task-list-item@2.0.1: + /micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} dependencies: devlop: 1.1.0 micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 + micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-extension-gfm@3.0.0: + /micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} dependencies: - micromark-extension-gfm-autolink-literal: 2.0.0 - micromark-extension-gfm-footnote: 2.0.0 - micromark-extension-gfm-strikethrough: 2.0.0 - micromark-extension-gfm-table: 2.0.0 + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.0 micromark-extension-gfm-tagfilter: 2.0.0 - micromark-extension-gfm-task-list-item: 2.0.1 + micromark-extension-gfm-task-list-item: 2.1.0 micromark-util-combine-extensions: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-factory-destination@2.0.0: + /micromark-factory-destination@2.0.0: + resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} dependencies: - micromark-util-character: 2.0.1 + micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-factory-label@2.0.0: + /micromark-factory-label@2.0.0: + resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} dependencies: devlop: 1.1.0 - micromark-util-character: 2.0.1 + micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-factory-space@2.0.0: + /micromark-factory-space@2.0.0: + resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} dependencies: - micromark-util-character: 2.0.1 + micromark-util-character: 2.1.0 micromark-util-types: 2.0.0 + dev: false - micromark-factory-title@2.0.0: + /micromark-factory-title@2.0.0: + resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} dependencies: micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 + micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-factory-whitespace@2.0.0: + /micromark-factory-whitespace@2.0.0: + resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} dependencies: micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 + micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-util-character@2.0.1: + /micromark-util-character@2.1.0: + resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} dependencies: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-util-chunked@2.0.0: + /micromark-util-chunked@2.0.0: + resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} dependencies: micromark-util-symbol: 2.0.0 + dev: false - micromark-util-classify-character@2.0.0: + /micromark-util-classify-character@2.0.0: + resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} dependencies: - micromark-util-character: 2.0.1 + micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-util-combine-extensions@2.0.0: + /micromark-util-combine-extensions@2.0.0: + resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} dependencies: micromark-util-chunked: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-util-decode-numeric-character-reference@2.0.1: + /micromark-util-decode-numeric-character-reference@2.0.1: + resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} dependencies: micromark-util-symbol: 2.0.0 + dev: false - micromark-util-decode-string@2.0.0: + /micromark-util-decode-string@2.0.0: + resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} dependencies: decode-named-character-reference: 1.0.2 - micromark-util-character: 2.0.1 + micromark-util-character: 2.1.0 micromark-util-decode-numeric-character-reference: 2.0.1 micromark-util-symbol: 2.0.0 + dev: false - micromark-util-encode@2.0.0: {} + /micromark-util-encode@2.0.0: + resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} + dev: false - micromark-util-html-tag-name@2.0.0: {} + /micromark-util-html-tag-name@2.0.0: + resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} + dev: false - micromark-util-normalize-identifier@2.0.0: + /micromark-util-normalize-identifier@2.0.0: + resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} dependencies: micromark-util-symbol: 2.0.0 + dev: false - micromark-util-resolve-all@2.0.0: + /micromark-util-resolve-all@2.0.0: + resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} dependencies: micromark-util-types: 2.0.0 + dev: false - micromark-util-sanitize-uri@2.0.0: + /micromark-util-sanitize-uri@2.0.0: + resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} dependencies: - micromark-util-character: 2.0.1 + micromark-util-character: 2.1.0 micromark-util-encode: 2.0.0 micromark-util-symbol: 2.0.0 + dev: false - micromark-util-subtokenize@2.0.0: + /micromark-util-subtokenize@2.0.1: + resolution: {integrity: sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==} dependencies: devlop: 1.1.0 micromark-util-chunked: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + dev: false - micromark-util-symbol@2.0.0: {} + /micromark-util-symbol@2.0.0: + resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} + dev: false - micromark-util-types@2.0.0: {} + /micromark-util-types@2.0.0: + resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} + dev: false - micromark@4.0.0: + /micromark@4.0.0: + resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} dependencies: - '@types/debug': 4.1.8 - debug: 4.3.4 + '@types/debug': 4.1.12 + debug: 4.3.7 decode-named-character-reference: 1.0.2 devlop: 1.1.0 - micromark-core-commonmark: 2.0.0 + micromark-core-commonmark: 2.0.1 micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 + micromark-util-character: 2.1.0 micromark-util-chunked: 2.0.0 micromark-util-combine-extensions: 2.0.0 micromark-util-decode-numeric-character-reference: 2.0.1 @@ -8221,146 +6206,265 @@ snapshots: micromark-util-normalize-identifier: 2.0.0 micromark-util-resolve-all: 2.0.0 micromark-util-sanitize-uri: 2.0.0 - micromark-util-subtokenize: 2.0.0 + micromark-util-subtokenize: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 transitivePeerDependencies: - supports-color + dev: false - micromatch@4.0.5: + /micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} dependencies: - braces: 3.0.2 + braces: 3.0.3 picomatch: 2.3.1 - mime-db@1.52.0: {} + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: false - mime-types@2.1.35: + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 + dev: false + + /mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + dev: false - mime@3.0.0: {} + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: false - mimic-fn@2.1.0: {} + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true - mimic-fn@4.0.0: {} + /mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + dev: true - minimatch@3.1.2: + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 + dev: true - minimatch@5.1.6: - dependencies: - brace-expansion: 2.0.1 - - minimatch@9.0.1: + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 + dev: false - minimatch@9.0.3: + /minimatch@9.0.1: + resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 + dev: false - minimatch@9.0.4: + /minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 - minimist@1.2.8: {} + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass@7.0.4: {} + /minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} - mkdirp@0.5.6: + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true dependencies: minimist: 1.2.8 + dev: false - ms@2.1.2: {} + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - mz@2.7.0: + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} dependencies: any-promise: 1.3.0 object-assign: 4.1.1 thenify-all: 1.6.0 - nanoid@3.3.6: {} + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true - nanoid@3.3.7: {} + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true - natural-compare@1.4.0: {} + /negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + dev: false - neo-async@2.6.2: {} + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: false - next-auth@4.24.7(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + /next-auth@4.24.7(next@14.2.4)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-iChjE8ov/1K/z98gdKbn2Jw+2vLgJtVV39X+rCP5SGnVQuco7QOr19FRNGMIrD8d3LYhHWV9j9sKLzq1aDWWQQ==} + peerDependencies: + next: ^12.2.5 || ^13 || ^14 + nodemailer: ^6.6.5 + react: ^17.0.2 || ^18 + react-dom: ^17.0.2 || ^18 + peerDependenciesMeta: + nodemailer: + optional: true dependencies: - '@babel/runtime': 7.23.7 - '@panva/hkdf': 1.1.1 + '@babel/runtime': 7.25.6 + '@panva/hkdf': 1.2.1 cookie: 0.5.0 - jose: 4.15.5 - next: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + jose: 4.15.9 + next: 14.2.4(@babel/core@7.25.2)(@playwright/test@1.47.2)(react-dom@18.2.0)(react@18.2.0) oauth: 0.9.15 - openid-client: 5.6.5 - preact: 10.11.3 - preact-render-to-string: 5.2.3(preact@10.11.3) + openid-client: 5.7.0 + preact: 10.24.0 + preact-render-to-string: 5.2.6(preact@10.24.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) uuid: 8.3.2 - optionalDependencies: - nodemailer: 6.9.14 + dev: false - next-remove-imports@1.0.12(webpack@5.89.0): + /next-remove-imports@1.0.12(webpack@5.94.0): + resolution: {integrity: sha512-3tdL6VuSykJ/mcUwxfjQ+Fd4OpEmrwWVHtLZ/fhNcSaToWCutUp7nrfIww7/4CURe9I7BDCQE9AWl4fkY3YZOQ==} dependencies: - '@babel/core': 7.22.17 - babel-loader: 9.1.3(@babel/core@7.22.17)(webpack@5.89.0) - babel-plugin-transform-remove-imports: 1.7.0(@babel/core@7.22.17) + '@babel/core': 7.25.2 + babel-loader: 9.2.1(@babel/core@7.25.2)(webpack@5.94.0) + babel-plugin-transform-remove-imports: 1.8.0(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - webpack + dev: false - next-safe-action@7.0.2(@types/json-schema@7.0.15)(next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(zod@3.22.4): + /next-safe-action@7.9.3(next@14.2.4)(react-dom@18.2.0)(react@18.2.0)(zod@3.23.8): + resolution: {integrity: sha512-2GH7/iRiM5R/y6sIQZsNHGeRr/iKQJsg8ejP63WhTS7fXS9KzxVbEKrWwLNNhL33V9cn0448cPSI/aiSK/PUbA==} + engines: {node: '>=18.17'} + peerDependencies: + '@sinclair/typebox': '>= 0.33.3' + next: '>= 14.0.0' + react: '>= 18.2.0' + react-dom: '>= 18.2.0' + valibot: '>= 0.36.0' + yup: '>= 1.0.0' + zod: '>= 3.0.0' + peerDependenciesMeta: + '@sinclair/typebox': + optional: true + valibot: + optional: true + yup: + optional: true + zod: + optional: true dependencies: - '@typeschema/main': 0.13.10(@types/json-schema@7.0.15)(@typeschema/zod@0.13.3(@types/json-schema@7.0.15)(zod@3.22.4)) - '@typeschema/zod': 0.13.3(@types/json-schema@7.0.15)(zod@3.22.4) - next: 14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + next: 14.2.4(@babel/core@7.25.2)(@playwright/test@1.47.2)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - zod: 3.22.4 - transitivePeerDependencies: - - '@types/json-schema' - - '@typeschema/arktype' - - '@typeschema/class-validator' - - '@typeschema/deepkit' - - '@typeschema/effect' - - '@typeschema/fastest-validator' - - '@typeschema/function' - - '@typeschema/io-ts' - - '@typeschema/joi' - - '@typeschema/json' - - '@typeschema/ow' - - '@typeschema/runtypes' - - '@typeschema/superstruct' - - '@typeschema/suretype' - - '@typeschema/typebox' - - '@typeschema/valibot' - - '@typeschema/valita' - - '@typeschema/vine' - - '@typeschema/yup' - - zod-to-json-schema - - next-themes@0.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + zod: 3.23.8 + dev: false + + /next-themes@0.3.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-/QHIrsYpd6Kfk7xakK4svpDI5mmXP0gfvCoJdGpZQ2TOrQZmsW0QxjaiLn8wbIKjtm4BTSqLoix4lxYYOnLJ/w==} + peerDependencies: + react: ^16.8 || ^17 || ^18 + react-dom: ^16.8 || ^17 || ^18 + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /next@14.2.3(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-dowFkFTR8v79NPJO4QsBUtxv0g9BrS/phluVpMAt2ku7H+cbcBJlopXjkWlwxrk/xGqMemr7JkGPGemPrLLX7A==} + engines: {node: '>=18.17.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + sass: + optional: true dependencies: + '@next/env': 14.2.3 + '@playwright/test': 1.47.2 + '@swc/helpers': 0.5.5 + busboy: 1.6.0 + caniuse-lite: 1.0.30001663 + graceful-fs: 4.2.11 + postcss: 8.4.31 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.24.5)(react@18.2.0) + optionalDependencies: + '@next/swc-darwin-arm64': 14.2.3 + '@next/swc-darwin-x64': 14.2.3 + '@next/swc-linux-arm64-gnu': 14.2.3 + '@next/swc-linux-arm64-musl': 14.2.3 + '@next/swc-linux-x64-gnu': 14.2.3 + '@next/swc-linux-x64-musl': 14.2.3 + '@next/swc-win32-arm64-msvc': 14.2.3 + '@next/swc-win32-ia32-msvc': 14.2.3 + '@next/swc-win32-x64-msvc': 14.2.3 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + dev: false - next@14.2.4(@babel/core@7.22.17)(@playwright/test@1.45.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + /next@14.2.4(@babel/core@7.25.2)(@playwright/test@1.47.2)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-R8/V7vugY+822rsQGQCjoLhMuC9oFj9SOi4Cl4b2wjDrseD0LRZ10W7R6Czo4w9ZznVSshKjuIomsRjvm9EKJQ==} + engines: {node: '>=18.17.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + sass: + optional: true dependencies: '@next/env': 14.2.4 + '@playwright/test': 1.47.2 '@swc/helpers': 0.5.5 busboy: 1.6.0 - caniuse-lite: 1.0.30001587 + caniuse-lite: 1.0.30001663 graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(@babel/core@7.22.17)(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.25.2)(react@18.2.0) optionalDependencies: '@next/swc-darwin-arm64': 14.2.4 '@next/swc-darwin-x64': 14.2.4 @@ -8371,144 +6475,254 @@ snapshots: '@next/swc-win32-arm64-msvc': 14.2.4 '@next/swc-win32-ia32-msvc': 14.2.4 '@next/swc-win32-x64-msvc': 14.2.4 - '@playwright/test': 1.45.0 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros + dev: false - node-fetch@2.7.0: + /node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true dependencies: whatwg-url: 5.0.0 + dev: false - node-releases@2.0.13: {} + /node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} - node-releases@2.0.14: {} - - nodemailer@6.9.14: - optional: true - - nopt@7.2.0: + /nopt@7.2.1: + resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true dependencies: abbrev: 2.0.0 + dev: false - normalize-path@3.0.0: {} + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} - normalize-range@0.1.2: {} + /normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: true - not@0.1.0: {} + /not@0.1.0: + resolution: {integrity: sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==} + dev: false - npm-run-path@5.1.0: + /npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: path-key: 4.0.0 + dev: true - nth-check@2.1.1: + /nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} dependencies: boolbase: 1.0.0 + dev: false - oauth@0.9.15: {} + /oauth@0.9.15: + resolution: {integrity: sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==} + dev: false - object-assign@4.1.1: {} + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} - object-hash@2.2.0: {} + /object-hash@2.2.0: + resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} + engines: {node: '>= 6'} + dev: false - object-hash@3.0.0: {} + /object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} - object-inspect@1.13.1: {} + /object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} - object-is@1.1.6: + /object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 + dev: true - object-keys@1.1.1: {} + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true - object.assign@4.1.5: + /object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 + dev: true - object.entries@1.1.8: + /object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 + dev: true - object.fromentries@2.0.8: + /object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-object-atoms: 1.0.0 + dev: true - object.groupby@1.0.3: + /object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 + dev: true - object.values@1.2.0: + /object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 + dev: true - oidc-token-hash@5.0.3: {} + /oidc-token-hash@5.0.3: + resolution: {integrity: sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==} + engines: {node: ^10.13.0 || >=12.0.0} + dev: false - once@1.4.0: + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 + dev: false - onetime@5.1.2: + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 + dev: false - onetime@6.0.0: + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} dependencies: mimic-fn: 4.0.0 + dev: true + + /onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + dependencies: + mimic-function: 5.0.1 + dev: true - openid-client@5.6.5: + /openid-client@5.7.0: + resolution: {integrity: sha512-4GCCGZt1i2kTHpwvaC/sCpTpQqDnBzDzuJcJMbH+y1Q5qI8U8RBvoSh28svarXszZHR5BAMXbJPX1PGPRE3VOA==} dependencies: - jose: 4.15.5 + jose: 4.15.9 lru-cache: 6.0.0 object-hash: 2.2.0 oidc-token-hash: 5.0.3 + dev: false - optionator@0.9.3: + /optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 + word-wrap: 1.2.5 + dev: true + + /ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + dev: false - p-limit@3.1.0: + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 - p-limit@4.0.0: + /p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - yocto-queue: 1.0.0 + yocto-queue: 1.1.1 + dev: false - p-locate@5.0.0: + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} dependencies: p-limit: 3.1.0 + dev: true - p-locate@6.0.0: + /p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: p-limit: 4.0.0 + dev: false - papaparse@5.4.1: {} + /package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + + /papaparse@5.4.1: + resolution: {integrity: sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw==} + dev: false - parent-module@1.0.1: + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} dependencies: callsites: 3.1.0 + dev: true - parse-entities@4.0.1: + /parse-entities@4.0.1: + resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} dependencies: - '@types/unist': 2.0.8 + '@types/unist': 2.0.11 character-entities: 2.0.2 character-entities-legacy: 3.0.0 character-reference-invalid: 2.0.1 @@ -8516,340 +6730,600 @@ snapshots: is-alphanumerical: 2.0.1 is-decimal: 2.0.1 is-hexadecimal: 2.0.1 + dev: false - parse-numeric-range@1.3.0: {} - - parse5@6.0.1: {} + /parse-numeric-range@1.3.0: + resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} + dev: false - parse5@7.1.2: + /parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: entities: 4.5.0 + dev: false - parseley@0.12.1: + /parseley@0.12.1: + resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==} dependencies: leac: 0.6.0 peberminta: 0.9.0 + dev: false - path-exists@4.0.0: {} - - path-exists@5.0.0: {} + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true - path-is-absolute@1.0.1: {} + /path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false - path-key@3.1.1: {} + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} - path-key@4.0.0: {} + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true - path-parse@1.0.7: {} + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.10.1: + /path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} dependencies: - lru-cache: 10.2.0 - minipass: 7.0.4 - - path-type@4.0.0: {} + lru-cache: 10.4.3 + minipass: 7.1.2 - peberminta@0.9.0: {} + /peberminta@0.9.0: + resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} + dev: false - picocolors@1.0.0: {} + /picocolors@1.1.0: + resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} - picomatch@2.3.1: {} + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} - pidtree@0.6.0: {} + /pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + dev: true - pify@2.3.0: {} + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} - pirates@4.0.6: {} + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} - pkg-dir@7.0.0: + /pkg-dir@7.0.0: + resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} + engines: {node: '>=14.16'} dependencies: find-up: 6.3.0 + dev: false - playwright-core@1.45.0: {} + /playwright-core@1.47.2: + resolution: {integrity: sha512-3JvMfF+9LJfe16l7AbSmU555PaTl2tPyQsVInqm3id16pdDfvZ8TTZ/pyzmkbDrZTQefyzU7AIHlZqQnxpqHVQ==} + engines: {node: '>=18'} + hasBin: true - playwright@1.45.0: + /playwright@1.47.2: + resolution: {integrity: sha512-nx1cLMmQWqmA3UsnjaaokyoUpdVaaDhJhMoxX2qj3McpjnsqFHs516QAKYhqHAgOP+oCFTEOCOAaD1RgD/RQfA==} + engines: {node: '>=18'} + hasBin: true dependencies: - playwright-core: 1.45.0 + playwright-core: 1.47.2 optionalDependencies: fsevents: 2.3.2 - possible-typed-array-names@1.0.0: {} + /possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + dev: true - postcss-import@15.1.0(postcss@8.4.31): + /postcss-import@15.1.0(postcss@8.4.47): + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 dependencies: - postcss: 8.4.31 + postcss: 8.4.47 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - postcss-js@4.0.1(postcss@8.4.31): + /postcss-js@4.0.1(postcss@8.4.47): + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 dependencies: camelcase-css: 2.0.1 - postcss: 8.4.31 + postcss: 8.4.47 - postcss-load-config@4.0.1(postcss@8.4.31)(ts-node@10.9.1(@types/node@22.5.4)(typescript@5.5.4)): + /postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2): + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true dependencies: - lilconfig: 2.1.0 - yaml: 2.3.3 - optionalDependencies: - postcss: 8.4.31 - ts-node: 10.9.1(@types/node@22.5.4)(typescript@5.5.4) + lilconfig: 3.1.2 + postcss: 8.4.47 + ts-node: 10.9.2(@types/node@22.5.5)(typescript@5.6.2) + yaml: 2.5.1 - postcss-nested@6.0.1(postcss@8.4.31): + /postcss-nested@6.2.0(postcss@8.4.47): + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 dependencies: - postcss: 8.4.31 - postcss-selector-parser: 6.0.13 + postcss: 8.4.47 + postcss-selector-parser: 6.1.2 - postcss-selector-parser@6.0.13: + /postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-value-parser@4.2.0: {} + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.4.28: + /postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.3.6 - picocolors: 1.0.0 - source-map-js: 1.0.2 + nanoid: 3.3.7 + picocolors: 1.1.0 + source-map-js: 1.2.1 + dev: false - postcss@8.4.31: + /postcss@8.4.47: + resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.0.2 + picocolors: 1.1.0 + source-map-js: 1.2.1 - preact-render-to-string@5.2.3(preact@10.11.3): + /preact-render-to-string@5.2.6(preact@10.24.0): + resolution: {integrity: sha512-JyhErpYOvBV1hEPwIxc/fHWXPfnEGdRKxc8gFdAZ7XV4tlzyzG847XAyEZqoDnynP88akM4eaHcSOzNcLWFguw==} + peerDependencies: + preact: '>=10' dependencies: - preact: 10.11.3 + preact: 10.24.0 pretty-format: 3.8.0 + dev: false - preact@10.11.3: {} + /preact@10.24.0: + resolution: {integrity: sha512-aK8Cf+jkfyuZ0ZZRG9FbYqwmEiGQ4y/PUO4SuTWoyWL244nZZh7bd5h2APd4rSNDYTBNghg1L+5iJN3Skxtbsw==} + dev: false - prelude-ls@1.2.1: {} + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true - prettier-linter-helpers@1.0.0: + /prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} dependencies: fast-diff: 1.3.0 + dev: true - prettier-plugin-tailwindcss@0.6.6(prettier@3.2.5): + /prettier-plugin-tailwindcss@0.6.6(prettier@3.3.3): + resolution: {integrity: sha512-OPva5S7WAsPLEsOuOWXATi13QrCKACCiIonFgIR6V4lYv4QLp++UXVhZSzRbZxXGimkQtQT86CC6fQqTOybGng==} + engines: {node: '>=14.21.3'} + peerDependencies: + '@ianvs/prettier-plugin-sort-imports': '*' + '@prettier/plugin-pug': '*' + '@shopify/prettier-plugin-liquid': '*' + '@trivago/prettier-plugin-sort-imports': '*' + '@zackad/prettier-plugin-twig-melody': '*' + prettier: ^3.0 + prettier-plugin-astro: '*' + prettier-plugin-css-order: '*' + prettier-plugin-import-sort: '*' + prettier-plugin-jsdoc: '*' + prettier-plugin-marko: '*' + prettier-plugin-multiline-arrays: '*' + prettier-plugin-organize-attributes: '*' + prettier-plugin-organize-imports: '*' + prettier-plugin-sort-imports: '*' + prettier-plugin-style-order: '*' + prettier-plugin-svelte: '*' + peerDependenciesMeta: + '@ianvs/prettier-plugin-sort-imports': + optional: true + '@prettier/plugin-pug': + optional: true + '@shopify/prettier-plugin-liquid': + optional: true + '@trivago/prettier-plugin-sort-imports': + optional: true + '@zackad/prettier-plugin-twig-melody': + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-css-order: + optional: true + prettier-plugin-import-sort: + optional: true + prettier-plugin-jsdoc: + optional: true + prettier-plugin-marko: + optional: true + prettier-plugin-multiline-arrays: + optional: true + prettier-plugin-organize-attributes: + optional: true + prettier-plugin-organize-imports: + optional: true + prettier-plugin-sort-imports: + optional: true + prettier-plugin-style-order: + optional: true + prettier-plugin-svelte: + optional: true dependencies: - prettier: 3.2.5 + prettier: 3.3.3 + dev: true - prettier@3.2.5: {} + /prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + engines: {node: '>=14'} + hasBin: true + dev: true - pretty-format@3.8.0: {} + /pretty-format@3.8.0: + resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==} + dev: false - prisma@5.16.1: + /prisma@5.16.1: + resolution: {integrity: sha512-Z1Uqodk44diztImxALgJJfNl2Uisl9xDRvqybMKEBYJLNKNhDfAHf+ZIJbZyYiBhLMbKU9cYGdDVG5IIXEnL2Q==} + engines: {node: '>=16.13'} + hasBin: true + requiresBuild: true dependencies: '@prisma/engines': 5.16.1 - progress@2.0.3: {} + /prismjs@1.29.0: + resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} + engines: {node: '>=6'} + dev: false + + /progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + dev: false - prop-types@15.8.1: + /prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 - property-information@6.2.0: {} + /property-information@6.5.0: + resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + dev: false - proto-list@1.2.4: {} + /proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + dev: false - proxy-from-env@1.1.0: {} + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: false - punycode@2.3.0: {} + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} - qs@6.11.2: + /qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + engines: {node: '>=0.6'} dependencies: side-channel: 1.0.6 + dev: false - queue-microtask@1.2.3: {} + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - randombytes@2.1.0: + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: safe-buffer: 5.2.1 + dev: false - react-dom@18.2.0(react@18.2.0): + /react-dom@18.2.0(react@18.2.0): + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 dependencies: loose-envify: 1.4.0 react: 18.2.0 - scheduler: 0.23.0 + scheduler: 0.23.2 + dev: false - react-dropzone@14.2.3(react@18.2.0): + /react-dropzone@14.2.3(react@18.2.0): + resolution: {integrity: sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==} + engines: {node: '>= 10.13'} + peerDependencies: + react: '>= 16.8 || 18.0.0' dependencies: attr-accept: 2.2.2 file-selector: 0.6.0 prop-types: 15.8.1 react: 18.2.0 + dev: false + + /react-email@3.0.1(@playwright/test@1.47.2)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-G4Bkx2ULIScy/0Z8nnWywHt0W1iTkaYCdh9rWNuQ3eVZ6B3ttTUDE9uUy3VNQ8dtQbmG0cpt8+XmImw7mMBW6Q==} + engines: {node: '>=18.0.0'} + hasBin: true + dependencies: + '@babel/core': 7.24.5 + '@babel/parser': 7.24.5 + chalk: 4.1.2 + chokidar: 3.6.0 + commander: 11.1.0 + debounce: 2.0.0 + esbuild: 0.19.11 + glob: 10.3.4 + log-symbols: 4.1.0 + mime-types: 2.1.35 + next: 14.2.3(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@18.2.0)(react@18.2.0) + normalize-path: 3.0.0 + ora: 5.4.1 + socket.io: 4.7.5 + transitivePeerDependencies: + - '@opentelemetry/api' + - '@playwright/test' + - babel-plugin-macros + - bufferutil + - react + - react-dom + - sass + - supports-color + - utf-8-validate + dev: false - react-error-boundary@4.0.12(react@18.2.0): + /react-error-boundary@4.0.13(react@18.2.0): + resolution: {integrity: sha512-b6PwbdSv8XeOSYvjt8LpgpKrZ0yGdtZokYwkwV2wlcZbxgopHX/hgPl5VgpnoVOWd868n1hktM8Qm4b+02MiLQ==} + peerDependencies: + react: '>=16.13.1' dependencies: - '@babel/runtime': 7.23.7 + '@babel/runtime': 7.25.6 react: 18.2.0 + dev: false - react-hook-form@7.45.4(react@18.2.0): + /react-hook-form@7.53.0(react@18.2.0): + resolution: {integrity: sha512-M1n3HhqCww6S2hxLxciEXy2oISPnAzxY7gvwVPrtlczTM/1dDadXgUxDpHMrMTblDOcm/AXtXxHwZ3jpg1mqKQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^16.8.0 || ^17 || ^18 || ^19 dependencies: react: 18.2.0 + dev: false - react-is@16.13.1: {} + /react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - react-markdown@9.0.1(@types/react@18.0.27)(react@18.2.0): + /react-markdown@9.0.1(@types/react@18.3.8)(react@18.2.0): + resolution: {integrity: sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==} + peerDependencies: + '@types/react': '>=18' + react: '>=18' dependencies: - '@types/hast': 3.0.0 - '@types/react': 18.0.27 + '@types/hast': 3.0.4 + '@types/react': 18.3.8 devlop: 1.1.0 hast-util-to-jsx-runtime: 2.3.0 html-url-attributes: 3.0.0 - mdast-util-to-hast: 13.0.2 + mdast-util-to-hast: 13.2.0 react: 18.2.0 remark-parse: 11.0.0 - remark-rehype: 11.0.0 - unified: 11.0.4 + remark-rehype: 11.1.1 + unified: 11.0.5 unist-util-visit: 5.0.0 - vfile: 6.0.1 + vfile: 6.0.3 transitivePeerDependencies: - supports-color + dev: false - react-paginate@8.2.0(react@18.2.0): + /react-paginate@8.2.0(react@18.2.0): + resolution: {integrity: sha512-sJCz1PW+9PNIjUSn919nlcRVuleN2YPoFBOvL+6TPgrH/3lwphqiSOgdrLafLdyLDxsgK+oSgviqacF4hxsDIw==} + peerDependencies: + react: ^16 || ^17 || ^18 dependencies: prop-types: 15.8.1 react: 18.2.0 + dev: false - react-papaparse@4.4.0: + /react-papaparse@4.4.0: + resolution: {integrity: sha512-xTEwHZYJ+1dh9mQDQjjwJXmWyX20DdZ52u+ddw75V+Xm5qsjXSvWmC7c8K82vRwMjKAOH2S9uFyGpHEyEztkUQ==} + engines: {node: '>=8', npm: '>=5'} dependencies: '@types/papaparse': 5.3.14 papaparse: 5.4.1 + dev: false - react-promise-suspense@0.3.4: + /react-promise-suspense@0.3.4: + resolution: {integrity: sha512-I42jl7L3Ze6kZaq+7zXWSunBa3b1on5yfvUW6Eo/3fFOj6dZ5Bqmcd264nJbTK/gn1HjjILAjSwnZbV4RpSaNQ==} dependencies: fast-deep-equal: 2.0.1 + dev: false - react-remove-scroll-bar@2.3.4(@types/react@18.0.27)(react@18.2.0): - dependencies: - react: 18.2.0 - react-style-singleton: 2.2.1(@types/react@18.0.27)(react@18.2.0) - tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.0.27 - - react-remove-scroll@2.5.5(@types/react@18.0.27)(react@18.2.0): + /react-remove-scroll-bar@2.3.6(@types/react@18.3.8)(react@18.2.0): + resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@types/react': 18.3.8 react: 18.2.0 - react-remove-scroll-bar: 2.3.4(@types/react@18.0.27)(react@18.2.0) - react-style-singleton: 2.2.1(@types/react@18.0.27)(react@18.2.0) - tslib: 2.6.2 - use-callback-ref: 1.3.0(@types/react@18.0.27)(react@18.2.0) - use-sidecar: 1.1.2(@types/react@18.0.27)(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 + react-style-singleton: 2.2.1(@types/react@18.3.8)(react@18.2.0) + tslib: 2.7.0 + dev: false - react-remove-scroll@2.5.7(@types/react@18.0.27)(react@18.2.0): + /react-remove-scroll@2.5.7(@types/react@18.3.8)(react@18.2.0): + resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@types/react': 18.3.8 react: 18.2.0 - react-remove-scroll-bar: 2.3.4(@types/react@18.0.27)(react@18.2.0) - react-style-singleton: 2.2.1(@types/react@18.0.27)(react@18.2.0) - tslib: 2.6.2 - use-callback-ref: 1.3.0(@types/react@18.0.27)(react@18.2.0) - use-sidecar: 1.1.2(@types/react@18.0.27)(react@18.2.0) - optionalDependencies: - '@types/react': 18.0.27 + react-remove-scroll-bar: 2.3.6(@types/react@18.3.8)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.3.8)(react@18.2.0) + tslib: 2.7.0 + use-callback-ref: 1.3.2(@types/react@18.3.8)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.3.8)(react@18.2.0) + dev: false - react-style-singleton@2.2.1(@types/react@18.0.27)(react@18.2.0): + /react-style-singleton@2.2.1(@types/react@18.3.8)(react@18.2.0): + resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@types/react': 18.3.8 get-nonce: 1.0.1 invariant: 2.2.4 react: 18.2.0 - tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.0.27 + tslib: 2.7.0 + dev: false - react@18.2.0: + /react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 + dev: false - read-cache@1.0.0: + /read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} dependencies: pify: 2.3.0 - readable-stream@3.6.2: + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} dependencies: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 + dev: false - readdirp@3.6.0: + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 - reflect.getprototypeof@1.0.4: + /reflect.getprototypeof@1.0.6: + resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 + es-errors: 1.3.0 get-intrinsic: 1.2.4 - globalthis: 1.0.3 - which-builtin-type: 1.1.3 + globalthis: 1.0.4 + which-builtin-type: 1.1.4 + dev: true - refractor@4.8.1: + /refractor@4.8.1: + resolution: {integrity: sha512-/fk5sI0iTgFYlmVGYVew90AoYnNMP6pooClx/XKqyeeCQXrL0Kvgn8V0VEht5ccdljbzzF1i3Q213gcntkRExg==} dependencies: - '@types/hast': 2.3.5 - '@types/prismjs': 1.26.0 + '@types/hast': 2.3.10 + '@types/prismjs': 1.26.4 hastscript: 7.2.0 parse-entities: 4.0.1 + dev: false - regenerator-runtime@0.14.1: {} + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + dev: false - regexp.prototype.flags@1.5.2: + /regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-errors: 1.3.0 set-function-name: 2.0.2 + dev: true - rehype-attr@3.0.3: + /rehype-attr@3.0.3: + resolution: {integrity: sha512-Up50Xfra8tyxnkJdCzLBIBtxOcB2M1xdeKe1324U06RAvSjYm7ULSeoM+b/nYPQPVd7jsXJ9+39IG1WAJPXONw==} + engines: {node: '>=16'} dependencies: - unified: 11.0.4 + unified: 11.0.5 unist-util-visit: 5.0.0 + dev: false - rehype-autolink-headings@7.1.0: + /rehype-autolink-headings@7.1.0: + resolution: {integrity: sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw==} dependencies: - '@types/hast': 3.0.0 + '@types/hast': 3.0.4 '@ungap/structured-clone': 1.2.0 hast-util-heading-rank: 3.0.0 hast-util-is-element: 3.0.0 - unified: 11.0.4 + unified: 11.0.5 unist-util-visit: 5.0.0 + dev: false - rehype-ignore@2.0.2: + /rehype-ignore@2.0.2: + resolution: {integrity: sha512-BpAT/3lU9DMJ2siYVD/dSR0A/zQgD6Fb+fxkJd4j+wDVy6TYbYpK+FZqu8eM9EuNKGvi4BJR7XTZ/+zF02Dq8w==} + engines: {node: '>=16'} dependencies: hast-util-select: 6.0.2 - unified: 11.0.4 + unified: 11.0.5 unist-util-visit: 5.0.0 + dev: false - rehype-parse@8.0.5: - dependencies: - '@types/hast': 2.3.5 - hast-util-from-parse5: 7.1.2 - parse5: 6.0.1 - unified: 10.1.2 - - rehype-parse@9.0.0: - dependencies: - '@types/hast': 3.0.0 - hast-util-from-html: 2.0.1 - unified: 11.0.4 - - rehype-prism-plus@1.6.3: + /rehype-parse@9.0.0: + resolution: {integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==} dependencies: - hast-util-to-string: 2.0.0 - parse-numeric-range: 1.3.0 - refractor: 4.8.1 - rehype-parse: 8.0.5 - unist-util-filter: 4.0.1 - unist-util-visit: 4.1.2 + '@types/hast': 3.0.4 + hast-util-from-html: 2.0.3 + unified: 11.0.5 + dev: false - rehype-prism-plus@2.0.0: + /rehype-prism-plus@2.0.0: + resolution: {integrity: sha512-FeM/9V2N7EvDZVdR2dqhAzlw5YI49m9Tgn7ZrYJeYHIahM6gcXpH0K1y2gNnKanZCydOMluJvX2cB9z3lhY8XQ==} dependencies: hast-util-to-string: 3.0.0 parse-numeric-range: 1.3.0 @@ -8857,116 +7331,168 @@ snapshots: rehype-parse: 9.0.0 unist-util-filter: 5.0.1 unist-util-visit: 5.0.0 + dev: false - rehype-raw@7.0.0: + /rehype-raw@7.0.0: + resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} dependencies: - '@types/hast': 3.0.0 - hast-util-raw: 9.0.1 - vfile: 6.0.1 + '@types/hast': 3.0.4 + hast-util-raw: 9.0.4 + vfile: 6.0.3 + dev: false - rehype-rewrite@4.0.2: + /rehype-rewrite@4.0.2: + resolution: {integrity: sha512-rjLJ3z6fIV11phwCqHp/KRo8xuUCO8o9bFJCNw5o6O2wlLk6g8r323aRswdGBQwfXPFYeSuZdAjp4tzo6RGqEg==} + engines: {node: '>=16.0.0'} dependencies: hast-util-select: 6.0.2 - unified: 11.0.4 + unified: 11.0.5 unist-util-visit: 5.0.0 + dev: false - rehype-sanitize@6.0.0: + /rehype-sanitize@6.0.0: + resolution: {integrity: sha512-CsnhKNsyI8Tub6L4sm5ZFsme4puGfc6pYylvXo1AeqaGbjOYyzNv3qZPwvs0oMJ39eryyeOdmxwUIo94IpEhqg==} dependencies: - '@types/hast': 3.0.0 - hast-util-sanitize: 5.0.0 + '@types/hast': 3.0.4 + hast-util-sanitize: 5.0.1 + dev: false - rehype-slug@6.0.0: + /rehype-slug@6.0.0: + resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} dependencies: - '@types/hast': 3.0.0 + '@types/hast': 3.0.4 github-slugger: 2.0.0 hast-util-heading-rank: 3.0.0 hast-util-to-string: 3.0.0 unist-util-visit: 5.0.0 + dev: false - rehype-stringify@10.0.0: + /rehype-stringify@10.0.0: + resolution: {integrity: sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==} dependencies: - '@types/hast': 3.0.0 - hast-util-to-html: 9.0.0 - unified: 11.0.4 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.3 + unified: 11.0.5 + dev: false - rehype@13.0.1: + /rehype@13.0.1: + resolution: {integrity: sha512-AcSLS2mItY+0fYu9xKxOu1LhUZeBZZBx8//5HKzF+0XP+eP8+6a5MXn2+DW2kfXR6Dtp1FEXMVrjyKAcvcU8vg==} dependencies: - '@types/hast': 3.0.0 + '@types/hast': 3.0.4 rehype-parse: 9.0.0 rehype-stringify: 10.0.0 - unified: 11.0.4 + unified: 11.0.5 + dev: false - remark-gfm@4.0.0: + /remark-gfm@4.0.0: + resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 mdast-util-gfm: 3.0.0 micromark-extension-gfm: 3.0.0 remark-parse: 11.0.0 remark-stringify: 11.0.0 - unified: 11.0.4 + unified: 11.0.5 transitivePeerDependencies: - supports-color + dev: false + + /remark-github-blockquote-alert@1.2.1: + resolution: {integrity: sha512-qNf2mSAoZgh3Cl23/9Y1L7S4Kbf9NsdHvYK398ab/52yEsDPDU5I4cuTcgDRrdIX7Ltc6RK+KCLRtWkbFnL6Dg==} + engines: {node: '>=16'} + dependencies: + unist-util-visit: 5.0.0 + dev: false - remark-parse@11.0.0: + /remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} dependencies: - '@types/mdast': 4.0.3 - mdast-util-from-markdown: 2.0.0 + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.1 micromark-util-types: 2.0.0 - unified: 11.0.4 + unified: 11.0.5 transitivePeerDependencies: - supports-color + dev: false - remark-rehype@11.0.0: + /remark-rehype@11.1.1: + resolution: {integrity: sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==} dependencies: - '@types/hast': 3.0.0 - '@types/mdast': 4.0.3 - mdast-util-to-hast: 13.0.2 - unified: 11.0.4 - vfile: 6.0.1 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + mdast-util-to-hast: 13.2.0 + unified: 11.0.5 + vfile: 6.0.3 + dev: false - remark-stringify@11.0.0: + /remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 mdast-util-to-markdown: 2.1.0 - unified: 11.0.4 + unified: 11.0.5 + dev: false - require-from-string@2.0.2: {} + /require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: false - resend@4.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + /resend@4.0.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-rDX0rspl/XcmC2JV2V5obQvRX2arzxXUvNFUDMOv5ObBLR68+7kigCOysb7+dlkb0JE3erhQG0nHrbBt/ZCWIg==} + engines: {node: '>=18'} dependencies: - '@react-email/render': 0.0.17(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-email/render': 0.0.17(react-dom@18.2.0)(react@18.2.0) transitivePeerDependencies: - react - react-dom + dev: false - resolve-from@4.0.0: {} - - resolve-pkg-maps@1.0.0: {} + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true - resolve@1.22.4: - dependencies: - is-core-module: 2.13.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: true - resolve@1.22.8: + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true dependencies: - is-core-module: 2.13.1 + is-core-module: 2.15.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - resolve@2.0.0-next.5: + /resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true dependencies: - is-core-module: 2.13.1 + is-core-module: 2.15.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + dev: true - restore-cursor@4.0.0: + /restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} dependencies: onetime: 5.1.2 signal-exit: 3.0.7 + dev: false + + /restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + dev: true - retry-request@7.0.2: + /retry-request@7.0.2: + resolution: {integrity: sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==} + engines: {node: '>=14'} dependencies: '@types/request': 2.48.12 extend: 3.0.2 @@ -8974,68 +7500,106 @@ snapshots: transitivePeerDependencies: - encoding - supports-color + dev: false - retry@0.13.1: {} + /retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + dev: false - reusify@1.0.4: {} + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rfdc@1.3.0: {} + /rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + dev: true - rollup@2.78.0: + /rollup@2.78.0: + resolution: {integrity: sha512-4+YfbQC9QEVvKTanHhIAFVUFSRsezvQF8vFOJwtGfb9Bb+r014S+qryr9PSmw8x6sMnPkmFBGAvIFVQxvJxjtg==} + engines: {node: '>=10.0.0'} + hasBin: true optionalDependencies: fsevents: 2.3.3 + dev: false - run-parallel@1.2.0: + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - safe-array-concat@1.1.2: + /safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 has-symbols: 1.0.3 isarray: 2.0.5 + dev: true - safe-buffer@5.2.1: {} + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: false - safe-regex-test@1.0.3: + /safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-regex: 1.1.4 + dev: true - scheduler@0.23.0: + /scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} dependencies: loose-envify: 1.4.0 + dev: false - schema-utils@3.3.0: + /schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} dependencies: '@types/json-schema': 7.0.15 ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) + dev: false - schema-utils@4.2.0: + /schema-utils@4.2.0: + resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} + engines: {node: '>= 12.13.0'} dependencies: - '@types/json-schema': 7.0.12 - ajv: 8.12.0 - ajv-formats: 2.1.1(ajv@8.12.0) - ajv-keywords: 5.1.0(ajv@8.12.0) + '@types/json-schema': 7.0.15 + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) + ajv-keywords: 5.1.0(ajv@8.17.1) + dev: false - selderee@0.11.0: + /selderee@0.11.0: + resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==} dependencies: parseley: 0.12.1 + dev: false - semver@6.3.1: {} - - semver@7.6.2: {} + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true - semver@7.6.3: {} + /semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true - serialize-javascript@6.0.1: + /serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} dependencies: randombytes: 2.1.0 + dev: false - set-function-length@1.2.2: + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 @@ -9044,93 +7608,205 @@ snapshots: gopd: 1.0.1 has-property-descriptors: 1.0.2 - set-function-name@2.0.2: + /set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 + dev: true - shebang-command@2.0.0: + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 - shebang-regex@3.0.0: {} + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} - side-channel@1.0.6: + /side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 - object-inspect: 1.13.1 - - signal-exit@3.0.7: {} + object-inspect: 1.13.2 - signal-exit@4.1.0: {} + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: false - slash@3.0.0: {} + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} - slice-ansi@5.0.0: + /slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} dependencies: ansi-styles: 6.2.1 is-fullwidth-code-point: 4.0.0 + dev: true + + /slice-ansi@7.1.0: + resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} + engines: {node: '>=18'} + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 5.0.0 + dev: true + + /slugify@1.6.6: + resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} + engines: {node: '>=8.0.0'} + dev: false - slugify@1.6.6: {} + /socket.io-adapter@2.5.5: + resolution: {integrity: sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==} + dependencies: + debug: 4.3.7 + ws: 8.17.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: false + + /socket.io-parser@4.2.4: + resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} + engines: {node: '>=10.0.0'} + dependencies: + '@socket.io/component-emitter': 3.1.2 + debug: 4.3.7 + transitivePeerDependencies: + - supports-color + dev: false + + /socket.io@4.7.5: + resolution: {integrity: sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==} + engines: {node: '>=10.2.0'} + dependencies: + accepts: 1.3.8 + base64id: 2.0.0 + cors: 2.8.5 + debug: 4.3.7 + engine.io: 6.5.5 + socket.io-adapter: 2.5.5 + socket.io-parser: 4.2.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: false - sonner@1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + /sonner@1.5.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-FBjhG/gnnbN6FY0jaNnqZOMmB73R+5IiyYAw8yBj7L54ER7HB3fOSE5OFiQiE2iXWxeXKvg6fIP4LtVppHEdJA==} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + dev: false - source-map-js@1.0.2: {} + /source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} - source-map-support@0.5.21: + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 + dev: false - source-map@0.6.1: {} + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: false - space-separated-tokens@2.0.2: {} + /space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + dev: false - stable-hash@0.0.4: {} + /stable-hash@0.0.4: + resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} + dev: true - stacktrace-parser@0.1.10: + /stacktrace-parser@0.1.10: + resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} + engines: {node: '>=6'} dependencies: type-fest: 0.7.1 + dev: false - stop-iteration-iterator@1.0.0: + /stop-iteration-iterator@1.0.0: + resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} + engines: {node: '>= 0.4'} dependencies: internal-slot: 1.0.7 + dev: true - stream-events@1.0.5: + /stream-events@1.0.5: + resolution: {integrity: sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==} dependencies: stubs: 3.0.0 + dev: false - stream-shift@1.0.3: {} + /stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + dev: false - streamsearch@1.1.0: {} + /streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + dev: false - string-argv@0.3.2: {} + /string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + dev: true - string-width@4.2.3: + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - string-width@5.1.2: + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.1.0 - string.prototype.includes@2.0.0: + /string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + dependencies: + emoji-regex: 10.4.0 + get-east-asian-width: 1.2.0 + strip-ansi: 7.1.0 + dev: true + + /string.prototype.includes@2.0.0: + resolution: {integrity: sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==} dependencies: define-properties: 1.2.1 es-abstract: 1.23.3 + dev: true - string.prototype.matchall@4.0.11: + /string.prototype.matchall@4.0.11: + resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -9144,141 +7820,234 @@ snapshots: regexp.prototype.flags: 1.5.2 set-function-name: 2.0.2 side-channel: 1.0.6 + dev: true - string.prototype.repeat@1.0.0: + /string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} dependencies: define-properties: 1.2.1 es-abstract: 1.23.3 + dev: true - string.prototype.trim@1.2.9: + /string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-object-atoms: 1.0.0 + dev: true - string.prototype.trimend@1.0.8: + /string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 + dev: true - string.prototype.trimstart@1.0.8: + /string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 + dev: true - string_decoder@1.3.0: + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 + dev: false - stringify-entities@4.0.3: + /stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} dependencies: character-entities-html4: 2.1.0 character-entities-legacy: 3.0.0 + dev: false - strip-ansi@6.0.1: + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} dependencies: - ansi-regex: 6.0.1 + ansi-regex: 6.1.0 - strip-bom@3.0.0: {} + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: true - strip-final-newline@3.0.0: {} + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true - strip-json-comments@3.1.1: {} + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true - stripe@16.1.0: + /stripe@16.12.0: + resolution: {integrity: sha512-H7eFVLDxeTNNSn4JTRfL2//LzCbDrMSZ+2q1c7CanVWgK2qIW5TwS+0V7N9KcKZZNpYh/uCqK0PyZh/2UsaAtQ==} + engines: {node: '>=12.*'} dependencies: - '@types/node': 20.10.6 - qs: 6.11.2 + '@types/node': 22.5.5 + qs: 6.13.0 + dev: false - strnum@1.0.5: {} + /strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + dev: false - stubs@3.0.0: {} + /stubs@3.0.0: + resolution: {integrity: sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==} + dev: false - style-to-object@1.0.5: + /style-to-object@1.0.8: + resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} dependencies: - inline-style-parser: 0.2.2 + inline-style-parser: 0.2.4 + dev: false - styled-jsx@5.1.1(@babel/core@7.22.17)(react@18.2.0): + /styled-jsx@5.1.1(@babel/core@7.24.5)(react@18.2.0): + resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true dependencies: + '@babel/core': 7.24.5 client-only: 0.0.1 react: 18.2.0 - optionalDependencies: - '@babel/core': 7.22.17 + dev: false + + /styled-jsx@5.1.1(@babel/core@7.25.2)(react@18.2.0): + resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + dependencies: + '@babel/core': 7.25.2 + client-only: 0.0.1 + react: 18.2.0 + dev: false - sucrase@3.34.0: + /sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true dependencies: - '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/gen-mapping': 0.3.5 commander: 4.1.1 - glob: 7.1.6 + glob: 10.4.5 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.6 ts-interface-checker: 0.1.13 - supports-color@5.5.0: + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} dependencies: has-flag: 3.0.0 + dev: false - supports-color@7.2.0: + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} dependencies: has-flag: 4.0.0 - supports-color@8.1.1: + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} dependencies: has-flag: 4.0.0 + dev: false - supports-preserve-symlinks-flag@1.0.0: {} + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} - synckit@0.8.8: + /synckit@0.9.1: + resolution: {integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==} + engines: {node: ^14.18.0 || >=16.0.0} dependencies: '@pkgr/core': 0.1.1 - tslib: 2.6.2 + tslib: 2.7.0 + dev: true - tailwind-merge@2.2.0: - dependencies: - '@babel/runtime': 7.23.6 + /tailwind-merge@2.5.2: + resolution: {integrity: sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg==} + dev: false - tailwindcss-animate@1.0.6(tailwindcss@3.4.1(ts-node@10.9.1(@types/node@22.5.4)(typescript@5.5.4))): + /tailwindcss-animate@1.0.7(tailwindcss@3.4.12): + resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' dependencies: - tailwindcss: 3.4.1(ts-node@10.9.1(@types/node@22.5.4)(typescript@5.5.4)) + tailwindcss: 3.4.12(ts-node@10.9.2) + dev: false - tailwindcss@3.4.1(ts-node@10.9.1(@types/node@22.5.4)(typescript@5.5.4)): + /tailwindcss@3.4.12(ts-node@10.9.2): + resolution: {integrity: sha512-Htf/gHj2+soPb9UayUNci/Ja3d8pTmu9ONTfh4QY8r3MATTZOzmv6UYWF7ZwikEIC8okpfqmGqrmDehua8mF8w==} + engines: {node: '>=14.0.0'} + hasBin: true dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 - chokidar: 3.5.3 + chokidar: 3.6.0 didyoumean: 1.2.2 dlv: 1.1.3 fast-glob: 3.3.2 glob-parent: 6.0.2 is-glob: 4.0.3 - jiti: 1.19.3 + jiti: 1.21.6 lilconfig: 2.1.0 - micromatch: 4.0.5 + micromatch: 4.0.8 normalize-path: 3.0.0 object-hash: 3.0.0 - picocolors: 1.0.0 - postcss: 8.4.31 - postcss-import: 15.1.0(postcss@8.4.31) - postcss-js: 4.0.1(postcss@8.4.31) - postcss-load-config: 4.0.1(postcss@8.4.31)(ts-node@10.9.1(@types/node@22.5.4)(typescript@5.5.4)) - postcss-nested: 6.0.1(postcss@8.4.31) - postcss-selector-parser: 6.0.13 - resolve: 1.22.4 - sucrase: 3.34.0 + picocolors: 1.1.0 + postcss: 8.4.47 + postcss-import: 15.1.0(postcss@8.4.47) + postcss-js: 4.0.1(postcss@8.4.47) + postcss-load-config: 4.0.2(postcss@8.4.47)(ts-node@10.9.2) + postcss-nested: 6.2.0(postcss@8.4.47) + postcss-selector-parser: 6.1.2 + resolve: 1.22.8 + sucrase: 3.35.0 transitivePeerDependencies: - ts-node - tapable@2.2.1: {} + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} - teeny-request@9.0.0: + /teeny-request@9.0.0: + resolution: {integrity: sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==} + engines: {node: '>=14'} dependencies: http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 @@ -9288,105 +8057,175 @@ snapshots: transitivePeerDependencies: - encoding - supports-color + dev: false - terser-webpack-plugin@5.3.10(webpack@5.89.0): + /terser-webpack-plugin@5.3.10(webpack@5.94.0): + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true dependencies: - '@jridgewell/trace-mapping': 0.3.20 + '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 - serialize-javascript: 6.0.1 - terser: 5.26.0 - webpack: 5.89.0 + serialize-javascript: 6.0.2 + terser: 5.33.0 + webpack: 5.94.0 + dev: false - terser@5.26.0: + /terser@5.33.0: + resolution: {integrity: sha512-JuPVaB7s1gdFKPKTelwUyRq5Sid2A3Gko2S0PncwdBq7kN9Ti9HPWDQ06MPsEDGsZeVESjKEnyGy68quBk1w6g==} + engines: {node: '>=10'} + hasBin: true dependencies: - '@jridgewell/source-map': 0.3.5 + '@jridgewell/source-map': 0.3.6 acorn: 8.12.1 commander: 2.20.3 source-map-support: 0.5.21 + dev: false - text-table@0.2.0: {} + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true - thenify-all@1.6.0: + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} dependencies: thenify: 3.3.1 - thenify@3.3.1: + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} dependencies: any-promise: 1.3.0 - to-fast-properties@2.0.0: {} + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: false - to-regex-range@5.0.1: + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - tr46@0.0.3: {} + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: false - trim-lines@3.0.1: {} + /trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + dev: false - trough@2.1.0: {} + /trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + dev: false - ts-api-utils@1.3.0(typescript@5.5.4): + /ts-api-utils@1.3.0(typescript@5.6.2): + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' dependencies: - typescript: 5.5.4 + typescript: 5.6.2 + dev: true - ts-interface-checker@0.1.13: {} + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - ts-node@10.9.1(@types/node@22.5.4)(typescript@5.5.4): + /ts-node@10.9.2(@types/node@22.5.5)(typescript@5.6.2): + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true dependencies: '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 + '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 22.5.4 - acorn: 8.10.0 - acorn-walk: 8.3.0 + '@types/node': 22.5.5 + acorn: 8.12.1 + acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.5.4 + typescript: 5.6.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - tsconfig-paths@3.15.0: + /tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} dependencies: '@types/json5': 0.0.29 json5: 1.0.2 minimist: 1.2.8 strip-bom: 3.0.0 + dev: true - tslib@2.6.2: {} - - tslib@2.7.0: {} + /tslib@2.7.0: + resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} - type-check@0.4.0: + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 + dev: true - type-fest@0.20.2: {} - - type-fest@0.7.1: {} + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true - type-fest@1.4.0: {} + /type-fest@0.7.1: + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} + dev: false - typed-array-buffer@1.0.2: + /typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-typed-array: 1.1.13 + dev: true - typed-array-byte-length@1.0.1: + /typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 has-proto: 1.0.3 is-typed-array: 1.1.13 + dev: true - typed-array-byte-offset@1.0.2: + /typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.7 @@ -9394,8 +8233,11 @@ snapshots: gopd: 1.0.1 has-proto: 1.0.3 is-typed-array: 1.1.13 + dev: true - typed-array-length@1.0.6: + /typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 for-each: 0.3.3 @@ -9403,219 +8245,254 @@ snapshots: has-proto: 1.0.3 is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 + dev: true - typescript-eslint@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4): + /typescript-eslint@8.6.0(eslint@9.9.1)(typescript@5.6.2): + resolution: {integrity: sha512-eEhhlxCEpCd4helh3AO1hk0UP2MvbRi9CtIAJTVPQjuSXOOO2jsEacNi4UdcJzZJbeuVg1gMhtZ8UYb+NFYPrA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@typescript-eslint/eslint-plugin': 8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4))(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) - '@typescript-eslint/parser': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) - '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.19.3))(typescript@5.5.4) - optionalDependencies: - typescript: 5.5.4 + '@typescript-eslint/eslint-plugin': 8.6.0(@typescript-eslint/parser@8.6.0)(eslint@9.9.1)(typescript@5.6.2) + '@typescript-eslint/parser': 8.6.0(eslint@9.9.1)(typescript@5.6.2) + '@typescript-eslint/utils': 8.6.0(eslint@9.9.1)(typescript@5.6.2) + typescript: 5.6.2 transitivePeerDependencies: - eslint - supports-color + dev: true - typescript@5.5.4: {} + /typescript@5.6.2: + resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==} + engines: {node: '>=14.17'} + hasBin: true - unbox-primitive@1.0.2: + /unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: call-bind: 1.0.7 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 + dev: true - undici-types@5.26.5: {} - - undici-types@6.19.8: {} - - unified@10.1.2: - dependencies: - '@types/unist': 2.0.8 - bail: 2.0.2 - extend: 3.0.2 - is-buffer: 2.0.5 - is-plain-obj: 4.1.0 - trough: 2.1.0 - vfile: 5.3.7 + /undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - unified@11.0.4: + /unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} dependencies: - '@types/unist': 3.0.0 + '@types/unist': 3.0.3 bail: 2.0.2 devlop: 1.1.0 extend: 3.0.2 is-plain-obj: 4.1.0 - trough: 2.1.0 - vfile: 6.0.1 + trough: 2.2.0 + vfile: 6.0.3 + dev: false - unist-util-filter@4.0.1: - dependencies: - '@types/unist': 2.0.8 - unist-util-is: 5.2.1 - unist-util-visit-parents: 5.1.3 - - unist-util-filter@5.0.1: + /unist-util-filter@5.0.1: + resolution: {integrity: sha512-pHx7D4Zt6+TsfwylH9+lYhBhzyhEnCXs/lbq/Hstxno5z4gVdyc2WEW0asfjGKPyG4pEKrnBv5hdkO6+aRnQJw==} dependencies: - '@types/unist': 3.0.0 + '@types/unist': 3.0.3 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 + dev: false - unist-util-is@5.2.1: - dependencies: - '@types/unist': 2.0.8 - - unist-util-is@6.0.0: - dependencies: - '@types/unist': 3.0.0 - - unist-util-position@5.0.0: - dependencies: - '@types/unist': 3.0.0 - - unist-util-remove-position@5.0.0: - dependencies: - '@types/unist': 3.0.0 - unist-util-visit: 5.0.0 - - unist-util-stringify-position@3.0.3: + /unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} dependencies: - '@types/unist': 2.0.8 + '@types/unist': 3.0.3 + dev: false - unist-util-stringify-position@4.0.0: + /unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} dependencies: - '@types/unist': 3.0.0 + '@types/unist': 3.0.3 + dev: false - unist-util-visit-parents@5.1.3: + /unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} dependencies: - '@types/unist': 2.0.8 - unist-util-is: 5.2.1 + '@types/unist': 3.0.3 + dev: false - unist-util-visit-parents@6.0.1: + /unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} dependencies: - '@types/unist': 3.0.0 + '@types/unist': 3.0.3 unist-util-is: 6.0.0 + dev: false - unist-util-visit@4.1.2: - dependencies: - '@types/unist': 2.0.8 - unist-util-is: 5.2.1 - unist-util-visit-parents: 5.1.3 - - unist-util-visit@5.0.0: + /unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} dependencies: - '@types/unist': 3.0.0 + '@types/unist': 3.0.3 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 + dev: false - update-browserslist-db@1.0.11(browserslist@4.21.10): - dependencies: - browserslist: 4.21.10 - escalade: 3.1.1 - picocolors: 1.0.0 - - update-browserslist-db@1.0.13(browserslist@4.22.2): + /update-browserslist-db@1.1.0(browserslist@4.23.3): + resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' dependencies: - browserslist: 4.22.2 - escalade: 3.1.1 - picocolors: 1.0.0 + browserslist: 4.23.3 + escalade: 3.2.0 + picocolors: 1.1.0 - uri-js@4.4.1: + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: - punycode: 2.3.0 + punycode: 2.3.1 - use-callback-ref@1.3.0(@types/react@18.0.27)(react@18.2.0): + /use-callback-ref@1.3.2(@types/react@18.3.8)(react@18.2.0): + resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@types/react': 18.3.8 react: 18.2.0 - tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.0.27 + tslib: 2.7.0 + dev: false - use-debounce@10.0.0(react@18.2.0): + /use-debounce@10.0.3(react@18.2.0): + resolution: {integrity: sha512-DxQSI9ZKso689WM1mjgGU3ozcxU1TJElBJ3X6S4SMzMNcm2lVH0AHmyXB+K7ewjz2BSUKJTDqTcwtSMRfB89dg==} + engines: {node: '>= 16.0.0'} + peerDependencies: + react: '*' dependencies: react: 18.2.0 + dev: false - use-sidecar@1.1.2(@types/react@18.0.27)(react@18.2.0): + /use-sidecar@1.1.2(@types/react@18.3.8)(react@18.2.0): + resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@types/react': 18.3.8 detect-node-es: 1.1.0 react: 18.2.0 - tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.0.27 + tslib: 2.7.0 + dev: false + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - util-deprecate@1.0.2: {} + /uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + dev: false - uuid@8.3.2: {} + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + dev: false - uuid@9.0.1: {} + /v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - v8-compile-cache-lib@3.0.1: {} + /vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + dev: false - vaul@0.9.0(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + /vaul@0.9.4(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-pcyIy1nEk6798ReNQpbVH/T/dYnoJ3bwyq7jmSp134s+bSvpWoSWQthm3/jfsQRvHNYIEK4ZKbkHUJ3YfLfw1w==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: - '@radix-ui/react-dialog': 1.0.5(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-dialog': 1.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: - '@types/react' - '@types/react-dom' + dev: false - vfile-location@4.1.0: - dependencies: - '@types/unist': 2.0.8 - vfile: 5.3.7 - - vfile-location@5.0.2: - dependencies: - '@types/unist': 3.0.0 - vfile: 6.0.1 - - vfile-message@3.1.4: + /vfile-location@5.0.3: + resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} dependencies: - '@types/unist': 2.0.8 - unist-util-stringify-position: 3.0.3 + '@types/unist': 3.0.3 + vfile: 6.0.3 + dev: false - vfile-message@4.0.2: + /vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} dependencies: - '@types/unist': 3.0.0 + '@types/unist': 3.0.3 unist-util-stringify-position: 4.0.0 + dev: false - vfile@5.3.7: - dependencies: - '@types/unist': 2.0.8 - is-buffer: 2.0.5 - unist-util-stringify-position: 3.0.3 - vfile-message: 3.1.4 - - vfile@6.0.1: + /vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} dependencies: - '@types/unist': 3.0.0 - unist-util-stringify-position: 4.0.0 + '@types/unist': 3.0.3 vfile-message: 4.0.2 + dev: false - watchpack@2.4.0: + /watchpack@2.4.2: + resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} + engines: {node: '>=10.13.0'} dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 + dev: false + + /wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + dependencies: + defaults: 1.0.4 + dev: false - web-namespaces@2.0.1: {} + /web-namespaces@2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + dev: false - webidl-conversions@3.0.1: {} + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: false - webpack-sources@3.2.3: {} + /webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + dev: false - webpack@5.89.0: + /webpack@5.94.0: + resolution: {integrity: sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.5 - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/wasm-edit': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 + '@types/estree': 1.0.6 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/wasm-edit': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 acorn: 8.12.1 - acorn-import-assertions: 1.9.0(acorn@8.12.1) - browserslist: 4.22.2 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.15.0 - es-module-lexer: 1.4.1 + acorn-import-attributes: 1.9.5(acorn@8.12.1) + browserslist: 4.23.3 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.17.1 + es-module-lexer: 1.5.4 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -9626,28 +8503,35 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.89.0) - watchpack: 2.4.0 + terser-webpack-plugin: 5.3.10(webpack@5.94.0) + watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js + dev: false - whatwg-url@5.0.0: + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 + dev: false - which-boxed-primitive@1.0.2: + /which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: is-bigint: 1.0.4 is-boolean-object: 1.1.2 is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 + dev: true - which-builtin-type@1.1.3: + /which-builtin-type@1.1.4: + resolution: {integrity: sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==} + engines: {node: '>= 0.4'} dependencies: function.prototype.name: 1.1.6 has-tostringtag: 1.0.2 @@ -9659,54 +8543,115 @@ snapshots: is-weakref: 1.0.2 isarray: 2.0.5 which-boxed-primitive: 1.0.2 - which-collection: 1.0.1 + which-collection: 1.0.2 which-typed-array: 1.1.15 + dev: true - which-collection@1.0.1: + /which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} dependencies: - is-map: 2.0.2 - is-set: 2.0.2 - is-weakmap: 2.0.1 - is-weakset: 2.0.2 + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.3 + dev: true - which-typed-array@1.1.15: + /which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.2 + dev: true - which@2.0.2: + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true dependencies: isexe: 2.0.0 - wrap-ansi@7.0.0: + /word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + dev: true + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - wrap-ansi@8.1.0: + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} dependencies: ansi-styles: 6.2.1 string-width: 5.1.2 strip-ansi: 7.1.0 - wrappy@1.0.2: {} + /wrap-ansi@9.0.0: + resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + engines: {node: '>=18'} + dependencies: + ansi-styles: 6.2.1 + string-width: 7.2.0 + strip-ansi: 7.1.0 + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: false + + /ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false - yallist@3.1.1: {} + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: false - yallist@4.0.0: {} + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: false - yaml@2.3.3: {} + /yaml@2.5.1: + resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==} + engines: {node: '>= 14'} + hasBin: true - yn@3.1.1: {} + /yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} - yocto-queue@0.1.0: {} + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} - yocto-queue@1.0.0: {} + /yocto-queue@1.1.1: + resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} + engines: {node: '>=12.20'} + dev: false - zod@3.22.4: {} + /zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + dev: false - zwitch@2.0.4: {} + /zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + dev: false From 8a7488732349003a44db272a43cf323ecc8677e0 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 23 Sep 2024 17:27:21 +0200 Subject: [PATCH 245/326] :bento: add new images --- src/assets/faqmaker.png | Bin 0 -> 19962 bytes src/assets/faqmaker.svg | 4 ++++ 2 files changed, 4 insertions(+) create mode 100644 src/assets/faqmaker.png create mode 100644 src/assets/faqmaker.svg diff --git a/src/assets/faqmaker.png b/src/assets/faqmaker.png new file mode 100644 index 0000000000000000000000000000000000000000..3aba020f742fad7a44541bf9789670ac94466aa8 GIT binary patch literal 19962 zcmb??1y>wR)Aj-Zf(L>GC%C%@cb8>x2=49@2=4Cgi!Ck-!GpUk4ncxDH!eY5p6@q& zbIzPOQ`KEn(^FmDT~~LMnu;t2DiJCG0Kkx!lL7(&2o(RjKYnwbK5l z_W$1nuPGe|O>HtqLC13iI;+ zDr#ClRGMEK0G}{;=7B#dVpQfV+6^Udt2Y)2vLTNO<_!CGknWi^UoAFU$MqS~@6T5oC~o zsHiY?D8aeaY#XvR*~O284&o@ooH5i?p?fbV0B~`>;IV{oFA1`#crAx35g)&na52e z8aI(D8cal(Vh=q>UKhZ)KSZQ6Wbs(X^WqFiQax6aL{-@Z`Kc z6*O>kjeh?GF|S0~Mg@@1SXuLAhdu|ry+{f=2AgK%1;(@s%1H8rpa>>r)_xV#^RPAm zJT?dU+VcMp2#zf!D&07>MNa&IF|W}N&5Yv58JFWCA`)ZeUh?r(9MANl!X3Y%9sd|; z52?y0s-;o-m1HO*Q`t&1a|qz9ga}p{TxXh_eL~|g5Y`MSLsnA{TQ$P6;r(nkvCSu3 z_yQUM021@@kE`UB$~fXLc*JrzJ^{dYBM>Pnf$-3Wok=-{gk}JBNgmP(AFYaMX=W+s z+0YiCo)-#&BxEv2L5B#AYqHUC0ZewKaM`1{^3{BnRZ8F3jRA5%yfka-&s0gkSak-z zMuf{nrKLlwGD*ss2VLz-hLDeuCA^F~iCn zo}jjLPAIm3(5pHBzr~>c&Z;spXCgZXVvc_UK1e_bVvv&#zLZX(OHp(V?pTzu1xtSr zgTxFoDd~r5b`Da)Kdc#Da2jHl#f^hDyT35 zzVobv#pyLg@G2dr5)0ukv2LDu2fcw*sSgBb9#zL&fkA$i)f>4E(jQ3N=8ZH7N5pFJ zDx^{}gCn=h8hs&wa2UH&jzoj=l2WuA+CPwZ647#wP|8RsO&bgn>@<-05|tMg3hb<- zB8Mn3K*~r0iKKbAEOY4CN14U>=H1^DgKCg_OKYF-kO2_B%X|+Q=}C>TW+5=>Z}9iXI3%A)wNxZaPck zqXbHvwk+)j3f)`K(Cq1lhCbeYR~}VPU+NO>mNN6IK~EtX97KvBFy(4?s;MI<;NB6ot6^7qAs zaK5DiMI`Qy50BZE*dNl-A6UV1*IpwHN)(ZGf{bQF6p^R{>YYZa2F2kAb3!IlottU9cF(=uXN zP;glIo;R;7TL~gKw#9&b5-w3Es;bmeNOvO}cTa(ER#LFGEa-&$FPbIM9(f2?!wG5+ z+lV?;$p}2SmW#zfYXpz^^Qz!{b({|E&Rs{v{U+MFA|vLw3*ZXEbc&;V#k~%N{ulCW zZ?dd{vTe0J<{sN6*{qY()oPdr3|{g^5ofhjRoUmczVsYwu2;Ib*SDy-up6pXv$)q! z%^Lc~xlMBtCAcPhEw)qjAE&5uo`BgAfw`JhrKYSLD*Qdd&u31a;*PcWyB8gmxFhr7 zZx>CGyjM9iO1Ra8p>e2Ge`qG>bzgW4G%CFj$t>;?+!H9miB2rSJ@uxcMsv5vME%0U zlM9+lCmxffXs}3vU&0?|XTOWGS7=0Ewi}h(AZteZU*Ouv=G7u|2i3|k&{mOt#`1Q@ ztIGs)-p&s-PZDvfMeZ6R$KQ{JY+kqBIOm<`4h ztW@r&0DZgKG7;u5><2-Vt<$&zl2YAp4}8hP9aXC+r0DG65WH(5R69!oAS_1XAe|!5 zSsGu}@k0o7KqyZvhk{v}==Y4_xHDNT(9w0|7ZRhoz*2Gz%^3WuW%RNgc!{vNY7lq5 z_C+)6Zlst|P%PwO-wETA(`otBSWbe|mwKi_FQSSrZ-X?+wThmhIiD)OC(;|AY1Z`hp>{1stUa& zK>(q=K>p1qnb_WyE7Pq{GkMaa&Nwd=f8DawV2y$Sg-fW~h^MqP(++jdmFDSIBP|0{ z)^9Z?koUBYr?IKUt;;r^xcAqeN<2%kx3+)jI1%R7^sa``ew@f}*LE}g1HE1dp%r_@ zt8j`IV#fU7rzdZKBli%Rti_ zuse?A%az`LPJC-(FD2~H zn%3s9eIW~s{Y>RAl_Oo+;CV_Sc{5d*EUU-7Qv;DHmwRcp+FhnKq>6{iGRNqfn&<9V zQo|GRne6R>fXnGT$VoYV;o`)MUeNV#@fZJ=e_^jfaHkELx^ze5%QsJ)d9tHPhKL-3 zte3(be?Q(WGl8_@;+3b3lzWqe(?IwsK{rVX%jRJ{?ywGyqvwu?5|ouE@i%Yg@R@JN z6Wc*N%#;@c#cvU=FD#sO;rR)@TRw`&YPQu2;te`d`RY6haY~RXb&h2l zQkJ7`37QXoVuX45+-P`2$2NnOXp*`$LTNtWH7C(ZdGCM(hEocIiL49Lr5^qqDKl`u zpe~^WH}Ug#xL*io75b^ZsdQ^9qQ<)0ldUubiY&aQ5)gV64#~JT`;|}9vjL%+QbyQQ z^8$Ykf|%)nPA^2G9M@ef;7+--rQy_%n4x=&+Emdo)s=NYdicFbTwz9E) z>p5IO{$F)khn^^1m8S``M-sZIyhs0 zwQg4=X%@eNzB*{v@FcPe^p=?7+t7aOOC_N!V&tzGRoo|0q(J3ixwr-qS8updJ+q>^ zT?>g*{SO9YleG@*8hKpMxnu(mQ_ihk&u8Qa8&`;xW|J1hI1ySrlr&sKDe3n>l9Q>!Pu?IQJJl<>YfxOKIlEKF_4bjZ1@QLMK_- z?ZZ|Jq7g;m4`7`aC^ybD!PE`rM^!8YeFau5S-1kjs;~N$bvI3#%n#}fHFdY=G zR4VaUYWrk(vl*c@wg7|5d21U{V3*0?8Eu_FCb!|ZjW5aEYEM&Fl zuVP1M^puq4n*U`m7)W53)X8q$gM~*;V38GiK>=w{gJIx+^_nCayyFbbu_6k#O{w_B zq+a1VgNeICaRI#JRHdyf3U-L-RT+|yLcngy#^I|N=HuKtmbKD=6jvAVe{wIm5fkbl z`Dw&IsrT1O6sBMZ8M=2f<^kyRuq}#@Tue*>%D>FTCMl!i{my z@Ui$~vDvWk^jcP74L!N39hX1$spV!%DjU)9$%$BwGx!)NGN32iMRLl6hQVO;5PfS~ zh{3Njn2Ob)4HgfI-^u_o1d!fwzFT>0m z;SZyWn>nIBp_3?%iK&>O!%st$rMG{p`;g7}v)tB&8kc!=IA zi>4cP;ozjQ4@;(AkieU44V}hvthN>oG)g z`PRU@us^D8LhcyWkNokjaJnFz862QQ+f`jw8M52{0z)d=NaN=aAM&S|Y_-~F#+gXt z*Nv?aDGCB#M0W`%xV^D*n6ciTLNwy89DhVt6Ps{dLfuacu=07Kju>W`>)t%GgIvSa zUQZDBD3t*X!Y;^!9k~j#T<6inlmg?5*((o0K)ad%KI?0IsZQGxh%4ASo&zG^5GYhp ziWQtmRaV6@I0h|;Zxah&{4d|M1^DAujm@wGnOmaHHg@O)d2(K9^06cwjYos)wu#mz zcw;HX*T90PP~^BWel=SZYvOGJeJ5DJ5oNT&4E}NI2bzLKsTlDI;1*`+E1kmW9(-c& zUyI$YTW({-LpNxthuEkZTeas}5%d$KkY?Y;OTnV3t^EiGV*xok=N2+O`;T$%XjOSZ zt}{$Hg#Y-3ZlMI!c4ho&INf>Q@u%jZ<8jUKmFLVpPTYc|pr(G4F7tG|jV^#|NEnxq z?+#_VBG`=qls~_S-7a4edmizi`!@Tynw8LYy1dXzt$6wX;@Fe($OSYdBTmkZ&qH-3HmDB`j^(R--WEo4vctz$G zl}c)~R>X+?O;vR}h;>|tg!?V#9C{H%Ob^_LE}C99_LMNDGBBYo$oGe|RWxrmsP#7^ zTTCZIe5YSqt(nGBZO-ea19nNk)fJ^cf5Mznv%&XOmS0I4p7L$TiwwYgUi~hBtEEJa zP+RupR-c(5;mr_fChz4$w?5T)b3;zZGx*4XjJSM@L zbBgyRp%%f&^MRSo9D{#wo3XbaSwt32po| z7h~!ga!uSvi0{yhKpOj<^XcH*9G&YZ=;=uhYYT`95)WgH>pjw15%#Y8<^VFW(p!4) zLru*O&$cjF4A3Y-mF~_mc5|&U=a==lj6ZP9+-Y3u13O_9*gh% z^<~+s415tNqh`7k(B9D+xgCObWn6(RiCLg5`?7unNi7nFy+0GG2PN_(V@hkHMH*^O zaU7(BfS0M46zlO<;L7fNv+U`oO9CG2W^O3&Pd2{TD{3dcogGEiLLr+~=}nH_0}7Fa zeQy11R?eT}3+Y$XCl+g*-My3OHjF02vQyi99wmQaegjVs2hDE8Ld^mfz|fbyjO5JmkCHQv45?f9o^X?0)UdlND|`R3I~C=JXNEaLy-|XQ?^A zgnp`>)c70j4~^VZhyJ~0pM=U>!n|-aZ!8?zrD0O1>s!q+&-rPkEhG+&j@eiS(IHoV zoGZpb-H!N{9OM<`Y{)uy%IF%kr41Vqr*w_O^!ACEi^RW|*#a2YT6NNLyTv!8Ra7~v zxJt?H5w%pe$zK_bS4ERvCAvrCrx~o}AD%x&Tvjq9+gNY>4%bRq=)QnWTUH?@nUp&O zWsQCR8lG4BU#4S#h3XU0sj1*88JL@4MP)9l+Cde#oQ9-4`e{z#T*^l4Hq@f1tmK0B_F31=bx9MTGsb5(u}gmBkg_fDaiZ^%CO@@ho0zczw<3OC`8sdP8oTf) z=QIzcbIm(JByFfG6ZQb#BKoKuw0AndQP9CzZb#TuQ}vb)t_)-2^MBVGcybDi>xiv;0#&)HPpOG}uMm*8+|<->gANBL(Sq9Z8ezYR17uhUQHhgGZvf?o7J>Y4A09&5(uf$QetY6;|zskoC%@z9B z`FNOL9u}q4jUAO^vrlbksnf-@qZi82W3%wjV_a{0<~8>Kevm{MCsGrH1plUvhYms=|RJBq(vs06&&|H`n-xUtIs zQEwXz&m3d)v2Bm}Iw(o{mgN+Pd9h@;r;6KBV1u=;O(3f8H2mweADlQ?lb`>cke01R z4l&<}(Ht3etmfg=!TVWj2fh&E$qNKU@%Fj!VdUfXl;DX*Ydo#3l)gC(NdY0Q-tu6x zsFvcz_7_d(0?YhDFs@ zcq(2(S0q+4dCaS!xs&AEb5Vh1DMY<@^-(!R<2H0^i45;gkfFT(iOzaOD|!N=GT#Px zHU*YNdh~b+(Oum%W2Sx_zs&fkl)%LeqO;zKwJOgRJS6hRkD>|1Qb_)X!8ugz$Tsx# zj0O6K`An7_KN-gKpUtJ4VU=)Gx2_{sUfmM>Cc`!7WPa+orH6i5Tyen-(`521;=kz> z+;gL)Id{8wtYhoK9^#+nDSoFi9dt!%I}^vAHa8mQcZ7$VUy$Wjct@g~+hh*a@b(z2 z9NZK3k+NFfX8w~G7_4^uT=H|+pROrXb^m#t+7Ry#HNUnO(Wz}kNz<)`bDMtIVzVC( zSo(%BJ>p;yrWi1?DC; zS6fc_Lxk>*yA z7o_2mT9FicR4eNHz)Fey3Hd|(nEPm{@9z73iR8@Y87yRa_a8^`{aS%7uh8nu zqx_F?KgbUiWrQE)Aj{Sw&)Y8&J9HKVEwsCROj`0kL%LOaad&JS^QX|SPVR9gTLO}% zWNAkUEi_vRiXXwwS(?cmbGHnc7T-qwi?n(zJ?#8Vx&p{Jeb53@@E=5YCa%rv0x#Ke2yw zmGKL=CjBMJi|tw+ACcw`Y^<$-T@^+vx)mm#Xd|3F<^bv=xGE=Qsw8Hs;PgSXxJ{9?e>U{7UnJgC|xw%zy-B*gLQl+3Zu4H)b#(l$%kC&E?%b^a@5^bcW zIUpI8ySKtIiQlPHjw=?pnn9+j(QWh}D-5$?)Pt=Fao1s0)JEk1^%*A&AxBW>?E6L{ zrs^D$&qn#D^3oo${z*)36E?ZVY<&ma$lvj;#IZ1e;Mdwfx@(=bR#VRhi_bA$DsO1# zQ}P?vGVhSpv%4Uvjz9IfAzZ}nWyVf?!?-8;oeJVHeM!4NzAq;qm%@G>M8Qk@uy;(> z2V$U$-efp<>~ZSf8~}spzWDy3J~h9y{3Iop&^hm*r8KQ_-e-3sCTtCAYwA9J|bNF0>tnrrfhd5s`@|eW$}-%%%=v?kfL?XTo*tKL74%V2pQY!Q#k{ zJf3@&uL2ju#*@_yDda}|3hSPV{Nbht-8=rYV?c1Im~%N7zo^>lAmlR|niC8A#bua> z?ZM3uq1o|uf8|b~;9g2k6!9$9vO7?8?`42CYUk((U1Vr%;cw=};KSv@1!OIE#~CB8 z0Om9-&+BGXU(Ucc>zYFid(BGC>0b|6ECcI>D9g-9rc%-@xn;XblRDjSInoIVmLQpT znO=JzvyL7}KV83bJ6zwnkA4_0JTJMI1&1qLkH$%u6r;&tM%p!)NHH!$eB#A2oHobi z8ufoNPXarPM^n`ccD0zay#a)_9N|9;KQTOIOg`WHM;_TZ+wWZNp4O*zZd|vyO~%T3ZHwiPP(!w9$~8$#AudCEza^$0f9LLtaZ2aQ(QY-QI);ai zN>j?N%HUy|i z#f*fH{fu1L%lVL=HR|)t8<(k9>o1v${pmKxb%J0gQX$9NKQR*EQ~4Yp_WBZQvPSto zn}^%EuQ*2;eQ>-nH>vHHXf9n(y0KstT*@s`Fv1$zRoo=+tBkwL6jX~`xaR0YD5qLU z)jORtr&f z1-e!b>KvJ!r%-m@4My4%9@Z#v7KuMtydEyz(vWEajZ@e$&CEQ9?Wcl>zMBYhbHHiAUXS^h>By0-rxDrQ+?<8= zBP^+YSQ*9>zajm>-jp++2pG-X_9x+0?#t0rx`ua9?2#=;c6wDL5PamALg)hgIBIKp z9a6)T_pWr*lzX!HlMPct)@KC%j2-qA5X%8P$$tRq?*Uz_uj*&6g`;0zN82Z;HO-Fn zr2@zOLoa~Qs9%OhNk)Cgs5QN2ppk)0%Nlra_nDwels8aYr-W#Bt@H;!N6!4(a$G#; zPI)}Kb~;G+TAYS^vmc~b4x}q8e*|5}{`G!`n?C?zR5w{?IZ^yXhqYl_~O#Q1>Ht0(H zg4^FFx$Nvn=Yt~`OS7(+ND&F%e7HibktPdN4rZWPY=-@-+#x-|SVf&vtJ()Y&EWJ| zA7(K(S9QY#zcg$8D0fJX3+~(4a#(yKF-tCnb7uerzIwvU-&@|?ddxc=^RGhFd=p3?c^!BtgW zTK0&Nf$0e^Q>1xB-IP`FQhIXoOEs|TU7Pl(ih$9{*wZs6ro zA~>t@jphS@?tZ~0u>4Mc`?S;@!e z6SvJL=wq_GkFs(LSd!ho8Afl}m({UkB!q61^Aqm6bYFpn=jZ?Kb5pR?a1Xja%2lxK zjTU~V)vVde$Zq-b3lUrtH|liHGrW&WA7T(c!rgh^xA&PRf0>e6);j(2iX$A}0;G}B z?s=^^DawMw6-Oq`9&O)}ehFaGw$z!2CK#EX9}qKBAWq(tJzg~!urO$Z`^-O+^$c`c zCS`s*Qv2{%?8Um<&zVD?H&qvON7FN))F?M0;7)(Kuq1gGBP)TDCsxUMZV)pT@1>|% zgs)4zZ!CzrufWX`xo4IR(Ws6+u~%P1bUg6j=CFBUIaK>%S7{ZjBZQ-H$U2sWsDBMT z&OS9wN~K{elQe;}ox`?`(-T5H3(a-aq{o>dYeP&dWcM#BU{RCGZY1lUV(%KM81&Np ztkgGIzsnyvB&8l4sVuLkE$NZXb)WO6_F0UM`#CnZ=ddJmMxKWzNqE56`xNy=W8r#UYF`edL;)#&_8Sgx^A z4KcscmF6i(ZEltuq4xbu2&`tA*UFohrV&&rWn4gP2ewukuvu5%VvyklG^=M_S*^6< zr)^}G`;zR%PrN$(YI-_k@W;Dhau$(tIdB30s}(^J=%f6KHJ2r)QFJ#K^2F0JK2> zRFjC1pfmr(UJ#mVnUo0UP7700^ye11Q+)rEEOS%Ml9+#t)z5nVQSSmPAvFYepOpTms3k%wK%Y4B#D%T@wHi1VxvV)PV$}C zHnR&PFVGn%FcO$govYWnD-{<^ug4;NPk;mPV;73q;*un#@dJMQ?WcT-7={ytWyqO6 z{>s=hg?=ejXqHiVF;%<0@P{=7-r|b?N_r<}Rh>HE+|A zboK$AciE{wnkJZY|ILB_U|cYgmy;9qMaFD5XqavnLnwJRx-Q$Kj)VNX_VRRHuvvyo z$X4AyMK#*hz~0>8B3RCw*_{XbZ+7hO1fxS?kwnO}{yGeXK_7YTPax6od|) z8;O7fb8iy0RvyEs1rV%`nTTlsuQ@c#fw}#!Z-V(B+oagIBZbV@(gPg6*-x~3dN=)( zWTU^JlWwC{6pR z?IH`o6q$OBxne%D_qJ-2=7hk~bPzX2v@P%% z+|S@){7cOiF+-2q47nYL!$2$?A`*s)sl8geMUFqZoK-6|fuC6C@ktspd6=W%ML5}| zNSbqXHZ5`%zEKKcMToc>6JL0Kn2NCL-JqmeDSP}xK5uj4<`CxgLy`pZ+;?4$@46ZS zmDE+I@-Yp(VpN_wWI0tD<%Z3FfCxNwMQc3R0eMy0s>&!ND>zMlrR5zo`g2^r(06+i{W%#L|yYzGul! zc;M$jGh{jSbg6el-s$>c>Bra(l3%F~SYys@ci#Qq%`m@^3A+-}JP7G}nX#A*dRRXx zoUGoz`@TPi5p9GUV=K%jw99zbf;VD|nL}>K`dx~S*w7)hW|4Q&U9EIEUI*ALT%2=g zF72ZqoNl4XvDAvGai@6e-5nFhTLg`^~AboCk>>CB`1|IcbhMpr6oMUT-YP868T`RUU>K)WOOE^?=d$|sl^nInZlWGteDN~PCjzjr*m^QOGlnBru$UpYkl$s z^OLJtK`00YjA1iGJyfpV0>lKhi-!GHXxhVx>8?IbO)X#s!UE3+Q19vw$JXgTXwCE$ zGg`}#l>stw!Ru_wz^ff*%zv!BI`aZhh%O8n*nIb~bF>CZ|iQWz4A2Y4>n`2^l z@4Tht>rrV+qd!zt%0BAIlgG5VzK^K2P`NRGcRH;rg^eGs)Y88d&KokBkiBV2Go*pv z%fB@w6BAajUpEdK__SyPeRZfUP~U~@zQu+j(8FtOH=yl0*MYtLbn9~^PwJDi^>Poo z2K zPoBcR-WBQ@@UuYAvM!YtxabdCO&&1AQ&zSdb&L<0r{c*w1Xf#$P5t}NHaUL5oimH3 z^fHQ zE>`}i&m^S)IjmHtWZZQzSVjTw*VT!K~VRM9@M+vVM7Wv3WdFWk~{?P}#8F~HzsZiFPuP4loCzfUM^c0mNG z2~Pei9(?{aa?f%p`$sVn0Gd4`d~1Bw(xh$BDYwDD-YM@!@m=1f(?j#cJDD}?v8>*- zbj8A0w3AF(x#ZZyHMCDICUa+6tg0M?3L&iX=8Ebhe#l6OWxZ9NEuv*;4|9|T3Ld4P zdaTNx3dklqa%Yit{42BmoPygW*-9BEy}Qm$kbr}iC_;UtoU-C#w~32q-69>04?%s2 z#yze52K-fN(vD=qmmH3ZYu7!>r!zQZ<2!7gww@O+9nE+GFf6}cbUEAxc2(IyMK|@o zS~w_M4kdKWaW7LVAIvt$Y2Z1OQ+YHX9Xevnep;`AYu8zalJ?jowKOSN%3RNl{m20y zxd`G1Vq~yjc6H9}y6!BRzrV&gy^Fcqu(35yF8ff91IONwG+O=30IF+~5<_*Q2f$Zh z&%&d7D!0v)hd7qo!Ra_Z{<6*tfUt7QFJ!p00MK@nEe8W0%59xCf&sscvR5afA|B|f z+S4LL$?y z;E?~|AbkNpQZ?zY-`~_Pw;a!l@-5{YF;UxUc_QLlL{hy%wq0`lTgeZ&-Gvm|roX|? zDoH>4sV#aSI4@`v2>~k8+*uf#=yW!Gmn9g0`6)}*PKI1CsYOb&;*l}HXKvGyl^KQ3 zM&ujYW_bwQ?j$m=n@Lk5Y~S^6+|@x23t=S2QqPg|^G`gj?ehj*FV&J5xZSYn{9nB$ zH0L@w1HzI7??v8LCqjbq&=0Ti&5LYjhXJm&(fi92A;b~soptuWr8E_!L^tHMiJ+8z z#qU|lS7e1LaJzrih}piwGUeIOujo;V6LqbH-aO! zDg5vX*a@(XPEn4uIuWoLp7p!K0f#@x5h+m;F?)h6F0ZJOH9u>R46+w>uHX>$b_sgU%CGuuAO`je2AQ5bzDWg--tA6a2%C$^JyR6jY0p`1uFX zq~B6_&QMnz%$v^;gMto;aMJJJJ3%4aBxQ*3@1Kw86vom|qm~;v<&0m;uQ*E59zF>Y zi!G9xbDzY0{FX*XRC;CdKSCPuq_0(I-dMPvWy;tJM8yeV1Oj=Qw1!*Zzj5!jOP#=J zCl=EZa43AGes=%vm^$^>oiDK3ch-8SL-5)C+&*=x)K)wIVI&&^I&VF+Cj1Kd`!O-n!+V0MUVykZ~%^i68bsZ1L3~-TCGVv10!=%{p z)tz(`E=gI|)52=#2Elbq#qqDw3t^r7TaK+1ex1@r=7-@a56dRKjKi{a9Z~(#C+!9Bo7r9@)UP6L7HoI`{@Try+!Z8vEiI6j=71>X}iS(tu=(^>Xj;y$!v}_=R5M|77I<|U}k9kKH zap z;ts5)E!i5WBZroJUN1yF|EwMBnfmz2xTS`uJl8c<)G3RTMOsg4^>?(xLdN_9pW8F~q{J+g8&9gWcXXpAF_0e- zV-vTaGnC_q<{bBUGGc7~Q_)8>mSIn;wYYPd5ga(bPX3oU!XXlKf!Ed$UGZ2@z3iH+ zNcc<9ldO*OP(ZV}#!8_9ih@V1=`qp1O>h!8&N;>V&an?c*`YQ@UVcwi(aa~oBUWea zuX@b)c~5I&5n^76$EF6R>9bK_0Sg1yRb|^&7V4=Ln_0|gmXUS1Y6udK{s@1rCWTJa zmv~11(B0r<9vhEM7lT5-i{L0&%SPi?5MXp1;f=Y5?y+Aem;}2gy}-MQNTUL+#vP9( zOi+2I>e*Aa-2@cDLUuiYLXt`FAYCJ(JD61WaSB+28QE79^>bmtDM4Z-E`u0>-W|{h zl}i5IH|zPYo3Tq#lnnp9XYoRhffc{GdB3ea-e(qNr|x^b)sq}b(kmHzVwu9Ngh?O{ zUC%kU2)&iI?4kA;oG~b?si2#}3FJ#4T41rX`boeNVb9Z(>5~53MrX*SMxW3|25}iF z(r$t*2pZOXXjqz;8Ehd_XRBu$qobO_wZ%yw zmNXoVB6SuRPPU}05`FfKg?-rRrNB=_rU$W;@thUq(N7-BWa6KwDfBx}8w)8E!MhaN zAPXznESjs%x%!XaF9!YMi$pYM4?~sU=^wWXNDyY2%I>n(tIuIj{`87B058E8)_a>0 zo0Mwlu$q-_U+G!K5BG~R5^)z56)(_1xd%h8{Jz=43@>tVP)$1D~8zQHkz}OPGeczS4 zsVZDLLI?YR5ayZ1)ZtZxJG2ph+)+KnN$44AcaH*0qlM-<5&6^NGnV@SyVu3AcHN5S z)W@-u>a*sFme?1Dgogb)Gu^HbBcZr!Oz?aBwyos2?zMt9yR-^Yhwc)~UD7=CdU zB0a(Y)$3A-I)(m5$L!jjUGs2{mXe-}e1b&5rF) zu-K+b#f~80=~%RXU#-ltAVo%}?G}RfdfBUscZUO^IN23rsr3F4I&Tg$DezhCfjv}7 zyX3@1dea<+4C;fO<_3Q*AyPricsVbgFQI6oO6yKtew`{ojJ9+;(F`;rYu2J8 zu4nS%%z5Tre#{5+F-r7&te4hf{hR40alN?xFw8|KQ5@e)9E(1gMT?C%_$)|iol<=F z-`lnl!Tr|Z2@SO9RKg6RjI18kyth6BS~}zaM@tZtei1QyDaQW?LqD{_~w* zw(+@0=+XF~c#y+Jo&rjvw3sRyDm|C-iQT)8>^xxzEbW3W`@MS;rNv@^gQ7p*V8c&P zQcuQ_BuESn9Xi8(y|*JBoobV_+O1G92>Q=iovjql&n!;PJkM}67+>h7pl=Pkp_ zx$B6g)ywQ%{nNS;OHm{wg)(qVt`0->`q?+=?SV2|9vCyoSq$@ z0hxZWKv7b}nD2|7|Jg7G#Y2I5x&X$9InTt4Tz7c;dq_X!E4xQnYFC{1*d+4OChaR! zU*JA*orBfdfEt_2UC-O!s@XM{8hlyfHk%c1s^ispaIEXPdb1`*JH>aftuaZB-8cVS z^sc;owF8^+=%ge=Zlu;r%;qD(h(%CKq$)A&ftAb!ilx#)fgzq)hxrNdWK}krB=O@j-Kv zLHqTl*(TIA8ZPsfNaFhs&BtZxDa+yR`&dEDf_R50^F|dJ;0IVnQM$bBg9L2)daT`a0Rgw z8y}Wh02^a&@Y+P)(<3IzM%bvo3kSxFY!iI!5d#qXLw4CeFL2>Obi0g~SL{?^2ow@f zyGGCxk*VUO*&!GiyA*mCw4GS^(|_Xcs{&n#@~SESJEc%x?BabiJM>oA-*xjWMrc@& zj0w>bAuBfjPMgI&r1oymG76jnu@ZgJB}96*Q;EkWuH)SRjdB}Zweev}XsNZMWfu1^ zG!=fNsJl1U=hiA$b@mUa@sW6!G8%4IPFxJR<&AK!C^b-=*`@&9 zMJ00NUw%Roe+}|1=BS|zNQs&?w+?~h!~AzYA6y^t&B#gtjgY*bD9(?WC5x$3OC_`p zoIyZn;*&9J;0&iTkCGH#D2h_|IFvgQt3W9{td~KSs zgX-mddZ-;eQX(SpVVYP*LY-#8mCxFInXXFF7qKCSS~dhjk$r3Zu>(i)9M6>mQvl(j zIv2d5NV*%R^hcFen@r{Ry6UAthImj@1Nlb@=Lq=@W_9dA0B2b?8K&o@+#v%Vu zDZ$520xaCLTYEc_3x%Oy>1Uj1S+2R?%bByieEIK+Lz9Kx=!NO<90hhti4CZn~Hf{1JLXsST%?>51Ax0u1nxv?N z={Pz2ZSU=Fb6n}u%SOKWK9mq_%msSevRq<@Wz$g9|+(Iofn7mtIFl6gmYXjsXPZgYurHquu<~E_nbE}D~$>E zb>lgSRt{byx1 z!f4a3%!E-)@>|fM>YlRMoBF2PR((G4%wb+>SOe3z22vR?Lm*W{R^WW+dFaS)OXpdH zVAoVPByD>sXPuj^wm9=>@Qo{vjU$l9w)!fPh3x%wB^N4jd%6t9E%P2gOQT}$)^0aF zA<9<8rhjRzqLj6qUac?ghX=_9*7?(qtYj$4`({}c59JFy>42YJnccCw+etHgtEpEqgE}Qc?P;!n zWIa16DFUqY1i6(_2o$rNBC^YpF=k*v%`U#~*O`z)Zp$ZDO+(aRovNa7DvzNB$fdv< zQVCcsB`*6!7&Z6{lU8M!jQ6GSV`MI-)|m$>qPUVKEb56C_U=(70@sYTWX-nqFAN_| zD^o<`AKtawL6nP1O7r)Ld6p$K%c&#t`fq;j{;$hycPAVkSuB{=Ar(wB+Lrd;c-<}l zFlP1ywdrh~poO#bGKk03vmEdEsBh%E35RY~wBJORg%;Jl)+@1=e5;<(yDAi+IgGQe z4|bRQ24z*C>m%ebW-P+%ghUTyo1(vFBd$$i^!fq$(m@O=*<9 zXQ*D9K6DE4nOqcmo80R8kwgZ&Yc?A=gB0nJRK1sSnvd?2UBdRcHp$4G3T3eEp`y{Dh0W1 z{x9kb74x9#>KwBTy1D&qw+}54buH~KtMT4kSETE-EXNs{uZOfZ`*(v;Z(g@L4Pjk!~@1Mrm z>Z#xIoSnsbMn|g}jccl!j?oJ_|Ap%K-4%P9V&R`=jkjEzm}Y7NqjyEK^`JU&7^B&v z&4cuiX2*W%`2Dc<8Z<;4)Y5db)_dJFQ~PU*;X{I(g4(ekRR!8Zx99M)3h!91t5ir+ z#KXmQ?RTnSma6JjEw>%8lXN|2`sQuv*iAP?{_5FOVh-nB#YYYOY*bx=R2*ODO7vis>v)FE5!tDOKZf(MRpDNh*^dz>&l=`Et;%BI#5+;?X3PDJxF(E z6|G&3=1?dCku}4Ob~&!DL)R_0+Jue~0H91No>UUe32`!OxAd zQ%yJ8ZLmyr7w~(!M7uDoE3A^*=?aZ8eh-%aHy=G{leqm5|G};ed)Z`X4}BS-!97yF zgS;R(|5~b4!!(m6Vm%vNdGirF=h?O4e3K`rH8m)b8^I>(E_GK!T0aR*b(HSbBo>Dx zVhDRa;-_|6w|8eZ9<<0z7kwM?uk=6H-8xP!7zAsukxtNHeZ{hnWGvJfG)){`Y1oYI z@}8AVH9SUx{~ML-RBgvQ5*4Yf&eFr|=SaDO*nbpDP3+FUO6Ze3=cI}*(fpX6nfkhJ zQV-iBWU^;Nb=Qr0Gp2Q~Xgs40m`dYmkYPKXp4W_Y;<1Ginx0b3w7i}5P<)l@#wL0rOm1z{8;bt@*;)e4$ z+sW_~)x~+*HQhb-m;R()sRv)ui#ttbXoB9;a~i5ax>9|0n*OE|9i;u#R;|@iE!9Bv zR8RF(^RJpz{o}vXQxmn+HfpPVwZBSqtV-2K*Xb@jrswspzT)L~USg@PQDr93cq_L2 z*66jI=Aef9^Vudrq`2c_Z>CS2YuTJf8O7uPx0YRh@!?<(|E4$jVQRigkpuSoO5JXzq0fl=)ZC^4P=KoL8KX<8r%p9Lr0o6 z?422WUA~W=;`CL5NHgZCPe2FtBZsQ%Threk8)oF+S4XA#lqrB9(vA@^yv!I$y56*D zZ_B{HZFfDuLo0%)KuqC-U98=9hL_hSl+c0-Zc?hHQhmtqCx{BfVhvPnCP}PKq24lW z-CHW~ui9DzxT2IGDi|-RHB%(kaSNRifdhkK+g;q?oV%SwFxO5%8pG1J6n6poB^~Q01D#z$b_b$8tTa7EFy;zawm$ z_}Zl3;OwDWG?igb5E+TrwKEeVlKV>Od($SKsd`B)9eZh@rZD6QB117=B`RQIL~;h% zHu6R5{QoY}{<@o6%LyWbF+=C7GLs^bwU6zw9^b3lT7NTj)BT#xa3_e2zB0c_8!#mz zdDS(+ww?dJhX3D|D%Ef;WUv!NMq`P}wJ8%KQZvxDp}$noN}uK)q}w!+fld$^k7asP zTQC_SReKnpO56314|Ch9uSRl;6+vVvMyd@{A)@v8>V55~^E6zu8Q=twwRlZ?F%cp? z|1xgur3`L@$ZEWz4orebS34$Yf{1C1Qb(phq_3LBGmHo#mW#)JOn|7En;A$15wlpX zXSFAjA1Z2h9$yhe%s$l}u3eb=P;piCIRlCyViOBht}U7PkQp~JqzED=@tX#!DU%*} zd_@pMDlt*LRg)c4VqU=55bS;RF%k z_(@l&2@@T%p-^u##0VmyF-E0py+H@4uyYw?1QE$Et;)0=6CAQ>Bh6u`1s21!v3hDG znIP8ryQ2ov8?tQ#gDt3-tb_il-F6zN8RUdmDQ4()Zt_5G9LazSD3x^}vgM_RFq znYu^qRlszH+^VS`8Gb>;Bpr}+RV%Br$~BLy#UK`FxJp!+sSNqhpCK4PEY`JYe8pc+ zC+m4FA%78#C3;RLs1}nL@}&u%?*X!{D(xV}!+NDj%2*o*R4bfy|Hfg!&JG8pZ* zft{_w3{<+2&d@6?BN6y5`n*n6L#8g|Up;<*n8$E!l+lWBpc0j9Hkl1D7HXt=^Q!|s z`Yc)0nTzR5i=>ucQvTL7$Or$D zs9i=LVFDR;3QSUQQ4P%@R%+v4DeRRD( z<~WqR#xjl8wc3}1NZ@W)hO1r7QQy382y3Vwx?2;dMvmiK4OR~|U}8cT1~F*O{`S0I z&5inFBmGU~`hm)1ec>qADcXVw31PiJ=NlZScv(A{c1kmqXrRXMXe;C2*p;hP+b|U& zLRCTaQ$KyKbYND%0m$ zM*WhGsT!`n+AHgyW&=4;zzz_LzeWeBcEDX!N1fD9|IxS9a*eTE6ZLQP(;*x@f@s;A z;hpDLqQPnrnSQFL4(g@*G)41OoN#Y;e&Pk~65F1usqNKO7w8T>ukl(KTR}Cf+#CIt3 z{Y>uTP3=wVt)Pk8>TsQ{>-4Z*(*(2YcW3J>jnYuvpmTJ%cH%WS@TXmv&T||uXfyjk`B{u+9-|7gMrvMk|{lh z?>wH??zCJ56{)^9Q(Nt;PAbvSD%Cmat1C1>H>m8d7^-1^#E`%K+wB^l0lGqcb+$^? zL*3L#?bTMBs{wB=fOMS4#Ga$Ctsc`3v>SjZxrWI->#+@L7$y8l;VB zGXPOk#w4G$_+A%l16m9~RB;nXcH#r|WFInsXuFBYKEtt8PiRjX3qbV!gDF3wTh7X~ z6-@;o9*$?)&rp1*(^ZRx0uUd2F!g6(5A)y{pKApmwyJ9hOF#wUbM@s*D*$ozG0Q-j zJ3RQ^0U+iEuo$F#rqw8&#vOA2z*~@1V!SR>OPU4%e)k0nLlQAlW!g&xvx=~&ro-7+4gjmGrJq?Q))))*w0f!zEdl^*b3Tj3YQH+3((x=E0I)tq`hZ2_ucc$S zdh(4G03@r87V(-~kLqaEq!|DpHK)gT>6oN4byj7X007bxzq>(}=v7^)Eh#+!R7{~B zh|SV5S@-E^)uZSDkQtS9TjX!-cv|PE6{QA%%n&ZW_G||PfNa`X<0G?h z%+n|hP-k{@06=ck(k+4C6Eai7b&=Zfivs|1Z#z8~;L#)R>NcIAtvK`$0P<^hjnJ|H zKE@rZa-FSR*~tL_PPWj^nqjzX%+M>kRVS&9s!${Va8;~B^pL?aGEJ}QZk?xt)PkY_ zKsYLCcU`X6H8+P##t#~$A-YN@X?M2$0YK=Aw4+YbZF)&RX85l0AN8Sz>mK#jsXAD# zRFz}{KvdOGYaOgoU8-C4u%6RP8ly3qs7d-oGqqUDHS>@7PLniAlk~a9=v6(fp(@h= n^;4<3X>V<#CVX-W0J-x22f+A(q24ce00000NkvXXu0mjfJLso; literal 0 HcmV?d00001 diff --git a/src/assets/faqmaker.svg b/src/assets/faqmaker.svg new file mode 100644 index 000000000..9e5b9838a --- /dev/null +++ b/src/assets/faqmaker.svg @@ -0,0 +1,4 @@ + + + + From 3468378e380e0d28733ff02afab52d7c9d9714db Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Tue, 24 Sep 2024 16:54:21 +0200 Subject: [PATCH 246/326] :recycle: use tailwind variable for teal text --- src/app/register/plan/form.tsx | 4 ++-- src/components/button/Button.tsx | 2 +- src/components/field/Field.tsx | 2 +- src/components/select/Select.tsx | 2 +- src/modules/search/Search.tsx | 2 +- src/modules/settings/users/Users.tsx | 2 +- tailwind.config.js | 5 +++++ 7 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/app/register/plan/form.tsx b/src/app/register/plan/form.tsx index 98a72509c..f1a7e14ce 100644 --- a/src/app/register/plan/form.tsx +++ b/src/app/register/plan/form.tsx @@ -119,7 +119,7 @@ export default function Form() { className="w-full overflow-hidden rounded-md bg-primary-foreground-alpha p-4 text-center text-primary shadow-sm shadow-tealA-7 transition-all duration-300 hover:shadow-tealA-8" >
    -

    +

    {plan.label}

    @@ -134,7 +134,7 @@ export default function Form() {

      {plan.benefits.map((benefit) => (
    • - +

      {benefit}

    • ))} diff --git a/src/components/button/Button.tsx b/src/components/button/Button.tsx index cbbfbff99..db10359ee 100644 --- a/src/components/button/Button.tsx +++ b/src/components/button/Button.tsx @@ -15,7 +15,7 @@ const button = cva('transition-all duration-300 ease-in-out lowercase', { 'bg-primary-foreground text-primary shadow-sm shadow-grayA-7 hover:bg-primary-foreground-hover disabled:shadow-transparent disabled:bg-transparent', secondary: - 'bg-transparent text-tealA-11 shadow-sm shadow-tealA-7 hover:shadow-tealA-8', + 'bg-transparent text-accent-secondary shadow-sm shadow-tealA-7 hover:shadow-tealA-8', destructive: 'bg-destructive text-white shadow-sm shadow-transparent hover:bg-destructive-hover disabled:bg-destructive-disabled disabled:text-redA-11 disabled:shadow-sm disabled:shadow-redA-7 disabled:hover:shadow-redA-8 disabled:dark:bg-destructive-disabled-dark', diff --git a/src/components/field/Field.tsx b/src/components/field/Field.tsx index e84af6872..e34fcefbf 100644 --- a/src/components/field/Field.tsx +++ b/src/components/field/Field.tsx @@ -27,7 +27,7 @@ export const Field = ({ return (
      + ); } diff --git a/src/app/question/edit/edit.tsx b/src/app/question/edit/edit.tsx index b1f009229..3df5733ed 100644 --- a/src/app/question/edit/edit.tsx +++ b/src/app/question/edit/edit.tsx @@ -9,7 +9,7 @@ import { useForm } from 'react-hook-form'; import { updateNode, updateNodeSchema } from '@/actions'; import { BackButton, Button, Field, Input, resultToast } from '@/components'; import { useMediaQuery } from '@/hooks'; -import { TagsList } from '@/modules'; +import { PageChangeAlert, TagsList } from '@/modules'; import { Limits, arraysAreEqual } from '@/utils'; import type { ExtendedNode, Me } from '@/types'; @@ -108,6 +108,7 @@ export default function Edit({ me, node, tags }: Props) {
      + ); } diff --git a/src/modules/profile/Update.tsx b/src/modules/profile/Update.tsx index 2cccea391..2de7de0f7 100644 --- a/src/modules/profile/Update.tsx +++ b/src/modules/profile/Update.tsx @@ -12,6 +12,8 @@ import { Button, Field, Input, resultToast } from '@/components'; import { useMediaQuery } from '@/hooks'; import { Limits } from '@/utils'; +import { PageChangeAlert } from '../navigation'; + import type { IUserUpdateFields, Me } from '@/types'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; @@ -130,6 +132,7 @@ export const UpdateProfile = ({ me }: Props) => { Update + ); }; diff --git a/src/modules/settings/general/Company.tsx b/src/modules/settings/general/Company.tsx index 3416660af..b397146e9 100644 --- a/src/modules/settings/general/Company.tsx +++ b/src/modules/settings/general/Company.tsx @@ -7,6 +7,7 @@ import { useForm } from 'react-hook-form'; import { updateTenant, updateTenantSchema } from '@/actions'; import { Button, Field, Input, resultToast } from '@/components'; +import { PageChangeAlert } from '@/modules'; import { Limits } from '@/utils'; import type { ITenantUpdateFields } from '@/types'; @@ -111,6 +112,7 @@ export function Company({ tenant, integrations }: Props) { Update +
    ); } From 394895380019f13233defcee155ad17ad68c88ea Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Wed, 25 Sep 2024 17:27:43 +0200 Subject: [PATCH 263/326] :bug: fix button staying schema always invalid for update user --- src/actions/update-user/action.ts | 29 +++++++++++---------------- src/modules/settings/users/Update.tsx | 1 + 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/src/actions/update-user/action.ts b/src/actions/update-user/action.ts index 67ea09a77..8ba1cecc0 100644 --- a/src/actions/update-user/action.ts +++ b/src/actions/update-user/action.ts @@ -11,20 +11,15 @@ import { updateUserSchema } from './schema'; export const updateUser = authActionClient .metadata({ actionName: 'updateUser' }) .schema(updateUserSchema) - .action( - async ({ - parsedInput: { tenantId, email, name, role }, - ctx: { userId }, - }) => { - await prisma.user.update({ - where: { id: userId, tenantId }, - data: { - email, - name, - role, - }, - }); - revalidatePath(Routes.SITE.PROFILE); - return { message: 'User updated successfully' }; - }, - ); + .action(async ({ parsedInput: { tenantId, email, id, name, role } }) => { + await prisma.user.update({ + where: { id, tenantId }, + data: { + email, + name, + role, + }, + }); + revalidatePath(Routes.SITE.PROFILE); + return { message: 'User updated successfully' }; + }); diff --git a/src/modules/settings/users/Update.tsx b/src/modules/settings/users/Update.tsx index 7c31d0922..f57a57cc9 100644 --- a/src/modules/settings/users/Update.tsx +++ b/src/modules/settings/users/Update.tsx @@ -57,6 +57,7 @@ const Form = ({ user, tenantId }: Props) => { email: user.email, role: user.role, tenantId, + id: user.id, }, }); From a71dda57c419a48d6b00fb80fff2f9996eacfef3 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 30 Sep 2024 09:59:19 +0200 Subject: [PATCH 264/326] :goal_net: redirect to home if no user in url params --- src/app/question/[id]/page.tsx | 1 + src/app/question/answer/page.tsx | 1 + src/app/question/edit/page.tsx | 1 + 3 files changed, 3 insertions(+) diff --git a/src/app/question/[id]/page.tsx b/src/app/question/[id]/page.tsx index a632fbf24..d85560ad2 100644 --- a/src/app/question/[id]/page.tsx +++ b/src/app/question/[id]/page.tsx @@ -12,6 +12,7 @@ export default async function Page({ params }) { if (!me) return redirect(Routes.SITE.LOGIN); const { tenantId, id: userId } = me; const { id } = params; + if (!id) return redirect(Routes.SITE.HOME); const node = await getNode(tenantId, id); const favorite = await getFavorite(userId, node.id); diff --git a/src/app/question/answer/page.tsx b/src/app/question/answer/page.tsx index cc1aeda8d..62f4fe79b 100644 --- a/src/app/question/answer/page.tsx +++ b/src/app/question/answer/page.tsx @@ -12,6 +12,7 @@ export default async function Page({ searchParams }) { if (!me) return redirect(Routes.SITE.LOGIN); const { tenantId } = me; const { id } = searchParams; + if (!id) return redirect(Routes.SITE.HOME); const node = await getNode(tenantId, id); return ( diff --git a/src/app/question/edit/page.tsx b/src/app/question/edit/page.tsx index 69c8f0c01..c05a6b4e8 100644 --- a/src/app/question/edit/page.tsx +++ b/src/app/question/edit/page.tsx @@ -12,6 +12,7 @@ export default async function Page({ searchParams }) { if (!me) return redirect(Routes.SITE.LOGIN); const { tenantId } = me; const { id } = searchParams; + if (!id) return redirect(Routes.SITE.HOME); const node = await getNode(tenantId, id); const tags = await getTags(tenantId); From 62e028254dde192b3634f5f950ab4f19da9088c2 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 30 Sep 2024 10:11:41 +0200 Subject: [PATCH 265/326] :children_crossing: improve error page --- src/app/error.tsx | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/app/error.tsx b/src/app/error.tsx index fac74b181..2aeab5d25 100644 --- a/src/app/error.tsx +++ b/src/app/error.tsx @@ -2,7 +2,10 @@ import { useEffect } from 'react'; +import Link from 'next/link'; + import { Button } from '@/components'; +import { Routes } from '@/utils'; export default function Error({ error, @@ -18,14 +21,15 @@ export default function Error({ return (

    Something went wrong!

    - +

    {error.message}

    +
    + + +
    ); } From 35d2edb2b7f97d53f33ff64691cb753dd0720fad Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 30 Sep 2024 10:13:18 +0200 Subject: [PATCH 266/326] :goal_net: better error handling --- src/actions/get-me/index.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/actions/get-me/index.ts b/src/actions/get-me/index.ts index 2d478c66f..97705a140 100644 --- a/src/actions/get-me/index.ts +++ b/src/actions/get-me/index.ts @@ -2,19 +2,21 @@ import { cache } from 'react'; -import { getServerSession } from 'next-auth'; +import { redirect } from 'next/navigation'; -import { authOptions } from '@/lib/auth'; +import { auth } from '@/auth'; +import { Routes } from '@/utils'; import prisma from 'lib/prisma'; import type { Me } from '@/types'; import type { Session } from 'next-auth'; export const getMe = cache(async (): Promise => { - const session = await getServerSession(authOptions); - const id = session?.user?.id; + const session = await auth(); + if (!session) redirect(Routes.SITE.LOGIN); + const id = session.user?.id; if (!id) { - throw new Error('ID not found'); + throw new Error('User ID not found'); } const me = await prisma.user.findUnique({ where: { id }, From 32b8016ec4d779f17afdc5a95a0a16f19d6db3de Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 30 Sep 2024 10:13:56 +0200 Subject: [PATCH 267/326] :arrow_up: upgrade next-auth + provider --- package.json | 4 +- pnpm-lock.yaml | 138 ++++++++++++++++++++++++------------------------- 2 files changed, 69 insertions(+), 73 deletions(-) diff --git a/package.json b/package.json index 0c6f4149f..639a08a3c 100644 --- a/package.json +++ b/package.json @@ -32,9 +32,9 @@ "postinstall": "prisma generate" }, "dependencies": { + "@auth/prisma-adapter": "^2.5.3", "@google-cloud/storage": "^7.7.0", "@hookform/resolvers": "^3.3.4", - "@next-auth/prisma-adapter": "^1.0.7", "@prisma/client": "5.16.1", "@radix-ui/colors": "^3.0.0", "@radix-ui/react-alert-dialog": "^1.1.1", @@ -59,7 +59,7 @@ "jotai": "^2.6.4", "lucide-react": "^0.438.0", "next": "14.2.4", - "next-auth": "^4.24.7", + "next-auth": "5.0.0-beta.22", "next-remove-imports": "^1.0.12", "next-safe-action": "^7.0.2", "next-themes": "^0.3.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 56b6b3044..8f38f5b49 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,15 +5,15 @@ settings: excludeLinksFromLockfile: false dependencies: + '@auth/prisma-adapter': + specifier: ^2.5.3 + version: 2.5.3(@prisma/client@5.16.1) '@google-cloud/storage': specifier: ^7.7.0 version: 7.13.0 '@hookform/resolvers': specifier: ^3.3.4 version: 3.9.0(react-hook-form@7.53.0) - '@next-auth/prisma-adapter': - specifier: ^1.0.7 - version: 1.0.7(@prisma/client@5.16.1)(next-auth@4.24.7) '@prisma/client': specifier: 5.16.1 version: 5.16.1(prisma@5.16.1) @@ -87,8 +87,8 @@ dependencies: specifier: 14.2.4 version: 14.2.4(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@18.2.0)(react@18.2.0) next-auth: - specifier: ^4.24.7 - version: 4.24.7(next@14.2.4)(react-dom@18.2.0)(react@18.2.0) + specifier: 5.0.0-beta.22 + version: 5.0.0-beta.22(next@14.2.4)(react@18.2.0) next-remove-imports: specifier: ^1.0.12 version: 1.0.12(webpack@5.94.0) @@ -262,6 +262,42 @@ packages: '@jridgewell/trace-mapping': 0.3.25 dev: false + /@auth/core@0.35.3: + resolution: {integrity: sha512-g6qfiqU4OtyvIEZ8J7UoIwAxEnNnLJV0/f/DW41U+4G5nhBlaCrnKhawJIJpU0D3uavXLeDT3B0BkjtiimvMDA==} + peerDependencies: + '@simplewebauthn/browser': ^9.0.1 + '@simplewebauthn/server': ^9.0.2 + nodemailer: ^6.8.0 + peerDependenciesMeta: + '@simplewebauthn/browser': + optional: true + '@simplewebauthn/server': + optional: true + nodemailer: + optional: true + dependencies: + '@panva/hkdf': 1.2.1 + '@types/cookie': 0.6.0 + cookie: 0.6.0 + jose: 5.9.3 + oauth4webapi: 2.17.0 + preact: 10.11.3 + preact-render-to-string: 5.2.3(preact@10.11.3) + dev: false + + /@auth/prisma-adapter@2.5.3(@prisma/client@5.16.1): + resolution: {integrity: sha512-hUQ7KT4Ufbg4RqmfvRUNwQjuNsTdxWXTIid8IbmAcT5b6DMWQEvDEJUZL14rgrBHk5xZQbagfM28VxF75NgnNw==} + peerDependencies: + '@prisma/client': '>=2.26.0 || >=3 || >=4 || >=5' + dependencies: + '@auth/core': 0.35.3 + '@prisma/client': 5.16.1(prisma@5.16.1) + transitivePeerDependencies: + - '@simplewebauthn/browser' + - '@simplewebauthn/server' + - nodemailer + dev: false + /@babel/code-frame@7.24.7: resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} @@ -894,16 +930,6 @@ packages: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - /@next-auth/prisma-adapter@1.0.7(@prisma/client@5.16.1)(next-auth@4.24.7): - resolution: {integrity: sha512-Cdko4KfcmKjsyHFrWwZ//lfLUbcLqlyFqjd/nYE2m3aZ7tjMNUjpks47iw7NTCnXf+5UWz5Ypyt1dSs1EP5QJw==} - peerDependencies: - '@prisma/client': '>=2.26.0 || >=3' - next-auth: ^4 - dependencies: - '@prisma/client': 5.16.1(prisma@5.16.1) - next-auth: 4.24.7(next@14.2.4)(react-dom@18.2.0)(react@18.2.0) - dev: false - /@next/env@14.2.3: resolution: {integrity: sha512-W7fd7IbkfmeeY2gXrzJYDx8D2lWKbVoTIj1o1ScPHNzvp30s1AuoEFSdr39bC5sjxJaxTtq3OTCZboNp0lNWHA==} dev: false @@ -2385,6 +2411,10 @@ packages: resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} dev: false + /@types/cookie@0.6.0: + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} + dev: false + /@types/cors@2.8.17: resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} dependencies: @@ -3452,8 +3482,8 @@ packages: engines: {node: '>= 0.6'} dev: false - /cookie@0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + /cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} dev: false @@ -5500,8 +5530,8 @@ packages: resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} hasBin: true - /jose@4.15.9: - resolution: {integrity: sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==} + /jose@5.9.3: + resolution: {integrity: sha512-egLIoYSpcd+QUF+UHgobt5YzI2Pkw/H39ou9suW687MY6PmCwPmkNV/4TNjn1p2tX5xO3j0d0sq5hiYE24bSlg==} dev: false /jotai@2.10.0(@types/react@18.3.8)(react@18.2.0): @@ -5760,13 +5790,6 @@ packages: yallist: 3.1.1 dev: false - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - dependencies: - yallist: 4.0.0 - dev: false - /lucide-react@0.438.0(react@18.2.0): resolution: {integrity: sha512-uq6yCB+IzVfgIPMK8ibkecXSWTTSOMs9UjUgZigfrDCVqgdwkpIgYg1fSYnf0XXF2AoSyCJZhoZXQwzoai7VGw==} peerDependencies: @@ -6348,29 +6371,25 @@ packages: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: false - /next-auth@4.24.7(next@14.2.4)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-iChjE8ov/1K/z98gdKbn2Jw+2vLgJtVV39X+rCP5SGnVQuco7QOr19FRNGMIrD8d3LYhHWV9j9sKLzq1aDWWQQ==} + /next-auth@5.0.0-beta.22(next@14.2.4)(react@18.2.0): + resolution: {integrity: sha512-QGBo9HGOjmnJBHGXvtFztl0tM5tL0porDlk74HVoCCzXd986ApOlIW3EmiCuho7YzEopgkFiwwmcXpoCrHAtYw==} peerDependencies: - next: ^12.2.5 || ^13 || ^14 + '@simplewebauthn/browser': ^9.0.1 + '@simplewebauthn/server': ^9.0.2 + next: ^14.0.0-0 || ^15.0.0-0 nodemailer: ^6.6.5 - react: ^17.0.2 || ^18 - react-dom: ^17.0.2 || ^18 + react: ^18.2.0 || ^19.0.0-0 peerDependenciesMeta: + '@simplewebauthn/browser': + optional: true + '@simplewebauthn/server': + optional: true nodemailer: optional: true dependencies: - '@babel/runtime': 7.25.6 - '@panva/hkdf': 1.2.1 - cookie: 0.5.0 - jose: 4.15.9 + '@auth/core': 0.35.3 next: 14.2.4(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@18.2.0)(react@18.2.0) - oauth: 0.9.15 - openid-client: 5.7.0 - preact: 10.24.0 - preact-render-to-string: 5.2.6(preact@10.24.0) react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - uuid: 8.3.2 dev: false /next-remove-imports@1.0.12(webpack@5.94.0): @@ -6556,19 +6575,14 @@ packages: boolbase: 1.0.0 dev: false - /oauth@0.9.15: - resolution: {integrity: sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==} + /oauth4webapi@2.17.0: + resolution: {integrity: sha512-lbC0Z7uzAFNFyzEYRIC+pkSVvDHJTbEW+dYlSBAlCYDe6RxUkJ26bClhk8ocBZip1wfI9uKTe0fm4Ib4RHn6uQ==} dev: false /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - /object-hash@2.2.0: - resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} - engines: {node: '>= 6'} - dev: false - /object-hash@3.0.0: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} @@ -6637,11 +6651,6 @@ packages: es-object-atoms: 1.0.0 dev: true - /oidc-token-hash@5.0.3: - resolution: {integrity: sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==} - engines: {node: ^10.13.0 || >=12.0.0} - dev: false - /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: @@ -6669,15 +6678,6 @@ packages: mimic-function: 5.0.1 dev: true - /openid-client@5.7.0: - resolution: {integrity: sha512-4GCCGZt1i2kTHpwvaC/sCpTpQqDnBzDzuJcJMbH+y1Q5qI8U8RBvoSh28svarXszZHR5BAMXbJPX1PGPRE3VOA==} - dependencies: - jose: 4.15.9 - lru-cache: 6.0.0 - object-hash: 2.2.0 - oidc-token-hash: 5.0.3 - dev: false - /optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} @@ -6929,17 +6929,17 @@ packages: picocolors: 1.1.0 source-map-js: 1.2.1 - /preact-render-to-string@5.2.6(preact@10.24.0): - resolution: {integrity: sha512-JyhErpYOvBV1hEPwIxc/fHWXPfnEGdRKxc8gFdAZ7XV4tlzyzG847XAyEZqoDnynP88akM4eaHcSOzNcLWFguw==} + /preact-render-to-string@5.2.3(preact@10.11.3): + resolution: {integrity: sha512-aPDxUn5o3GhWdtJtW0svRC2SS/l8D9MAgo2+AWml+BhDImb27ALf04Q2d+AHqUUOc6RdSXFIBVa2gxzgMKgtZA==} peerDependencies: preact: '>=10' dependencies: - preact: 10.24.0 + preact: 10.11.3 pretty-format: 3.8.0 dev: false - /preact@10.24.0: - resolution: {integrity: sha512-aK8Cf+jkfyuZ0ZZRG9FbYqwmEiGQ4y/PUO4SuTWoyWL244nZZh7bd5h2APd4rSNDYTBNghg1L+5iJN3Skxtbsw==} + /preact@10.11.3: + resolution: {integrity: sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==} dev: false /prelude-ls@1.2.1: @@ -8635,10 +8635,6 @@ packages: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} dev: false - /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: false - /yaml@2.5.1: resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==} engines: {node: '>= 14'} From 4cbdda25ce5879a75de1144596ccf72085267b92 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 30 Sep 2024 10:14:34 +0200 Subject: [PATCH 268/326] :construction: migrate config to authjs --- .env.sample | 4 ++-- .github/workflows/main.yml | 4 ++-- .github/workflows/tests.yml | 4 ++-- src/actions/create-users/action.ts | 5 ++--- src/actions/get-signed-logo/index.ts | 5 ++--- src/app/api/auth/[...nextauth]/route.ts | 9 ++------- src/{lib/auth.ts => auth.config.ts} | 19 ++++++------------- src/auth.ts | 15 +++++++++++++++ src/lib/safe-actions.ts | 6 ++---- src/middleware.ts | 5 ----- src/types/environment.d.ts | 4 ++-- 11 files changed, 37 insertions(+), 43 deletions(-) rename src/{lib/auth.ts => auth.config.ts} (82%) create mode 100644 src/auth.ts delete mode 100644 src/middleware.ts diff --git a/.env.sample b/.env.sample index d7e0ef5f9..43e4db8dc 100644 --- a/.env.sample +++ b/.env.sample @@ -7,8 +7,8 @@ DATABASE_URL=postgresql://USER:PASSWORD@HOST:PORT/DATABASE # Next-Auth variables NEXTAUTH_URL=https://localhost:3000 NEXTAUTH_SECRET= -GOOGLE_CLIENT_ID= -GOOGLE_CLIENT_SECRET= +AUTH_GOOGLE_ID= +AUTH_GOOGLE_SECRET= # Tests user TEST_EMAIL= diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ce435fecf..380819509 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -93,8 +93,8 @@ jobs: HOME: /root TEST_EMAIL: ${{secrets.TEST_EMAIL}} TEST_PASSWORD: ${{secrets.TEST_PASSWORD}} - GOOGLE_CLIENT_SECRET: ${{secrets.GOOGLE_CLIENT_SECRET}} - GOOGLE_CLIENT_ID: ${{secrets.GOOGLE_CLIENT_ID}} + AUTH_GOOGLE_SECRET: ${{secrets.AUTH_GOOGLE_SECRET}} + AUTH_GOOGLE_ID: ${{secrets.AUTH_GOOGLE_ID}} NEXTAUTH_URL: ${{secrets.NEXTAUTH_URL}} NEXTAUTH_SECRET: ${{secrets.NEXTAUTH_SECRET}} diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 6756bfbe8..e40698c36 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -61,8 +61,8 @@ # HOME: /root # TEST_EMAIL: ${{secrets.TEST_EMAIL}} # TEST_PASSWORD: ${{secrets.TEST_PASSWORD}} -# GOOGLE_CLIENT_SECRET: ${{secrets.GOOGLE_CLIENT_SECRET}} -# GOOGLE_CLIENT_ID: ${{secrets.GOOGLE_CLIENT_ID}} +# AUTH_GOOGLE_SECRET: ${{secrets.AUTH_GOOGLE_SECRET}} +# AUTH_GOOGLE_ID: ${{secrets.AUTH_GOOGLE_ID}} # NEXTAUTH_URL: ${{secrets.NEXTAUTH_URL}} # NEXTAUTH_SECRET: ${{secrets.NEXTAUTH_SECRET}} diff --git a/src/actions/create-users/action.ts b/src/actions/create-users/action.ts index 87a42f3aa..f71fb2d1b 100644 --- a/src/actions/create-users/action.ts +++ b/src/actions/create-users/action.ts @@ -1,9 +1,8 @@ 'use server'; import { revalidatePath } from 'next/cache'; -import { getServerSession } from 'next-auth'; -import { authOptions } from '@/lib/auth'; +import { auth } from '@/auth'; import prisma from 'lib/prisma'; import { createUsersSchema } from './schema'; @@ -27,7 +26,7 @@ export async function createUsers(usersArray, formData) { const data = Object.fromEntries(formData) as CreateUsersData; data.usersCount = Number(data.usersCount); data.usersArray = usersArray; - const session = await getServerSession(authOptions); + const session = await auth(); if (!session) { return { error: 'Not signed in' }; } diff --git a/src/actions/get-signed-logo/index.ts b/src/actions/get-signed-logo/index.ts index cfb7ff829..afcaf3b79 100644 --- a/src/actions/get-signed-logo/index.ts +++ b/src/actions/get-signed-logo/index.ts @@ -1,9 +1,8 @@ 'use server'; import { Storage } from '@google-cloud/storage'; -import { getServerSession } from 'next-auth'; -import { authOptions } from '@/lib/auth'; +import { auth } from '@/auth'; import { upsertLogoSchema } from './schema'; @@ -19,7 +18,7 @@ export async function getSignedLogo(formData: FormData) { return { error: 'Data not provided' }; } const data = Object.fromEntries(formData) as SignedLogoData; - const session = await getServerSession(authOptions); + const session = await auth(); if (session) { const result = upsertLogoSchema.safeParse(data); if (result.success === false) { diff --git a/src/app/api/auth/[...nextauth]/route.ts b/src/app/api/auth/[...nextauth]/route.ts index 5d00646ba..0aa1cd732 100644 --- a/src/app/api/auth/[...nextauth]/route.ts +++ b/src/app/api/auth/[...nextauth]/route.ts @@ -1,7 +1,2 @@ -import NextAuth from 'next-auth'; - -import { authOptions } from '@/lib/auth'; - -const handler = NextAuth(authOptions); - -export { handler as GET, handler as POST }; +import { handlers } from '@/auth'; +export const { GET, POST } = handlers; diff --git a/src/lib/auth.ts b/src/auth.config.ts similarity index 82% rename from src/lib/auth.ts rename to src/auth.config.ts index e9266ac6d..75dfa6472 100644 --- a/src/lib/auth.ts +++ b/src/auth.config.ts @@ -1,19 +1,16 @@ -import { PrismaAdapter } from '@next-auth/prisma-adapter'; import EmailProvider from 'next-auth/providers/email'; import GoogleProvider from 'next-auth/providers/google'; +import { NextAuthConfig } from 'next-auth'; import { sendVerificationRequest } from '@/lib'; import { Routes } from '@/utils'; import prisma from 'lib/prisma'; -import type { NextAuthOptions } from 'next-auth'; - -export const authOptions: NextAuthOptions = { - adapter: PrismaAdapter(prisma), +export const authConfig: NextAuthConfig = { providers: [ GoogleProvider({ - clientId: process.env.GOOGLE_CLIENT_ID, - clientSecret: process.env.GOOGLE_CLIENT_SECRET, + clientId: process.env.AUTH_GOOGLE_ID, + clientSecret: process.env.AUTH_GOOGLE_SECRET, allowDangerousEmailAccountLinking: true, profile(profile) { return { @@ -37,6 +34,7 @@ export const authOptions: NextAuthOptions = { sendVerificationRequest, }), ], + trustHost: true, pages: { signIn: Routes.SITE.LOGIN, error: Routes.SITE.LOGIN, @@ -81,9 +79,4 @@ export const authOptions: NextAuthOptions = { return session; }, }, - session: { - strategy: `jwt`, - maxAge: 60 * 60, - }, - secret: process.env.NEXTAUTH_SECRET, -}; +} satisfies NextAuthConfig; diff --git a/src/auth.ts b/src/auth.ts new file mode 100644 index 000000000..24d1b4260 --- /dev/null +++ b/src/auth.ts @@ -0,0 +1,15 @@ +import { PrismaAdapter } from '@auth/prisma-adapter'; +import NextAuth from 'next-auth'; + +import prisma from 'lib/prisma'; + +import { authConfig } from './auth.config'; + +export const { handlers, auth, signIn, signOut } = NextAuth({ + adapter: PrismaAdapter(prisma), + session: { + strategy: 'jwt', + maxAge: 60 * 60, + }, + ...authConfig, +}); diff --git a/src/lib/safe-actions.ts b/src/lib/safe-actions.ts index 4094e4831..ac70cc7df 100644 --- a/src/lib/safe-actions.ts +++ b/src/lib/safe-actions.ts @@ -1,10 +1,8 @@ -import { getServerSession } from 'next-auth'; import { createSafeActionClient } from 'next-safe-action'; import { z } from 'zod'; import { getUserId } from '@/actions/get-me'; - -import { authOptions } from './auth'; +import { auth } from '@/auth'; export class ActionError extends Error {} @@ -24,7 +22,7 @@ export const actionClient = createSafeActionClient({ }); export const authActionClient = actionClient.use(async ({ next }) => { - const session = await getServerSession(authOptions); + const session = await auth(); if (!session) { throw new Error('Not signed in'); } diff --git a/src/middleware.ts b/src/middleware.ts deleted file mode 100644 index 2509e89af..000000000 --- a/src/middleware.ts +++ /dev/null @@ -1,5 +0,0 @@ -export { default } from 'next-auth/middleware'; - -export const config = { - matcher: ['/', '/question', '/question/:path*', '/profile', '/settings'], -}; diff --git a/src/types/environment.d.ts b/src/types/environment.d.ts index b4eb45756..e12299e31 100644 --- a/src/types/environment.d.ts +++ b/src/types/environment.d.ts @@ -7,8 +7,8 @@ declare global { NEXTAUTH_URL: string; NEXTAUTH_SECRET: string; - GOOGLE_CLIENT_ID: string; - GOOGLE_CLIENT_SECRET: string; + AUTH_GOOGLE_ID: string; + AUTH_GOOGLE_SECRET: string; TEST_EMAIL: string; TEST_PASSWORD: string; From 5cd7e8acf0d460a17038dc455a07f6e70d17889d Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Mon, 30 Sep 2024 12:31:37 +0200 Subject: [PATCH 269/326] :recycle: migrate google signin and signout --- src/actions/index.ts | 4 +++- src/actions/sign-in/index.ts | 8 +++++++ src/actions/sign-out/index.ts | 8 +++++++ src/app/login/page.tsx | 22 ++++++++++++++++--- src/components/button/LoginButton.tsx | 29 ------------------------- src/components/button/index.ts | 1 - src/modules/header/Header.tsx | 31 +++++++++++++-------------- 7 files changed, 53 insertions(+), 50 deletions(-) create mode 100644 src/actions/sign-in/index.ts create mode 100644 src/actions/sign-out/index.ts delete mode 100644 src/components/button/LoginButton.tsx diff --git a/src/actions/index.ts b/src/actions/index.ts index 4ce4ca9aa..8f418d4ff 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -6,8 +6,8 @@ export { createTag, createTagSchema } from './create-tag'; export { createTenant, createTenantCompanySchema, - createTenantUserSchema, createTenantSchema, + createTenantUserSchema, } from './create-tenant'; export { createUser, createUserSchema } from './create-user'; export { createUsers, createUsersSchema } from './create-users'; @@ -34,6 +34,8 @@ export { getUserAnswers } from './get-user-answers'; export { getUserQuestions } from './get-user-questions'; export { getUsers } from './get-users'; export { getUsersCount } from './get-users-count'; +export { signInAction } from './sign-in'; +export { signOutAction } from './sign-out'; export { updateAnswer, updateAnswerSchema } from './update-answer'; export { updateLogo, updateLogoSchema } from './update-logo'; export { updateNode, updateNodeSchema } from './update-node'; diff --git a/src/actions/sign-in/index.ts b/src/actions/sign-in/index.ts new file mode 100644 index 000000000..ef35a8bf3 --- /dev/null +++ b/src/actions/sign-in/index.ts @@ -0,0 +1,8 @@ +'use server'; + +import { signIn } from '@/auth'; +import { Routes } from '@/utils'; + +export const signInAction = async () => { + await signIn('google', { redirectTo: Routes.SITE.HOME }); +}; diff --git a/src/actions/sign-out/index.ts b/src/actions/sign-out/index.ts new file mode 100644 index 000000000..450b36595 --- /dev/null +++ b/src/actions/sign-out/index.ts @@ -0,0 +1,8 @@ +'use server'; + +import { signOut } from '@/auth'; +import { Routes } from '@/utils'; + +export const signOutAction = async () => { + await signOut({ redirectTo: Routes.SITE.HOME }); +}; diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index 27a7c81b8..3370bb0fd 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -1,8 +1,12 @@ +import Image from 'next/image'; import Link from 'next/link'; -import { LoginButton } from '@/components'; +import { signInAction } from '@/actions'; +import googleIcon from '@/assets/google.svg'; +import { Button } from '@/components'; import { Routes } from '@/utils'; + import EmailForm from './EmailForm'; const loginErrors = { @@ -31,7 +35,7 @@ const LoginError = ({ error }: ErrorProps) => { }; export default function Page({ searchParams }) { - const { error, callbackUrl } = searchParams; + const { error } = searchParams; return (
    @@ -52,7 +56,19 @@ export default function Page({ searchParams }) { OR
    - +
    + +
    {error && }

    No client account ?{' '} diff --git a/src/components/button/LoginButton.tsx b/src/components/button/LoginButton.tsx deleted file mode 100644 index 163b422e2..000000000 --- a/src/components/button/LoginButton.tsx +++ /dev/null @@ -1,29 +0,0 @@ -'use client'; - -import Image from 'next/image'; -import { signIn } from 'next-auth/react'; - -import googleIcon from '@/assets/google.svg'; - -import { Button } from './Button'; - -type Props = { - callbackUrl: string; -}; - -export const LoginButton = ({ callbackUrl }: Props) => { - return ( - - ); -}; diff --git a/src/components/button/index.ts b/src/components/button/index.ts index 5f8f62fa6..da6bcc761 100644 --- a/src/components/button/index.ts +++ b/src/components/button/index.ts @@ -1,3 +1,2 @@ export * from './Button'; export * from './BackButton'; -export * from './LoginButton'; diff --git a/src/modules/header/Header.tsx b/src/modules/header/Header.tsx index bf7b1e652..9dbf8e8b7 100644 --- a/src/modules/header/Header.tsx +++ b/src/modules/header/Header.tsx @@ -6,8 +6,8 @@ import { useSetAtom } from 'jotai'; import { AlignJustify, LogOut, Settings } from 'lucide-react'; import Image from 'next/image'; import Link from 'next/link'; -import { signOut } from 'next-auth/react'; +import { signOutAction } from '@/actions'; import { Avatar, AvatarFallback, @@ -93,14 +93,15 @@ export const Header = ({ user }: Props) => {

  • - +
    + +

    Logout

    @@ -129,13 +130,11 @@ export const Header = ({ user }: Props) => { Settings )} - +
    + +

    -

    - Already have an account ?{' '} - + + + Already have an account ?{' '} + + Login + + +

  • ); } diff --git a/src/app/register/layout.tsx b/src/app/register/layout.tsx index eaad83642..7559fd05f 100644 --- a/src/app/register/layout.tsx +++ b/src/app/register/layout.tsx @@ -8,11 +8,13 @@ type Props = { export default function Layout({ children }: Props) { return ( -
    +
    - {children} +
    + {children} +
    ); } diff --git a/src/app/register/page.tsx b/src/app/register/page.tsx index 20345bb31..3be079607 100644 --- a/src/app/register/page.tsx +++ b/src/app/register/page.tsx @@ -1,13 +1,45 @@ -import { Stepper } from '@/components'; +'use client'; + +import Link from 'next/link'; +import { usePathname } from 'next/navigation'; + +import { RegisterRoutes } from '@/utils'; import Form from './form'; + export default function Page() { + const pathname = usePathname(); + return ( <> - -
    -
    +
    +

    + Company +

    +

    Your company details

    +
    +
    +
    +
    + {RegisterRoutes.map((link) => ( + + + {link.number} + + {link.title} + + ))} +
    +
    + +
    ); diff --git a/src/app/register/plan/form.tsx b/src/app/register/plan/form.tsx index c0b4d7752..316af53ba 100644 --- a/src/app/register/plan/form.tsx +++ b/src/app/register/plan/form.tsx @@ -1,6 +1,6 @@ 'use client'; -import { useEffect, useMemo } from 'react'; +import { useEffect, useMemo, useState } from 'react'; import { useAtom } from 'jotai'; import { RESET } from 'jotai/utils'; @@ -8,14 +8,30 @@ import { Check, Minus, MoveRight, Wallet } from 'lucide-react'; import { useParams, useRouter } from 'next/navigation'; import { useForm } from 'react-hook-form'; -import { Button, errorToast, successToast } from '@/components'; +import { + Button, + type CarouselApi, + errorToast, + successToast, +} from '@/components'; +import { + Carousel, + CarouselContent, + CarouselItem, + CarouselNext, + CarouselPrevious, +} from '@/components'; import { registerAtom } from '@/store'; import { Routes, getStripe } from '@/utils'; import type { IPlan } from '@/types'; + export default function Form() { const [state, setState] = useAtom(registerAtom); + const [api, setApi] = useState(); + const [current, setCurrent] = useState(0); + const [count, setCount] = useState(0); const { handleSubmit } = useForm(); const router = useRouter(); @@ -96,89 +112,104 @@ export default function Form() { } else if (status === 'cancel') { errorToast('Payment unsuccessful'); } - // eslint-disable-next-line react-hooks/exhaustive-deps }, [status]); + useEffect(() => { + if (!api) { + return; + } + setCount(api.scrollSnapList().length); + setCurrent(api.selectedScrollSnap() + 1); + api.on('select', () => { + setCurrent(api.selectedScrollSnap() + 1); + }); + }, [api]); + return ( -
    -
    -

    - Plan -

    -

    Choose the right plan for you

    -
    -
    - {plans.map((plan) => ( - saveData(plan.value, plan.lookup_key))} - key={plan.value} - className="w-full overflow-hidden rounded-md bg-primary-foreground-alpha p-4 text-center text-primary shadow-sm shadow-accent transition-all duration-300 hover:shadow-accent-hover" - > -
    -

    - {plan.label} -

    -

    - ${plan.price}/mo -

    -
    -
    -

    - {plan.message} -

    -
    -
      - {plan.benefits.map((benefit) => ( -
    • - -

      {benefit}

      -
    • - ))} - {plan.drawbacks?.map((drawback) => ( -
    • - -

      {drawback}

      -
    • - ))} -
    -
    - {plan.value === 'free' ? ( - - ) : ( - + <> + + + {plans.map((plan) => ( + + + saveData(plan.value, plan.lookup_key), )} -
    -
    - - ))} -
    -
    + key={plan.value} + > +
    +

    + {plan.label} +

    +

    + ${plan.price}/mo +

    +
    +
    +

    + {plan.message} +

    +
    +
      + {plan.benefits.map((benefit) => ( +
    • + +

      {benefit}

      +
    • + ))} + {plan.drawbacks?.map((drawback) => ( +
    • + +

      {drawback}

      +
    • + ))} +
    +
    + {plan.value === 'free' ? ( + + ) : ( + + )} +
    +
    + + + ))} + + + + + + Plan {current} of {count} + + ); } diff --git a/src/app/register/plan/page.tsx b/src/app/register/plan/page.tsx index d3ab0b2bf..9aef54239 100644 --- a/src/app/register/plan/page.tsx +++ b/src/app/register/plan/page.tsx @@ -1,5 +1,47 @@ +'use client'; + +import Link from 'next/link'; +import { usePathname } from 'next/navigation'; + +import { RegisterRoutes } from '@/utils'; + import Form from './form'; export default function Page() { - return
    ; + const pathname = usePathname(); + + return ( + <> +
    +

    + Plan +

    +

    + Select the right plan for your needs +

    +
    +
    +
    +
    + {RegisterRoutes.map((link) => ( + + + {link.number} + + {link.title} + + ))} +
    +
    + +
    +
    + + ); } diff --git a/src/app/register/user/form.tsx b/src/app/register/user/form.tsx index 727366eec..9b728d2fa 100644 --- a/src/app/register/user/form.tsx +++ b/src/app/register/user/form.tsx @@ -39,18 +39,9 @@ export default function Form() { return (
    -
    - - User - -

    Your connection mail

    -
    -
    - - +
    +
    + + +
    + + Already have an account ?{' '} + + Login + +
    -

    - Already have an account ?{' '} - - Login - -

    ); } diff --git a/src/app/register/user/page.tsx b/src/app/register/user/page.tsx index 49952dbe0..49ec655b4 100644 --- a/src/app/register/user/page.tsx +++ b/src/app/register/user/page.tsx @@ -1,13 +1,45 @@ -import { Stepper } from '@/components'; +'use client'; + +import Link from 'next/link'; +import { usePathname } from 'next/navigation'; + +import { RegisterRoutes } from '@/utils'; import Form from './form'; + export default function Page() { + const pathname = usePathname(); + return ( <> - -
    -
    +
    +

    + User +

    +

    Your connection mail

    +
    +
    +
    +
    + {RegisterRoutes.map((link) => ( + + + {link.number} + + {link.title} + + ))} +
    +
    + +
    ); diff --git a/src/utils/routing.ts b/src/utils/routing.ts index d27f21b42..c29a5e0c2 100644 --- a/src/utils/routing.ts +++ b/src/utils/routing.ts @@ -23,3 +23,26 @@ export const Routes = { WEBHOOKS: '/api/stripe/webhooks', }, } as const; + +export const RegisterRoutes = [ + { + title: 'Company', + number: 1, + route: Routes.SITE.REGISTER.INDEX, + }, + { + title: 'User', + number: 2, + route: Routes.SITE.REGISTER.USER, + }, + { + title: 'Plan', + number: 3, + route: Routes.SITE.REGISTER.PLAN, + }, + { + title: 'Confirm', + number: 4, + route: Routes.SITE.REGISTER.CONFIRM, + }, +]; From 33c900730cef0a53c69505adab404aba574cee50 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 3 Oct 2024 14:16:31 +0200 Subject: [PATCH 277/326] :sparkles: create carousel component --- src/components/carousel/Carousel.tsx | 263 +++++++++++++++++++++++++++ src/components/carousel/index.ts | 1 + src/components/index.ts | 1 + 3 files changed, 265 insertions(+) create mode 100644 src/components/carousel/Carousel.tsx create mode 100644 src/components/carousel/index.ts diff --git a/src/components/carousel/Carousel.tsx b/src/components/carousel/Carousel.tsx new file mode 100644 index 000000000..d134bd33d --- /dev/null +++ b/src/components/carousel/Carousel.tsx @@ -0,0 +1,263 @@ +'use client'; + +import * as React from 'react'; + +import useEmblaCarousel, { + type UseEmblaCarouselType, +} from 'embla-carousel-react'; +import { ArrowLeft, ArrowRight } from 'lucide-react'; + +import { Button } from '@/components'; +import { cn } from '@/utils'; + +type CarouselApi = UseEmblaCarouselType[1]; +type UseCarouselParameters = Parameters; +type CarouselOptions = UseCarouselParameters[0]; +type CarouselPlugin = UseCarouselParameters[1]; + +type CarouselProps = { + opts?: CarouselOptions; + plugins?: CarouselPlugin; + orientation?: 'horizontal' | 'vertical'; + setApi?: (api: CarouselApi) => void; +}; + +type CarouselContextProps = { + carouselRef: ReturnType[0]; + api: ReturnType[1]; + scrollPrev: () => void; + scrollNext: () => void; + canScrollPrev: boolean; + canScrollNext: boolean; +} & CarouselProps; + +const CarouselContext = React.createContext(null); + +function useCarousel() { + const context = React.useContext(CarouselContext); + + if (!context) { + throw new Error('useCarousel must be used within a '); + } + + return context; +} + +const Carousel = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes & CarouselProps +>( + ( + { + orientation = 'horizontal', + opts, + setApi, + plugins, + className, + children, + ...props + }, + ref, + ) => { + const [carouselRef, api] = useEmblaCarousel( + { + ...opts, + axis: orientation === 'horizontal' ? 'x' : 'y', + }, + plugins, + ); + const [canScrollPrev, setCanScrollPrev] = React.useState(false); + const [canScrollNext, setCanScrollNext] = React.useState(false); + + const onSelect = React.useCallback((api: CarouselApi) => { + if (!api) { + return; + } + + setCanScrollPrev(api.canScrollPrev()); + setCanScrollNext(api.canScrollNext()); + }, []); + + const scrollPrev = React.useCallback(() => { + api?.scrollPrev(); + }, [api]); + + const scrollNext = React.useCallback(() => { + api?.scrollNext(); + }, [api]); + + const handleKeyDown = React.useCallback( + (event: React.KeyboardEvent) => { + if (event.key === 'ArrowLeft') { + event.preventDefault(); + scrollPrev(); + } else if (event.key === 'ArrowRight') { + event.preventDefault(); + scrollNext(); + } + }, + [scrollPrev, scrollNext], + ); + + React.useEffect(() => { + if (!api || !setApi) { + return; + } + + setApi(api); + }, [api, setApi]); + + React.useEffect(() => { + if (!api) { + return; + } + + onSelect(api); + api.on('reInit', onSelect); + api.on('select', onSelect); + + return () => { + api?.off('select', onSelect); + }; + }, [api, onSelect]); + + return ( + +
    + {children} +
    +
    + ); + }, +); +Carousel.displayName = 'Carousel'; + +const CarouselContent = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => { + const { carouselRef, orientation } = useCarousel(); + + return ( +
    +
    +
    + ); +}); +CarouselContent.displayName = 'CarouselContent'; + +const CarouselItem = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => { + const { orientation } = useCarousel(); + + return ( +
    + ); +}); +CarouselItem.displayName = 'CarouselItem'; + +const CarouselPrevious = React.forwardRef< + HTMLButtonElement, + React.ComponentProps +>(({ className, variant = 'outline', size = 'icon', ...props }, ref) => { + const { orientation, scrollPrev, canScrollPrev } = useCarousel(); + + return ( + + ); +}); +CarouselPrevious.displayName = 'CarouselPrevious'; + +const CarouselNext = React.forwardRef< + HTMLButtonElement, + React.ComponentProps +>(({ className, variant = 'outline', size = 'icon', ...props }, ref) => { + const { orientation, scrollNext, canScrollNext } = useCarousel(); + + return ( + + ); +}); +CarouselNext.displayName = 'CarouselNext'; + +export { + type CarouselApi, + Carousel, + CarouselContent, + CarouselItem, + CarouselPrevious, + CarouselNext, +}; diff --git a/src/components/carousel/index.ts b/src/components/carousel/index.ts new file mode 100644 index 000000000..c0ab19964 --- /dev/null +++ b/src/components/carousel/index.ts @@ -0,0 +1 @@ +export * from './Carousel'; diff --git a/src/components/index.ts b/src/components/index.ts index 251b14dee..0b18a117b 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -2,6 +2,7 @@ export * from './alert'; export * from './avatar'; export * from './badge'; export * from './button'; +export * from './carousel'; export * from './dialog'; export * from './drawer'; export * from './dropdown'; From 8dedef02239106ca02a23482af2d49099e7984d1 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 3 Oct 2024 14:17:06 +0200 Subject: [PATCH 278/326] :rotating_light: run lint + prettier --- src/app/register/page.tsx | 1 - src/app/register/plan/form.tsx | 1 - src/app/register/user/page.tsx | 1 - 3 files changed, 3 deletions(-) diff --git a/src/app/register/page.tsx b/src/app/register/page.tsx index 3be079607..a293221fd 100644 --- a/src/app/register/page.tsx +++ b/src/app/register/page.tsx @@ -7,7 +7,6 @@ import { RegisterRoutes } from '@/utils'; import Form from './form'; - export default function Page() { const pathname = usePathname(); diff --git a/src/app/register/plan/form.tsx b/src/app/register/plan/form.tsx index 316af53ba..04dac1b27 100644 --- a/src/app/register/plan/form.tsx +++ b/src/app/register/plan/form.tsx @@ -26,7 +26,6 @@ import { Routes, getStripe } from '@/utils'; import type { IPlan } from '@/types'; - export default function Form() { const [state, setState] = useAtom(registerAtom); const [api, setApi] = useState(); diff --git a/src/app/register/user/page.tsx b/src/app/register/user/page.tsx index 49ec655b4..c70741a6c 100644 --- a/src/app/register/user/page.tsx +++ b/src/app/register/user/page.tsx @@ -7,7 +7,6 @@ import { RegisterRoutes } from '@/utils'; import Form from './form'; - export default function Page() { const pathname = usePathname(); From eef247c11479ee1d666090b0ccad053d52dddaee Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 3 Oct 2024 15:38:49 +0200 Subject: [PATCH 279/326] :lipstick: remove gap --- src/app/register/plan/page.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/register/plan/page.tsx b/src/app/register/plan/page.tsx index 9aef54239..4a4000e8f 100644 --- a/src/app/register/plan/page.tsx +++ b/src/app/register/plan/page.tsx @@ -38,7 +38,7 @@ export default function Page() { ))}
    -
    +
    From 1a6a1638b160703a35743acf0a2832983d18ffa6 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 3 Oct 2024 17:35:47 +0200 Subject: [PATCH 280/326] :heavy_plus_sign: install aws dependency --- package.json | 1 + pnpm-lock.yaml | 1113 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1114 insertions(+) diff --git a/package.json b/package.json index dc0c4ca82..3dca6ec65 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ }, "dependencies": { "@auth/prisma-adapter": "^2.5.3", + "@aws-sdk/client-s3": "^3.663.0", "@google-cloud/storage": "^7.7.0", "@hookform/resolvers": "^3.3.4", "@prisma/client": "5.16.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3c79d71af..08fa798fa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,9 @@ dependencies: '@auth/prisma-adapter': specifier: ^2.5.3 version: 2.5.3(@prisma/client@5.16.1) + '@aws-sdk/client-s3': + specifier: ^3.663.0 + version: 3.663.0 '@google-cloud/storage': specifier: ^7.7.0 version: 7.13.0 @@ -301,6 +304,624 @@ packages: - nodemailer dev: false + /@aws-crypto/crc32@5.2.0: + resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.662.0 + tslib: 2.7.0 + dev: false + + /@aws-crypto/crc32c@5.2.0: + resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.662.0 + tslib: 2.7.0 + dev: false + + /@aws-crypto/sha1-browser@5.2.0: + resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} + dependencies: + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.662.0 + '@aws-sdk/util-locate-window': 3.568.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.7.0 + dev: false + + /@aws-crypto/sha256-browser@5.2.0: + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} + dependencies: + '@aws-crypto/sha256-js': 5.2.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.662.0 + '@aws-sdk/util-locate-window': 3.568.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.7.0 + dev: false + + /@aws-crypto/sha256-js@5.2.0: + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.662.0 + tslib: 2.7.0 + dev: false + + /@aws-crypto/supports-web-crypto@5.2.0: + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} + dependencies: + tslib: 2.7.0 + dev: false + + /@aws-crypto/util@5.2.0: + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + dependencies: + '@aws-sdk/types': 3.662.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.7.0 + dev: false + + /@aws-sdk/client-s3@3.663.0: + resolution: {integrity: sha512-XWoy6wglrxFngdswGbccR7cwmafe3ycx2/vIRDuVnIeSYdj/PgYACBt5JEM5NEzW26kFtlJpeN9hUH1i6tyfuQ==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-crypto/sha1-browser': 5.2.0 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.662.0(@aws-sdk/client-sts@3.662.0) + '@aws-sdk/client-sts': 3.662.0 + '@aws-sdk/core': 3.662.0 + '@aws-sdk/credential-provider-node': 3.662.0(@aws-sdk/client-sso-oidc@3.662.0)(@aws-sdk/client-sts@3.662.0) + '@aws-sdk/middleware-bucket-endpoint': 3.662.0 + '@aws-sdk/middleware-expect-continue': 3.662.0 + '@aws-sdk/middleware-flexible-checksums': 3.662.0 + '@aws-sdk/middleware-host-header': 3.662.0 + '@aws-sdk/middleware-location-constraint': 3.662.0 + '@aws-sdk/middleware-logger': 3.662.0 + '@aws-sdk/middleware-recursion-detection': 3.662.0 + '@aws-sdk/middleware-sdk-s3': 3.662.0 + '@aws-sdk/middleware-ssec': 3.662.0 + '@aws-sdk/middleware-user-agent': 3.662.0 + '@aws-sdk/region-config-resolver': 3.662.0 + '@aws-sdk/signature-v4-multi-region': 3.662.0 + '@aws-sdk/types': 3.662.0 + '@aws-sdk/util-endpoints': 3.662.0 + '@aws-sdk/util-user-agent-browser': 3.662.0 + '@aws-sdk/util-user-agent-node': 3.662.0 + '@aws-sdk/xml-builder': 3.662.0 + '@smithy/config-resolver': 3.0.9 + '@smithy/core': 2.4.7 + '@smithy/eventstream-serde-browser': 3.0.10 + '@smithy/eventstream-serde-config-resolver': 3.0.7 + '@smithy/eventstream-serde-node': 3.0.9 + '@smithy/fetch-http-handler': 3.2.9 + '@smithy/hash-blob-browser': 3.1.6 + '@smithy/hash-node': 3.0.7 + '@smithy/hash-stream-node': 3.1.6 + '@smithy/invalid-dependency': 3.0.7 + '@smithy/md5-js': 3.0.7 + '@smithy/middleware-content-length': 3.0.9 + '@smithy/middleware-endpoint': 3.1.4 + '@smithy/middleware-retry': 3.0.22 + '@smithy/middleware-serde': 3.0.7 + '@smithy/middleware-stack': 3.0.7 + '@smithy/node-config-provider': 3.1.8 + '@smithy/node-http-handler': 3.2.4 + '@smithy/protocol-http': 4.1.4 + '@smithy/smithy-client': 3.3.6 + '@smithy/types': 3.5.0 + '@smithy/url-parser': 3.0.7 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.22 + '@smithy/util-defaults-mode-node': 3.0.22 + '@smithy/util-endpoints': 2.1.3 + '@smithy/util-middleware': 3.0.7 + '@smithy/util-retry': 3.0.7 + '@smithy/util-stream': 3.1.9 + '@smithy/util-utf8': 3.0.0 + '@smithy/util-waiter': 3.1.6 + tslib: 2.7.0 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/client-sso-oidc@3.662.0(@aws-sdk/client-sts@3.662.0): + resolution: {integrity: sha512-YZrH0sftdmjvEIY8u0LCrfEhyaMVpN0+K0K9WsUrFRMZ7DK6nB9YD1f5EaKUN5UjNw5S7gbjSdI8neSCoELjhw==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.662.0 + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sts': 3.662.0 + '@aws-sdk/core': 3.662.0 + '@aws-sdk/credential-provider-node': 3.662.0(@aws-sdk/client-sso-oidc@3.662.0)(@aws-sdk/client-sts@3.662.0) + '@aws-sdk/middleware-host-header': 3.662.0 + '@aws-sdk/middleware-logger': 3.662.0 + '@aws-sdk/middleware-recursion-detection': 3.662.0 + '@aws-sdk/middleware-user-agent': 3.662.0 + '@aws-sdk/region-config-resolver': 3.662.0 + '@aws-sdk/types': 3.662.0 + '@aws-sdk/util-endpoints': 3.662.0 + '@aws-sdk/util-user-agent-browser': 3.662.0 + '@aws-sdk/util-user-agent-node': 3.662.0 + '@smithy/config-resolver': 3.0.9 + '@smithy/core': 2.4.7 + '@smithy/fetch-http-handler': 3.2.9 + '@smithy/hash-node': 3.0.7 + '@smithy/invalid-dependency': 3.0.7 + '@smithy/middleware-content-length': 3.0.9 + '@smithy/middleware-endpoint': 3.1.4 + '@smithy/middleware-retry': 3.0.22 + '@smithy/middleware-serde': 3.0.7 + '@smithy/middleware-stack': 3.0.7 + '@smithy/node-config-provider': 3.1.8 + '@smithy/node-http-handler': 3.2.4 + '@smithy/protocol-http': 4.1.4 + '@smithy/smithy-client': 3.3.6 + '@smithy/types': 3.5.0 + '@smithy/url-parser': 3.0.7 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.22 + '@smithy/util-defaults-mode-node': 3.0.22 + '@smithy/util-endpoints': 2.1.3 + '@smithy/util-middleware': 3.0.7 + '@smithy/util-retry': 3.0.7 + '@smithy/util-utf8': 3.0.0 + tslib: 2.7.0 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/client-sso@3.662.0: + resolution: {integrity: sha512-4j3+eNSnNblcIYCJrsRRdyXFjAWGpGa7s7pdIyDMLwtYA7AKNlnlyQV14jtezhMrN2j6qZ7zZmnwEyFGipgfWA==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.662.0 + '@aws-sdk/middleware-host-header': 3.662.0 + '@aws-sdk/middleware-logger': 3.662.0 + '@aws-sdk/middleware-recursion-detection': 3.662.0 + '@aws-sdk/middleware-user-agent': 3.662.0 + '@aws-sdk/region-config-resolver': 3.662.0 + '@aws-sdk/types': 3.662.0 + '@aws-sdk/util-endpoints': 3.662.0 + '@aws-sdk/util-user-agent-browser': 3.662.0 + '@aws-sdk/util-user-agent-node': 3.662.0 + '@smithy/config-resolver': 3.0.9 + '@smithy/core': 2.4.7 + '@smithy/fetch-http-handler': 3.2.9 + '@smithy/hash-node': 3.0.7 + '@smithy/invalid-dependency': 3.0.7 + '@smithy/middleware-content-length': 3.0.9 + '@smithy/middleware-endpoint': 3.1.4 + '@smithy/middleware-retry': 3.0.22 + '@smithy/middleware-serde': 3.0.7 + '@smithy/middleware-stack': 3.0.7 + '@smithy/node-config-provider': 3.1.8 + '@smithy/node-http-handler': 3.2.4 + '@smithy/protocol-http': 4.1.4 + '@smithy/smithy-client': 3.3.6 + '@smithy/types': 3.5.0 + '@smithy/url-parser': 3.0.7 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.22 + '@smithy/util-defaults-mode-node': 3.0.22 + '@smithy/util-endpoints': 2.1.3 + '@smithy/util-middleware': 3.0.7 + '@smithy/util-retry': 3.0.7 + '@smithy/util-utf8': 3.0.0 + tslib: 2.7.0 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/client-sts@3.662.0: + resolution: {integrity: sha512-RjiXvfW3a36ybHuzYuZ6ZgddYiENiXLDGC3tlZMsKWuoVQNeoh2grx1wxUA6e4ajAIqJLXs5dAYTSXzGaAqHTA==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.662.0(@aws-sdk/client-sts@3.662.0) + '@aws-sdk/core': 3.662.0 + '@aws-sdk/credential-provider-node': 3.662.0(@aws-sdk/client-sso-oidc@3.662.0)(@aws-sdk/client-sts@3.662.0) + '@aws-sdk/middleware-host-header': 3.662.0 + '@aws-sdk/middleware-logger': 3.662.0 + '@aws-sdk/middleware-recursion-detection': 3.662.0 + '@aws-sdk/middleware-user-agent': 3.662.0 + '@aws-sdk/region-config-resolver': 3.662.0 + '@aws-sdk/types': 3.662.0 + '@aws-sdk/util-endpoints': 3.662.0 + '@aws-sdk/util-user-agent-browser': 3.662.0 + '@aws-sdk/util-user-agent-node': 3.662.0 + '@smithy/config-resolver': 3.0.9 + '@smithy/core': 2.4.7 + '@smithy/fetch-http-handler': 3.2.9 + '@smithy/hash-node': 3.0.7 + '@smithy/invalid-dependency': 3.0.7 + '@smithy/middleware-content-length': 3.0.9 + '@smithy/middleware-endpoint': 3.1.4 + '@smithy/middleware-retry': 3.0.22 + '@smithy/middleware-serde': 3.0.7 + '@smithy/middleware-stack': 3.0.7 + '@smithy/node-config-provider': 3.1.8 + '@smithy/node-http-handler': 3.2.4 + '@smithy/protocol-http': 4.1.4 + '@smithy/smithy-client': 3.3.6 + '@smithy/types': 3.5.0 + '@smithy/url-parser': 3.0.7 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.22 + '@smithy/util-defaults-mode-node': 3.0.22 + '@smithy/util-endpoints': 2.1.3 + '@smithy/util-middleware': 3.0.7 + '@smithy/util-retry': 3.0.7 + '@smithy/util-utf8': 3.0.0 + tslib: 2.7.0 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/core@3.662.0: + resolution: {integrity: sha512-w64Fa4dsgM8vN7Z+QPR3n+aAl5GXThQRH8deT/iF1rLrzfq7V8xxACJ/CLVaxrZMZUPUUgG7DUAo95nXFWmGjA==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/core': 2.4.7 + '@smithy/node-config-provider': 3.1.8 + '@smithy/property-provider': 3.1.7 + '@smithy/protocol-http': 4.1.4 + '@smithy/signature-v4': 4.2.0 + '@smithy/smithy-client': 3.3.6 + '@smithy/types': 3.5.0 + '@smithy/util-middleware': 3.0.7 + fast-xml-parser: 4.4.1 + tslib: 2.7.0 + dev: false + + /@aws-sdk/credential-provider-env@3.662.0: + resolution: {integrity: sha512-Dgwb0c/FH4xT5QZZFdLTFmCkdG3woXIAgLx5HCoH9Ty5G7T8keHOU9Jm4Vpe2ZJXL7JJHlLakGS65+bgXTuLSQ==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.662.0 + '@smithy/property-provider': 3.1.7 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@aws-sdk/credential-provider-http@3.662.0: + resolution: {integrity: sha512-Wnle/uJI4Ku9ABJHof9sio28VlaSbF3jVQKTSVCJftvbKELlFOlY5aXSjtu0wwcJqDS5r78N5KM7aARUJES+DA==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.662.0 + '@smithy/fetch-http-handler': 3.2.9 + '@smithy/node-http-handler': 3.2.4 + '@smithy/property-provider': 3.1.7 + '@smithy/protocol-http': 4.1.4 + '@smithy/smithy-client': 3.3.6 + '@smithy/types': 3.5.0 + '@smithy/util-stream': 3.1.9 + tslib: 2.7.0 + dev: false + + /@aws-sdk/credential-provider-ini@3.662.0(@aws-sdk/client-sso-oidc@3.662.0)(@aws-sdk/client-sts@3.662.0): + resolution: {integrity: sha512-jk+A5B0NRYG4KrjJ8ef1+r9bFjhpwUm/A9grJmp3JOwcHKXvI2Gy9BXNqfqqVgrK0Gns+WyhJZy6rsRaC+v1oQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.662.0 + dependencies: + '@aws-sdk/client-sts': 3.662.0 + '@aws-sdk/credential-provider-env': 3.662.0 + '@aws-sdk/credential-provider-http': 3.662.0 + '@aws-sdk/credential-provider-process': 3.662.0 + '@aws-sdk/credential-provider-sso': 3.662.0(@aws-sdk/client-sso-oidc@3.662.0) + '@aws-sdk/credential-provider-web-identity': 3.662.0(@aws-sdk/client-sts@3.662.0) + '@aws-sdk/types': 3.662.0 + '@smithy/credential-provider-imds': 3.2.4 + '@smithy/property-provider': 3.1.7 + '@smithy/shared-ini-file-loader': 3.1.8 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + dev: false + + /@aws-sdk/credential-provider-node@3.662.0(@aws-sdk/client-sso-oidc@3.662.0)(@aws-sdk/client-sts@3.662.0): + resolution: {integrity: sha512-2O9wjxdLcU1b+bWVkp3YYbPHo15SU3pW4KfWTca5bB/C01i1eqiHnwsOFz/WKPYYKNj0FhXtJJjeDQLtNFYI8A==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/credential-provider-env': 3.662.0 + '@aws-sdk/credential-provider-http': 3.662.0 + '@aws-sdk/credential-provider-ini': 3.662.0(@aws-sdk/client-sso-oidc@3.662.0)(@aws-sdk/client-sts@3.662.0) + '@aws-sdk/credential-provider-process': 3.662.0 + '@aws-sdk/credential-provider-sso': 3.662.0(@aws-sdk/client-sso-oidc@3.662.0) + '@aws-sdk/credential-provider-web-identity': 3.662.0(@aws-sdk/client-sts@3.662.0) + '@aws-sdk/types': 3.662.0 + '@smithy/credential-provider-imds': 3.2.4 + '@smithy/property-provider': 3.1.7 + '@smithy/shared-ini-file-loader': 3.1.8 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - '@aws-sdk/client-sts' + - aws-crt + dev: false + + /@aws-sdk/credential-provider-process@3.662.0: + resolution: {integrity: sha512-1QUdtr/JiuvRjVgA8enpgCwjq7Eud8eVUT0i/vpWuFp5TV2FFq/8BD3GBkesTdy4Ylms6QVGf7J6INdfUWQEmw==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.662.0 + '@smithy/property-provider': 3.1.7 + '@smithy/shared-ini-file-loader': 3.1.8 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@aws-sdk/credential-provider-sso@3.662.0(@aws-sdk/client-sso-oidc@3.662.0): + resolution: {integrity: sha512-zxze6pDPgwBwl7S3h4JDALCCz93pTAfulbCY8FqMEd7GvnAiofHpL9svyt4+gytXwwUSsQ6KxCMVLbi+8k8YIg==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/client-sso': 3.662.0 + '@aws-sdk/token-providers': 3.662.0(@aws-sdk/client-sso-oidc@3.662.0) + '@aws-sdk/types': 3.662.0 + '@smithy/property-provider': 3.1.7 + '@smithy/shared-ini-file-loader': 3.1.8 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + dev: false + + /@aws-sdk/credential-provider-web-identity@3.662.0(@aws-sdk/client-sts@3.662.0): + resolution: {integrity: sha512-GhPwxmHSFtwCckuT+34JG+U99qKfDWVYPLJOPI6b35+aLhfVqW5CHPmVjtM4WZqbxzsA0a3KAYA/U1ZaluI4SA==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.662.0 + dependencies: + '@aws-sdk/client-sts': 3.662.0 + '@aws-sdk/types': 3.662.0 + '@smithy/property-provider': 3.1.7 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@aws-sdk/middleware-bucket-endpoint@3.662.0: + resolution: {integrity: sha512-qBdQ7zqdanCPep7puYw1s6lH8lQ2uWP6+klp35cAYjCMbGiItclteXRQOuldkd9Oc7dtoYlTJBDKeAybJZShlw==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.662.0 + '@aws-sdk/util-arn-parser': 3.568.0 + '@smithy/node-config-provider': 3.1.8 + '@smithy/protocol-http': 4.1.4 + '@smithy/types': 3.5.0 + '@smithy/util-config-provider': 3.0.0 + tslib: 2.7.0 + dev: false + + /@aws-sdk/middleware-expect-continue@3.662.0: + resolution: {integrity: sha512-kSSeblAz0bdE8golejbEp9tLoP1EcYGWqrAjv5kDwbo56J9vbBh12shxDULpDBNXXLBoK4DktHgJl3RqwXlK5g==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.662.0 + '@smithy/protocol-http': 4.1.4 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@aws-sdk/middleware-flexible-checksums@3.662.0: + resolution: {integrity: sha512-aZEA0a0hYfOL2ah+ZlFAVr2HMWetNooyrDFq+iP04CmE674WCJBp71DdQrRvNQsW+PBkq7iHsgfYEQumYMqz9Q==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@aws-crypto/crc32c': 5.2.0 + '@aws-sdk/types': 3.662.0 + '@smithy/is-array-buffer': 3.0.0 + '@smithy/node-config-provider': 3.1.8 + '@smithy/protocol-http': 4.1.4 + '@smithy/types': 3.5.0 + '@smithy/util-middleware': 3.0.7 + '@smithy/util-utf8': 3.0.0 + tslib: 2.7.0 + dev: false + + /@aws-sdk/middleware-host-header@3.662.0: + resolution: {integrity: sha512-Gkb0J1LTvD8LOS8uwoRI5weFXvvJwP1jfnYwzQrFgLymRFHJm5JtORQZtmw34dtdou+IBTUsH1mgI8b3QVVH3w==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.662.0 + '@smithy/protocol-http': 4.1.4 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@aws-sdk/middleware-location-constraint@3.662.0: + resolution: {integrity: sha512-+OAm1hKXGy+F/KJFAc8RKX/z74ZOPEqVzg70kzy/mdSNGzJwvEOfT+KwDVncZ01jk9jso1Q8DXGmxfWzZ/n4aw==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.662.0 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@aws-sdk/middleware-logger@3.662.0: + resolution: {integrity: sha512-aSpwVHtfMlqzpmnmmUgRNCaIcxXdRrGqGWG+VWXuYR1F6jJARDDCxGkSuKiPEOLX0h0BroUo4gqbM8ILXQ8rVw==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.662.0 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@aws-sdk/middleware-recursion-detection@3.662.0: + resolution: {integrity: sha512-V/MYE+LOFIQDLnpWMHLxnKu+ELhD3pLOrWXVhKpVit6YcHxaOz6nvB40CPamSPDXenA11FGXKAGNHZ0loTpDQg==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.662.0 + '@smithy/protocol-http': 4.1.4 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@aws-sdk/middleware-sdk-s3@3.662.0: + resolution: {integrity: sha512-Ur5UGuS/bP5ftBxepOYJmTYES4Crh9TwIbBMUqsaal/XcdvQ7uYXK/PvlYg9P/bLpStmDBb1bxmnmjdsQBwSgw==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/core': 3.662.0 + '@aws-sdk/types': 3.662.0 + '@aws-sdk/util-arn-parser': 3.568.0 + '@smithy/core': 2.4.7 + '@smithy/node-config-provider': 3.1.8 + '@smithy/protocol-http': 4.1.4 + '@smithy/signature-v4': 4.2.0 + '@smithy/smithy-client': 3.3.6 + '@smithy/types': 3.5.0 + '@smithy/util-config-provider': 3.0.0 + '@smithy/util-middleware': 3.0.7 + '@smithy/util-stream': 3.1.9 + '@smithy/util-utf8': 3.0.0 + tslib: 2.7.0 + dev: false + + /@aws-sdk/middleware-ssec@3.662.0: + resolution: {integrity: sha512-7dxSUCeSLYFlMEr6BwNoYiF+4X7/JyIAyjOOI/hh9hyK8D8f3/xenACb67rPb59wUs6WgWZVg+hvWBC55a5KGg==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.662.0 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@aws-sdk/middleware-user-agent@3.662.0: + resolution: {integrity: sha512-NT940BLSSys/A8W3zO3g2Kj+zpeydqGbSQgN6qz84jTskQjnrlamoq+Zl9Rrp8Cn8sC10UQ09kGg97lvjVOlmg==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.662.0 + '@aws-sdk/util-endpoints': 3.662.0 + '@smithy/protocol-http': 4.1.4 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@aws-sdk/region-config-resolver@3.662.0: + resolution: {integrity: sha512-MDiWl4wZSVnnTELLb+jFSe0nj9HwxJPX2JnghXKkOXmbKEiE2/21DCQwU9mr9VUq2ZOQqaSnMFPr94iRu0AVTQ==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.662.0 + '@smithy/node-config-provider': 3.1.8 + '@smithy/types': 3.5.0 + '@smithy/util-config-provider': 3.0.0 + '@smithy/util-middleware': 3.0.7 + tslib: 2.7.0 + dev: false + + /@aws-sdk/signature-v4-multi-region@3.662.0: + resolution: {integrity: sha512-nXjFNs/VCT4jh8JyfCDTzUKfnhQU4JTwc0fi6mpQIig88fScKSBNxN4zm1zyg196xf6CBKlQc9UVnMsJYtWYDA==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/middleware-sdk-s3': 3.662.0 + '@aws-sdk/types': 3.662.0 + '@smithy/protocol-http': 4.1.4 + '@smithy/signature-v4': 4.2.0 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@aws-sdk/token-providers@3.662.0(@aws-sdk/client-sso-oidc@3.662.0): + resolution: {integrity: sha512-OqtBPutNC9Am10P1W5IwqRvzCVQAHRxWxZnfDBh1FQjNmoboGWYSriKxbrCRYLFffusNuzo8KnOFOmg1sRlhJQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sso-oidc': ^3.662.0 + dependencies: + '@aws-sdk/client-sso-oidc': 3.662.0(@aws-sdk/client-sts@3.662.0) + '@aws-sdk/types': 3.662.0 + '@smithy/property-provider': 3.1.7 + '@smithy/shared-ini-file-loader': 3.1.8 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@aws-sdk/types@3.662.0: + resolution: {integrity: sha512-Ff9/KRmIm8iEzodxzISLj4/pB/0hX2nVw1RFeOBC65OuM6nHrAdWHHog/CVx25hS5JPU0uE3h6NlWRaBJ7AV5w==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@aws-sdk/util-arn-parser@3.568.0: + resolution: {integrity: sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w==} + engines: {node: '>=16.0.0'} + dependencies: + tslib: 2.7.0 + dev: false + + /@aws-sdk/util-endpoints@3.662.0: + resolution: {integrity: sha512-RQ/78yNUxZZZULFg7VxT7oObGOR/FBc0ojiFoCAKC20ycY8VvVX5Eof4gyxoVpwOP7EoZO3UlWSIqtaEV/X70w==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.662.0 + '@smithy/types': 3.5.0 + '@smithy/util-endpoints': 2.1.3 + tslib: 2.7.0 + dev: false + + /@aws-sdk/util-locate-window@3.568.0: + resolution: {integrity: sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==} + engines: {node: '>=16.0.0'} + dependencies: + tslib: 2.7.0 + dev: false + + /@aws-sdk/util-user-agent-browser@3.662.0: + resolution: {integrity: sha512-5wQd+HbNTY1r1Gndxf93dAEFtKz1DqcalI4Ym40To+RIonSsYQNRomFoizYNgJ1P+Mkfsr4P1dy/MNTlkqTZuQ==} + dependencies: + '@aws-sdk/types': 3.662.0 + '@smithy/types': 3.5.0 + bowser: 2.11.0 + tslib: 2.7.0 + dev: false + + /@aws-sdk/util-user-agent-node@3.662.0: + resolution: {integrity: sha512-vBRbZ9Hr1OGmdJPWj36X0fR8/VdI2JiwK6+oJRa6qfJ6AnhqCYZbCyeA6JIDeEu3M9iu1OLjenU8NdXhTz8c2w==} + engines: {node: '>=16.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + dependencies: + '@aws-sdk/types': 3.662.0 + '@smithy/node-config-provider': 3.1.8 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@aws-sdk/xml-builder@3.662.0: + resolution: {integrity: sha512-ikLkXn0igUpnJu2mCZjklvmcDGWT9OaLRv3JyC/cRkTaaSrblPjPM7KKsltxdMTLQ+v7fjCN0TsJpxphMfaOPA==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + /@babel/code-frame@7.24.7: resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} @@ -2365,6 +2986,487 @@ packages: - debug dev: false + /@smithy/abort-controller@3.1.5: + resolution: {integrity: sha512-DhNPnqTqPoG8aZ5dWkFOgsuY+i0GQ3CI6hMmvCoduNsnU9gUZWZBwGfDQsTTB7NvFPkom1df7jMIJWU90kuXXg==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@smithy/chunked-blob-reader-native@3.0.0: + resolution: {integrity: sha512-VDkpCYW+peSuM4zJip5WDfqvg2Mo/e8yxOv3VF1m11y7B8KKMKVFtmZWDe36Fvk8rGuWrPZHHXZ7rR7uM5yWyg==} + dependencies: + '@smithy/util-base64': 3.0.0 + tslib: 2.7.0 + dev: false + + /@smithy/chunked-blob-reader@3.0.0: + resolution: {integrity: sha512-sbnURCwjF0gSToGlsBiAmd1lRCmSn72nu9axfJu5lIx6RUEgHu6GwTMbqCdhQSi0Pumcm5vFxsi9XWXb2mTaoA==} + dependencies: + tslib: 2.7.0 + dev: false + + /@smithy/config-resolver@3.0.9: + resolution: {integrity: sha512-5d9oBf40qC7n2xUoHmntKLdqsyTMMo/r49+eqSIjJ73eDfEtljAxEhzIQ3bkgXJtR3xiv7YzMT/3FF3ORkjWdg==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/node-config-provider': 3.1.8 + '@smithy/types': 3.5.0 + '@smithy/util-config-provider': 3.0.0 + '@smithy/util-middleware': 3.0.7 + tslib: 2.7.0 + dev: false + + /@smithy/core@2.4.7: + resolution: {integrity: sha512-goqMjX+IoVEnHZjYuzu8xwoZjoteMiLXsPHuXPBkWsGwu0o9c3nTjqkUlP1Ez/V8E501aOU7CJ3INk8mQcW2gw==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/middleware-endpoint': 3.1.4 + '@smithy/middleware-retry': 3.0.22 + '@smithy/middleware-serde': 3.0.7 + '@smithy/protocol-http': 4.1.4 + '@smithy/smithy-client': 3.3.6 + '@smithy/types': 3.5.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-middleware': 3.0.7 + '@smithy/util-utf8': 3.0.0 + tslib: 2.7.0 + dev: false + + /@smithy/credential-provider-imds@3.2.4: + resolution: {integrity: sha512-S9bb0EIokfYEuar4kEbLta+ivlKCWOCFsLZuilkNy9i0uEUEHSi47IFLPaxqqCl+0ftKmcOTHayY5nQhAuq7+w==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/node-config-provider': 3.1.8 + '@smithy/property-provider': 3.1.7 + '@smithy/types': 3.5.0 + '@smithy/url-parser': 3.0.7 + tslib: 2.7.0 + dev: false + + /@smithy/eventstream-codec@3.1.6: + resolution: {integrity: sha512-SBiOYPBH+5wOyPS7lfI150ePfGLhnp/eTu5RnV9xvhGvRiKfnl6HzRK9wehBph+il8FxS9KTeadx7Rcmf1GLPQ==} + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@smithy/types': 3.5.0 + '@smithy/util-hex-encoding': 3.0.0 + tslib: 2.7.0 + dev: false + + /@smithy/eventstream-serde-browser@3.0.10: + resolution: {integrity: sha512-1i9aMY6Pl/SmA6NjvidxnfBLHMPzhKu2BP148pEt5VwhMdmXn36PE2kWKGa9Hj8b0XGtCTRucpCncylevCtI7g==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/eventstream-serde-universal': 3.0.9 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@smithy/eventstream-serde-config-resolver@3.0.7: + resolution: {integrity: sha512-eVzhGQBPEqXXYHvIUku0jMTxd4gDvenRzUQPTmKVWdRvp9JUCKrbAXGQRYiGxUYq9+cqQckRm0wq3kTWnNtDhw==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@smithy/eventstream-serde-node@3.0.9: + resolution: {integrity: sha512-JE0Guqvt0xsmfQ5y1EI342/qtJqznBv8cJqkHZV10PwC8GWGU5KNgFbQnsVCcX+xF+qIqwwfRmeWoJCjuOLmng==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/eventstream-serde-universal': 3.0.9 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@smithy/eventstream-serde-universal@3.0.9: + resolution: {integrity: sha512-bydfgSisfepCufw9kCEnWRxqxJFzX/o8ysXWv+W9F2FIyiaEwZ/D8bBKINbh4ONz3i05QJ1xE7A5OKYvgJsXaw==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/eventstream-codec': 3.1.6 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@smithy/fetch-http-handler@3.2.9: + resolution: {integrity: sha512-hYNVQOqhFQ6vOpenifFME546f0GfJn2OiQ3M0FDmuUu8V/Uiwy2wej7ZXxFBNqdx0R5DZAqWM1l6VRhGz8oE6A==} + dependencies: + '@smithy/protocol-http': 4.1.4 + '@smithy/querystring-builder': 3.0.7 + '@smithy/types': 3.5.0 + '@smithy/util-base64': 3.0.0 + tslib: 2.7.0 + dev: false + + /@smithy/hash-blob-browser@3.1.6: + resolution: {integrity: sha512-BKNcMIaeZ9lB67sgo88iCF4YB35KT8X2dNJ8DqrtZNTgN6tUDYBKThzfGtos/mnZkGkW91AYHisESHmSiYQmKw==} + dependencies: + '@smithy/chunked-blob-reader': 3.0.0 + '@smithy/chunked-blob-reader-native': 3.0.0 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@smithy/hash-node@3.0.7: + resolution: {integrity: sha512-SAGHN+QkrwcHFjfWzs/czX94ZEjPJ0CrWJS3M43WswDXVEuP4AVy9gJ3+AF6JQHZD13bojmuf/Ap/ItDeZ+Qfw==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/types': 3.5.0 + '@smithy/util-buffer-from': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.7.0 + dev: false + + /@smithy/hash-stream-node@3.1.6: + resolution: {integrity: sha512-sFSSt7cmCpFWZPfVx7k80Bgb1K2VJ27VmMxH8X+dDhp7Wv8IBgID4K2VK5ehMJROF8hQgcj4WywnkHIwX/xlwQ==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/types': 3.5.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.7.0 + dev: false + + /@smithy/invalid-dependency@3.0.7: + resolution: {integrity: sha512-Bq00GsAhHeYSuZX8Kpu4sbI9agH2BNYnqUmmbTGWOhki9NVsWn2jFr896vvoTMH8KAjNX/ErC/8t5QHuEXG+IA==} + dependencies: + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@smithy/is-array-buffer@2.2.0: + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.7.0 + dev: false + + /@smithy/is-array-buffer@3.0.0: + resolution: {integrity: sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==} + engines: {node: '>=16.0.0'} + dependencies: + tslib: 2.7.0 + dev: false + + /@smithy/md5-js@3.0.7: + resolution: {integrity: sha512-+wco9IN9uOW4tNGkZIqTR6IXyfO7Z8A+IOq82QCRn/f/xcmt7H1fXwmQVbfDSvbeFwfNnhv7s+u0G9PzPG6o2w==} + dependencies: + '@smithy/types': 3.5.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.7.0 + dev: false + + /@smithy/middleware-content-length@3.0.9: + resolution: {integrity: sha512-t97PidoGElF9hTtLCrof32wfWMqC5g2SEJNxaVH3NjlatuNGsdxXRYO/t+RPnxA15RpYiS0f+zG7FuE2DeGgjA==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/protocol-http': 4.1.4 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@smithy/middleware-endpoint@3.1.4: + resolution: {integrity: sha512-/ChcVHekAyzUbyPRI8CzPPLj6y8QRAfJngWcLMgsWxKVzw/RzBV69mSOzJYDD3pRwushA1+5tHtPF8fjmzBnrQ==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/middleware-serde': 3.0.7 + '@smithy/node-config-provider': 3.1.8 + '@smithy/shared-ini-file-loader': 3.1.8 + '@smithy/types': 3.5.0 + '@smithy/url-parser': 3.0.7 + '@smithy/util-middleware': 3.0.7 + tslib: 2.7.0 + dev: false + + /@smithy/middleware-retry@3.0.22: + resolution: {integrity: sha512-svEN7O2Tf7BoaBkPzX/8AE2Bv7p16d9/ulFAD1Gmn5g19iMqNk1WIkMxAY7SpB9/tVtUwKx0NaIsBRl88gumZA==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/node-config-provider': 3.1.8 + '@smithy/protocol-http': 4.1.4 + '@smithy/service-error-classification': 3.0.7 + '@smithy/smithy-client': 3.3.6 + '@smithy/types': 3.5.0 + '@smithy/util-middleware': 3.0.7 + '@smithy/util-retry': 3.0.7 + tslib: 2.7.0 + uuid: 9.0.1 + dev: false + + /@smithy/middleware-serde@3.0.7: + resolution: {integrity: sha512-VytaagsQqtH2OugzVTq4qvjkLNbWehHfGcGr0JLJmlDRrNCeZoWkWsSOw1nhS/4hyUUWF/TLGGml4X/OnEep5g==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@smithy/middleware-stack@3.0.7: + resolution: {integrity: sha512-EyTbMCdqS1DoeQsO4gI7z2Gzq1MoRFAeS8GkFYIwbedB7Lp5zlLHJdg+56tllIIG5Hnf9ZWX48YKSHlsKvugGA==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@smithy/node-config-provider@3.1.8: + resolution: {integrity: sha512-E0rU0DglpeJn5ge64mk8wTGEXcQwmpUTY5Zr7IzTpDLmHKiIamINERNZYrPQjg58Ck236sEKSwRSHA4CwshU6Q==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/property-provider': 3.1.7 + '@smithy/shared-ini-file-loader': 3.1.8 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@smithy/node-http-handler@3.2.4: + resolution: {integrity: sha512-49reY3+JgLMFNm7uTAKBWiKCA6XSvkNp9FqhVmusm2jpVnHORYFeFZ704LShtqWfjZW/nhX+7Iexyb6zQfXYIQ==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/abort-controller': 3.1.5 + '@smithy/protocol-http': 4.1.4 + '@smithy/querystring-builder': 3.0.7 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@smithy/property-provider@3.1.7: + resolution: {integrity: sha512-QfzLi1GPMisY7bAM5hOUqBdGYnY5S2JAlr201pghksrQv139f8iiiMalXtjczIP5f6owxFn3MINLNUNvUkgtPw==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@smithy/protocol-http@4.1.4: + resolution: {integrity: sha512-MlWK8eqj0JlpZBnWmjQLqmFp71Ug00P+m72/1xQB3YByXD4zZ+y9N4hYrR0EDmrUCZIkyATWHOXFgtavwGDTzQ==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@smithy/querystring-builder@3.0.7: + resolution: {integrity: sha512-65RXGZZ20rzqqxTsChdqSpbhA6tdt5IFNgG6o7e1lnPVLCe6TNWQq4rTl4N87hTDD8mV4IxJJnvyE7brbnRkQw==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/types': 3.5.0 + '@smithy/util-uri-escape': 3.0.0 + tslib: 2.7.0 + dev: false + + /@smithy/querystring-parser@3.0.7: + resolution: {integrity: sha512-Fouw4KJVWqqUVIu1gZW8BH2HakwLz6dvdrAhXeXfeymOBrZw+hcqaWs+cS1AZPVp4nlbeIujYrKA921ZW2WMPA==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@smithy/service-error-classification@3.0.7: + resolution: {integrity: sha512-91PRkTfiBf9hxkIchhRKJfl1rsplRDyBnmyFca3y0Z3x/q0JJN480S83LBd8R6sBCkm2bBbqw2FHp0Mbh+ecSA==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/types': 3.5.0 + dev: false + + /@smithy/shared-ini-file-loader@3.1.8: + resolution: {integrity: sha512-0NHdQiSkeGl0ICQKcJQ2lCOKH23Nb0EaAa7RDRId6ZqwXkw4LJyIyZ0t3iusD4bnKYDPLGy2/5e2rfUhrt0Acw==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@smithy/signature-v4@4.2.0: + resolution: {integrity: sha512-LafbclHNKnsorMgUkKm7Tk7oJ7xizsZ1VwqhGKqoCIrXh4fqDDp73fK99HOEEgcsQbtemmeY/BPv0vTVYYUNEQ==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/is-array-buffer': 3.0.0 + '@smithy/protocol-http': 4.1.4 + '@smithy/types': 3.5.0 + '@smithy/util-hex-encoding': 3.0.0 + '@smithy/util-middleware': 3.0.7 + '@smithy/util-uri-escape': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.7.0 + dev: false + + /@smithy/smithy-client@3.3.6: + resolution: {integrity: sha512-qdH+mvDHgq1ss6mocyIl2/VjlWXew7pGwZQydwYJczEc22HZyX3k8yVPV9aZsbYbssHPvMDRA5rfBDrjQUbIIw==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/middleware-endpoint': 3.1.4 + '@smithy/middleware-stack': 3.0.7 + '@smithy/protocol-http': 4.1.4 + '@smithy/types': 3.5.0 + '@smithy/util-stream': 3.1.9 + tslib: 2.7.0 + dev: false + + /@smithy/types@3.5.0: + resolution: {integrity: sha512-QN0twHNfe8mNJdH9unwsCK13GURU7oEAZqkBI+rsvpv1jrmserO+WnLE7jidR9W/1dxwZ0u/CB01mV2Gms/K2Q==} + engines: {node: '>=16.0.0'} + dependencies: + tslib: 2.7.0 + dev: false + + /@smithy/url-parser@3.0.7: + resolution: {integrity: sha512-70UbSSR8J97c1rHZOWhl+VKiZDqHWxs/iW8ZHrHp5fCCPLSBE7GcUlUvKSle3Ca+J9LLbYCj/A79BxztBvAfpA==} + dependencies: + '@smithy/querystring-parser': 3.0.7 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@smithy/util-base64@3.0.0: + resolution: {integrity: sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/util-buffer-from': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.7.0 + dev: false + + /@smithy/util-body-length-browser@3.0.0: + resolution: {integrity: sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==} + dependencies: + tslib: 2.7.0 + dev: false + + /@smithy/util-body-length-node@3.0.0: + resolution: {integrity: sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==} + engines: {node: '>=16.0.0'} + dependencies: + tslib: 2.7.0 + dev: false + + /@smithy/util-buffer-from@2.2.0: + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/is-array-buffer': 2.2.0 + tslib: 2.7.0 + dev: false + + /@smithy/util-buffer-from@3.0.0: + resolution: {integrity: sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/is-array-buffer': 3.0.0 + tslib: 2.7.0 + dev: false + + /@smithy/util-config-provider@3.0.0: + resolution: {integrity: sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==} + engines: {node: '>=16.0.0'} + dependencies: + tslib: 2.7.0 + dev: false + + /@smithy/util-defaults-mode-browser@3.0.22: + resolution: {integrity: sha512-WKzUxNsOun5ETwEOrvooXeI1mZ8tjDTOcN4oruELWHhEYDgQYWwxZupURVyovcv+h5DyQT/DzK5nm4ZoR/Tw5Q==} + engines: {node: '>= 10.0.0'} + dependencies: + '@smithy/property-provider': 3.1.7 + '@smithy/smithy-client': 3.3.6 + '@smithy/types': 3.5.0 + bowser: 2.11.0 + tslib: 2.7.0 + dev: false + + /@smithy/util-defaults-mode-node@3.0.22: + resolution: {integrity: sha512-hUsciOmAq8fsGwqg4+pJfNRmrhfqMH4Y9UeGcgeUl88kPAoYANFATJqCND+O4nUvwp5TzsYwGpqpcBKyA8LUUg==} + engines: {node: '>= 10.0.0'} + dependencies: + '@smithy/config-resolver': 3.0.9 + '@smithy/credential-provider-imds': 3.2.4 + '@smithy/node-config-provider': 3.1.8 + '@smithy/property-provider': 3.1.7 + '@smithy/smithy-client': 3.3.6 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@smithy/util-endpoints@2.1.3: + resolution: {integrity: sha512-34eACeKov6jZdHqS5hxBMJ4KyWKztTMulhuQ2UdOoP6vVxMLrOKUqIXAwJe/wiWMhXhydLW664B02CNpQBQ4Aw==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/node-config-provider': 3.1.8 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@smithy/util-hex-encoding@3.0.0: + resolution: {integrity: sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==} + engines: {node: '>=16.0.0'} + dependencies: + tslib: 2.7.0 + dev: false + + /@smithy/util-middleware@3.0.7: + resolution: {integrity: sha512-OVA6fv/3o7TMJTpTgOi1H5OTwnuUa8hzRzhSFDtZyNxi6OZ70L/FHattSmhE212I7b6WSOJAAmbYnvcjTHOJCA==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@smithy/util-retry@3.0.7: + resolution: {integrity: sha512-nh1ZO1vTeo2YX1plFPSe/OXaHkLAHza5jpokNiiKX2M5YpNUv6RxGJZhpfmiR4jSvVHCjIDmILjrxKmP+/Ghug==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/service-error-classification': 3.0.7 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + + /@smithy/util-stream@3.1.9: + resolution: {integrity: sha512-7YAR0Ub3MwTMjDfjnup4qa6W8gygZMxikBhFMPESi6ASsl/rZJhwLpF/0k9TuezScCojsM0FryGdz4LZtjKPPQ==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/fetch-http-handler': 3.2.9 + '@smithy/node-http-handler': 3.2.4 + '@smithy/types': 3.5.0 + '@smithy/util-base64': 3.0.0 + '@smithy/util-buffer-from': 3.0.0 + '@smithy/util-hex-encoding': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.7.0 + dev: false + + /@smithy/util-uri-escape@3.0.0: + resolution: {integrity: sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==} + engines: {node: '>=16.0.0'} + dependencies: + tslib: 2.7.0 + dev: false + + /@smithy/util-utf8@2.3.0: + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/util-buffer-from': 2.2.0 + tslib: 2.7.0 + dev: false + + /@smithy/util-utf8@3.0.0: + resolution: {integrity: sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/util-buffer-from': 3.0.0 + tslib: 2.7.0 + dev: false + + /@smithy/util-waiter@3.1.6: + resolution: {integrity: sha512-xs/KAwWOeCklq8aMlnpk25LgxEYHKOEodfjfKclDMLcBJEVEKzDLxZxBQyztcuPJ7F54213NJS8PxoiHNMdItQ==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/abort-controller': 3.1.5 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + dev: false + /@socket.io/component-emitter@3.1.2: resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} dev: false @@ -3208,6 +4310,10 @@ packages: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} dev: false + /bowser@2.11.0: + resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} + dev: false + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -4537,6 +5643,13 @@ packages: resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==} dev: false + /fast-xml-parser@4.4.1: + resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} + hasBin: true + dependencies: + strnum: 1.0.5 + dev: false + /fast-xml-parser@4.5.0: resolution: {integrity: sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg==} hasBin: true From 27ac793fec0539dce4b85640dc2d8c659323f0b6 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 3 Oct 2024 17:39:54 +0200 Subject: [PATCH 281/326] :closed_lock_with_key: add aws env variables --- .env.sample | 6 +++++- src/components/emails/NewUser.tsx | 2 +- src/types/environment.d.ts | 7 ++++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/.env.sample b/.env.sample index 43e4db8dc..21a1a9398 100644 --- a/.env.sample +++ b/.env.sample @@ -32,4 +32,8 @@ PRIVATE_KEY= RESEND_API_KEY= # AWS variables -CLOUDFRONT_URL= \ No newline at end of file +AWS_S3_BUCKET= +AWS_S3_REGION= +AWS_S3_ACCESS_KEY_ID= +AWS_S3_SECRET_ACCESS_KEY= +NEXT_PUBLIC_AWS_CLOUDFRONT_URL= \ No newline at end of file diff --git a/src/components/emails/NewUser.tsx b/src/components/emails/NewUser.tsx index 31269b90d..4b3c892ef 100644 --- a/src/components/emails/NewUser.tsx +++ b/src/components/emails/NewUser.tsx @@ -38,7 +38,7 @@ export const NewUserEmailTemplate = ({
    FAQMaker Date: Thu, 3 Oct 2024 17:40:28 +0200 Subject: [PATCH 282/326] :sparkles: create function to upload image to aws s3 --- src/actions/index.ts | 1 + src/actions/upload-file/action.ts | 39 +++++++++++++++++++++++++++++++ src/actions/upload-file/index.ts | 1 + 3 files changed, 41 insertions(+) create mode 100644 src/actions/upload-file/action.ts create mode 100644 src/actions/upload-file/index.ts diff --git a/src/actions/index.ts b/src/actions/index.ts index 8f418d4ff..5f858f992 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -42,3 +42,4 @@ export { updateNode, updateNodeSchema } from './update-node'; export { updateTag, updateTagSchema } from './update-tag'; export { updateTenant, updateTenantSchema } from './update-tenant'; export { updateUser, updateUserSchema } from './update-user'; +export { submitImage } from './upload-file'; diff --git a/src/actions/upload-file/action.ts b/src/actions/upload-file/action.ts new file mode 100644 index 000000000..643d07413 --- /dev/null +++ b/src/actions/upload-file/action.ts @@ -0,0 +1,39 @@ +'use server'; + +import { + PutObjectCommand, + PutObjectCommandInput, + S3Client, +} from '@aws-sdk/client-s3'; + +const s3Client = new S3Client({ + region: process.env.AWS_S3_REGION as string, + credentials: { + accessKeyId: process.env.AWS_S3_ACCESS_KEY_ID as string, + secretAccessKey: process.env.AWS_S3_SECRET_ACCESS_KEY as string, + }, +}); + +export async function uploadFile(file: File, fileName: string) { + const fileBuffer = (await file.arrayBuffer()) as Buffer; + const params: PutObjectCommandInput = { + Bucket: process.env.AWS_S3_BUCKET as string, + Key: fileName, + Body: fileBuffer, + ContentType: file.type, + }; + const command = new PutObjectCommand(params); + await s3Client.send(command); +} + +export const submitImage = async (formData: FormData, field: string) => { + const image = formData.get(field); + if (typeof image !== 'object' || !image || image?.size === 0) { + return ''; + } + const asciiName = image.name.replace(/[^\x00-\x7F]/g, '').replace('', '_'); + const fileName = `${new Date().getTime()}-${asciiName}`; + await uploadFile(image as File, fileName); + const url = `${process.env.NEXT_PUBLIC_AWS_CLOUDFRONT_URL}/${fileName}`; + return url; +}; diff --git a/src/actions/upload-file/index.ts b/src/actions/upload-file/index.ts new file mode 100644 index 000000000..2c0622fbb --- /dev/null +++ b/src/actions/upload-file/index.ts @@ -0,0 +1 @@ +export * from './action'; From 3fadc492fa0cc075b7ac3a6b477cdad6bae9b346 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 3 Oct 2024 17:40:49 +0200 Subject: [PATCH 283/326] :recycle: use function to upload to aws s3 --- src/modules/settings/general/Files.tsx | 29 +++++++------------------- 1 file changed, 7 insertions(+), 22 deletions(-) diff --git a/src/modules/settings/general/Files.tsx b/src/modules/settings/general/Files.tsx index 6d516fdee..f0344a680 100644 --- a/src/modules/settings/general/Files.tsx +++ b/src/modules/settings/general/Files.tsx @@ -8,8 +8,8 @@ import Image from 'next/image'; import Dropzone from 'react-dropzone'; import { Controller, useForm } from 'react-hook-form'; -import { getSignedLogo, updateLogo, updateLogoSchema } from '@/actions'; -import { Button, resultToast } from '@/components'; +import { submitImage, updateLogoSchema } from '@/actions'; +import { Button } from '@/components'; import { filesSchema } from '@/lib/validations'; import type { Tenant } from '@prisma/client'; @@ -43,25 +43,10 @@ export const Files = ({ tenant }: Props) => { const onSubmit: SubmitHandler = async (data) => { const formData = new FormData(); - const randomId = crypto.randomUUID(); - const logo = encodeURIComponent(randomId + data.logo.name); - formData.append('logo', logo); - const { url, fields } = await getSignedLogo(formData); - formData.delete('logo'); - Object.entries({ ...fields, file }).forEach(([key, value]) => { - formData.append(key, value as string | Blob); - }); - await fetch(url, { method: 'POST', body: formData }); - formData.forEach((_value, key) => { - formData.delete(key); - }); - const logoUrl = `${url}logos/${logo}`; - const logoData: UpdateLogoType = { - logoUrl, - id: tenant.id, - }; - const result = await updateLogo(logoData); - resultToast(result?.serverError, 'Logo updated successfully'); + formData.append('logo', data.logo); + const url = await submitImage(formData, 'logo') + console.log(url) + // resultToast(result, 'Logo updated successfully'); }; const handleReset = () => { @@ -143,7 +128,7 @@ export const Files = ({ tenant }: Props) => { variant="ghost" rounded="bottom" className="w-full border-2 border-t border-dashed border-t-grayA-8 shadow-none" - style={{ borderTopStyle: 'solid' }} + style={{ borderTopStyle: 'solid', fontVariant: 'small-caps' }} onClick={handleReset} type="button" > From f186b4aeee9caf6991cc92b0b057e33c10dc531f Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 3 Oct 2024 17:41:18 +0200 Subject: [PATCH 284/326] :rotating_light: run prettier --- src/modules/settings/general/Files.tsx | 4 ++-- src/types/environment.d.ts | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/modules/settings/general/Files.tsx b/src/modules/settings/general/Files.tsx index f0344a680..f6c46de08 100644 --- a/src/modules/settings/general/Files.tsx +++ b/src/modules/settings/general/Files.tsx @@ -44,8 +44,8 @@ export const Files = ({ tenant }: Props) => { const onSubmit: SubmitHandler = async (data) => { const formData = new FormData(); formData.append('logo', data.logo); - const url = await submitImage(formData, 'logo') - console.log(url) + const url = await submitImage(formData, 'logo'); + console.log(url); // resultToast(result, 'Logo updated successfully'); }; diff --git a/src/types/environment.d.ts b/src/types/environment.d.ts index d8e63ec1f..68117a616 100644 --- a/src/types/environment.d.ts +++ b/src/types/environment.d.ts @@ -26,11 +26,11 @@ declare global { RESEND_API_KEY: string; - AWS_S3_BUCKET: string - AWS_S3_REGION: string - AWS_S3_ACCESS_KEY_ID: string - AWS_S3_SECRET_ACCESS_KEY: string - NEXT_PUBLIC_AWS_CLOUDFRONT_URL: string + AWS_S3_BUCKET: string; + AWS_S3_REGION: string; + AWS_S3_ACCESS_KEY_ID: string; + AWS_S3_SECRET_ACCESS_KEY: string; + NEXT_PUBLIC_AWS_CLOUDFRONT_URL: string; NEXT_PUBLIC_AWS_CLOUDFRONT_URL: string; } } From 905e3cace9e6d42a76817caf4d560b5b9fb2c6d4 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Fri, 4 Oct 2024 10:47:06 +0200 Subject: [PATCH 285/326] :truck: rename prisma file to models --- src/utils/index.ts | 3 +-- src/utils/{prisma.ts => models.ts} | 0 2 files changed, 1 insertion(+), 2 deletions(-) rename src/utils/{prisma.ts => models.ts} (100%) diff --git a/src/utils/index.ts b/src/utils/index.ts index b558eb2e9..23ae23d6c 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -2,8 +2,7 @@ export * from './cn'; export * from './constants'; export * from './date'; export * from './functions'; -export * from './gcp'; export * from './limits'; -export * from './prisma'; +export * from './models'; export * from './routing'; export * from './stripe'; diff --git a/src/utils/prisma.ts b/src/utils/models.ts similarity index 100% rename from src/utils/prisma.ts rename to src/utils/models.ts From d5c10585435a57feafe31982c86545eba769dd0b Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Fri, 4 Oct 2024 10:52:06 +0200 Subject: [PATCH 286/326] :fire: delete gcp files --- src/actions/get-signed-logo/index.ts | 52 --------------------------- src/actions/get-signed-logo/schema.ts | 5 --- src/actions/index.ts | 1 - src/utils/gcp.ts | 1 - 4 files changed, 59 deletions(-) delete mode 100644 src/actions/get-signed-logo/index.ts delete mode 100644 src/actions/get-signed-logo/schema.ts delete mode 100644 src/utils/gcp.ts diff --git a/src/actions/get-signed-logo/index.ts b/src/actions/get-signed-logo/index.ts deleted file mode 100644 index afcaf3b79..000000000 --- a/src/actions/get-signed-logo/index.ts +++ /dev/null @@ -1,52 +0,0 @@ -'use server'; - -import { Storage } from '@google-cloud/storage'; - -import { auth } from '@/auth'; - -import { upsertLogoSchema } from './schema'; - -const bucketName = 'faqmaker'; - -type SignedLogoData = { - logo: string; -}; - -export async function getSignedLogo(formData: FormData) { - try { - if (!formData) { - return { error: 'Data not provided' }; - } - const data = Object.fromEntries(formData) as SignedLogoData; - const session = await auth(); - if (session) { - const result = upsertLogoSchema.safeParse(data); - if (result.success === false) { - const errors = result.error.flatten().fieldErrors; - return { error: errors }; - } - const { logo } = result.data; - const storage = new Storage({ - projectId: process.env.PROJECT_ID, - credentials: { - client_email: process.env.CLIENT_EMAIL, - private_key: process.env.PRIVATE_KEY.replace(/\\n/g, '\n'), - }, - }); - const bucket = storage.bucket(bucketName); - const file = bucket.file(`logos/${logo}`); - const options = { - expires: Date.now() + 1 * 60 * 1000, // 1 minute, - fields: { 'x-goog-meta-test': 'data' }, - }; - const [response] = await file.generateSignedPostPolicyV4(options); - return { - url: response.url, - fields: response.fields, - }; - } - return { error: 'Not signed in' }; - } catch { - return { error: 'Error updating logo' }; - } -} diff --git a/src/actions/get-signed-logo/schema.ts b/src/actions/get-signed-logo/schema.ts deleted file mode 100644 index b8ac0c3f8..000000000 --- a/src/actions/get-signed-logo/schema.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { z } from 'zod'; - -export const upsertLogoSchema = z.object({ - logo: z.string().min(1, { message: 'Logo is required' }), -}); diff --git a/src/actions/index.ts b/src/actions/index.ts index 5f858f992..1c67beec8 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -25,7 +25,6 @@ export { getPaginatedNodes } from './get-nodes'; export { getNodesCount } from './get-nodes-count'; export { getSearchNodes } from './get-search-nodes'; export { getSearchTags } from './get-search-tags'; -export { getSignedLogo } from './get-signed-logo'; export { getTags } from './get-tags'; export { getTagsCount } from './get-tags-count'; export { getTenant } from './get-tenant'; diff --git a/src/utils/gcp.ts b/src/utils/gcp.ts deleted file mode 100644 index acba35856..000000000 --- a/src/utils/gcp.ts +++ /dev/null @@ -1 +0,0 @@ -export const bucketName = 'faqmaker'; From fe843dea60b2edf4b15d005f3176203d0b3cae5c Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Fri, 4 Oct 2024 11:54:12 +0200 Subject: [PATCH 287/326] :recycle: replace gcp functions with aws --- src/actions/delete-tenant/action.ts | 30 +++++++++++------------ src/actions/update-logo/action.ts | 33 +++++++++++++------------- src/actions/update-logo/schema.ts | 2 +- src/actions/upload-file/action.ts | 28 ++++++++++------------ src/lib/aws.ts | 9 +++++++ src/lib/index.ts | 1 + src/modules/settings/general/Files.tsx | 17 +++++++++---- 7 files changed, 66 insertions(+), 54 deletions(-) create mode 100644 src/lib/aws.ts diff --git a/src/actions/delete-tenant/action.ts b/src/actions/delete-tenant/action.ts index 885fa767b..ddc64de1f 100644 --- a/src/actions/delete-tenant/action.ts +++ b/src/actions/delete-tenant/action.ts @@ -1,9 +1,13 @@ 'use server'; -import { Storage } from '@google-cloud/storage'; +import { + DeleteObjectCommand, + DeleteObjectCommandInput, +} from '@aws-sdk/client-s3'; import { redirect } from 'next/navigation'; import Stripe from 'stripe'; +import { s3Client } from '@/lib'; import { authActionClient } from '@/lib/safe-actions'; import { Routes, STRIPE_VERSION } from '@/utils'; import prisma from 'lib/prisma'; @@ -25,26 +29,20 @@ export const deleteTenant = authActionClient logo: true, }, }); - const { customerId, logo } = tenant; + const logo = tenant?.logo; if (logo) { - const storage = new Storage({ - projectId: process.env.PROJECT_ID, - credentials: { - client_email: process.env.CLIENT_EMAIL, - private_key: process.env.PRIVATE_KEY.replace(/\\n/g, '\n'), - }, - }); - const bucketName = 'faqmaker'; - const bucket = storage.bucket(bucketName); - const fileName = logo.replace( - 'https://storage.googleapis.com/faqmaker/', - '', - ); - bucket.file(fileName).delete(); + const fileName = logo.substring(logo.lastIndexOf('/') + 1); + const params: DeleteObjectCommandInput = { + Bucket: process.env.AWS_S3_BUCKET as string, + Key: `${company}/${fileName}`, + }; + const command = new DeleteObjectCommand(params); + await s3Client.send(command); } await prisma.tenant.delete({ where: { id, company }, }); + const customerId = tenant?.customerId; if (customerId) { await stripe.customers.del(customerId); } diff --git a/src/actions/update-logo/action.ts b/src/actions/update-logo/action.ts index 208342360..91bbabe34 100644 --- a/src/actions/update-logo/action.ts +++ b/src/actions/update-logo/action.ts @@ -1,11 +1,15 @@ 'use server'; -import { Storage } from '@google-cloud/storage'; +import { + DeleteObjectCommand, + DeleteObjectCommandInput, +} from '@aws-sdk/client-s3'; import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; +import { s3Client } from '@/lib'; import { authActionClient } from '@/lib/safe-actions'; -import { Routes, bucketName } from '@/utils'; +import { Routes } from '@/utils'; import prisma from 'lib/prisma'; import { updateLogoSchema } from './schema'; @@ -13,33 +17,28 @@ import { updateLogoSchema } from './schema'; export const updateLogo = authActionClient .metadata({ actionName: 'updateLogo' }) .schema(updateLogoSchema) - .action(async ({ parsedInput: { logoUrl, id } }) => { + .action(async ({ parsedInput: { url, id } }) => { const tenant = await prisma.tenant.findUnique({ where: { id }, select: { logo: true, + company: true, }, }); const oldLogo = tenant?.logo; if (oldLogo) { - const storage = new Storage({ - projectId: process.env.PROJECT_ID, - credentials: { - client_email: process.env.CLIENT_EMAIL, - private_key: process.env.PRIVATE_KEY.replace(/\\n/g, '\n'), - }, - }); - const bucket = storage.bucket(bucketName); - const fileName = oldLogo.replace( - 'https://storage.googleapis.com/faqmaker/', - '', - ); - bucket.file(fileName).delete(); + const fileName = oldLogo.substring(oldLogo.lastIndexOf('/') + 1); + const params: DeleteObjectCommandInput = { + Bucket: process.env.AWS_S3_BUCKET as string, + Key: `${tenant.company}/${fileName}`, + }; + const command = new DeleteObjectCommand(params); + await s3Client.send(command); } await prisma.tenant.update({ where: { id }, data: { - logo: logoUrl, + logo: url, }, }); revalidatePath(Routes.SITE.HOME); diff --git a/src/actions/update-logo/schema.ts b/src/actions/update-logo/schema.ts index dbe9aa65a..8ba55d319 100644 --- a/src/actions/update-logo/schema.ts +++ b/src/actions/update-logo/schema.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; export const updateLogoSchema = z.object({ - logoUrl: z + url: z .string() .url() .regex(/^https:\/\/storage\.googleapis\.com\/faqmaker\/logos/), diff --git a/src/actions/upload-file/action.ts b/src/actions/upload-file/action.ts index 643d07413..36a78d95e 100644 --- a/src/actions/upload-file/action.ts +++ b/src/actions/upload-file/action.ts @@ -1,24 +1,18 @@ 'use server'; -import { - PutObjectCommand, - PutObjectCommandInput, - S3Client, -} from '@aws-sdk/client-s3'; +import { PutObjectCommand, PutObjectCommandInput } from '@aws-sdk/client-s3'; -const s3Client = new S3Client({ - region: process.env.AWS_S3_REGION as string, - credentials: { - accessKeyId: process.env.AWS_S3_ACCESS_KEY_ID as string, - secretAccessKey: process.env.AWS_S3_SECRET_ACCESS_KEY as string, - }, -}); +import { s3Client } from '@/lib'; -export async function uploadFile(file: File, fileName: string) { +export async function uploadFile( + file: File, + fileName: string, + company: string, +) { const fileBuffer = (await file.arrayBuffer()) as Buffer; const params: PutObjectCommandInput = { Bucket: process.env.AWS_S3_BUCKET as string, - Key: fileName, + Key: `${company}/${fileName}`, Body: fileBuffer, ContentType: file.type, }; @@ -31,9 +25,11 @@ export const submitImage = async (formData: FormData, field: string) => { if (typeof image !== 'object' || !image || image?.size === 0) { return ''; } + //eslint-disable-next-line no-control-regex const asciiName = image.name.replace(/[^\x00-\x7F]/g, '').replace('', '_'); const fileName = `${new Date().getTime()}-${asciiName}`; - await uploadFile(image as File, fileName); - const url = `${process.env.NEXT_PUBLIC_AWS_CLOUDFRONT_URL}/${fileName}`; + const company = formData.get('company') as string; + await uploadFile(image as File, fileName, company); + const url = `${process.env.NEXT_PUBLIC_AWS_CLOUDFRONT_URL}/${company}/${fileName}`; return url; }; diff --git a/src/lib/aws.ts b/src/lib/aws.ts new file mode 100644 index 000000000..2146e93b4 --- /dev/null +++ b/src/lib/aws.ts @@ -0,0 +1,9 @@ +import { S3Client } from '@aws-sdk/client-s3'; + +export const s3Client = new S3Client({ + region: process.env.AWS_S3_REGION as string, + credentials: { + accessKeyId: process.env.AWS_S3_ACCESS_KEY_ID as string, + secretAccessKey: process.env.AWS_S3_SECRET_ACCESS_KEY as string, + }, +}); diff --git a/src/lib/index.ts b/src/lib/index.ts index a975e9c06..efaf0b0c6 100644 --- a/src/lib/index.ts +++ b/src/lib/index.ts @@ -1,2 +1,3 @@ export * from './SuspenseWrapper'; export * from './validations'; +export * from './aws'; diff --git a/src/modules/settings/general/Files.tsx b/src/modules/settings/general/Files.tsx index f6c46de08..b1cb89cf1 100644 --- a/src/modules/settings/general/Files.tsx +++ b/src/modules/settings/general/Files.tsx @@ -8,8 +8,8 @@ import Image from 'next/image'; import Dropzone from 'react-dropzone'; import { Controller, useForm } from 'react-hook-form'; -import { submitImage, updateLogoSchema } from '@/actions'; -import { Button } from '@/components'; +import { submitImage, updateLogo, updateLogoSchema } from '@/actions'; +import { Button, resultToast } from '@/components'; import { filesSchema } from '@/lib/validations'; import type { Tenant } from '@prisma/client'; @@ -21,6 +21,7 @@ type Props = { }; type Schema = z.infer; + type UpdateLogoType = z.infer; export const Files = ({ tenant }: Props) => { @@ -44,9 +45,17 @@ export const Files = ({ tenant }: Props) => { const onSubmit: SubmitHandler = async (data) => { const formData = new FormData(); formData.append('logo', data.logo); + formData.append('company', tenant.company); const url = await submitImage(formData, 'logo'); - console.log(url); - // resultToast(result, 'Logo updated successfully'); + if (url === '') { + return resultToast('Upload failed', undefined); + } + const logo: UpdateLogoType = { + url, + id: tenant.id, + }; + const result = await updateLogo(logo); + resultToast(result?.serverError, 'Logo updated successfully'); }; const handleReset = () => { From c89225068d4f989295b08e12ef48d70cbdf02e98 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Fri, 4 Oct 2024 11:56:13 +0200 Subject: [PATCH 288/326] :heavy_minus_sign: uninstall gcp dependency --- package.json | 1 - pnpm-lock.yaml | 304 +------------------------------------------------ 2 files changed, 2 insertions(+), 303 deletions(-) diff --git a/package.json b/package.json index 3dca6ec65..4c8245abf 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,6 @@ "dependencies": { "@auth/prisma-adapter": "^2.5.3", "@aws-sdk/client-s3": "^3.663.0", - "@google-cloud/storage": "^7.7.0", "@hookform/resolvers": "^3.3.4", "@prisma/client": "5.16.1", "@radix-ui/colors": "^3.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 08fa798fa..25b773035 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,9 +11,6 @@ dependencies: '@aws-sdk/client-s3': specifier: ^3.663.0 version: 3.663.0 - '@google-cloud/storage': - specifier: ^7.7.0 - version: 7.13.0 '@hookform/resolvers': specifier: ^3.3.4 version: 3.9.0(react-hook-form@7.53.0) @@ -1445,48 +1442,6 @@ packages: resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==} dev: false - /@google-cloud/paginator@5.0.2: - resolution: {integrity: sha512-DJS3s0OVH4zFDB1PzjxAsHqJT6sKVbRwwML0ZBP9PbU7Yebtu/7SWMRzvO2J3nUi9pRNITCfu4LJeooM2w4pjg==} - engines: {node: '>=14.0.0'} - dependencies: - arrify: 2.0.1 - extend: 3.0.2 - dev: false - - /@google-cloud/projectify@4.0.0: - resolution: {integrity: sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==} - engines: {node: '>=14.0.0'} - dev: false - - /@google-cloud/promisify@4.0.0: - resolution: {integrity: sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==} - engines: {node: '>=14'} - dev: false - - /@google-cloud/storage@7.13.0: - resolution: {integrity: sha512-Y0rYdwM5ZPW3jw/T26sMxxfPrVQTKm9vGrZG8PRyGuUmUJ8a2xNuQ9W/NNA1prxqv2i54DSydV8SJqxF2oCVgA==} - engines: {node: '>=14'} - dependencies: - '@google-cloud/paginator': 5.0.2 - '@google-cloud/projectify': 4.0.0 - '@google-cloud/promisify': 4.0.0 - abort-controller: 3.0.0 - async-retry: 1.3.3 - duplexify: 4.1.3 - fast-xml-parser: 4.5.0 - gaxios: 6.7.1 - google-auth-library: 9.14.1 - html-entities: 2.5.2 - mime: 3.0.0 - p-limit: 3.1.0 - retry-request: 7.0.2 - teeny-request: 9.0.0 - uuid: 8.3.2 - transitivePeerDependencies: - - encoding - - supports-color - dev: false - /@hookform/resolvers@3.9.0(react-hook-form@7.53.0): resolution: {integrity: sha512-bU0Gr4EepJ/EQsH/IwEzYLsT/PEj5C0ynLQ4m+GSHS+xKH4TfSelhluTgOaoc4kA5s7eCsQbM4wvZLzELmWzUg==} peerDependencies: @@ -3491,11 +3446,6 @@ packages: tslib: 2.7.0 dev: false - /@tootallnate/once@2.0.0: - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} - dev: false - /@tsconfig/node10@1.0.11: resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} @@ -3508,10 +3458,6 @@ packages: /@tsconfig/node16@1.0.4: resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - /@types/caseless@0.12.5: - resolution: {integrity: sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==} - dev: false - /@types/cookie@0.4.1: resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} dev: false @@ -3602,19 +3548,6 @@ packages: '@types/prop-types': 15.7.13 csstype: 3.1.3 - /@types/request@2.48.12: - resolution: {integrity: sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==} - dependencies: - '@types/caseless': 0.12.5 - '@types/node': 22.5.5 - '@types/tough-cookie': 4.0.5 - form-data: 2.5.1 - dev: false - - /@types/tough-cookie@4.0.5: - resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} - dev: false - /@types/unist@2.0.11: resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} dev: false @@ -3919,13 +3852,6 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dev: false - /abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} - dependencies: - event-target-shim: 5.0.1 - dev: false - /accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} @@ -3970,15 +3896,6 @@ packages: - supports-color dev: false - /agent-base@7.1.1: - resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} - engines: {node: '>= 14'} - dependencies: - debug: 4.3.7 - transitivePeerDependencies: - - supports-color - dev: false - /ajv-formats@2.1.1(ajv@8.17.1): resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: @@ -4178,11 +4095,6 @@ packages: is-shared-array-buffer: 1.0.3 dev: true - /arrify@2.0.1: - resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} - engines: {node: '>=8'} - dev: false - /asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} dev: false @@ -4191,12 +4103,6 @@ packages: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} dev: true - /async-retry@1.3.3: - resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} - dependencies: - retry: 0.13.1 - dev: false - /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: false @@ -4290,10 +4196,6 @@ packages: resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} dev: false - /bignumber.js@9.1.2: - resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} - dev: false - /binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} @@ -4342,10 +4244,6 @@ packages: node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.3) - /buffer-equal-constant-time@1.0.1: - resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} - dev: false - /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: false @@ -4835,24 +4733,9 @@ packages: engines: {node: '>=12'} dev: true - /duplexify@4.1.3: - resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} - dependencies: - end-of-stream: 1.4.4 - inherits: 2.0.4 - readable-stream: 3.6.2 - stream-shift: 1.0.3 - dev: false - /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - /ecdsa-sig-formatter@1.0.11: - resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} - dependencies: - safe-buffer: 5.2.1 - dev: false - /editorconfig@1.0.4: resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==} engines: {node: '>=14'} @@ -4899,12 +4782,6 @@ packages: /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - /end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - dependencies: - once: 1.4.0 - dev: false - /engine.io-parser@5.2.3: resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} engines: {node: '>=10.0.0'} @@ -5578,11 +5455,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - dev: false - /eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} dev: true @@ -5650,13 +5522,6 @@ packages: strnum: 1.0.5 dev: false - /fast-xml-parser@4.5.0: - resolution: {integrity: sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg==} - hasBin: true - dependencies: - strnum: 1.0.5 - dev: false - /fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} dependencies: @@ -5741,15 +5606,6 @@ packages: cross-spawn: 7.0.3 signal-exit: 4.1.0 - /form-data@2.5.1: - resolution: {integrity: sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==} - engines: {node: '>= 0.12'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - dev: false - /form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} @@ -5806,31 +5662,6 @@ packages: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: true - /gaxios@6.7.1: - resolution: {integrity: sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==} - engines: {node: '>=14'} - dependencies: - extend: 3.0.2 - https-proxy-agent: 7.0.5 - is-stream: 2.0.1 - node-fetch: 2.7.0 - uuid: 9.0.1 - transitivePeerDependencies: - - encoding - - supports-color - dev: false - - /gcp-metadata@6.1.0: - resolution: {integrity: sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==} - engines: {node: '>=14'} - dependencies: - gaxios: 6.7.1 - json-bigint: 1.0.0 - transitivePeerDependencies: - - encoding - - supports-color - dev: false - /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -5968,21 +5799,6 @@ packages: gopd: 1.0.1 dev: true - /google-auth-library@9.14.1: - resolution: {integrity: sha512-Rj+PMjoNFGFTmtItH7gHfbHpGVSb3vmnGK3nwNBqxQF9NoBpttSZI/rc0WiM63ma2uGDQtYEkMHkK9U6937NiA==} - engines: {node: '>=14'} - dependencies: - base64-js: 1.5.1 - ecdsa-sig-formatter: 1.0.11 - gaxios: 6.7.1 - gcp-metadata: 6.1.0 - gtoken: 7.1.0 - jws: 4.0.0 - transitivePeerDependencies: - - encoding - - supports-color - dev: false - /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: @@ -5995,17 +5811,6 @@ packages: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true - /gtoken@7.1.0: - resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} - engines: {node: '>=14.0.0'} - dependencies: - gaxios: 6.7.1 - jws: 4.0.0 - transitivePeerDependencies: - - encoding - - supports-color - dev: false - /has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} dev: true @@ -6239,10 +6044,6 @@ packages: react-is: 16.13.1 dev: false - /html-entities@2.5.2: - resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==} - dev: false - /html-to-text@9.0.5: resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} engines: {node: '>=14'} @@ -6271,17 +6072,6 @@ packages: entities: 4.5.0 dev: false - /http-proxy-agent@5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} - dependencies: - '@tootallnate/once': 2.0.0 - agent-base: 6.0.2 - debug: 4.3.7 - transitivePeerDependencies: - - supports-color - dev: false - /https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} @@ -6292,16 +6082,6 @@ packages: - supports-color dev: false - /https-proxy-agent@7.0.5: - resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} - engines: {node: '>= 14'} - dependencies: - agent-base: 7.1.1 - debug: 4.3.7 - transitivePeerDependencies: - - supports-color - dev: false - /human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} @@ -6568,11 +6348,6 @@ packages: call-bind: 1.0.7 dev: true - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: false - /is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -6721,12 +6496,6 @@ packages: hasBin: true dev: false - /json-bigint@1.0.0: - resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} - dependencies: - bignumber.js: 9.1.2 - dev: false - /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} dev: true @@ -6769,21 +6538,6 @@ packages: object.values: 1.2.0 dev: true - /jwa@2.0.0: - resolution: {integrity: sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==} - dependencies: - buffer-equal-constant-time: 1.0.1 - ecdsa-sig-formatter: 1.0.11 - safe-buffer: 5.2.1 - dev: false - - /jws@4.0.0: - resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} - dependencies: - jwa: 2.0.0 - safe-buffer: 5.2.1 - dev: false - /keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} dependencies: @@ -7420,12 +7174,6 @@ packages: mime-db: 1.52.0 dev: false - /mime@3.0.0: - resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} - engines: {node: '>=10.0.0'} - hasBin: true - dev: false - /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} @@ -7848,6 +7596,7 @@ packages: engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 + dev: true /p-limit@4.0.0: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} @@ -8655,23 +8404,6 @@ packages: signal-exit: 4.1.0 dev: true - /retry-request@7.0.2: - resolution: {integrity: sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==} - engines: {node: '>=14'} - dependencies: - '@types/request': 2.48.12 - extend: 3.0.2 - teeny-request: 9.0.0 - transitivePeerDependencies: - - encoding - - supports-color - dev: false - - /retry@0.13.1: - resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} - engines: {node: '>= 4'} - dev: false - /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -8917,16 +8649,6 @@ packages: internal-slot: 1.0.7 dev: true - /stream-events@1.0.5: - resolution: {integrity: sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==} - dependencies: - stubs: 3.0.0 - dev: false - - /stream-shift@1.0.3: - resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} - dev: false - /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} @@ -9073,10 +8795,6 @@ packages: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} dev: false - /stubs@3.0.0: - resolution: {integrity: sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==} - dev: false - /style-to-object@1.0.8: resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} dependencies: @@ -9192,20 +8910,6 @@ packages: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} - /teeny-request@9.0.0: - resolution: {integrity: sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==} - engines: {node: '>=14'} - dependencies: - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 - node-fetch: 2.7.0 - stream-events: 1.0.5 - uuid: 9.0.1 - transitivePeerDependencies: - - encoding - - supports-color - dev: false - /terser-webpack-plugin@5.3.10(webpack@5.94.0): resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} @@ -9540,11 +9244,6 @@ packages: /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - /uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - dev: false - /uuid@9.0.1: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true @@ -9785,6 +9484,7 @@ packages: /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + dev: true /yocto-queue@1.1.1: resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} From dbd68ec67fd70be66a891a37ce448204fe09c75c Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Fri, 4 Oct 2024 11:57:23 +0200 Subject: [PATCH 289/326] :closed_lock_with_key: remove gcp variables --- .env.sample | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.env.sample b/.env.sample index 21a1a9398..73ad37ad7 100644 --- a/.env.sample +++ b/.env.sample @@ -23,11 +23,6 @@ STRIPE_WEBHOOK_SECRET= SENTRY_AUTH_TOKEN= SENTRY_IGNORE_API_RESOLUTION_ERROR=1 -# Google Cloud Storage -PROJECT_ID= -CLIENT_EMAIL= -PRIVATE_KEY= - # Resend key RESEND_API_KEY= From a78b04ea333eb1f703474a99440d0643470d99a7 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Fri, 4 Oct 2024 11:57:45 +0200 Subject: [PATCH 290/326] :see_no_evil: remove gcp file --- .gitignore | 3 --- 1 file changed, 3 deletions(-) diff --git a/.gitignore b/.gitignore index 187c1b60d..d6de185ac 100644 --- a/.gitignore +++ b/.gitignore @@ -27,8 +27,5 @@ out/ # Sentry Config File .sentryclirc -# Google Cloud Storage key -**/gcpKeyFile.json - # VSCode .vscode \ No newline at end of file From 6be011fe90283b6af5b4a8b4ea891320386577ac Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 6 Oct 2024 17:58:01 +0200 Subject: [PATCH 291/326] :mute: remove log --- src/modules/profile/Answers.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/modules/profile/Answers.tsx b/src/modules/profile/Answers.tsx index 89d6ffea1..f384a9330 100644 --- a/src/modules/profile/Answers.tsx +++ b/src/modules/profile/Answers.tsx @@ -16,7 +16,6 @@ type Props = { }; export const UserAnswers = ({ nodes }: Props) => { - console.log(nodes); return (

    Date: Sun, 6 Oct 2024 18:02:30 +0200 Subject: [PATCH 292/326] :recycle: use dropzone hook --- src/modules/settings/general/Files.tsx | 150 +++++++++++++------------ 1 file changed, 77 insertions(+), 73 deletions(-) diff --git a/src/modules/settings/general/Files.tsx b/src/modules/settings/general/Files.tsx index b1cb89cf1..1b0f30623 100644 --- a/src/modules/settings/general/Files.tsx +++ b/src/modules/settings/general/Files.tsx @@ -1,16 +1,17 @@ 'use client'; -import { useEffect, useState } from 'react'; +import { useCallback, useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; import { Upload } from 'lucide-react'; import Image from 'next/image'; -import Dropzone from 'react-dropzone'; -import { Controller, useForm } from 'react-hook-form'; +import { DropzoneOptions, useDropzone } from 'react-dropzone'; +import { useForm } from 'react-hook-form'; import { submitImage, updateLogo, updateLogoSchema } from '@/actions'; import { Button, resultToast } from '@/components'; import { filesSchema } from '@/lib/validations'; +import { MAX_FILE_SIZE } from '@/utils'; import type { Tenant } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; @@ -27,12 +28,14 @@ type UpdateLogoType = z.infer; export const Files = ({ tenant }: Props) => { const [disabled, setDisabled] = useState(true); const [previewImage, setPreviewImage] = useState(''); - const [file, setFile] = useState(null); const { handleSubmit, - control, reset, + register, + unregister, + setValue, + watch, formState: { isSubmitting, isDirty, isValid }, } = useForm({ resolver: zodResolver(filesSchema), @@ -42,9 +45,27 @@ export const Files = ({ tenant }: Props) => { }, }); + const files: File[] = watch('logo'); + + const onDrop = useCallback( + (files) => { + setValue('logo', files, { shouldValidate: true, shouldDirty: true }); + setPreviewImage(URL.createObjectURL(files[0])); + }, + [setValue], + ); + + const { getRootProps, getInputProps, isDragActive, open } = useDropzone({ + onDrop, + accept: { + 'image/png': ['.svg', '.jpeg', '.jpg', '.webp', '.png'], + }, + maxSize: MAX_FILE_SIZE, + }); + const onSubmit: SubmitHandler = async (data) => { const formData = new FormData(); - formData.append('logo', data.logo); + formData.append('logo', data.logo[0]); formData.append('company', tenant.company); const url = await submitImage(formData, 'logo'); if (url === '') { @@ -61,9 +82,15 @@ export const Files = ({ tenant }: Props) => { const handleReset = () => { reset(); setPreviewImage(''); - setFile(null); }; + useEffect(() => { + register('logo'); + return () => { + unregister('logo'); + }; + }, [register, unregister]); + useEffect(() => { setDisabled(isSubmitting || !isDirty || !isValid); }, [isDirty, isSubmitting, isValid]); @@ -80,72 +107,49 @@ export const Files = ({ tenant }: Props) => { className="flex flex-col items-center gap-4" onSubmit={handleSubmit(onSubmit)} > - ( -
    - { - onChange(acceptedFiles[0]); - setFile(acceptedFiles[0]); - setPreviewImage(URL.createObjectURL(acceptedFiles[0])); - }} - > - {({ getRootProps, getInputProps, open, isDragActive }) => ( -
    - - {previewImage ? ( - {file?.name - ) : ( -
    - -
    - )} -

    - {file ? file.name : 'No file selected.'} -

    - -
    - )} -
    - -
    - )} - /> +
    +
    + + {previewImage ? ( + {files?.[0]?.name + ) : ( + <> +
    + +
    +

    + {files?.length ? files?.[0].name : 'No file selected.'} +

    + + + )} +
    + +
    From d9ac777fad2a4242be949f4e68e4a46a2c09a5c5 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 6 Oct 2024 18:03:24 +0200 Subject: [PATCH 293/326] :label: fix file schema --- src/lib/validations.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/lib/validations.ts b/src/lib/validations.ts index 3600b6f80..e4f9be189 100644 --- a/src/lib/validations.ts +++ b/src/lib/validations.ts @@ -30,11 +30,15 @@ export const userEmailSchema = z.object({ export const filesSchema = z.object({ logo: z - .custom((file) => file instanceof File, 'Please upload a file') - .refine((file) => file?.size <= MAX_FILE_SIZE, 'File must be under 5MB') + .any() + .refine((files) => files?.length == 1, 'Image is required.') .refine( - (file) => ACCEPTED_IMAGE_TYPES.includes(file?.type), - 'Wrong format', + (files) => files?.[0]?.size <= MAX_FILE_SIZE, + 'Max file size is 5MB', + ) + .refine( + (files) => ACCEPTED_IMAGE_TYPES.includes(files?.[0]?.type), + '.jpg, .jpeg, .png, .webp and .svg files are accepted.', ), }); From f69691aafcfc8127cf6f69fbb8678d98c869c6c4 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 6 Oct 2024 18:04:02 +0200 Subject: [PATCH 294/326] :label: update regex check to use cloudfront url --- src/actions/update-logo/schema.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/actions/update-logo/schema.ts b/src/actions/update-logo/schema.ts index 8ba55d319..f574e293a 100644 --- a/src/actions/update-logo/schema.ts +++ b/src/actions/update-logo/schema.ts @@ -1,9 +1,11 @@ import { z } from 'zod'; +const path = process.env.NEXT_PUBLIC_AWS_CLOUDFRONT_URL; + export const updateLogoSchema = z.object({ url: z .string() .url() - .regex(/^https:\/\/storage\.googleapis\.com\/faqmaker\/logos/), + .regex(new RegExp(`^${path}`)), id: z.string().cuid2(), }); From a3df940bba631b19bc60787ba3fbe87f9008a013 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 6 Oct 2024 18:04:43 +0200 Subject: [PATCH 295/326] :recycle: use remotePatterns in images field --- next.config.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/next.config.js b/next.config.js index 607f7bb9a..0f1542ae0 100644 --- a/next.config.js +++ b/next.config.js @@ -6,10 +6,16 @@ const nextConfig = removeImports({ transpilePackages: ['@mdxeditor/editor', 'react-diff-view'], swcMinify: true, images: { - domains: [ - 'lh3.googleusercontent.com', - 'storage.googleapis.com', - ], + remotePatterns: [ + { + protocol: 'https', + hostname: 'lh3.googleusercontent.com' + }, + { + protocol: 'https', + hostname: '**.cloudfront.net' + } + ] }, typescript: { // !! WARN !! From 1a2b637ca08ef22da212edc1fbc50fa76133c4cc Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 24 Oct 2024 11:44:28 +0200 Subject: [PATCH 296/326] :arrow_up: upgrade react and next --- package.json | 25 +- pnpm-lock.yaml | 12200 ++++++++++++++++++++++++++--------------------- 2 files changed, 6876 insertions(+), 5349 deletions(-) diff --git a/package.json b/package.json index 4c8245abf..f2afd97b9 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "private": true, "packageManager": "pnpm@9.6.0", "scripts": { - "dev": "next dev", + "dev": "next dev --turbopack", "docker:up": "docker compose up -d", "docker:down": "docker compose down", "build": "next build", @@ -60,13 +60,13 @@ "formidable": "^3.5.1", "jotai": "^2.6.4", "lucide-react": "^0.438.0", - "next": "14.2.4", + "next": "15.0.1", "next-auth": "5.0.0-beta.22", "next-remove-imports": "^1.0.12", "next-safe-action": "^7.0.2", "next-themes": "^0.3.0", - "react": "18.2.0", - "react-dom": "18.2.0", + "react": "19.0.0-rc-69d4b800-20241021", + "react-dom": "19.0.0-rc-69d4b800-20241021", "react-dropzone": "^14.2.3", "react-email": "^3.0.1", "react-error-boundary": "^4.0.12", @@ -81,30 +81,30 @@ "tailwind-merge": "^2.2.0", "tailwindcss-animate": "^1.0.6", "use-debounce": "^10.0.0", - "vaul": "^0.9.0", + "vaul": "^1.1.0", "zod": "^3.22.4" }, "devDependencies": { "@eslint/compat": "^1.1.1", "@eslint/eslintrc": "^3.1.0", "@eslint/js": "^9.9.1", - "@next/eslint-plugin-next": "^14.2.7", + "@next/eslint-plugin-next": "15.0.1", "@playwright/test": "^1.45.0", "@swc-jotai/react-refresh": "^0.2.0", "@types/formidable": "^3.4.5", "@types/node": "^22.5.4", - "@types/react": "^18.0.27", + "@types/react": "npm:types-react@19.0.0-rc.1", "autoprefixer": "^10.4.16", "dotenv": "^16.4.5", "eslint": "9.9.1", - "eslint-config-next": "^14.2.7", + "eslint-config-next": "15.0.1", "eslint-config-prettier": "^9.0.0", "eslint-import-resolver-typescript": "^3.6.3", "eslint-plugin-import-x": "^4.2.0", "eslint-plugin-playwright": "^1.6.2", "eslint-plugin-prettier": "^5.1.3", - "eslint-plugin-react": "^7.35.2", - "eslint-plugin-react-hooks": "^4.6.2", + "eslint-plugin-react": "^7.37.2", + "eslint-plugin-react-hooks": "^5.0.0", "eslint-plugin-unused-imports": "^4.1.3", "husky": "^9.0.11", "lint-staged": "^15.0.2", @@ -116,5 +116,10 @@ "ts-node": "^10.9.1", "typescript": "^5.5.4", "typescript-eslint": "^8.4.0" + }, + "pnpm": { + "overrides": { + "@types/react": "npm:types-react@19.0.0-rc.1" + } } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 25b773035..c46aaa2ab 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,271 +1,272 @@ -lockfileVersion: '6.0' +lockfileVersion: '9.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false -dependencies: - '@auth/prisma-adapter': - specifier: ^2.5.3 - version: 2.5.3(@prisma/client@5.16.1) - '@aws-sdk/client-s3': - specifier: ^3.663.0 - version: 3.663.0 - '@hookform/resolvers': - specifier: ^3.3.4 - version: 3.9.0(react-hook-form@7.53.0) - '@prisma/client': - specifier: 5.16.1 - version: 5.16.1(prisma@5.16.1) - '@radix-ui/colors': - specifier: ^3.0.0 - version: 3.0.0 - '@radix-ui/react-alert-dialog': - specifier: ^1.1.1 - version: 1.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-avatar': - specifier: ^1.0.4 - version: 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-dialog': - specifier: ^1.0.5 - version: 1.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-dropdown-menu': - specifier: ^2.0.6 - version: 2.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-label': - specifier: ^2.0.2 - version: 2.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-popover': - specifier: ^1.1.1 - version: 1.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-select': - specifier: ^2.0.0 - version: 2.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': - specifier: ^1.0.2 - version: 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-tabs': - specifier: ^1.0.4 - version: 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-tooltip': - specifier: ^1.0.7 - version: 1.1.2(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@react-email/components': - specifier: ^0.0.25 - version: 0.0.25(react-dom@18.2.0)(react@18.2.0) - '@sentry/nextjs': - specifier: ^7.102.1 - version: 7.119.0(next@14.2.4)(react@18.2.0)(webpack@5.94.0) - '@slack/webhook': - specifier: ^7.0.1 - version: 7.0.3 - '@stripe/stripe-js': - specifier: ^4.1.0 - version: 4.5.0 - '@uiw/react-markdown-preview': - specifier: ^5.0.6 - version: 5.1.3(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@uiw/react-md-editor': - specifier: ^4.0.3 - version: 4.0.4(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - class-variance-authority: - specifier: ^0.7.0 - version: 0.7.0 - clsx: - specifier: ^2.1.0 - version: 2.1.1 - embla-carousel-react: - specifier: ^8.3.0 - version: 8.3.0(react@18.2.0) - formidable: - specifier: ^3.5.1 - version: 3.5.1 - jotai: - specifier: ^2.6.4 - version: 2.10.0(@types/react@18.3.8)(react@18.2.0) - lucide-react: - specifier: ^0.438.0 - version: 0.438.0(react@18.2.0) - next: - specifier: 14.2.4 - version: 14.2.4(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@18.2.0)(react@18.2.0) - next-auth: - specifier: 5.0.0-beta.22 - version: 5.0.0-beta.22(next@14.2.4)(react@18.2.0) - next-remove-imports: - specifier: ^1.0.12 - version: 1.0.12(webpack@5.94.0) - next-safe-action: - specifier: ^7.0.2 - version: 7.9.3(next@14.2.4)(react-dom@18.2.0)(react@18.2.0)(zod@3.23.8) - next-themes: - specifier: ^0.3.0 - version: 0.3.0(react-dom@18.2.0)(react@18.2.0) - react: - specifier: 18.2.0 - version: 18.2.0 - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) - react-dropzone: - specifier: ^14.2.3 - version: 14.2.3(react@18.2.0) - react-email: - specifier: ^3.0.1 - version: 3.0.1(@playwright/test@1.47.2)(react-dom@18.2.0)(react@18.2.0) - react-error-boundary: - specifier: ^4.0.12 - version: 4.0.13(react@18.2.0) - react-hook-form: - specifier: ^7.45.4 - version: 7.53.0(react@18.2.0) - react-paginate: - specifier: ^8.2.0 - version: 8.2.0(react@18.2.0) - react-papaparse: - specifier: ^4.4.0 - version: 4.4.0 - rehype-sanitize: - specifier: ^6.0.0 - version: 6.0.0 - resend: - specifier: ^4.0.0 - version: 4.0.0(react-dom@18.2.0)(react@18.2.0) - slugify: - specifier: ^1.6.6 - version: 1.6.6 - sonner: - specifier: ^1.4.0 - version: 1.5.0(react-dom@18.2.0)(react@18.2.0) - stripe: - specifier: ^16.1.0 - version: 16.12.0 - tailwind-merge: - specifier: ^2.2.0 - version: 2.5.2 - tailwindcss-animate: - specifier: ^1.0.6 - version: 1.0.7(tailwindcss@3.4.12) - use-debounce: - specifier: ^10.0.0 - version: 10.0.3(react@18.2.0) - vaul: - specifier: ^0.9.0 - version: 0.9.4(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - zod: - specifier: ^3.22.4 - version: 3.23.8 - -devDependencies: - '@eslint/compat': - specifier: ^1.1.1 - version: 1.1.1 - '@eslint/eslintrc': - specifier: ^3.1.0 - version: 3.1.0 - '@eslint/js': - specifier: ^9.9.1 - version: 9.11.0 - '@next/eslint-plugin-next': - specifier: ^14.2.7 - version: 14.2.13 - '@playwright/test': - specifier: ^1.45.0 - version: 1.47.2 - '@swc-jotai/react-refresh': - specifier: ^0.2.0 - version: 0.2.0 - '@types/formidable': - specifier: ^3.4.5 - version: 3.4.5 - '@types/node': - specifier: ^22.5.4 - version: 22.5.5 - '@types/react': - specifier: ^18.0.27 - version: 18.3.8 - autoprefixer: - specifier: ^10.4.16 - version: 10.4.20(postcss@8.4.47) - dotenv: - specifier: ^16.4.5 - version: 16.4.5 - eslint: - specifier: 9.9.1 - version: 9.9.1 - eslint-config-next: - specifier: ^14.2.7 - version: 14.2.13(eslint-plugin-import-x@4.3.0)(eslint@9.9.1)(typescript@5.6.2) - eslint-config-prettier: - specifier: ^9.0.0 - version: 9.1.0(eslint@9.9.1) - eslint-import-resolver-typescript: - specifier: ^3.6.3 - version: 3.6.3(@typescript-eslint/parser@8.6.0)(eslint-plugin-import-x@4.3.0)(eslint@9.9.1) - eslint-plugin-import-x: - specifier: ^4.2.0 - version: 4.3.0(eslint@9.9.1)(typescript@5.6.2) - eslint-plugin-playwright: - specifier: ^1.6.2 - version: 1.6.2(eslint@9.9.1) - eslint-plugin-prettier: - specifier: ^5.1.3 - version: 5.2.1(eslint-config-prettier@9.1.0)(eslint@9.9.1)(prettier@3.3.3) - eslint-plugin-react: - specifier: ^7.35.2 - version: 7.36.1(eslint@9.9.1) - eslint-plugin-react-hooks: - specifier: ^4.6.2 - version: 4.6.2(eslint@9.9.1) - eslint-plugin-unused-imports: - specifier: ^4.1.3 - version: 4.1.4(eslint@9.9.1) - husky: - specifier: ^9.0.11 - version: 9.1.6 - lint-staged: - specifier: ^15.0.2 - version: 15.2.10 - postcss: - specifier: ^8.4.28 - version: 8.4.47 - prettier: - specifier: ^3.2.5 - version: 3.3.3 - prettier-plugin-tailwindcss: - specifier: ^0.6.6 - version: 0.6.6(prettier@3.3.3) - prisma: - specifier: 5.16.1 - version: 5.16.1 - tailwindcss: - specifier: ^3.4.1 - version: 3.4.12(ts-node@10.9.2) - ts-node: - specifier: ^10.9.1 - version: 10.9.2(@types/node@22.5.5)(typescript@5.6.2) - typescript: - specifier: ^5.5.4 - version: 5.6.2 - typescript-eslint: - specifier: ^8.4.0 - version: 8.6.0(eslint@9.9.1)(typescript@5.6.2) +overrides: + '@types/react': npm:types-react@19.0.0-rc.1 + +importers: + + .: + dependencies: + '@auth/prisma-adapter': + specifier: ^2.5.3 + version: 2.5.3(@prisma/client@5.16.1(prisma@5.16.1)) + '@aws-sdk/client-s3': + specifier: ^3.663.0 + version: 3.663.0 + '@hookform/resolvers': + specifier: ^3.3.4 + version: 3.9.0(react-hook-form@7.53.0(react@19.0.0-rc-69d4b800-20241021)) + '@prisma/client': + specifier: 5.16.1 + version: 5.16.1(prisma@5.16.1) + '@radix-ui/colors': + specifier: ^3.0.0 + version: 3.0.0 + '@radix-ui/react-alert-dialog': + specifier: ^1.1.1 + version: 1.1.1(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-avatar': + specifier: ^1.0.4 + version: 1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-dialog': + specifier: ^1.0.5 + version: 1.1.1(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-dropdown-menu': + specifier: ^2.0.6 + version: 2.1.1(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-label': + specifier: ^2.0.2 + version: 2.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-popover': + specifier: ^1.1.1 + version: 1.1.1(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-select': + specifier: ^2.0.0 + version: 2.1.1(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-slot': + specifier: ^1.0.2 + version: 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-tabs': + specifier: ^1.0.4 + version: 1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-tooltip': + specifier: ^1.0.7 + version: 1.1.2(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@react-email/components': + specifier: ^0.0.25 + version: 0.0.25(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021) + '@sentry/nextjs': + specifier: ^7.102.1 + version: 7.119.0(next@15.0.1(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(webpack@5.94.0) + '@slack/webhook': + specifier: ^7.0.1 + version: 7.0.3 + '@stripe/stripe-js': + specifier: ^4.1.0 + version: 4.5.0 + '@uiw/react-markdown-preview': + specifier: ^5.0.6 + version: 5.1.3(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@uiw/react-md-editor': + specifier: ^4.0.3 + version: 4.0.4(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + class-variance-authority: + specifier: ^0.7.0 + version: 0.7.0 + clsx: + specifier: ^2.1.0 + version: 2.1.1 + embla-carousel-react: + specifier: ^8.3.0 + version: 8.3.0(react@19.0.0-rc-69d4b800-20241021) + formidable: + specifier: ^3.5.1 + version: 3.5.1 + jotai: + specifier: ^2.6.4 + version: 2.10.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + lucide-react: + specifier: ^0.438.0 + version: 0.438.0(react@19.0.0-rc-69d4b800-20241021) + next: + specifier: 15.0.1 + version: 15.0.1(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021) + next-auth: + specifier: 5.0.0-beta.22 + version: 5.0.0-beta.22(next@15.0.1(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021) + next-remove-imports: + specifier: ^1.0.12 + version: 1.0.12(webpack@5.94.0) + next-safe-action: + specifier: ^7.0.2 + version: 7.9.3(next@15.0.1(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021))(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(zod@3.23.8) + next-themes: + specifier: ^0.3.0 + version: 0.3.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021) + react: + specifier: 19.0.0-rc-69d4b800-20241021 + version: 19.0.0-rc-69d4b800-20241021 + react-dom: + specifier: 19.0.0-rc-69d4b800-20241021 + version: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021) + react-dropzone: + specifier: ^14.2.3 + version: 14.2.3(react@19.0.0-rc-69d4b800-20241021) + react-email: + specifier: ^3.0.1 + version: 3.0.1(@playwright/test@1.47.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021) + react-error-boundary: + specifier: ^4.0.12 + version: 4.0.13(react@19.0.0-rc-69d4b800-20241021) + react-hook-form: + specifier: ^7.45.4 + version: 7.53.0(react@19.0.0-rc-69d4b800-20241021) + react-paginate: + specifier: ^8.2.0 + version: 8.2.0(react@19.0.0-rc-69d4b800-20241021) + react-papaparse: + specifier: ^4.4.0 + version: 4.4.0 + rehype-sanitize: + specifier: ^6.0.0 + version: 6.0.0 + resend: + specifier: ^4.0.0 + version: 4.0.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021) + slugify: + specifier: ^1.6.6 + version: 1.6.6 + sonner: + specifier: ^1.4.0 + version: 1.5.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021) + stripe: + specifier: ^16.1.0 + version: 16.12.0 + tailwind-merge: + specifier: ^2.2.0 + version: 2.5.2 + tailwindcss-animate: + specifier: ^1.0.6 + version: 1.0.7(tailwindcss@3.4.12(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.6.2))) + use-debounce: + specifier: ^10.0.0 + version: 10.0.3(react@19.0.0-rc-69d4b800-20241021) + vaul: + specifier: ^1.1.0 + version: 1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + zod: + specifier: ^3.22.4 + version: 3.23.8 + devDependencies: + '@eslint/compat': + specifier: ^1.1.1 + version: 1.1.1 + '@eslint/eslintrc': + specifier: ^3.1.0 + version: 3.1.0 + '@eslint/js': + specifier: ^9.9.1 + version: 9.11.0 + '@next/eslint-plugin-next': + specifier: 15.0.1 + version: 15.0.1 + '@playwright/test': + specifier: ^1.45.0 + version: 1.47.2 + '@swc-jotai/react-refresh': + specifier: ^0.2.0 + version: 0.2.0 + '@types/formidable': + specifier: ^3.4.5 + version: 3.4.5 + '@types/node': + specifier: ^22.5.4 + version: 22.5.5 + '@types/react': + specifier: npm:types-react@19.0.0-rc.1 + version: types-react@19.0.0-rc.1 + autoprefixer: + specifier: ^10.4.16 + version: 10.4.20(postcss@8.4.47) + dotenv: + specifier: ^16.4.5 + version: 16.4.5 + eslint: + specifier: 9.9.1 + version: 9.9.1(jiti@1.21.6) + eslint-config-next: + specifier: 15.0.1 + version: 15.0.1(eslint-plugin-import-x@4.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + eslint-config-prettier: + specifier: ^9.0.0 + version: 9.1.0(eslint@9.9.1(jiti@1.21.6)) + eslint-import-resolver-typescript: + specifier: ^3.6.3 + version: 3.6.3(@typescript-eslint/parser@8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2))(eslint-plugin-import@2.31.0)(eslint@9.9.1(jiti@1.21.6)) + eslint-plugin-import-x: + specifier: ^4.2.0 + version: 4.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + eslint-plugin-playwright: + specifier: ^1.6.2 + version: 1.6.2(eslint@9.9.1(jiti@1.21.6)) + eslint-plugin-prettier: + specifier: ^5.1.3 + version: 5.2.1(eslint-config-prettier@9.1.0(eslint@9.9.1(jiti@1.21.6)))(eslint@9.9.1(jiti@1.21.6))(prettier@3.3.3) + eslint-plugin-react: + specifier: ^7.37.2 + version: 7.37.2(eslint@9.9.1(jiti@1.21.6)) + eslint-plugin-react-hooks: + specifier: ^5.0.0 + version: 5.0.0(eslint@9.9.1(jiti@1.21.6)) + eslint-plugin-unused-imports: + specifier: ^4.1.3 + version: 4.1.4(@typescript-eslint/eslint-plugin@8.6.0(@typescript-eslint/parser@8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.9.1(jiti@1.21.6)) + husky: + specifier: ^9.0.11 + version: 9.1.6 + lint-staged: + specifier: ^15.0.2 + version: 15.2.10 + postcss: + specifier: ^8.4.28 + version: 8.4.47 + prettier: + specifier: ^3.2.5 + version: 3.3.3 + prettier-plugin-tailwindcss: + specifier: ^0.6.6 + version: 0.6.6(prettier@3.3.3) + prisma: + specifier: 5.16.1 + version: 5.16.1 + tailwindcss: + specifier: ^3.4.1 + version: 3.4.12(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.6.2)) + ts-node: + specifier: ^10.9.1 + version: 10.9.2(@types/node@22.5.5)(typescript@5.6.2) + typescript: + specifier: ^5.5.4 + version: 5.6.2 + typescript-eslint: + specifier: ^8.4.0 + version: 8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) packages: - /@alloc/quick-lru@5.2.0: + '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} - /@ampproject/remapping@2.3.0: + '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - dev: false - /@auth/core@0.35.3: + '@auth/core@0.35.3': resolution: {integrity: sha512-g6qfiqU4OtyvIEZ8J7UoIwAxEnNnLJV0/f/DW41U+4G5nhBlaCrnKhawJIJpU0D3uavXLeDT3B0BkjtiimvMDA==} peerDependencies: '@simplewebauthn/browser': ^9.0.1 @@ -278,625 +279,163 @@ packages: optional: true nodemailer: optional: true - dependencies: - '@panva/hkdf': 1.2.1 - '@types/cookie': 0.6.0 - cookie: 0.6.0 - jose: 5.9.3 - oauth4webapi: 2.17.0 - preact: 10.11.3 - preact-render-to-string: 5.2.3(preact@10.11.3) - dev: false - /@auth/prisma-adapter@2.5.3(@prisma/client@5.16.1): + '@auth/prisma-adapter@2.5.3': resolution: {integrity: sha512-hUQ7KT4Ufbg4RqmfvRUNwQjuNsTdxWXTIid8IbmAcT5b6DMWQEvDEJUZL14rgrBHk5xZQbagfM28VxF75NgnNw==} peerDependencies: '@prisma/client': '>=2.26.0 || >=3 || >=4 || >=5' - dependencies: - '@auth/core': 0.35.3 - '@prisma/client': 5.16.1(prisma@5.16.1) - transitivePeerDependencies: - - '@simplewebauthn/browser' - - '@simplewebauthn/server' - - nodemailer - dev: false - /@aws-crypto/crc32@5.2.0: + '@aws-crypto/crc32@5.2.0': resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} engines: {node: '>=16.0.0'} - dependencies: - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.662.0 - tslib: 2.7.0 - dev: false - /@aws-crypto/crc32c@5.2.0: + '@aws-crypto/crc32c@5.2.0': resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} - dependencies: - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.662.0 - tslib: 2.7.0 - dev: false - /@aws-crypto/sha1-browser@5.2.0: + '@aws-crypto/sha1-browser@5.2.0': resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} - dependencies: - '@aws-crypto/supports-web-crypto': 5.2.0 - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.662.0 - '@aws-sdk/util-locate-window': 3.568.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.7.0 - dev: false - /@aws-crypto/sha256-browser@5.2.0: + '@aws-crypto/sha256-browser@5.2.0': resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} - dependencies: - '@aws-crypto/sha256-js': 5.2.0 - '@aws-crypto/supports-web-crypto': 5.2.0 - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.662.0 - '@aws-sdk/util-locate-window': 3.568.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.7.0 - dev: false - /@aws-crypto/sha256-js@5.2.0: + '@aws-crypto/sha256-js@5.2.0': resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} engines: {node: '>=16.0.0'} - dependencies: - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.662.0 - tslib: 2.7.0 - dev: false - /@aws-crypto/supports-web-crypto@5.2.0: + '@aws-crypto/supports-web-crypto@5.2.0': resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} - dependencies: - tslib: 2.7.0 - dev: false - /@aws-crypto/util@5.2.0: + '@aws-crypto/util@5.2.0': resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - dependencies: - '@aws-sdk/types': 3.662.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.7.0 - dev: false - /@aws-sdk/client-s3@3.663.0: + '@aws-sdk/client-s3@3.663.0': resolution: {integrity: sha512-XWoy6wglrxFngdswGbccR7cwmafe3ycx2/vIRDuVnIeSYdj/PgYACBt5JEM5NEzW26kFtlJpeN9hUH1i6tyfuQ==} engines: {node: '>=16.0.0'} - dependencies: - '@aws-crypto/sha1-browser': 5.2.0 - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.662.0(@aws-sdk/client-sts@3.662.0) - '@aws-sdk/client-sts': 3.662.0 - '@aws-sdk/core': 3.662.0 - '@aws-sdk/credential-provider-node': 3.662.0(@aws-sdk/client-sso-oidc@3.662.0)(@aws-sdk/client-sts@3.662.0) - '@aws-sdk/middleware-bucket-endpoint': 3.662.0 - '@aws-sdk/middleware-expect-continue': 3.662.0 - '@aws-sdk/middleware-flexible-checksums': 3.662.0 - '@aws-sdk/middleware-host-header': 3.662.0 - '@aws-sdk/middleware-location-constraint': 3.662.0 - '@aws-sdk/middleware-logger': 3.662.0 - '@aws-sdk/middleware-recursion-detection': 3.662.0 - '@aws-sdk/middleware-sdk-s3': 3.662.0 - '@aws-sdk/middleware-ssec': 3.662.0 - '@aws-sdk/middleware-user-agent': 3.662.0 - '@aws-sdk/region-config-resolver': 3.662.0 - '@aws-sdk/signature-v4-multi-region': 3.662.0 - '@aws-sdk/types': 3.662.0 - '@aws-sdk/util-endpoints': 3.662.0 - '@aws-sdk/util-user-agent-browser': 3.662.0 - '@aws-sdk/util-user-agent-node': 3.662.0 - '@aws-sdk/xml-builder': 3.662.0 - '@smithy/config-resolver': 3.0.9 - '@smithy/core': 2.4.7 - '@smithy/eventstream-serde-browser': 3.0.10 - '@smithy/eventstream-serde-config-resolver': 3.0.7 - '@smithy/eventstream-serde-node': 3.0.9 - '@smithy/fetch-http-handler': 3.2.9 - '@smithy/hash-blob-browser': 3.1.6 - '@smithy/hash-node': 3.0.7 - '@smithy/hash-stream-node': 3.1.6 - '@smithy/invalid-dependency': 3.0.7 - '@smithy/md5-js': 3.0.7 - '@smithy/middleware-content-length': 3.0.9 - '@smithy/middleware-endpoint': 3.1.4 - '@smithy/middleware-retry': 3.0.22 - '@smithy/middleware-serde': 3.0.7 - '@smithy/middleware-stack': 3.0.7 - '@smithy/node-config-provider': 3.1.8 - '@smithy/node-http-handler': 3.2.4 - '@smithy/protocol-http': 4.1.4 - '@smithy/smithy-client': 3.3.6 - '@smithy/types': 3.5.0 - '@smithy/url-parser': 3.0.7 - '@smithy/util-base64': 3.0.0 - '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.22 - '@smithy/util-defaults-mode-node': 3.0.22 - '@smithy/util-endpoints': 2.1.3 - '@smithy/util-middleware': 3.0.7 - '@smithy/util-retry': 3.0.7 - '@smithy/util-stream': 3.1.9 - '@smithy/util-utf8': 3.0.0 - '@smithy/util-waiter': 3.1.6 - tslib: 2.7.0 - transitivePeerDependencies: - - aws-crt - dev: false - /@aws-sdk/client-sso-oidc@3.662.0(@aws-sdk/client-sts@3.662.0): + '@aws-sdk/client-sso-oidc@3.662.0': resolution: {integrity: sha512-YZrH0sftdmjvEIY8u0LCrfEhyaMVpN0+K0K9WsUrFRMZ7DK6nB9YD1f5EaKUN5UjNw5S7gbjSdI8neSCoELjhw==} engines: {node: '>=16.0.0'} peerDependencies: '@aws-sdk/client-sts': ^3.662.0 - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sts': 3.662.0 - '@aws-sdk/core': 3.662.0 - '@aws-sdk/credential-provider-node': 3.662.0(@aws-sdk/client-sso-oidc@3.662.0)(@aws-sdk/client-sts@3.662.0) - '@aws-sdk/middleware-host-header': 3.662.0 - '@aws-sdk/middleware-logger': 3.662.0 - '@aws-sdk/middleware-recursion-detection': 3.662.0 - '@aws-sdk/middleware-user-agent': 3.662.0 - '@aws-sdk/region-config-resolver': 3.662.0 - '@aws-sdk/types': 3.662.0 - '@aws-sdk/util-endpoints': 3.662.0 - '@aws-sdk/util-user-agent-browser': 3.662.0 - '@aws-sdk/util-user-agent-node': 3.662.0 - '@smithy/config-resolver': 3.0.9 - '@smithy/core': 2.4.7 - '@smithy/fetch-http-handler': 3.2.9 - '@smithy/hash-node': 3.0.7 - '@smithy/invalid-dependency': 3.0.7 - '@smithy/middleware-content-length': 3.0.9 - '@smithy/middleware-endpoint': 3.1.4 - '@smithy/middleware-retry': 3.0.22 - '@smithy/middleware-serde': 3.0.7 - '@smithy/middleware-stack': 3.0.7 - '@smithy/node-config-provider': 3.1.8 - '@smithy/node-http-handler': 3.2.4 - '@smithy/protocol-http': 4.1.4 - '@smithy/smithy-client': 3.3.6 - '@smithy/types': 3.5.0 - '@smithy/url-parser': 3.0.7 - '@smithy/util-base64': 3.0.0 - '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.22 - '@smithy/util-defaults-mode-node': 3.0.22 - '@smithy/util-endpoints': 2.1.3 - '@smithy/util-middleware': 3.0.7 - '@smithy/util-retry': 3.0.7 - '@smithy/util-utf8': 3.0.0 - tslib: 2.7.0 - transitivePeerDependencies: - - aws-crt - dev: false - /@aws-sdk/client-sso@3.662.0: + '@aws-sdk/client-sso@3.662.0': resolution: {integrity: sha512-4j3+eNSnNblcIYCJrsRRdyXFjAWGpGa7s7pdIyDMLwtYA7AKNlnlyQV14jtezhMrN2j6qZ7zZmnwEyFGipgfWA==} engines: {node: '>=16.0.0'} - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.662.0 - '@aws-sdk/middleware-host-header': 3.662.0 - '@aws-sdk/middleware-logger': 3.662.0 - '@aws-sdk/middleware-recursion-detection': 3.662.0 - '@aws-sdk/middleware-user-agent': 3.662.0 - '@aws-sdk/region-config-resolver': 3.662.0 - '@aws-sdk/types': 3.662.0 - '@aws-sdk/util-endpoints': 3.662.0 - '@aws-sdk/util-user-agent-browser': 3.662.0 - '@aws-sdk/util-user-agent-node': 3.662.0 - '@smithy/config-resolver': 3.0.9 - '@smithy/core': 2.4.7 - '@smithy/fetch-http-handler': 3.2.9 - '@smithy/hash-node': 3.0.7 - '@smithy/invalid-dependency': 3.0.7 - '@smithy/middleware-content-length': 3.0.9 - '@smithy/middleware-endpoint': 3.1.4 - '@smithy/middleware-retry': 3.0.22 - '@smithy/middleware-serde': 3.0.7 - '@smithy/middleware-stack': 3.0.7 - '@smithy/node-config-provider': 3.1.8 - '@smithy/node-http-handler': 3.2.4 - '@smithy/protocol-http': 4.1.4 - '@smithy/smithy-client': 3.3.6 - '@smithy/types': 3.5.0 - '@smithy/url-parser': 3.0.7 - '@smithy/util-base64': 3.0.0 - '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.22 - '@smithy/util-defaults-mode-node': 3.0.22 - '@smithy/util-endpoints': 2.1.3 - '@smithy/util-middleware': 3.0.7 - '@smithy/util-retry': 3.0.7 - '@smithy/util-utf8': 3.0.0 - tslib: 2.7.0 - transitivePeerDependencies: - - aws-crt - dev: false - /@aws-sdk/client-sts@3.662.0: + '@aws-sdk/client-sts@3.662.0': resolution: {integrity: sha512-RjiXvfW3a36ybHuzYuZ6ZgddYiENiXLDGC3tlZMsKWuoVQNeoh2grx1wxUA6e4ajAIqJLXs5dAYTSXzGaAqHTA==} engines: {node: '>=16.0.0'} - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.662.0(@aws-sdk/client-sts@3.662.0) - '@aws-sdk/core': 3.662.0 - '@aws-sdk/credential-provider-node': 3.662.0(@aws-sdk/client-sso-oidc@3.662.0)(@aws-sdk/client-sts@3.662.0) - '@aws-sdk/middleware-host-header': 3.662.0 - '@aws-sdk/middleware-logger': 3.662.0 - '@aws-sdk/middleware-recursion-detection': 3.662.0 - '@aws-sdk/middleware-user-agent': 3.662.0 - '@aws-sdk/region-config-resolver': 3.662.0 - '@aws-sdk/types': 3.662.0 - '@aws-sdk/util-endpoints': 3.662.0 - '@aws-sdk/util-user-agent-browser': 3.662.0 - '@aws-sdk/util-user-agent-node': 3.662.0 - '@smithy/config-resolver': 3.0.9 - '@smithy/core': 2.4.7 - '@smithy/fetch-http-handler': 3.2.9 - '@smithy/hash-node': 3.0.7 - '@smithy/invalid-dependency': 3.0.7 - '@smithy/middleware-content-length': 3.0.9 - '@smithy/middleware-endpoint': 3.1.4 - '@smithy/middleware-retry': 3.0.22 - '@smithy/middleware-serde': 3.0.7 - '@smithy/middleware-stack': 3.0.7 - '@smithy/node-config-provider': 3.1.8 - '@smithy/node-http-handler': 3.2.4 - '@smithy/protocol-http': 4.1.4 - '@smithy/smithy-client': 3.3.6 - '@smithy/types': 3.5.0 - '@smithy/url-parser': 3.0.7 - '@smithy/util-base64': 3.0.0 - '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.22 - '@smithy/util-defaults-mode-node': 3.0.22 - '@smithy/util-endpoints': 2.1.3 - '@smithy/util-middleware': 3.0.7 - '@smithy/util-retry': 3.0.7 - '@smithy/util-utf8': 3.0.0 - tslib: 2.7.0 - transitivePeerDependencies: - - aws-crt - dev: false - /@aws-sdk/core@3.662.0: + '@aws-sdk/core@3.662.0': resolution: {integrity: sha512-w64Fa4dsgM8vN7Z+QPR3n+aAl5GXThQRH8deT/iF1rLrzfq7V8xxACJ/CLVaxrZMZUPUUgG7DUAo95nXFWmGjA==} engines: {node: '>=16.0.0'} - dependencies: - '@smithy/core': 2.4.7 - '@smithy/node-config-provider': 3.1.8 - '@smithy/property-provider': 3.1.7 - '@smithy/protocol-http': 4.1.4 - '@smithy/signature-v4': 4.2.0 - '@smithy/smithy-client': 3.3.6 - '@smithy/types': 3.5.0 - '@smithy/util-middleware': 3.0.7 - fast-xml-parser: 4.4.1 - tslib: 2.7.0 - dev: false - /@aws-sdk/credential-provider-env@3.662.0: + '@aws-sdk/credential-provider-env@3.662.0': resolution: {integrity: sha512-Dgwb0c/FH4xT5QZZFdLTFmCkdG3woXIAgLx5HCoH9Ty5G7T8keHOU9Jm4Vpe2ZJXL7JJHlLakGS65+bgXTuLSQ==} engines: {node: '>=16.0.0'} - dependencies: - '@aws-sdk/types': 3.662.0 - '@smithy/property-provider': 3.1.7 - '@smithy/types': 3.5.0 - tslib: 2.7.0 - dev: false - /@aws-sdk/credential-provider-http@3.662.0: + '@aws-sdk/credential-provider-http@3.662.0': resolution: {integrity: sha512-Wnle/uJI4Ku9ABJHof9sio28VlaSbF3jVQKTSVCJftvbKELlFOlY5aXSjtu0wwcJqDS5r78N5KM7aARUJES+DA==} engines: {node: '>=16.0.0'} - dependencies: - '@aws-sdk/types': 3.662.0 - '@smithy/fetch-http-handler': 3.2.9 - '@smithy/node-http-handler': 3.2.4 - '@smithy/property-provider': 3.1.7 - '@smithy/protocol-http': 4.1.4 - '@smithy/smithy-client': 3.3.6 - '@smithy/types': 3.5.0 - '@smithy/util-stream': 3.1.9 - tslib: 2.7.0 - dev: false - /@aws-sdk/credential-provider-ini@3.662.0(@aws-sdk/client-sso-oidc@3.662.0)(@aws-sdk/client-sts@3.662.0): + '@aws-sdk/credential-provider-ini@3.662.0': resolution: {integrity: sha512-jk+A5B0NRYG4KrjJ8ef1+r9bFjhpwUm/A9grJmp3JOwcHKXvI2Gy9BXNqfqqVgrK0Gns+WyhJZy6rsRaC+v1oQ==} engines: {node: '>=16.0.0'} peerDependencies: '@aws-sdk/client-sts': ^3.662.0 - dependencies: - '@aws-sdk/client-sts': 3.662.0 - '@aws-sdk/credential-provider-env': 3.662.0 - '@aws-sdk/credential-provider-http': 3.662.0 - '@aws-sdk/credential-provider-process': 3.662.0 - '@aws-sdk/credential-provider-sso': 3.662.0(@aws-sdk/client-sso-oidc@3.662.0) - '@aws-sdk/credential-provider-web-identity': 3.662.0(@aws-sdk/client-sts@3.662.0) - '@aws-sdk/types': 3.662.0 - '@smithy/credential-provider-imds': 3.2.4 - '@smithy/property-provider': 3.1.7 - '@smithy/shared-ini-file-loader': 3.1.8 - '@smithy/types': 3.5.0 - tslib: 2.7.0 - transitivePeerDependencies: - - '@aws-sdk/client-sso-oidc' - - aws-crt - dev: false - /@aws-sdk/credential-provider-node@3.662.0(@aws-sdk/client-sso-oidc@3.662.0)(@aws-sdk/client-sts@3.662.0): + '@aws-sdk/credential-provider-node@3.662.0': resolution: {integrity: sha512-2O9wjxdLcU1b+bWVkp3YYbPHo15SU3pW4KfWTca5bB/C01i1eqiHnwsOFz/WKPYYKNj0FhXtJJjeDQLtNFYI8A==} engines: {node: '>=16.0.0'} - dependencies: - '@aws-sdk/credential-provider-env': 3.662.0 - '@aws-sdk/credential-provider-http': 3.662.0 - '@aws-sdk/credential-provider-ini': 3.662.0(@aws-sdk/client-sso-oidc@3.662.0)(@aws-sdk/client-sts@3.662.0) - '@aws-sdk/credential-provider-process': 3.662.0 - '@aws-sdk/credential-provider-sso': 3.662.0(@aws-sdk/client-sso-oidc@3.662.0) - '@aws-sdk/credential-provider-web-identity': 3.662.0(@aws-sdk/client-sts@3.662.0) - '@aws-sdk/types': 3.662.0 - '@smithy/credential-provider-imds': 3.2.4 - '@smithy/property-provider': 3.1.7 - '@smithy/shared-ini-file-loader': 3.1.8 - '@smithy/types': 3.5.0 - tslib: 2.7.0 - transitivePeerDependencies: - - '@aws-sdk/client-sso-oidc' - - '@aws-sdk/client-sts' - - aws-crt - dev: false - /@aws-sdk/credential-provider-process@3.662.0: + '@aws-sdk/credential-provider-process@3.662.0': resolution: {integrity: sha512-1QUdtr/JiuvRjVgA8enpgCwjq7Eud8eVUT0i/vpWuFp5TV2FFq/8BD3GBkesTdy4Ylms6QVGf7J6INdfUWQEmw==} engines: {node: '>=16.0.0'} - dependencies: - '@aws-sdk/types': 3.662.0 - '@smithy/property-provider': 3.1.7 - '@smithy/shared-ini-file-loader': 3.1.8 - '@smithy/types': 3.5.0 - tslib: 2.7.0 - dev: false - /@aws-sdk/credential-provider-sso@3.662.0(@aws-sdk/client-sso-oidc@3.662.0): + '@aws-sdk/credential-provider-sso@3.662.0': resolution: {integrity: sha512-zxze6pDPgwBwl7S3h4JDALCCz93pTAfulbCY8FqMEd7GvnAiofHpL9svyt4+gytXwwUSsQ6KxCMVLbi+8k8YIg==} engines: {node: '>=16.0.0'} - dependencies: - '@aws-sdk/client-sso': 3.662.0 - '@aws-sdk/token-providers': 3.662.0(@aws-sdk/client-sso-oidc@3.662.0) - '@aws-sdk/types': 3.662.0 - '@smithy/property-provider': 3.1.7 - '@smithy/shared-ini-file-loader': 3.1.8 - '@smithy/types': 3.5.0 - tslib: 2.7.0 - transitivePeerDependencies: - - '@aws-sdk/client-sso-oidc' - - aws-crt - dev: false - /@aws-sdk/credential-provider-web-identity@3.662.0(@aws-sdk/client-sts@3.662.0): + '@aws-sdk/credential-provider-web-identity@3.662.0': resolution: {integrity: sha512-GhPwxmHSFtwCckuT+34JG+U99qKfDWVYPLJOPI6b35+aLhfVqW5CHPmVjtM4WZqbxzsA0a3KAYA/U1ZaluI4SA==} engines: {node: '>=16.0.0'} peerDependencies: '@aws-sdk/client-sts': ^3.662.0 - dependencies: - '@aws-sdk/client-sts': 3.662.0 - '@aws-sdk/types': 3.662.0 - '@smithy/property-provider': 3.1.7 - '@smithy/types': 3.5.0 - tslib: 2.7.0 - dev: false - /@aws-sdk/middleware-bucket-endpoint@3.662.0: + '@aws-sdk/middleware-bucket-endpoint@3.662.0': resolution: {integrity: sha512-qBdQ7zqdanCPep7puYw1s6lH8lQ2uWP6+klp35cAYjCMbGiItclteXRQOuldkd9Oc7dtoYlTJBDKeAybJZShlw==} engines: {node: '>=16.0.0'} - dependencies: - '@aws-sdk/types': 3.662.0 - '@aws-sdk/util-arn-parser': 3.568.0 - '@smithy/node-config-provider': 3.1.8 - '@smithy/protocol-http': 4.1.4 - '@smithy/types': 3.5.0 - '@smithy/util-config-provider': 3.0.0 - tslib: 2.7.0 - dev: false - /@aws-sdk/middleware-expect-continue@3.662.0: + '@aws-sdk/middleware-expect-continue@3.662.0': resolution: {integrity: sha512-kSSeblAz0bdE8golejbEp9tLoP1EcYGWqrAjv5kDwbo56J9vbBh12shxDULpDBNXXLBoK4DktHgJl3RqwXlK5g==} engines: {node: '>=16.0.0'} - dependencies: - '@aws-sdk/types': 3.662.0 - '@smithy/protocol-http': 4.1.4 - '@smithy/types': 3.5.0 - tslib: 2.7.0 - dev: false - /@aws-sdk/middleware-flexible-checksums@3.662.0: + '@aws-sdk/middleware-flexible-checksums@3.662.0': resolution: {integrity: sha512-aZEA0a0hYfOL2ah+ZlFAVr2HMWetNooyrDFq+iP04CmE674WCJBp71DdQrRvNQsW+PBkq7iHsgfYEQumYMqz9Q==} engines: {node: '>=16.0.0'} - dependencies: - '@aws-crypto/crc32': 5.2.0 - '@aws-crypto/crc32c': 5.2.0 - '@aws-sdk/types': 3.662.0 - '@smithy/is-array-buffer': 3.0.0 - '@smithy/node-config-provider': 3.1.8 - '@smithy/protocol-http': 4.1.4 - '@smithy/types': 3.5.0 - '@smithy/util-middleware': 3.0.7 - '@smithy/util-utf8': 3.0.0 - tslib: 2.7.0 - dev: false - /@aws-sdk/middleware-host-header@3.662.0: + '@aws-sdk/middleware-host-header@3.662.0': resolution: {integrity: sha512-Gkb0J1LTvD8LOS8uwoRI5weFXvvJwP1jfnYwzQrFgLymRFHJm5JtORQZtmw34dtdou+IBTUsH1mgI8b3QVVH3w==} engines: {node: '>=16.0.0'} - dependencies: - '@aws-sdk/types': 3.662.0 - '@smithy/protocol-http': 4.1.4 - '@smithy/types': 3.5.0 - tslib: 2.7.0 - dev: false - /@aws-sdk/middleware-location-constraint@3.662.0: + '@aws-sdk/middleware-location-constraint@3.662.0': resolution: {integrity: sha512-+OAm1hKXGy+F/KJFAc8RKX/z74ZOPEqVzg70kzy/mdSNGzJwvEOfT+KwDVncZ01jk9jso1Q8DXGmxfWzZ/n4aw==} engines: {node: '>=16.0.0'} - dependencies: - '@aws-sdk/types': 3.662.0 - '@smithy/types': 3.5.0 - tslib: 2.7.0 - dev: false - /@aws-sdk/middleware-logger@3.662.0: + '@aws-sdk/middleware-logger@3.662.0': resolution: {integrity: sha512-aSpwVHtfMlqzpmnmmUgRNCaIcxXdRrGqGWG+VWXuYR1F6jJARDDCxGkSuKiPEOLX0h0BroUo4gqbM8ILXQ8rVw==} engines: {node: '>=16.0.0'} - dependencies: - '@aws-sdk/types': 3.662.0 - '@smithy/types': 3.5.0 - tslib: 2.7.0 - dev: false - /@aws-sdk/middleware-recursion-detection@3.662.0: + '@aws-sdk/middleware-recursion-detection@3.662.0': resolution: {integrity: sha512-V/MYE+LOFIQDLnpWMHLxnKu+ELhD3pLOrWXVhKpVit6YcHxaOz6nvB40CPamSPDXenA11FGXKAGNHZ0loTpDQg==} engines: {node: '>=16.0.0'} - dependencies: - '@aws-sdk/types': 3.662.0 - '@smithy/protocol-http': 4.1.4 - '@smithy/types': 3.5.0 - tslib: 2.7.0 - dev: false - /@aws-sdk/middleware-sdk-s3@3.662.0: + '@aws-sdk/middleware-sdk-s3@3.662.0': resolution: {integrity: sha512-Ur5UGuS/bP5ftBxepOYJmTYES4Crh9TwIbBMUqsaal/XcdvQ7uYXK/PvlYg9P/bLpStmDBb1bxmnmjdsQBwSgw==} engines: {node: '>=16.0.0'} - dependencies: - '@aws-sdk/core': 3.662.0 - '@aws-sdk/types': 3.662.0 - '@aws-sdk/util-arn-parser': 3.568.0 - '@smithy/core': 2.4.7 - '@smithy/node-config-provider': 3.1.8 - '@smithy/protocol-http': 4.1.4 - '@smithy/signature-v4': 4.2.0 - '@smithy/smithy-client': 3.3.6 - '@smithy/types': 3.5.0 - '@smithy/util-config-provider': 3.0.0 - '@smithy/util-middleware': 3.0.7 - '@smithy/util-stream': 3.1.9 - '@smithy/util-utf8': 3.0.0 - tslib: 2.7.0 - dev: false - /@aws-sdk/middleware-ssec@3.662.0: + '@aws-sdk/middleware-ssec@3.662.0': resolution: {integrity: sha512-7dxSUCeSLYFlMEr6BwNoYiF+4X7/JyIAyjOOI/hh9hyK8D8f3/xenACb67rPb59wUs6WgWZVg+hvWBC55a5KGg==} engines: {node: '>=16.0.0'} - dependencies: - '@aws-sdk/types': 3.662.0 - '@smithy/types': 3.5.0 - tslib: 2.7.0 - dev: false - /@aws-sdk/middleware-user-agent@3.662.0: + '@aws-sdk/middleware-user-agent@3.662.0': resolution: {integrity: sha512-NT940BLSSys/A8W3zO3g2Kj+zpeydqGbSQgN6qz84jTskQjnrlamoq+Zl9Rrp8Cn8sC10UQ09kGg97lvjVOlmg==} engines: {node: '>=16.0.0'} - dependencies: - '@aws-sdk/types': 3.662.0 - '@aws-sdk/util-endpoints': 3.662.0 - '@smithy/protocol-http': 4.1.4 - '@smithy/types': 3.5.0 - tslib: 2.7.0 - dev: false - /@aws-sdk/region-config-resolver@3.662.0: + '@aws-sdk/region-config-resolver@3.662.0': resolution: {integrity: sha512-MDiWl4wZSVnnTELLb+jFSe0nj9HwxJPX2JnghXKkOXmbKEiE2/21DCQwU9mr9VUq2ZOQqaSnMFPr94iRu0AVTQ==} engines: {node: '>=16.0.0'} - dependencies: - '@aws-sdk/types': 3.662.0 - '@smithy/node-config-provider': 3.1.8 - '@smithy/types': 3.5.0 - '@smithy/util-config-provider': 3.0.0 - '@smithy/util-middleware': 3.0.7 - tslib: 2.7.0 - dev: false - /@aws-sdk/signature-v4-multi-region@3.662.0: + '@aws-sdk/signature-v4-multi-region@3.662.0': resolution: {integrity: sha512-nXjFNs/VCT4jh8JyfCDTzUKfnhQU4JTwc0fi6mpQIig88fScKSBNxN4zm1zyg196xf6CBKlQc9UVnMsJYtWYDA==} engines: {node: '>=16.0.0'} - dependencies: - '@aws-sdk/middleware-sdk-s3': 3.662.0 - '@aws-sdk/types': 3.662.0 - '@smithy/protocol-http': 4.1.4 - '@smithy/signature-v4': 4.2.0 - '@smithy/types': 3.5.0 - tslib: 2.7.0 - dev: false - /@aws-sdk/token-providers@3.662.0(@aws-sdk/client-sso-oidc@3.662.0): + '@aws-sdk/token-providers@3.662.0': resolution: {integrity: sha512-OqtBPutNC9Am10P1W5IwqRvzCVQAHRxWxZnfDBh1FQjNmoboGWYSriKxbrCRYLFffusNuzo8KnOFOmg1sRlhJQ==} engines: {node: '>=16.0.0'} peerDependencies: '@aws-sdk/client-sso-oidc': ^3.662.0 - dependencies: - '@aws-sdk/client-sso-oidc': 3.662.0(@aws-sdk/client-sts@3.662.0) - '@aws-sdk/types': 3.662.0 - '@smithy/property-provider': 3.1.7 - '@smithy/shared-ini-file-loader': 3.1.8 - '@smithy/types': 3.5.0 - tslib: 2.7.0 - dev: false - /@aws-sdk/types@3.662.0: + '@aws-sdk/types@3.662.0': resolution: {integrity: sha512-Ff9/KRmIm8iEzodxzISLj4/pB/0hX2nVw1RFeOBC65OuM6nHrAdWHHog/CVx25hS5JPU0uE3h6NlWRaBJ7AV5w==} engines: {node: '>=16.0.0'} - dependencies: - '@smithy/types': 3.5.0 - tslib: 2.7.0 - dev: false - /@aws-sdk/util-arn-parser@3.568.0: + '@aws-sdk/util-arn-parser@3.568.0': resolution: {integrity: sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w==} engines: {node: '>=16.0.0'} - dependencies: - tslib: 2.7.0 - dev: false - /@aws-sdk/util-endpoints@3.662.0: + '@aws-sdk/util-endpoints@3.662.0': resolution: {integrity: sha512-RQ/78yNUxZZZULFg7VxT7oObGOR/FBc0ojiFoCAKC20ycY8VvVX5Eof4gyxoVpwOP7EoZO3UlWSIqtaEV/X70w==} engines: {node: '>=16.0.0'} - dependencies: - '@aws-sdk/types': 3.662.0 - '@smithy/types': 3.5.0 - '@smithy/util-endpoints': 2.1.3 - tslib: 2.7.0 - dev: false - /@aws-sdk/util-locate-window@3.568.0: + '@aws-sdk/util-locate-window@3.568.0': resolution: {integrity: sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==} engines: {node: '>=16.0.0'} - dependencies: - tslib: 2.7.0 - dev: false - /@aws-sdk/util-user-agent-browser@3.662.0: + '@aws-sdk/util-user-agent-browser@3.662.0': resolution: {integrity: sha512-5wQd+HbNTY1r1Gndxf93dAEFtKz1DqcalI4Ym40To+RIonSsYQNRomFoizYNgJ1P+Mkfsr4P1dy/MNTlkqTZuQ==} - dependencies: - '@aws-sdk/types': 3.662.0 - '@smithy/types': 3.5.0 - bowser: 2.11.0 - tslib: 2.7.0 - dev: false - /@aws-sdk/util-user-agent-node@3.662.0: + '@aws-sdk/util-user-agent-node@3.662.0': resolution: {integrity: sha512-vBRbZ9Hr1OGmdJPWj36X0fR8/VdI2JiwK6+oJRa6qfJ6AnhqCYZbCyeA6JIDeEu3M9iu1OLjenU8NdXhTz8c2w==} engines: {node: '>=16.0.0'} peerDependencies: @@ -904,892 +443,618 @@ packages: peerDependenciesMeta: aws-crt: optional: true - dependencies: - '@aws-sdk/types': 3.662.0 - '@smithy/node-config-provider': 3.1.8 - '@smithy/types': 3.5.0 - tslib: 2.7.0 - dev: false - /@aws-sdk/xml-builder@3.662.0: + '@aws-sdk/xml-builder@3.662.0': resolution: {integrity: sha512-ikLkXn0igUpnJu2mCZjklvmcDGWT9OaLRv3JyC/cRkTaaSrblPjPM7KKsltxdMTLQ+v7fjCN0TsJpxphMfaOPA==} engines: {node: '>=16.0.0'} - dependencies: - '@smithy/types': 3.5.0 - tslib: 2.7.0 - dev: false - /@babel/code-frame@7.24.7: + '@babel/code-frame@7.24.7': resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.24.7 - picocolors: 1.1.0 - dev: false - /@babel/compat-data@7.25.4: + '@babel/compat-data@7.25.4': resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==} engines: {node: '>=6.9.0'} - dev: false - /@babel/core@7.24.5: + '@babel/core@7.24.5': resolution: {integrity: sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==} engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.6 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.24.5) - '@babel/helpers': 7.25.6 - '@babel/parser': 7.25.6 - '@babel/template': 7.25.0 - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 - convert-source-map: 2.0.0 - debug: 4.3.7 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/core@7.25.2: + '@babel/core@7.25.2': resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.6 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helpers': 7.25.6 - '@babel/parser': 7.25.6 - '@babel/template': 7.25.0 - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 - convert-source-map: 2.0.0 - debug: 4.3.7 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/generator@7.25.6: + '@babel/generator@7.25.6': resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.25.6 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 - dev: false - /@babel/helper-compilation-targets@7.25.2: + '@babel/helper-compilation-targets@7.25.2': resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/compat-data': 7.25.4 - '@babel/helper-validator-option': 7.24.8 - browserslist: 4.23.3 - lru-cache: 5.1.1 - semver: 6.3.1 - dev: false - /@babel/helper-module-imports@7.24.7: + '@babel/helper-module-imports@7.24.7': resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/helper-module-transforms@7.25.2(@babel/core@7.24.5): + '@babel/helper-module-transforms@7.25.2': resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-simple-access': 7.24.7 - '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.6 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2): - resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} + '@babel/helper-simple-access@7.24.7': + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-simple-access': 7.24.7 - '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.6 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/helper-simple-access@7.24.7: - resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/helper-string-parser@7.24.8: + '@babel/helper-string-parser@7.24.8': resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} engines: {node: '>=6.9.0'} - dev: false - /@babel/helper-validator-identifier@7.24.7: + '@babel/helper-validator-identifier@7.24.7': resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} - dev: false - /@babel/helper-validator-option@7.24.8: + '@babel/helper-validator-option@7.24.8': resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} engines: {node: '>=6.9.0'} - dev: false - /@babel/helpers@7.25.6: + '@babel/helpers@7.25.6': resolution: {integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.25.0 - '@babel/types': 7.25.6 - dev: false - /@babel/highlight@7.24.7: + '@babel/highlight@7.24.7': resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.24.7 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.1.0 - dev: false - /@babel/parser@7.24.5: + '@babel/parser@7.24.5': resolution: {integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==} engines: {node: '>=6.0.0'} hasBin: true - dependencies: - '@babel/types': 7.25.6 - dev: false - /@babel/parser@7.25.6: + '@babel/parser@7.25.6': resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==} engines: {node: '>=6.0.0'} hasBin: true - dependencies: - '@babel/types': 7.25.6 - dev: false - /@babel/runtime@7.25.6: + '@babel/runtime@7.25.6': resolution: {integrity: sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==} engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.1 - dev: false - /@babel/template@7.25.0: + '@babel/template@7.25.0': resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.24.7 - '@babel/parser': 7.25.6 - '@babel/types': 7.25.6 - dev: false - /@babel/traverse@7.25.6: + '@babel/traverse@7.25.6': resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.6 - '@babel/parser': 7.25.6 - '@babel/template': 7.25.0 - '@babel/types': 7.25.6 - debug: 4.3.7 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/types@7.25.6: + '@babel/types@7.25.6': resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.24.8 - '@babel/helper-validator-identifier': 7.24.7 - to-fast-properties: 2.0.0 - dev: false - /@cspotcode/source-map-support@0.8.1: + '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - /@esbuild/aix-ppc64@0.19.11: + '@emnapi/runtime@1.3.1': + resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} + + '@esbuild/aix-ppc64@0.19.11': resolution: {integrity: sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] - requiresBuild: true - dev: false - optional: true - /@esbuild/android-arm64@0.19.11: + '@esbuild/android-arm64@0.19.11': resolution: {integrity: sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==} engines: {node: '>=12'} cpu: [arm64] os: [android] - requiresBuild: true - dev: false - optional: true - /@esbuild/android-arm@0.19.11: + '@esbuild/android-arm@0.19.11': resolution: {integrity: sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==} engines: {node: '>=12'} cpu: [arm] os: [android] - requiresBuild: true - dev: false - optional: true - /@esbuild/android-x64@0.19.11: + '@esbuild/android-x64@0.19.11': resolution: {integrity: sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==} engines: {node: '>=12'} cpu: [x64] os: [android] - requiresBuild: true - dev: false - optional: true - /@esbuild/darwin-arm64@0.19.11: + '@esbuild/darwin-arm64@0.19.11': resolution: {integrity: sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] - requiresBuild: true - dev: false - optional: true - /@esbuild/darwin-x64@0.19.11: + '@esbuild/darwin-x64@0.19.11': resolution: {integrity: sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==} engines: {node: '>=12'} cpu: [x64] os: [darwin] - requiresBuild: true - dev: false - optional: true - /@esbuild/freebsd-arm64@0.19.11: + '@esbuild/freebsd-arm64@0.19.11': resolution: {integrity: sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] - requiresBuild: true - dev: false - optional: true - /@esbuild/freebsd-x64@0.19.11: + '@esbuild/freebsd-x64@0.19.11': resolution: {integrity: sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-arm64@0.19.11: + '@esbuild/linux-arm64@0.19.11': resolution: {integrity: sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==} engines: {node: '>=12'} cpu: [arm64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-arm@0.19.11: + '@esbuild/linux-arm@0.19.11': resolution: {integrity: sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==} engines: {node: '>=12'} cpu: [arm] os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-ia32@0.19.11: + '@esbuild/linux-ia32@0.19.11': resolution: {integrity: sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==} engines: {node: '>=12'} cpu: [ia32] os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-loong64@0.19.11: + '@esbuild/linux-loong64@0.19.11': resolution: {integrity: sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-mips64el@0.19.11: + '@esbuild/linux-mips64el@0.19.11': resolution: {integrity: sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-ppc64@0.19.11: + '@esbuild/linux-ppc64@0.19.11': resolution: {integrity: sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-riscv64@0.19.11: + '@esbuild/linux-riscv64@0.19.11': resolution: {integrity: sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-s390x@0.19.11: + '@esbuild/linux-s390x@0.19.11': resolution: {integrity: sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==} engines: {node: '>=12'} cpu: [s390x] os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-x64@0.19.11: + '@esbuild/linux-x64@0.19.11': resolution: {integrity: sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==} engines: {node: '>=12'} cpu: [x64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/netbsd-x64@0.19.11: + '@esbuild/netbsd-x64@0.19.11': resolution: {integrity: sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] - requiresBuild: true - dev: false - optional: true - /@esbuild/openbsd-x64@0.19.11: + '@esbuild/openbsd-x64@0.19.11': resolution: {integrity: sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] - requiresBuild: true - dev: false - optional: true - /@esbuild/sunos-x64@0.19.11: + '@esbuild/sunos-x64@0.19.11': resolution: {integrity: sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==} engines: {node: '>=12'} cpu: [x64] os: [sunos] - requiresBuild: true - dev: false - optional: true - /@esbuild/win32-arm64@0.19.11: + '@esbuild/win32-arm64@0.19.11': resolution: {integrity: sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==} engines: {node: '>=12'} cpu: [arm64] os: [win32] - requiresBuild: true - dev: false - optional: true - /@esbuild/win32-ia32@0.19.11: + '@esbuild/win32-ia32@0.19.11': resolution: {integrity: sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==} engines: {node: '>=12'} cpu: [ia32] os: [win32] - requiresBuild: true - dev: false - optional: true - /@esbuild/win32-x64@0.19.11: + '@esbuild/win32-x64@0.19.11': resolution: {integrity: sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==} engines: {node: '>=12'} cpu: [x64] os: [win32] - requiresBuild: true - dev: false - optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@9.9.1): + '@eslint-community/eslint-utils@4.4.0': resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 9.9.1 - eslint-visitor-keys: 3.4.3 - dev: true - /@eslint-community/regexpp@4.11.1: + '@eslint-community/regexpp@4.11.1': resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: true - /@eslint/compat@1.1.1: + '@eslint/compat@1.1.1': resolution: {integrity: sha512-lpHyRyplhGPL5mGEh6M9O5nnKk0Gz4bFI+Zu6tKlPpDUN7XshWvH9C/px4UVm87IAANE0W81CEsNGbS1KlzXpA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dev: true - /@eslint/config-array@0.18.0: + '@eslint/config-array@0.18.0': resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - '@eslint/object-schema': 2.1.4 - debug: 4.3.7 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - /@eslint/eslintrc@3.1.0: + '@eslint/eslintrc@3.1.0': resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.7 - espree: 10.1.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - /@eslint/js@9.11.0: + '@eslint/js@9.11.0': resolution: {integrity: sha512-LPkkenkDqyzTFauZLLAPhIb48fj6drrfMvRGSL9tS3AcZBSVTllemLSNyCvHNNL2t797S/6DJNSIwRwXgMO/eQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dev: true - /@eslint/js@9.9.1: + '@eslint/js@9.9.1': resolution: {integrity: sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dev: true - /@eslint/object-schema@2.1.4: + '@eslint/object-schema@2.1.4': resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dev: true - /@floating-ui/core@1.6.8: + '@floating-ui/core@1.6.8': resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==} - dependencies: - '@floating-ui/utils': 0.2.8 - dev: false - /@floating-ui/dom@1.6.11: + '@floating-ui/dom@1.6.11': resolution: {integrity: sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==} - dependencies: - '@floating-ui/core': 1.6.8 - '@floating-ui/utils': 0.2.8 - dev: false - /@floating-ui/react-dom@2.1.2(react-dom@18.2.0)(react@18.2.0): + '@floating-ui/react-dom@2.1.2': resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' - dependencies: - '@floating-ui/dom': 1.6.11 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@floating-ui/utils@0.2.8: + '@floating-ui/utils@0.2.8': resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==} - dev: false - /@hookform/resolvers@3.9.0(react-hook-form@7.53.0): + '@hookform/resolvers@3.9.0': resolution: {integrity: sha512-bU0Gr4EepJ/EQsH/IwEzYLsT/PEj5C0ynLQ4m+GSHS+xKH4TfSelhluTgOaoc4kA5s7eCsQbM4wvZLzELmWzUg==} peerDependencies: react-hook-form: ^7.0.0 - dependencies: - react-hook-form: 7.53.0(react@18.2.0) - dev: false - /@humanwhocodes/module-importer@1.0.1: + '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - dev: true - /@humanwhocodes/retry@0.3.0: + '@humanwhocodes/retry@0.3.0': resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} engines: {node: '>=18.18'} - dev: true - /@isaacs/cliui@8.0.2: + '@img/sharp-darwin-arm64@0.33.5': + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.33.5': + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.0.4': + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.0.4': + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.0.4': + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.0.5': + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.0.4': + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.0.4': + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.33.5': + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.33.5': + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-s390x@0.33.5': + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.33.5': + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.33.5': + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.33.5': + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.33.5': + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-ia32@0.33.5': + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.33.5': + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} - dependencies: - string-width: 5.1.2 - string-width-cjs: /string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: /strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: /wrap-ansi@7.0.0 - /@jridgewell/gen-mapping@0.3.5: + '@jridgewell/gen-mapping@0.3.5': resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 - /@jridgewell/resolve-uri@3.1.2: + '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - /@jridgewell/set-array@1.2.1: + '@jridgewell/set-array@1.2.1': resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} - /@jridgewell/source-map@0.3.6: + '@jridgewell/source-map@0.3.6': resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - dev: false - /@jridgewell/sourcemap-codec@1.5.0: + '@jridgewell/sourcemap-codec@1.5.0': resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - /@jridgewell/trace-mapping@0.3.25: + '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - /@jridgewell/trace-mapping@0.3.9: + '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - /@next/env@14.2.3: + '@next/env@14.2.3': resolution: {integrity: sha512-W7fd7IbkfmeeY2gXrzJYDx8D2lWKbVoTIj1o1ScPHNzvp30s1AuoEFSdr39bC5sjxJaxTtq3OTCZboNp0lNWHA==} - dev: false - /@next/env@14.2.4: - resolution: {integrity: sha512-3EtkY5VDkuV2+lNmKlbkibIJxcO4oIHEhBWne6PaAp+76J9KoSsGvNikp6ivzAT8dhhBMYrm6op2pS1ApG0Hzg==} - dev: false + '@next/env@15.0.1': + resolution: {integrity: sha512-lc4HeDUKO9gxxlM5G2knTRifqhsY6yYpwuHspBZdboZe0Gp+rZHBNNSIjmQKDJIdRXiXGyVnSD6gafrbQPvILQ==} - /@next/eslint-plugin-next@14.2.13: - resolution: {integrity: sha512-z8Mk0VljxhIzsSiZUSdt3wp+t2lKd+jk5a9Jsvh3zDGkItgDMfjv/ZbET6HsxEl/fSihVoHGsXV6VLyDH0lfTQ==} - dependencies: - glob: 10.3.10 - dev: true + '@next/eslint-plugin-next@15.0.1': + resolution: {integrity: sha512-bKWsMaGPbiFAaGqrDJvbE8b4Z0uKicGVcgOI77YM2ui3UfjHMr4emFPrZTLeZVchi7fT1mooG2LxREfUUClIKw==} - /@next/swc-darwin-arm64@14.2.3: + '@next/swc-darwin-arm64@14.2.3': resolution: {integrity: sha512-3pEYo/RaGqPP0YzwnlmPN2puaF2WMLM3apt5jLW2fFdXD9+pqcoTzRk+iZsf8ta7+quAe4Q6Ms0nR0SFGFdS1A==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - requiresBuild: true - dev: false - optional: true - /@next/swc-darwin-arm64@14.2.4: - resolution: {integrity: sha512-AH3mO4JlFUqsYcwFUHb1wAKlebHU/Hv2u2kb1pAuRanDZ7pD/A/KPD98RHZmwsJpdHQwfEc/06mgpSzwrJYnNg==} + '@next/swc-darwin-arm64@15.0.1': + resolution: {integrity: sha512-C9k/Xv4sxkQRTA37Z6MzNq3Yb1BJMmSqjmwowoWEpbXTkAdfOwnoKOpAb71ItSzoA26yUTIo6ZhN8rKGu4ExQw==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - requiresBuild: true - dev: false - optional: true - /@next/swc-darwin-x64@14.2.3: + '@next/swc-darwin-x64@14.2.3': resolution: {integrity: sha512-6adp7waE6P1TYFSXpY366xwsOnEXM+y1kgRpjSRVI2CBDOcbRjsJ67Z6EgKIqWIue52d2q/Mx8g9MszARj8IEA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - requiresBuild: true - dev: false - optional: true - /@next/swc-darwin-x64@14.2.4: - resolution: {integrity: sha512-QVadW73sWIO6E2VroyUjuAxhWLZWEpiFqHdZdoQ/AMpN9YWGuHV8t2rChr0ahy+irKX5mlDU7OY68k3n4tAZTg==} + '@next/swc-darwin-x64@15.0.1': + resolution: {integrity: sha512-uHl13HXOuq1G7ovWFxCACDJHTSDVbn/sbLv8V1p+7KIvTrYQ5HNoSmKBdYeEKRRCbEmd+OohOgg9YOp8Ux3MBg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - requiresBuild: true - dev: false - optional: true - /@next/swc-linux-arm64-gnu@14.2.3: + '@next/swc-linux-arm64-gnu@14.2.3': resolution: {integrity: sha512-cuzCE/1G0ZSnTAHJPUT1rPgQx1w5tzSX7POXSLaS7w2nIUJUD+e25QoXD/hMfxbsT9rslEXugWypJMILBj/QsA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@next/swc-linux-arm64-gnu@14.2.4: - resolution: {integrity: sha512-KT6GUrb3oyCfcfJ+WliXuJnD6pCpZiosx2X3k66HLR+DMoilRb76LpWPGb4tZprawTtcnyrv75ElD6VncVamUQ==} + '@next/swc-linux-arm64-gnu@15.0.1': + resolution: {integrity: sha512-LvyhvxHOihFTEIbb35KxOc3q8w8G4xAAAH/AQnsYDEnOvwawjL2eawsB59AX02ki6LJdgDaHoTEnC54Gw+82xw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@next/swc-linux-arm64-musl@14.2.3: + '@next/swc-linux-arm64-musl@14.2.3': resolution: {integrity: sha512-0D4/oMM2Y9Ta3nGuCcQN8jjJjmDPYpHX9OJzqk42NZGJocU2MqhBq5tWkJrUQOQY9N+In9xOdymzapM09GeiZw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@next/swc-linux-arm64-musl@14.2.4: - resolution: {integrity: sha512-Alv8/XGSs/ytwQcbCHwze1HmiIkIVhDHYLjczSVrf0Wi2MvKn/blt7+S6FJitj3yTlMwMxII1gIJ9WepI4aZ/A==} + '@next/swc-linux-arm64-musl@15.0.1': + resolution: {integrity: sha512-vFmCGUFNyk/A5/BYcQNhAQqPIw01RJaK6dRO+ZEhz0DncoW+hJW1kZ8aH2UvTX27zPq3m85zN5waMSbZEmANcQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@next/swc-linux-x64-gnu@14.2.3: + '@next/swc-linux-x64-gnu@14.2.3': resolution: {integrity: sha512-ENPiNnBNDInBLyUU5ii8PMQh+4XLr4pG51tOp6aJ9xqFQ2iRI6IH0Ds2yJkAzNV1CfyagcyzPfROMViS2wOZ9w==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@next/swc-linux-x64-gnu@14.2.4: - resolution: {integrity: sha512-ze0ShQDBPCqxLImzw4sCdfnB3lRmN3qGMB2GWDRlq5Wqy4G36pxtNOo2usu/Nm9+V2Rh/QQnrRc2l94kYFXO6Q==} + '@next/swc-linux-x64-gnu@15.0.1': + resolution: {integrity: sha512-5by7IYq0NCF8rouz6Qg9T97jYU68kaClHPfGpQG2lCZpSYHtSPQF1kjnqBTd34RIqPKMbCa4DqCufirgr8HM5w==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@next/swc-linux-x64-musl@14.2.3: + '@next/swc-linux-x64-musl@14.2.3': resolution: {integrity: sha512-BTAbq0LnCbF5MtoM7I/9UeUu/8ZBY0i8SFjUMCbPDOLv+un67e2JgyN4pmgfXBwy/I+RHu8q+k+MCkDN6P9ViQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@next/swc-linux-x64-musl@14.2.4: - resolution: {integrity: sha512-8dwC0UJoc6fC7PX70csdaznVMNr16hQrTDAMPvLPloazlcaWfdPogq+UpZX6Drqb1OBlwowz8iG7WR0Tzk/diQ==} + '@next/swc-linux-x64-musl@15.0.1': + resolution: {integrity: sha512-lmYr6H3JyDNBJLzklGXLfbehU3ay78a+b6UmBGlHls4xhDXBNZfgb0aI67sflrX+cGBnv1LgmWzFlYrAYxS1Qw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@next/swc-win32-arm64-msvc@14.2.3: + '@next/swc-win32-arm64-msvc@14.2.3': resolution: {integrity: sha512-AEHIw/dhAMLNFJFJIJIyOFDzrzI5bAjI9J26gbO5xhAKHYTZ9Or04BesFPXiAYXDNdrwTP2dQceYA4dL1geu8A==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - requiresBuild: true - dev: false - optional: true - /@next/swc-win32-arm64-msvc@14.2.4: - resolution: {integrity: sha512-jxyg67NbEWkDyvM+O8UDbPAyYRZqGLQDTPwvrBBeOSyVWW/jFQkQKQ70JDqDSYg1ZDdl+E3nkbFbq8xM8E9x8A==} + '@next/swc-win32-arm64-msvc@15.0.1': + resolution: {integrity: sha512-DS8wQtl6diAj0eZTdH0sefykm4iXMbHT4MOvLwqZiIkeezKpkgPFcEdFlz3vKvXa2R/2UEgMh48z1nEpNhjeOQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - requiresBuild: true - dev: false - optional: true - /@next/swc-win32-ia32-msvc@14.2.3: + '@next/swc-win32-ia32-msvc@14.2.3': resolution: {integrity: sha512-vga40n1q6aYb0CLrM+eEmisfKCR45ixQYXuBXxOOmmoV8sYST9k7E3US32FsY+CkkF7NtzdcebiFT4CHuMSyZw==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] - requiresBuild: true - dev: false - optional: true - - /@next/swc-win32-ia32-msvc@14.2.4: - resolution: {integrity: sha512-twrmN753hjXRdcrZmZttb/m5xaCBFa48Dt3FbeEItpJArxriYDunWxJn+QFXdJ3hPkm4u7CKxncVvnmgQMY1ag==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false - optional: true - /@next/swc-win32-x64-msvc@14.2.3: + '@next/swc-win32-x64-msvc@14.2.3': resolution: {integrity: sha512-Q1/zm43RWynxrO7lW4ehciQVj+5ePBhOK+/K2P7pLFX3JaJ/IZVC69SHidrmZSOkqz7ECIOhhy7XhAFG4JYyHA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - requiresBuild: true - dev: false - optional: true - /@next/swc-win32-x64-msvc@14.2.4: - resolution: {integrity: sha512-tkLrjBzqFTP8DVrAAQmZelEahfR9OxWpFR++vAI9FBhCiIxtwHwBHC23SBHCTURBtwB4kc/x44imVOnkKGNVGg==} + '@next/swc-win32-x64-msvc@15.0.1': + resolution: {integrity: sha512-4Ho2ggvDdMKlZ/0e9HNdZ9ngeaBwtc+2VS5oCeqrbXqOgutX6I4U2X/42VBw0o+M5evn4/7v3zKgGHo+9v/VjA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - requiresBuild: true - dev: false - optional: true - /@nodelib/fs.scandir@2.1.5: + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - /@nodelib/fs.stat@2.0.5: + '@nodelib/fs.stat@2.0.5': resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} - /@nodelib/fs.walk@1.2.8: + '@nodelib/fs.walk@1.2.8': resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 - /@nolyfill/is-core-module@1.0.39: + '@nolyfill/is-core-module@1.0.39': resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} engines: {node: '>=12.4.0'} - dev: true - /@one-ini/wasm@0.1.1: + '@one-ini/wasm@0.1.1': resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} - dev: false - /@panva/hkdf@1.2.1: + '@panva/hkdf@1.2.1': resolution: {integrity: sha512-6oclG6Y3PiDFcoyk8srjLfVKyMfVCKJ27JwNPViuXziFpmdz+MZnZN/aKY0JGXgYuO/VghU0jcOAZgWXZ1Dmrw==} - dev: false - /@pkgjs/parseargs@0.11.0: + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - requiresBuild: true - optional: true - /@pkgr/core@0.1.1: + '@pkgr/core@0.1.1': resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - dev: true - /@playwright/test@1.47.2: + '@playwright/test@1.47.2': resolution: {integrity: sha512-jTXRsoSPONAs8Za9QEQdyjFn+0ZQFjCiIztAIF6bi1HqhBzG9Ma7g1WotyiGqFSBRZjIEqMdT8RUlbk1QVhzCQ==} engines: {node: '>=18'} hasBin: true - dependencies: - playwright: 1.47.2 - /@prisma/client@5.16.1(prisma@5.16.1): + '@prisma/client@5.16.1': resolution: {integrity: sha512-wM9SKQjF0qLxdnOZIVAIMKiz6Hu7vDt4FFAih85K1dk/Rr2mdahy6d3QP41K62N9O0DJJA//gUDA3Mp49xsKIg==} engines: {node: '>=16.13'} - requiresBuild: true peerDependencies: prisma: '*' peerDependenciesMeta: prisma: optional: true - dependencies: - prisma: 5.16.1 - dev: false - /@prisma/debug@5.16.1: + '@prisma/debug@5.16.1': resolution: {integrity: sha512-JsNgZAg6BD9RInLSrg7ZYzo11N7cVvYArq3fHGSD89HSgtN0VDdjV6bib7YddbcO6snzjchTiLfjeTqBjtArVQ==} - /@prisma/engines-version@5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303: + '@prisma/engines-version@5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303': resolution: {integrity: sha512-HkT2WbfmFZ9WUPyuJHhkiADxazHg8Y4gByrTSVeb3OikP6tjQ7txtSUGu9OBOBH0C13dPKN2qqH12xKtHu/Hiw==} - /@prisma/engines@5.16.1: + '@prisma/engines@5.16.1': resolution: {integrity: sha512-KkyF3eIUtBIyp5A/rJHCtwQO18OjpGgx18PzjyGcJDY/+vNgaVyuVd+TgwBgeq6NLdd1XMwRCI+58vinHsAdfA==} - requiresBuild: true - dependencies: - '@prisma/debug': 5.16.1 - '@prisma/engines-version': 5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303 - '@prisma/fetch-engine': 5.16.1 - '@prisma/get-platform': 5.16.1 - /@prisma/fetch-engine@5.16.1: + '@prisma/fetch-engine@5.16.1': resolution: {integrity: sha512-oOkjaPU1lhcA/Rvr4GVfd1NLJBwExgNBE36Ueq7dr71kTMwy++a3U3oLd2ZwrV9dj9xoP6LjCcky799D9nEt4w==} - dependencies: - '@prisma/debug': 5.16.1 - '@prisma/engines-version': 5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303 - '@prisma/get-platform': 5.16.1 - /@prisma/get-platform@5.16.1: + '@prisma/get-platform@5.16.1': resolution: {integrity: sha512-R4IKnWnMkR2nUAbU5gjrPehdQYUUd7RENFD2/D+xXTNhcqczp0N+WEGQ3ViyI3+6mtVcjjNIMdnUTNyu3GxIgA==} - dependencies: - '@prisma/debug': 5.16.1 - /@radix-ui/colors@3.0.0: + '@radix-ui/colors@3.0.0': resolution: {integrity: sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg==} - dev: false - /@radix-ui/number@1.1.0: + '@radix-ui/number@1.1.0': resolution: {integrity: sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==} - dev: false - /@radix-ui/primitive@1.1.0: + '@radix-ui/primitive@1.1.0': resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} - dev: false - /@radix-ui/react-alert-dialog@1.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-alert-dialog@1.1.1': resolution: {integrity: sha512-wmCoJwj7byuVuiLKqDLlX7ClSUU0vd9sdCeM+2Ls+uf13+cpSJoMgwysHq1SGVVkJj5Xn0XWi1NoRCdkMpr6Mw==} peerDependencies: - '@types/react': '*' + '@types/react': npm:types-react@19.0.0-rc.1 '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -1798,22 +1063,11 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-dialog': 1.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@types/react': 18.3.8 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@radix-ui/react-arrow@1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + + '@radix-ui/react-arrow@1.1.0': resolution: {integrity: sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==} peerDependencies: - '@types/react': '*' + '@types/react': npm:types-react@19.0.0-rc.1 '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -1822,17 +1076,11 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.3.8 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-avatar@1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-avatar@1.1.0': resolution: {integrity: sha512-Q/PbuSMk/vyAd/UoIShVGZ7StHHeRFYU7wXmi5GV+8cLXflZAEpHL/F697H1klrzxKXNtZ97vWiC0q3RKUH8UA==} peerDependencies: - '@types/react': '*' + '@types/react': npm:types-react@19.0.0-rc.1 '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -1841,20 +1089,11 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/react-context': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@types/react': 18.3.8 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-collection@1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-collection@1.1.0': resolution: {integrity: sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==} peerDependencies: - '@types/react': '*' + '@types/react': npm:types-react@19.0.0-rc.1 '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -1863,46 +1102,29 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@types/react': 18.3.8 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.8)(react@18.2.0): + '@radix-ui/react-compose-refs@1.1.0': resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} peerDependencies: - '@types/react': '*' + '@types/react': npm:types-react@19.0.0-rc.1 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@types/react': 18.3.8 - react: 18.2.0 - dev: false - /@radix-ui/react-context@1.1.0(@types/react@18.3.8)(react@18.2.0): + '@radix-ui/react-context@1.1.0': resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==} peerDependencies: - '@types/react': '*' + '@types/react': npm:types-react@19.0.0-rc.1 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@types/react': 18.3.8 - react: 18.2.0 - dev: false - /@radix-ui/react-dialog@1.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-dialog@1.1.1': resolution: {integrity: sha512-zysS+iU4YP3STKNS6USvFVqI4qqx8EpiwmT5TuCApVEBca+eRCbONi4EgzfNSuVnOXvC5UPHHMjs8RXO6DH9Bg==} peerDependencies: - '@types/react': '*' + '@types/react': npm:types-react@19.0.0-rc.1 '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -1911,43 +1133,20 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-portal': 1.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@types/react': 18.3.8 - aria-hidden: 1.2.4 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.7(@types/react@18.3.8)(react@18.2.0) - dev: false - /@radix-ui/react-direction@1.1.0(@types/react@18.3.8)(react@18.2.0): + '@radix-ui/react-direction@1.1.0': resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==} peerDependencies: - '@types/react': '*' + '@types/react': npm:types-react@19.0.0-rc.1 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@types/react': 18.3.8 - react: 18.2.0 - dev: false - /@radix-ui/react-dismissable-layer@1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-dismissable-layer@1.1.0': resolution: {integrity: sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==} peerDependencies: - '@types/react': '*' + '@types/react': npm:types-react@19.0.0-rc.1 '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -1956,21 +1155,11 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@types/react': 18.3.8 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@radix-ui/react-dropdown-menu@2.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + + '@radix-ui/react-dropdown-menu@2.1.1': resolution: {integrity: sha512-y8E+x9fBq9qvteD2Zwa4397pUVhYsh9iq44b5RD5qu1GMJWBCBuVg1hMyItbc6+zH00TxGRqd9Iot4wzf3OoBQ==} peerDependencies: - '@types/react': '*' + '@types/react': npm:types-react@19.0.0-rc.1 '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -1979,36 +1168,20 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-menu': 2.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@types/react': 18.3.8 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@radix-ui/react-focus-guards@1.1.0(@types/react@18.3.8)(react@18.2.0): + + '@radix-ui/react-focus-guards@1.1.0': resolution: {integrity: sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==} peerDependencies: - '@types/react': '*' + '@types/react': npm:types-react@19.0.0-rc.1 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@types/react': 18.3.8 - react: 18.2.0 - dev: false - /@radix-ui/react-focus-scope@1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-focus-scope@1.1.0': resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==} peerDependencies: - '@types/react': '*' + '@types/react': npm:types-react@19.0.0-rc.1 '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -2017,33 +1190,20 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@types/react': 18.3.8 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-id@1.1.0(@types/react@18.3.8)(react@18.2.0): + '@radix-ui/react-id@1.1.0': resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} peerDependencies: - '@types/react': '*' + '@types/react': npm:types-react@19.0.0-rc.1 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@types/react': 18.3.8 - react: 18.2.0 - dev: false - /@radix-ui/react-label@2.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-label@2.1.0': resolution: {integrity: sha512-peLblDlFw/ngk3UWq0VnYaOLy6agTZZ+MUO/WhVfm14vJGML+xH4FAl2XQGLqdefjNb7ApRg6Yn7U42ZhmYXdw==} peerDependencies: - '@types/react': '*' + '@types/react': npm:types-react@19.0.0-rc.1 '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -2052,17 +1212,11 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.3.8 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-menu@2.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-menu@2.1.1': resolution: {integrity: sha512-oa3mXRRVjHi6DZu/ghuzdylyjaMXLymx83irM7hTxutQbD+7IhPKdMdRHD26Rm+kHRrWcrUkkRPv5pd47a2xFQ==} peerDependencies: - '@types/react': '*' + '@types/react': npm:types-react@19.0.0-rc.1 '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -2071,34 +1225,11 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-collection': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-popper': 1.2.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@types/react': 18.3.8 - aria-hidden: 1.2.4 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.7(@types/react@18.3.8)(react@18.2.0) - dev: false - /@radix-ui/react-popover@1.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-popover@1.1.1': resolution: {integrity: sha512-3y1A3isulwnWhvTTwmIreiB8CF4L+qRjZnK1wYLO7pplddzXKby/GnZ2M7OZY3qgnl6p9AodUIHRYGXNah8Y7g==} peerDependencies: - '@types/react': '*' + '@types/react': npm:types-react@19.0.0-rc.1 '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -2107,31 +1238,11 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-popper': 1.2.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@types/react': 18.3.8 - aria-hidden: 1.2.4 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.7(@types/react@18.3.8)(react@18.2.0) - dev: false - /@radix-ui/react-popper@1.2.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-popper@1.2.0': resolution: {integrity: sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==} peerDependencies: - '@types/react': '*' + '@types/react': npm:types-react@19.0.0-rc.1 '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -2140,26 +1251,11 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@floating-ui/react-dom': 2.1.2(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-arrow': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-use-rect': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/rect': 1.1.0 - '@types/react': 18.3.8 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-portal@1.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-portal@1.1.1': resolution: {integrity: sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==} peerDependencies: - '@types/react': '*' + '@types/react': npm:types-react@19.0.0-rc.1 '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -2168,18 +1264,11 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@types/react': 18.3.8 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-presence@1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-presence@1.1.0': resolution: {integrity: sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==} peerDependencies: - '@types/react': '*' + '@types/react': npm:types-react@19.0.0-rc.1 '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -2188,18 +1277,11 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@types/react': 18.3.8 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-primitive@2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-primitive@2.0.0': resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} peerDependencies: - '@types/react': '*' + '@types/react': npm:types-react@19.0.0-rc.1 '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -2208,17 +1290,11 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@types/react': 18.3.8 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@radix-ui/react-roving-focus@1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-roving-focus@1.1.0': resolution: {integrity: sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==} peerDependencies: - '@types/react': '*' + '@types/react': npm:types-react@19.0.0-rc.1 '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -2227,25 +1303,11 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-collection': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@types/react': 18.3.8 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@radix-ui/react-select@2.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + + '@radix-ui/react-select@2.1.1': resolution: {integrity: sha512-8iRDfyLtzxlprOo9IicnzvpsO1wNCkuwzzCM+Z5Rb5tNOpCdMvcc2AkzX0Fz+Tz9v6NJ5B/7EEgyZveo4FBRfQ==} peerDependencies: - '@types/react': '*' + '@types/react': npm:types-react@19.0.0-rc.1 '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -2254,51 +1316,20 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/number': 1.1.0 - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-collection': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-popper': 1.2.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.3.8 - aria-hidden: 1.2.4 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.7(@types/react@18.3.8)(react@18.2.0) - dev: false - /@radix-ui/react-slot@1.1.0(@types/react@18.3.8)(react@18.2.0): + '@radix-ui/react-slot@1.1.0': resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} peerDependencies: - '@types/react': '*' + '@types/react': npm:types-react@19.0.0-rc.1 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@types/react': 18.3.8 - react: 18.2.0 - dev: false - /@radix-ui/react-tabs@1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-tabs@1.1.0': resolution: {integrity: sha512-bZgOKB/LtZIij75FSuPzyEti/XBhJH52ExgtdVqjCIh+Nx/FW+LhnbXtbCzIi34ccyMsyOja8T0thCzoHFXNKA==} peerDependencies: - '@types/react': '*' + '@types/react': npm:types-react@19.0.0-rc.1 '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -2307,24 +1338,11 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-context': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-presence': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@types/react': 18.3.8 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@radix-ui/react-tooltip@1.1.2(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): + + '@radix-ui/react-tooltip@1.1.2': resolution: {integrity: sha512-9XRsLwe6Yb9B/tlnYCPVUd/TFS4J7HuOZW345DCeC6vKIxQGMZdx21RK4VoZauPD5frgkXTYVS5y90L+3YBn4w==} peerDependencies: - '@types/react': '*' + '@types/react': npm:types-react@19.0.0-rc.1 '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -2333,380 +1351,5283 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-popper': 1.2.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.3.8 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.8)(react@18.2.0): + + '@radix-ui/react-use-callback-ref@1.1.0': resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} peerDependencies: - '@types/react': '*' + '@types/react': npm:types-react@19.0.0-rc.1 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@types/react': 18.3.8 - react: 18.2.0 - dev: false - /@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.8)(react@18.2.0): + '@radix-ui/react-use-controllable-state@1.1.0': resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} peerDependencies: - '@types/react': '*' + '@types/react': npm:types-react@19.0.0-rc.1 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@types/react': 18.3.8 - react: 18.2.0 - dev: false - /@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.8)(react@18.2.0): + '@radix-ui/react-use-escape-keydown@1.1.0': resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} peerDependencies: - '@types/react': '*' + '@types/react': npm:types-react@19.0.0-rc.1 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@types/react': 18.3.8 - react: 18.2.0 - dev: false - /@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.8)(react@18.2.0): + '@radix-ui/react-use-layout-effect@1.1.0': resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} peerDependencies: - '@types/react': '*' + '@types/react': npm:types-react@19.0.0-rc.1 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@types/react': 18.3.8 - react: 18.2.0 - dev: false - /@radix-ui/react-use-previous@1.1.0(@types/react@18.3.8)(react@18.2.0): - resolution: {integrity: sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-previous@1.1.0': + resolution: {integrity: sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.1 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.1.0': + resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.1 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.1.0': + resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.1 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-visually-hidden@1.1.0': + resolution: {integrity: sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.1 + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/rect@1.1.0': + resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} + + '@react-email/body@0.0.10': + resolution: {integrity: sha512-dMJyL9aU25ieatdPtVjCyQ/WHZYHwNc+Hy/XpF8Cc18gu21cUynVEeYQzFSeigDRMeBQ3PGAyjVDPIob7YlGwA==} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc + + '@react-email/button@0.0.17': + resolution: {integrity: sha512-ioHdsk+BpGS/PqjU6JS7tUrVy9yvbUx92Z+Cem2+MbYp55oEwQ9VHf7u4f5NoM0gdhfKSehBwRdYlHt/frEMcg==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc + + '@react-email/code-block@0.0.9': + resolution: {integrity: sha512-Zrhc71VYrSC1fVXJuaViKoB/dBjxLw6nbE53Bm/eUuZPdnnZ1+ZUIh8jfaRKC5MzMjgnLGQTweGXVnfIrhyxtQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc + + '@react-email/code-inline@0.0.4': + resolution: {integrity: sha512-zj3oMQiiUCZbddSNt3k0zNfIBFK0ZNDIzzDyBaJKy6ZASTtWfB+1WFX0cpTX8q0gUiYK+A94rk5Qp68L6YXjXQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc + + '@react-email/column@0.0.12': + resolution: {integrity: sha512-Rsl7iSdDaeHZO938xb+0wR5ud0Z3MVfdtPbNKJNojZi2hApwLAQXmDrnn/AcPDM5Lpl331ZljJS8vHTWxxkvKw==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc + + '@react-email/components@0.0.25': + resolution: {integrity: sha512-lnfVVrThEcET5NPoeaXvrz9UxtWpGRcut2a07dLbyKgNbP7vj/cXTI5TuHtanCvhCddFpMDnElNRghDOfPzwUg==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc + + '@react-email/container@0.0.14': + resolution: {integrity: sha512-NgoaJJd9tTtsrveL86Ocr/AYLkGyN3prdXKd/zm5fQpfDhy/NXezyT3iF6VlwAOEUIu64ErHpAJd+P6ygR+vjg==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc + + '@react-email/font@0.0.8': + resolution: {integrity: sha512-fSBEqYyVPAyyACBBHcs3wEYzNknpHMuwcSAAKE8fOoDfGqURr/vSxKPdh4tOa9z7G4hlcEfgGrCYEa2iPT22cw==} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc + + '@react-email/head@0.0.11': + resolution: {integrity: sha512-skw5FUgyamIMK+LN+fZQ5WIKQYf0dPiRAvsUAUR2eYoZp9oRsfkIpFHr0GWPkKAYjFEj+uJjaxQ/0VzQH7svVg==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc + + '@react-email/heading@0.0.14': + resolution: {integrity: sha512-jZM7IVuZOXa0G110ES8OkxajPTypIKlzlO1K1RIe1auk76ukQRiCg1IRV4HZlWk1GGUbec5hNxsvZa2kU8cb9w==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc + + '@react-email/hr@0.0.10': + resolution: {integrity: sha512-3AA4Yjgl3zEid/KVx6uf6TuLJHVZvUc2cG9Wm9ZpWeAX4ODA+8g9HyuC0tfnjbRsVMhMcCGiECuWWXINi+60vA==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc + + '@react-email/html@0.0.10': + resolution: {integrity: sha512-06uiuSKJBWQJfhCKv4MPupELei4Lepyz9Sth7Yq7Fq29CAeB1ejLgKkGqn1I+FZ72hQxPLdYF4iq4yloKv3JCg==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc + + '@react-email/img@0.0.10': + resolution: {integrity: sha512-pJ8glJjDNaJ53qoM95pvX9SK05yh0bNQY/oyBKmxlBDdUII6ixuMc3SCwYXPMl+tgkQUyDgwEBpSTrLAnjL3hA==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc + + '@react-email/link@0.0.10': + resolution: {integrity: sha512-tva3wvAWSR10lMJa9fVA09yRn7pbEki0ZZpHE6GD1jKbFhmzt38VgLO9B797/prqoDZdAr4rVK7LJFcdPx3GwA==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc + + '@react-email/markdown@0.0.12': + resolution: {integrity: sha512-wsuvj1XAb6O63aizCLNEeqVgKR3oFjAwt9vjfg2y2oh4G1dZeo8zonZM2x1fmkEkBZhzwSHraNi70jSXhA3A9w==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc + + '@react-email/preview@0.0.11': + resolution: {integrity: sha512-7O/CT4b16YlSGrj18htTPx3Vbhu2suCGv/cSe5c+fuSrIM/nMiBSZ3Js16Vj0XJbAmmmlVmYFZw9L20wXJ+LjQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc + + '@react-email/render@0.0.17': + resolution: {integrity: sha512-xBQ+/73+WsGuXKY7r1U73zMBNV28xdV0cp9cFjhNYipBReDHhV97IpA6v7Hl0dDtDzt+yS/72dY5vYXrF1v8NA==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.2.0 + react-dom: ^18.2.0 + + '@react-email/render@1.0.1': + resolution: {integrity: sha512-W3gTrcmLOVYnG80QuUp22ReIT/xfLsVJ+n7ghSlG2BITB8evNABn1AO2rGQoXuK84zKtDAlxCdm3hRyIpZdGSA==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^18.0 || ^19.0 || ^19.0.0-rc + + '@react-email/row@0.0.10': + resolution: {integrity: sha512-jPyEhG3gsLX+Eb9U+A30fh0gK6hXJwF4ghJ+ZtFQtlKAKqHX+eCpWlqB3Xschd/ARJLod8WAswg0FB+JD9d0/A==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc + + '@react-email/section@0.0.14': + resolution: {integrity: sha512-+fYWLb4tPU1A/+GE5J1+SEMA7/wR3V30lQ+OR9t2kAJqNrARDbMx0bLnYnR1QL5TiFRz0pCF05SQUobk6gHEDQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc + + '@react-email/tailwind@0.1.0': + resolution: {integrity: sha512-qysVUEY+M3SKUvu35XDpzn7yokhqFOT3tPU6Mj/pgc62TL5tQFj6msEbBtwoKs2qO3WZvai0DIHdLhaOxBQSow==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc + + '@react-email/text@0.0.10': + resolution: {integrity: sha512-wNAnxeEAiFs6N+SxS0y6wTJWfewEzUETuyS2aZmT00xk50VijwyFRuhm4sYSjusMyshevomFwz5jNISCxRsGWw==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc + + '@rollup/plugin-commonjs@24.0.0': + resolution: {integrity: sha512-0w0wyykzdyRRPHOb0cQt14mIBLujfAv6GgP6g8nvg/iBxEm112t3YPPq+Buqe2+imvElTka+bjNlJ/gB56TD8g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.68.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/pluginutils@5.1.1': + resolution: {integrity: sha512-bVRmQqBIyGD+VMihdEV2IBurfIrdW9tD9yzJUL3CBRDbyPBVzQnBSMSgyUZHl1E335rpMRj7r4o683fXLYw8iw==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rtsao/scc@1.1.0': + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + + '@rushstack/eslint-patch@1.10.4': + resolution: {integrity: sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==} + + '@selderee/plugin-htmlparser2@0.11.0': + resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} + + '@sentry-internal/feedback@7.119.0': + resolution: {integrity: sha512-om8TkAU5CQGO8nkmr7qsSBVkP+/vfeS4JgtW3sjoTK0fhj26+DljR6RlfCGWtYQdPSP6XV7atcPTjbSnsmG9FQ==} + engines: {node: '>=12'} + + '@sentry-internal/replay-canvas@7.119.0': + resolution: {integrity: sha512-NL02VQx6ekPxtVRcsdp1bp5Tb5w6vnfBKSIfMKuDRBy5A10Uc3GSoy/c3mPyHjOxB84452A+xZSx6bliEzAnuA==} + engines: {node: '>=12'} + + '@sentry-internal/tracing@7.119.0': + resolution: {integrity: sha512-oKdFJnn+56f0DHUADlL8o9l8jTib3VDLbWQBVkjD9EprxfaCwt2m8L5ACRBdQ8hmpxCEo4I8/6traZ7qAdBUqA==} + engines: {node: '>=8'} + + '@sentry/browser@7.119.0': + resolution: {integrity: sha512-WwmW1Y4D764kVGeKmdsNvQESZiAn9t8LmCWO0ucBksrjL2zw9gBPtOpRcO6l064sCLeSxxzCN+kIxhRm1gDFEA==} + engines: {node: '>=8'} + + '@sentry/cli@1.77.3': + resolution: {integrity: sha512-c3eDqcDRmy4TFz2bFU5Y6QatlpoBPPa8cxBooaS4aMQpnIdLYPF1xhyyiW0LQlDUNc3rRjNF7oN5qKoaRoMTQQ==} + engines: {node: '>= 8'} + hasBin: true + + '@sentry/core@7.119.0': + resolution: {integrity: sha512-CS2kUv9rAJJEjiRat6wle3JATHypB0SyD7pt4cpX5y0dN5dZ1JrF57oLHRMnga9fxRivydHz7tMTuBhSSwhzjw==} + engines: {node: '>=8'} + + '@sentry/integrations@7.119.0': + resolution: {integrity: sha512-OHShvtsRW0A+ZL/ZbMnMqDEtJddPasndjq+1aQXw40mN+zeP7At/V1yPZyFaURy86iX7Ucxw5BtmzuNy7hLyTA==} + engines: {node: '>=8'} + + '@sentry/nextjs@7.119.0': + resolution: {integrity: sha512-D2P0LmgQbF/d7Ar6u2OKj+strM1id6OFfsHAKeTYd6KVipwc4YBpbS5OYkwH3BhtofCXvtfU3VmayVJD1onOiw==} + engines: {node: '>=8'} + peerDependencies: + next: ^10.0.8 || ^11.0 || ^12.0 || ^13.0 || ^14.0 + react: 16.x || 17.x || 18.x + webpack: '>= 4.0.0' + peerDependenciesMeta: + webpack: + optional: true + + '@sentry/node@7.119.0': + resolution: {integrity: sha512-9PFzN8xS6U0oZCflpVxS2SSIsHkCaj7qYBlsvHj4CTGWfao9ImwrU6+smy4qoG6oxwPfoVb5pOOMb4WpWOvXcQ==} + engines: {node: '>=8'} + + '@sentry/react@7.119.0': + resolution: {integrity: sha512-cf8Cei+qdSA26gx+IMAuc/k44PeBImNzIpXi3930SLhUe44ypT5OZ/44L6xTODHZzTIyMSJPduf59vT2+eW9yg==} + engines: {node: '>=8'} + peerDependencies: + react: 15.x || 16.x || 17.x || 18.x + + '@sentry/replay@7.119.0': + resolution: {integrity: sha512-BnNsYL+X5I4WCH6wOpY6HQtp4MgVt0NVlhLUsEyrvMUiTs0bPkDBrulsgZQBUKJsbOr3l9nHrFoNVB/0i6WNLA==} + engines: {node: '>=12'} + + '@sentry/types@7.119.0': + resolution: {integrity: sha512-27qQbutDBPKGbuJHROxhIWc1i0HJaGLA90tjMu11wt0E4UNxXRX+UQl4Twu68v4EV3CPvQcEpQfgsViYcXmq+w==} + engines: {node: '>=8'} + + '@sentry/utils@7.119.0': + resolution: {integrity: sha512-ZwyXexWn2ZIe2bBoYnXJVPc2esCSbKpdc6+0WJa8eutXfHq3FRKg4ohkfCBpfxljQGEfP1+kfin945lA21Ka+A==} + engines: {node: '>=8'} + + '@sentry/vercel-edge@7.119.0': + resolution: {integrity: sha512-9gi5SrBSHhHFYBq/+vG1qC9r80eEskCf7ti/qYSvXc6zij5ieilurF5tunyAle+ayxfHdPTdkhUnDZT6G9jdmA==} + engines: {node: '>=8'} + + '@sentry/webpack-plugin@1.21.0': + resolution: {integrity: sha512-x0PYIMWcsTauqxgl7vWUY6sANl+XGKtx7DCVnnY7aOIIlIna0jChTAPANTfA2QrK+VK+4I/4JxatCEZBnXh3Og==} + engines: {node: '>= 8'} + + '@slack/types@2.14.0': + resolution: {integrity: sha512-n0EGm7ENQRxlXbgKSrQZL69grzg1gHLAVd+GlRVQJ1NSORo0FrApR7wql/gaKdu2n4TO83Sq/AmeUOqD60aXUA==} + engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} + + '@slack/webhook@7.0.3': + resolution: {integrity: sha512-qRPMq3In5znBpRLw4IQvYy8M3+CRd8/FKfZjA0BoNx/Q1qm4+kom8BTaOz+HMoRpnywMbr+4B/Tc5JR3nUJ+ew==} + engines: {node: '>= 18', npm: '>= 8.6.0'} + + '@smithy/abort-controller@3.1.5': + resolution: {integrity: sha512-DhNPnqTqPoG8aZ5dWkFOgsuY+i0GQ3CI6hMmvCoduNsnU9gUZWZBwGfDQsTTB7NvFPkom1df7jMIJWU90kuXXg==} + engines: {node: '>=16.0.0'} + + '@smithy/chunked-blob-reader-native@3.0.0': + resolution: {integrity: sha512-VDkpCYW+peSuM4zJip5WDfqvg2Mo/e8yxOv3VF1m11y7B8KKMKVFtmZWDe36Fvk8rGuWrPZHHXZ7rR7uM5yWyg==} + + '@smithy/chunked-blob-reader@3.0.0': + resolution: {integrity: sha512-sbnURCwjF0gSToGlsBiAmd1lRCmSn72nu9axfJu5lIx6RUEgHu6GwTMbqCdhQSi0Pumcm5vFxsi9XWXb2mTaoA==} + + '@smithy/config-resolver@3.0.9': + resolution: {integrity: sha512-5d9oBf40qC7n2xUoHmntKLdqsyTMMo/r49+eqSIjJ73eDfEtljAxEhzIQ3bkgXJtR3xiv7YzMT/3FF3ORkjWdg==} + engines: {node: '>=16.0.0'} + + '@smithy/core@2.4.7': + resolution: {integrity: sha512-goqMjX+IoVEnHZjYuzu8xwoZjoteMiLXsPHuXPBkWsGwu0o9c3nTjqkUlP1Ez/V8E501aOU7CJ3INk8mQcW2gw==} + engines: {node: '>=16.0.0'} + + '@smithy/credential-provider-imds@3.2.4': + resolution: {integrity: sha512-S9bb0EIokfYEuar4kEbLta+ivlKCWOCFsLZuilkNy9i0uEUEHSi47IFLPaxqqCl+0ftKmcOTHayY5nQhAuq7+w==} + engines: {node: '>=16.0.0'} + + '@smithy/eventstream-codec@3.1.6': + resolution: {integrity: sha512-SBiOYPBH+5wOyPS7lfI150ePfGLhnp/eTu5RnV9xvhGvRiKfnl6HzRK9wehBph+il8FxS9KTeadx7Rcmf1GLPQ==} + + '@smithy/eventstream-serde-browser@3.0.10': + resolution: {integrity: sha512-1i9aMY6Pl/SmA6NjvidxnfBLHMPzhKu2BP148pEt5VwhMdmXn36PE2kWKGa9Hj8b0XGtCTRucpCncylevCtI7g==} + engines: {node: '>=16.0.0'} + + '@smithy/eventstream-serde-config-resolver@3.0.7': + resolution: {integrity: sha512-eVzhGQBPEqXXYHvIUku0jMTxd4gDvenRzUQPTmKVWdRvp9JUCKrbAXGQRYiGxUYq9+cqQckRm0wq3kTWnNtDhw==} + engines: {node: '>=16.0.0'} + + '@smithy/eventstream-serde-node@3.0.9': + resolution: {integrity: sha512-JE0Guqvt0xsmfQ5y1EI342/qtJqznBv8cJqkHZV10PwC8GWGU5KNgFbQnsVCcX+xF+qIqwwfRmeWoJCjuOLmng==} + engines: {node: '>=16.0.0'} + + '@smithy/eventstream-serde-universal@3.0.9': + resolution: {integrity: sha512-bydfgSisfepCufw9kCEnWRxqxJFzX/o8ysXWv+W9F2FIyiaEwZ/D8bBKINbh4ONz3i05QJ1xE7A5OKYvgJsXaw==} + engines: {node: '>=16.0.0'} + + '@smithy/fetch-http-handler@3.2.9': + resolution: {integrity: sha512-hYNVQOqhFQ6vOpenifFME546f0GfJn2OiQ3M0FDmuUu8V/Uiwy2wej7ZXxFBNqdx0R5DZAqWM1l6VRhGz8oE6A==} + + '@smithy/hash-blob-browser@3.1.6': + resolution: {integrity: sha512-BKNcMIaeZ9lB67sgo88iCF4YB35KT8X2dNJ8DqrtZNTgN6tUDYBKThzfGtos/mnZkGkW91AYHisESHmSiYQmKw==} + + '@smithy/hash-node@3.0.7': + resolution: {integrity: sha512-SAGHN+QkrwcHFjfWzs/czX94ZEjPJ0CrWJS3M43WswDXVEuP4AVy9gJ3+AF6JQHZD13bojmuf/Ap/ItDeZ+Qfw==} + engines: {node: '>=16.0.0'} + + '@smithy/hash-stream-node@3.1.6': + resolution: {integrity: sha512-sFSSt7cmCpFWZPfVx7k80Bgb1K2VJ27VmMxH8X+dDhp7Wv8IBgID4K2VK5ehMJROF8hQgcj4WywnkHIwX/xlwQ==} + engines: {node: '>=16.0.0'} + + '@smithy/invalid-dependency@3.0.7': + resolution: {integrity: sha512-Bq00GsAhHeYSuZX8Kpu4sbI9agH2BNYnqUmmbTGWOhki9NVsWn2jFr896vvoTMH8KAjNX/ErC/8t5QHuEXG+IA==} + + '@smithy/is-array-buffer@2.2.0': + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + engines: {node: '>=14.0.0'} + + '@smithy/is-array-buffer@3.0.0': + resolution: {integrity: sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==} + engines: {node: '>=16.0.0'} + + '@smithy/md5-js@3.0.7': + resolution: {integrity: sha512-+wco9IN9uOW4tNGkZIqTR6IXyfO7Z8A+IOq82QCRn/f/xcmt7H1fXwmQVbfDSvbeFwfNnhv7s+u0G9PzPG6o2w==} + + '@smithy/middleware-content-length@3.0.9': + resolution: {integrity: sha512-t97PidoGElF9hTtLCrof32wfWMqC5g2SEJNxaVH3NjlatuNGsdxXRYO/t+RPnxA15RpYiS0f+zG7FuE2DeGgjA==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-endpoint@3.1.4': + resolution: {integrity: sha512-/ChcVHekAyzUbyPRI8CzPPLj6y8QRAfJngWcLMgsWxKVzw/RzBV69mSOzJYDD3pRwushA1+5tHtPF8fjmzBnrQ==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-retry@3.0.22': + resolution: {integrity: sha512-svEN7O2Tf7BoaBkPzX/8AE2Bv7p16d9/ulFAD1Gmn5g19iMqNk1WIkMxAY7SpB9/tVtUwKx0NaIsBRl88gumZA==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-serde@3.0.7': + resolution: {integrity: sha512-VytaagsQqtH2OugzVTq4qvjkLNbWehHfGcGr0JLJmlDRrNCeZoWkWsSOw1nhS/4hyUUWF/TLGGml4X/OnEep5g==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-stack@3.0.7': + resolution: {integrity: sha512-EyTbMCdqS1DoeQsO4gI7z2Gzq1MoRFAeS8GkFYIwbedB7Lp5zlLHJdg+56tllIIG5Hnf9ZWX48YKSHlsKvugGA==} + engines: {node: '>=16.0.0'} + + '@smithy/node-config-provider@3.1.8': + resolution: {integrity: sha512-E0rU0DglpeJn5ge64mk8wTGEXcQwmpUTY5Zr7IzTpDLmHKiIamINERNZYrPQjg58Ck236sEKSwRSHA4CwshU6Q==} + engines: {node: '>=16.0.0'} + + '@smithy/node-http-handler@3.2.4': + resolution: {integrity: sha512-49reY3+JgLMFNm7uTAKBWiKCA6XSvkNp9FqhVmusm2jpVnHORYFeFZ704LShtqWfjZW/nhX+7Iexyb6zQfXYIQ==} + engines: {node: '>=16.0.0'} + + '@smithy/property-provider@3.1.7': + resolution: {integrity: sha512-QfzLi1GPMisY7bAM5hOUqBdGYnY5S2JAlr201pghksrQv139f8iiiMalXtjczIP5f6owxFn3MINLNUNvUkgtPw==} + engines: {node: '>=16.0.0'} + + '@smithy/protocol-http@4.1.4': + resolution: {integrity: sha512-MlWK8eqj0JlpZBnWmjQLqmFp71Ug00P+m72/1xQB3YByXD4zZ+y9N4hYrR0EDmrUCZIkyATWHOXFgtavwGDTzQ==} + engines: {node: '>=16.0.0'} + + '@smithy/querystring-builder@3.0.7': + resolution: {integrity: sha512-65RXGZZ20rzqqxTsChdqSpbhA6tdt5IFNgG6o7e1lnPVLCe6TNWQq4rTl4N87hTDD8mV4IxJJnvyE7brbnRkQw==} + engines: {node: '>=16.0.0'} + + '@smithy/querystring-parser@3.0.7': + resolution: {integrity: sha512-Fouw4KJVWqqUVIu1gZW8BH2HakwLz6dvdrAhXeXfeymOBrZw+hcqaWs+cS1AZPVp4nlbeIujYrKA921ZW2WMPA==} + engines: {node: '>=16.0.0'} + + '@smithy/service-error-classification@3.0.7': + resolution: {integrity: sha512-91PRkTfiBf9hxkIchhRKJfl1rsplRDyBnmyFca3y0Z3x/q0JJN480S83LBd8R6sBCkm2bBbqw2FHp0Mbh+ecSA==} + engines: {node: '>=16.0.0'} + + '@smithy/shared-ini-file-loader@3.1.8': + resolution: {integrity: sha512-0NHdQiSkeGl0ICQKcJQ2lCOKH23Nb0EaAa7RDRId6ZqwXkw4LJyIyZ0t3iusD4bnKYDPLGy2/5e2rfUhrt0Acw==} + engines: {node: '>=16.0.0'} + + '@smithy/signature-v4@4.2.0': + resolution: {integrity: sha512-LafbclHNKnsorMgUkKm7Tk7oJ7xizsZ1VwqhGKqoCIrXh4fqDDp73fK99HOEEgcsQbtemmeY/BPv0vTVYYUNEQ==} + engines: {node: '>=16.0.0'} + + '@smithy/smithy-client@3.3.6': + resolution: {integrity: sha512-qdH+mvDHgq1ss6mocyIl2/VjlWXew7pGwZQydwYJczEc22HZyX3k8yVPV9aZsbYbssHPvMDRA5rfBDrjQUbIIw==} + engines: {node: '>=16.0.0'} + + '@smithy/types@3.5.0': + resolution: {integrity: sha512-QN0twHNfe8mNJdH9unwsCK13GURU7oEAZqkBI+rsvpv1jrmserO+WnLE7jidR9W/1dxwZ0u/CB01mV2Gms/K2Q==} + engines: {node: '>=16.0.0'} + + '@smithy/url-parser@3.0.7': + resolution: {integrity: sha512-70UbSSR8J97c1rHZOWhl+VKiZDqHWxs/iW8ZHrHp5fCCPLSBE7GcUlUvKSle3Ca+J9LLbYCj/A79BxztBvAfpA==} + + '@smithy/util-base64@3.0.0': + resolution: {integrity: sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==} + engines: {node: '>=16.0.0'} + + '@smithy/util-body-length-browser@3.0.0': + resolution: {integrity: sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==} + + '@smithy/util-body-length-node@3.0.0': + resolution: {integrity: sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==} + engines: {node: '>=16.0.0'} + + '@smithy/util-buffer-from@2.2.0': + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} + engines: {node: '>=14.0.0'} + + '@smithy/util-buffer-from@3.0.0': + resolution: {integrity: sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==} + engines: {node: '>=16.0.0'} + + '@smithy/util-config-provider@3.0.0': + resolution: {integrity: sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==} + engines: {node: '>=16.0.0'} + + '@smithy/util-defaults-mode-browser@3.0.22': + resolution: {integrity: sha512-WKzUxNsOun5ETwEOrvooXeI1mZ8tjDTOcN4oruELWHhEYDgQYWwxZupURVyovcv+h5DyQT/DzK5nm4ZoR/Tw5Q==} + engines: {node: '>= 10.0.0'} + + '@smithy/util-defaults-mode-node@3.0.22': + resolution: {integrity: sha512-hUsciOmAq8fsGwqg4+pJfNRmrhfqMH4Y9UeGcgeUl88kPAoYANFATJqCND+O4nUvwp5TzsYwGpqpcBKyA8LUUg==} + engines: {node: '>= 10.0.0'} + + '@smithy/util-endpoints@2.1.3': + resolution: {integrity: sha512-34eACeKov6jZdHqS5hxBMJ4KyWKztTMulhuQ2UdOoP6vVxMLrOKUqIXAwJe/wiWMhXhydLW664B02CNpQBQ4Aw==} + engines: {node: '>=16.0.0'} + + '@smithy/util-hex-encoding@3.0.0': + resolution: {integrity: sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==} + engines: {node: '>=16.0.0'} + + '@smithy/util-middleware@3.0.7': + resolution: {integrity: sha512-OVA6fv/3o7TMJTpTgOi1H5OTwnuUa8hzRzhSFDtZyNxi6OZ70L/FHattSmhE212I7b6WSOJAAmbYnvcjTHOJCA==} + engines: {node: '>=16.0.0'} + + '@smithy/util-retry@3.0.7': + resolution: {integrity: sha512-nh1ZO1vTeo2YX1plFPSe/OXaHkLAHza5jpokNiiKX2M5YpNUv6RxGJZhpfmiR4jSvVHCjIDmILjrxKmP+/Ghug==} + engines: {node: '>=16.0.0'} + + '@smithy/util-stream@3.1.9': + resolution: {integrity: sha512-7YAR0Ub3MwTMjDfjnup4qa6W8gygZMxikBhFMPESi6ASsl/rZJhwLpF/0k9TuezScCojsM0FryGdz4LZtjKPPQ==} + engines: {node: '>=16.0.0'} + + '@smithy/util-uri-escape@3.0.0': + resolution: {integrity: sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==} + engines: {node: '>=16.0.0'} + + '@smithy/util-utf8@2.3.0': + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + engines: {node: '>=14.0.0'} + + '@smithy/util-utf8@3.0.0': + resolution: {integrity: sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==} + engines: {node: '>=16.0.0'} + + '@smithy/util-waiter@3.1.6': + resolution: {integrity: sha512-xs/KAwWOeCklq8aMlnpk25LgxEYHKOEodfjfKclDMLcBJEVEKzDLxZxBQyztcuPJ7F54213NJS8PxoiHNMdItQ==} + engines: {node: '>=16.0.0'} + + '@socket.io/component-emitter@3.1.2': + resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} + + '@stripe/stripe-js@4.5.0': + resolution: {integrity: sha512-dMOzc58AOlsF20nYM/avzV8RFhO/vgYTY7ajLMH6mjlnZysnOHZxsECQvjEmL8Q/ukPwHkOnxSPW/QGCCnp7XA==} + engines: {node: '>=12.16'} + + '@swc-jotai/react-refresh@0.2.0': + resolution: {integrity: sha512-LDkIeVcaL8sop/MHLP3RsUHj73fQ0kU7eYhJj7SuU4eAbx7xE3eeEgCjhTyPB3aYimSHwOk8/c71buLMV9SvPA==} + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/helpers@0.5.13': + resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} + + '@swc/helpers@0.5.5': + resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} + + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + + '@types/cookie@0.4.1': + resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} + + '@types/cookie@0.6.0': + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} + + '@types/cors@2.8.17': + resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} + + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/estree-jsx@1.0.5': + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + + '@types/formidable@3.4.5': + resolution: {integrity: sha512-s7YPsNVfnsng5L8sKnG/Gbb2tiwwJTY1conOkJzTMRvJAlLFW1nEua+ADsJQu8N1c0oTHx9+d5nqg10WuT9gHQ==} + + '@types/hast@2.3.10': + resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/ms@0.7.34': + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + + '@types/node@22.5.5': + resolution: {integrity: sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==} + + '@types/papaparse@5.3.14': + resolution: {integrity: sha512-LxJ4iEFcpqc6METwp9f6BV6VVc43m6MfH0VqFosHvrUgfXiFe6ww7R3itkOQ+TCK6Y+Iv/+RnnvtRZnkc5Kc9g==} + + '@types/prismjs@1.26.4': + resolution: {integrity: sha512-rlAnzkW2sZOjbqZ743IHUhFcvzaGbqijwOu8QZnZCjfQzBqFE3s4lOTJEsxikImav9uzz/42I+O7YUs1mWgMlg==} + + '@types/unist@2.0.11': + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@typescript-eslint/eslint-plugin@8.6.0': + resolution: {integrity: sha512-UOaz/wFowmoh2G6Mr9gw60B1mm0MzUtm6Ic8G2yM1Le6gyj5Loi/N+O5mocugRGY+8OeeKmkMmbxNqUCq3B4Sg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@8.6.0': + resolution: {integrity: sha512-eQcbCuA2Vmw45iGfcyG4y6rS7BhWfz9MQuk409WD47qMM+bKCGQWXxvoOs1DUp+T7UBMTtRTVT+kXr7Sh4O9Ow==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@8.6.0': + resolution: {integrity: sha512-ZuoutoS5y9UOxKvpc/GkvF4cuEmpokda4wRg64JEia27wX+PysIE9q+lzDtlHHgblwUWwo5/Qn+/WyTUvDwBHw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.6.0': + resolution: {integrity: sha512-dtePl4gsuenXVwC7dVNlb4mGDcKjDT/Ropsk4za/ouMBPplCLyznIaR+W65mvCvsyS97dymoBRrioEXI7k0XIg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@8.6.0': + resolution: {integrity: sha512-rojqFZGd4MQxw33SrOy09qIDS8WEldM8JWtKQLAjf/X5mGSeEFh5ixQlxssMNyPslVIk9yzWqXCsV2eFhYrYUw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.6.0': + resolution: {integrity: sha512-MOVAzsKJIPIlLK239l5s06YXjNqpKTVhBVDnqUumQJja5+Y94V3+4VUFRA0G60y2jNnTVwRCkhyGQpavfsbq/g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@8.6.0': + resolution: {integrity: sha512-eNp9cWnYf36NaOVjkEUznf6fEgVy1TWpE0o52e4wtojjBx7D1UV2WAWGzR+8Y5lVFtpMLPwNbC67T83DWSph4A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + + '@typescript-eslint/visitor-keys@8.6.0': + resolution: {integrity: sha512-wapVFfZg9H0qOYh4grNVQiMklJGluQrOUiOhYRrQWhx7BY/+I1IYb8BczWNbbUpO+pqy0rDciv3lQH5E1bCLrg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@uiw/copy-to-clipboard@1.0.17': + resolution: {integrity: sha512-O2GUHV90Iw2VrSLVLK0OmNIMdZ5fgEg4NhvtwINsX+eZ/Wf6DWD0TdsK9xwV7dNRnK/UI2mQtl0a2/kRgm1m1A==} + + '@uiw/react-markdown-preview@5.1.3': + resolution: {integrity: sha512-jV02wO4XHWFk54kz7sLqOkdPgJLttSfKLyen47XgjcyGgQXU2I4WJBygmdpV2AT9m/MiQ8qrN1Y+E5Syv9ZDpw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@uiw/react-md-editor@4.0.4': + resolution: {integrity: sha512-JH9nDXXRhJtWPP4yE61VE+9ryFo9tg9v7KMwGfJCnaOOKuLF1MR3l/MNsiJCGkRjUwyto5WrU7kBSq8ODJEtYw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@ungap/structured-clone@1.2.0': + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + + '@webassemblyjs/ast@1.12.1': + resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} + + '@webassemblyjs/floating-point-hex-parser@1.11.6': + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + + '@webassemblyjs/helper-api-error@1.11.6': + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + + '@webassemblyjs/helper-buffer@1.12.1': + resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} + + '@webassemblyjs/helper-numbers@1.11.6': + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + + '@webassemblyjs/helper-wasm-bytecode@1.11.6': + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + + '@webassemblyjs/helper-wasm-section@1.12.1': + resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} + + '@webassemblyjs/ieee754@1.11.6': + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + + '@webassemblyjs/leb128@1.11.6': + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + + '@webassemblyjs/utf8@1.11.6': + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + + '@webassemblyjs/wasm-edit@1.12.1': + resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} + + '@webassemblyjs/wasm-gen@1.12.1': + resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} + + '@webassemblyjs/wasm-opt@1.12.1': + resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} + + '@webassemblyjs/wasm-parser@1.12.1': + resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} + + '@webassemblyjs/wast-printer@1.12.1': + resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} + + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + abbrev@2.0.0: + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-import-attributes@1.9.5: + resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} + peerDependencies: + acorn: ^8 + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + + acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + engines: {node: '>=0.4.0'} + hasBin: true + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + ajv-formats@2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + + ajv-keywords@5.1.0: + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + ansi-escapes@7.0.0: + resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} + engines: {node: '>=18'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-hidden@1.2.4: + resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} + engines: {node: '>=10'} + + aria-query@5.1.3: + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} + + array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + + array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + + asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + + ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + attr-accept@2.2.2: + resolution: {integrity: sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==} + engines: {node: '>=4'} + + autoprefixer@10.4.20: + resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + axe-core@4.10.0: + resolution: {integrity: sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==} + engines: {node: '>=4'} + + axios@1.7.7: + resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} + + axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} + + babel-loader@9.2.1: + resolution: {integrity: sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==} + engines: {node: '>= 14.15.0'} + peerDependencies: + '@babel/core': ^7.12.0 + webpack: '>=5' + + babel-plugin-transform-remove-imports@1.8.0: + resolution: {integrity: sha512-QdE5ZnIjON1pSgTPU8KzLnl/LEzdq9PLmZNuHgGKTx0LOI9PBrHBj0fz9uCg2CdssiTw7v/zVRYs8GJxbvhKnQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + base64id@2.0.0: + resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} + engines: {node: ^4.5.0 || >= 5.9} + + bcp-47-match@2.0.3: + resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + bowser@2.11.0: + resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.23.3: + resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + + caniuse-lite@1.0.30001663: + resolution: {integrity: sha512-o9C3X27GLKbLeTYZ6HBOLU1tsAcBZsLis28wrVzddShCS16RujjHp9GDHKZqrB3meE0YjhawvMFsGb/igqiPzA==} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} + engines: {node: '>=6.0'} + + class-variance-authority@0.7.0: + resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cli-truncate@4.0.0: + resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} + engines: {node: '>=18'} + + client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + clsx@2.0.0: + resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} + engines: {node: '>=6'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + + commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + + commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + common-path-prefix@3.0.0: + resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} + + commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie@0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} + + cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + engines: {node: '>= 0.6'} + + cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + css-selector-parser@3.0.5: + resolution: {integrity: sha512-3itoDFbKUNx1eKmVpYMFyqKX04Ww9osZ+dLgrk6GEv6KMVeXUhUnp4I5X+evw+u3ZxVU6RFXSSRxlTeMh8bA+g==} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + + data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + + debounce@2.0.0: + resolution: {integrity: sha512-xRetU6gL1VJbs85Mc4FoEGSjQxzpdxRyFhe3lmWFyy2EzydIcD4xzUvRJMD+NPDfMwKNhxa3PvsIOU32luIWeA==} + engines: {node: '>=18'} + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decode-named-character-reference@1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + + deep-equal@2.2.3: + resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} + engines: {node: '>= 0.4'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + dezalgo@1.0.4: + resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} + + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + + direction@2.0.1: + resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} + hasBin: true + + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + + dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + editorconfig@1.0.4: + resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==} + engines: {node: '>=14'} + hasBin: true + + electron-to-chromium@1.5.27: + resolution: {integrity: sha512-o37j1vZqCoEgBuWWXLHQgTN/KDKe7zwpiY5CPeq2RvUqOyJw9xnrULzZAEVQ5p4h+zjMk7hgtOoPdnLxr7m/jw==} + + embla-carousel-react@8.3.0: + resolution: {integrity: sha512-P1FlinFDcIvggcErRjNuVqnUR8anyo8vLMIH8Rthgofw7Nj8qTguCa2QjFAbzxAUTQTPNNjNL7yt0BGGinVdFw==} + peerDependencies: + react: ^16.8.0 || ^17.0.1 || ^18.0.0 + + embla-carousel-reactive-utils@8.3.0: + resolution: {integrity: sha512-EYdhhJ302SC4Lmkx8GRsp0sjUhEN4WyFXPOk0kGu9OXZSRMmcBlRgTvHcq8eKJE1bXWBsOi1T83B+BSSVZSmwQ==} + peerDependencies: + embla-carousel: 8.3.0 + + embla-carousel@8.3.0: + resolution: {integrity: sha512-Ve8dhI4w28qBqR8J+aMtv7rLK89r1ZA5HocwFz6uMB/i5EiC7bGI7y+AM80yAVUJw3qqaZYK7clmZMUR8kM3UA==} + + emoji-regex@10.4.0: + resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + engine.io-parser@5.2.3: + resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} + engines: {node: '>=10.0.0'} + + engine.io@6.5.5: + resolution: {integrity: sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==} + engines: {node: '>=10.2.0'} + + enhanced-resolve@5.17.1: + resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} + engines: {node: '>=10.13.0'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + + es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} + + es-iterator-helpers@1.0.19: + resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} + engines: {node: '>= 0.4'} + + es-iterator-helpers@1.1.0: + resolution: {integrity: sha512-/SurEfycdyssORP/E+bj4sEu1CWw4EmLDsHynHwSXQ7utgbrMRWW195pTrCjFgFCddf/UkYm3oqKPRq5i8bJbw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.5.4: + resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + + es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + + es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + + esbuild@0.19.11: + resolution: {integrity: sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + eslint-config-next@15.0.1: + resolution: {integrity: sha512-3cYCrgbH6GS/ufApza7XCKz92vtq4dAdYhx++rMFNlH2cAV+/GsAKkrr4+bohYOACmzG2nAOR+uWprKC1Uld6A==} + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 || ^9.0.0 + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + + eslint-config-prettier@9.1.0: + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-import-resolver-typescript@3.6.3: + resolution: {integrity: sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true + + eslint-module-utils@2.11.0: + resolution: {integrity: sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-module-utils@2.12.0: + resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-import-x@4.3.0: + resolution: {integrity: sha512-PxGzP7gAjF2DLeRnQtbYkkgZDg1intFyYr/XS1LgTYXUDrSXMHGkXx8++6i2eDv2jMs0jfeO6G6ykyeWxiFX7w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + + eslint-plugin-import@2.31.0: + resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-jsx-a11y@6.10.0: + resolution: {integrity: sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 + + eslint-plugin-playwright@1.6.2: + resolution: {integrity: sha512-mraN4Em3b5jLt01q7qWPyLg0Q5v3KAWfJSlEWwldyUXoa7DSPrBR4k6B6LROLqipsG8ndkwWMdjl1Ffdh15tag==} + engines: {node: '>=16.6.0'} + peerDependencies: + eslint: '>=8.40.0' + eslint-plugin-jest: '>=25' + peerDependenciesMeta: + eslint-plugin-jest: + optional: true + + eslint-plugin-prettier@5.2.1: + resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + + eslint-plugin-react-hooks@5.0.0: + resolution: {integrity: sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + + eslint-plugin-react@7.37.2: + resolution: {integrity: sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + + eslint-plugin-unused-imports@4.1.4: + resolution: {integrity: sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 + eslint: ^9.0.0 || ^8.0.0 + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + eslint-scope@8.0.2: + resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.0.0: + resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.9.1: + resolution: {integrity: sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.1.0: + resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + fast-deep-equal@2.0.1: + resolution: {integrity: sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + + fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-uri@3.0.1: + resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==} + + fast-xml-parser@4.4.1: + resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} + hasBin: true + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + file-selector@0.6.0: + resolution: {integrity: sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==} + engines: {node: '>= 12'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-cache-dir@4.0.0: + resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} + engines: {node: '>=14.16'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + find-up@6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + + foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} + + form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + + formidable@3.5.1: + resolution: {integrity: sha512-WJWKelbRHN41m5dumb0/k8TeAx7Id/y3a+Z7QfhxP/htI9Js5zYaEDtG8uMgG0vM0lOlqnmjE99/kfpOYi/0Og==} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-east-asian-width@1.2.0: + resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} + engines: {node: '>=18'} + + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + + get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.8.1: + resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} + + github-slugger@2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + glob@10.3.4: + resolution: {integrity: sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + deprecated: Glob versions prior to v9 are no longer supported + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hast-util-from-html@2.0.3: + resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==} + + hast-util-from-parse5@8.0.1: + resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} + + hast-util-has-property@3.0.0: + resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} + + hast-util-heading-rank@3.0.0: + resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} + + hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + + hast-util-parse-selector@3.1.1: + resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} + + hast-util-parse-selector@4.0.0: + resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} + + hast-util-raw@9.0.4: + resolution: {integrity: sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA==} + + hast-util-sanitize@5.0.1: + resolution: {integrity: sha512-IGrgWLuip4O2nq5CugXy4GI2V8kx4sFVy5Hd4vF7AR2gxS0N9s7nEAVUyeMtZKZvzrxVsHt73XdTsno1tClIkQ==} + + hast-util-select@6.0.2: + resolution: {integrity: sha512-hT/SD/d/Meu+iobvgkffo1QecV8WeKWxwsNMzcTJsKw1cKTQKSR/7ArJeURLNJF9HDjp9nVoORyNNJxrvBye8Q==} + + hast-util-to-html@9.0.3: + resolution: {integrity: sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==} + + hast-util-to-jsx-runtime@2.3.0: + resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} + + hast-util-to-parse5@8.0.0: + resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} + + hast-util-to-string@3.0.0: + resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + hastscript@7.2.0: + resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} + + hastscript@8.0.0: + resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} + + hexoid@1.0.0: + resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==} + engines: {node: '>=8'} + + hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + + html-to-text@9.0.5: + resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} + engines: {node: '>=14'} + + html-url-attributes@3.0.0: + resolution: {integrity: sha512-/sXbVCWayk6GDVg3ctOX6nxaVj7So40FcFAnWlWGNAB1LpYKcV5Cd10APjPjW80O7zYW2MsjBV4zZ7IZO5fVow==} + + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + + htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + husky@9.1.6: + resolution: {integrity: sha512-sqbjZKK7kf44hfdE94EoX8MZNk0n7HeW37O4YrVGCF4wzgQjp+akPAkfUK5LZ6KuR/6sqeAVuXHji+RzQgOn5A==} + engines: {node: '>=18'} + hasBin: true + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + inline-style-parser@0.2.4: + resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} + + internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + + invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + + is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + + is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + + is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + + is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + + is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + + is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + + is-bun-module@1.2.1: + resolution: {integrity: sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.15.1: + resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + + is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + + is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + + is-fullwidth-code-point@5.0.0: + resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} + engines: {node: '>=18'} + + is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + + is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-reference@1.2.1: + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + + is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + + is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + + is-weakset@2.0.3: + resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} + engines: {node: '>= 0.4'} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + + iterator.prototype@1.1.3: + resolution: {integrity: sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==} + engines: {node: '>= 0.4'} + + jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + hasBin: true + + jose@5.9.3: + resolution: {integrity: sha512-egLIoYSpcd+QUF+UHgobt5YzI2Pkw/H39ou9suW687MY6PmCwPmkNV/4TNjn1p2tX5xO3j0d0sq5hiYE24bSlg==} + + jotai@2.10.0: + resolution: {integrity: sha512-8W4u0aRlOIwGlLQ0sqfl/c6+eExl5D8lZgAUolirZLktyaj4WnxO/8a0HEPmtriQAB6X5LMhXzZVmw02X0P0qQ==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.1 + react: '>=17.0.0' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + + js-beautify@1.15.1: + resolution: {integrity: sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==} + engines: {node: '>=14'} + hasBin: true + + js-cookie@3.0.5: + resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} + engines: {node: '>=14'} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + language-subtag-registry@0.3.23: + resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} + + language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} + + leac@0.6.0: + resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lie@3.1.1: + resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + lint-staged@15.2.10: + resolution: {integrity: sha512-5dY5t743e1byO19P9I4b3x8HJwalIznL5E1FWYnU6OWw33KxNBSLAc6Cy7F2PsFEO8FKnLwjwm5hx7aMF0jzZg==} + engines: {node: '>=18.12.0'} + hasBin: true + + listr2@8.2.4: + resolution: {integrity: sha512-opevsywziHd3zHCVQGAj8zu+Z3yHNkkoYhWIGnq54RrCVwLz0MozotJEDnKsIBLvkfLGN6BLOyAeRrYI0pKA4g==} + engines: {node: '>=18.0.0'} + + loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + + localforage@1.10.0: + resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + log-update@6.1.0: + resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} + engines: {node: '>=18'} + + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lucide-react@0.438.0: + resolution: {integrity: sha512-uq6yCB+IzVfgIPMK8ibkecXSWTTSOMs9UjUgZigfrDCVqgdwkpIgYg1fSYnf0XXF2AoSyCJZhoZXQwzoai7VGw==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc + + magic-string@0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + markdown-table@3.0.3: + resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} + + marked@7.0.4: + resolution: {integrity: sha512-t8eP0dXRJMtMvBojtkcsA7n48BkauktUKzfkPSCq85ZMTJ0v76Rke4DYz01omYpPTUh4p/f7HePgRo3ebG8+QQ==} + engines: {node: '>= 16'} + hasBin: true + + md-to-react-email@5.0.2: + resolution: {integrity: sha512-x6kkpdzIzUhecda/yahltfEl53mH26QdWu4abUF9+S0Jgam8P//Ciro8cdhyMHnT5MQUJYrIbO6ORM2UxPiNNA==} + peerDependencies: + react: 18.x + + mdast-util-find-and-replace@3.0.1: + resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} + + mdast-util-from-markdown@2.0.1: + resolution: {integrity: sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==} + + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} + + mdast-util-gfm-footnote@2.0.0: + resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} + + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + + mdast-util-gfm@3.0.0: + resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} + + mdast-util-mdx-expression@2.0.1: + resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} + + mdast-util-mdx-jsx@3.1.3: + resolution: {integrity: sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==} + + mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-hast@13.2.0: + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + + mdast-util-to-markdown@2.1.0: + resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromark-core-commonmark@2.0.1: + resolution: {integrity: sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==} + + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + + micromark-extension-gfm-table@2.1.0: + resolution: {integrity: sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==} + + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + + micromark-factory-destination@2.0.0: + resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} + + micromark-factory-label@2.0.0: + resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} + + micromark-factory-space@2.0.0: + resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} + + micromark-factory-title@2.0.0: + resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} + + micromark-factory-whitespace@2.0.0: + resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} + + micromark-util-character@2.1.0: + resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} + + micromark-util-chunked@2.0.0: + resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} + + micromark-util-classify-character@2.0.0: + resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + + micromark-util-combine-extensions@2.0.0: + resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} + + micromark-util-decode-numeric-character-reference@2.0.1: + resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} + + micromark-util-decode-string@2.0.0: + resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} + + micromark-util-encode@2.0.0: + resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} + + micromark-util-html-tag-name@2.0.0: + resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} + + micromark-util-normalize-identifier@2.0.0: + resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} + + micromark-util-resolve-all@2.0.0: + resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} + + micromark-util-sanitize-uri@2.0.0: + resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} + + micromark-util-subtokenize@2.0.1: + resolution: {integrity: sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==} + + micromark-util-symbol@2.0.0: + resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} + + micromark-util-types@2.0.0: + resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} + + micromark@4.0.0: + resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + + minimatch@9.0.1: + resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} + engines: {node: '>=16 || 14 >=14.17'} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + next-auth@5.0.0-beta.22: + resolution: {integrity: sha512-QGBo9HGOjmnJBHGXvtFztl0tM5tL0porDlk74HVoCCzXd986ApOlIW3EmiCuho7YzEopgkFiwwmcXpoCrHAtYw==} + peerDependencies: + '@simplewebauthn/browser': ^9.0.1 + '@simplewebauthn/server': ^9.0.2 + next: ^14.0.0-0 || ^15.0.0-0 + nodemailer: ^6.6.5 + react: ^18.2.0 || ^19.0.0-0 + peerDependenciesMeta: + '@simplewebauthn/browser': + optional: true + '@simplewebauthn/server': + optional: true + nodemailer: + optional: true + + next-remove-imports@1.0.12: + resolution: {integrity: sha512-3tdL6VuSykJ/mcUwxfjQ+Fd4OpEmrwWVHtLZ/fhNcSaToWCutUp7nrfIww7/4CURe9I7BDCQE9AWl4fkY3YZOQ==} + + next-safe-action@7.9.3: + resolution: {integrity: sha512-2GH7/iRiM5R/y6sIQZsNHGeRr/iKQJsg8ejP63WhTS7fXS9KzxVbEKrWwLNNhL33V9cn0448cPSI/aiSK/PUbA==} + engines: {node: '>=18.17'} + peerDependencies: + '@sinclair/typebox': '>= 0.33.3' + next: '>= 14.0.0' + react: '>= 18.2.0' + react-dom: '>= 18.2.0' + valibot: '>= 0.36.0' + yup: '>= 1.0.0' + zod: '>= 3.0.0' + peerDependenciesMeta: + '@sinclair/typebox': + optional: true + valibot: + optional: true + yup: + optional: true + zod: + optional: true + + next-themes@0.3.0: + resolution: {integrity: sha512-/QHIrsYpd6Kfk7xakK4svpDI5mmXP0gfvCoJdGpZQ2TOrQZmsW0QxjaiLn8wbIKjtm4BTSqLoix4lxYYOnLJ/w==} + peerDependencies: + react: ^16.8 || ^17 || ^18 + react-dom: ^16.8 || ^17 || ^18 + + next@14.2.3: + resolution: {integrity: sha512-dowFkFTR8v79NPJO4QsBUtxv0g9BrS/phluVpMAt2ku7H+cbcBJlopXjkWlwxrk/xGqMemr7JkGPGemPrLLX7A==} + engines: {node: '>=18.17.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + sass: + optional: true + + next@15.0.1: + resolution: {integrity: sha512-PSkFkr/w7UnFWm+EP8y/QpHrJXMqpZzAXpergB/EqLPOh4SGPJXv1wj4mslr2hUZBAS9pX7/9YLIdxTv6fwytw==} + engines: {node: '>=18.18.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 + babel-plugin-react-compiler: '*' + react: ^18.2.0 || 19.0.0-rc-69d4b800-20241021 + react-dom: ^18.2.0 || 19.0.0-rc-69d4b800-20241021 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + babel-plugin-react-compiler: + optional: true + sass: + optional: true + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + + nopt@7.2.1: + resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + not@0.1.0: + resolution: {integrity: sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==} + + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + oauth4webapi@2.17.0: + resolution: {integrity: sha512-lbC0Z7uzAFNFyzEYRIC+pkSVvDHJTbEW+dYlSBAlCYDe6RxUkJ26bClhk8ocBZip1wfI9uKTe0fm4Ib4RHn6uQ==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} + + object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + + object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + + object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} + engines: {node: '>= 0.4'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + + papaparse@5.4.1: + resolution: {integrity: sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-entities@4.0.1: + resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} + + parse-numeric-range@1.3.0: + resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} + + parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + + parseley@0.12.1: + resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + peberminta@0.9.0: + resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} + + picocolors@1.1.0: + resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + pkg-dir@7.0.0: + resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} + engines: {node: '>=14.16'} + + playwright-core@1.47.2: + resolution: {integrity: sha512-3JvMfF+9LJfe16l7AbSmU555PaTl2tPyQsVInqm3id16pdDfvZ8TTZ/pyzmkbDrZTQefyzU7AIHlZqQnxpqHVQ==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.47.2: + resolution: {integrity: sha512-nx1cLMmQWqmA3UsnjaaokyoUpdVaaDhJhMoxX2qj3McpjnsqFHs516QAKYhqHAgOP+oCFTEOCOAaD1RgD/RQfA==} + engines: {node: '>=18'} + hasBin: true + + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.0.1: + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-load-config@4.0.2: + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-nested@6.2.0: + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + + postcss@8.4.47: + resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + engines: {node: ^10 || ^12 || >=14} + + preact-render-to-string@5.2.3: + resolution: {integrity: sha512-aPDxUn5o3GhWdtJtW0svRC2SS/l8D9MAgo2+AWml+BhDImb27ALf04Q2d+AHqUUOc6RdSXFIBVa2gxzgMKgtZA==} + peerDependencies: + preact: '>=10' + + preact@10.11.3: + resolution: {integrity: sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + + prettier-plugin-tailwindcss@0.6.6: + resolution: {integrity: sha512-OPva5S7WAsPLEsOuOWXATi13QrCKACCiIonFgIR6V4lYv4QLp++UXVhZSzRbZxXGimkQtQT86CC6fQqTOybGng==} + engines: {node: '>=14.21.3'} + peerDependencies: + '@ianvs/prettier-plugin-sort-imports': '*' + '@prettier/plugin-pug': '*' + '@shopify/prettier-plugin-liquid': '*' + '@trivago/prettier-plugin-sort-imports': '*' + '@zackad/prettier-plugin-twig-melody': '*' + prettier: ^3.0 + prettier-plugin-astro: '*' + prettier-plugin-css-order: '*' + prettier-plugin-import-sort: '*' + prettier-plugin-jsdoc: '*' + prettier-plugin-marko: '*' + prettier-plugin-multiline-arrays: '*' + prettier-plugin-organize-attributes: '*' + prettier-plugin-organize-imports: '*' + prettier-plugin-sort-imports: '*' + prettier-plugin-style-order: '*' + prettier-plugin-svelte: '*' + peerDependenciesMeta: + '@ianvs/prettier-plugin-sort-imports': + optional: true + '@prettier/plugin-pug': + optional: true + '@shopify/prettier-plugin-liquid': + optional: true + '@trivago/prettier-plugin-sort-imports': + optional: true + '@zackad/prettier-plugin-twig-melody': + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-css-order: + optional: true + prettier-plugin-import-sort: + optional: true + prettier-plugin-jsdoc: + optional: true + prettier-plugin-marko: + optional: true + prettier-plugin-multiline-arrays: + optional: true + prettier-plugin-organize-attributes: + optional: true + prettier-plugin-organize-imports: + optional: true + prettier-plugin-sort-imports: + optional: true + prettier-plugin-style-order: + optional: true + prettier-plugin-svelte: + optional: true + + prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + engines: {node: '>=14'} + hasBin: true + + pretty-format@3.8.0: + resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==} + + prisma@5.16.1: + resolution: {integrity: sha512-Z1Uqodk44diztImxALgJJfNl2Uisl9xDRvqybMKEBYJLNKNhDfAHf+ZIJbZyYiBhLMbKU9cYGdDVG5IIXEnL2Q==} + engines: {node: '>=16.13'} + hasBin: true + + prismjs@1.29.0: + resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} + engines: {node: '>=6'} + + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + property-information@6.5.0: + resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + + proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + engines: {node: '>=0.6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + react-dom@19.0.0-rc-69d4b800-20241021: + resolution: {integrity: sha512-ZXBsP/kTDLI9QopUaUgYJhmmAhO8aKz7DCv2Ui2rA9boCfJ/dRRh6BlVidsyb2dPzG01rItdRFQqwbP+x9s5Rg==} + peerDependencies: + react: 19.0.0-rc-69d4b800-20241021 + + react-dropzone@14.2.3: + resolution: {integrity: sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==} + engines: {node: '>= 10.13'} + peerDependencies: + react: '>= 16.8 || 18.0.0' + + react-email@3.0.1: + resolution: {integrity: sha512-G4Bkx2ULIScy/0Z8nnWywHt0W1iTkaYCdh9rWNuQ3eVZ6B3ttTUDE9uUy3VNQ8dtQbmG0cpt8+XmImw7mMBW6Q==} + engines: {node: '>=18.0.0'} + hasBin: true + + react-error-boundary@4.0.13: + resolution: {integrity: sha512-b6PwbdSv8XeOSYvjt8LpgpKrZ0yGdtZokYwkwV2wlcZbxgopHX/hgPl5VgpnoVOWd868n1hktM8Qm4b+02MiLQ==} + peerDependencies: + react: '>=16.13.1' + + react-hook-form@7.53.0: + resolution: {integrity: sha512-M1n3HhqCww6S2hxLxciEXy2oISPnAzxY7gvwVPrtlczTM/1dDadXgUxDpHMrMTblDOcm/AXtXxHwZ3jpg1mqKQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^16.8.0 || ^17 || ^18 || ^19 + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-markdown@9.0.1: + resolution: {integrity: sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.1 + react: '>=18' + + react-paginate@8.2.0: + resolution: {integrity: sha512-sJCz1PW+9PNIjUSn919nlcRVuleN2YPoFBOvL+6TPgrH/3lwphqiSOgdrLafLdyLDxsgK+oSgviqacF4hxsDIw==} + peerDependencies: + react: ^16 || ^17 || ^18 + + react-papaparse@4.4.0: + resolution: {integrity: sha512-xTEwHZYJ+1dh9mQDQjjwJXmWyX20DdZ52u+ddw75V+Xm5qsjXSvWmC7c8K82vRwMjKAOH2S9uFyGpHEyEztkUQ==} + engines: {node: '>=8', npm: '>=5'} + + react-promise-suspense@0.3.4: + resolution: {integrity: sha512-I42jl7L3Ze6kZaq+7zXWSunBa3b1on5yfvUW6Eo/3fFOj6dZ5Bqmcd264nJbTK/gn1HjjILAjSwnZbV4RpSaNQ==} + + react-remove-scroll-bar@2.3.6: + resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.1 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.5.7: + resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.1 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-style-singleton@2.2.1: + resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.1 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react@19.0.0-rc-69d4b800-20241021: + resolution: {integrity: sha512-dXki4tN+rP+4xhsm65q/QI/19VCZdu5vPcy4h6zaJt20XP8/1r/LCwrLFYuj8hElbNz5AmxW6JtRa7ej0BzZdg==} + engines: {node: '>=0.10.0'} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + reflect.getprototypeof@1.0.6: + resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} + engines: {node: '>= 0.4'} + + refractor@4.8.1: + resolution: {integrity: sha512-/fk5sI0iTgFYlmVGYVew90AoYnNMP6pooClx/XKqyeeCQXrL0Kvgn8V0VEht5ccdljbzzF1i3Q213gcntkRExg==} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} + + rehype-attr@3.0.3: + resolution: {integrity: sha512-Up50Xfra8tyxnkJdCzLBIBtxOcB2M1xdeKe1324U06RAvSjYm7ULSeoM+b/nYPQPVd7jsXJ9+39IG1WAJPXONw==} + engines: {node: '>=16'} + + rehype-autolink-headings@7.1.0: + resolution: {integrity: sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw==} + + rehype-ignore@2.0.2: + resolution: {integrity: sha512-BpAT/3lU9DMJ2siYVD/dSR0A/zQgD6Fb+fxkJd4j+wDVy6TYbYpK+FZqu8eM9EuNKGvi4BJR7XTZ/+zF02Dq8w==} + engines: {node: '>=16'} + + rehype-parse@9.0.0: + resolution: {integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==} + + rehype-prism-plus@2.0.0: + resolution: {integrity: sha512-FeM/9V2N7EvDZVdR2dqhAzlw5YI49m9Tgn7ZrYJeYHIahM6gcXpH0K1y2gNnKanZCydOMluJvX2cB9z3lhY8XQ==} + + rehype-raw@7.0.0: + resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} + + rehype-rewrite@4.0.2: + resolution: {integrity: sha512-rjLJ3z6fIV11phwCqHp/KRo8xuUCO8o9bFJCNw5o6O2wlLk6g8r323aRswdGBQwfXPFYeSuZdAjp4tzo6RGqEg==} + engines: {node: '>=16.0.0'} + + rehype-sanitize@6.0.0: + resolution: {integrity: sha512-CsnhKNsyI8Tub6L4sm5ZFsme4puGfc6pYylvXo1AeqaGbjOYyzNv3qZPwvs0oMJ39eryyeOdmxwUIo94IpEhqg==} + + rehype-slug@6.0.0: + resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} + + rehype-stringify@10.0.0: + resolution: {integrity: sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==} + + rehype@13.0.1: + resolution: {integrity: sha512-AcSLS2mItY+0fYu9xKxOu1LhUZeBZZBx8//5HKzF+0XP+eP8+6a5MXn2+DW2kfXR6Dtp1FEXMVrjyKAcvcU8vg==} + + remark-gfm@4.0.0: + resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} + + remark-github-blockquote-alert@1.2.1: + resolution: {integrity: sha512-qNf2mSAoZgh3Cl23/9Y1L7S4Kbf9NsdHvYK398ab/52yEsDPDU5I4cuTcgDRrdIX7Ltc6RK+KCLRtWkbFnL6Dg==} + engines: {node: '>=16'} + + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + + remark-rehype@11.1.1: + resolution: {integrity: sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==} + + remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + resend@4.0.0: + resolution: {integrity: sha512-rDX0rspl/XcmC2JV2V5obQvRX2arzxXUvNFUDMOv5ObBLR68+7kigCOysb7+dlkb0JE3erhQG0nHrbBt/ZCWIg==} + engines: {node: '>=18'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rollup@2.78.0: + resolution: {integrity: sha512-4+YfbQC9QEVvKTanHhIAFVUFSRsezvQF8vFOJwtGfb9Bb+r014S+qryr9PSmw8x6sMnPkmFBGAvIFVQxvJxjtg==} + engines: {node: '>=10.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + + scheduler@0.25.0-rc-69d4b800-20241021: + resolution: {integrity: sha512-S5AYX/YhMAN6u9AXgKYbZP4U4ZklC6R9Q7HmFSBk7d4DLiHVNxvAvlSvuM4nxFkwOk50MnpfTKQ7UWHXDOc9Eg==} + + schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + + schema-utils@4.2.0: + resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} + engines: {node: '>= 12.13.0'} + + selderee@0.11.0: + resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + sharp@0.33.5: + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + + slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + + slice-ansi@7.1.0: + resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} + engines: {node: '>=18'} + + slugify@1.6.6: + resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} + engines: {node: '>=8.0.0'} + + socket.io-adapter@2.5.5: + resolution: {integrity: sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==} + + socket.io-parser@4.2.4: + resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} + engines: {node: '>=10.0.0'} + + socket.io@4.7.5: + resolution: {integrity: sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==} + engines: {node: '>=10.2.0'} + + sonner@1.5.0: + resolution: {integrity: sha512-FBjhG/gnnbN6FY0jaNnqZOMmB73R+5IiyYAw8yBj7L54ER7HB3fOSE5OFiQiE2iXWxeXKvg6fIP4LtVppHEdJA==} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + stable-hash@0.0.4: + resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} + + stacktrace-parser@0.1.10: + resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} + engines: {node: '>=6'} + + stop-iteration-iterator@1.0.0: + resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} + engines: {node: '>= 0.4'} + + streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + string.prototype.includes@2.0.0: + resolution: {integrity: sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==} + + string.prototype.matchall@4.0.11: + resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} + engines: {node: '>= 0.4'} + + string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + + string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + stripe@16.12.0: + resolution: {integrity: sha512-H7eFVLDxeTNNSn4JTRfL2//LzCbDrMSZ+2q1c7CanVWgK2qIW5TwS+0V7N9KcKZZNpYh/uCqK0PyZh/2UsaAtQ==} + engines: {node: '>=12.*'} + + strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + + style-to-object@1.0.8: + resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} + + styled-jsx@5.1.1: + resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + + styled-jsx@5.1.6: + resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + synckit@0.9.1: + resolution: {integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==} + engines: {node: ^14.18.0 || >=16.0.0} + + tailwind-merge@2.5.2: + resolution: {integrity: sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg==} + + tailwindcss-animate@1.0.7: + resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + + tailwindcss@3.4.12: + resolution: {integrity: sha512-Htf/gHj2+soPb9UayUNci/Ja3d8pTmu9ONTfh4QY8r3MATTZOzmv6UYWF7ZwikEIC8okpfqmGqrmDehua8mF8w==} + engines: {node: '>=14.0.0'} + hasBin: true + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + terser-webpack-plugin@5.3.10: + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + + terser@5.33.0: + resolution: {integrity: sha512-JuPVaB7s1gdFKPKTelwUyRq5Sid2A3Gko2S0PncwdBq7kN9Ti9HPWDQ06MPsEDGsZeVESjKEnyGy68quBk1w6g==} + engines: {node: '>=10'} + hasBin: true + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + + ts-api-utils@1.3.0: + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + + tslib@2.7.0: + resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.7.1: + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} + + typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} + + types-react@19.0.0-rc.1: + resolution: {integrity: sha512-RshndUfqTW6K3STLPis8BtAYCGOkMbtvYsi90gmVNDZBXUyUc5juf2PE9LfS/JmOlUIRO8cWTS/1MTnmhjDqyQ==} + + typescript-eslint@8.6.0: + resolution: {integrity: sha512-eEhhlxCEpCd4helh3AO1hk0UP2MvbRi9CtIAJTVPQjuSXOOO2jsEacNi4UdcJzZJbeuVg1gMhtZ8UYb+NFYPrA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + typescript@5.6.2: + resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==} + engines: {node: '>=14.17'} + hasBin: true + + unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + + unist-util-filter@5.0.1: + resolution: {integrity: sha512-pHx7D4Zt6+TsfwylH9+lYhBhzyhEnCXs/lbq/Hstxno5z4gVdyc2WEW0asfjGKPyG4pEKrnBv5hdkO6+aRnQJw==} + + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + + update-browserslist-db@1.1.0: + resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + use-callback-ref@1.3.2: + resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.1 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-debounce@10.0.3: + resolution: {integrity: sha512-DxQSI9ZKso689WM1mjgGU3ozcxU1TJElBJ3X6S4SMzMNcm2lVH0AHmyXB+K7ewjz2BSUKJTDqTcwtSMRfB89dg==} + engines: {node: '>= 16.0.0'} + peerDependencies: + react: '*' + + use-sidecar@1.1.2: + resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': npm:types-react@19.0.0-rc.1 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vaul@1.1.0: + resolution: {integrity: sha512-YhO/bikcauk48hzhMhvIvT+U87cuCbNbKk9fF4Ou5UkI9t2KkBMernmdP37pCzF15hrv55fcny1YhexK8h6GVQ==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + + vfile-location@5.0.3: + resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} + + vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + + watchpack@2.4.2: + resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} + engines: {node: '>=10.13.0'} + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + web-namespaces@2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + + webpack@5.94.0: + resolution: {integrity: sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + + which-builtin-type@1.1.4: + resolution: {integrity: sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrap-ansi@9.0.0: + resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + engines: {node: '>=18'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yaml@2.5.1: + resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==} + engines: {node: '>= 14'} + hasBin: true + + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.1.1: + resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} + engines: {node: '>=12.20'} + + zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@alloc/quick-lru@5.2.0': {} + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@auth/core@0.35.3': + dependencies: + '@panva/hkdf': 1.2.1 + '@types/cookie': 0.6.0 + cookie: 0.6.0 + jose: 5.9.3 + oauth4webapi: 2.17.0 + preact: 10.11.3 + preact-render-to-string: 5.2.3(preact@10.11.3) + + '@auth/prisma-adapter@2.5.3(@prisma/client@5.16.1(prisma@5.16.1))': + dependencies: + '@auth/core': 0.35.3 + '@prisma/client': 5.16.1(prisma@5.16.1) + transitivePeerDependencies: + - '@simplewebauthn/browser' + - '@simplewebauthn/server' + - nodemailer + + '@aws-crypto/crc32@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.662.0 + tslib: 2.7.0 + + '@aws-crypto/crc32c@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.662.0 + tslib: 2.7.0 + + '@aws-crypto/sha1-browser@5.2.0': + dependencies: + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.662.0 + '@aws-sdk/util-locate-window': 3.568.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.7.0 + + '@aws-crypto/sha256-browser@5.2.0': + dependencies: + '@aws-crypto/sha256-js': 5.2.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.662.0 + '@aws-sdk/util-locate-window': 3.568.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.7.0 + + '@aws-crypto/sha256-js@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.662.0 + tslib: 2.7.0 + + '@aws-crypto/supports-web-crypto@5.2.0': + dependencies: + tslib: 2.7.0 + + '@aws-crypto/util@5.2.0': + dependencies: + '@aws-sdk/types': 3.662.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.7.0 + + '@aws-sdk/client-s3@3.663.0': + dependencies: + '@aws-crypto/sha1-browser': 5.2.0 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.662.0(@aws-sdk/client-sts@3.662.0) + '@aws-sdk/client-sts': 3.662.0 + '@aws-sdk/core': 3.662.0 + '@aws-sdk/credential-provider-node': 3.662.0(@aws-sdk/client-sso-oidc@3.662.0(@aws-sdk/client-sts@3.662.0))(@aws-sdk/client-sts@3.662.0) + '@aws-sdk/middleware-bucket-endpoint': 3.662.0 + '@aws-sdk/middleware-expect-continue': 3.662.0 + '@aws-sdk/middleware-flexible-checksums': 3.662.0 + '@aws-sdk/middleware-host-header': 3.662.0 + '@aws-sdk/middleware-location-constraint': 3.662.0 + '@aws-sdk/middleware-logger': 3.662.0 + '@aws-sdk/middleware-recursion-detection': 3.662.0 + '@aws-sdk/middleware-sdk-s3': 3.662.0 + '@aws-sdk/middleware-ssec': 3.662.0 + '@aws-sdk/middleware-user-agent': 3.662.0 + '@aws-sdk/region-config-resolver': 3.662.0 + '@aws-sdk/signature-v4-multi-region': 3.662.0 + '@aws-sdk/types': 3.662.0 + '@aws-sdk/util-endpoints': 3.662.0 + '@aws-sdk/util-user-agent-browser': 3.662.0 + '@aws-sdk/util-user-agent-node': 3.662.0 + '@aws-sdk/xml-builder': 3.662.0 + '@smithy/config-resolver': 3.0.9 + '@smithy/core': 2.4.7 + '@smithy/eventstream-serde-browser': 3.0.10 + '@smithy/eventstream-serde-config-resolver': 3.0.7 + '@smithy/eventstream-serde-node': 3.0.9 + '@smithy/fetch-http-handler': 3.2.9 + '@smithy/hash-blob-browser': 3.1.6 + '@smithy/hash-node': 3.0.7 + '@smithy/hash-stream-node': 3.1.6 + '@smithy/invalid-dependency': 3.0.7 + '@smithy/md5-js': 3.0.7 + '@smithy/middleware-content-length': 3.0.9 + '@smithy/middleware-endpoint': 3.1.4 + '@smithy/middleware-retry': 3.0.22 + '@smithy/middleware-serde': 3.0.7 + '@smithy/middleware-stack': 3.0.7 + '@smithy/node-config-provider': 3.1.8 + '@smithy/node-http-handler': 3.2.4 + '@smithy/protocol-http': 4.1.4 + '@smithy/smithy-client': 3.3.6 + '@smithy/types': 3.5.0 + '@smithy/url-parser': 3.0.7 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.22 + '@smithy/util-defaults-mode-node': 3.0.22 + '@smithy/util-endpoints': 2.1.3 + '@smithy/util-middleware': 3.0.7 + '@smithy/util-retry': 3.0.7 + '@smithy/util-stream': 3.1.9 + '@smithy/util-utf8': 3.0.0 + '@smithy/util-waiter': 3.1.6 + tslib: 2.7.0 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sso-oidc@3.662.0(@aws-sdk/client-sts@3.662.0)': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sts': 3.662.0 + '@aws-sdk/core': 3.662.0 + '@aws-sdk/credential-provider-node': 3.662.0(@aws-sdk/client-sso-oidc@3.662.0(@aws-sdk/client-sts@3.662.0))(@aws-sdk/client-sts@3.662.0) + '@aws-sdk/middleware-host-header': 3.662.0 + '@aws-sdk/middleware-logger': 3.662.0 + '@aws-sdk/middleware-recursion-detection': 3.662.0 + '@aws-sdk/middleware-user-agent': 3.662.0 + '@aws-sdk/region-config-resolver': 3.662.0 + '@aws-sdk/types': 3.662.0 + '@aws-sdk/util-endpoints': 3.662.0 + '@aws-sdk/util-user-agent-browser': 3.662.0 + '@aws-sdk/util-user-agent-node': 3.662.0 + '@smithy/config-resolver': 3.0.9 + '@smithy/core': 2.4.7 + '@smithy/fetch-http-handler': 3.2.9 + '@smithy/hash-node': 3.0.7 + '@smithy/invalid-dependency': 3.0.7 + '@smithy/middleware-content-length': 3.0.9 + '@smithy/middleware-endpoint': 3.1.4 + '@smithy/middleware-retry': 3.0.22 + '@smithy/middleware-serde': 3.0.7 + '@smithy/middleware-stack': 3.0.7 + '@smithy/node-config-provider': 3.1.8 + '@smithy/node-http-handler': 3.2.4 + '@smithy/protocol-http': 4.1.4 + '@smithy/smithy-client': 3.3.6 + '@smithy/types': 3.5.0 + '@smithy/url-parser': 3.0.7 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.22 + '@smithy/util-defaults-mode-node': 3.0.22 + '@smithy/util-endpoints': 2.1.3 + '@smithy/util-middleware': 3.0.7 + '@smithy/util-retry': 3.0.7 + '@smithy/util-utf8': 3.0.0 + tslib: 2.7.0 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sso@3.662.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.662.0 + '@aws-sdk/middleware-host-header': 3.662.0 + '@aws-sdk/middleware-logger': 3.662.0 + '@aws-sdk/middleware-recursion-detection': 3.662.0 + '@aws-sdk/middleware-user-agent': 3.662.0 + '@aws-sdk/region-config-resolver': 3.662.0 + '@aws-sdk/types': 3.662.0 + '@aws-sdk/util-endpoints': 3.662.0 + '@aws-sdk/util-user-agent-browser': 3.662.0 + '@aws-sdk/util-user-agent-node': 3.662.0 + '@smithy/config-resolver': 3.0.9 + '@smithy/core': 2.4.7 + '@smithy/fetch-http-handler': 3.2.9 + '@smithy/hash-node': 3.0.7 + '@smithy/invalid-dependency': 3.0.7 + '@smithy/middleware-content-length': 3.0.9 + '@smithy/middleware-endpoint': 3.1.4 + '@smithy/middleware-retry': 3.0.22 + '@smithy/middleware-serde': 3.0.7 + '@smithy/middleware-stack': 3.0.7 + '@smithy/node-config-provider': 3.1.8 + '@smithy/node-http-handler': 3.2.4 + '@smithy/protocol-http': 4.1.4 + '@smithy/smithy-client': 3.3.6 + '@smithy/types': 3.5.0 + '@smithy/url-parser': 3.0.7 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.22 + '@smithy/util-defaults-mode-node': 3.0.22 + '@smithy/util-endpoints': 2.1.3 + '@smithy/util-middleware': 3.0.7 + '@smithy/util-retry': 3.0.7 + '@smithy/util-utf8': 3.0.0 + tslib: 2.7.0 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sts@3.662.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.662.0(@aws-sdk/client-sts@3.662.0) + '@aws-sdk/core': 3.662.0 + '@aws-sdk/credential-provider-node': 3.662.0(@aws-sdk/client-sso-oidc@3.662.0(@aws-sdk/client-sts@3.662.0))(@aws-sdk/client-sts@3.662.0) + '@aws-sdk/middleware-host-header': 3.662.0 + '@aws-sdk/middleware-logger': 3.662.0 + '@aws-sdk/middleware-recursion-detection': 3.662.0 + '@aws-sdk/middleware-user-agent': 3.662.0 + '@aws-sdk/region-config-resolver': 3.662.0 + '@aws-sdk/types': 3.662.0 + '@aws-sdk/util-endpoints': 3.662.0 + '@aws-sdk/util-user-agent-browser': 3.662.0 + '@aws-sdk/util-user-agent-node': 3.662.0 + '@smithy/config-resolver': 3.0.9 + '@smithy/core': 2.4.7 + '@smithy/fetch-http-handler': 3.2.9 + '@smithy/hash-node': 3.0.7 + '@smithy/invalid-dependency': 3.0.7 + '@smithy/middleware-content-length': 3.0.9 + '@smithy/middleware-endpoint': 3.1.4 + '@smithy/middleware-retry': 3.0.22 + '@smithy/middleware-serde': 3.0.7 + '@smithy/middleware-stack': 3.0.7 + '@smithy/node-config-provider': 3.1.8 + '@smithy/node-http-handler': 3.2.4 + '@smithy/protocol-http': 4.1.4 + '@smithy/smithy-client': 3.3.6 + '@smithy/types': 3.5.0 + '@smithy/url-parser': 3.0.7 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.22 + '@smithy/util-defaults-mode-node': 3.0.22 + '@smithy/util-endpoints': 2.1.3 + '@smithy/util-middleware': 3.0.7 + '@smithy/util-retry': 3.0.7 + '@smithy/util-utf8': 3.0.0 + tslib: 2.7.0 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/core@3.662.0': + dependencies: + '@smithy/core': 2.4.7 + '@smithy/node-config-provider': 3.1.8 + '@smithy/property-provider': 3.1.7 + '@smithy/protocol-http': 4.1.4 + '@smithy/signature-v4': 4.2.0 + '@smithy/smithy-client': 3.3.6 + '@smithy/types': 3.5.0 + '@smithy/util-middleware': 3.0.7 + fast-xml-parser: 4.4.1 + tslib: 2.7.0 + + '@aws-sdk/credential-provider-env@3.662.0': + dependencies: + '@aws-sdk/types': 3.662.0 + '@smithy/property-provider': 3.1.7 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + + '@aws-sdk/credential-provider-http@3.662.0': + dependencies: + '@aws-sdk/types': 3.662.0 + '@smithy/fetch-http-handler': 3.2.9 + '@smithy/node-http-handler': 3.2.4 + '@smithy/property-provider': 3.1.7 + '@smithy/protocol-http': 4.1.4 + '@smithy/smithy-client': 3.3.6 + '@smithy/types': 3.5.0 + '@smithy/util-stream': 3.1.9 + tslib: 2.7.0 + + '@aws-sdk/credential-provider-ini@3.662.0(@aws-sdk/client-sso-oidc@3.662.0(@aws-sdk/client-sts@3.662.0))(@aws-sdk/client-sts@3.662.0)': + dependencies: + '@aws-sdk/client-sts': 3.662.0 + '@aws-sdk/credential-provider-env': 3.662.0 + '@aws-sdk/credential-provider-http': 3.662.0 + '@aws-sdk/credential-provider-process': 3.662.0 + '@aws-sdk/credential-provider-sso': 3.662.0(@aws-sdk/client-sso-oidc@3.662.0(@aws-sdk/client-sts@3.662.0)) + '@aws-sdk/credential-provider-web-identity': 3.662.0(@aws-sdk/client-sts@3.662.0) + '@aws-sdk/types': 3.662.0 + '@smithy/credential-provider-imds': 3.2.4 + '@smithy/property-provider': 3.1.7 + '@smithy/shared-ini-file-loader': 3.1.8 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + + '@aws-sdk/credential-provider-node@3.662.0(@aws-sdk/client-sso-oidc@3.662.0(@aws-sdk/client-sts@3.662.0))(@aws-sdk/client-sts@3.662.0)': + dependencies: + '@aws-sdk/credential-provider-env': 3.662.0 + '@aws-sdk/credential-provider-http': 3.662.0 + '@aws-sdk/credential-provider-ini': 3.662.0(@aws-sdk/client-sso-oidc@3.662.0(@aws-sdk/client-sts@3.662.0))(@aws-sdk/client-sts@3.662.0) + '@aws-sdk/credential-provider-process': 3.662.0 + '@aws-sdk/credential-provider-sso': 3.662.0(@aws-sdk/client-sso-oidc@3.662.0(@aws-sdk/client-sts@3.662.0)) + '@aws-sdk/credential-provider-web-identity': 3.662.0(@aws-sdk/client-sts@3.662.0) + '@aws-sdk/types': 3.662.0 + '@smithy/credential-provider-imds': 3.2.4 + '@smithy/property-provider': 3.1.7 + '@smithy/shared-ini-file-loader': 3.1.8 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - '@aws-sdk/client-sts' + - aws-crt + + '@aws-sdk/credential-provider-process@3.662.0': + dependencies: + '@aws-sdk/types': 3.662.0 + '@smithy/property-provider': 3.1.7 + '@smithy/shared-ini-file-loader': 3.1.8 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + + '@aws-sdk/credential-provider-sso@3.662.0(@aws-sdk/client-sso-oidc@3.662.0(@aws-sdk/client-sts@3.662.0))': + dependencies: + '@aws-sdk/client-sso': 3.662.0 + '@aws-sdk/token-providers': 3.662.0(@aws-sdk/client-sso-oidc@3.662.0(@aws-sdk/client-sts@3.662.0)) + '@aws-sdk/types': 3.662.0 + '@smithy/property-provider': 3.1.7 + '@smithy/shared-ini-file-loader': 3.1.8 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + + '@aws-sdk/credential-provider-web-identity@3.662.0(@aws-sdk/client-sts@3.662.0)': + dependencies: + '@aws-sdk/client-sts': 3.662.0 + '@aws-sdk/types': 3.662.0 + '@smithy/property-provider': 3.1.7 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + + '@aws-sdk/middleware-bucket-endpoint@3.662.0': + dependencies: + '@aws-sdk/types': 3.662.0 + '@aws-sdk/util-arn-parser': 3.568.0 + '@smithy/node-config-provider': 3.1.8 + '@smithy/protocol-http': 4.1.4 + '@smithy/types': 3.5.0 + '@smithy/util-config-provider': 3.0.0 + tslib: 2.7.0 + + '@aws-sdk/middleware-expect-continue@3.662.0': + dependencies: + '@aws-sdk/types': 3.662.0 + '@smithy/protocol-http': 4.1.4 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + + '@aws-sdk/middleware-flexible-checksums@3.662.0': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@aws-crypto/crc32c': 5.2.0 + '@aws-sdk/types': 3.662.0 + '@smithy/is-array-buffer': 3.0.0 + '@smithy/node-config-provider': 3.1.8 + '@smithy/protocol-http': 4.1.4 + '@smithy/types': 3.5.0 + '@smithy/util-middleware': 3.0.7 + '@smithy/util-utf8': 3.0.0 + tslib: 2.7.0 + + '@aws-sdk/middleware-host-header@3.662.0': + dependencies: + '@aws-sdk/types': 3.662.0 + '@smithy/protocol-http': 4.1.4 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + + '@aws-sdk/middleware-location-constraint@3.662.0': + dependencies: + '@aws-sdk/types': 3.662.0 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + + '@aws-sdk/middleware-logger@3.662.0': + dependencies: + '@aws-sdk/types': 3.662.0 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + + '@aws-sdk/middleware-recursion-detection@3.662.0': + dependencies: + '@aws-sdk/types': 3.662.0 + '@smithy/protocol-http': 4.1.4 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + + '@aws-sdk/middleware-sdk-s3@3.662.0': + dependencies: + '@aws-sdk/core': 3.662.0 + '@aws-sdk/types': 3.662.0 + '@aws-sdk/util-arn-parser': 3.568.0 + '@smithy/core': 2.4.7 + '@smithy/node-config-provider': 3.1.8 + '@smithy/protocol-http': 4.1.4 + '@smithy/signature-v4': 4.2.0 + '@smithy/smithy-client': 3.3.6 + '@smithy/types': 3.5.0 + '@smithy/util-config-provider': 3.0.0 + '@smithy/util-middleware': 3.0.7 + '@smithy/util-stream': 3.1.9 + '@smithy/util-utf8': 3.0.0 + tslib: 2.7.0 + + '@aws-sdk/middleware-ssec@3.662.0': + dependencies: + '@aws-sdk/types': 3.662.0 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + + '@aws-sdk/middleware-user-agent@3.662.0': + dependencies: + '@aws-sdk/types': 3.662.0 + '@aws-sdk/util-endpoints': 3.662.0 + '@smithy/protocol-http': 4.1.4 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + + '@aws-sdk/region-config-resolver@3.662.0': + dependencies: + '@aws-sdk/types': 3.662.0 + '@smithy/node-config-provider': 3.1.8 + '@smithy/types': 3.5.0 + '@smithy/util-config-provider': 3.0.0 + '@smithy/util-middleware': 3.0.7 + tslib: 2.7.0 + + '@aws-sdk/signature-v4-multi-region@3.662.0': + dependencies: + '@aws-sdk/middleware-sdk-s3': 3.662.0 + '@aws-sdk/types': 3.662.0 + '@smithy/protocol-http': 4.1.4 + '@smithy/signature-v4': 4.2.0 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + + '@aws-sdk/token-providers@3.662.0(@aws-sdk/client-sso-oidc@3.662.0(@aws-sdk/client-sts@3.662.0))': + dependencies: + '@aws-sdk/client-sso-oidc': 3.662.0(@aws-sdk/client-sts@3.662.0) + '@aws-sdk/types': 3.662.0 + '@smithy/property-provider': 3.1.7 + '@smithy/shared-ini-file-loader': 3.1.8 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + + '@aws-sdk/types@3.662.0': + dependencies: + '@smithy/types': 3.5.0 + tslib: 2.7.0 + + '@aws-sdk/util-arn-parser@3.568.0': + dependencies: + tslib: 2.7.0 + + '@aws-sdk/util-endpoints@3.662.0': + dependencies: + '@aws-sdk/types': 3.662.0 + '@smithy/types': 3.5.0 + '@smithy/util-endpoints': 2.1.3 + tslib: 2.7.0 + + '@aws-sdk/util-locate-window@3.568.0': + dependencies: + tslib: 2.7.0 + + '@aws-sdk/util-user-agent-browser@3.662.0': + dependencies: + '@aws-sdk/types': 3.662.0 + '@smithy/types': 3.5.0 + bowser: 2.11.0 + tslib: 2.7.0 + + '@aws-sdk/util-user-agent-node@3.662.0': + dependencies: + '@aws-sdk/types': 3.662.0 + '@smithy/node-config-provider': 3.1.8 + '@smithy/types': 3.5.0 + tslib: 2.7.0 + + '@aws-sdk/xml-builder@3.662.0': + dependencies: + '@smithy/types': 3.5.0 + tslib: 2.7.0 + + '@babel/code-frame@7.24.7': + dependencies: + '@babel/highlight': 7.24.7 + picocolors: 1.1.0 + + '@babel/compat-data@7.25.4': {} + + '@babel/core@7.24.5': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.6 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.24.5) + '@babel/helpers': 7.25.6 + '@babel/parser': 7.25.6 + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 + convert-source-map: 2.0.0 + debug: 4.3.7 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/core@7.25.2': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.6 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helpers': 7.25.6 + '@babel/parser': 7.25.6 + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 + convert-source-map: 2.0.0 + debug: 4.3.7 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.25.6': + dependencies: + '@babel/types': 7.25.6 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + + '@babel/helper-compilation-targets@7.25.2': + dependencies: + '@babel/compat-data': 7.25.4 + '@babel/helper-validator-option': 7.24.8 + browserslist: 4.23.3 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-module-imports@7.24.7': + dependencies: + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.25.2(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.6 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.6 + transitivePeerDependencies: + - supports-color + + '@babel/helper-simple-access@7.24.7': + dependencies: + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.24.8': {} + + '@babel/helper-validator-identifier@7.24.7': {} + + '@babel/helper-validator-option@7.24.8': {} + + '@babel/helpers@7.25.6': + dependencies: + '@babel/template': 7.25.0 + '@babel/types': 7.25.6 + + '@babel/highlight@7.24.7': + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.1.0 + + '@babel/parser@7.24.5': + dependencies: + '@babel/types': 7.25.6 + + '@babel/parser@7.25.6': + dependencies: + '@babel/types': 7.25.6 + + '@babel/runtime@7.25.6': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/template@7.25.0': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 + + '@babel/traverse@7.25.6': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.6 + '@babel/parser': 7.25.6 + '@babel/template': 7.25.0 + '@babel/types': 7.25.6 + debug: 4.3.7 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.25.6': + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + + '@emnapi/runtime@1.3.1': + dependencies: + tslib: 2.7.0 + optional: true + + '@esbuild/aix-ppc64@0.19.11': + optional: true + + '@esbuild/android-arm64@0.19.11': + optional: true + + '@esbuild/android-arm@0.19.11': + optional: true + + '@esbuild/android-x64@0.19.11': + optional: true + + '@esbuild/darwin-arm64@0.19.11': + optional: true + + '@esbuild/darwin-x64@0.19.11': + optional: true + + '@esbuild/freebsd-arm64@0.19.11': + optional: true + + '@esbuild/freebsd-x64@0.19.11': + optional: true + + '@esbuild/linux-arm64@0.19.11': + optional: true + + '@esbuild/linux-arm@0.19.11': + optional: true + + '@esbuild/linux-ia32@0.19.11': + optional: true + + '@esbuild/linux-loong64@0.19.11': + optional: true + + '@esbuild/linux-mips64el@0.19.11': + optional: true + + '@esbuild/linux-ppc64@0.19.11': + optional: true + + '@esbuild/linux-riscv64@0.19.11': + optional: true + + '@esbuild/linux-s390x@0.19.11': + optional: true + + '@esbuild/linux-x64@0.19.11': + optional: true + + '@esbuild/netbsd-x64@0.19.11': + optional: true + + '@esbuild/openbsd-x64@0.19.11': + optional: true + + '@esbuild/sunos-x64@0.19.11': + optional: true + + '@esbuild/win32-arm64@0.19.11': + optional: true + + '@esbuild/win32-ia32@0.19.11': + optional: true + + '@esbuild/win32-x64@0.19.11': + optional: true + + '@eslint-community/eslint-utils@4.4.0(eslint@9.9.1(jiti@1.21.6))': + dependencies: + eslint: 9.9.1(jiti@1.21.6) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.11.1': {} + + '@eslint/compat@1.1.1': {} + + '@eslint/config-array@0.18.0': + dependencies: + '@eslint/object-schema': 2.1.4 + debug: 4.3.7 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/eslintrc@3.1.0': + dependencies: + ajv: 6.12.6 + debug: 4.3.7 + espree: 10.1.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.11.0': {} + + '@eslint/js@9.9.1': {} + + '@eslint/object-schema@2.1.4': {} + + '@floating-ui/core@1.6.8': + dependencies: + '@floating-ui/utils': 0.2.8 + + '@floating-ui/dom@1.6.11': + dependencies: + '@floating-ui/core': 1.6.8 + '@floating-ui/utils': 0.2.8 + + '@floating-ui/react-dom@2.1.2(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)': + dependencies: + '@floating-ui/dom': 1.6.11 + react: 19.0.0-rc-69d4b800-20241021 + react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021) + + '@floating-ui/utils@0.2.8': {} + + '@hookform/resolvers@3.9.0(react-hook-form@7.53.0(react@19.0.0-rc-69d4b800-20241021))': + dependencies: + react-hook-form: 7.53.0(react@19.0.0-rc-69d4b800-20241021) + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.0': {} + + '@img/sharp-darwin-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.0.4 + optional: true + + '@img/sharp-darwin-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.0.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.0.5': + optional: true + + '@img/sharp-libvips-linux-s390x@1.0.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + optional: true + + '@img/sharp-linux-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.0.4 + optional: true + + '@img/sharp-linux-arm@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.0.5 + optional: true + + '@img/sharp-linux-s390x@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.0.4 + optional: true + + '@img/sharp-linux-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + optional: true + + '@img/sharp-wasm32@0.33.5': + dependencies: + '@emnapi/runtime': 1.3.1 + optional: true + + '@img/sharp-win32-ia32@0.33.5': + optional: true + + '@img/sharp-win32-x64@0.33.5': + optional: true + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/source-map@0.3.6': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@next/env@14.2.3': {} + + '@next/env@15.0.1': {} + + '@next/eslint-plugin-next@15.0.1': + dependencies: + fast-glob: 3.3.1 + + '@next/swc-darwin-arm64@14.2.3': + optional: true + + '@next/swc-darwin-arm64@15.0.1': + optional: true + + '@next/swc-darwin-x64@14.2.3': + optional: true + + '@next/swc-darwin-x64@15.0.1': + optional: true + + '@next/swc-linux-arm64-gnu@14.2.3': + optional: true + + '@next/swc-linux-arm64-gnu@15.0.1': + optional: true + + '@next/swc-linux-arm64-musl@14.2.3': + optional: true + + '@next/swc-linux-arm64-musl@15.0.1': + optional: true + + '@next/swc-linux-x64-gnu@14.2.3': + optional: true + + '@next/swc-linux-x64-gnu@15.0.1': + optional: true + + '@next/swc-linux-x64-musl@14.2.3': + optional: true + + '@next/swc-linux-x64-musl@15.0.1': + optional: true + + '@next/swc-win32-arm64-msvc@14.2.3': + optional: true + + '@next/swc-win32-arm64-msvc@15.0.1': + optional: true + + '@next/swc-win32-ia32-msvc@14.2.3': + optional: true + + '@next/swc-win32-x64-msvc@14.2.3': + optional: true + + '@next/swc-win32-x64-msvc@15.0.1': + optional: true + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + '@nolyfill/is-core-module@1.0.39': {} + + '@one-ini/wasm@0.1.1': {} + + '@panva/hkdf@1.2.1': {} + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@pkgr/core@0.1.1': {} + + '@playwright/test@1.47.2': + dependencies: + playwright: 1.47.2 + + '@prisma/client@5.16.1(prisma@5.16.1)': + optionalDependencies: + prisma: 5.16.1 + + '@prisma/debug@5.16.1': {} + + '@prisma/engines-version@5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303': {} + + '@prisma/engines@5.16.1': + dependencies: + '@prisma/debug': 5.16.1 + '@prisma/engines-version': 5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303 + '@prisma/fetch-engine': 5.16.1 + '@prisma/get-platform': 5.16.1 + + '@prisma/fetch-engine@5.16.1': + dependencies: + '@prisma/debug': 5.16.1 + '@prisma/engines-version': 5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303 + '@prisma/get-platform': 5.16.1 + + '@prisma/get-platform@5.16.1': + dependencies: + '@prisma/debug': 5.16.1 + + '@radix-ui/colors@3.0.0': {} + + '@radix-ui/number@1.1.0': {} + + '@radix-ui/primitive@1.1.0': {} + + '@radix-ui/react-alert-dialog@1.1.1(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-context': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-dialog': 1.1.1(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-slot': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-69d4b800-20241021 + react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021) + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 + + '@radix-ui/react-arrow@1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-69d4b800-20241021 + react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021) + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 + + '@radix-ui/react-avatar@1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': + dependencies: + '@radix-ui/react-context': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-callback-ref': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-69d4b800-20241021 + react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021) + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 + + '@radix-ui/react-collection@1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-context': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-slot': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-69d4b800-20241021 + react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021) + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 + + '@radix-ui/react-compose-refs@1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': + dependencies: + react: 19.0.0-rc-69d4b800-20241021 + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 + + '@radix-ui/react-context@1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': + dependencies: + react: 19.0.0-rc-69d4b800-20241021 + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 + + '@radix-ui/react-dialog@1.1.1(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-context': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-dismissable-layer': 1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-focus-guards': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-focus-scope': 1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-id': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-portal': 1.1.1(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-presence': 1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-slot': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-controllable-state': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + aria-hidden: 1.2.4 + react: 19.0.0-rc-69d4b800-20241021 + react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021) + react-remove-scroll: 2.5.7(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 + + '@radix-ui/react-direction@1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': + dependencies: + react: 19.0.0-rc-69d4b800-20241021 + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 + + '@radix-ui/react-dismissable-layer@1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-callback-ref': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-escape-keydown': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-69d4b800-20241021 + react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021) + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 + + '@radix-ui/react-dropdown-menu@2.1.1(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-context': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-id': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-menu': 2.1.1(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-controllable-state': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-69d4b800-20241021 + react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021) + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 + + '@radix-ui/react-focus-guards@1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': + dependencies: + react: 19.0.0-rc-69d4b800-20241021 + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 + + '@radix-ui/react-focus-scope@1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-callback-ref': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-69d4b800-20241021 + react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021) + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 + + '@radix-ui/react-id@1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-69d4b800-20241021 + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 + + '@radix-ui/react-label@2.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-69d4b800-20241021 + react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021) + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 + + '@radix-ui/react-menu@2.1.1(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-context': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-direction': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-dismissable-layer': 1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-focus-guards': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-focus-scope': 1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-id': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-popper': 1.2.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-portal': 1.1.1(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-presence': 1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-roving-focus': 1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-slot': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-callback-ref': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + aria-hidden: 1.2.4 + react: 19.0.0-rc-69d4b800-20241021 + react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021) + react-remove-scroll: 2.5.7(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 + + '@radix-ui/react-popover@1.1.1(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-context': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-dismissable-layer': 1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-focus-guards': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-focus-scope': 1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-id': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-popper': 1.2.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-portal': 1.1.1(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-presence': 1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-slot': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-controllable-state': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + aria-hidden: 1.2.4 + react: 19.0.0-rc-69d4b800-20241021 + react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021) + react-remove-scroll: 2.5.7(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 + + '@radix-ui/react-popper@1.2.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': + dependencies: + '@floating-ui/react-dom': 2.1.2(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021) + '@radix-ui/react-arrow': 1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-context': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-callback-ref': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-rect': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-size': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/rect': 1.1.0 + react: 19.0.0-rc-69d4b800-20241021 + react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021) + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 + + '@radix-ui/react-portal@1.1.1(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-69d4b800-20241021 + react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021) + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 + + '@radix-ui/react-presence@1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-69d4b800-20241021 + react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021) + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 + + '@radix-ui/react-primitive@2.0.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': + dependencies: + '@radix-ui/react-slot': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-69d4b800-20241021 + react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021) + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 + + '@radix-ui/react-roving-focus@1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-context': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-direction': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-id': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-callback-ref': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-controllable-state': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-69d4b800-20241021 + react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021) + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 + + '@radix-ui/react-select@2.1.1(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': + dependencies: + '@radix-ui/number': 1.1.0 + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-context': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-direction': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-dismissable-layer': 1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-focus-guards': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-focus-scope': 1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-id': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-popper': 1.2.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-portal': 1.1.1(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-slot': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-callback-ref': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-controllable-state': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-previous': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-visually-hidden': 1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + aria-hidden: 1.2.4 + react: 19.0.0-rc-69d4b800-20241021 + react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021) + react-remove-scroll: 2.5.7(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 + + '@radix-ui/react-slot@1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-69d4b800-20241021 + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 + + '@radix-ui/react-tabs@1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-context': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-direction': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-id': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-presence': 1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-roving-focus': 1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-controllable-state': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-69d4b800-20241021 + react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021) + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 + + '@radix-ui/react-tooltip@1.1.2(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-context': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-dismissable-layer': 1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-id': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-popper': 1.2.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-portal': 1.1.1(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-presence': 1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-slot': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-controllable-state': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + '@radix-ui/react-visually-hidden': 1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-69d4b800-20241021 + react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021) + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 + + '@radix-ui/react-use-callback-ref@1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': dependencies: - '@types/react': 18.3.8 - react: 18.2.0 - dev: false + react: 19.0.0-rc-69d4b800-20241021 + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 - /@radix-ui/react-use-rect@1.1.0(@types/react@18.3.8)(react@18.2.0): - resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-controllable-state@1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': dependencies: - '@radix-ui/rect': 1.1.0 - '@types/react': 18.3.8 - react: 18.2.0 - dev: false + '@radix-ui/react-use-callback-ref': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-69d4b800-20241021 + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 - /@radix-ui/react-use-size@1.1.0(@types/react@18.3.8)(react@18.2.0): - resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-escape-keydown@1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.8)(react@18.2.0) - '@types/react': 18.3.8 - react: 18.2.0 - dev: false + '@radix-ui/react-use-callback-ref': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-69d4b800-20241021 + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 - /@radix-ui/react-visually-hidden@1.1.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + '@radix-ui/react-use-layout-effect@1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.3.8 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false + react: 19.0.0-rc-69d4b800-20241021 + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 - /@radix-ui/rect@1.1.0: - resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} - dev: false + '@radix-ui/react-use-previous@1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': + dependencies: + react: 19.0.0-rc-69d4b800-20241021 + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 - /@react-email/body@0.0.10(react@18.2.0): - resolution: {integrity: sha512-dMJyL9aU25ieatdPtVjCyQ/WHZYHwNc+Hy/XpF8Cc18gu21cUynVEeYQzFSeigDRMeBQ3PGAyjVDPIob7YlGwA==} - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc + '@radix-ui/react-use-rect@1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': dependencies: - react: 18.2.0 - dev: false + '@radix-ui/rect': 1.1.0 + react: 19.0.0-rc-69d4b800-20241021 + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 - /@react-email/button@0.0.17(react@18.2.0): - resolution: {integrity: sha512-ioHdsk+BpGS/PqjU6JS7tUrVy9yvbUx92Z+Cem2+MbYp55oEwQ9VHf7u4f5NoM0gdhfKSehBwRdYlHt/frEMcg==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc + '@radix-ui/react-use-size@1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': dependencies: - react: 18.2.0 - dev: false + '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-69d4b800-20241021 + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 - /@react-email/code-block@0.0.9(react@18.2.0): - resolution: {integrity: sha512-Zrhc71VYrSC1fVXJuaViKoB/dBjxLw6nbE53Bm/eUuZPdnnZ1+ZUIh8jfaRKC5MzMjgnLGQTweGXVnfIrhyxtQ==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc + '@radix-ui/react-visually-hidden@1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': dependencies: - prismjs: 1.29.0 - react: 18.2.0 - dev: false + '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-69d4b800-20241021 + react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021) + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 - /@react-email/code-inline@0.0.4(react@18.2.0): - resolution: {integrity: sha512-zj3oMQiiUCZbddSNt3k0zNfIBFK0ZNDIzzDyBaJKy6ZASTtWfB+1WFX0cpTX8q0gUiYK+A94rk5Qp68L6YXjXQ==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc + '@radix-ui/rect@1.1.0': {} + + '@react-email/body@0.0.10(react@19.0.0-rc-69d4b800-20241021)': dependencies: - react: 18.2.0 - dev: false + react: 19.0.0-rc-69d4b800-20241021 - /@react-email/column@0.0.12(react@18.2.0): - resolution: {integrity: sha512-Rsl7iSdDaeHZO938xb+0wR5ud0Z3MVfdtPbNKJNojZi2hApwLAQXmDrnn/AcPDM5Lpl331ZljJS8vHTWxxkvKw==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc + '@react-email/button@0.0.17(react@19.0.0-rc-69d4b800-20241021)': dependencies: - react: 18.2.0 - dev: false + react: 19.0.0-rc-69d4b800-20241021 - /@react-email/components@0.0.25(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-lnfVVrThEcET5NPoeaXvrz9UxtWpGRcut2a07dLbyKgNbP7vj/cXTI5TuHtanCvhCddFpMDnElNRghDOfPzwUg==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc + '@react-email/code-block@0.0.9(react@19.0.0-rc-69d4b800-20241021)': dependencies: - '@react-email/body': 0.0.10(react@18.2.0) - '@react-email/button': 0.0.17(react@18.2.0) - '@react-email/code-block': 0.0.9(react@18.2.0) - '@react-email/code-inline': 0.0.4(react@18.2.0) - '@react-email/column': 0.0.12(react@18.2.0) - '@react-email/container': 0.0.14(react@18.2.0) - '@react-email/font': 0.0.8(react@18.2.0) - '@react-email/head': 0.0.11(react@18.2.0) - '@react-email/heading': 0.0.14(react@18.2.0) - '@react-email/hr': 0.0.10(react@18.2.0) - '@react-email/html': 0.0.10(react@18.2.0) - '@react-email/img': 0.0.10(react@18.2.0) - '@react-email/link': 0.0.10(react@18.2.0) - '@react-email/markdown': 0.0.12(react@18.2.0) - '@react-email/preview': 0.0.11(react@18.2.0) - '@react-email/render': 1.0.1(react-dom@18.2.0)(react@18.2.0) - '@react-email/row': 0.0.10(react@18.2.0) - '@react-email/section': 0.0.14(react@18.2.0) - '@react-email/tailwind': 0.1.0(react@18.2.0) - '@react-email/text': 0.0.10(react@18.2.0) - react: 18.2.0 + prismjs: 1.29.0 + react: 19.0.0-rc-69d4b800-20241021 + + '@react-email/code-inline@0.0.4(react@19.0.0-rc-69d4b800-20241021)': + dependencies: + react: 19.0.0-rc-69d4b800-20241021 + + '@react-email/column@0.0.12(react@19.0.0-rc-69d4b800-20241021)': + dependencies: + react: 19.0.0-rc-69d4b800-20241021 + + '@react-email/components@0.0.25(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)': + dependencies: + '@react-email/body': 0.0.10(react@19.0.0-rc-69d4b800-20241021) + '@react-email/button': 0.0.17(react@19.0.0-rc-69d4b800-20241021) + '@react-email/code-block': 0.0.9(react@19.0.0-rc-69d4b800-20241021) + '@react-email/code-inline': 0.0.4(react@19.0.0-rc-69d4b800-20241021) + '@react-email/column': 0.0.12(react@19.0.0-rc-69d4b800-20241021) + '@react-email/container': 0.0.14(react@19.0.0-rc-69d4b800-20241021) + '@react-email/font': 0.0.8(react@19.0.0-rc-69d4b800-20241021) + '@react-email/head': 0.0.11(react@19.0.0-rc-69d4b800-20241021) + '@react-email/heading': 0.0.14(react@19.0.0-rc-69d4b800-20241021) + '@react-email/hr': 0.0.10(react@19.0.0-rc-69d4b800-20241021) + '@react-email/html': 0.0.10(react@19.0.0-rc-69d4b800-20241021) + '@react-email/img': 0.0.10(react@19.0.0-rc-69d4b800-20241021) + '@react-email/link': 0.0.10(react@19.0.0-rc-69d4b800-20241021) + '@react-email/markdown': 0.0.12(react@19.0.0-rc-69d4b800-20241021) + '@react-email/preview': 0.0.11(react@19.0.0-rc-69d4b800-20241021) + '@react-email/render': 1.0.1(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021) + '@react-email/row': 0.0.10(react@19.0.0-rc-69d4b800-20241021) + '@react-email/section': 0.0.14(react@19.0.0-rc-69d4b800-20241021) + '@react-email/tailwind': 0.1.0(react@19.0.0-rc-69d4b800-20241021) + '@react-email/text': 0.0.10(react@19.0.0-rc-69d4b800-20241021) + react: 19.0.0-rc-69d4b800-20241021 transitivePeerDependencies: - react-dom - dev: false - /@react-email/container@0.0.14(react@18.2.0): - resolution: {integrity: sha512-NgoaJJd9tTtsrveL86Ocr/AYLkGyN3prdXKd/zm5fQpfDhy/NXezyT3iF6VlwAOEUIu64ErHpAJd+P6ygR+vjg==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc + '@react-email/container@0.0.14(react@19.0.0-rc-69d4b800-20241021)': dependencies: - react: 18.2.0 - dev: false + react: 19.0.0-rc-69d4b800-20241021 - /@react-email/font@0.0.8(react@18.2.0): - resolution: {integrity: sha512-fSBEqYyVPAyyACBBHcs3wEYzNknpHMuwcSAAKE8fOoDfGqURr/vSxKPdh4tOa9z7G4hlcEfgGrCYEa2iPT22cw==} - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc + '@react-email/font@0.0.8(react@19.0.0-rc-69d4b800-20241021)': dependencies: - react: 18.2.0 - dev: false + react: 19.0.0-rc-69d4b800-20241021 - /@react-email/head@0.0.11(react@18.2.0): - resolution: {integrity: sha512-skw5FUgyamIMK+LN+fZQ5WIKQYf0dPiRAvsUAUR2eYoZp9oRsfkIpFHr0GWPkKAYjFEj+uJjaxQ/0VzQH7svVg==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc + '@react-email/head@0.0.11(react@19.0.0-rc-69d4b800-20241021)': dependencies: - react: 18.2.0 - dev: false + react: 19.0.0-rc-69d4b800-20241021 - /@react-email/heading@0.0.14(react@18.2.0): - resolution: {integrity: sha512-jZM7IVuZOXa0G110ES8OkxajPTypIKlzlO1K1RIe1auk76ukQRiCg1IRV4HZlWk1GGUbec5hNxsvZa2kU8cb9w==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc + '@react-email/heading@0.0.14(react@19.0.0-rc-69d4b800-20241021)': dependencies: - react: 18.2.0 - dev: false + react: 19.0.0-rc-69d4b800-20241021 - /@react-email/hr@0.0.10(react@18.2.0): - resolution: {integrity: sha512-3AA4Yjgl3zEid/KVx6uf6TuLJHVZvUc2cG9Wm9ZpWeAX4ODA+8g9HyuC0tfnjbRsVMhMcCGiECuWWXINi+60vA==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc + '@react-email/hr@0.0.10(react@19.0.0-rc-69d4b800-20241021)': dependencies: - react: 18.2.0 - dev: false + react: 19.0.0-rc-69d4b800-20241021 - /@react-email/html@0.0.10(react@18.2.0): - resolution: {integrity: sha512-06uiuSKJBWQJfhCKv4MPupELei4Lepyz9Sth7Yq7Fq29CAeB1ejLgKkGqn1I+FZ72hQxPLdYF4iq4yloKv3JCg==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc + '@react-email/html@0.0.10(react@19.0.0-rc-69d4b800-20241021)': dependencies: - react: 18.2.0 - dev: false + react: 19.0.0-rc-69d4b800-20241021 - /@react-email/img@0.0.10(react@18.2.0): - resolution: {integrity: sha512-pJ8glJjDNaJ53qoM95pvX9SK05yh0bNQY/oyBKmxlBDdUII6ixuMc3SCwYXPMl+tgkQUyDgwEBpSTrLAnjL3hA==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc + '@react-email/img@0.0.10(react@19.0.0-rc-69d4b800-20241021)': dependencies: - react: 18.2.0 - dev: false + react: 19.0.0-rc-69d4b800-20241021 - /@react-email/link@0.0.10(react@18.2.0): - resolution: {integrity: sha512-tva3wvAWSR10lMJa9fVA09yRn7pbEki0ZZpHE6GD1jKbFhmzt38VgLO9B797/prqoDZdAr4rVK7LJFcdPx3GwA==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc + '@react-email/link@0.0.10(react@19.0.0-rc-69d4b800-20241021)': dependencies: - react: 18.2.0 - dev: false + react: 19.0.0-rc-69d4b800-20241021 - /@react-email/markdown@0.0.12(react@18.2.0): - resolution: {integrity: sha512-wsuvj1XAb6O63aizCLNEeqVgKR3oFjAwt9vjfg2y2oh4G1dZeo8zonZM2x1fmkEkBZhzwSHraNi70jSXhA3A9w==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc + '@react-email/markdown@0.0.12(react@19.0.0-rc-69d4b800-20241021)': dependencies: - md-to-react-email: 5.0.2(react@18.2.0) - react: 18.2.0 - dev: false + md-to-react-email: 5.0.2(react@19.0.0-rc-69d4b800-20241021) + react: 19.0.0-rc-69d4b800-20241021 - /@react-email/preview@0.0.11(react@18.2.0): - resolution: {integrity: sha512-7O/CT4b16YlSGrj18htTPx3Vbhu2suCGv/cSe5c+fuSrIM/nMiBSZ3Js16Vj0XJbAmmmlVmYFZw9L20wXJ+LjQ==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc + '@react-email/preview@0.0.11(react@19.0.0-rc-69d4b800-20241021)': dependencies: - react: 18.2.0 - dev: false + react: 19.0.0-rc-69d4b800-20241021 - /@react-email/render@0.0.17(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-xBQ+/73+WsGuXKY7r1U73zMBNV28xdV0cp9cFjhNYipBReDHhV97IpA6v7Hl0dDtDzt+yS/72dY5vYXrF1v8NA==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.2.0 - react-dom: ^18.2.0 + '@react-email/render@0.0.17(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)': dependencies: html-to-text: 9.0.5 js-beautify: 1.15.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 19.0.0-rc-69d4b800-20241021 + react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021) react-promise-suspense: 0.3.4 - dev: false - /@react-email/render@1.0.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-W3gTrcmLOVYnG80QuUp22ReIT/xfLsVJ+n7ghSlG2BITB8evNABn1AO2rGQoXuK84zKtDAlxCdm3hRyIpZdGSA==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^18.0 || ^19.0 || ^19.0.0-rc + '@react-email/render@1.0.1(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)': dependencies: html-to-text: 9.0.5 js-beautify: 1.15.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 19.0.0-rc-69d4b800-20241021 + react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021) react-promise-suspense: 0.3.4 - dev: false - /@react-email/row@0.0.10(react@18.2.0): - resolution: {integrity: sha512-jPyEhG3gsLX+Eb9U+A30fh0gK6hXJwF4ghJ+ZtFQtlKAKqHX+eCpWlqB3Xschd/ARJLod8WAswg0FB+JD9d0/A==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc + '@react-email/row@0.0.10(react@19.0.0-rc-69d4b800-20241021)': dependencies: - react: 18.2.0 - dev: false + react: 19.0.0-rc-69d4b800-20241021 - /@react-email/section@0.0.14(react@18.2.0): - resolution: {integrity: sha512-+fYWLb4tPU1A/+GE5J1+SEMA7/wR3V30lQ+OR9t2kAJqNrARDbMx0bLnYnR1QL5TiFRz0pCF05SQUobk6gHEDQ==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc + '@react-email/section@0.0.14(react@19.0.0-rc-69d4b800-20241021)': dependencies: - react: 18.2.0 - dev: false + react: 19.0.0-rc-69d4b800-20241021 - /@react-email/tailwind@0.1.0(react@18.2.0): - resolution: {integrity: sha512-qysVUEY+M3SKUvu35XDpzn7yokhqFOT3tPU6Mj/pgc62TL5tQFj6msEbBtwoKs2qO3WZvai0DIHdLhaOxBQSow==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc + '@react-email/tailwind@0.1.0(react@19.0.0-rc-69d4b800-20241021)': dependencies: - react: 18.2.0 - dev: false + react: 19.0.0-rc-69d4b800-20241021 - /@react-email/text@0.0.10(react@18.2.0): - resolution: {integrity: sha512-wNAnxeEAiFs6N+SxS0y6wTJWfewEzUETuyS2aZmT00xk50VijwyFRuhm4sYSjusMyshevomFwz5jNISCxRsGWw==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc + '@react-email/text@0.0.10(react@19.0.0-rc-69d4b800-20241021)': dependencies: - react: 18.2.0 - dev: false + react: 19.0.0-rc-69d4b800-20241021 - /@rollup/plugin-commonjs@24.0.0(rollup@2.78.0): - resolution: {integrity: sha512-0w0wyykzdyRRPHOb0cQt14mIBLujfAv6GgP6g8nvg/iBxEm112t3YPPq+Buqe2+imvElTka+bjNlJ/gB56TD8g==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.68.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true + '@rollup/plugin-commonjs@24.0.0(rollup@2.78.0)': dependencies: '@rollup/pluginutils': 5.1.1(rollup@2.78.0) commondir: 1.0.1 @@ -2714,70 +6635,46 @@ packages: glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.27.0 + optionalDependencies: rollup: 2.78.0 - dev: false - /@rollup/pluginutils@5.1.1(rollup@2.78.0): - resolution: {integrity: sha512-bVRmQqBIyGD+VMihdEV2IBurfIrdW9tD9yzJUL3CBRDbyPBVzQnBSMSgyUZHl1E335rpMRj7r4o683fXLYw8iw==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true + '@rollup/pluginutils@5.1.1(rollup@2.78.0)': dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 2.3.1 + optionalDependencies: rollup: 2.78.0 - dev: false - /@rtsao/scc@1.1.0: - resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - dev: true + '@rtsao/scc@1.1.0': {} - /@rushstack/eslint-patch@1.10.4: - resolution: {integrity: sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==} - dev: true + '@rushstack/eslint-patch@1.10.4': {} - /@selderee/plugin-htmlparser2@0.11.0: - resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} + '@selderee/plugin-htmlparser2@0.11.0': dependencies: domhandler: 5.0.3 selderee: 0.11.0 - dev: false - /@sentry-internal/feedback@7.119.0: - resolution: {integrity: sha512-om8TkAU5CQGO8nkmr7qsSBVkP+/vfeS4JgtW3sjoTK0fhj26+DljR6RlfCGWtYQdPSP6XV7atcPTjbSnsmG9FQ==} - engines: {node: '>=12'} + '@sentry-internal/feedback@7.119.0': dependencies: '@sentry/core': 7.119.0 '@sentry/types': 7.119.0 '@sentry/utils': 7.119.0 - dev: false - /@sentry-internal/replay-canvas@7.119.0: - resolution: {integrity: sha512-NL02VQx6ekPxtVRcsdp1bp5Tb5w6vnfBKSIfMKuDRBy5A10Uc3GSoy/c3mPyHjOxB84452A+xZSx6bliEzAnuA==} - engines: {node: '>=12'} + '@sentry-internal/replay-canvas@7.119.0': dependencies: '@sentry/core': 7.119.0 '@sentry/replay': 7.119.0 '@sentry/types': 7.119.0 '@sentry/utils': 7.119.0 - dev: false - /@sentry-internal/tracing@7.119.0: - resolution: {integrity: sha512-oKdFJnn+56f0DHUADlL8o9l8jTib3VDLbWQBVkjD9EprxfaCwt2m8L5ACRBdQ8hmpxCEo4I8/6traZ7qAdBUqA==} - engines: {node: '>=8'} + '@sentry-internal/tracing@7.119.0': dependencies: '@sentry/core': 7.119.0 '@sentry/types': 7.119.0 '@sentry/utils': 7.119.0 - dev: false - /@sentry/browser@7.119.0: - resolution: {integrity: sha512-WwmW1Y4D764kVGeKmdsNvQESZiAn9t8LmCWO0ucBksrjL2zw9gBPtOpRcO6l064sCLeSxxzCN+kIxhRm1gDFEA==} - engines: {node: '>=8'} + '@sentry/browser@7.119.0': dependencies: '@sentry-internal/feedback': 7.119.0 '@sentry-internal/replay-canvas': 7.119.0 @@ -2787,13 +6684,8 @@ packages: '@sentry/replay': 7.119.0 '@sentry/types': 7.119.0 '@sentry/utils': 7.119.0 - dev: false - /@sentry/cli@1.77.3: - resolution: {integrity: sha512-c3eDqcDRmy4TFz2bFU5Y6QatlpoBPPa8cxBooaS4aMQpnIdLYPF1xhyyiW0LQlDUNc3rRjNF7oN5qKoaRoMTQQ==} - engines: {node: '>= 8'} - hasBin: true - requiresBuild: true + '@sentry/cli@1.77.3': dependencies: https-proxy-agent: 5.0.1 mkdirp: 0.5.6 @@ -2804,178 +6696,121 @@ packages: transitivePeerDependencies: - encoding - supports-color - dev: false - /@sentry/core@7.119.0: - resolution: {integrity: sha512-CS2kUv9rAJJEjiRat6wle3JATHypB0SyD7pt4cpX5y0dN5dZ1JrF57oLHRMnga9fxRivydHz7tMTuBhSSwhzjw==} - engines: {node: '>=8'} + '@sentry/core@7.119.0': dependencies: '@sentry/types': 7.119.0 '@sentry/utils': 7.119.0 - dev: false - /@sentry/integrations@7.119.0: - resolution: {integrity: sha512-OHShvtsRW0A+ZL/ZbMnMqDEtJddPasndjq+1aQXw40mN+zeP7At/V1yPZyFaURy86iX7Ucxw5BtmzuNy7hLyTA==} - engines: {node: '>=8'} + '@sentry/integrations@7.119.0': dependencies: '@sentry/core': 7.119.0 '@sentry/types': 7.119.0 '@sentry/utils': 7.119.0 localforage: 1.10.0 - dev: false - /@sentry/nextjs@7.119.0(next@14.2.4)(react@18.2.0)(webpack@5.94.0): - resolution: {integrity: sha512-D2P0LmgQbF/d7Ar6u2OKj+strM1id6OFfsHAKeTYd6KVipwc4YBpbS5OYkwH3BhtofCXvtfU3VmayVJD1onOiw==} - engines: {node: '>=8'} - peerDependencies: - next: ^10.0.8 || ^11.0 || ^12.0 || ^13.0 || ^14.0 - react: 16.x || 17.x || 18.x - webpack: '>= 4.0.0' - peerDependenciesMeta: - webpack: - optional: true + '@sentry/nextjs@7.119.0(next@15.0.1(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(webpack@5.94.0)': dependencies: '@rollup/plugin-commonjs': 24.0.0(rollup@2.78.0) '@sentry/core': 7.119.0 '@sentry/integrations': 7.119.0 '@sentry/node': 7.119.0 - '@sentry/react': 7.119.0(react@18.2.0) + '@sentry/react': 7.119.0(react@19.0.0-rc-69d4b800-20241021) '@sentry/types': 7.119.0 '@sentry/utils': 7.119.0 '@sentry/vercel-edge': 7.119.0 '@sentry/webpack-plugin': 1.21.0 chalk: 3.0.0 - next: 14.2.4(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 + next: 15.0.1(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021) + react: 19.0.0-rc-69d4b800-20241021 resolve: 1.22.8 rollup: 2.78.0 stacktrace-parser: 0.1.10 + optionalDependencies: webpack: 5.94.0 transitivePeerDependencies: - encoding - supports-color - dev: false - /@sentry/node@7.119.0: - resolution: {integrity: sha512-9PFzN8xS6U0oZCflpVxS2SSIsHkCaj7qYBlsvHj4CTGWfao9ImwrU6+smy4qoG6oxwPfoVb5pOOMb4WpWOvXcQ==} - engines: {node: '>=8'} + '@sentry/node@7.119.0': dependencies: '@sentry-internal/tracing': 7.119.0 '@sentry/core': 7.119.0 '@sentry/integrations': 7.119.0 '@sentry/types': 7.119.0 '@sentry/utils': 7.119.0 - dev: false - /@sentry/react@7.119.0(react@18.2.0): - resolution: {integrity: sha512-cf8Cei+qdSA26gx+IMAuc/k44PeBImNzIpXi3930SLhUe44ypT5OZ/44L6xTODHZzTIyMSJPduf59vT2+eW9yg==} - engines: {node: '>=8'} - peerDependencies: - react: 15.x || 16.x || 17.x || 18.x + '@sentry/react@7.119.0(react@19.0.0-rc-69d4b800-20241021)': dependencies: '@sentry/browser': 7.119.0 '@sentry/core': 7.119.0 '@sentry/types': 7.119.0 '@sentry/utils': 7.119.0 hoist-non-react-statics: 3.3.2 - react: 18.2.0 - dev: false + react: 19.0.0-rc-69d4b800-20241021 - /@sentry/replay@7.119.0: - resolution: {integrity: sha512-BnNsYL+X5I4WCH6wOpY6HQtp4MgVt0NVlhLUsEyrvMUiTs0bPkDBrulsgZQBUKJsbOr3l9nHrFoNVB/0i6WNLA==} - engines: {node: '>=12'} + '@sentry/replay@7.119.0': dependencies: '@sentry-internal/tracing': 7.119.0 '@sentry/core': 7.119.0 '@sentry/types': 7.119.0 '@sentry/utils': 7.119.0 - dev: false - /@sentry/types@7.119.0: - resolution: {integrity: sha512-27qQbutDBPKGbuJHROxhIWc1i0HJaGLA90tjMu11wt0E4UNxXRX+UQl4Twu68v4EV3CPvQcEpQfgsViYcXmq+w==} - engines: {node: '>=8'} - dev: false + '@sentry/types@7.119.0': {} - /@sentry/utils@7.119.0: - resolution: {integrity: sha512-ZwyXexWn2ZIe2bBoYnXJVPc2esCSbKpdc6+0WJa8eutXfHq3FRKg4ohkfCBpfxljQGEfP1+kfin945lA21Ka+A==} - engines: {node: '>=8'} + '@sentry/utils@7.119.0': dependencies: '@sentry/types': 7.119.0 - dev: false - /@sentry/vercel-edge@7.119.0: - resolution: {integrity: sha512-9gi5SrBSHhHFYBq/+vG1qC9r80eEskCf7ti/qYSvXc6zij5ieilurF5tunyAle+ayxfHdPTdkhUnDZT6G9jdmA==} - engines: {node: '>=8'} + '@sentry/vercel-edge@7.119.0': dependencies: '@sentry-internal/tracing': 7.119.0 '@sentry/core': 7.119.0 '@sentry/integrations': 7.119.0 '@sentry/types': 7.119.0 '@sentry/utils': 7.119.0 - dev: false - /@sentry/webpack-plugin@1.21.0: - resolution: {integrity: sha512-x0PYIMWcsTauqxgl7vWUY6sANl+XGKtx7DCVnnY7aOIIlIna0jChTAPANTfA2QrK+VK+4I/4JxatCEZBnXh3Og==} - engines: {node: '>= 8'} + '@sentry/webpack-plugin@1.21.0': dependencies: '@sentry/cli': 1.77.3 webpack-sources: 3.2.3 transitivePeerDependencies: - encoding - supports-color - dev: false - /@slack/types@2.14.0: - resolution: {integrity: sha512-n0EGm7ENQRxlXbgKSrQZL69grzg1gHLAVd+GlRVQJ1NSORo0FrApR7wql/gaKdu2n4TO83Sq/AmeUOqD60aXUA==} - engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} - dev: false + '@slack/types@2.14.0': {} - /@slack/webhook@7.0.3: - resolution: {integrity: sha512-qRPMq3In5znBpRLw4IQvYy8M3+CRd8/FKfZjA0BoNx/Q1qm4+kom8BTaOz+HMoRpnywMbr+4B/Tc5JR3nUJ+ew==} - engines: {node: '>= 18', npm: '>= 8.6.0'} + '@slack/webhook@7.0.3': dependencies: '@slack/types': 2.14.0 '@types/node': 22.5.5 axios: 1.7.7 transitivePeerDependencies: - debug - dev: false - /@smithy/abort-controller@3.1.5: - resolution: {integrity: sha512-DhNPnqTqPoG8aZ5dWkFOgsuY+i0GQ3CI6hMmvCoduNsnU9gUZWZBwGfDQsTTB7NvFPkom1df7jMIJWU90kuXXg==} - engines: {node: '>=16.0.0'} + '@smithy/abort-controller@3.1.5': dependencies: '@smithy/types': 3.5.0 tslib: 2.7.0 - dev: false - /@smithy/chunked-blob-reader-native@3.0.0: - resolution: {integrity: sha512-VDkpCYW+peSuM4zJip5WDfqvg2Mo/e8yxOv3VF1m11y7B8KKMKVFtmZWDe36Fvk8rGuWrPZHHXZ7rR7uM5yWyg==} + '@smithy/chunked-blob-reader-native@3.0.0': dependencies: '@smithy/util-base64': 3.0.0 tslib: 2.7.0 - dev: false - /@smithy/chunked-blob-reader@3.0.0: - resolution: {integrity: sha512-sbnURCwjF0gSToGlsBiAmd1lRCmSn72nu9axfJu5lIx6RUEgHu6GwTMbqCdhQSi0Pumcm5vFxsi9XWXb2mTaoA==} + '@smithy/chunked-blob-reader@3.0.0': dependencies: tslib: 2.7.0 - dev: false - /@smithy/config-resolver@3.0.9: - resolution: {integrity: sha512-5d9oBf40qC7n2xUoHmntKLdqsyTMMo/r49+eqSIjJ73eDfEtljAxEhzIQ3bkgXJtR3xiv7YzMT/3FF3ORkjWdg==} - engines: {node: '>=16.0.0'} + '@smithy/config-resolver@3.0.9': dependencies: '@smithy/node-config-provider': 3.1.8 '@smithy/types': 3.5.0 '@smithy/util-config-provider': 3.0.0 '@smithy/util-middleware': 3.0.7 tslib: 2.7.0 - dev: false - /@smithy/core@2.4.7: - resolution: {integrity: sha512-goqMjX+IoVEnHZjYuzu8xwoZjoteMiLXsPHuXPBkWsGwu0o9c3nTjqkUlP1Ez/V8E501aOU7CJ3INk8mQcW2gw==} - engines: {node: '>=16.0.0'} + '@smithy/core@2.4.7': dependencies: '@smithy/middleware-endpoint': 3.1.4 '@smithy/middleware-retry': 3.0.22 @@ -2987,142 +6822,99 @@ packages: '@smithy/util-middleware': 3.0.7 '@smithy/util-utf8': 3.0.0 tslib: 2.7.0 - dev: false - /@smithy/credential-provider-imds@3.2.4: - resolution: {integrity: sha512-S9bb0EIokfYEuar4kEbLta+ivlKCWOCFsLZuilkNy9i0uEUEHSi47IFLPaxqqCl+0ftKmcOTHayY5nQhAuq7+w==} - engines: {node: '>=16.0.0'} + '@smithy/credential-provider-imds@3.2.4': dependencies: '@smithy/node-config-provider': 3.1.8 '@smithy/property-provider': 3.1.7 '@smithy/types': 3.5.0 '@smithy/url-parser': 3.0.7 tslib: 2.7.0 - dev: false - /@smithy/eventstream-codec@3.1.6: - resolution: {integrity: sha512-SBiOYPBH+5wOyPS7lfI150ePfGLhnp/eTu5RnV9xvhGvRiKfnl6HzRK9wehBph+il8FxS9KTeadx7Rcmf1GLPQ==} + '@smithy/eventstream-codec@3.1.6': dependencies: '@aws-crypto/crc32': 5.2.0 '@smithy/types': 3.5.0 '@smithy/util-hex-encoding': 3.0.0 tslib: 2.7.0 - dev: false - /@smithy/eventstream-serde-browser@3.0.10: - resolution: {integrity: sha512-1i9aMY6Pl/SmA6NjvidxnfBLHMPzhKu2BP148pEt5VwhMdmXn36PE2kWKGa9Hj8b0XGtCTRucpCncylevCtI7g==} - engines: {node: '>=16.0.0'} + '@smithy/eventstream-serde-browser@3.0.10': dependencies: '@smithy/eventstream-serde-universal': 3.0.9 '@smithy/types': 3.5.0 tslib: 2.7.0 - dev: false - /@smithy/eventstream-serde-config-resolver@3.0.7: - resolution: {integrity: sha512-eVzhGQBPEqXXYHvIUku0jMTxd4gDvenRzUQPTmKVWdRvp9JUCKrbAXGQRYiGxUYq9+cqQckRm0wq3kTWnNtDhw==} - engines: {node: '>=16.0.0'} + '@smithy/eventstream-serde-config-resolver@3.0.7': dependencies: '@smithy/types': 3.5.0 tslib: 2.7.0 - dev: false - /@smithy/eventstream-serde-node@3.0.9: - resolution: {integrity: sha512-JE0Guqvt0xsmfQ5y1EI342/qtJqznBv8cJqkHZV10PwC8GWGU5KNgFbQnsVCcX+xF+qIqwwfRmeWoJCjuOLmng==} - engines: {node: '>=16.0.0'} + '@smithy/eventstream-serde-node@3.0.9': dependencies: '@smithy/eventstream-serde-universal': 3.0.9 '@smithy/types': 3.5.0 tslib: 2.7.0 - dev: false - /@smithy/eventstream-serde-universal@3.0.9: - resolution: {integrity: sha512-bydfgSisfepCufw9kCEnWRxqxJFzX/o8ysXWv+W9F2FIyiaEwZ/D8bBKINbh4ONz3i05QJ1xE7A5OKYvgJsXaw==} - engines: {node: '>=16.0.0'} + '@smithy/eventstream-serde-universal@3.0.9': dependencies: '@smithy/eventstream-codec': 3.1.6 '@smithy/types': 3.5.0 tslib: 2.7.0 - dev: false - /@smithy/fetch-http-handler@3.2.9: - resolution: {integrity: sha512-hYNVQOqhFQ6vOpenifFME546f0GfJn2OiQ3M0FDmuUu8V/Uiwy2wej7ZXxFBNqdx0R5DZAqWM1l6VRhGz8oE6A==} + '@smithy/fetch-http-handler@3.2.9': dependencies: '@smithy/protocol-http': 4.1.4 '@smithy/querystring-builder': 3.0.7 '@smithy/types': 3.5.0 '@smithy/util-base64': 3.0.0 tslib: 2.7.0 - dev: false - /@smithy/hash-blob-browser@3.1.6: - resolution: {integrity: sha512-BKNcMIaeZ9lB67sgo88iCF4YB35KT8X2dNJ8DqrtZNTgN6tUDYBKThzfGtos/mnZkGkW91AYHisESHmSiYQmKw==} + '@smithy/hash-blob-browser@3.1.6': dependencies: '@smithy/chunked-blob-reader': 3.0.0 '@smithy/chunked-blob-reader-native': 3.0.0 '@smithy/types': 3.5.0 tslib: 2.7.0 - dev: false - /@smithy/hash-node@3.0.7: - resolution: {integrity: sha512-SAGHN+QkrwcHFjfWzs/czX94ZEjPJ0CrWJS3M43WswDXVEuP4AVy9gJ3+AF6JQHZD13bojmuf/Ap/ItDeZ+Qfw==} - engines: {node: '>=16.0.0'} + '@smithy/hash-node@3.0.7': dependencies: '@smithy/types': 3.5.0 '@smithy/util-buffer-from': 3.0.0 '@smithy/util-utf8': 3.0.0 tslib: 2.7.0 - dev: false - /@smithy/hash-stream-node@3.1.6: - resolution: {integrity: sha512-sFSSt7cmCpFWZPfVx7k80Bgb1K2VJ27VmMxH8X+dDhp7Wv8IBgID4K2VK5ehMJROF8hQgcj4WywnkHIwX/xlwQ==} - engines: {node: '>=16.0.0'} + '@smithy/hash-stream-node@3.1.6': dependencies: '@smithy/types': 3.5.0 '@smithy/util-utf8': 3.0.0 tslib: 2.7.0 - dev: false - /@smithy/invalid-dependency@3.0.7: - resolution: {integrity: sha512-Bq00GsAhHeYSuZX8Kpu4sbI9agH2BNYnqUmmbTGWOhki9NVsWn2jFr896vvoTMH8KAjNX/ErC/8t5QHuEXG+IA==} + '@smithy/invalid-dependency@3.0.7': dependencies: '@smithy/types': 3.5.0 tslib: 2.7.0 - dev: false - /@smithy/is-array-buffer@2.2.0: - resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} - engines: {node: '>=14.0.0'} + '@smithy/is-array-buffer@2.2.0': dependencies: tslib: 2.7.0 - dev: false - /@smithy/is-array-buffer@3.0.0: - resolution: {integrity: sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==} - engines: {node: '>=16.0.0'} + '@smithy/is-array-buffer@3.0.0': dependencies: tslib: 2.7.0 - dev: false - /@smithy/md5-js@3.0.7: - resolution: {integrity: sha512-+wco9IN9uOW4tNGkZIqTR6IXyfO7Z8A+IOq82QCRn/f/xcmt7H1fXwmQVbfDSvbeFwfNnhv7s+u0G9PzPG6o2w==} + '@smithy/md5-js@3.0.7': dependencies: '@smithy/types': 3.5.0 '@smithy/util-utf8': 3.0.0 tslib: 2.7.0 - dev: false - /@smithy/middleware-content-length@3.0.9: - resolution: {integrity: sha512-t97PidoGElF9hTtLCrof32wfWMqC5g2SEJNxaVH3NjlatuNGsdxXRYO/t+RPnxA15RpYiS0f+zG7FuE2DeGgjA==} - engines: {node: '>=16.0.0'} + '@smithy/middleware-content-length@3.0.9': dependencies: '@smithy/protocol-http': 4.1.4 '@smithy/types': 3.5.0 tslib: 2.7.0 - dev: false - /@smithy/middleware-endpoint@3.1.4: - resolution: {integrity: sha512-/ChcVHekAyzUbyPRI8CzPPLj6y8QRAfJngWcLMgsWxKVzw/RzBV69mSOzJYDD3pRwushA1+5tHtPF8fjmzBnrQ==} - engines: {node: '>=16.0.0'} + '@smithy/middleware-endpoint@3.1.4': dependencies: '@smithy/middleware-serde': 3.0.7 '@smithy/node-config-provider': 3.1.8 @@ -3131,11 +6923,8 @@ packages: '@smithy/url-parser': 3.0.7 '@smithy/util-middleware': 3.0.7 tslib: 2.7.0 - dev: false - /@smithy/middleware-retry@3.0.22: - resolution: {integrity: sha512-svEN7O2Tf7BoaBkPzX/8AE2Bv7p16d9/ulFAD1Gmn5g19iMqNk1WIkMxAY7SpB9/tVtUwKx0NaIsBRl88gumZA==} - engines: {node: '>=16.0.0'} + '@smithy/middleware-retry@3.0.22': dependencies: '@smithy/node-config-provider': 3.1.8 '@smithy/protocol-http': 4.1.4 @@ -3146,96 +6935,63 @@ packages: '@smithy/util-retry': 3.0.7 tslib: 2.7.0 uuid: 9.0.1 - dev: false - /@smithy/middleware-serde@3.0.7: - resolution: {integrity: sha512-VytaagsQqtH2OugzVTq4qvjkLNbWehHfGcGr0JLJmlDRrNCeZoWkWsSOw1nhS/4hyUUWF/TLGGml4X/OnEep5g==} - engines: {node: '>=16.0.0'} + '@smithy/middleware-serde@3.0.7': dependencies: '@smithy/types': 3.5.0 tslib: 2.7.0 - dev: false - /@smithy/middleware-stack@3.0.7: - resolution: {integrity: sha512-EyTbMCdqS1DoeQsO4gI7z2Gzq1MoRFAeS8GkFYIwbedB7Lp5zlLHJdg+56tllIIG5Hnf9ZWX48YKSHlsKvugGA==} - engines: {node: '>=16.0.0'} + '@smithy/middleware-stack@3.0.7': dependencies: '@smithy/types': 3.5.0 tslib: 2.7.0 - dev: false - /@smithy/node-config-provider@3.1.8: - resolution: {integrity: sha512-E0rU0DglpeJn5ge64mk8wTGEXcQwmpUTY5Zr7IzTpDLmHKiIamINERNZYrPQjg58Ck236sEKSwRSHA4CwshU6Q==} - engines: {node: '>=16.0.0'} + '@smithy/node-config-provider@3.1.8': dependencies: '@smithy/property-provider': 3.1.7 '@smithy/shared-ini-file-loader': 3.1.8 '@smithy/types': 3.5.0 tslib: 2.7.0 - dev: false - /@smithy/node-http-handler@3.2.4: - resolution: {integrity: sha512-49reY3+JgLMFNm7uTAKBWiKCA6XSvkNp9FqhVmusm2jpVnHORYFeFZ704LShtqWfjZW/nhX+7Iexyb6zQfXYIQ==} - engines: {node: '>=16.0.0'} + '@smithy/node-http-handler@3.2.4': dependencies: '@smithy/abort-controller': 3.1.5 '@smithy/protocol-http': 4.1.4 '@smithy/querystring-builder': 3.0.7 '@smithy/types': 3.5.0 tslib: 2.7.0 - dev: false - /@smithy/property-provider@3.1.7: - resolution: {integrity: sha512-QfzLi1GPMisY7bAM5hOUqBdGYnY5S2JAlr201pghksrQv139f8iiiMalXtjczIP5f6owxFn3MINLNUNvUkgtPw==} - engines: {node: '>=16.0.0'} + '@smithy/property-provider@3.1.7': dependencies: '@smithy/types': 3.5.0 tslib: 2.7.0 - dev: false - /@smithy/protocol-http@4.1.4: - resolution: {integrity: sha512-MlWK8eqj0JlpZBnWmjQLqmFp71Ug00P+m72/1xQB3YByXD4zZ+y9N4hYrR0EDmrUCZIkyATWHOXFgtavwGDTzQ==} - engines: {node: '>=16.0.0'} + '@smithy/protocol-http@4.1.4': dependencies: '@smithy/types': 3.5.0 tslib: 2.7.0 - dev: false - /@smithy/querystring-builder@3.0.7: - resolution: {integrity: sha512-65RXGZZ20rzqqxTsChdqSpbhA6tdt5IFNgG6o7e1lnPVLCe6TNWQq4rTl4N87hTDD8mV4IxJJnvyE7brbnRkQw==} - engines: {node: '>=16.0.0'} + '@smithy/querystring-builder@3.0.7': dependencies: '@smithy/types': 3.5.0 '@smithy/util-uri-escape': 3.0.0 tslib: 2.7.0 - dev: false - /@smithy/querystring-parser@3.0.7: - resolution: {integrity: sha512-Fouw4KJVWqqUVIu1gZW8BH2HakwLz6dvdrAhXeXfeymOBrZw+hcqaWs+cS1AZPVp4nlbeIujYrKA921ZW2WMPA==} - engines: {node: '>=16.0.0'} + '@smithy/querystring-parser@3.0.7': dependencies: '@smithy/types': 3.5.0 tslib: 2.7.0 - dev: false - /@smithy/service-error-classification@3.0.7: - resolution: {integrity: sha512-91PRkTfiBf9hxkIchhRKJfl1rsplRDyBnmyFca3y0Z3x/q0JJN480S83LBd8R6sBCkm2bBbqw2FHp0Mbh+ecSA==} - engines: {node: '>=16.0.0'} + '@smithy/service-error-classification@3.0.7': dependencies: '@smithy/types': 3.5.0 - dev: false - /@smithy/shared-ini-file-loader@3.1.8: - resolution: {integrity: sha512-0NHdQiSkeGl0ICQKcJQ2lCOKH23Nb0EaAa7RDRId6ZqwXkw4LJyIyZ0t3iusD4bnKYDPLGy2/5e2rfUhrt0Acw==} - engines: {node: '>=16.0.0'} + '@smithy/shared-ini-file-loader@3.1.8': dependencies: '@smithy/types': 3.5.0 tslib: 2.7.0 - dev: false - - /@smithy/signature-v4@4.2.0: - resolution: {integrity: sha512-LafbclHNKnsorMgUkKm7Tk7oJ7xizsZ1VwqhGKqoCIrXh4fqDDp73fK99HOEEgcsQbtemmeY/BPv0vTVYYUNEQ==} - engines: {node: '>=16.0.0'} + + '@smithy/signature-v4@4.2.0': dependencies: '@smithy/is-array-buffer': 3.0.0 '@smithy/protocol-http': 4.1.4 @@ -3245,11 +7001,8 @@ packages: '@smithy/util-uri-escape': 3.0.0 '@smithy/util-utf8': 3.0.0 tslib: 2.7.0 - dev: false - /@smithy/smithy-client@3.3.6: - resolution: {integrity: sha512-qdH+mvDHgq1ss6mocyIl2/VjlWXew7pGwZQydwYJczEc22HZyX3k8yVPV9aZsbYbssHPvMDRA5rfBDrjQUbIIw==} - engines: {node: '>=16.0.0'} + '@smithy/smithy-client@3.3.6': dependencies: '@smithy/middleware-endpoint': 3.1.4 '@smithy/middleware-stack': 3.0.7 @@ -3257,82 +7010,54 @@ packages: '@smithy/types': 3.5.0 '@smithy/util-stream': 3.1.9 tslib: 2.7.0 - dev: false - /@smithy/types@3.5.0: - resolution: {integrity: sha512-QN0twHNfe8mNJdH9unwsCK13GURU7oEAZqkBI+rsvpv1jrmserO+WnLE7jidR9W/1dxwZ0u/CB01mV2Gms/K2Q==} - engines: {node: '>=16.0.0'} + '@smithy/types@3.5.0': dependencies: tslib: 2.7.0 - dev: false - /@smithy/url-parser@3.0.7: - resolution: {integrity: sha512-70UbSSR8J97c1rHZOWhl+VKiZDqHWxs/iW8ZHrHp5fCCPLSBE7GcUlUvKSle3Ca+J9LLbYCj/A79BxztBvAfpA==} + '@smithy/url-parser@3.0.7': dependencies: '@smithy/querystring-parser': 3.0.7 '@smithy/types': 3.5.0 tslib: 2.7.0 - dev: false - /@smithy/util-base64@3.0.0: - resolution: {integrity: sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==} - engines: {node: '>=16.0.0'} + '@smithy/util-base64@3.0.0': dependencies: '@smithy/util-buffer-from': 3.0.0 '@smithy/util-utf8': 3.0.0 tslib: 2.7.0 - dev: false - /@smithy/util-body-length-browser@3.0.0: - resolution: {integrity: sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==} + '@smithy/util-body-length-browser@3.0.0': dependencies: tslib: 2.7.0 - dev: false - /@smithy/util-body-length-node@3.0.0: - resolution: {integrity: sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==} - engines: {node: '>=16.0.0'} + '@smithy/util-body-length-node@3.0.0': dependencies: tslib: 2.7.0 - dev: false - /@smithy/util-buffer-from@2.2.0: - resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} - engines: {node: '>=14.0.0'} + '@smithy/util-buffer-from@2.2.0': dependencies: '@smithy/is-array-buffer': 2.2.0 tslib: 2.7.0 - dev: false - /@smithy/util-buffer-from@3.0.0: - resolution: {integrity: sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==} - engines: {node: '>=16.0.0'} + '@smithy/util-buffer-from@3.0.0': dependencies: '@smithy/is-array-buffer': 3.0.0 tslib: 2.7.0 - dev: false - /@smithy/util-config-provider@3.0.0: - resolution: {integrity: sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==} - engines: {node: '>=16.0.0'} + '@smithy/util-config-provider@3.0.0': dependencies: tslib: 2.7.0 - dev: false - /@smithy/util-defaults-mode-browser@3.0.22: - resolution: {integrity: sha512-WKzUxNsOun5ETwEOrvooXeI1mZ8tjDTOcN4oruELWHhEYDgQYWwxZupURVyovcv+h5DyQT/DzK5nm4ZoR/Tw5Q==} - engines: {node: '>= 10.0.0'} + '@smithy/util-defaults-mode-browser@3.0.22': dependencies: '@smithy/property-provider': 3.1.7 '@smithy/smithy-client': 3.3.6 '@smithy/types': 3.5.0 bowser: 2.11.0 tslib: 2.7.0 - dev: false - /@smithy/util-defaults-mode-node@3.0.22: - resolution: {integrity: sha512-hUsciOmAq8fsGwqg4+pJfNRmrhfqMH4Y9UeGcgeUl88kPAoYANFATJqCND+O4nUvwp5TzsYwGpqpcBKyA8LUUg==} - engines: {node: '>= 10.0.0'} + '@smithy/util-defaults-mode-node@3.0.22': dependencies: '@smithy/config-resolver': 3.0.9 '@smithy/credential-provider-imds': 3.2.4 @@ -3341,44 +7066,29 @@ packages: '@smithy/smithy-client': 3.3.6 '@smithy/types': 3.5.0 tslib: 2.7.0 - dev: false - /@smithy/util-endpoints@2.1.3: - resolution: {integrity: sha512-34eACeKov6jZdHqS5hxBMJ4KyWKztTMulhuQ2UdOoP6vVxMLrOKUqIXAwJe/wiWMhXhydLW664B02CNpQBQ4Aw==} - engines: {node: '>=16.0.0'} + '@smithy/util-endpoints@2.1.3': dependencies: '@smithy/node-config-provider': 3.1.8 '@smithy/types': 3.5.0 tslib: 2.7.0 - dev: false - /@smithy/util-hex-encoding@3.0.0: - resolution: {integrity: sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==} - engines: {node: '>=16.0.0'} + '@smithy/util-hex-encoding@3.0.0': dependencies: tslib: 2.7.0 - dev: false - /@smithy/util-middleware@3.0.7: - resolution: {integrity: sha512-OVA6fv/3o7TMJTpTgOi1H5OTwnuUa8hzRzhSFDtZyNxi6OZ70L/FHattSmhE212I7b6WSOJAAmbYnvcjTHOJCA==} - engines: {node: '>=16.0.0'} + '@smithy/util-middleware@3.0.7': dependencies: '@smithy/types': 3.5.0 tslib: 2.7.0 - dev: false - /@smithy/util-retry@3.0.7: - resolution: {integrity: sha512-nh1ZO1vTeo2YX1plFPSe/OXaHkLAHza5jpokNiiKX2M5YpNUv6RxGJZhpfmiR4jSvVHCjIDmILjrxKmP+/Ghug==} - engines: {node: '>=16.0.0'} + '@smithy/util-retry@3.0.7': dependencies: '@smithy/service-error-classification': 3.0.7 '@smithy/types': 3.5.0 tslib: 2.7.0 - dev: false - /@smithy/util-stream@3.1.9: - resolution: {integrity: sha512-7YAR0Ub3MwTMjDfjnup4qa6W8gygZMxikBhFMPESi6ASsl/rZJhwLpF/0k9TuezScCojsM0FryGdz4LZtjKPPQ==} - engines: {node: '>=16.0.0'} + '@smithy/util-stream@3.1.9': dependencies: '@smithy/fetch-http-handler': 3.2.9 '@smithy/node-http-handler': 3.2.4 @@ -3388,262 +7098,157 @@ packages: '@smithy/util-hex-encoding': 3.0.0 '@smithy/util-utf8': 3.0.0 tslib: 2.7.0 - dev: false - /@smithy/util-uri-escape@3.0.0: - resolution: {integrity: sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==} - engines: {node: '>=16.0.0'} + '@smithy/util-uri-escape@3.0.0': dependencies: tslib: 2.7.0 - dev: false - /@smithy/util-utf8@2.3.0: - resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} - engines: {node: '>=14.0.0'} + '@smithy/util-utf8@2.3.0': dependencies: '@smithy/util-buffer-from': 2.2.0 tslib: 2.7.0 - dev: false - /@smithy/util-utf8@3.0.0: - resolution: {integrity: sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==} - engines: {node: '>=16.0.0'} + '@smithy/util-utf8@3.0.0': dependencies: '@smithy/util-buffer-from': 3.0.0 tslib: 2.7.0 - dev: false - /@smithy/util-waiter@3.1.6: - resolution: {integrity: sha512-xs/KAwWOeCklq8aMlnpk25LgxEYHKOEodfjfKclDMLcBJEVEKzDLxZxBQyztcuPJ7F54213NJS8PxoiHNMdItQ==} - engines: {node: '>=16.0.0'} + '@smithy/util-waiter@3.1.6': dependencies: '@smithy/abort-controller': 3.1.5 '@smithy/types': 3.5.0 tslib: 2.7.0 - dev: false - /@socket.io/component-emitter@3.1.2: - resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} - dev: false + '@socket.io/component-emitter@3.1.2': {} - /@stripe/stripe-js@4.5.0: - resolution: {integrity: sha512-dMOzc58AOlsF20nYM/avzV8RFhO/vgYTY7ajLMH6mjlnZysnOHZxsECQvjEmL8Q/ukPwHkOnxSPW/QGCCnp7XA==} - engines: {node: '>=12.16'} - dev: false + '@stripe/stripe-js@4.5.0': {} - /@swc-jotai/react-refresh@0.2.0: - resolution: {integrity: sha512-LDkIeVcaL8sop/MHLP3RsUHj73fQ0kU7eYhJj7SuU4eAbx7xE3eeEgCjhTyPB3aYimSHwOk8/c71buLMV9SvPA==} - dev: true + '@swc-jotai/react-refresh@0.2.0': {} - /@swc/counter@0.1.3: - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - dev: false + '@swc/counter@0.1.3': {} - /@swc/helpers@0.5.5: - resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} + '@swc/helpers@0.5.13': + dependencies: + tslib: 2.7.0 + + '@swc/helpers@0.5.5': dependencies: '@swc/counter': 0.1.3 tslib: 2.7.0 - dev: false - /@tsconfig/node10@1.0.11: - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + '@tsconfig/node10@1.0.11': {} - /@tsconfig/node12@1.0.11: - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + '@tsconfig/node12@1.0.11': {} - /@tsconfig/node14@1.0.3: - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + '@tsconfig/node14@1.0.3': {} - /@tsconfig/node16@1.0.4: - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + '@tsconfig/node16@1.0.4': {} - /@types/cookie@0.4.1: - resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} - dev: false + '@types/cookie@0.4.1': {} - /@types/cookie@0.6.0: - resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} - dev: false + '@types/cookie@0.6.0': {} - /@types/cors@2.8.17: - resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} + '@types/cors@2.8.17': dependencies: '@types/node': 22.5.5 - dev: false - /@types/debug@4.1.12: - resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + '@types/debug@4.1.12': dependencies: '@types/ms': 0.7.34 - dev: false - /@types/estree-jsx@1.0.5: - resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + '@types/estree-jsx@1.0.5': dependencies: '@types/estree': 1.0.6 - dev: false - /@types/estree@1.0.6: - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - dev: false + '@types/estree@1.0.6': {} - /@types/formidable@3.4.5: - resolution: {integrity: sha512-s7YPsNVfnsng5L8sKnG/Gbb2tiwwJTY1conOkJzTMRvJAlLFW1nEua+ADsJQu8N1c0oTHx9+d5nqg10WuT9gHQ==} + '@types/formidable@3.4.5': dependencies: '@types/node': 22.5.5 - dev: true - /@types/hast@2.3.10: - resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==} + '@types/hast@2.3.10': dependencies: '@types/unist': 2.0.11 - dev: false - /@types/hast@3.0.4: - resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/hast@3.0.4': dependencies: '@types/unist': 3.0.3 - dev: false - /@types/json-schema@7.0.15: - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - dev: false + '@types/json-schema@7.0.15': {} - /@types/json5@0.0.29: - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - dev: true + '@types/json5@0.0.29': {} - /@types/mdast@4.0.4: - resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + '@types/mdast@4.0.4': dependencies: '@types/unist': 3.0.3 - dev: false - /@types/ms@0.7.34: - resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - dev: false + '@types/ms@0.7.34': {} - /@types/node@22.5.5: - resolution: {integrity: sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==} + '@types/node@22.5.5': dependencies: undici-types: 6.19.8 - /@types/papaparse@5.3.14: - resolution: {integrity: sha512-LxJ4iEFcpqc6METwp9f6BV6VVc43m6MfH0VqFosHvrUgfXiFe6ww7R3itkOQ+TCK6Y+Iv/+RnnvtRZnkc5Kc9g==} + '@types/papaparse@5.3.14': dependencies: '@types/node': 22.5.5 - dev: false - - /@types/prismjs@1.26.4: - resolution: {integrity: sha512-rlAnzkW2sZOjbqZ743IHUhFcvzaGbqijwOu8QZnZCjfQzBqFE3s4lOTJEsxikImav9uzz/42I+O7YUs1mWgMlg==} - dev: false - - /@types/prop-types@15.7.13: - resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} - /@types/react@18.3.8: - resolution: {integrity: sha512-syBUrW3/XpnW4WJ41Pft+I+aPoDVbrBVQGEnbD7NijDGlVC+8gV/XKRY+7vMDlfPpbwYt0l1vd/Sj8bJGMbs9Q==} - dependencies: - '@types/prop-types': 15.7.13 - csstype: 3.1.3 + '@types/prismjs@1.26.4': {} - /@types/unist@2.0.11: - resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} - dev: false + '@types/unist@2.0.11': {} - /@types/unist@3.0.3: - resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - dev: false + '@types/unist@3.0.3': {} - /@typescript-eslint/eslint-plugin@8.6.0(@typescript-eslint/parser@8.6.0)(eslint@9.9.1)(typescript@5.6.2): - resolution: {integrity: sha512-UOaz/wFowmoh2G6Mr9gw60B1mm0MzUtm6Ic8G2yM1Le6gyj5Loi/N+O5mocugRGY+8OeeKmkMmbxNqUCq3B4Sg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/eslint-plugin@8.6.0(@typescript-eslint/parser@8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2)': dependencies: '@eslint-community/regexpp': 4.11.1 - '@typescript-eslint/parser': 8.6.0(eslint@9.9.1)(typescript@5.6.2) + '@typescript-eslint/parser': 8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) '@typescript-eslint/scope-manager': 8.6.0 - '@typescript-eslint/type-utils': 8.6.0(eslint@9.9.1)(typescript@5.6.2) - '@typescript-eslint/utils': 8.6.0(eslint@9.9.1)(typescript@5.6.2) + '@typescript-eslint/type-utils': 8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/utils': 8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) '@typescript-eslint/visitor-keys': 8.6.0 - eslint: 9.9.1 + eslint: 9.9.1(jiti@1.21.6) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 ts-api-utils: 1.3.0(typescript@5.6.2) + optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/parser@8.6.0(eslint@9.9.1)(typescript@5.6.2): - resolution: {integrity: sha512-eQcbCuA2Vmw45iGfcyG4y6rS7BhWfz9MQuk409WD47qMM+bKCGQWXxvoOs1DUp+T7UBMTtRTVT+kXr7Sh4O9Ow==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/parser@8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2)': dependencies: '@typescript-eslint/scope-manager': 8.6.0 '@typescript-eslint/types': 8.6.0 '@typescript-eslint/typescript-estree': 8.6.0(typescript@5.6.2) '@typescript-eslint/visitor-keys': 8.6.0 debug: 4.3.7 - eslint: 9.9.1 + eslint: 9.9.1(jiti@1.21.6) + optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/scope-manager@8.6.0: - resolution: {integrity: sha512-ZuoutoS5y9UOxKvpc/GkvF4cuEmpokda4wRg64JEia27wX+PysIE9q+lzDtlHHgblwUWwo5/Qn+/WyTUvDwBHw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/scope-manager@8.6.0': dependencies: '@typescript-eslint/types': 8.6.0 '@typescript-eslint/visitor-keys': 8.6.0 - dev: true - /@typescript-eslint/type-utils@8.6.0(eslint@9.9.1)(typescript@5.6.2): - resolution: {integrity: sha512-dtePl4gsuenXVwC7dVNlb4mGDcKjDT/Ropsk4za/ouMBPplCLyznIaR+W65mvCvsyS97dymoBRrioEXI7k0XIg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/type-utils@8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2)': dependencies: '@typescript-eslint/typescript-estree': 8.6.0(typescript@5.6.2) - '@typescript-eslint/utils': 8.6.0(eslint@9.9.1)(typescript@5.6.2) + '@typescript-eslint/utils': 8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) debug: 4.3.7 ts-api-utils: 1.3.0(typescript@5.6.2) + optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: - eslint - supports-color - dev: true - /@typescript-eslint/types@8.6.0: - resolution: {integrity: sha512-rojqFZGd4MQxw33SrOy09qIDS8WEldM8JWtKQLAjf/X5mGSeEFh5ixQlxssMNyPslVIk9yzWqXCsV2eFhYrYUw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dev: true + '@typescript-eslint/types@8.6.0': {} - /@typescript-eslint/typescript-estree@8.6.0(typescript@5.6.2): - resolution: {integrity: sha512-MOVAzsKJIPIlLK239l5s06YXjNqpKTVhBVDnqUumQJja5+Y94V3+4VUFRA0G60y2jNnTVwRCkhyGQpavfsbq/g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/typescript-estree@8.6.0(typescript@5.6.2)': dependencies: '@typescript-eslint/types': 8.6.0 '@typescript-eslint/visitor-keys': 8.6.0 @@ -3653,50 +7258,36 @@ packages: minimatch: 9.0.5 semver: 7.6.3 ts-api-utils: 1.3.0(typescript@5.6.2) + optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/utils@8.6.0(eslint@9.9.1)(typescript@5.6.2): - resolution: {integrity: sha512-eNp9cWnYf36NaOVjkEUznf6fEgVy1TWpE0o52e4wtojjBx7D1UV2WAWGzR+8Y5lVFtpMLPwNbC67T83DWSph4A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + '@typescript-eslint/utils@8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.6)) '@typescript-eslint/scope-manager': 8.6.0 '@typescript-eslint/types': 8.6.0 '@typescript-eslint/typescript-estree': 8.6.0(typescript@5.6.2) - eslint: 9.9.1 + eslint: 9.9.1(jiti@1.21.6) transitivePeerDependencies: - supports-color - typescript - dev: true - /@typescript-eslint/visitor-keys@8.6.0: - resolution: {integrity: sha512-wapVFfZg9H0qOYh4grNVQiMklJGluQrOUiOhYRrQWhx7BY/+I1IYb8BczWNbbUpO+pqy0rDciv3lQH5E1bCLrg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.6.0': dependencies: '@typescript-eslint/types': 8.6.0 eslint-visitor-keys: 3.4.3 - dev: true - /@uiw/copy-to-clipboard@1.0.17: - resolution: {integrity: sha512-O2GUHV90Iw2VrSLVLK0OmNIMdZ5fgEg4NhvtwINsX+eZ/Wf6DWD0TdsK9xwV7dNRnK/UI2mQtl0a2/kRgm1m1A==} - dev: false + '@uiw/copy-to-clipboard@1.0.17': {} - /@uiw/react-markdown-preview@5.1.3(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-jV02wO4XHWFk54kz7sLqOkdPgJLttSfKLyen47XgjcyGgQXU2I4WJBygmdpV2AT9m/MiQ8qrN1Y+E5Syv9ZDpw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' + '@uiw/react-markdown-preview@5.1.3(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.6 '@uiw/copy-to-clipboard': 1.0.17 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-markdown: 9.0.1(@types/react@18.3.8)(react@18.2.0) + react: 19.0.0-rc-69d4b800-20241021 + react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021) + react-markdown: 9.0.1(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) rehype-attr: 3.0.3 rehype-autolink-headings: 7.1.0 rehype-ignore: 2.0.2 @@ -3710,87 +7301,58 @@ packages: transitivePeerDependencies: - '@types/react' - supports-color - dev: false - /@uiw/react-md-editor@4.0.4(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-JH9nDXXRhJtWPP4yE61VE+9ryFo9tg9v7KMwGfJCnaOOKuLF1MR3l/MNsiJCGkRjUwyto5WrU7kBSq8ODJEtYw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' + '@uiw/react-md-editor@4.0.4(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.6 - '@uiw/react-markdown-preview': 5.1.3(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@uiw/react-markdown-preview': 5.1.3(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-69d4b800-20241021 + react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021) rehype: 13.0.1 rehype-prism-plus: 2.0.0 transitivePeerDependencies: - '@types/react' - supports-color - dev: false - /@ungap/structured-clone@1.2.0: - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - dev: false + '@ungap/structured-clone@1.2.0': {} - /@webassemblyjs/ast@1.12.1: - resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} + '@webassemblyjs/ast@1.12.1': dependencies: '@webassemblyjs/helper-numbers': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - dev: false - /@webassemblyjs/floating-point-hex-parser@1.11.6: - resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} - dev: false + '@webassemblyjs/floating-point-hex-parser@1.11.6': {} - /@webassemblyjs/helper-api-error@1.11.6: - resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} - dev: false + '@webassemblyjs/helper-api-error@1.11.6': {} - /@webassemblyjs/helper-buffer@1.12.1: - resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} - dev: false + '@webassemblyjs/helper-buffer@1.12.1': {} - /@webassemblyjs/helper-numbers@1.11.6: - resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + '@webassemblyjs/helper-numbers@1.11.6': dependencies: '@webassemblyjs/floating-point-hex-parser': 1.11.6 '@webassemblyjs/helper-api-error': 1.11.6 '@xtuc/long': 4.2.2 - dev: false - /@webassemblyjs/helper-wasm-bytecode@1.11.6: - resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} - dev: false + '@webassemblyjs/helper-wasm-bytecode@1.11.6': {} - /@webassemblyjs/helper-wasm-section@1.12.1: - resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} + '@webassemblyjs/helper-wasm-section@1.12.1': dependencies: '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/helper-buffer': 1.12.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/wasm-gen': 1.12.1 - dev: false - /@webassemblyjs/ieee754@1.11.6: - resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + '@webassemblyjs/ieee754@1.11.6': dependencies: '@xtuc/ieee754': 1.2.0 - dev: false - /@webassemblyjs/leb128@1.11.6: - resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + '@webassemblyjs/leb128@1.11.6': dependencies: '@xtuc/long': 4.2.2 - dev: false - /@webassemblyjs/utf8@1.11.6: - resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} - dev: false + '@webassemblyjs/utf8@1.11.6': {} - /@webassemblyjs/wasm-edit@1.12.1: - resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} + '@webassemblyjs/wasm-edit@1.12.1': dependencies: '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/helper-buffer': 1.12.1 @@ -3800,29 +7362,23 @@ packages: '@webassemblyjs/wasm-opt': 1.12.1 '@webassemblyjs/wasm-parser': 1.12.1 '@webassemblyjs/wast-printer': 1.12.1 - dev: false - /@webassemblyjs/wasm-gen@1.12.1: - resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} + '@webassemblyjs/wasm-gen@1.12.1': dependencies: '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 - dev: false - /@webassemblyjs/wasm-opt@1.12.1: - resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} + '@webassemblyjs/wasm-opt@1.12.1': dependencies: '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/helper-buffer': 1.12.1 '@webassemblyjs/wasm-gen': 1.12.1 '@webassemblyjs/wasm-parser': 1.12.1 - dev: false - /@webassemblyjs/wasm-parser@1.12.1: - resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} + '@webassemblyjs/wasm-parser@1.12.1': dependencies: '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/helper-api-error': 1.11.6 @@ -3830,193 +7386,115 @@ packages: '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 - dev: false - /@webassemblyjs/wast-printer@1.12.1: - resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} + '@webassemblyjs/wast-printer@1.12.1': dependencies: '@webassemblyjs/ast': 1.12.1 '@xtuc/long': 4.2.2 - dev: false - /@xtuc/ieee754@1.2.0: - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - dev: false + '@xtuc/ieee754@1.2.0': {} - /@xtuc/long@4.2.2: - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - dev: false + '@xtuc/long@4.2.2': {} - /abbrev@2.0.0: - resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: false + abbrev@2.0.0: {} - /accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} + accepts@1.3.8: dependencies: mime-types: 2.1.35 negotiator: 0.6.3 - dev: false - /acorn-import-attributes@1.9.5(acorn@8.12.1): - resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} - peerDependencies: - acorn: ^8 + acorn-import-attributes@1.9.5(acorn@8.12.1): dependencies: acorn: 8.12.1 - dev: false - /acorn-jsx@5.3.2(acorn@8.12.1): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-jsx@5.3.2(acorn@8.12.1): dependencies: acorn: 8.12.1 - dev: true - /acorn-walk@8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} - engines: {node: '>=0.4.0'} + acorn-walk@8.3.4: dependencies: acorn: 8.12.1 - /acorn@8.12.1: - resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} - engines: {node: '>=0.4.0'} - hasBin: true + acorn@8.12.1: {} - /agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} + agent-base@6.0.2: dependencies: debug: 4.3.7 transitivePeerDependencies: - supports-color - dev: false - /ajv-formats@2.1.1(ajv@8.17.1): - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - dependencies: + ajv-formats@2.1.1(ajv@8.17.1): + optionalDependencies: ajv: 8.17.1 - dev: false - /ajv-keywords@3.5.2(ajv@6.12.6): - resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} - peerDependencies: - ajv: ^6.9.1 + ajv-keywords@3.5.2(ajv@6.12.6): dependencies: ajv: 6.12.6 - dev: false - /ajv-keywords@5.1.0(ajv@8.17.1): - resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} - peerDependencies: - ajv: ^8.8.2 + ajv-keywords@5.1.0(ajv@8.17.1): dependencies: ajv: 8.17.1 fast-deep-equal: 3.1.3 - dev: false - /ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - /ajv@8.17.1: - resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 fast-uri: 3.0.1 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - dev: false - /ansi-escapes@7.0.0: - resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} - engines: {node: '>=18'} + ansi-escapes@7.0.0: dependencies: environment: 1.1.0 - dev: true - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} + ansi-regex@5.0.1: {} - /ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} - engines: {node: '>=12'} + ansi-regex@6.1.0: {} - /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} + ansi-styles@3.2.1: dependencies: color-convert: 1.9.3 - dev: false - /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 - /ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} + ansi-styles@6.2.1: {} - /any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + any-promise@1.3.0: {} - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - /arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + arg@4.1.3: {} - /arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + arg@5.0.2: {} - /argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true + argparse@2.0.1: {} - /aria-hidden@1.2.4: - resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} - engines: {node: '>=10'} + aria-hidden@1.2.4: dependencies: tslib: 2.7.0 - dev: false - /aria-query@5.1.3: - resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} + aria-query@5.1.3: dependencies: deep-equal: 2.2.3 - dev: true - /array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} - engines: {node: '>= 0.4'} + array-buffer-byte-length@1.0.1: dependencies: call-bind: 1.0.7 is-array-buffer: 3.0.4 - dev: true - /array-includes@3.1.8: - resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} - engines: {node: '>= 0.4'} + array-includes@3.1.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -4024,11 +7502,8 @@ packages: es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 is-string: 1.0.7 - dev: true - /array.prototype.findlast@1.2.5: - resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} - engines: {node: '>= 0.4'} + array.prototype.findlast@1.2.5: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -4036,11 +7511,8 @@ packages: es-errors: 1.3.0 es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 - dev: true - /array.prototype.findlastindex@1.2.5: - resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} - engines: {node: '>= 0.4'} + array.prototype.findlastindex@1.2.5: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -4048,42 +7520,30 @@ packages: es-errors: 1.3.0 es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 - dev: true - /array.prototype.flat@1.3.2: - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} - engines: {node: '>= 0.4'} + array.prototype.flat@1.3.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 - dev: true - /array.prototype.flatmap@1.3.2: - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} - engines: {node: '>= 0.4'} + array.prototype.flatmap@1.3.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 - dev: true - /array.prototype.tosorted@1.1.4: - resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} - engines: {node: '>= 0.4'} + array.prototype.tosorted@1.1.4: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-errors: 1.3.0 es-shim-unscopables: 1.0.2 - dev: true - /arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} - engines: {node: '>= 0.4'} + arraybuffer.prototype.slice@1.0.3: dependencies: array-buffer-byte-length: 1.0.1 call-bind: 1.0.7 @@ -4093,31 +7553,16 @@ packages: get-intrinsic: 1.2.4 is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.3 - dev: true - /asap@2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - dev: false + asap@2.0.6: {} - /ast-types-flow@0.0.8: - resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} - dev: true + ast-types-flow@0.0.8: {} - /asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: false + asynckit@0.4.0: {} - /attr-accept@2.2.2: - resolution: {integrity: sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==} - engines: {node: '>=4'} - dev: false + attr-accept@2.2.2: {} - /autoprefixer@10.4.20(postcss@8.4.47): - resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 + autoprefixer@10.4.20(postcss@8.4.47): dependencies: browserslist: 4.23.3 caniuse-lite: 1.0.30001663 @@ -4126,145 +7571,88 @@ packages: picocolors: 1.1.0 postcss: 8.4.47 postcss-value-parser: 4.2.0 - dev: true - /available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} + available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.0.0 - dev: true - /axe-core@4.10.0: - resolution: {integrity: sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==} - engines: {node: '>=4'} - dev: true + axe-core@4.10.0: {} - /axios@1.7.7: - resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} + axios@1.7.7: dependencies: follow-redirects: 1.15.9 form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug - dev: false - /axobject-query@4.1.0: - resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} - engines: {node: '>= 0.4'} - dev: true + axobject-query@4.1.0: {} - /babel-loader@9.2.1(@babel/core@7.25.2)(webpack@5.94.0): - resolution: {integrity: sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==} - engines: {node: '>= 14.15.0'} - peerDependencies: - '@babel/core': ^7.12.0 - webpack: '>=5' + babel-loader@9.2.1(@babel/core@7.25.2)(webpack@5.94.0): dependencies: '@babel/core': 7.25.2 find-cache-dir: 4.0.0 schema-utils: 4.2.0 webpack: 5.94.0 - dev: false - /babel-plugin-transform-remove-imports@1.8.0(@babel/core@7.25.2): - resolution: {integrity: sha512-QdE5ZnIjON1pSgTPU8KzLnl/LEzdq9PLmZNuHgGKTx0LOI9PBrHBj0fz9uCg2CdssiTw7v/zVRYs8GJxbvhKnQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 + babel-plugin-transform-remove-imports@1.8.0(@babel/core@7.25.2): dependencies: '@babel/core': 7.25.2 - dev: false - /bail@2.0.2: - resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - dev: false + bail@2.0.2: {} - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@1.0.2: {} - /base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: false + base64-js@1.5.1: {} - /base64id@2.0.0: - resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} - engines: {node: ^4.5.0 || >= 5.9} - dev: false + base64id@2.0.0: {} - /bcp-47-match@2.0.3: - resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} - dev: false + bcp-47-match@2.0.3: {} - /binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} + binary-extensions@2.3.0: {} - /bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + bl@4.1.0: dependencies: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 - dev: false - /boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - dev: false + boolbase@1.0.0: {} - /bowser@2.11.0: - resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} - dev: false + bowser@2.11.0: {} - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - dev: true - /brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + brace-expansion@2.0.1: dependencies: balanced-match: 1.0.2 - /braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} + braces@3.0.3: dependencies: fill-range: 7.1.1 - /browserslist@4.23.3: - resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true + browserslist@4.23.3: dependencies: caniuse-lite: 1.0.30001663 electron-to-chromium: 1.5.27 node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.3) - /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: false + buffer-from@1.1.2: {} - /buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + buffer@5.7.1: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - dev: false - /busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} + busboy@1.6.0: dependencies: streamsearch: 1.1.0 - dev: false - /call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} + call-bind@1.0.7: dependencies: es-define-property: 1.0.0 es-errors: 1.3.0 @@ -4272,70 +7660,41 @@ packages: get-intrinsic: 1.2.4 set-function-length: 1.2.2 - /callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - dev: true + callsites@3.1.0: {} - /camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} + camelcase-css@2.0.1: {} - /caniuse-lite@1.0.30001663: - resolution: {integrity: sha512-o9C3X27GLKbLeTYZ6HBOLU1tsAcBZsLis28wrVzddShCS16RujjHp9GDHKZqrB3meE0YjhawvMFsGb/igqiPzA==} + caniuse-lite@1.0.30001663: {} - /ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - dev: false + ccount@2.0.1: {} - /chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} + chalk@2.4.2: dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 - dev: false - /chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} + chalk@3.0.0: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - dev: false - /chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - /chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - dev: true + chalk@5.3.0: {} - /character-entities-html4@2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - dev: false + character-entities-html4@2.1.0: {} - /character-entities-legacy@3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - dev: false + character-entities-legacy@3.0.0: {} - /character-entities@2.0.2: - resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - dev: false + character-entities@2.0.2: {} - /character-reference-invalid@2.0.1: - resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - dev: false + character-reference-invalid@2.0.1: {} - /chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} + chokidar@3.6.0: dependencies: anymatch: 3.1.3 braces: 3.0.3 @@ -4347,251 +7706,148 @@ packages: optionalDependencies: fsevents: 2.3.3 - /chrome-trace-event@1.0.4: - resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} - engines: {node: '>=6.0'} - dev: false + chrome-trace-event@1.0.4: {} - /class-variance-authority@0.7.0: - resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} + class-variance-authority@0.7.0: dependencies: clsx: 2.0.0 - dev: false - /cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} + cli-cursor@3.1.0: dependencies: restore-cursor: 3.1.0 - dev: false - /cli-cursor@5.0.0: - resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} - engines: {node: '>=18'} + cli-cursor@5.0.0: dependencies: restore-cursor: 5.1.0 - dev: true - /cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} - dev: false + cli-spinners@2.9.2: {} - /cli-truncate@4.0.0: - resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} - engines: {node: '>=18'} + cli-truncate@4.0.0: dependencies: slice-ansi: 5.0.0 string-width: 7.2.0 - dev: true - /client-only@0.0.1: - resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - dev: false + client-only@0.0.1: {} - /clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - dev: false + clone@1.0.4: {} - /clsx@2.0.0: - resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} - engines: {node: '>=6'} - dev: false + clsx@2.0.0: {} - /clsx@2.1.1: - resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} - engines: {node: '>=6'} - dev: false + clsx@2.1.1: {} - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + color-convert@1.9.3: dependencies: color-name: 1.1.3 - dev: false - /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} + color-convert@2.0.1: dependencies: color-name: 1.1.4 - /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - dev: false + color-name@1.1.3: {} - /color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + color-name@1.1.4: {} - /colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - dev: true + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + optional: true - /combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} + color@4.2.3: + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + optional: true + + colorette@2.0.20: {} + + combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 - dev: false - /comma-separated-tokens@2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - dev: false + comma-separated-tokens@2.0.3: {} - /commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} - dev: false + commander@10.0.1: {} - /commander@11.1.0: - resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} - engines: {node: '>=16'} - dev: false + commander@11.1.0: {} - /commander@12.1.0: - resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} - engines: {node: '>=18'} - dev: true + commander@12.1.0: {} - /commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - dev: false + commander@2.20.3: {} - /commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} + commander@4.1.1: {} - /common-path-prefix@3.0.0: - resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} - dev: false + common-path-prefix@3.0.0: {} - /commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - dev: false + commondir@1.0.1: {} - /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: true + concat-map@0.0.1: {} - /config-chain@1.1.13: - resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + config-chain@1.1.13: dependencies: ini: 1.3.8 proto-list: 1.2.4 - dev: false - /convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - dev: false + convert-source-map@2.0.0: {} - /cookie@0.4.2: - resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} - engines: {node: '>= 0.6'} - dev: false + cookie@0.4.2: {} - /cookie@0.6.0: - resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} - engines: {node: '>= 0.6'} - dev: false + cookie@0.6.0: {} - /cors@2.8.5: - resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} - engines: {node: '>= 0.10'} + cors@2.8.5: dependencies: object-assign: 4.1.1 vary: 1.1.2 - dev: false - /create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + create-require@1.1.1: {} - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} + cross-spawn@7.0.3: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - /css-selector-parser@3.0.5: - resolution: {integrity: sha512-3itoDFbKUNx1eKmVpYMFyqKX04Ww9osZ+dLgrk6GEv6KMVeXUhUnp4I5X+evw+u3ZxVU6RFXSSRxlTeMh8bA+g==} - dev: false + css-selector-parser@3.0.5: {} - /cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true + cssesc@3.0.0: {} - /csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + csstype@3.1.3: {} - /damerau-levenshtein@1.0.8: - resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - dev: true + damerau-levenshtein@1.0.8: {} - /data-view-buffer@1.0.1: - resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} - engines: {node: '>= 0.4'} + data-view-buffer@1.0.1: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 - dev: true - /data-view-byte-length@1.0.1: - resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} - engines: {node: '>= 0.4'} + data-view-byte-length@1.0.1: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 - dev: true - /data-view-byte-offset@1.0.0: - resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} - engines: {node: '>= 0.4'} + data-view-byte-offset@1.0.0: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 - dev: true - /debounce@2.0.0: - resolution: {integrity: sha512-xRetU6gL1VJbs85Mc4FoEGSjQxzpdxRyFhe3lmWFyy2EzydIcD4xzUvRJMD+NPDfMwKNhxa3PvsIOU32luIWeA==} - engines: {node: '>=18'} - dev: false + debounce@2.0.0: {} - /debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + debug@3.2.7: dependencies: ms: 2.1.3 - dev: true - /debug@4.3.7: - resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + debug@4.3.7: dependencies: ms: 2.1.3 - /decode-named-character-reference@1.0.2: - resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + decode-named-character-reference@1.0.2: dependencies: character-entities: 2.0.2 - dev: false - /deep-equal@2.2.3: - resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} - engines: {node: '>= 0.4'} + deep-equal@2.2.3: dependencies: array-buffer-byte-length: 1.0.1 call-bind: 1.0.7 @@ -4611,185 +7867,113 @@ packages: which-boxed-primitive: 1.0.2 which-collection: 1.0.2 which-typed-array: 1.1.15 - dev: true - /deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: true + deep-is@0.1.4: {} - /deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - dev: false + deepmerge@4.3.1: {} - /defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + defaults@1.0.4: dependencies: clone: 1.0.4 - dev: false - /define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} + define-data-property@1.1.4: dependencies: es-define-property: 1.0.0 es-errors: 1.3.0 gopd: 1.0.1 - /define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} + define-properties@1.2.1: dependencies: define-data-property: 1.1.4 has-property-descriptors: 1.0.2 object-keys: 1.1.1 - dev: true - /delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - dev: false + delayed-stream@1.0.0: {} - /dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - dev: false + dequal@2.0.3: {} - /detect-node-es@1.1.0: - resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} - dev: false + detect-libc@2.0.3: + optional: true - /devlop@1.1.0: - resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + detect-node-es@1.1.0: {} + + devlop@1.1.0: dependencies: dequal: 2.0.3 - dev: false - /dezalgo@1.0.4: - resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} + dezalgo@1.0.4: dependencies: asap: 2.0.6 wrappy: 1.0.2 - dev: false - /didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + didyoumean@1.2.2: {} - /diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} + diff@4.0.2: {} - /direction@2.0.1: - resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} - hasBin: true - dev: false + direction@2.0.1: {} - /dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dlv@1.1.3: {} - /doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} + doctrine@2.1.0: dependencies: esutils: 2.0.3 - dev: true - /doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} + doctrine@3.0.0: dependencies: esutils: 2.0.3 - dev: true - /dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + dom-serializer@2.0.0: dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 entities: 4.5.0 - dev: false - /domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - dev: false + domelementtype@2.3.0: {} - /domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} + domhandler@5.0.3: dependencies: domelementtype: 2.3.0 - dev: false - /domutils@3.1.0: - resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + domutils@3.1.0: dependencies: dom-serializer: 2.0.0 domelementtype: 2.3.0 domhandler: 5.0.3 - dev: false - /dotenv@16.4.5: - resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} - engines: {node: '>=12'} - dev: true + dotenv@16.4.5: {} - /eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + eastasianwidth@0.2.0: {} - /editorconfig@1.0.4: - resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==} - engines: {node: '>=14'} - hasBin: true + editorconfig@1.0.4: dependencies: '@one-ini/wasm': 0.1.1 commander: 10.0.1 minimatch: 9.0.1 semver: 7.6.3 - dev: false - /electron-to-chromium@1.5.27: - resolution: {integrity: sha512-o37j1vZqCoEgBuWWXLHQgTN/KDKe7zwpiY5CPeq2RvUqOyJw9xnrULzZAEVQ5p4h+zjMk7hgtOoPdnLxr7m/jw==} + electron-to-chromium@1.5.27: {} - /embla-carousel-react@8.3.0(react@18.2.0): - resolution: {integrity: sha512-P1FlinFDcIvggcErRjNuVqnUR8anyo8vLMIH8Rthgofw7Nj8qTguCa2QjFAbzxAUTQTPNNjNL7yt0BGGinVdFw==} - peerDependencies: - react: ^16.8.0 || ^17.0.1 || ^18.0.0 + embla-carousel-react@8.3.0(react@19.0.0-rc-69d4b800-20241021): dependencies: embla-carousel: 8.3.0 embla-carousel-reactive-utils: 8.3.0(embla-carousel@8.3.0) - react: 18.2.0 - dev: false + react: 19.0.0-rc-69d4b800-20241021 - /embla-carousel-reactive-utils@8.3.0(embla-carousel@8.3.0): - resolution: {integrity: sha512-EYdhhJ302SC4Lmkx8GRsp0sjUhEN4WyFXPOk0kGu9OXZSRMmcBlRgTvHcq8eKJE1bXWBsOi1T83B+BSSVZSmwQ==} - peerDependencies: - embla-carousel: 8.3.0 + embla-carousel-reactive-utils@8.3.0(embla-carousel@8.3.0): dependencies: embla-carousel: 8.3.0 - dev: false - /embla-carousel@8.3.0: - resolution: {integrity: sha512-Ve8dhI4w28qBqR8J+aMtv7rLK89r1ZA5HocwFz6uMB/i5EiC7bGI7y+AM80yAVUJw3qqaZYK7clmZMUR8kM3UA==} - dev: false + embla-carousel@8.3.0: {} - /emoji-regex@10.4.0: - resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} - dev: true + emoji-regex@10.4.0: {} - /emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + emoji-regex@8.0.0: {} - /emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + emoji-regex@9.2.2: {} - /engine.io-parser@5.2.3: - resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} - engines: {node: '>=10.0.0'} - dev: false + engine.io-parser@5.2.3: {} - /engine.io@6.5.5: - resolution: {integrity: sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==} - engines: {node: '>=10.2.0'} + engine.io@6.5.5: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 @@ -4805,28 +7989,17 @@ packages: - bufferutil - supports-color - utf-8-validate - dev: false - /enhanced-resolve@5.17.1: - resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} - engines: {node: '>=10.13.0'} + enhanced-resolve@5.17.1: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 - /entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - dev: false + entities@4.5.0: {} - /environment@1.1.0: - resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} - engines: {node: '>=18'} - dev: true + environment@1.1.0: {} - /es-abstract@1.23.3: - resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} - engines: {node: '>= 0.4'} + es-abstract@1.23.3: dependencies: array-buffer-byte-length: 1.0.1 arraybuffer.prototype.slice: 1.0.3 @@ -4874,20 +8047,14 @@ packages: typed-array-length: 1.0.6 unbox-primitive: 1.0.2 which-typed-array: 1.1.15 - dev: true - /es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} + es-define-property@1.0.0: dependencies: get-intrinsic: 1.2.4 - /es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} + es-errors@1.3.0: {} - /es-get-iterator@1.1.3: - resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} + es-get-iterator@1.1.3: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 @@ -4898,11 +8065,8 @@ packages: is-string: 1.0.7 isarray: 2.0.5 stop-iteration-iterator: 1.0.0 - dev: true - /es-iterator-helpers@1.0.19: - resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} - engines: {node: '>= 0.4'} + es-iterator-helpers@1.0.19: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -4918,48 +8082,47 @@ packages: internal-slot: 1.0.7 iterator.prototype: 1.1.2 safe-array-concat: 1.1.2 - dev: true - /es-module-lexer@1.5.4: - resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} - dev: false + es-iterator-helpers@1.1.0: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-set-tostringtag: 2.0.3 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + globalthis: 1.0.4 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + internal-slot: 1.0.7 + iterator.prototype: 1.1.3 + safe-array-concat: 1.1.2 - /es-object-atoms@1.0.0: - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} - engines: {node: '>= 0.4'} + es-module-lexer@1.5.4: {} + + es-object-atoms@1.0.0: dependencies: es-errors: 1.3.0 - dev: true - /es-set-tostringtag@2.0.3: - resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} - engines: {node: '>= 0.4'} + es-set-tostringtag@2.0.3: dependencies: get-intrinsic: 1.2.4 has-tostringtag: 1.0.2 hasown: 2.0.2 - dev: true - /es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + es-shim-unscopables@1.0.2: dependencies: hasown: 2.0.2 - dev: true - /es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} + es-to-primitive@1.2.1: dependencies: is-callable: 1.2.7 is-date-object: 1.0.5 is-symbol: 1.0.4 - dev: true - /esbuild@0.19.11: - resolution: {integrity: sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true + esbuild@0.19.11: optionalDependencies: '@esbuild/aix-ppc64': 0.19.11 '@esbuild/android-arm': 0.19.11 @@ -4984,203 +8147,95 @@ packages: '@esbuild/win32-arm64': 0.19.11 '@esbuild/win32-ia32': 0.19.11 '@esbuild/win32-x64': 0.19.11 - dev: false - /escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} + escalade@3.2.0: {} - /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - dev: false + escape-string-regexp@1.0.5: {} - /escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - dev: true + escape-string-regexp@4.0.0: {} - /escape-string-regexp@5.0.0: - resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} - engines: {node: '>=12'} - dev: false + escape-string-regexp@5.0.0: {} - /eslint-config-next@14.2.13(eslint-plugin-import-x@4.3.0)(eslint@9.9.1)(typescript@5.6.2): - resolution: {integrity: sha512-aro1EKAoyYchnO/3Tlo91hnNBO7QO7qnv/79MAFC+4Jq8TdUVKQlht5d2F+YjrePjdpOvfL+mV9JPfyYNwkk1g==} - peerDependencies: - eslint: ^7.23.0 || ^8.0.0 - typescript: '>=3.3.1' - peerDependenciesMeta: - typescript: - optional: true + eslint-config-next@15.0.1(eslint-plugin-import-x@4.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2): dependencies: - '@next/eslint-plugin-next': 14.2.13 + '@next/eslint-plugin-next': 15.0.1 '@rushstack/eslint-patch': 1.10.4 - '@typescript-eslint/eslint-plugin': 8.6.0(@typescript-eslint/parser@8.6.0)(eslint@9.9.1)(typescript@5.6.2) - '@typescript-eslint/parser': 8.6.0(eslint@9.9.1)(typescript@5.6.2) - eslint: 9.9.1 + '@typescript-eslint/eslint-plugin': 8.6.0(@typescript-eslint/parser@8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/parser': 8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + eslint: 9.9.1(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.6.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.3.0)(eslint-plugin-import@2.30.0)(eslint@9.9.1) - eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.6.0)(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1) - eslint-plugin-jsx-a11y: 6.10.0(eslint@9.9.1) - eslint-plugin-react: 7.36.1(eslint@9.9.1) - eslint-plugin-react-hooks: 4.6.2(eslint@9.9.1) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2))(eslint-plugin-import@2.31.0)(eslint@9.9.1(jiti@1.21.6)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1(jiti@1.21.6)) + eslint-plugin-jsx-a11y: 6.10.0(eslint@9.9.1(jiti@1.21.6)) + eslint-plugin-react: 7.37.2(eslint@9.9.1(jiti@1.21.6)) + eslint-plugin-react-hooks: 5.0.0(eslint@9.9.1(jiti@1.21.6)) + optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: - eslint-import-resolver-webpack - eslint-plugin-import-x - supports-color - dev: true - /eslint-config-prettier@9.1.0(eslint@9.9.1): - resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' + eslint-config-prettier@9.1.0(eslint@9.9.1(jiti@1.21.6)): dependencies: - eslint: 9.9.1 - dev: true + eslint: 9.9.1(jiti@1.21.6) - /eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7 is-core-module: 2.15.1 resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.6.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.3.0)(eslint-plugin-import@2.30.0)(eslint@9.9.1): - resolution: {integrity: sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: '*' - eslint-plugin-import: '*' - eslint-plugin-import-x: '*' - peerDependenciesMeta: - eslint-plugin-import: - optional: true - eslint-plugin-import-x: - optional: true - dependencies: - '@nolyfill/is-core-module': 1.0.39 - debug: 4.3.7 - enhanced-resolve: 5.17.1 - eslint: 9.9.1 - eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.6.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1) - eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.6.0)(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1) - eslint-plugin-import-x: 4.3.0(eslint@9.9.1)(typescript@5.6.2) - fast-glob: 3.3.2 - get-tsconfig: 4.8.1 - is-bun-module: 1.2.1 - is-glob: 4.0.3 - transitivePeerDependencies: - - '@typescript-eslint/parser' - - eslint-import-resolver-node - - eslint-import-resolver-webpack + transitivePeerDependencies: - supports-color - dev: true - /eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.6.0)(eslint-plugin-import-x@4.3.0)(eslint@9.9.1): - resolution: {integrity: sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: '*' - eslint-plugin-import: '*' - eslint-plugin-import-x: '*' - peerDependenciesMeta: - eslint-plugin-import: - optional: true - eslint-plugin-import-x: - optional: true + eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2))(eslint-plugin-import@2.31.0)(eslint@9.9.1(jiti@1.21.6)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.3.7 enhanced-resolve: 5.17.1 - eslint: 9.9.1 - eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.6.0)(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1) - eslint-plugin-import-x: 4.3.0(eslint@9.9.1)(typescript@5.6.2) + eslint: 9.9.1(jiti@1.21.6) + eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1(jiti@1.21.6)) fast-glob: 3.3.2 get-tsconfig: 4.8.1 is-bun-module: 1.2.1 is-glob: 4.0.3 + optionalDependencies: + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1(jiti@1.21.6)) + eslint-plugin-import-x: 4.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-node - eslint-import-resolver-webpack - supports-color - dev: true - /eslint-module-utils@2.11.0(@typescript-eslint/parser@8.6.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1): - resolution: {integrity: sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true + eslint-module-utils@2.11.0(@typescript-eslint/parser@8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1(jiti@1.21.6)): dependencies: - '@typescript-eslint/parser': 8.6.0(eslint@9.9.1)(typescript@5.6.2) debug: 3.2.7 - eslint: 9.9.1 + optionalDependencies: + '@typescript-eslint/parser': 8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + eslint: 9.9.1(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.6.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.3.0)(eslint-plugin-import@2.30.0)(eslint@9.9.1) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2))(eslint-plugin-import@2.31.0)(eslint@9.9.1(jiti@1.21.6)) transitivePeerDependencies: - supports-color - dev: true - /eslint-module-utils@2.11.0(@typescript-eslint/parser@8.6.0)(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1): - resolution: {integrity: sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1(jiti@1.21.6)): dependencies: - '@typescript-eslint/parser': 8.6.0(eslint@9.9.1)(typescript@5.6.2) debug: 3.2.7 - eslint: 9.9.1 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.6.0)(eslint-plugin-import-x@4.3.0)(eslint@9.9.1) + optionalDependencies: + '@typescript-eslint/parser': 8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + eslint: 9.9.1(jiti@1.21.6) + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import-x@4.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2))(eslint-plugin-import@2.31.0)(eslint@9.9.1(jiti@1.21.6)) transitivePeerDependencies: - supports-color - dev: true - /eslint-plugin-import-x@4.3.0(eslint@9.9.1)(typescript@5.6.2): - resolution: {integrity: sha512-PxGzP7gAjF2DLeRnQtbYkkgZDg1intFyYr/XS1LgTYXUDrSXMHGkXx8++6i2eDv2jMs0jfeO6G6ykyeWxiFX7w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint-plugin-import-x@4.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2): dependencies: - '@typescript-eslint/utils': 8.6.0(eslint@9.9.1)(typescript@5.6.2) + '@typescript-eslint/utils': 8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) debug: 4.3.7 doctrine: 3.0.0 - eslint: 9.9.1 + eslint: 9.9.1(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 get-tsconfig: 4.8.1 is-glob: 4.0.3 @@ -5191,29 +8246,19 @@ packages: transitivePeerDependencies: - supports-color - typescript - dev: true - /eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.6.0)(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1): - resolution: {integrity: sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1(jiti@1.21.6)): dependencies: '@rtsao/scc': 1.1.0 - '@typescript-eslint/parser': 8.6.0(eslint@9.9.1)(typescript@5.6.2) array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.9.1 + eslint: 9.9.1(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.6.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.9.1(jiti@1.21.6)) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -5222,18 +8267,16 @@ packages: object.groupby: 1.0.3 object.values: 1.2.0 semver: 6.3.1 + string.prototype.trimend: 1.0.8 tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - dev: true - /eslint-plugin-jsx-a11y@6.10.0(eslint@9.9.1): - resolution: {integrity: sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 + eslint-plugin-jsx-a11y@6.10.0(eslint@9.9.1(jiti@1.21.6)): dependencies: aria-query: 5.1.3 array-includes: 3.1.8 @@ -5244,7 +8287,7 @@ packages: damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 es-iterator-helpers: 1.0.19 - eslint: 9.9.1 + eslint: 9.9.1(jiti@1.21.6) hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -5252,65 +8295,34 @@ packages: object.fromentries: 2.0.8 safe-regex-test: 1.0.3 string.prototype.includes: 2.0.0 - dev: true - /eslint-plugin-playwright@1.6.2(eslint@9.9.1): - resolution: {integrity: sha512-mraN4Em3b5jLt01q7qWPyLg0Q5v3KAWfJSlEWwldyUXoa7DSPrBR4k6B6LROLqipsG8ndkwWMdjl1Ffdh15tag==} - engines: {node: '>=16.6.0'} - peerDependencies: - eslint: '>=8.40.0' - eslint-plugin-jest: '>=25' - peerDependenciesMeta: - eslint-plugin-jest: - optional: true + eslint-plugin-playwright@1.6.2(eslint@9.9.1(jiti@1.21.6)): dependencies: - eslint: 9.9.1 + eslint: 9.9.1(jiti@1.21.6) globals: 13.24.0 - dev: true - /eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0)(eslint@9.9.1)(prettier@3.3.3): - resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - '@types/eslint': '>=8.0.0' - eslint: '>=8.0.0' - eslint-config-prettier: '*' - prettier: '>=3.0.0' - peerDependenciesMeta: - '@types/eslint': - optional: true - eslint-config-prettier: - optional: true + eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0(eslint@9.9.1(jiti@1.21.6)))(eslint@9.9.1(jiti@1.21.6))(prettier@3.3.3): dependencies: - eslint: 9.9.1 - eslint-config-prettier: 9.1.0(eslint@9.9.1) + eslint: 9.9.1(jiti@1.21.6) prettier: 3.3.3 prettier-linter-helpers: 1.0.0 synckit: 0.9.1 - dev: true + optionalDependencies: + eslint-config-prettier: 9.1.0(eslint@9.9.1(jiti@1.21.6)) - /eslint-plugin-react-hooks@4.6.2(eslint@9.9.1): - resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + eslint-plugin-react-hooks@5.0.0(eslint@9.9.1(jiti@1.21.6)): dependencies: - eslint: 9.9.1 - dev: true + eslint: 9.9.1(jiti@1.21.6) - /eslint-plugin-react@7.36.1(eslint@9.9.1): - resolution: {integrity: sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + eslint-plugin-react@7.37.2(eslint@9.9.1(jiti@1.21.6)): dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 array.prototype.flatmap: 1.3.2 array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 - es-iterator-helpers: 1.0.19 - eslint: 9.9.1 + es-iterator-helpers: 1.1.0 + eslint: 9.9.1(jiti@1.21.6) estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -5323,57 +8335,30 @@ packages: semver: 6.3.1 string.prototype.matchall: 4.0.11 string.prototype.repeat: 1.0.0 - dev: true - /eslint-plugin-unused-imports@4.1.4(eslint@9.9.1): - resolution: {integrity: sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==} - peerDependencies: - '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 - eslint: ^9.0.0 || ^8.0.0 - peerDependenciesMeta: - '@typescript-eslint/eslint-plugin': - optional: true + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.6.0(@typescript-eslint/parser@8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.9.1(jiti@1.21.6)): dependencies: - eslint: 9.9.1 - dev: true + eslint: 9.9.1(jiti@1.21.6) + optionalDependencies: + '@typescript-eslint/eslint-plugin': 8.6.0(@typescript-eslint/parser@8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) - /eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} + eslint-scope@5.1.1: dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 - dev: false - /eslint-scope@8.0.2: - resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-scope@8.0.2: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - dev: true - /eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true + eslint-visitor-keys@3.4.3: {} - /eslint-visitor-keys@4.0.0: - resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dev: true + eslint-visitor-keys@4.0.0: {} - /eslint@9.9.1: - resolution: {integrity: sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - peerDependencies: - jiti: '*' - peerDependenciesMeta: - jiti: - optional: true + eslint@9.9.1(jiti@1.21.6): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.6)) '@eslint-community/regexpp': 4.11.1 '@eslint/config-array': 0.18.0 '@eslint/eslintrc': 3.1.0 @@ -5407,66 +8392,40 @@ packages: optionator: 0.9.4 strip-ansi: 6.0.1 text-table: 0.2.0 + optionalDependencies: + jiti: 1.21.6 transitivePeerDependencies: - supports-color - dev: true - /espree@10.1.0: - resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + espree@10.1.0: dependencies: acorn: 8.12.1 acorn-jsx: 5.3.2(acorn@8.12.1) eslint-visitor-keys: 4.0.0 - dev: true - /esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} - engines: {node: '>=0.10'} + esquery@1.6.0: dependencies: estraverse: 5.3.0 - dev: true - /esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} + esrecurse@4.3.0: dependencies: estraverse: 5.3.0 - /estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - dev: false + estraverse@4.3.0: {} - /estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} + estraverse@5.3.0: {} - /estree-util-is-identifier-name@3.0.0: - resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} - dev: false + estree-util-is-identifier-name@3.0.0: {} - /estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - dev: false + estree-walker@2.0.2: {} - /esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - dev: true + esutils@2.0.3: {} - /eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - dev: true + eventemitter3@5.0.1: {} - /events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - dev: false + events@3.3.0: {} - /execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} + execa@8.0.1: dependencies: cross-spawn: 7.0.3 get-stream: 8.0.1 @@ -5477,26 +8436,16 @@ packages: onetime: 6.0.0 signal-exit: 4.1.0 strip-final-newline: 3.0.0 - dev: true - /extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - dev: false + extend@3.0.2: {} - /fast-deep-equal@2.0.1: - resolution: {integrity: sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==} - dev: false + fast-deep-equal@2.0.1: {} - /fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-deep-equal@3.1.3: {} - /fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - dev: true + fast-diff@1.3.0: {} - /fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} + fast-glob@3.3.1: dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 @@ -5504,177 +8453,111 @@ packages: merge2: 1.4.1 micromatch: 4.0.8 - /fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 - /fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - dev: true + fast-json-stable-stringify@2.1.0: {} - /fast-uri@3.0.1: - resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==} - dev: false + fast-levenshtein@2.0.6: {} - /fast-xml-parser@4.4.1: - resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} - hasBin: true + fast-uri@3.0.1: {} + + fast-xml-parser@4.4.1: dependencies: strnum: 1.0.5 - dev: false - /fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + fastq@1.17.1: dependencies: reusify: 1.0.4 - /file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} + file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 - dev: true - /file-selector@0.6.0: - resolution: {integrity: sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==} - engines: {node: '>= 12'} + file-selector@0.6.0: dependencies: tslib: 2.7.0 - dev: false - /fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 - /find-cache-dir@4.0.0: - resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} - engines: {node: '>=14.16'} + find-cache-dir@4.0.0: dependencies: common-path-prefix: 3.0.0 pkg-dir: 7.0.0 - dev: false - /find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} + find-up@5.0.0: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - dev: true - /find-up@6.3.0: - resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + find-up@6.3.0: dependencies: locate-path: 7.2.0 path-exists: 5.0.0 - dev: false - /flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} + flat-cache@4.0.1: dependencies: flatted: 3.3.1 keyv: 4.5.4 - dev: true - /flatted@3.3.1: - resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - dev: true + flatted@3.3.1: {} - /follow-redirects@1.15.9: - resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dev: false + follow-redirects@1.15.9: {} - /for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + for-each@0.3.3: dependencies: is-callable: 1.2.7 - dev: true - /foreground-child@3.3.0: - resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} - engines: {node: '>=14'} + foreground-child@3.3.0: dependencies: cross-spawn: 7.0.3 signal-exit: 4.1.0 - /form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} + form-data@4.0.0: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - dev: false - /formidable@3.5.1: - resolution: {integrity: sha512-WJWKelbRHN41m5dumb0/k8TeAx7Id/y3a+Z7QfhxP/htI9Js5zYaEDtG8uMgG0vM0lOlqnmjE99/kfpOYi/0Og==} + formidable@3.5.1: dependencies: dezalgo: 1.0.4 hexoid: 1.0.0 once: 1.4.0 - dev: false - /fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - dev: true + fraction.js@4.3.7: {} - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: false + fs.realpath@1.0.0: {} - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true + fsevents@2.3.2: optional: true - /fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true + fsevents@2.3.3: optional: true - /function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + function-bind@1.1.2: {} - /function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} - engines: {node: '>= 0.4'} + function.prototype.name@1.1.6: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 functions-have-names: 1.2.3 - dev: true - /functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: true + functions-have-names@1.2.3: {} - /gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - dev: false + gensync@1.0.0-beta.2: {} - /get-east-asian-width@1.2.0: - resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} - engines: {node: '>=18'} - dev: true + get-east-asian-width@1.2.0: {} - /get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} + get-intrinsic@1.2.4: dependencies: es-errors: 1.3.0 function-bind: 1.1.2 @@ -5682,78 +8565,41 @@ packages: has-symbols: 1.0.3 hasown: 2.0.2 - /get-nonce@1.0.1: - resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} - engines: {node: '>=6'} - dev: false + get-nonce@1.0.1: {} - /get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - dev: true + get-stream@8.0.1: {} - /get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} - engines: {node: '>= 0.4'} + get-symbol-description@1.0.2: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 - dev: true - /get-tsconfig@4.8.1: - resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} + get-tsconfig@4.8.1: dependencies: resolve-pkg-maps: 1.0.0 - dev: true - /github-slugger@2.0.0: - resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} - dev: false + github-slugger@2.0.0: {} - /glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 - /glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} + glob-parent@6.0.2: dependencies: is-glob: 4.0.3 - /glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - dev: false - - /glob@10.3.10: - resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - dependencies: - foreground-child: 3.3.0 - jackspeak: 2.3.6 - minimatch: 9.0.5 - minipass: 7.1.2 - path-scurry: 1.11.1 - dev: true + glob-to-regexp@0.4.1: {} - /glob@10.3.4: - resolution: {integrity: sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true + glob@10.3.4: dependencies: foreground-child: 3.3.0 jackspeak: 2.3.6 minimatch: 9.0.5 minipass: 7.1.2 path-scurry: 1.11.1 - dev: false - /glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true + glob@10.4.5: dependencies: foreground-child: 3.3.0 jackspeak: 3.4.3 @@ -5762,96 +8608,58 @@ packages: package-json-from-dist: 1.0.0 path-scurry: 1.11.1 - /glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - deprecated: Glob versions prior to v9 are no longer supported + glob@8.1.0: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 minimatch: 5.1.6 once: 1.4.0 - dev: false - /globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - dev: false + globals@11.12.0: {} - /globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} + globals@13.24.0: dependencies: type-fest: 0.20.2 - dev: true - /globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - dev: true + globals@14.0.0: {} - /globalthis@1.0.4: - resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} - engines: {node: '>= 0.4'} + globalthis@1.0.4: dependencies: define-properties: 1.2.1 gopd: 1.0.1 - dev: true - /gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + gopd@1.0.1: dependencies: get-intrinsic: 1.2.4 - /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + graceful-fs@4.2.11: {} - /graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - dev: true + graphemer@1.4.0: {} - /has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - dev: true + has-bigints@1.0.2: {} - /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - dev: false + has-flag@3.0.0: {} - /has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} + has-flag@4.0.0: {} - /has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.0 - /has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} + has-proto@1.0.3: {} - /has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} + has-symbols@1.0.3: {} - /has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} + has-tostringtag@1.0.2: dependencies: has-symbols: 1.0.3 - dev: true - /hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} + hasown@2.0.2: dependencies: function-bind: 1.1.2 - /hast-util-from-html@2.0.3: - resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==} + hast-util-from-html@2.0.3: dependencies: '@types/hast': 3.0.4 devlop: 1.1.0 @@ -5859,10 +8667,8 @@ packages: parse5: 7.1.2 vfile: 6.0.3 vfile-message: 4.0.2 - dev: false - /hast-util-from-parse5@8.0.1: - resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} + hast-util-from-parse5@8.0.1: dependencies: '@types/hast': 3.0.4 '@types/unist': 3.0.3 @@ -5872,40 +8678,28 @@ packages: vfile: 6.0.3 vfile-location: 5.0.3 web-namespaces: 2.0.1 - dev: false - /hast-util-has-property@3.0.0: - resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} + hast-util-has-property@3.0.0: dependencies: '@types/hast': 3.0.4 - dev: false - /hast-util-heading-rank@3.0.0: - resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} + hast-util-heading-rank@3.0.0: dependencies: '@types/hast': 3.0.4 - dev: false - /hast-util-is-element@3.0.0: - resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + hast-util-is-element@3.0.0: dependencies: '@types/hast': 3.0.4 - dev: false - /hast-util-parse-selector@3.1.1: - resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} + hast-util-parse-selector@3.1.1: dependencies: '@types/hast': 2.3.10 - dev: false - /hast-util-parse-selector@4.0.0: - resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} + hast-util-parse-selector@4.0.0: dependencies: '@types/hast': 3.0.4 - dev: false - /hast-util-raw@9.0.4: - resolution: {integrity: sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA==} + hast-util-raw@9.0.4: dependencies: '@types/hast': 3.0.4 '@types/unist': 3.0.3 @@ -5920,18 +8714,14 @@ packages: vfile: 6.0.3 web-namespaces: 2.0.1 zwitch: 2.0.4 - dev: false - /hast-util-sanitize@5.0.1: - resolution: {integrity: sha512-IGrgWLuip4O2nq5CugXy4GI2V8kx4sFVy5Hd4vF7AR2gxS0N9s7nEAVUyeMtZKZvzrxVsHt73XdTsno1tClIkQ==} + hast-util-sanitize@5.0.1: dependencies: '@types/hast': 3.0.4 '@ungap/structured-clone': 1.2.0 unist-util-position: 5.0.0 - dev: false - /hast-util-select@6.0.2: - resolution: {integrity: sha512-hT/SD/d/Meu+iobvgkffo1QecV8WeKWxwsNMzcTJsKw1cKTQKSR/7ArJeURLNJF9HDjp9nVoORyNNJxrvBye8Q==} + hast-util-select@6.0.2: dependencies: '@types/hast': 3.0.4 '@types/unist': 3.0.3 @@ -5949,10 +8739,8 @@ packages: space-separated-tokens: 2.0.2 unist-util-visit: 5.0.0 zwitch: 2.0.4 - dev: false - /hast-util-to-html@9.0.3: - resolution: {integrity: sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==} + hast-util-to-html@9.0.3: dependencies: '@types/hast': 3.0.4 '@types/unist': 3.0.3 @@ -5965,10 +8753,8 @@ packages: space-separated-tokens: 2.0.2 stringify-entities: 4.0.4 zwitch: 2.0.4 - dev: false - /hast-util-to-jsx-runtime@2.3.0: - resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} + hast-util-to-jsx-runtime@2.3.0: dependencies: '@types/estree': 1.0.6 '@types/hast': 3.0.4 @@ -5987,10 +8773,8 @@ packages: vfile-message: 4.0.2 transitivePeerDependencies: - supports-color - dev: false - /hast-util-to-parse5@8.0.0: - resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} + hast-util-to-parse5@8.0.0: dependencies: '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 @@ -5999,595 +8783,356 @@ packages: space-separated-tokens: 2.0.2 web-namespaces: 2.0.1 zwitch: 2.0.4 - dev: false - /hast-util-to-string@3.0.0: - resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} + hast-util-to-string@3.0.0: dependencies: '@types/hast': 3.0.4 - dev: false - /hast-util-whitespace@3.0.0: - resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + hast-util-whitespace@3.0.0: dependencies: '@types/hast': 3.0.4 - dev: false - /hastscript@7.2.0: - resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} + hastscript@7.2.0: dependencies: '@types/hast': 2.3.10 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 3.1.1 property-information: 6.5.0 space-separated-tokens: 2.0.2 - dev: false - /hastscript@8.0.0: - resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} + hastscript@8.0.0: dependencies: '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 4.0.0 property-information: 6.5.0 space-separated-tokens: 2.0.2 - dev: false - /hexoid@1.0.0: - resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==} - engines: {node: '>=8'} - dev: false + hexoid@1.0.0: {} - /hoist-non-react-statics@3.3.2: - resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + hoist-non-react-statics@3.3.2: dependencies: react-is: 16.13.1 - dev: false - /html-to-text@9.0.5: - resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} - engines: {node: '>=14'} + html-to-text@9.0.5: dependencies: '@selderee/plugin-htmlparser2': 0.11.0 deepmerge: 4.3.1 dom-serializer: 2.0.0 htmlparser2: 8.0.2 selderee: 0.11.0 - dev: false - /html-url-attributes@3.0.0: - resolution: {integrity: sha512-/sXbVCWayk6GDVg3ctOX6nxaVj7So40FcFAnWlWGNAB1LpYKcV5Cd10APjPjW80O7zYW2MsjBV4zZ7IZO5fVow==} - dev: false + html-url-attributes@3.0.0: {} - /html-void-elements@3.0.0: - resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - dev: false + html-void-elements@3.0.0: {} - /htmlparser2@8.0.2: - resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + htmlparser2@8.0.2: dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 domutils: 3.1.0 entities: 4.5.0 - dev: false - /https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} + https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 debug: 4.3.7 transitivePeerDependencies: - supports-color - dev: false - /human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - dev: true + human-signals@5.0.0: {} - /husky@9.1.6: - resolution: {integrity: sha512-sqbjZKK7kf44hfdE94EoX8MZNk0n7HeW37O4YrVGCF4wzgQjp+akPAkfUK5LZ6KuR/6sqeAVuXHji+RzQgOn5A==} - engines: {node: '>=18'} - hasBin: true - dev: true + husky@9.1.6: {} - /ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - dev: false + ieee754@1.2.1: {} - /ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} - dev: true + ignore@5.3.2: {} - /immediate@3.0.6: - resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - dev: false + immediate@3.0.6: {} - /import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} + import-fresh@3.3.0: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - dev: true - /imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - dev: true + imurmurhash@0.1.4: {} - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + inflight@1.0.6: dependencies: once: 1.4.0 wrappy: 1.0.2 - dev: false - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: false + inherits@2.0.4: {} - /ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - dev: false + ini@1.3.8: {} - /inline-style-parser@0.2.4: - resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} - dev: false + inline-style-parser@0.2.4: {} - /internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} - engines: {node: '>= 0.4'} + internal-slot@1.0.7: dependencies: es-errors: 1.3.0 hasown: 2.0.2 side-channel: 1.0.6 - dev: true - /invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + invariant@2.2.4: dependencies: loose-envify: 1.4.0 - dev: false - /is-alphabetical@2.0.1: - resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} - dev: false + is-alphabetical@2.0.1: {} - /is-alphanumerical@2.0.1: - resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + is-alphanumerical@2.0.1: dependencies: is-alphabetical: 2.0.1 is-decimal: 2.0.1 - dev: false - /is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} + is-arguments@1.1.1: dependencies: call-bind: 1.0.7 has-tostringtag: 1.0.2 - dev: true - /is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} - engines: {node: '>= 0.4'} + is-array-buffer@3.0.4: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 - dev: true - /is-async-function@2.0.0: - resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} - engines: {node: '>= 0.4'} + is-arrayish@0.3.2: + optional: true + + is-async-function@2.0.0: dependencies: has-tostringtag: 1.0.2 - dev: true - /is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + is-bigint@1.0.4: dependencies: has-bigints: 1.0.2 - dev: true - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} + is-binary-path@2.1.0: dependencies: binary-extensions: 2.3.0 - /is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} + is-boolean-object@1.1.2: dependencies: call-bind: 1.0.7 has-tostringtag: 1.0.2 - dev: true - /is-bun-module@1.2.1: - resolution: {integrity: sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==} + is-bun-module@1.2.1: dependencies: semver: 7.6.3 - dev: true - /is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - dev: true + is-callable@1.2.7: {} - /is-core-module@2.15.1: - resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} - engines: {node: '>= 0.4'} + is-core-module@2.15.1: dependencies: hasown: 2.0.2 - /is-data-view@1.0.1: - resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} - engines: {node: '>= 0.4'} + is-data-view@1.0.1: dependencies: is-typed-array: 1.1.13 - dev: true - /is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} + is-date-object@1.0.5: dependencies: has-tostringtag: 1.0.2 - dev: true - /is-decimal@2.0.1: - resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - dev: false + is-decimal@2.0.1: {} - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} + is-extglob@2.1.1: {} - /is-finalizationregistry@1.0.2: - resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + is-finalizationregistry@1.0.2: dependencies: call-bind: 1.0.7 - dev: true - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} + is-fullwidth-code-point@3.0.0: {} - /is-fullwidth-code-point@4.0.0: - resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} - engines: {node: '>=12'} - dev: true + is-fullwidth-code-point@4.0.0: {} - /is-fullwidth-code-point@5.0.0: - resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} - engines: {node: '>=18'} + is-fullwidth-code-point@5.0.0: dependencies: get-east-asian-width: 1.2.0 - dev: true - /is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} + is-generator-function@1.0.10: dependencies: has-tostringtag: 1.0.2 - dev: true - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 - /is-hexadecimal@2.0.1: - resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - dev: false + is-hexadecimal@2.0.1: {} - /is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - dev: false + is-interactive@1.0.0: {} - /is-map@2.0.3: - resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} - engines: {node: '>= 0.4'} - dev: true + is-map@2.0.3: {} - /is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - dev: true + is-negative-zero@2.0.3: {} - /is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} + is-number-object@1.0.7: dependencies: has-tostringtag: 1.0.2 - dev: true - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} + is-number@7.0.0: {} - /is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - dev: true + is-path-inside@3.0.3: {} - /is-plain-obj@4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} - engines: {node: '>=12'} - dev: false + is-plain-obj@4.1.0: {} - /is-reference@1.2.1: - resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + is-reference@1.2.1: dependencies: '@types/estree': 1.0.6 - dev: false - /is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} + is-regex@1.1.4: dependencies: call-bind: 1.0.7 has-tostringtag: 1.0.2 - dev: true - /is-set@2.0.3: - resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} - engines: {node: '>= 0.4'} - dev: true + is-set@2.0.3: {} - /is-shared-array-buffer@1.0.3: - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} - engines: {node: '>= 0.4'} + is-shared-array-buffer@1.0.3: dependencies: call-bind: 1.0.7 - dev: true - /is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true + is-stream@3.0.0: {} - /is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} + is-string@1.0.7: dependencies: has-tostringtag: 1.0.2 - dev: true - /is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} + is-symbol@1.0.4: dependencies: has-symbols: 1.0.3 - dev: true - /is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} + is-typed-array@1.1.13: dependencies: which-typed-array: 1.1.15 - dev: true - /is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - dev: false + is-unicode-supported@0.1.0: {} - /is-weakmap@2.0.2: - resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} - engines: {node: '>= 0.4'} - dev: true + is-weakmap@2.0.2: {} - /is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + is-weakref@1.0.2: dependencies: call-bind: 1.0.7 - dev: true - /is-weakset@2.0.3: - resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} - engines: {node: '>= 0.4'} + is-weakset@2.0.3: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 - dev: true - /isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - dev: true + isarray@2.0.5: {} - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isexe@2.0.0: {} - /iterator.prototype@1.1.2: - resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + iterator.prototype@1.1.2: dependencies: define-properties: 1.2.1 get-intrinsic: 1.2.4 has-symbols: 1.0.3 reflect.getprototypeof: 1.0.6 set-function-name: 2.0.2 - dev: true - /jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} + iterator.prototype@1.1.3: + dependencies: + define-properties: 1.2.1 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + reflect.getprototypeof: 1.0.6 + set-function-name: 2.0.2 + + jackspeak@2.3.6: dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 - /jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 - /jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} + jest-worker@27.5.1: dependencies: '@types/node': 22.5.5 merge-stream: 2.0.0 supports-color: 8.1.1 - dev: false - /jiti@1.21.6: - resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} - hasBin: true + jiti@1.21.6: {} - /jose@5.9.3: - resolution: {integrity: sha512-egLIoYSpcd+QUF+UHgobt5YzI2Pkw/H39ou9suW687MY6PmCwPmkNV/4TNjn1p2tX5xO3j0d0sq5hiYE24bSlg==} - dev: false + jose@5.9.3: {} - /jotai@2.10.0(@types/react@18.3.8)(react@18.2.0): - resolution: {integrity: sha512-8W4u0aRlOIwGlLQ0sqfl/c6+eExl5D8lZgAUolirZLktyaj4WnxO/8a0HEPmtriQAB6X5LMhXzZVmw02X0P0qQ==} - engines: {node: '>=12.20.0'} - peerDependencies: - '@types/react': '>=17.0.0' - react: '>=17.0.0' - peerDependenciesMeta: - '@types/react': - optional: true - react: - optional: true - dependencies: - '@types/react': 18.3.8 - react: 18.2.0 - dev: false + jotai@2.10.0(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1): + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 + react: 19.0.0-rc-69d4b800-20241021 - /js-beautify@1.15.1: - resolution: {integrity: sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==} - engines: {node: '>=14'} - hasBin: true + js-beautify@1.15.1: dependencies: config-chain: 1.1.13 editorconfig: 1.0.4 glob: 10.4.5 js-cookie: 3.0.5 nopt: 7.2.1 - dev: false - /js-cookie@3.0.5: - resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} - engines: {node: '>=14'} - dev: false + js-cookie@3.0.5: {} - /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + js-tokens@4.0.0: {} - /js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true + js-yaml@4.1.0: dependencies: argparse: 2.0.1 - dev: true - /jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - dev: false + jsesc@2.5.2: {} - /json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - dev: true + json-buffer@3.0.1: {} - /json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - dev: false + json-parse-even-better-errors@2.3.1: {} - /json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + json-schema-traverse@0.4.1: {} - /json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - dev: false + json-schema-traverse@1.0.0: {} - /json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: true + json-stable-stringify-without-jsonify@1.0.1: {} - /json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true + json5@1.0.2: dependencies: minimist: 1.2.8 - dev: true - /json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - dev: false + json5@2.2.3: {} - /jsx-ast-utils@3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} - engines: {node: '>=4.0'} + jsx-ast-utils@3.3.5: dependencies: array-includes: 3.1.8 array.prototype.flat: 1.3.2 object.assign: 4.1.5 object.values: 1.2.0 - dev: true - /keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + keyv@4.5.4: dependencies: json-buffer: 3.0.1 - dev: true - /language-subtag-registry@0.3.23: - resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} - dev: true + language-subtag-registry@0.3.23: {} - /language-tags@1.0.9: - resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} - engines: {node: '>=0.10'} + language-tags@1.0.9: dependencies: language-subtag-registry: 0.3.23 - dev: true - /leac@0.6.0: - resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} - dev: false + leac@0.6.0: {} - /levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} + levn@0.4.1: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 - dev: true - /lie@3.1.1: - resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} + lie@3.1.1: dependencies: immediate: 3.0.6 - dev: false - /lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} + lilconfig@2.1.0: {} - /lilconfig@3.1.2: - resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} - engines: {node: '>=14'} + lilconfig@3.1.2: {} - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + lines-and-columns@1.2.4: {} - /lint-staged@15.2.10: - resolution: {integrity: sha512-5dY5t743e1byO19P9I4b3x8HJwalIznL5E1FWYnU6OWw33KxNBSLAc6Cy7F2PsFEO8FKnLwjwm5hx7aMF0jzZg==} - engines: {node: '>=18.12.0'} - hasBin: true + lint-staged@15.2.10: dependencies: chalk: 5.3.0 commander: 12.1.0 @@ -6601,11 +9146,8 @@ packages: yaml: 2.5.1 transitivePeerDependencies: - supports-color - dev: true - /listr2@8.2.4: - resolution: {integrity: sha512-opevsywziHd3zHCVQGAj8zu+Z3yHNkkoYhWIGnq54RrCVwLz0MozotJEDnKsIBLvkfLGN6BLOyAeRrYI0pKA4g==} - engines: {node: '>=18.0.0'} + listr2@8.2.4: dependencies: cli-truncate: 4.0.0 colorette: 2.0.20 @@ -6613,123 +9155,75 @@ packages: log-update: 6.1.0 rfdc: 1.4.1 wrap-ansi: 9.0.0 - dev: true - /loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} - engines: {node: '>=6.11.5'} - dev: false + loader-runner@4.3.0: {} - /localforage@1.10.0: - resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} + localforage@1.10.0: dependencies: lie: 3.1.1 - dev: false - /locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} + locate-path@6.0.0: dependencies: p-locate: 5.0.0 - dev: true - /locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + locate-path@7.2.0: dependencies: p-locate: 6.0.0 - dev: false - /lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: true + lodash.merge@4.6.2: {} - /log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} + log-symbols@4.1.0: dependencies: chalk: 4.1.2 is-unicode-supported: 0.1.0 - dev: false - /log-update@6.1.0: - resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} - engines: {node: '>=18'} + log-update@6.1.0: dependencies: ansi-escapes: 7.0.0 cli-cursor: 5.0.0 slice-ansi: 7.1.0 strip-ansi: 7.1.0 wrap-ansi: 9.0.0 - dev: true - /longest-streak@3.1.0: - resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - dev: false + longest-streak@3.1.0: {} - /loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true + loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 - /lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@10.4.3: {} - /lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 - dev: false - /lucide-react@0.438.0(react@18.2.0): - resolution: {integrity: sha512-uq6yCB+IzVfgIPMK8ibkecXSWTTSOMs9UjUgZigfrDCVqgdwkpIgYg1fSYnf0XXF2AoSyCJZhoZXQwzoai7VGw==} - peerDependencies: - react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc + lucide-react@0.438.0(react@19.0.0-rc-69d4b800-20241021): dependencies: - react: 18.2.0 - dev: false + react: 19.0.0-rc-69d4b800-20241021 - /magic-string@0.27.0: - resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} - engines: {node: '>=12'} + magic-string@0.27.0: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 - dev: false - /make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + make-error@1.3.6: {} - /markdown-table@3.0.3: - resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} - dev: false + markdown-table@3.0.3: {} - /marked@7.0.4: - resolution: {integrity: sha512-t8eP0dXRJMtMvBojtkcsA7n48BkauktUKzfkPSCq85ZMTJ0v76Rke4DYz01omYpPTUh4p/f7HePgRo3ebG8+QQ==} - engines: {node: '>= 16'} - hasBin: true - dev: false + marked@7.0.4: {} - /md-to-react-email@5.0.2(react@18.2.0): - resolution: {integrity: sha512-x6kkpdzIzUhecda/yahltfEl53mH26QdWu4abUF9+S0Jgam8P//Ciro8cdhyMHnT5MQUJYrIbO6ORM2UxPiNNA==} - peerDependencies: - react: 18.x + md-to-react-email@5.0.2(react@19.0.0-rc-69d4b800-20241021): dependencies: marked: 7.0.4 - react: 18.2.0 - dev: false + react: 19.0.0-rc-69d4b800-20241021 - /mdast-util-find-and-replace@3.0.1: - resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} + mdast-util-find-and-replace@3.0.1: dependencies: '@types/mdast': 4.0.4 escape-string-regexp: 5.0.0 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - dev: false - /mdast-util-from-markdown@2.0.1: - resolution: {integrity: sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==} + mdast-util-from-markdown@2.0.1: dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.3 @@ -6745,20 +9239,16 @@ packages: unist-util-stringify-position: 4.0.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-gfm-autolink-literal@2.0.1: - resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} + mdast-util-gfm-autolink-literal@2.0.1: dependencies: '@types/mdast': 4.0.4 ccount: 2.0.1 devlop: 1.1.0 mdast-util-find-and-replace: 3.0.1 micromark-util-character: 2.1.0 - dev: false - /mdast-util-gfm-footnote@2.0.0: - resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} + mdast-util-gfm-footnote@2.0.0: dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 @@ -6767,20 +9257,16 @@ packages: micromark-util-normalize-identifier: 2.0.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + mdast-util-gfm-strikethrough@2.0.0: dependencies: '@types/mdast': 4.0.4 mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-gfm-table@2.0.0: - resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + mdast-util-gfm-table@2.0.0: dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 @@ -6789,10 +9275,8 @@ packages: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-gfm-task-list-item@2.0.0: - resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + mdast-util-gfm-task-list-item@2.0.0: dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 @@ -6800,10 +9284,8 @@ packages: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-gfm@3.0.0: - resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} + mdast-util-gfm@3.0.0: dependencies: mdast-util-from-markdown: 2.0.1 mdast-util-gfm-autolink-literal: 2.0.1 @@ -6814,10 +9296,8 @@ packages: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-mdx-expression@2.0.1: - resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} + mdast-util-mdx-expression@2.0.1: dependencies: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 @@ -6827,10 +9307,8 @@ packages: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-mdx-jsx@3.1.3: - resolution: {integrity: sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==} + mdast-util-mdx-jsx@3.1.3: dependencies: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 @@ -6846,10 +9324,8 @@ packages: vfile-message: 4.0.2 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-mdxjs-esm@2.0.1: - resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + mdast-util-mdxjs-esm@2.0.1: dependencies: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 @@ -6859,17 +9335,13 @@ packages: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-phrasing@4.1.0: - resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + mdast-util-phrasing@4.1.0: dependencies: '@types/mdast': 4.0.4 unist-util-is: 6.0.0 - dev: false - /mdast-util-to-hast@13.2.0: - resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + mdast-util-to-hast@13.2.0: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 @@ -6880,10 +9352,8 @@ packages: unist-util-position: 5.0.0 unist-util-visit: 5.0.0 vfile: 6.0.3 - dev: false - /mdast-util-to-markdown@2.1.0: - resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} + mdast-util-to-markdown@2.1.0: dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.3 @@ -6893,23 +9363,16 @@ packages: micromark-util-decode-string: 2.0.0 unist-util-visit: 5.0.0 zwitch: 2.0.4 - dev: false - /mdast-util-to-string@4.0.0: - resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + mdast-util-to-string@4.0.0: dependencies: '@types/mdast': 4.0.4 - dev: false - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + merge-stream@2.0.0: {} - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} + merge2@1.4.1: {} - /micromark-core-commonmark@2.0.1: - resolution: {integrity: sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==} + micromark-core-commonmark@2.0.1: dependencies: decode-named-character-reference: 1.0.2 devlop: 1.1.0 @@ -6927,19 +9390,15 @@ packages: micromark-util-subtokenize: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-extension-gfm-autolink-literal@2.1.0: - resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + micromark-extension-gfm-autolink-literal@2.1.0: dependencies: micromark-util-character: 2.1.0 micromark-util-sanitize-uri: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-extension-gfm-footnote@2.1.0: - resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + micromark-extension-gfm-footnote@2.1.0: dependencies: devlop: 1.1.0 micromark-core-commonmark: 2.0.1 @@ -6949,10 +9408,8 @@ packages: micromark-util-sanitize-uri: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-extension-gfm-strikethrough@2.1.0: - resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + micromark-extension-gfm-strikethrough@2.1.0: dependencies: devlop: 1.1.0 micromark-util-chunked: 2.0.0 @@ -6960,36 +9417,28 @@ packages: micromark-util-resolve-all: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-extension-gfm-table@2.1.0: - resolution: {integrity: sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==} + micromark-extension-gfm-table@2.1.0: dependencies: devlop: 1.1.0 micromark-factory-space: 2.0.0 micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-extension-gfm-tagfilter@2.0.0: - resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + micromark-extension-gfm-tagfilter@2.0.0: dependencies: micromark-util-types: 2.0.0 - dev: false - /micromark-extension-gfm-task-list-item@2.1.0: - resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + micromark-extension-gfm-task-list-item@2.1.0: dependencies: devlop: 1.1.0 micromark-factory-space: 2.0.0 micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-extension-gfm@3.0.0: - resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + micromark-extension-gfm@3.0.0: dependencies: micromark-extension-gfm-autolink-literal: 2.1.0 micromark-extension-gfm-footnote: 2.1.0 @@ -6999,140 +9448,100 @@ packages: micromark-extension-gfm-task-list-item: 2.1.0 micromark-util-combine-extensions: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-factory-destination@2.0.0: - resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} + micromark-factory-destination@2.0.0: dependencies: micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-factory-label@2.0.0: - resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} + micromark-factory-label@2.0.0: dependencies: devlop: 1.1.0 micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-factory-space@2.0.0: - resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} + micromark-factory-space@2.0.0: dependencies: micromark-util-character: 2.1.0 micromark-util-types: 2.0.0 - dev: false - /micromark-factory-title@2.0.0: - resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} + micromark-factory-title@2.0.0: dependencies: micromark-factory-space: 2.0.0 micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-factory-whitespace@2.0.0: - resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} + micromark-factory-whitespace@2.0.0: dependencies: micromark-factory-space: 2.0.0 micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-util-character@2.1.0: - resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} + micromark-util-character@2.1.0: dependencies: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-util-chunked@2.0.0: - resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} + micromark-util-chunked@2.0.0: dependencies: micromark-util-symbol: 2.0.0 - dev: false - /micromark-util-classify-character@2.0.0: - resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + micromark-util-classify-character@2.0.0: dependencies: micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-util-combine-extensions@2.0.0: - resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} + micromark-util-combine-extensions@2.0.0: dependencies: micromark-util-chunked: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-util-decode-numeric-character-reference@2.0.1: - resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} + micromark-util-decode-numeric-character-reference@2.0.1: dependencies: micromark-util-symbol: 2.0.0 - dev: false - /micromark-util-decode-string@2.0.0: - resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} + micromark-util-decode-string@2.0.0: dependencies: decode-named-character-reference: 1.0.2 micromark-util-character: 2.1.0 micromark-util-decode-numeric-character-reference: 2.0.1 micromark-util-symbol: 2.0.0 - dev: false - /micromark-util-encode@2.0.0: - resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} - dev: false + micromark-util-encode@2.0.0: {} - /micromark-util-html-tag-name@2.0.0: - resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} - dev: false + micromark-util-html-tag-name@2.0.0: {} - /micromark-util-normalize-identifier@2.0.0: - resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} + micromark-util-normalize-identifier@2.0.0: dependencies: micromark-util-symbol: 2.0.0 - dev: false - /micromark-util-resolve-all@2.0.0: - resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} + micromark-util-resolve-all@2.0.0: dependencies: micromark-util-types: 2.0.0 - dev: false - /micromark-util-sanitize-uri@2.0.0: - resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} + micromark-util-sanitize-uri@2.0.0: dependencies: micromark-util-character: 2.1.0 micromark-util-encode: 2.0.0 micromark-util-symbol: 2.0.0 - dev: false - /micromark-util-subtokenize@2.0.1: - resolution: {integrity: sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==} + micromark-util-subtokenize@2.0.1: dependencies: devlop: 1.1.0 micromark-util-chunked: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-util-symbol@2.0.0: - resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} - dev: false + micromark-util-symbol@2.0.0: {} - /micromark-util-types@2.0.0: - resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} - dev: false + micromark-util-types@2.0.0: {} - /micromark@4.0.0: - resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} + micromark@4.0.0: dependencies: '@types/debug': 4.1.12 debug: 4.3.7 @@ -7153,133 +9562,71 @@ packages: micromark-util-types: 2.0.0 transitivePeerDependencies: - supports-color - dev: false - /micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} + micromatch@4.0.8: dependencies: braces: 3.0.3 picomatch: 2.3.1 - /mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - dev: false + mime-db@1.52.0: {} - /mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} + mime-types@2.1.35: dependencies: mime-db: 1.52.0 - dev: false - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - dev: false + mimic-fn@2.1.0: {} - /mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - dev: true + mimic-fn@4.0.0: {} - /mimic-function@5.0.1: - resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} - engines: {node: '>=18'} - dev: true + mimic-function@5.0.1: {} - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 - dev: true - /minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} + minimatch@5.1.6: dependencies: brace-expansion: 2.0.1 - dev: false - /minimatch@9.0.1: - resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} - engines: {node: '>=16 || 14 >=14.17'} + minimatch@9.0.1: dependencies: brace-expansion: 2.0.1 - dev: false - /minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} + minimatch@9.0.5: dependencies: brace-expansion: 2.0.1 - /minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + minimist@1.2.8: {} - /minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} + minipass@7.1.2: {} - /mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true + mkdirp@0.5.6: dependencies: minimist: 1.2.8 - dev: false - /ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + ms@2.1.3: {} - /mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + mz@2.7.0: dependencies: any-promise: 1.3.0 object-assign: 4.1.1 thenify-all: 1.6.0 - /nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true + nanoid@3.3.7: {} - /natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - dev: true + natural-compare@1.4.0: {} - /negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - dev: false + negotiator@0.6.3: {} - /neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - dev: false + neo-async@2.6.2: {} - /next-auth@5.0.0-beta.22(next@14.2.4)(react@18.2.0): - resolution: {integrity: sha512-QGBo9HGOjmnJBHGXvtFztl0tM5tL0porDlk74HVoCCzXd986ApOlIW3EmiCuho7YzEopgkFiwwmcXpoCrHAtYw==} - peerDependencies: - '@simplewebauthn/browser': ^9.0.1 - '@simplewebauthn/server': ^9.0.2 - next: ^14.0.0-0 || ^15.0.0-0 - nodemailer: ^6.6.5 - react: ^18.2.0 || ^19.0.0-0 - peerDependenciesMeta: - '@simplewebauthn/browser': - optional: true - '@simplewebauthn/server': - optional: true - nodemailer: - optional: true + next-auth@5.0.0-beta.22(next@15.0.1(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021): dependencies: '@auth/core': 0.35.3 - next: 14.2.4(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - dev: false + next: 15.0.1(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021) + react: 19.0.0-rc-69d4b800-20241021 - /next-remove-imports@1.0.12(webpack@5.94.0): - resolution: {integrity: sha512-3tdL6VuSykJ/mcUwxfjQ+Fd4OpEmrwWVHtLZ/fhNcSaToWCutUp7nrfIww7/4CURe9I7BDCQE9AWl4fkY3YZOQ==} + next-remove-imports@1.0.12(webpack@5.94.0): dependencies: '@babel/core': 7.25.2 babel-loader: 9.2.1(@babel/core@7.25.2)(webpack@5.94.0) @@ -7287,73 +9634,31 @@ packages: transitivePeerDependencies: - supports-color - webpack - dev: false - /next-safe-action@7.9.3(next@14.2.4)(react-dom@18.2.0)(react@18.2.0)(zod@3.23.8): - resolution: {integrity: sha512-2GH7/iRiM5R/y6sIQZsNHGeRr/iKQJsg8ejP63WhTS7fXS9KzxVbEKrWwLNNhL33V9cn0448cPSI/aiSK/PUbA==} - engines: {node: '>=18.17'} - peerDependencies: - '@sinclair/typebox': '>= 0.33.3' - next: '>= 14.0.0' - react: '>= 18.2.0' - react-dom: '>= 18.2.0' - valibot: '>= 0.36.0' - yup: '>= 1.0.0' - zod: '>= 3.0.0' - peerDependenciesMeta: - '@sinclair/typebox': - optional: true - valibot: - optional: true - yup: - optional: true - zod: - optional: true + next-safe-action@7.9.3(next@15.0.1(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021))(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(zod@3.23.8): dependencies: - next: 14.2.4(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + next: 15.0.1(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021) + react: 19.0.0-rc-69d4b800-20241021 + react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021) + optionalDependencies: zod: 3.23.8 - dev: false - /next-themes@0.3.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-/QHIrsYpd6Kfk7xakK4svpDI5mmXP0gfvCoJdGpZQ2TOrQZmsW0QxjaiLn8wbIKjtm4BTSqLoix4lxYYOnLJ/w==} - peerDependencies: - react: ^16.8 || ^17 || ^18 - react-dom: ^16.8 || ^17 || ^18 + next-themes@0.3.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021): dependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false + react: 19.0.0-rc-69d4b800-20241021 + react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021) - /next@14.2.3(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-dowFkFTR8v79NPJO4QsBUtxv0g9BrS/phluVpMAt2ku7H+cbcBJlopXjkWlwxrk/xGqMemr7JkGPGemPrLLX7A==} - engines: {node: '>=18.17.0'} - hasBin: true - peerDependencies: - '@opentelemetry/api': ^1.1.0 - '@playwright/test': ^1.41.2 - react: ^18.2.0 - react-dom: ^18.2.0 - sass: ^1.3.0 - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - '@playwright/test': - optional: true - sass: - optional: true + next@14.2.3(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021): dependencies: '@next/env': 14.2.3 - '@playwright/test': 1.47.2 '@swc/helpers': 0.5.5 busboy: 1.6.0 caniuse-lite: 1.0.30001663 graceful-fs: 4.2.11 postcss: 8.4.31 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(@babel/core@7.24.5)(react@18.2.0) + react: 19.0.0-rc-69d4b800-20241021 + react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021) + styled-jsx: 5.1.1(@babel/core@7.24.5)(react@19.0.0-rc-69d4b800-20241021) optionalDependencies: '@next/swc-darwin-arm64': 14.2.3 '@next/swc-darwin-x64': 14.2.3 @@ -7364,209 +9669,125 @@ packages: '@next/swc-win32-arm64-msvc': 14.2.3 '@next/swc-win32-ia32-msvc': 14.2.3 '@next/swc-win32-x64-msvc': 14.2.3 + '@playwright/test': 1.47.2 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - dev: false - /next@14.2.4(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-R8/V7vugY+822rsQGQCjoLhMuC9oFj9SOi4Cl4b2wjDrseD0LRZ10W7R6Czo4w9ZznVSshKjuIomsRjvm9EKJQ==} - engines: {node: '>=18.17.0'} - hasBin: true - peerDependencies: - '@opentelemetry/api': ^1.1.0 - '@playwright/test': ^1.41.2 - react: ^18.2.0 - react-dom: ^18.2.0 - sass: ^1.3.0 - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - '@playwright/test': - optional: true - sass: - optional: true + next@15.0.1(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021): dependencies: - '@next/env': 14.2.4 - '@playwright/test': 1.47.2 - '@swc/helpers': 0.5.5 + '@next/env': 15.0.1 + '@swc/counter': 0.1.3 + '@swc/helpers': 0.5.13 busboy: 1.6.0 caniuse-lite: 1.0.30001663 - graceful-fs: 4.2.11 postcss: 8.4.31 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(@babel/core@7.24.5)(react@18.2.0) + react: 19.0.0-rc-69d4b800-20241021 + react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021) + styled-jsx: 5.1.6(@babel/core@7.24.5)(react@19.0.0-rc-69d4b800-20241021) optionalDependencies: - '@next/swc-darwin-arm64': 14.2.4 - '@next/swc-darwin-x64': 14.2.4 - '@next/swc-linux-arm64-gnu': 14.2.4 - '@next/swc-linux-arm64-musl': 14.2.4 - '@next/swc-linux-x64-gnu': 14.2.4 - '@next/swc-linux-x64-musl': 14.2.4 - '@next/swc-win32-arm64-msvc': 14.2.4 - '@next/swc-win32-ia32-msvc': 14.2.4 - '@next/swc-win32-x64-msvc': 14.2.4 + '@next/swc-darwin-arm64': 15.0.1 + '@next/swc-darwin-x64': 15.0.1 + '@next/swc-linux-arm64-gnu': 15.0.1 + '@next/swc-linux-arm64-musl': 15.0.1 + '@next/swc-linux-x64-gnu': 15.0.1 + '@next/swc-linux-x64-musl': 15.0.1 + '@next/swc-win32-arm64-msvc': 15.0.1 + '@next/swc-win32-x64-msvc': 15.0.1 + '@playwright/test': 1.47.2 + sharp: 0.33.5 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - dev: false - /node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true + node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 - dev: false - /node-releases@2.0.18: - resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + node-releases@2.0.18: {} - /nopt@7.2.1: - resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - hasBin: true + nopt@7.2.1: dependencies: abbrev: 2.0.0 - dev: false - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} + normalize-path@3.0.0: {} - /normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - dev: true + normalize-range@0.1.2: {} - /not@0.1.0: - resolution: {integrity: sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==} - dev: false + not@0.1.0: {} - /npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + npm-run-path@5.3.0: dependencies: path-key: 4.0.0 - dev: true - /nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + nth-check@2.1.1: dependencies: boolbase: 1.0.0 - dev: false - /oauth4webapi@2.17.0: - resolution: {integrity: sha512-lbC0Z7uzAFNFyzEYRIC+pkSVvDHJTbEW+dYlSBAlCYDe6RxUkJ26bClhk8ocBZip1wfI9uKTe0fm4Ib4RHn6uQ==} - dev: false + oauth4webapi@2.17.0: {} - /object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} + object-assign@4.1.1: {} - /object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} + object-hash@3.0.0: {} - /object-inspect@1.13.2: - resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} - engines: {node: '>= 0.4'} + object-inspect@1.13.2: {} - /object-is@1.1.6: - resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} - engines: {node: '>= 0.4'} + object-is@1.1.6: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - dev: true - /object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - dev: true + object-keys@1.1.1: {} - /object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} - engines: {node: '>= 0.4'} + object.assign@4.1.5: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 - dev: true - /object.entries@1.1.8: - resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} - engines: {node: '>= 0.4'} + object.entries@1.1.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 - dev: true - /object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} + object.fromentries@2.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-object-atoms: 1.0.0 - dev: true - /object.groupby@1.0.3: - resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} - engines: {node: '>= 0.4'} + object.groupby@1.0.3: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 - dev: true - /object.values@1.2.0: - resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} - engines: {node: '>= 0.4'} + object.values@1.2.0: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 - dev: true - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + once@1.4.0: dependencies: wrappy: 1.0.2 - dev: false - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} + onetime@5.1.2: dependencies: mimic-fn: 2.1.0 - dev: false - /onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} + onetime@6.0.0: dependencies: mimic-fn: 4.0.0 - dev: true - /onetime@7.0.0: - resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} - engines: {node: '>=18'} + onetime@7.0.0: dependencies: mimic-function: 5.0.1 - dev: true - /optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} + optionator@0.9.4: dependencies: deep-is: 0.1.4 fast-levenshtein: 2.0.6 @@ -7574,11 +9795,8 @@ packages: prelude-ls: 1.2.1 type-check: 0.4.0 word-wrap: 1.2.5 - dev: true - /ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} + ora@5.4.1: dependencies: bl: 4.1.0 chalk: 4.1.2 @@ -7589,52 +9807,32 @@ packages: log-symbols: 4.1.0 strip-ansi: 6.0.1 wcwidth: 1.0.1 - dev: false - /p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 - dev: true - /p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-limit@4.0.0: dependencies: yocto-queue: 1.1.1 - dev: false - /p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} + p-locate@5.0.0: dependencies: p-limit: 3.1.0 - dev: true - /p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-locate@6.0.0: dependencies: p-limit: 4.0.0 - dev: false - /package-json-from-dist@1.0.0: - resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + package-json-from-dist@1.0.0: {} - /papaparse@5.4.1: - resolution: {integrity: sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw==} - dev: false + papaparse@5.4.1: {} - /parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} + parent-module@1.0.1: dependencies: callsites: 3.1.0 - dev: true - /parse-entities@4.0.1: - resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} + parse-entities@4.0.1: dependencies: '@types/unist': 2.0.11 character-entities: 2.0.2 @@ -7644,354 +9842,169 @@ packages: is-alphanumerical: 2.0.1 is-decimal: 2.0.1 is-hexadecimal: 2.0.1 - dev: false - /parse-numeric-range@1.3.0: - resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} - dev: false + parse-numeric-range@1.3.0: {} - /parse5@7.1.2: - resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + parse5@7.1.2: dependencies: entities: 4.5.0 - dev: false - /parseley@0.12.1: - resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==} + parseley@0.12.1: dependencies: leac: 0.6.0 peberminta: 0.9.0 - dev: false - /path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - dev: true + path-exists@4.0.0: {} - /path-exists@5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: false + path-exists@5.0.0: {} - /path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} + path-key@3.1.1: {} - /path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - dev: true + path-key@4.0.0: {} - /path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-parse@1.0.7: {} - /path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} + path-scurry@1.11.1: dependencies: lru-cache: 10.4.3 minipass: 7.1.2 - /peberminta@0.9.0: - resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} - dev: false + peberminta@0.9.0: {} - /picocolors@1.1.0: - resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + picocolors@1.1.0: {} - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} + picomatch@2.3.1: {} - /pidtree@0.6.0: - resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} - engines: {node: '>=0.10'} - hasBin: true - dev: true + pidtree@0.6.0: {} - /pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} + pify@2.3.0: {} - /pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} + pirates@4.0.6: {} - /pkg-dir@7.0.0: - resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} - engines: {node: '>=14.16'} + pkg-dir@7.0.0: dependencies: find-up: 6.3.0 - dev: false - /playwright-core@1.47.2: - resolution: {integrity: sha512-3JvMfF+9LJfe16l7AbSmU555PaTl2tPyQsVInqm3id16pdDfvZ8TTZ/pyzmkbDrZTQefyzU7AIHlZqQnxpqHVQ==} - engines: {node: '>=18'} - hasBin: true + playwright-core@1.47.2: {} - /playwright@1.47.2: - resolution: {integrity: sha512-nx1cLMmQWqmA3UsnjaaokyoUpdVaaDhJhMoxX2qj3McpjnsqFHs516QAKYhqHAgOP+oCFTEOCOAaD1RgD/RQfA==} - engines: {node: '>=18'} - hasBin: true + playwright@1.47.2: dependencies: playwright-core: 1.47.2 optionalDependencies: fsevents: 2.3.2 - /possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} - dev: true + possible-typed-array-names@1.0.0: {} - /postcss-import@15.1.0(postcss@8.4.47): - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 + postcss-import@15.1.0(postcss@8.4.47): dependencies: postcss: 8.4.47 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - /postcss-js@4.0.1(postcss@8.4.47): - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 + postcss-js@4.0.1(postcss@8.4.47): dependencies: camelcase-css: 2.0.1 postcss: 8.4.47 - /postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2): - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true + postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.6.2)): dependencies: lilconfig: 3.1.2 + yaml: 2.5.1 + optionalDependencies: postcss: 8.4.47 ts-node: 10.9.2(@types/node@22.5.5)(typescript@5.6.2) - yaml: 2.5.1 - /postcss-nested@6.2.0(postcss@8.4.47): - resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 + postcss-nested@6.2.0(postcss@8.4.47): dependencies: postcss: 8.4.47 postcss-selector-parser: 6.1.2 - - /postcss-selector-parser@6.1.2: - resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} - engines: {node: '>=4'} + + postcss-selector-parser@6.1.2: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - /postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + postcss-value-parser@4.2.0: {} - /postcss@8.4.31: - resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} - engines: {node: ^10 || ^12 || >=14} + postcss@8.4.31: dependencies: nanoid: 3.3.7 picocolors: 1.1.0 source-map-js: 1.2.1 - dev: false - /postcss@8.4.47: - resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} - engines: {node: ^10 || ^12 || >=14} + postcss@8.4.47: dependencies: nanoid: 3.3.7 picocolors: 1.1.0 source-map-js: 1.2.1 - /preact-render-to-string@5.2.3(preact@10.11.3): - resolution: {integrity: sha512-aPDxUn5o3GhWdtJtW0svRC2SS/l8D9MAgo2+AWml+BhDImb27ALf04Q2d+AHqUUOc6RdSXFIBVa2gxzgMKgtZA==} - peerDependencies: - preact: '>=10' + preact-render-to-string@5.2.3(preact@10.11.3): dependencies: preact: 10.11.3 pretty-format: 3.8.0 - dev: false - /preact@10.11.3: - resolution: {integrity: sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==} - dev: false + preact@10.11.3: {} - /prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - dev: true + prelude-ls@1.2.1: {} - /prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} + prettier-linter-helpers@1.0.0: dependencies: fast-diff: 1.3.0 - dev: true - /prettier-plugin-tailwindcss@0.6.6(prettier@3.3.3): - resolution: {integrity: sha512-OPva5S7WAsPLEsOuOWXATi13QrCKACCiIonFgIR6V4lYv4QLp++UXVhZSzRbZxXGimkQtQT86CC6fQqTOybGng==} - engines: {node: '>=14.21.3'} - peerDependencies: - '@ianvs/prettier-plugin-sort-imports': '*' - '@prettier/plugin-pug': '*' - '@shopify/prettier-plugin-liquid': '*' - '@trivago/prettier-plugin-sort-imports': '*' - '@zackad/prettier-plugin-twig-melody': '*' - prettier: ^3.0 - prettier-plugin-astro: '*' - prettier-plugin-css-order: '*' - prettier-plugin-import-sort: '*' - prettier-plugin-jsdoc: '*' - prettier-plugin-marko: '*' - prettier-plugin-multiline-arrays: '*' - prettier-plugin-organize-attributes: '*' - prettier-plugin-organize-imports: '*' - prettier-plugin-sort-imports: '*' - prettier-plugin-style-order: '*' - prettier-plugin-svelte: '*' - peerDependenciesMeta: - '@ianvs/prettier-plugin-sort-imports': - optional: true - '@prettier/plugin-pug': - optional: true - '@shopify/prettier-plugin-liquid': - optional: true - '@trivago/prettier-plugin-sort-imports': - optional: true - '@zackad/prettier-plugin-twig-melody': - optional: true - prettier-plugin-astro: - optional: true - prettier-plugin-css-order: - optional: true - prettier-plugin-import-sort: - optional: true - prettier-plugin-jsdoc: - optional: true - prettier-plugin-marko: - optional: true - prettier-plugin-multiline-arrays: - optional: true - prettier-plugin-organize-attributes: - optional: true - prettier-plugin-organize-imports: - optional: true - prettier-plugin-sort-imports: - optional: true - prettier-plugin-style-order: - optional: true - prettier-plugin-svelte: - optional: true + prettier-plugin-tailwindcss@0.6.6(prettier@3.3.3): dependencies: prettier: 3.3.3 - dev: true - /prettier@3.3.3: - resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} - engines: {node: '>=14'} - hasBin: true - dev: true + prettier@3.3.3: {} - /pretty-format@3.8.0: - resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==} - dev: false + pretty-format@3.8.0: {} - /prisma@5.16.1: - resolution: {integrity: sha512-Z1Uqodk44diztImxALgJJfNl2Uisl9xDRvqybMKEBYJLNKNhDfAHf+ZIJbZyYiBhLMbKU9cYGdDVG5IIXEnL2Q==} - engines: {node: '>=16.13'} - hasBin: true - requiresBuild: true + prisma@5.16.1: dependencies: '@prisma/engines': 5.16.1 - /prismjs@1.29.0: - resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} - engines: {node: '>=6'} - dev: false + prismjs@1.29.0: {} - /progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} - dev: false + progress@2.0.3: {} - /prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + prop-types@15.8.1: dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 - /property-information@6.5.0: - resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} - dev: false + property-information@6.5.0: {} - /proto-list@1.2.4: - resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} - dev: false + proto-list@1.2.4: {} - /proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - dev: false + proxy-from-env@1.1.0: {} - /punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} + punycode@2.3.1: {} - /qs@6.13.0: - resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} - engines: {node: '>=0.6'} + qs@6.13.0: dependencies: side-channel: 1.0.6 - dev: false - /queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + queue-microtask@1.2.3: {} - /randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 - dev: false - /react-dom@18.2.0(react@18.2.0): - resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} - peerDependencies: - react: ^18.2.0 + react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021): dependencies: - loose-envify: 1.4.0 - react: 18.2.0 - scheduler: 0.23.2 - dev: false + react: 19.0.0-rc-69d4b800-20241021 + scheduler: 0.25.0-rc-69d4b800-20241021 - /react-dropzone@14.2.3(react@18.2.0): - resolution: {integrity: sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==} - engines: {node: '>= 10.13'} - peerDependencies: - react: '>= 16.8 || 18.0.0' + react-dropzone@14.2.3(react@19.0.0-rc-69d4b800-20241021): dependencies: attr-accept: 2.2.2 file-selector: 0.6.0 prop-types: 15.8.1 - react: 18.2.0 - dev: false + react: 19.0.0-rc-69d4b800-20241021 - /react-email@3.0.1(@playwright/test@1.47.2)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-G4Bkx2ULIScy/0Z8nnWywHt0W1iTkaYCdh9rWNuQ3eVZ6B3ttTUDE9uUy3VNQ8dtQbmG0cpt8+XmImw7mMBW6Q==} - engines: {node: '>=18.0.0'} - hasBin: true + react-email@3.0.1(@playwright/test@1.47.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021): dependencies: '@babel/core': 7.24.5 '@babel/parser': 7.24.5 @@ -8003,7 +10016,7 @@ packages: glob: 10.3.4 log-symbols: 4.1.0 mime-types: 2.1.35 - next: 14.2.3(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@18.2.0)(react@18.2.0) + next: 14.2.3(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021) normalize-path: 3.0.0 ora: 5.4.1 socket.io: 4.7.5 @@ -8017,42 +10030,27 @@ packages: - sass - supports-color - utf-8-validate - dev: false - /react-error-boundary@4.0.13(react@18.2.0): - resolution: {integrity: sha512-b6PwbdSv8XeOSYvjt8LpgpKrZ0yGdtZokYwkwV2wlcZbxgopHX/hgPl5VgpnoVOWd868n1hktM8Qm4b+02MiLQ==} - peerDependencies: - react: '>=16.13.1' + react-error-boundary@4.0.13(react@19.0.0-rc-69d4b800-20241021): dependencies: '@babel/runtime': 7.25.6 - react: 18.2.0 - dev: false + react: 19.0.0-rc-69d4b800-20241021 - /react-hook-form@7.53.0(react@18.2.0): - resolution: {integrity: sha512-M1n3HhqCww6S2hxLxciEXy2oISPnAzxY7gvwVPrtlczTM/1dDadXgUxDpHMrMTblDOcm/AXtXxHwZ3jpg1mqKQ==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^16.8.0 || ^17 || ^18 || ^19 + react-hook-form@7.53.0(react@19.0.0-rc-69d4b800-20241021): dependencies: - react: 18.2.0 - dev: false + react: 19.0.0-rc-69d4b800-20241021 - /react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + react-is@16.13.1: {} - /react-markdown@9.0.1(@types/react@18.3.8)(react@18.2.0): - resolution: {integrity: sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==} - peerDependencies: - '@types/react': '>=18' - react: '>=18' + react-markdown@9.0.1(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1): dependencies: '@types/hast': 3.0.4 - '@types/react': 18.3.8 + '@types/react': types-react@19.0.0-rc.1 devlop: 1.1.0 hast-util-to-jsx-runtime: 2.3.0 html-url-attributes: 3.0.0 mdast-util-to-hast: 13.2.0 - react: 18.2.0 + react: 19.0.0-rc-69d4b800-20241021 remark-parse: 11.0.0 remark-rehype: 11.1.1 unified: 11.0.5 @@ -8060,113 +10058,66 @@ packages: vfile: 6.0.3 transitivePeerDependencies: - supports-color - dev: false - /react-paginate@8.2.0(react@18.2.0): - resolution: {integrity: sha512-sJCz1PW+9PNIjUSn919nlcRVuleN2YPoFBOvL+6TPgrH/3lwphqiSOgdrLafLdyLDxsgK+oSgviqacF4hxsDIw==} - peerDependencies: - react: ^16 || ^17 || ^18 + react-paginate@8.2.0(react@19.0.0-rc-69d4b800-20241021): dependencies: prop-types: 15.8.1 - react: 18.2.0 - dev: false + react: 19.0.0-rc-69d4b800-20241021 - /react-papaparse@4.4.0: - resolution: {integrity: sha512-xTEwHZYJ+1dh9mQDQjjwJXmWyX20DdZ52u+ddw75V+Xm5qsjXSvWmC7c8K82vRwMjKAOH2S9uFyGpHEyEztkUQ==} - engines: {node: '>=8', npm: '>=5'} + react-papaparse@4.4.0: dependencies: '@types/papaparse': 5.3.14 papaparse: 5.4.1 - dev: false - /react-promise-suspense@0.3.4: - resolution: {integrity: sha512-I42jl7L3Ze6kZaq+7zXWSunBa3b1on5yfvUW6Eo/3fFOj6dZ5Bqmcd264nJbTK/gn1HjjILAjSwnZbV4RpSaNQ==} + react-promise-suspense@0.3.4: dependencies: fast-deep-equal: 2.0.1 - dev: false - /react-remove-scroll-bar@2.3.6(@types/react@18.3.8)(react@18.2.0): - resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + react-remove-scroll-bar@2.3.6(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1): dependencies: - '@types/react': 18.3.8 - react: 18.2.0 - react-style-singleton: 2.2.1(@types/react@18.3.8)(react@18.2.0) + react: 19.0.0-rc-69d4b800-20241021 + react-style-singleton: 2.2.1(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) tslib: 2.7.0 - dev: false + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 - /react-remove-scroll@2.5.7(@types/react@18.3.8)(react@18.2.0): - resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + react-remove-scroll@2.5.7(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1): dependencies: - '@types/react': 18.3.8 - react: 18.2.0 - react-remove-scroll-bar: 2.3.6(@types/react@18.3.8)(react@18.2.0) - react-style-singleton: 2.2.1(@types/react@18.3.8)(react@18.2.0) + react: 19.0.0-rc-69d4b800-20241021 + react-remove-scroll-bar: 2.3.6(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + react-style-singleton: 2.2.1(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) tslib: 2.7.0 - use-callback-ref: 1.3.2(@types/react@18.3.8)(react@18.2.0) - use-sidecar: 1.1.2(@types/react@18.3.8)(react@18.2.0) - dev: false + use-callback-ref: 1.3.2(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + use-sidecar: 1.1.2(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 - /react-style-singleton@2.2.1(@types/react@18.3.8)(react@18.2.0): - resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + react-style-singleton@2.2.1(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1): dependencies: - '@types/react': 18.3.8 get-nonce: 1.0.1 invariant: 2.2.4 - react: 18.2.0 + react: 19.0.0-rc-69d4b800-20241021 tslib: 2.7.0 - dev: false + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 - /react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} - engines: {node: '>=0.10.0'} - dependencies: - loose-envify: 1.4.0 - dev: false + react@19.0.0-rc-69d4b800-20241021: {} - /read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + read-cache@1.0.0: dependencies: pify: 2.3.0 - /readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} + readable-stream@3.6.2: dependencies: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - dev: false - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} + readdirp@3.6.0: dependencies: picomatch: 2.3.1 - /reflect.getprototypeof@1.0.6: - resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} - engines: {node: '>= 0.4'} + reflect.getprototypeof@1.0.6: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -8175,41 +10126,29 @@ packages: get-intrinsic: 1.2.4 globalthis: 1.0.4 which-builtin-type: 1.1.4 - dev: true - /refractor@4.8.1: - resolution: {integrity: sha512-/fk5sI0iTgFYlmVGYVew90AoYnNMP6pooClx/XKqyeeCQXrL0Kvgn8V0VEht5ccdljbzzF1i3Q213gcntkRExg==} + refractor@4.8.1: dependencies: '@types/hast': 2.3.10 '@types/prismjs': 1.26.4 hastscript: 7.2.0 parse-entities: 4.0.1 - dev: false - /regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - dev: false + regenerator-runtime@0.14.1: {} - /regexp.prototype.flags@1.5.2: - resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} - engines: {node: '>= 0.4'} + regexp.prototype.flags@1.5.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-errors: 1.3.0 set-function-name: 2.0.2 - dev: true - /rehype-attr@3.0.3: - resolution: {integrity: sha512-Up50Xfra8tyxnkJdCzLBIBtxOcB2M1xdeKe1324U06RAvSjYm7ULSeoM+b/nYPQPVd7jsXJ9+39IG1WAJPXONw==} - engines: {node: '>=16'} + rehype-attr@3.0.3: dependencies: unified: 11.0.5 unist-util-visit: 5.0.0 - dev: false - /rehype-autolink-headings@7.1.0: - resolution: {integrity: sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw==} + rehype-autolink-headings@7.1.0: dependencies: '@types/hast': 3.0.4 '@ungap/structured-clone': 1.2.0 @@ -8217,27 +10156,20 @@ packages: hast-util-is-element: 3.0.0 unified: 11.0.5 unist-util-visit: 5.0.0 - dev: false - /rehype-ignore@2.0.2: - resolution: {integrity: sha512-BpAT/3lU9DMJ2siYVD/dSR0A/zQgD6Fb+fxkJd4j+wDVy6TYbYpK+FZqu8eM9EuNKGvi4BJR7XTZ/+zF02Dq8w==} - engines: {node: '>=16'} + rehype-ignore@2.0.2: dependencies: hast-util-select: 6.0.2 unified: 11.0.5 unist-util-visit: 5.0.0 - dev: false - /rehype-parse@9.0.0: - resolution: {integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==} + rehype-parse@9.0.0: dependencies: '@types/hast': 3.0.4 hast-util-from-html: 2.0.3 unified: 11.0.5 - dev: false - /rehype-prism-plus@2.0.0: - resolution: {integrity: sha512-FeM/9V2N7EvDZVdR2dqhAzlw5YI49m9Tgn7ZrYJeYHIahM6gcXpH0K1y2gNnKanZCydOMluJvX2cB9z3lhY8XQ==} + rehype-prism-plus@2.0.0: dependencies: hast-util-to-string: 3.0.0 parse-numeric-range: 1.3.0 @@ -8245,61 +10177,46 @@ packages: rehype-parse: 9.0.0 unist-util-filter: 5.0.1 unist-util-visit: 5.0.0 - dev: false - /rehype-raw@7.0.0: - resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} + rehype-raw@7.0.0: dependencies: '@types/hast': 3.0.4 hast-util-raw: 9.0.4 vfile: 6.0.3 - dev: false - /rehype-rewrite@4.0.2: - resolution: {integrity: sha512-rjLJ3z6fIV11phwCqHp/KRo8xuUCO8o9bFJCNw5o6O2wlLk6g8r323aRswdGBQwfXPFYeSuZdAjp4tzo6RGqEg==} - engines: {node: '>=16.0.0'} + rehype-rewrite@4.0.2: dependencies: hast-util-select: 6.0.2 unified: 11.0.5 unist-util-visit: 5.0.0 - dev: false - /rehype-sanitize@6.0.0: - resolution: {integrity: sha512-CsnhKNsyI8Tub6L4sm5ZFsme4puGfc6pYylvXo1AeqaGbjOYyzNv3qZPwvs0oMJ39eryyeOdmxwUIo94IpEhqg==} + rehype-sanitize@6.0.0: dependencies: '@types/hast': 3.0.4 hast-util-sanitize: 5.0.1 - dev: false - /rehype-slug@6.0.0: - resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} + rehype-slug@6.0.0: dependencies: '@types/hast': 3.0.4 github-slugger: 2.0.0 hast-util-heading-rank: 3.0.0 hast-util-to-string: 3.0.0 unist-util-visit: 5.0.0 - dev: false - /rehype-stringify@10.0.0: - resolution: {integrity: sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==} + rehype-stringify@10.0.0: dependencies: '@types/hast': 3.0.4 hast-util-to-html: 9.0.3 unified: 11.0.5 - dev: false - /rehype@13.0.1: - resolution: {integrity: sha512-AcSLS2mItY+0fYu9xKxOu1LhUZeBZZBx8//5HKzF+0XP+eP8+6a5MXn2+DW2kfXR6Dtp1FEXMVrjyKAcvcU8vg==} + rehype@13.0.1: dependencies: '@types/hast': 3.0.4 rehype-parse: 9.0.0 rehype-stringify: 10.0.0 unified: 11.0.5 - dev: false - /remark-gfm@4.0.0: - resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} + remark-gfm@4.0.0: dependencies: '@types/mdast': 4.0.4 mdast-util-gfm: 3.0.0 @@ -8309,17 +10226,12 @@ packages: unified: 11.0.5 transitivePeerDependencies: - supports-color - dev: false - /remark-github-blockquote-alert@1.2.1: - resolution: {integrity: sha512-qNf2mSAoZgh3Cl23/9Y1L7S4Kbf9NsdHvYK398ab/52yEsDPDU5I4cuTcgDRrdIX7Ltc6RK+KCLRtWkbFnL6Dg==} - engines: {node: '>=16'} + remark-github-blockquote-alert@1.2.1: dependencies: unist-util-visit: 5.0.0 - dev: false - /remark-parse@11.0.0: - resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + remark-parse@11.0.0: dependencies: '@types/mdast': 4.0.4 mdast-util-from-markdown: 2.0.1 @@ -8327,176 +10239,111 @@ packages: unified: 11.0.5 transitivePeerDependencies: - supports-color - dev: false - /remark-rehype@11.1.1: - resolution: {integrity: sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==} + remark-rehype@11.1.1: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 mdast-util-to-hast: 13.2.0 unified: 11.0.5 vfile: 6.0.3 - dev: false - /remark-stringify@11.0.0: - resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + remark-stringify@11.0.0: dependencies: '@types/mdast': 4.0.4 mdast-util-to-markdown: 2.1.0 unified: 11.0.5 - dev: false - /require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - dev: false + require-from-string@2.0.2: {} - /resend@4.0.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-rDX0rspl/XcmC2JV2V5obQvRX2arzxXUvNFUDMOv5ObBLR68+7kigCOysb7+dlkb0JE3erhQG0nHrbBt/ZCWIg==} - engines: {node: '>=18'} + resend@4.0.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021): dependencies: - '@react-email/render': 0.0.17(react-dom@18.2.0)(react@18.2.0) + '@react-email/render': 0.0.17(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021) transitivePeerDependencies: - react - react-dom - dev: false - /resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - dev: true + resolve-from@4.0.0: {} - /resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - dev: true + resolve-pkg-maps@1.0.0: {} - /resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true + resolve@1.22.8: dependencies: is-core-module: 2.15.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - /resolve@2.0.0-next.5: - resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} - hasBin: true + resolve@2.0.0-next.5: dependencies: is-core-module: 2.15.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: true - /restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} + restore-cursor@3.1.0: dependencies: onetime: 5.1.2 signal-exit: 3.0.7 - dev: false - /restore-cursor@5.1.0: - resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} - engines: {node: '>=18'} + restore-cursor@5.1.0: dependencies: onetime: 7.0.0 signal-exit: 4.1.0 - dev: true - /reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + reusify@1.0.4: {} - /rfdc@1.4.1: - resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - dev: true + rfdc@1.4.1: {} - /rollup@2.78.0: - resolution: {integrity: sha512-4+YfbQC9QEVvKTanHhIAFVUFSRsezvQF8vFOJwtGfb9Bb+r014S+qryr9PSmw8x6sMnPkmFBGAvIFVQxvJxjtg==} - engines: {node: '>=10.0.0'} - hasBin: true + rollup@2.78.0: optionalDependencies: fsevents: 2.3.3 - dev: false - /run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 - /safe-array-concat@1.1.2: - resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} - engines: {node: '>=0.4'} + safe-array-concat@1.1.2: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 has-symbols: 1.0.3 isarray: 2.0.5 - dev: true - /safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: false + safe-buffer@5.2.1: {} - /safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} - engines: {node: '>= 0.4'} + safe-regex-test@1.0.3: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-regex: 1.1.4 - dev: true - /scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - dependencies: - loose-envify: 1.4.0 - dev: false + scheduler@0.25.0-rc-69d4b800-20241021: {} - /schema-utils@3.3.0: - resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} - engines: {node: '>= 10.13.0'} + schema-utils@3.3.0: dependencies: '@types/json-schema': 7.0.15 ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) - dev: false - /schema-utils@4.2.0: - resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} - engines: {node: '>= 12.13.0'} + schema-utils@4.2.0: dependencies: '@types/json-schema': 7.0.15 ajv: 8.17.1 ajv-formats: 2.1.1(ajv@8.17.1) ajv-keywords: 5.1.0(ajv@8.17.1) - dev: false - /selderee@0.11.0: - resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==} + selderee@0.11.0: dependencies: parseley: 0.12.1 - dev: false - /semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true + semver@6.3.1: {} - /semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} - engines: {node: '>=10'} - hasBin: true + semver@7.6.3: {} - /serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + serialize-javascript@6.0.2: dependencies: randombytes: 2.1.0 - dev: false - /set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 @@ -8505,66 +10352,75 @@ packages: gopd: 1.0.1 has-property-descriptors: 1.0.2 - /set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} + set-function-name@2.0.2: dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 - dev: true - /shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} + sharp@0.33.5: + dependencies: + color: 4.2.3 + detect-libc: 2.0.3 + semver: 7.6.3 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.33.5 + '@img/sharp-darwin-x64': 0.33.5 + '@img/sharp-libvips-darwin-arm64': 1.0.4 + '@img/sharp-libvips-darwin-x64': 1.0.4 + '@img/sharp-libvips-linux-arm': 1.0.5 + '@img/sharp-libvips-linux-arm64': 1.0.4 + '@img/sharp-libvips-linux-s390x': 1.0.4 + '@img/sharp-libvips-linux-x64': 1.0.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + '@img/sharp-linux-arm': 0.33.5 + '@img/sharp-linux-arm64': 0.33.5 + '@img/sharp-linux-s390x': 0.33.5 + '@img/sharp-linux-x64': 0.33.5 + '@img/sharp-linuxmusl-arm64': 0.33.5 + '@img/sharp-linuxmusl-x64': 0.33.5 + '@img/sharp-wasm32': 0.33.5 + '@img/sharp-win32-ia32': 0.33.5 + '@img/sharp-win32-x64': 0.33.5 + optional: true + + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 - /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} + shebang-regex@3.0.0: {} - /side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} - engines: {node: '>= 0.4'} + side-channel@1.0.6: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 object-inspect: 1.13.2 - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: false + signal-exit@3.0.7: {} - /signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} + signal-exit@4.1.0: {} - /slice-ansi@5.0.0: - resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} - engines: {node: '>=12'} + simple-swizzle@0.2.2: + dependencies: + is-arrayish: 0.3.2 + optional: true + + slice-ansi@5.0.0: dependencies: ansi-styles: 6.2.1 is-fullwidth-code-point: 4.0.0 - dev: true - /slice-ansi@7.1.0: - resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} - engines: {node: '>=18'} + slice-ansi@7.1.0: dependencies: ansi-styles: 6.2.1 is-fullwidth-code-point: 5.0.0 - dev: true - /slugify@1.6.6: - resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} - engines: {node: '>=8.0.0'} - dev: false + slugify@1.6.6: {} - /socket.io-adapter@2.5.5: - resolution: {integrity: sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==} + socket.io-adapter@2.5.5: dependencies: debug: 4.3.7 ws: 8.17.1 @@ -8572,21 +10428,15 @@ packages: - bufferutil - supports-color - utf-8-validate - dev: false - /socket.io-parser@4.2.4: - resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} - engines: {node: '>=10.0.0'} + socket.io-parser@4.2.4: dependencies: '@socket.io/component-emitter': 3.1.2 debug: 4.3.7 transitivePeerDependencies: - supports-color - dev: false - /socket.io@4.7.5: - resolution: {integrity: sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==} - engines: {node: '>=10.2.0'} + socket.io@4.7.5: dependencies: accepts: 1.3.8 base64id: 2.0.0 @@ -8599,101 +10449,61 @@ packages: - bufferutil - supports-color - utf-8-validate - dev: false - /sonner@1.5.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-FBjhG/gnnbN6FY0jaNnqZOMmB73R+5IiyYAw8yBj7L54ER7HB3fOSE5OFiQiE2iXWxeXKvg6fIP4LtVppHEdJA==} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 + sonner@1.5.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021): dependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false + react: 19.0.0-rc-69d4b800-20241021 + react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021) - /source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} + source-map-js@1.2.1: {} - /source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - dev: false - /source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - dev: false + source-map@0.6.1: {} - /space-separated-tokens@2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - dev: false + space-separated-tokens@2.0.2: {} - /stable-hash@0.0.4: - resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} - dev: true + stable-hash@0.0.4: {} - /stacktrace-parser@0.1.10: - resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} - engines: {node: '>=6'} + stacktrace-parser@0.1.10: dependencies: type-fest: 0.7.1 - dev: false - /stop-iteration-iterator@1.0.0: - resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} - engines: {node: '>= 0.4'} + stop-iteration-iterator@1.0.0: dependencies: internal-slot: 1.0.7 - dev: true - /streamsearch@1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} - dev: false + streamsearch@1.1.0: {} - /string-argv@0.3.2: - resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} - engines: {node: '>=0.6.19'} - dev: true + string-argv@0.3.2: {} - /string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - /string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} + string-width@5.1.2: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.1.0 - /string-width@7.2.0: - resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} - engines: {node: '>=18'} + string-width@7.2.0: dependencies: emoji-regex: 10.4.0 get-east-asian-width: 1.2.0 strip-ansi: 7.1.0 - dev: true - /string.prototype.includes@2.0.0: - resolution: {integrity: sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==} + string.prototype.includes@2.0.0: dependencies: define-properties: 1.2.1 es-abstract: 1.23.3 - dev: true - /string.prototype.matchall@4.0.11: - resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} - engines: {node: '>= 0.4'} + string.prototype.matchall@4.0.11: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -8707,122 +10517,80 @@ packages: regexp.prototype.flags: 1.5.2 set-function-name: 2.0.2 side-channel: 1.0.6 - dev: true - /string.prototype.repeat@1.0.0: - resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + string.prototype.repeat@1.0.0: dependencies: define-properties: 1.2.1 es-abstract: 1.23.3 - dev: true - /string.prototype.trim@1.2.9: - resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} - engines: {node: '>= 0.4'} + string.prototype.trim@1.2.9: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-object-atoms: 1.0.0 - dev: true - /string.prototype.trimend@1.0.8: - resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + string.prototype.trimend@1.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 - dev: true - /string.prototype.trimstart@1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} + string.prototype.trimstart@1.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 - dev: true - /string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 - dev: false - /stringify-entities@4.0.4: - resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + stringify-entities@4.0.4: dependencies: character-entities-html4: 2.1.0 character-entities-legacy: 3.0.0 - dev: false - /strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 - /strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} + strip-ansi@7.1.0: dependencies: ansi-regex: 6.1.0 - /strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - dev: true + strip-bom@3.0.0: {} - /strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - dev: true + strip-final-newline@3.0.0: {} - /strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - dev: true + strip-json-comments@3.1.1: {} - /stripe@16.12.0: - resolution: {integrity: sha512-H7eFVLDxeTNNSn4JTRfL2//LzCbDrMSZ+2q1c7CanVWgK2qIW5TwS+0V7N9KcKZZNpYh/uCqK0PyZh/2UsaAtQ==} - engines: {node: '>=12.*'} + stripe@16.12.0: dependencies: '@types/node': 22.5.5 qs: 6.13.0 - dev: false - /strnum@1.0.5: - resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} - dev: false + strnum@1.0.5: {} - /style-to-object@1.0.8: - resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} + style-to-object@1.0.8: dependencies: inline-style-parser: 0.2.4 - dev: false - /styled-jsx@5.1.1(@babel/core@7.24.5)(react@18.2.0): - resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@babel/core': '*' - babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' - peerDependenciesMeta: - '@babel/core': - optional: true - babel-plugin-macros: - optional: true + styled-jsx@5.1.1(@babel/core@7.24.5)(react@19.0.0-rc-69d4b800-20241021): dependencies: + client-only: 0.0.1 + react: 19.0.0-rc-69d4b800-20241021 + optionalDependencies: '@babel/core': 7.24.5 + + styled-jsx@5.1.6(@babel/core@7.24.5)(react@19.0.0-rc-69d4b800-20241021): + dependencies: client-only: 0.0.1 - react: 18.2.0 - dev: false + react: 19.0.0-rc-69d4b800-20241021 + optionalDependencies: + '@babel/core': 7.24.5 - /sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true + sucrase@3.35.0: dependencies: '@jridgewell/gen-mapping': 0.3.5 commander: 4.1.1 @@ -8832,54 +10600,32 @@ packages: pirates: 4.0.6 ts-interface-checker: 0.1.13 - /supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} + supports-color@5.5.0: dependencies: has-flag: 3.0.0 - dev: false - /supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} + supports-color@7.2.0: dependencies: has-flag: 4.0.0 - /supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} + supports-color@8.1.1: dependencies: has-flag: 4.0.0 - dev: false - /supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} + supports-preserve-symlinks-flag@1.0.0: {} - /synckit@0.9.1: - resolution: {integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==} - engines: {node: ^14.18.0 || >=16.0.0} + synckit@0.9.1: dependencies: '@pkgr/core': 0.1.1 tslib: 2.7.0 - dev: true - /tailwind-merge@2.5.2: - resolution: {integrity: sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg==} - dev: false + tailwind-merge@2.5.2: {} - /tailwindcss-animate@1.0.7(tailwindcss@3.4.12): - resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} - peerDependencies: - tailwindcss: '>=3.0.0 || insiders' + tailwindcss-animate@1.0.7(tailwindcss@3.4.12(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.6.2))): dependencies: - tailwindcss: 3.4.12(ts-node@10.9.2) - dev: false + tailwindcss: 3.4.12(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.6.2)) - /tailwindcss@3.4.12(ts-node@10.9.2): - resolution: {integrity: sha512-Htf/gHj2+soPb9UayUNci/Ja3d8pTmu9ONTfh4QY8r3MATTZOzmv6UYWF7ZwikEIC8okpfqmGqrmDehua8mF8w==} - engines: {node: '>=14.0.0'} - hasBin: true + tailwindcss@3.4.12(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.6.2)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -8898,7 +10644,7 @@ packages: postcss: 8.4.47 postcss-import: 15.1.0(postcss@8.4.47) postcss-js: 4.0.1(postcss@8.4.47) - postcss-load-config: 4.0.2(postcss@8.4.47)(ts-node@10.9.2) + postcss-load-config: 4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.6.2)) postcss-nested: 6.2.0(postcss@8.4.47) postcss-selector-parser: 6.1.2 resolve: 1.22.8 @@ -8906,25 +10652,9 @@ packages: transitivePeerDependencies: - ts-node - /tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} + tapable@2.2.1: {} - /terser-webpack-plugin@5.3.10(webpack@5.94.0): - resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true + terser-webpack-plugin@5.3.10(webpack@5.94.0): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 @@ -8932,82 +10662,43 @@ packages: serialize-javascript: 6.0.2 terser: 5.33.0 webpack: 5.94.0 - dev: false - /terser@5.33.0: - resolution: {integrity: sha512-JuPVaB7s1gdFKPKTelwUyRq5Sid2A3Gko2S0PncwdBq7kN9Ti9HPWDQ06MPsEDGsZeVESjKEnyGy68quBk1w6g==} - engines: {node: '>=10'} - hasBin: true + terser@5.33.0: dependencies: '@jridgewell/source-map': 0.3.6 acorn: 8.12.1 commander: 2.20.3 source-map-support: 0.5.21 - dev: false - /text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: true + text-table@0.2.0: {} - /thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} + thenify-all@1.6.0: dependencies: thenify: 3.3.1 - /thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + thenify@3.3.1: dependencies: any-promise: 1.3.0 - /to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - dev: false + to-fast-properties@2.0.0: {} - /to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 - /tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: false + tr46@0.0.3: {} - /trim-lines@3.0.1: - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - dev: false + trim-lines@3.0.1: {} - /trough@2.2.0: - resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - dev: false + trough@2.2.0: {} - /ts-api-utils@1.3.0(typescript@5.6.2): - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' + ts-api-utils@1.3.0(typescript@5.6.2): dependencies: typescript: 5.6.2 - dev: true - /ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + ts-interface-checker@0.1.13: {} - /ts-node@10.9.2(@types/node@22.5.5)(typescript@5.6.2): - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true + ts-node@10.9.2(@types/node@22.5.5)(typescript@5.6.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -9025,58 +10716,38 @@ packages: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - /tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + tsconfig-paths@3.15.0: dependencies: '@types/json5': 0.0.29 json5: 1.0.2 minimist: 1.2.8 strip-bom: 3.0.0 - dev: true - /tslib@2.7.0: - resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} + tslib@2.7.0: {} - /type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 - dev: true - /type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: true + type-fest@0.20.2: {} - /type-fest@0.7.1: - resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} - engines: {node: '>=8'} - dev: false + type-fest@0.7.1: {} - /typed-array-buffer@1.0.2: - resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} - engines: {node: '>= 0.4'} + typed-array-buffer@1.0.2: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-typed-array: 1.1.13 - dev: true - /typed-array-byte-length@1.0.1: - resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} - engines: {node: '>= 0.4'} + typed-array-byte-length@1.0.1: dependencies: call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 has-proto: 1.0.3 is-typed-array: 1.1.13 - dev: true - /typed-array-byte-offset@1.0.2: - resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} - engines: {node: '>= 0.4'} + typed-array-byte-offset@1.0.2: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.7 @@ -9084,11 +10755,8 @@ packages: gopd: 1.0.1 has-proto: 1.0.3 is-typed-array: 1.1.13 - dev: true - /typed-array-length@1.0.6: - resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} - engines: {node: '>= 0.4'} + typed-array-length@1.0.6: dependencies: call-bind: 1.0.7 for-each: 0.3.3 @@ -9096,45 +10764,34 @@ packages: has-proto: 1.0.3 is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 - dev: true - /typescript-eslint@8.6.0(eslint@9.9.1)(typescript@5.6.2): - resolution: {integrity: sha512-eEhhlxCEpCd4helh3AO1hk0UP2MvbRi9CtIAJTVPQjuSXOOO2jsEacNi4UdcJzZJbeuVg1gMhtZ8UYb+NFYPrA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + types-react@19.0.0-rc.1: + dependencies: + csstype: 3.1.3 + + typescript-eslint@8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.6.0(@typescript-eslint/parser@8.6.0)(eslint@9.9.1)(typescript@5.6.2) - '@typescript-eslint/parser': 8.6.0(eslint@9.9.1)(typescript@5.6.2) - '@typescript-eslint/utils': 8.6.0(eslint@9.9.1)(typescript@5.6.2) + '@typescript-eslint/eslint-plugin': 8.6.0(@typescript-eslint/parser@8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/parser': 8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/utils': 8.6.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.6.2) + optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: - eslint - supports-color - dev: true - /typescript@5.6.2: - resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==} - engines: {node: '>=14.17'} - hasBin: true + typescript@5.6.2: {} - /unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + unbox-primitive@1.0.2: dependencies: call-bind: 1.0.7 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 - dev: true - /undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + undici-types@6.19.8: {} - /unified@11.0.5: - resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + unified@11.0.5: dependencies: '@types/unist': 3.0.3 bail: 2.0.2 @@ -9143,191 +10800,113 @@ packages: is-plain-obj: 4.1.0 trough: 2.2.0 vfile: 6.0.3 - dev: false - /unist-util-filter@5.0.1: - resolution: {integrity: sha512-pHx7D4Zt6+TsfwylH9+lYhBhzyhEnCXs/lbq/Hstxno5z4gVdyc2WEW0asfjGKPyG4pEKrnBv5hdkO6+aRnQJw==} + unist-util-filter@5.0.1: dependencies: '@types/unist': 3.0.3 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - dev: false - /unist-util-is@6.0.0: - resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + unist-util-is@6.0.0: dependencies: '@types/unist': 3.0.3 - dev: false - /unist-util-position@5.0.0: - resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + unist-util-position@5.0.0: dependencies: '@types/unist': 3.0.3 - dev: false - /unist-util-stringify-position@4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + unist-util-stringify-position@4.0.0: dependencies: '@types/unist': 3.0.3 - dev: false - /unist-util-visit-parents@6.0.1: - resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + unist-util-visit-parents@6.0.1: dependencies: '@types/unist': 3.0.3 unist-util-is: 6.0.0 - dev: false - /unist-util-visit@5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + unist-util-visit@5.0.0: dependencies: '@types/unist': 3.0.3 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - dev: false - /update-browserslist-db@1.1.0(browserslist@4.23.3): - resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' + update-browserslist-db@1.1.0(browserslist@4.23.3): dependencies: browserslist: 4.23.3 escalade: 3.2.0 picocolors: 1.1.0 - /uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + uri-js@4.4.1: dependencies: punycode: 2.3.1 - /use-callback-ref@1.3.2(@types/react@18.3.8)(react@18.2.0): - resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + use-callback-ref@1.3.2(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1): dependencies: - '@types/react': 18.3.8 - react: 18.2.0 + react: 19.0.0-rc-69d4b800-20241021 tslib: 2.7.0 - dev: false + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 - /use-debounce@10.0.3(react@18.2.0): - resolution: {integrity: sha512-DxQSI9ZKso689WM1mjgGU3ozcxU1TJElBJ3X6S4SMzMNcm2lVH0AHmyXB+K7ewjz2BSUKJTDqTcwtSMRfB89dg==} - engines: {node: '>= 16.0.0'} - peerDependencies: - react: '*' + use-debounce@10.0.3(react@19.0.0-rc-69d4b800-20241021): dependencies: - react: 18.2.0 - dev: false + react: 19.0.0-rc-69d4b800-20241021 - /use-sidecar@1.1.2(@types/react@18.3.8)(react@18.2.0): - resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + use-sidecar@1.1.2(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1): dependencies: - '@types/react': 18.3.8 detect-node-es: 1.1.0 - react: 18.2.0 + react: 19.0.0-rc-69d4b800-20241021 tslib: 2.7.0 - dev: false + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 - /util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + util-deprecate@1.0.2: {} - /uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - dev: false + uuid@9.0.1: {} - /v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + v8-compile-cache-lib@3.0.1: {} - /vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - dev: false + vary@1.1.2: {} - /vaul@0.9.4(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-pcyIy1nEk6798ReNQpbVH/T/dYnoJ3bwyq7jmSp134s+bSvpWoSWQthm3/jfsQRvHNYIEK4ZKbkHUJ3YfLfw1w==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + vaul@1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1): dependencies: - '@radix-ui/react-dialog': 1.1.1(@types/react@18.3.8)(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-dialog': 1.1.1(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-69d4b800-20241021 + react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021) transitivePeerDependencies: - '@types/react' - '@types/react-dom' - dev: false - /vfile-location@5.0.3: - resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} + vfile-location@5.0.3: dependencies: '@types/unist': 3.0.3 vfile: 6.0.3 - dev: false - /vfile-message@4.0.2: - resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + vfile-message@4.0.2: dependencies: '@types/unist': 3.0.3 unist-util-stringify-position: 4.0.0 - dev: false - /vfile@6.0.3: - resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + vfile@6.0.3: dependencies: '@types/unist': 3.0.3 vfile-message: 4.0.2 - dev: false - /watchpack@2.4.2: - resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} - engines: {node: '>=10.13.0'} + watchpack@2.4.2: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 - dev: false - /wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + wcwidth@1.0.1: dependencies: defaults: 1.0.4 - dev: false - /web-namespaces@2.0.1: - resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - dev: false + web-namespaces@2.0.1: {} - /webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: false + webidl-conversions@3.0.1: {} - /webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} - engines: {node: '>=10.13.0'} - dev: false + webpack-sources@3.2.3: {} - /webpack@5.94.0: - resolution: {integrity: sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true + webpack@5.94.0: dependencies: '@types/estree': 1.0.6 '@webassemblyjs/ast': 1.12.1 @@ -9356,28 +10935,21 @@ packages: - '@swc/core' - esbuild - uglify-js - dev: false - /whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - dev: false - /which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + which-boxed-primitive@1.0.2: dependencies: is-bigint: 1.0.4 is-boolean-object: 1.1.2 is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 - dev: true - /which-builtin-type@1.1.4: - resolution: {integrity: sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==} - engines: {node: '>= 0.4'} + which-builtin-type@1.1.4: dependencies: function.prototype.name: 1.1.6 has-tostringtag: 1.0.2 @@ -9391,110 +10963,60 @@ packages: which-boxed-primitive: 1.0.2 which-collection: 1.0.2 which-typed-array: 1.1.15 - dev: true - /which-collection@1.0.2: - resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} - engines: {node: '>= 0.4'} + which-collection@1.0.2: dependencies: is-map: 2.0.3 is-set: 2.0.3 is-weakmap: 2.0.2 is-weakset: 2.0.3 - dev: true - /which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} - engines: {node: '>= 0.4'} + which-typed-array@1.1.15: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.2 - dev: true - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true + which@2.0.2: dependencies: isexe: 2.0.0 - /word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - dev: true + word-wrap@1.2.5: {} - /wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - /wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} + wrap-ansi@8.1.0: dependencies: ansi-styles: 6.2.1 string-width: 5.1.2 strip-ansi: 7.1.0 - /wrap-ansi@9.0.0: - resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} - engines: {node: '>=18'} + wrap-ansi@9.0.0: dependencies: ansi-styles: 6.2.1 string-width: 7.2.0 strip-ansi: 7.1.0 - dev: true - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: false + wrappy@1.0.2: {} - /ws@8.17.1: - resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: false + ws@8.17.1: {} - /yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - dev: false + yallist@3.1.1: {} - /yaml@2.5.1: - resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==} - engines: {node: '>= 14'} - hasBin: true + yaml@2.5.1: {} - /yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} + yn@3.1.1: {} - /yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - dev: true + yocto-queue@0.1.0: {} - /yocto-queue@1.1.1: - resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} - engines: {node: '>=12.20'} - dev: false + yocto-queue@1.1.1: {} - /zod@3.23.8: - resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} - dev: false + zod@3.23.8: {} - /zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - dev: false + zwitch@2.0.4: {} From 28e3ca451c9a4e6476d6c6fc64340c72151abfca Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 24 Oct 2024 11:44:49 +0200 Subject: [PATCH 297/326] :wrench: update config files --- next-env.d.ts | 2 +- next.config.js | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/next-env.d.ts b/next-env.d.ts index 4f11a03dc..40c3d6809 100644 --- a/next-env.d.ts +++ b/next-env.d.ts @@ -2,4 +2,4 @@ /// // NOTE: This file should not be edited -// see https://nextjs.org/docs/basic-features/typescript for more information. +// see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information. diff --git a/next.config.js b/next.config.js index 0f1542ae0..e97991f9e 100644 --- a/next.config.js +++ b/next.config.js @@ -4,7 +4,6 @@ const { withSentryConfig } = require('@sentry/nextjs'); const nextConfig = removeImports({ transpilePackages: ['@mdxeditor/editor', 'react-diff-view'], - swcMinify: true, images: { remotePatterns: [ { From b439395db8efe5e4682f7edecf892a4be441d053 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Thu, 24 Oct 2024 11:45:21 +0200 Subject: [PATCH 298/326] :construction: wip migration to next15 / react19 --- src/app/api/auth/token/route.ts | 2 +- src/app/api/stripe/webhooks/route.ts | 3 ++- src/app/login/page.tsx | 3 ++- src/app/page.tsx | 3 ++- src/app/question/[id]/page.tsx | 3 ++- src/app/question/answer/page.tsx | 3 ++- src/app/question/edit/page.tsx | 3 ++- src/components/drawer/Drawer.tsx | 4 ++-- src/styles/globals.css | 29 ++++++++++++++-------------- 9 files changed, 30 insertions(+), 23 deletions(-) diff --git a/src/app/api/auth/token/route.ts b/src/app/api/auth/token/route.ts index 6da800d2a..e51a28087 100644 --- a/src/app/api/auth/token/route.ts +++ b/src/app/api/auth/token/route.ts @@ -2,7 +2,7 @@ import { cookies } from 'next/headers'; import { NextResponse } from 'next/server'; export async function GET() { - const getCookies = cookies(); + const getCookies = await cookies(); const nextAuthSession = getCookies.get('next-auth.session-token')?.value || ''; diff --git a/src/app/api/stripe/webhooks/route.ts b/src/app/api/stripe/webhooks/route.ts index 6a6cb5e15..89f16249a 100644 --- a/src/app/api/stripe/webhooks/route.ts +++ b/src/app/api/stripe/webhooks/route.ts @@ -16,7 +16,8 @@ const webhookSecret = process.env.STRIPE_WEBHOOK_SECRET!; export async function POST(req: NextRequest) { const body = await req.text(); - const signature = headers().get('Stripe-Signature') as string; + const headersList = await headers(); + const signature = headersList.get('Stripe-Signature'); let event: Stripe.Event; diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index 7b41df944..b985260a9 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -33,7 +33,8 @@ const LoginError = ({ error }: ErrorProps) => { return
    {errorMessage}
    ; }; -export default function Page({ searchParams }) { +export default async function Page(props) { + const searchParams = await props.searchParams; const { error } = searchParams; return ( diff --git a/src/app/page.tsx b/src/app/page.tsx index 3dcc03aec..98705fb17 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -14,7 +14,8 @@ import { Routes } from '@/utils'; import Home from './home'; -export default async function Page({ searchParams }) { +export default async function Page(props) { + const searchParams = await props.searchParams; const me = await getMe(); if (!me) { diff --git a/src/app/question/[id]/page.tsx b/src/app/question/[id]/page.tsx index d85560ad2..61a7d5934 100644 --- a/src/app/question/[id]/page.tsx +++ b/src/app/question/[id]/page.tsx @@ -6,7 +6,8 @@ import { Routes } from '@/utils'; import Question from './question'; -export default async function Page({ params }) { +export default async function Page(props) { + const params = await props.params; const me = await getMe(); if (!me) return redirect(Routes.SITE.LOGIN); diff --git a/src/app/question/answer/page.tsx b/src/app/question/answer/page.tsx index 62f4fe79b..1332fb4f5 100644 --- a/src/app/question/answer/page.tsx +++ b/src/app/question/answer/page.tsx @@ -6,7 +6,8 @@ import { Routes } from '@/utils'; import Answer from './answer'; -export default async function Page({ searchParams }) { +export default async function Page(props) { + const searchParams = await props.searchParams; const me = await getMe(); if (!me) return redirect(Routes.SITE.LOGIN); diff --git a/src/app/question/edit/page.tsx b/src/app/question/edit/page.tsx index c05a6b4e8..455c85403 100644 --- a/src/app/question/edit/page.tsx +++ b/src/app/question/edit/page.tsx @@ -6,7 +6,8 @@ import { Routes } from '@/utils'; import Edit from './edit'; -export default async function Page({ searchParams }) { +export default async function Page(props) { + const searchParams = await props.searchParams; const me = await getMe(); if (!me) return redirect(Routes.SITE.LOGIN); diff --git a/src/components/drawer/Drawer.tsx b/src/components/drawer/Drawer.tsx index 981d33eab..25f5b217e 100644 --- a/src/components/drawer/Drawer.tsx +++ b/src/components/drawer/Drawer.tsx @@ -37,7 +37,7 @@ const DrawerOverlay = forwardRef< {...props} /> )); -DrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName; +DrawerOverlay.displayName = DrawerPrimitive.Overlay?.displayName; const DrawerContent = forwardRef< ElementRef, @@ -95,7 +95,7 @@ const DrawerTitle = forwardRef< {...props} /> )); -DrawerTitle.displayName = DrawerPrimitive.Title.displayName; +DrawerTitle.displayName = DrawerPrimitive.Title?.displayName; export { Drawer, diff --git a/src/styles/globals.css b/src/styles/globals.css index 978eda586..1722eb17a 100644 --- a/src/styles/globals.css +++ b/src/styles/globals.css @@ -1,21 +1,22 @@ +@import '@radix-ui/colors/teal.css'; +@import '@radix-ui/colors/teal-alpha.css'; +@import '@radix-ui/colors/teal-dark.css'; +@import '@radix-ui/colors/teal-dark-alpha.css'; + +@import '@radix-ui/colors/gray.css'; +@import '@radix-ui/colors/gray-alpha.css'; +@import '@radix-ui/colors/gray-dark.css'; +@import '@radix-ui/colors/gray-dark-alpha.css'; + +@import '@radix-ui/colors/red.css'; +@import '@radix-ui/colors/red-alpha.css'; +@import '@radix-ui/colors/red-dark.css'; +@import '@radix-ui/colors/red-dark-alpha.css'; + @tailwind base; @tailwind components; @tailwind utilities; -@import '@radix-ui/colors/teal'; -@import '@radix-ui/colors/teal-alpha'; -@import '@radix-ui/colors/teal-dark'; -@import '@radix-ui/colors/teal-dark-alpha'; - -@import '@radix-ui/colors/gray'; -@import '@radix-ui/colors/gray-alpha'; -@import '@radix-ui/colors/gray-dark'; -@import '@radix-ui/colors/gray-dark-alpha'; - -@import '@radix-ui/colors/red'; -@import '@radix-ui/colors/red-alpha'; -@import '@radix-ui/colors/red-dark'; -@import '@radix-ui/colors/red-dark-alpha'; * { @apply transition-colors duration-300 ease-in-out; From 5331ba6884a69ef9b7004c3c7e2c417ff0cbc161 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 27 Oct 2024 12:38:37 +0100 Subject: [PATCH 299/326] :wrench: remove webpack ocnfig --- next.config.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/next.config.js b/next.config.js index e97991f9e..9cc923c42 100644 --- a/next.config.js +++ b/next.config.js @@ -23,10 +23,6 @@ const nextConfig = removeImports({ // !! WARN !! ignoreBuildErrors: true, }, - webpack: (config) => { - config.experiments = { ...config.experiments, topLevelAwait: true }; - return config; - }, }); // const sentryConfig = withSentryConfig( From 29d93933730c32e82afe686b078341120aaa8e84 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 27 Oct 2024 12:39:02 +0100 Subject: [PATCH 300/326] :bug: add missing use client --- src/components/drawer/Drawer.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/drawer/Drawer.tsx b/src/components/drawer/Drawer.tsx index 25f5b217e..d9d4c6023 100644 --- a/src/components/drawer/Drawer.tsx +++ b/src/components/drawer/Drawer.tsx @@ -1,3 +1,5 @@ +'use client'; + import type { ComponentProps, ElementRef, From 0b8c22212c4901fed8c5e0dbc7c30c8109525009 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 27 Oct 2024 12:42:43 +0100 Subject: [PATCH 301/326] :arrow_up: upgrade next-auth --- package.json | 2 +- pnpm-lock.yaml | 47 +++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 42 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index f2afd97b9..9ff677daf 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "jotai": "^2.6.4", "lucide-react": "^0.438.0", "next": "15.0.1", - "next-auth": "5.0.0-beta.22", + "next-auth": "5.0.0-beta.25", "next-remove-imports": "^1.0.12", "next-safe-action": "^7.0.2", "next-themes": "^0.3.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c46aaa2ab..19d3db9e9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -96,8 +96,8 @@ importers: specifier: 15.0.1 version: 15.0.1(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021) next-auth: - specifier: 5.0.0-beta.22 - version: 5.0.0-beta.22(next@15.0.1(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021) + specifier: 5.0.0-beta.25 + version: 5.0.0-beta.25(next@15.0.1(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021) next-remove-imports: specifier: ^1.0.12 version: 1.0.12(webpack@5.94.0) @@ -280,6 +280,20 @@ packages: nodemailer: optional: true + '@auth/core@0.37.2': + resolution: {integrity: sha512-kUvzyvkcd6h1vpeMAojK2y7+PAV5H+0Cc9+ZlKYDFhDY31AlvsB+GW5vNO4qE3Y07KeQgvNO9U0QUx/fN62kBw==} + peerDependencies: + '@simplewebauthn/browser': ^9.0.1 + '@simplewebauthn/server': ^9.0.2 + nodemailer: ^6.8.0 + peerDependenciesMeta: + '@simplewebauthn/browser': + optional: true + '@simplewebauthn/server': + optional: true + nodemailer: + optional: true + '@auth/prisma-adapter@2.5.3': resolution: {integrity: sha512-hUQ7KT4Ufbg4RqmfvRUNwQjuNsTdxWXTIid8IbmAcT5b6DMWQEvDEJUZL14rgrBHk5xZQbagfM28VxF75NgnNw==} peerDependencies: @@ -2477,6 +2491,10 @@ packages: resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} + cookie@0.7.1: + resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} + engines: {node: '>= 0.6'} + cors@2.8.5: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} engines: {node: '>= 0.10'} @@ -3851,8 +3869,8 @@ packages: neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - next-auth@5.0.0-beta.22: - resolution: {integrity: sha512-QGBo9HGOjmnJBHGXvtFztl0tM5tL0porDlk74HVoCCzXd986ApOlIW3EmiCuho7YzEopgkFiwwmcXpoCrHAtYw==} + next-auth@5.0.0-beta.25: + resolution: {integrity: sha512-2dJJw1sHQl2qxCrRk+KTQbeH+izFbGFPuJj5eGgBZFYyiYYtvlrBeUw1E/OJJxTRjuxbSYGnCTkUIRsIIW0bog==} peerDependencies: '@simplewebauthn/browser': ^9.0.1 '@simplewebauthn/server': ^9.0.2 @@ -3974,6 +3992,9 @@ packages: oauth4webapi@2.17.0: resolution: {integrity: sha512-lbC0Z7uzAFNFyzEYRIC+pkSVvDHJTbEW+dYlSBAlCYDe6RxUkJ26bClhk8ocBZip1wfI9uKTe0fm4Ib4RHn6uQ==} + oauth4webapi@3.1.2: + resolution: {integrity: sha512-KQZkNU+xn02lWrFu5Vjqg9E81yPtDSxUZorRHlLWVoojD+H/0GFbH59kcnz5Thdjj7c4/mYMBPj/mhvGe/kKXA==} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -5116,6 +5137,16 @@ snapshots: preact: 10.11.3 preact-render-to-string: 5.2.3(preact@10.11.3) + '@auth/core@0.37.2': + dependencies: + '@panva/hkdf': 1.2.1 + '@types/cookie': 0.6.0 + cookie: 0.7.1 + jose: 5.9.3 + oauth4webapi: 3.1.2 + preact: 10.11.3 + preact-render-to-string: 5.2.3(preact@10.11.3) + '@auth/prisma-adapter@2.5.3(@prisma/client@5.16.1(prisma@5.16.1))': dependencies: '@auth/core': 0.35.3 @@ -7794,6 +7825,8 @@ snapshots: cookie@0.6.0: {} + cookie@0.7.1: {} + cors@2.8.5: dependencies: object-assign: 4.1.1 @@ -9620,9 +9653,9 @@ snapshots: neo-async@2.6.2: {} - next-auth@5.0.0-beta.22(next@15.0.1(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021): + next-auth@5.0.0-beta.25(next@15.0.1(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021): dependencies: - '@auth/core': 0.35.3 + '@auth/core': 0.37.2 next: 15.0.1(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021) react: 19.0.0-rc-69d4b800-20241021 @@ -9726,6 +9759,8 @@ snapshots: oauth4webapi@2.17.0: {} + oauth4webapi@3.1.2: {} + object-assign@4.1.1: {} object-hash@3.0.0: {} From 83dddb2c38fa737bcaa0de9de490572964c87ae1 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 27 Oct 2024 12:43:05 +0100 Subject: [PATCH 302/326] :bug: fix hydration error with next-theme --- src/app/layout.tsx | 2 +- src/modules/theme/ThemeToggle.tsx | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 010c88499..38fdc08e7 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -9,7 +9,7 @@ type Props = { export default function RootLayout({ children }: Props) { return ( - + {children} diff --git a/src/modules/theme/ThemeToggle.tsx b/src/modules/theme/ThemeToggle.tsx index 66358627b..55aec0b9f 100644 --- a/src/modules/theme/ThemeToggle.tsx +++ b/src/modules/theme/ThemeToggle.tsx @@ -1,5 +1,7 @@ 'use client'; +import { useEffect } from 'react'; + import { SunIcon, MoonIcon } from 'lucide-react'; import { useTheme } from 'next-themes'; @@ -29,6 +31,13 @@ export const ThemeToggle = () => { }, ]; + useEffect(() => { + const isDarkTheme = globalThis.matchMedia( + '(prefers-color-scheme: dark)', + ).matches; + setTheme(isDarkTheme ? 'dark' : 'light'); + }, []); + return ( From 3a1594f799dfa927fc76028ec42855eb027445a5 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 27 Oct 2024 14:58:08 +0100 Subject: [PATCH 303/326] :bug: add key + remove duplicate display css --- src/app/register/confirm/page.tsx | 3 ++- src/app/register/page.tsx | 3 ++- src/app/register/plan/form.tsx | 5 ++++- src/app/register/plan/page.tsx | 3 ++- src/app/register/user/page.tsx | 3 ++- 5 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/app/register/confirm/page.tsx b/src/app/register/confirm/page.tsx index 01e0f1ff0..a81a030c0 100644 --- a/src/app/register/confirm/page.tsx +++ b/src/app/register/confirm/page.tsx @@ -27,9 +27,10 @@ export default function Page() { {RegisterRoutes.map((link) => ( - + {link.number} {link.title} diff --git a/src/app/register/page.tsx b/src/app/register/page.tsx index a293221fd..6ecfe6f6d 100644 --- a/src/app/register/page.tsx +++ b/src/app/register/page.tsx @@ -27,9 +27,10 @@ export default function Page() { {RegisterRoutes.map((link) => ( - + {link.number} {link.title} diff --git a/src/app/register/plan/form.tsx b/src/app/register/plan/form.tsx index 04dac1b27..81f30d7c8 100644 --- a/src/app/register/plan/form.tsx +++ b/src/app/register/plan/form.tsx @@ -134,7 +134,10 @@ export default function Form() { > {plans.map((plan) => ( - + saveData(plan.value, plan.lookup_key), diff --git a/src/app/register/plan/page.tsx b/src/app/register/plan/page.tsx index 4a4000e8f..132676fce 100644 --- a/src/app/register/plan/page.tsx +++ b/src/app/register/plan/page.tsx @@ -29,9 +29,10 @@ export default function Page() { {RegisterRoutes.map((link) => ( - + {link.number} {link.title} diff --git a/src/app/register/user/page.tsx b/src/app/register/user/page.tsx index c70741a6c..7429ae4db 100644 --- a/src/app/register/user/page.tsx +++ b/src/app/register/user/page.tsx @@ -27,9 +27,10 @@ export default function Page() { {RegisterRoutes.map((link) => ( - + {link.number} {link.title} From 2226bdecf32a8ef81e0d9acbd90420e0d0577391 Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Tue, 29 Oct 2024 15:19:43 +0100 Subject: [PATCH 304/326] :arrow_up: upgrade stripe + vaul --- package.json | 6 +++--- pnpm-lock.yaml | 34 +++++++++++++++++----------------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 9ff677daf..4ed5fb57b 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "@react-email/components": "^0.0.25", "@sentry/nextjs": "^7.102.1", "@slack/webhook": "^7.0.1", - "@stripe/stripe-js": "^4.1.0", + "@stripe/stripe-js": "^4.9.0", "@uiw/react-markdown-preview": "^5.0.6", "@uiw/react-md-editor": "^4.0.3", "class-variance-authority": "^0.7.0", @@ -77,11 +77,11 @@ "resend": "^4.0.0", "slugify": "^1.6.6", "sonner": "^1.4.0", - "stripe": "^16.1.0", + "stripe": "^17.2.1", "tailwind-merge": "^2.2.0", "tailwindcss-animate": "^1.0.6", "use-debounce": "^10.0.0", - "vaul": "^1.1.0", + "vaul": "^1.1.1", "zod": "^3.22.4" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 19d3db9e9..aafb9211a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -66,8 +66,8 @@ importers: specifier: ^7.0.1 version: 7.0.3 '@stripe/stripe-js': - specifier: ^4.1.0 - version: 4.5.0 + specifier: ^4.9.0 + version: 4.9.0 '@uiw/react-markdown-preview': specifier: ^5.0.6 version: 5.1.3(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) @@ -144,8 +144,8 @@ importers: specifier: ^1.4.0 version: 1.5.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021) stripe: - specifier: ^16.1.0 - version: 16.12.0 + specifier: ^17.2.1 + version: 17.2.1 tailwind-merge: specifier: ^2.2.0 version: 2.5.2 @@ -156,8 +156,8 @@ importers: specifier: ^10.0.0 version: 10.0.3(react@19.0.0-rc-69d4b800-20241021) vaul: - specifier: ^1.1.0 - version: 1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) + specifier: ^1.1.1 + version: 1.1.1(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) zod: specifier: ^3.22.4 version: 3.23.8 @@ -1888,8 +1888,8 @@ packages: '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} - '@stripe/stripe-js@4.5.0': - resolution: {integrity: sha512-dMOzc58AOlsF20nYM/avzV8RFhO/vgYTY7ajLMH6mjlnZysnOHZxsECQvjEmL8Q/ukPwHkOnxSPW/QGCCnp7XA==} + '@stripe/stripe-js@4.9.0': + resolution: {integrity: sha512-tMPZQZZXGWyNX7hbgenq+1xEj2oigJ54XddbtSX36VedoKsPBq7dxwRXu4Xd5FdpT3JDyyDtnmvYkaSnH1yHTQ==} engines: {node: '>=12.16'} '@swc-jotai/react-refresh@0.2.0': @@ -4720,8 +4720,8 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - stripe@16.12.0: - resolution: {integrity: sha512-H7eFVLDxeTNNSn4JTRfL2//LzCbDrMSZ+2q1c7CanVWgK2qIW5TwS+0V7N9KcKZZNpYh/uCqK0PyZh/2UsaAtQ==} + stripe@17.2.1: + resolution: {integrity: sha512-Mwb0SitV/UjxTLSUiTlUQ0VDE/gfyQ7OHDGdvDdvKIH4CNNqobPKlzlWhoZHFFU0OA/YsZyBtPULK4JG86BAAg==} engines: {node: '>=12.*'} strnum@1.0.5: @@ -4996,11 +4996,11 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vaul@1.1.0: - resolution: {integrity: sha512-YhO/bikcauk48hzhMhvIvT+U87cuCbNbKk9fF4Ou5UkI9t2KkBMernmdP37pCzF15hrv55fcny1YhexK8h6GVQ==} + vaul@1.1.1: + resolution: {integrity: sha512-+ejzF6ffQKPcfgS7uOrGn017g39F8SO4yLPXbBhpC7a0H+oPqPna8f1BUfXaz8eU4+pxbQcmjxW+jWBSbxjaFg==} peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 vfile-location@5.0.3: resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} @@ -7152,7 +7152,7 @@ snapshots: '@socket.io/component-emitter@3.1.2': {} - '@stripe/stripe-js@4.5.0': {} + '@stripe/stripe-js@4.9.0': {} '@swc-jotai/react-refresh@0.2.0': {} @@ -10600,7 +10600,7 @@ snapshots: strip-json-comments@3.1.1: {} - stripe@16.12.0: + stripe@17.2.1: dependencies: '@types/node': 22.5.5 qs: 6.13.0 @@ -10902,7 +10902,7 @@ snapshots: vary@1.1.2: {} - vaul@1.1.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1): + vaul@1.1.1(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1): dependencies: '@radix-ui/react-dialog': 1.1.1(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1) react: 19.0.0-rc-69d4b800-20241021 From 19de6e8ce53189cb4c3e365253916a8f32cdbf9d Mon Sep 17 00:00:00 2001 From: Thibaud BRAULT Date: Tue, 29 Oct 2024 16:10:55 +0100 Subject: [PATCH 305/326] :card_file_box: make customerId mandatory --- .../migration.sql | 25 +++++++++++++++++++ prisma/schema.prisma | 2 +- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 prisma/migrations/20241029150921_faqmaker_dev29/migration.sql diff --git a/prisma/migrations/20241029150921_faqmaker_dev29/migration.sql b/prisma/migrations/20241029150921_faqmaker_dev29/migration.sql new file mode 100644 index 000000000..c9f545391 --- /dev/null +++ b/prisma/migrations/20241029150921_faqmaker_dev29/migration.sql @@ -0,0 +1,25 @@ +/* + Warnings: + + - You are about to drop the `Reaction` table. If the table is not empty, all the data it contains will be lost. + - You are about to drop the `ReactionUser` table. If the table is not empty, all the data it contains will be lost. + - Made the column `customerId` on table `Tenant` required. This step will fail if there are existing NULL values in that column. + +*/ +-- DropForeignKey +ALTER TABLE "Reaction" DROP CONSTRAINT "Reaction_nodeId_fkey"; + +-- DropForeignKey +ALTER TABLE "ReactionUser" DROP CONSTRAINT "ReactionUser_reactionId_fkey"; + +-- DropForeignKey +ALTER TABLE "ReactionUser" DROP CONSTRAINT "ReactionUser_userId_fkey"; + +-- AlterTable +ALTER TABLE "Tenant" ALTER COLUMN "customerId" SET NOT NULL; + +-- DropTable +DROP TABLE "Reaction"; + +-- DropTable +DROP TABLE "ReactionUser"; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index e59909e06..20a8c611c 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -14,7 +14,7 @@ model Tenant { plan Plan @default(free) company String logo String? @unique - customerId String? @unique + customerId String @unique isActive Boolean @default(false) subscriptionId String? users User[] From 231c94ead6cc3da7906825c5a8b5a39f68686dfa Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sat, 2 Nov 2024 11:24:08 +0100 Subject: [PATCH 306/326] :heavy_minus_sign: uninstall embla carousel --- package.json | 1 - pnpm-lock.yaml | 28 ---------------------------- 2 files changed, 29 deletions(-) diff --git a/package.json b/package.json index 4ed5fb57b..1150858c0 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,6 @@ "@uiw/react-md-editor": "^4.0.3", "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", - "embla-carousel-react": "^8.3.0", "formidable": "^3.5.1", "jotai": "^2.6.4", "lucide-react": "^0.438.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index aafb9211a..0439ab806 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -80,9 +80,6 @@ importers: clsx: specifier: ^2.1.0 version: 2.1.1 - embla-carousel-react: - specifier: ^8.3.0 - version: 8.3.0(react@19.0.0-rc-69d4b800-20241021) formidable: specifier: ^3.5.1 version: 3.5.1 @@ -2649,19 +2646,6 @@ packages: electron-to-chromium@1.5.27: resolution: {integrity: sha512-o37j1vZqCoEgBuWWXLHQgTN/KDKe7zwpiY5CPeq2RvUqOyJw9xnrULzZAEVQ5p4h+zjMk7hgtOoPdnLxr7m/jw==} - embla-carousel-react@8.3.0: - resolution: {integrity: sha512-P1FlinFDcIvggcErRjNuVqnUR8anyo8vLMIH8Rthgofw7Nj8qTguCa2QjFAbzxAUTQTPNNjNL7yt0BGGinVdFw==} - peerDependencies: - react: ^16.8.0 || ^17.0.1 || ^18.0.0 - - embla-carousel-reactive-utils@8.3.0: - resolution: {integrity: sha512-EYdhhJ302SC4Lmkx8GRsp0sjUhEN4WyFXPOk0kGu9OXZSRMmcBlRgTvHcq8eKJE1bXWBsOi1T83B+BSSVZSmwQ==} - peerDependencies: - embla-carousel: 8.3.0 - - embla-carousel@8.3.0: - resolution: {integrity: sha512-Ve8dhI4w28qBqR8J+aMtv7rLK89r1ZA5HocwFz6uMB/i5EiC7bGI7y+AM80yAVUJw3qqaZYK7clmZMUR8kM3UA==} - emoji-regex@10.4.0: resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} @@ -7986,18 +7970,6 @@ snapshots: electron-to-chromium@1.5.27: {} - embla-carousel-react@8.3.0(react@19.0.0-rc-69d4b800-20241021): - dependencies: - embla-carousel: 8.3.0 - embla-carousel-reactive-utils: 8.3.0(embla-carousel@8.3.0) - react: 19.0.0-rc-69d4b800-20241021 - - embla-carousel-reactive-utils@8.3.0(embla-carousel@8.3.0): - dependencies: - embla-carousel: 8.3.0 - - embla-carousel@8.3.0: {} - emoji-regex@10.4.0: {} emoji-regex@8.0.0: {} From cee44d73dbcfe3cd3a6d24848dda79bb1f626bed Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sat, 2 Nov 2024 11:24:38 +0100 Subject: [PATCH 307/326] :fire: remove carousel component --- src/app/register/plan/form.tsx | 187 ++++++++----------- src/components/carousel/Carousel.tsx | 263 --------------------------- src/components/carousel/index.ts | 1 - src/components/index.ts | 1 - 4 files changed, 73 insertions(+), 379 deletions(-) delete mode 100644 src/components/carousel/Carousel.tsx delete mode 100644 src/components/carousel/index.ts diff --git a/src/app/register/plan/form.tsx b/src/app/register/plan/form.tsx index 81f30d7c8..09cdb422a 100644 --- a/src/app/register/plan/form.tsx +++ b/src/app/register/plan/form.tsx @@ -1,6 +1,6 @@ 'use client'; -import { useEffect, useMemo, useState } from 'react'; +import { useEffect, useMemo } from 'react'; import { useAtom } from 'jotai'; import { RESET } from 'jotai/utils'; @@ -8,19 +8,7 @@ import { Check, Minus, MoveRight, Wallet } from 'lucide-react'; import { useParams, useRouter } from 'next/navigation'; import { useForm } from 'react-hook-form'; -import { - Button, - type CarouselApi, - errorToast, - successToast, -} from '@/components'; -import { - Carousel, - CarouselContent, - CarouselItem, - CarouselNext, - CarouselPrevious, -} from '@/components'; +import { Button, errorToast, successToast } from '@/components'; import { registerAtom } from '@/store'; import { Routes, getStripe } from '@/utils'; @@ -28,9 +16,6 @@ import type { IPlan } from '@/types'; export default function Form() { const [state, setState] = useAtom(registerAtom); - const [api, setApi] = useState(); - const [current, setCurrent] = useState(0); - const [count, setCount] = useState(0); const { handleSubmit } = useForm(); const router = useRouter(); @@ -114,104 +99,78 @@ export default function Form() { // eslint-disable-next-line react-hooks/exhaustive-deps }, [status]); - useEffect(() => { - if (!api) { - return; - } - setCount(api.scrollSnapList().length); - setCurrent(api.selectedScrollSnap() + 1); - api.on('select', () => { - setCurrent(api.selectedScrollSnap() + 1); - }); - }, [api]); - return ( - <> - - - {plans.map((plan) => ( - - - saveData(plan.value, plan.lookup_key), +
    + {plans.map((plan) => ( +
    + saveData(plan.value, plan.lookup_key))} + key={plan.value} + > +
    +

    + {plan.label} +

    +

    + ${plan.price}/mo +

    +
    +
    +

    + {plan.message} +

    +
    +
      + {plan.benefits.map((benefit) => ( +
    • + +

      {benefit}

      +
    • + ))} + {plan.drawbacks?.map((drawback) => ( +
    • + +

      {drawback}

      +
    • + ))} +
    +
    + {plan.value === 'free' ? ( + + ) : ( + )} - key={plan.value} - > -
    -

    - {plan.label} -

    -

    - ${plan.price}/mo -

    -
    -
    -

    - {plan.message} -

    -
    -
      - {plan.benefits.map((benefit) => ( -
    • - -

      {benefit}

      -
    • - ))} - {plan.drawbacks?.map((drawback) => ( -
    • - -

      {drawback}

      -
    • - ))} -
    -
    - {plan.value === 'free' ? ( - - ) : ( - - )} -
    -
    - - - ))} - - - - - - Plan {current} of {count} - - +
    +
    + +
    + ))} +
    ); } diff --git a/src/components/carousel/Carousel.tsx b/src/components/carousel/Carousel.tsx deleted file mode 100644 index d134bd33d..000000000 --- a/src/components/carousel/Carousel.tsx +++ /dev/null @@ -1,263 +0,0 @@ -'use client'; - -import * as React from 'react'; - -import useEmblaCarousel, { - type UseEmblaCarouselType, -} from 'embla-carousel-react'; -import { ArrowLeft, ArrowRight } from 'lucide-react'; - -import { Button } from '@/components'; -import { cn } from '@/utils'; - -type CarouselApi = UseEmblaCarouselType[1]; -type UseCarouselParameters = Parameters; -type CarouselOptions = UseCarouselParameters[0]; -type CarouselPlugin = UseCarouselParameters[1]; - -type CarouselProps = { - opts?: CarouselOptions; - plugins?: CarouselPlugin; - orientation?: 'horizontal' | 'vertical'; - setApi?: (api: CarouselApi) => void; -}; - -type CarouselContextProps = { - carouselRef: ReturnType[0]; - api: ReturnType[1]; - scrollPrev: () => void; - scrollNext: () => void; - canScrollPrev: boolean; - canScrollNext: boolean; -} & CarouselProps; - -const CarouselContext = React.createContext(null); - -function useCarousel() { - const context = React.useContext(CarouselContext); - - if (!context) { - throw new Error('useCarousel must be used within a '); - } - - return context; -} - -const Carousel = React.forwardRef< - HTMLDivElement, - React.HTMLAttributes & CarouselProps ->( - ( - { - orientation = 'horizontal', - opts, - setApi, - plugins, - className, - children, - ...props - }, - ref, - ) => { - const [carouselRef, api] = useEmblaCarousel( - { - ...opts, - axis: orientation === 'horizontal' ? 'x' : 'y', - }, - plugins, - ); - const [canScrollPrev, setCanScrollPrev] = React.useState(false); - const [canScrollNext, setCanScrollNext] = React.useState(false); - - const onSelect = React.useCallback((api: CarouselApi) => { - if (!api) { - return; - } - - setCanScrollPrev(api.canScrollPrev()); - setCanScrollNext(api.canScrollNext()); - }, []); - - const scrollPrev = React.useCallback(() => { - api?.scrollPrev(); - }, [api]); - - const scrollNext = React.useCallback(() => { - api?.scrollNext(); - }, [api]); - - const handleKeyDown = React.useCallback( - (event: React.KeyboardEvent) => { - if (event.key === 'ArrowLeft') { - event.preventDefault(); - scrollPrev(); - } else if (event.key === 'ArrowRight') { - event.preventDefault(); - scrollNext(); - } - }, - [scrollPrev, scrollNext], - ); - - React.useEffect(() => { - if (!api || !setApi) { - return; - } - - setApi(api); - }, [api, setApi]); - - React.useEffect(() => { - if (!api) { - return; - } - - onSelect(api); - api.on('reInit', onSelect); - api.on('select', onSelect); - - return () => { - api?.off('select', onSelect); - }; - }, [api, onSelect]); - - return ( - -
    - {children} -
    -
    - ); - }, -); -Carousel.displayName = 'Carousel'; - -const CarouselContent = React.forwardRef< - HTMLDivElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => { - const { carouselRef, orientation } = useCarousel(); - - return ( -
    -
    -
    - ); -}); -CarouselContent.displayName = 'CarouselContent'; - -const CarouselItem = React.forwardRef< - HTMLDivElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => { - const { orientation } = useCarousel(); - - return ( -
    - ); -}); -CarouselItem.displayName = 'CarouselItem'; - -const CarouselPrevious = React.forwardRef< - HTMLButtonElement, - React.ComponentProps ->(({ className, variant = 'outline', size = 'icon', ...props }, ref) => { - const { orientation, scrollPrev, canScrollPrev } = useCarousel(); - - return ( - - ); -}); -CarouselPrevious.displayName = 'CarouselPrevious'; - -const CarouselNext = React.forwardRef< - HTMLButtonElement, - React.ComponentProps ->(({ className, variant = 'outline', size = 'icon', ...props }, ref) => { - const { orientation, scrollNext, canScrollNext } = useCarousel(); - - return ( - - ); -}); -CarouselNext.displayName = 'CarouselNext'; - -export { - type CarouselApi, - Carousel, - CarouselContent, - CarouselItem, - CarouselPrevious, - CarouselNext, -}; diff --git a/src/components/carousel/index.ts b/src/components/carousel/index.ts deleted file mode 100644 index c0ab19964..000000000 --- a/src/components/carousel/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Carousel'; diff --git a/src/components/index.ts b/src/components/index.ts index 0b18a117b..251b14dee 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -2,7 +2,6 @@ export * from './alert'; export * from './avatar'; export * from './badge'; export * from './button'; -export * from './carousel'; export * from './dialog'; export * from './drawer'; export * from './dropdown'; From b5091fd4672bceb0e476434e58bfd9e6c644d46b Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sat, 2 Nov 2024 11:29:06 +0100 Subject: [PATCH 308/326] :recycle: create structure component and refacto pages --- src/app/register/confirm/page.tsx | 42 +++----------------------- src/app/register/page.tsx | 42 +++----------------------- src/app/register/plan/page.tsx | 43 +------------------------- src/app/register/structure.tsx | 50 +++++++++++++++++++++++++++++++ src/app/register/user/page.tsx | 42 +++----------------------- 5 files changed, 63 insertions(+), 156 deletions(-) create mode 100644 src/app/register/structure.tsx diff --git a/src/app/register/confirm/page.tsx b/src/app/register/confirm/page.tsx index a81a030c0..a2131c3ec 100644 --- a/src/app/register/confirm/page.tsx +++ b/src/app/register/confirm/page.tsx @@ -1,46 +1,12 @@ 'use client'; -import Link from 'next/link'; -import { usePathname } from 'next/navigation'; - -import { RegisterRoutes } from '@/utils'; - import Form from './form'; +import Structure from '../structure'; export default function Page() { - const pathname = usePathname(); - return ( - <> -
    -

    - Confirm -

    -

    Check your information

    -
    -
    -
    -
    - {RegisterRoutes.map((link) => ( - - - {link.number} - - {link.title} - - ))} -
    -
    -
    -
    -
    - + + + ); } diff --git a/src/app/register/page.tsx b/src/app/register/page.tsx index 6ecfe6f6d..723ef254b 100644 --- a/src/app/register/page.tsx +++ b/src/app/register/page.tsx @@ -1,46 +1,12 @@ 'use client'; -import Link from 'next/link'; -import { usePathname } from 'next/navigation'; - -import { RegisterRoutes } from '@/utils'; - import Form from './form'; +import Structure from './structure'; export default function Page() { - const pathname = usePathname(); - return ( - <> -
    -

    - Company -

    -

    Your company details

    -
    -
    -
    -
    - {RegisterRoutes.map((link) => ( - - - {link.number} - - {link.title} - - ))} -
    -
    - -
    -
    - + + + ); } diff --git a/src/app/register/plan/page.tsx b/src/app/register/plan/page.tsx index 132676fce..7987eef1c 100644 --- a/src/app/register/plan/page.tsx +++ b/src/app/register/plan/page.tsx @@ -1,48 +1,7 @@ 'use client'; -import Link from 'next/link'; -import { usePathname } from 'next/navigation'; - -import { RegisterRoutes } from '@/utils'; - import Form from './form'; export default function Page() { - const pathname = usePathname(); - - return ( - <> -
    -

    - Plan -

    -

    - Select the right plan for your needs -

    -
    -
    -
    -
    - {RegisterRoutes.map((link) => ( - - - {link.number} - - {link.title} - - ))} -
    -
    - -
    -
    - - ); + return ; } diff --git a/src/app/register/structure.tsx b/src/app/register/structure.tsx new file mode 100644 index 000000000..1e473ca33 --- /dev/null +++ b/src/app/register/structure.tsx @@ -0,0 +1,50 @@ +'use client'; + +import { ReactNode } from 'react'; + +import { usePathname } from 'next/navigation'; + +import { RegisterRoutes } from '@/utils'; + +type Props = { + title: string; + subtitle: string; + children: ReactNode; +}; + +export default function Structure({ title, subtitle, children }: Props) { + const pathname = usePathname(); + + return ( + <> +
    +

    + {title} +

    +

    {subtitle}

    +
    +
    +
    +
    + {RegisterRoutes.map((link) => ( +
    + + {link.number} + + {link.title} +
    + ))} +
    +
    + {children} +
    +
    + + ); +} diff --git a/src/app/register/user/page.tsx b/src/app/register/user/page.tsx index 7429ae4db..79477425d 100644 --- a/src/app/register/user/page.tsx +++ b/src/app/register/user/page.tsx @@ -1,46 +1,12 @@ 'use client'; -import Link from 'next/link'; -import { usePathname } from 'next/navigation'; - -import { RegisterRoutes } from '@/utils'; - import Form from './form'; +import Structure from '../structure'; export default function Page() { - const pathname = usePathname(); - return ( - <> -
    -

    - User -

    -

    Your connection mail

    -
    -
    -
    -
    - {RegisterRoutes.map((link) => ( - - - {link.number} - - {link.title} - - ))} -
    -
    - -
    -
    - + + + ); } From c7ad389936c76a61950cb2a3b9fddbb0238a7c1c Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sat, 2 Nov 2024 11:29:40 +0100 Subject: [PATCH 309/326] :lipstick: reduce padding size --- src/app/register/layout.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/register/layout.tsx b/src/app/register/layout.tsx index 7559fd05f..fa401d53d 100644 --- a/src/app/register/layout.tsx +++ b/src/app/register/layout.tsx @@ -12,7 +12,7 @@ export default function Layout({ children }: Props) {
    -
    +
    {children}

    From e3364bcc0f8c0740f6e7dc0a3cb25ff30a0d0b4f Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sat, 2 Nov 2024 11:30:38 +0100 Subject: [PATCH 310/326] :card_file_box: make customerId field mandatory --- prisma/schema.prisma | 2 +- src/actions/create-tenant/action.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 20a8c611c..3e2ad174b 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -14,7 +14,7 @@ model Tenant { plan Plan @default(free) company String logo String? @unique - customerId String @unique + customerId String @unique isActive Boolean @default(false) subscriptionId String? users User[] diff --git a/src/actions/create-tenant/action.ts b/src/actions/create-tenant/action.ts index 6349c83cd..3a797ce8f 100644 --- a/src/actions/create-tenant/action.ts +++ b/src/actions/create-tenant/action.ts @@ -38,6 +38,7 @@ export const createTenant = actionClient data: { company, email: companyEmail, + customerId: '', }, }); if (!tenant) { From 5d59371aeb42bf839fd868413f76aeb542fba873 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sat, 2 Nov 2024 11:31:10 +0100 Subject: [PATCH 311/326] :arrow_up: change version of stripe api --- src/utils/constants.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/constants.ts b/src/utils/constants.ts index 52a3c9971..172a0f3a9 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -9,4 +9,4 @@ export const ACCEPTED_IMAGE_TYPES = [ ]; export const ROLE = ['user', 'admin', 'tenant'] as const; export const PLAN = ['free', 'startup', 'enterprise'] as const; -export const STRIPE_VERSION = '2024-06-20'; +export const STRIPE_VERSION = '2024-09-30.acacia'; From 88faba2817fb27cbad0c2503bc669bc3b70b8aa0 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sat, 2 Nov 2024 11:32:47 +0100 Subject: [PATCH 312/326] :fire: remove plan from register routing --- src/utils/routing.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/utils/routing.ts b/src/utils/routing.ts index c29a5e0c2..5e624553f 100644 --- a/src/utils/routing.ts +++ b/src/utils/routing.ts @@ -35,14 +35,9 @@ export const RegisterRoutes = [ number: 2, route: Routes.SITE.REGISTER.USER, }, - { - title: 'Plan', - number: 3, - route: Routes.SITE.REGISTER.PLAN, - }, { title: 'Confirm', - number: 4, + number: 3, route: Routes.SITE.REGISTER.CONFIRM, }, ]; From b562c3ddc22d4f0337dde2f49e1d7a5d5a2dc620 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Fri, 8 Nov 2024 13:10:54 +0100 Subject: [PATCH 313/326] :art: remove utils barrel file --- src/actions/create-answer/action.ts | 2 +- src/actions/create-favorite/action.ts | 2 +- src/actions/create-node/action.ts | 3 ++- src/actions/create-pin/action.ts | 2 +- src/actions/create-tag/action.ts | 2 +- src/actions/create-tag/schema.ts | 2 +- src/actions/create-tenant/action.ts | 2 +- src/actions/create-user/action.ts | 2 +- src/actions/create-user/schema.ts | 3 ++- src/actions/delete-favorite/action.ts | 2 +- src/actions/delete-pin/action.ts | 2 +- src/actions/delete-tag/action.ts | 2 +- src/actions/delete-tenant/action.ts | 3 ++- src/actions/delete-user/action.ts | 2 +- src/actions/get-me/index.ts | 2 +- src/actions/get-node/index.ts | 3 ++- src/actions/get-nodes/index.ts | 3 ++- src/actions/get-search-nodes/index.ts | 2 +- src/actions/get-search-tags/index.ts | 2 +- src/actions/get-tenant/index.ts | 2 +- src/actions/sign-in/index.ts | 2 +- src/actions/sign-out/index.ts | 2 +- src/actions/update-answer/action.ts | 2 +- src/actions/update-logo/action.ts | 2 +- src/actions/update-node/action.ts | 2 +- src/actions/update-tag/action.ts | 2 +- src/actions/update-tenant/action.ts | 2 +- src/actions/update-tenant/schema.ts | 2 +- src/actions/update-user/action.ts | 2 +- src/actions/update-user/schema.ts | 3 ++- src/app/api/stripe/billing/route.ts | 2 +- src/app/api/stripe/checkout/[id].ts | 2 +- src/app/api/stripe/checkout/route.ts | 3 ++- src/app/api/stripe/webhooks/route.ts | 2 +- src/app/error.tsx | 2 +- src/app/home.tsx | 2 +- src/app/login/page.tsx | 2 +- src/app/page.tsx | 2 +- src/app/profile/page.tsx | 2 +- src/app/question/[id]/page.tsx | 2 +- src/app/question/[id]/question.tsx | 3 ++- src/app/question/answer/answer.tsx | 2 +- src/app/question/answer/page.tsx | 2 +- src/app/question/edit/edit.tsx | 4 +++- src/app/question/edit/page.tsx | 2 +- src/app/question/new/new.tsx | 2 +- src/app/question/new/page.tsx | 2 +- src/app/register/confirm/form.tsx | 2 +- src/app/register/form.tsx | 2 +- src/app/register/plan/form.tsx | 3 ++- src/app/register/structure.tsx | 2 +- src/app/register/user/form.tsx | 2 +- src/app/settings/page.tsx | 2 +- src/auth.config.ts | 2 +- src/components/alert/Alert.tsx | 2 +- src/components/avatar/Avatar.tsx | 2 +- src/components/badge/Badge.tsx | 2 +- src/components/button/Button.tsx | 2 +- src/components/dialog/Dialog.tsx | 2 +- src/components/drawer/Drawer.tsx | 2 +- src/components/dropdown/Dropdown.tsx | 2 +- src/components/input/Input.tsx | 2 +- src/components/label/Label.tsx | 2 +- src/components/loader/Loader.tsx | 2 +- src/components/pagination/Pagination.tsx | 2 +- src/components/popover/Popover.tsx | 2 +- src/components/select/Select.tsx | 2 +- src/components/tabs/Tabs.tsx | 2 +- src/components/tooltip/Tooltip.tsx | 2 +- src/lib/validations.ts | 2 +- src/modules/header/Header.tsx | 2 +- src/modules/home/Question.tsx | 3 ++- src/modules/profile/Answers.tsx | 3 ++- src/modules/profile/Favorites.tsx | 3 ++- src/modules/profile/Questions.tsx | 3 ++- src/modules/profile/Update.tsx | 2 +- src/modules/settings/general/Company.tsx | 2 +- src/modules/settings/general/Files.tsx | 2 +- src/modules/settings/payment/Billing.tsx | 2 +- src/modules/settings/users/Create.tsx | 2 +- src/utils/index.ts | 8 -------- 81 files changed, 95 insertions(+), 88 deletions(-) delete mode 100644 src/utils/index.ts diff --git a/src/actions/create-answer/action.ts b/src/actions/create-answer/action.ts index 276f8d610..2f5e794d5 100644 --- a/src/actions/create-answer/action.ts +++ b/src/actions/create-answer/action.ts @@ -4,7 +4,7 @@ import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; import { authActionClient } from '@/lib/safe-actions'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; import prisma from 'lib/prisma'; import { createAnswerSchema } from './schema'; diff --git a/src/actions/create-favorite/action.ts b/src/actions/create-favorite/action.ts index c7f9eefdd..ab96ccec7 100644 --- a/src/actions/create-favorite/action.ts +++ b/src/actions/create-favorite/action.ts @@ -3,7 +3,7 @@ import { revalidatePath } from 'next/cache'; import { authActionClient } from '@/lib/safe-actions'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; import prisma from 'lib/prisma'; import { createFavoriteSchema } from './schema'; diff --git a/src/actions/create-node/action.ts b/src/actions/create-node/action.ts index a6d27abec..e6a954cbd 100644 --- a/src/actions/create-node/action.ts +++ b/src/actions/create-node/action.ts @@ -6,7 +6,8 @@ import { redirect } from 'next/navigation'; import slugify from 'slugify'; import { ActionError, authActionClient } from '@/lib/safe-actions'; -import { Routes, dateOptions, timeOptions } from '@/utils'; +import { dateOptions, timeOptions } from '@/utils/date'; +import { Routes } from '@/utils/routing'; import prisma from 'lib/prisma'; import { createNodeSchema, slackIntegrationSchema } from './schema'; diff --git a/src/actions/create-pin/action.ts b/src/actions/create-pin/action.ts index 612d3ee91..86d715ac4 100644 --- a/src/actions/create-pin/action.ts +++ b/src/actions/create-pin/action.ts @@ -3,7 +3,7 @@ import { revalidatePath } from 'next/cache'; import { ActionError, authActionClient } from '@/lib/safe-actions'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; import prisma from 'lib/prisma'; import { createPinSchema } from './schema'; diff --git a/src/actions/create-tag/action.ts b/src/actions/create-tag/action.ts index bda045ed9..6493e23af 100644 --- a/src/actions/create-tag/action.ts +++ b/src/actions/create-tag/action.ts @@ -3,7 +3,7 @@ import { revalidatePath } from 'next/cache'; import { ActionError, authActionClient } from '@/lib/safe-actions'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; import prisma from 'lib/prisma'; import { createTagSchema } from './schema'; diff --git a/src/actions/create-tag/schema.ts b/src/actions/create-tag/schema.ts index 896c5c7ed..93eb2d17d 100644 --- a/src/actions/create-tag/schema.ts +++ b/src/actions/create-tag/schema.ts @@ -1,6 +1,6 @@ import { z } from 'zod'; -import { PLAN } from '@/utils'; +import { PLAN } from '@/utils/constants'; export const createTagSchema = z.object({ label: z diff --git a/src/actions/create-tenant/action.ts b/src/actions/create-tenant/action.ts index 3a797ce8f..c1b6155b1 100644 --- a/src/actions/create-tenant/action.ts +++ b/src/actions/create-tenant/action.ts @@ -4,7 +4,7 @@ import Stripe from 'stripe'; import { ActionError, actionClient } from '@/lib/safe-actions'; -import { STRIPE_VERSION } from '@/utils'; +import { STRIPE_VERSION } from '@/utils/constants'; import prisma from 'lib/prisma'; import { createTenantSchema } from './schema'; diff --git a/src/actions/create-user/action.ts b/src/actions/create-user/action.ts index 9d79ab9dc..65c5daab6 100644 --- a/src/actions/create-user/action.ts +++ b/src/actions/create-user/action.ts @@ -5,7 +5,7 @@ import { Resend } from 'resend'; import { NewUserEmailTemplate } from '@/components'; import { ActionError, authActionClient } from '@/lib/safe-actions'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; import prisma from 'lib/prisma'; import { createUserSchema } from './schema'; diff --git a/src/actions/create-user/schema.ts b/src/actions/create-user/schema.ts index 419d19f7d..3ff7825a4 100644 --- a/src/actions/create-user/schema.ts +++ b/src/actions/create-user/schema.ts @@ -1,6 +1,7 @@ import { z } from 'zod'; -import { Limits, PLAN, ROLE } from '@/utils'; +import { PLAN, ROLE } from '@/utils/constants'; +import { Limits } from '@/utils/limits'; export const createUserSchema = z.object({ email: z diff --git a/src/actions/delete-favorite/action.ts b/src/actions/delete-favorite/action.ts index 2f0d49bff..92b04931e 100644 --- a/src/actions/delete-favorite/action.ts +++ b/src/actions/delete-favorite/action.ts @@ -3,7 +3,7 @@ import { revalidatePath } from 'next/cache'; import { authActionClient } from '@/lib/safe-actions'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; import prisma from 'lib/prisma'; import { deleteFavoriteSchema } from './schema'; diff --git a/src/actions/delete-pin/action.ts b/src/actions/delete-pin/action.ts index d8aaeb5fd..18d555a52 100644 --- a/src/actions/delete-pin/action.ts +++ b/src/actions/delete-pin/action.ts @@ -3,7 +3,7 @@ import { revalidatePath } from 'next/cache'; import { authActionClient } from '@/lib/safe-actions'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; import prisma from 'lib/prisma'; import { deletePinSchema } from './schema'; diff --git a/src/actions/delete-tag/action.ts b/src/actions/delete-tag/action.ts index a3456e92b..a48cfa148 100644 --- a/src/actions/delete-tag/action.ts +++ b/src/actions/delete-tag/action.ts @@ -3,7 +3,7 @@ import { revalidatePath } from 'next/cache'; import { authActionClient } from '@/lib/safe-actions'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; import prisma from 'lib/prisma'; import { deleteTagSchema } from './schema'; diff --git a/src/actions/delete-tenant/action.ts b/src/actions/delete-tenant/action.ts index ddc64de1f..3e609f306 100644 --- a/src/actions/delete-tenant/action.ts +++ b/src/actions/delete-tenant/action.ts @@ -9,7 +9,8 @@ import Stripe from 'stripe'; import { s3Client } from '@/lib'; import { authActionClient } from '@/lib/safe-actions'; -import { Routes, STRIPE_VERSION } from '@/utils'; +import { STRIPE_VERSION } from '@/utils/constants'; +import { Routes } from '@/utils/routing'; import prisma from 'lib/prisma'; import { deleteTenantSchema } from './schema'; diff --git a/src/actions/delete-user/action.ts b/src/actions/delete-user/action.ts index bbb36065d..56436b5be 100644 --- a/src/actions/delete-user/action.ts +++ b/src/actions/delete-user/action.ts @@ -3,7 +3,7 @@ import { revalidatePath } from 'next/cache'; import { authActionClient } from '@/lib/safe-actions'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; import prisma from 'lib/prisma'; import { deleteUserSchema } from './schema'; diff --git a/src/actions/get-me/index.ts b/src/actions/get-me/index.ts index 97705a140..2462bdfcd 100644 --- a/src/actions/get-me/index.ts +++ b/src/actions/get-me/index.ts @@ -5,7 +5,7 @@ import { cache } from 'react'; import { redirect } from 'next/navigation'; import { auth } from '@/auth'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; import prisma from 'lib/prisma'; import type { Me } from '@/types'; diff --git a/src/actions/get-node/index.ts b/src/actions/get-node/index.ts index 88f4f733f..557730f27 100644 --- a/src/actions/get-node/index.ts +++ b/src/actions/get-node/index.ts @@ -2,7 +2,8 @@ import { cache } from 'react'; import { redirect } from 'next/navigation'; -import { Routes, nodeModel } from '@/utils'; +import { nodeModel } from '@/utils/models'; +import { Routes } from '@/utils/routing'; import prisma from 'lib/prisma'; import type { ExtendedNode } from '@/types'; diff --git a/src/actions/get-nodes/index.ts b/src/actions/get-nodes/index.ts index 5f7238706..70aa6d4d2 100644 --- a/src/actions/get-nodes/index.ts +++ b/src/actions/get-nodes/index.ts @@ -1,6 +1,7 @@ import { cache } from 'react'; -import { OFFSET, nodeModel } from '@/utils'; +import { OFFSET } from '@/utils/constants'; +import { nodeModel } from '@/utils/models'; import prisma from 'lib/prisma'; import { getNodesSchema } from './schema'; diff --git a/src/actions/get-search-nodes/index.ts b/src/actions/get-search-nodes/index.ts index 53f28ed7e..eeaf126c9 100644 --- a/src/actions/get-search-nodes/index.ts +++ b/src/actions/get-search-nodes/index.ts @@ -1,6 +1,6 @@ import { cache } from 'react'; -import { nodeModel } from '@/utils'; +import { nodeModel } from '@/utils/models'; import prisma from 'lib/prisma'; import { getSearchSchema } from './schema'; diff --git a/src/actions/get-search-tags/index.ts b/src/actions/get-search-tags/index.ts index 41b63f9bf..e7f0a7058 100644 --- a/src/actions/get-search-tags/index.ts +++ b/src/actions/get-search-tags/index.ts @@ -1,6 +1,6 @@ import { cache } from 'react'; -import { nodeModel } from '@/utils'; +import { nodeModel } from '@/utils/models'; import prisma from 'lib/prisma'; import { getTagSearchSchema } from './schema'; diff --git a/src/actions/get-tenant/index.ts b/src/actions/get-tenant/index.ts index 5d05c73b6..6cba2157d 100644 --- a/src/actions/get-tenant/index.ts +++ b/src/actions/get-tenant/index.ts @@ -2,7 +2,7 @@ import { cache } from 'react'; import { redirect } from 'next/navigation'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; import prisma from 'lib/prisma'; import type { Tenant } from '@prisma/client'; diff --git a/src/actions/sign-in/index.ts b/src/actions/sign-in/index.ts index ef35a8bf3..5a885f518 100644 --- a/src/actions/sign-in/index.ts +++ b/src/actions/sign-in/index.ts @@ -1,7 +1,7 @@ 'use server'; import { signIn } from '@/auth'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; export const signInAction = async () => { await signIn('google', { redirectTo: Routes.SITE.HOME }); diff --git a/src/actions/sign-out/index.ts b/src/actions/sign-out/index.ts index 450b36595..f0e16504a 100644 --- a/src/actions/sign-out/index.ts +++ b/src/actions/sign-out/index.ts @@ -1,7 +1,7 @@ 'use server'; import { signOut } from '@/auth'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; export const signOutAction = async () => { await signOut({ redirectTo: Routes.SITE.HOME }); diff --git a/src/actions/update-answer/action.ts b/src/actions/update-answer/action.ts index 3defce2fd..0f0253d01 100644 --- a/src/actions/update-answer/action.ts +++ b/src/actions/update-answer/action.ts @@ -4,7 +4,7 @@ import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; import { authActionClient } from '@/lib/safe-actions'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; import prisma from 'lib/prisma'; import { updateAnswerSchema } from './schema'; diff --git a/src/actions/update-logo/action.ts b/src/actions/update-logo/action.ts index 91bbabe34..99aa41bc8 100644 --- a/src/actions/update-logo/action.ts +++ b/src/actions/update-logo/action.ts @@ -9,7 +9,7 @@ import { redirect } from 'next/navigation'; import { s3Client } from '@/lib'; import { authActionClient } from '@/lib/safe-actions'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; import prisma from 'lib/prisma'; import { updateLogoSchema } from './schema'; diff --git a/src/actions/update-node/action.ts b/src/actions/update-node/action.ts index 7c4b865ba..580bc45ed 100644 --- a/src/actions/update-node/action.ts +++ b/src/actions/update-node/action.ts @@ -5,7 +5,7 @@ import { redirect } from 'next/navigation'; import slugify from 'slugify'; import { ActionError, authActionClient } from '@/lib/safe-actions'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; import prisma from 'lib/prisma'; import { updateNodeSchema } from './schema'; diff --git a/src/actions/update-tag/action.ts b/src/actions/update-tag/action.ts index 351fa9be1..6eb8bac7e 100644 --- a/src/actions/update-tag/action.ts +++ b/src/actions/update-tag/action.ts @@ -3,7 +3,7 @@ import { revalidatePath } from 'next/cache'; import { authActionClient } from '@/lib/safe-actions'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; import prisma from 'lib/prisma'; import { updateTagSchema } from './schema'; diff --git a/src/actions/update-tenant/action.ts b/src/actions/update-tenant/action.ts index b3100e9ab..3a9a1457c 100644 --- a/src/actions/update-tenant/action.ts +++ b/src/actions/update-tenant/action.ts @@ -4,7 +4,7 @@ import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; import { authActionClient } from '@/lib/safe-actions'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; import prisma from 'lib/prisma'; import { updateTenantSchema } from './schema'; diff --git a/src/actions/update-tenant/schema.ts b/src/actions/update-tenant/schema.ts index e899dd14c..d7881f483 100644 --- a/src/actions/update-tenant/schema.ts +++ b/src/actions/update-tenant/schema.ts @@ -1,6 +1,6 @@ import { z } from 'zod'; -import { Limits } from '@/utils'; +import { Limits } from '@/utils/limits'; export const updateTenantSchema = z.object({ company: z diff --git a/src/actions/update-user/action.ts b/src/actions/update-user/action.ts index 8ba1cecc0..bda5ab042 100644 --- a/src/actions/update-user/action.ts +++ b/src/actions/update-user/action.ts @@ -3,7 +3,7 @@ import { revalidatePath } from 'next/cache'; import { authActionClient } from '@/lib/safe-actions'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; import prisma from 'lib/prisma'; import { updateUserSchema } from './schema'; diff --git a/src/actions/update-user/schema.ts b/src/actions/update-user/schema.ts index d01c4edc7..59fb63b9b 100644 --- a/src/actions/update-user/schema.ts +++ b/src/actions/update-user/schema.ts @@ -1,6 +1,7 @@ import { z } from 'zod'; -import { Limits, ROLE } from '@/utils'; +import { ROLE } from '@/utils/constants'; +import { Limits } from '@/utils/limits'; export const updateUserSchema = z.object({ tenantId: z.string().cuid2(), diff --git a/src/app/api/stripe/billing/route.ts b/src/app/api/stripe/billing/route.ts index e4ae96ab4..98ac46b08 100644 --- a/src/app/api/stripe/billing/route.ts +++ b/src/app/api/stripe/billing/route.ts @@ -1,7 +1,7 @@ import { NextResponse } from 'next/server'; import Stripe from 'stripe'; -import { STRIPE_VERSION } from '@/utils'; +import { STRIPE_VERSION } from '@/utils/constants'; import prisma from 'lib/prisma'; import type { NextRequest } from 'next/server'; diff --git a/src/app/api/stripe/checkout/[id].ts b/src/app/api/stripe/checkout/[id].ts index c0f68c062..437c46655 100644 --- a/src/app/api/stripe/checkout/[id].ts +++ b/src/app/api/stripe/checkout/[id].ts @@ -1,6 +1,6 @@ import Stripe from 'stripe'; -import { STRIPE_VERSION } from '@/utils'; +import { STRIPE_VERSION } from '@/utils/constants'; import type { NextApiRequest, NextApiResponse } from 'next'; diff --git a/src/app/api/stripe/checkout/route.ts b/src/app/api/stripe/checkout/route.ts index cbf06f298..aeb24580d 100644 --- a/src/app/api/stripe/checkout/route.ts +++ b/src/app/api/stripe/checkout/route.ts @@ -2,7 +2,8 @@ import { NextResponse } from 'next/server'; import Stripe from 'stripe'; import { createCheckoutSchema } from '@/lib/validations'; -import { Routes, STRIPE_VERSION } from '@/utils'; +import { STRIPE_VERSION } from '@/utils/constants'; +import { Routes } from '@/utils/routing'; import type { NextRequest } from 'next/server'; diff --git a/src/app/api/stripe/webhooks/route.ts b/src/app/api/stripe/webhooks/route.ts index 89f16249a..2a4a4feeb 100644 --- a/src/app/api/stripe/webhooks/route.ts +++ b/src/app/api/stripe/webhooks/route.ts @@ -4,7 +4,7 @@ import { headers } from 'next/headers'; import { NextRequest, NextResponse } from 'next/server'; import { Stripe } from 'stripe'; -import { STRIPE_VERSION } from '@/utils'; +import { STRIPE_VERSION } from '@/utils/constants'; import prisma from 'lib/prisma'; import type { IPlan } from '@/types'; diff --git a/src/app/error.tsx b/src/app/error.tsx index 2aeab5d25..aee9b6e07 100644 --- a/src/app/error.tsx +++ b/src/app/error.tsx @@ -5,7 +5,7 @@ import { useEffect } from 'react'; import Link from 'next/link'; import { Button } from '@/components'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; export default function Error({ error, diff --git a/src/app/home.tsx b/src/app/home.tsx index 173750d2b..ae205d8b0 100644 --- a/src/app/home.tsx +++ b/src/app/home.tsx @@ -4,7 +4,7 @@ import { useSearchParams } from 'next/navigation'; import { Pagination } from '@/components'; import { List, Search } from '@/modules'; -import { OFFSET } from '@/utils'; +import { OFFSET } from '@/utils/constants'; import type { ExtendedFavorites, ExtendedNode } from '@/types'; import type { Tag } from '@prisma/client'; diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index b985260a9..fac64d106 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -4,7 +4,7 @@ import Link from 'next/link'; import { signInAction } from '@/actions'; import googleIcon from '@/assets/google.svg'; import { Button } from '@/components'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; import EmailForm from './EmailForm'; diff --git a/src/app/page.tsx b/src/app/page.tsx index 98705fb17..a32579563 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -10,7 +10,7 @@ import { getTags, } from '@/actions'; import { Footer, Header } from '@/modules'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; import Home from './home'; diff --git a/src/app/profile/page.tsx b/src/app/profile/page.tsx index d0918b118..21f39b8f4 100644 --- a/src/app/profile/page.tsx +++ b/src/app/profile/page.tsx @@ -7,7 +7,7 @@ import { getUserQuestions, } from '@/actions'; import { Footer, Header } from '@/modules'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; import Profile from './profile'; diff --git a/src/app/question/[id]/page.tsx b/src/app/question/[id]/page.tsx index 61a7d5934..4e1baaec4 100644 --- a/src/app/question/[id]/page.tsx +++ b/src/app/question/[id]/page.tsx @@ -2,7 +2,7 @@ import { redirect } from 'next/navigation'; import { getFavorite, getMe, getNode } from '@/actions'; import { Footer, Header } from '@/modules'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; import Question from './question'; diff --git a/src/app/question/[id]/question.tsx b/src/app/question/[id]/question.tsx index be79f0026..a4a9daf9d 100644 --- a/src/app/question/[id]/question.tsx +++ b/src/app/question/[id]/question.tsx @@ -30,7 +30,8 @@ import { TooltipTrigger, resultToast, } from '@/components'; -import { Routes, dateOptions } from '@/utils'; +import { dateOptions } from '@/utils/date'; +import { Routes } from '@/utils/routing'; import type { ExtendedNode } from '@/types'; import type { Favorite } from '@prisma/client'; diff --git a/src/app/question/answer/answer.tsx b/src/app/question/answer/answer.tsx index 87db5789c..576b9bb8a 100644 --- a/src/app/question/answer/answer.tsx +++ b/src/app/question/answer/answer.tsx @@ -9,7 +9,7 @@ import { createAnswer, updateAnswer } from '@/actions'; import { BackButton, Button, Editor, resultToast } from '@/components'; import { answerSchema } from '@/lib'; import { PageChangeAlert } from '@/modules'; -import { Limits } from '@/utils'; +import { Limits } from '@/utils/limits'; import type { createAnswerSchema, updateAnswerSchema } from '@/actions'; import type { ExtendedNode } from '@/types'; diff --git a/src/app/question/answer/page.tsx b/src/app/question/answer/page.tsx index 1332fb4f5..8f1cfc35e 100644 --- a/src/app/question/answer/page.tsx +++ b/src/app/question/answer/page.tsx @@ -2,7 +2,7 @@ import { redirect } from 'next/navigation'; import { getMe, getNode } from '@/actions'; import { Footer, Header } from '@/modules'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; import Answer from './answer'; diff --git a/src/app/question/edit/edit.tsx b/src/app/question/edit/edit.tsx index 3df5733ed..0ab6977d6 100644 --- a/src/app/question/edit/edit.tsx +++ b/src/app/question/edit/edit.tsx @@ -10,13 +10,15 @@ import { updateNode, updateNodeSchema } from '@/actions'; import { BackButton, Button, Field, Input, resultToast } from '@/components'; import { useMediaQuery } from '@/hooks'; import { PageChangeAlert, TagsList } from '@/modules'; -import { Limits, arraysAreEqual } from '@/utils'; +import { arraysAreEqual } from '@/utils/functions'; +import { Limits } from '@/utils/limits'; import type { ExtendedNode, Me } from '@/types'; import type { Tag } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; + type Props = { me: Me; node: ExtendedNode; diff --git a/src/app/question/edit/page.tsx b/src/app/question/edit/page.tsx index 455c85403..b770c5cfc 100644 --- a/src/app/question/edit/page.tsx +++ b/src/app/question/edit/page.tsx @@ -2,7 +2,7 @@ import { redirect } from 'next/navigation'; import { getMe, getNode, getTags } from '@/actions'; import { Footer, Header } from '@/modules'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; import Edit from './edit'; diff --git a/src/app/question/new/new.tsx b/src/app/question/new/new.tsx index 34859402e..0d070e705 100644 --- a/src/app/question/new/new.tsx +++ b/src/app/question/new/new.tsx @@ -10,7 +10,7 @@ import { createNode, createNodeSchema } from '@/actions'; import { BackButton, Button, Field, Input, resultToast } from '@/components'; import { useMediaQuery, useWarnIfUnsavedChanges } from '@/hooks'; import { PageChangeAlert, TagsList } from '@/modules'; -import { Limits } from '@/utils'; +import { Limits } from '@/utils/limits'; import type { Me } from '@/types'; import type { Integrations, Tag } from '@prisma/client'; diff --git a/src/app/question/new/page.tsx b/src/app/question/new/page.tsx index 68dc99cd5..89285e1ca 100644 --- a/src/app/question/new/page.tsx +++ b/src/app/question/new/page.tsx @@ -2,7 +2,7 @@ import { redirect } from 'next/navigation'; import { getIntegration, getMe, getTags } from '@/actions'; import { Footer, Header } from '@/modules'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; import New from './new'; diff --git a/src/app/register/confirm/form.tsx b/src/app/register/confirm/form.tsx index d5f9e4151..34145ec0a 100644 --- a/src/app/register/confirm/form.tsx +++ b/src/app/register/confirm/form.tsx @@ -11,7 +11,7 @@ import { useForm } from 'react-hook-form'; import { createTenant, createTenantSchema } from '@/actions'; import { Button, resultToast } from '@/components'; import { registerAtom } from '@/store'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; diff --git a/src/app/register/form.tsx b/src/app/register/form.tsx index e336e92a8..b530b96c9 100644 --- a/src/app/register/form.tsx +++ b/src/app/register/form.tsx @@ -10,7 +10,7 @@ import { useForm } from 'react-hook-form'; import { createTenantCompanySchema } from '@/actions'; import { Button, Field, Input } from '@/components'; import { registerAtom } from '@/store'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; import type { ITenantCreateFields } from '@/types'; import type { SubmitHandler } from 'react-hook-form'; diff --git a/src/app/register/plan/form.tsx b/src/app/register/plan/form.tsx index 09cdb422a..6ad97660d 100644 --- a/src/app/register/plan/form.tsx +++ b/src/app/register/plan/form.tsx @@ -10,7 +10,8 @@ import { useForm } from 'react-hook-form'; import { Button, errorToast, successToast } from '@/components'; import { registerAtom } from '@/store'; -import { Routes, getStripe } from '@/utils'; +import { Routes } from '@/utils/routing'; +import { getStripe } from '@/utils/stripe'; import type { IPlan } from '@/types'; diff --git a/src/app/register/structure.tsx b/src/app/register/structure.tsx index 1e473ca33..e8a5da1b0 100644 --- a/src/app/register/structure.tsx +++ b/src/app/register/structure.tsx @@ -4,7 +4,7 @@ import { ReactNode } from 'react'; import { usePathname } from 'next/navigation'; -import { RegisterRoutes } from '@/utils'; +import { RegisterRoutes } from '@/utils/routing'; type Props = { title: string; diff --git a/src/app/register/user/form.tsx b/src/app/register/user/form.tsx index 9b728d2fa..ca500b013 100644 --- a/src/app/register/user/form.tsx +++ b/src/app/register/user/form.tsx @@ -10,7 +10,7 @@ import { useForm } from 'react-hook-form'; import { createTenantUserSchema } from '@/actions'; import { Button, Field, Input } from '@/components'; import { registerAtom } from '@/store'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; diff --git a/src/app/settings/page.tsx b/src/app/settings/page.tsx index 30b8ab48e..a0878029f 100644 --- a/src/app/settings/page.tsx +++ b/src/app/settings/page.tsx @@ -10,7 +10,7 @@ import { getUsersCount, } from '@/actions'; import { Footer, Header } from '@/modules'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; import Settings from './settings'; diff --git a/src/auth.config.ts b/src/auth.config.ts index 6e4cc3d40..6e6869e9d 100644 --- a/src/auth.config.ts +++ b/src/auth.config.ts @@ -2,7 +2,7 @@ import { NextAuthConfig } from 'next-auth'; import GoogleProvider from 'next-auth/providers/google'; import ResendProvider from 'next-auth/providers/resend'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; import prisma from 'lib/prisma'; export const authConfig: NextAuthConfig = { diff --git a/src/components/alert/Alert.tsx b/src/components/alert/Alert.tsx index 5ad4eee4d..5be6627ce 100644 --- a/src/components/alert/Alert.tsx +++ b/src/components/alert/Alert.tsx @@ -10,7 +10,7 @@ import { import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog'; import { VariantProps } from 'class-variance-authority'; -import { cn } from '@/utils'; +import { cn } from '@/utils/cn'; import { buttonVariants } from '../button'; diff --git a/src/components/avatar/Avatar.tsx b/src/components/avatar/Avatar.tsx index 071b20c42..38a5df916 100644 --- a/src/components/avatar/Avatar.tsx +++ b/src/components/avatar/Avatar.tsx @@ -5,7 +5,7 @@ import { forwardRef } from 'react'; import * as AvatarPrimitive from '@radix-ui/react-avatar'; -import { cn } from '@/utils'; +import { cn } from '@/utils/cn'; const Avatar = forwardRef< ElementRef, diff --git a/src/components/badge/Badge.tsx b/src/components/badge/Badge.tsx index 11a48a2d4..6752e190f 100644 --- a/src/components/badge/Badge.tsx +++ b/src/components/badge/Badge.tsx @@ -3,7 +3,7 @@ import { forwardRef } from 'react'; import { cva, type VariantProps } from 'class-variance-authority'; -import { cn } from '@/utils'; +import { cn } from '@/utils/cn'; const badge = cva('text-xs font-semibold', { variants: { diff --git a/src/components/button/Button.tsx b/src/components/button/Button.tsx index 36dbfd401..ca59cd8f3 100644 --- a/src/components/button/Button.tsx +++ b/src/components/button/Button.tsx @@ -4,7 +4,7 @@ import { forwardRef } from 'react'; import { Slot } from '@radix-ui/react-slot'; import { cva, type VariantProps } from 'class-variance-authority'; -import { cn } from '@/utils'; +import { cn } from '@/utils/cn'; export const buttonVariants = cva( 'transition-all duration-300 ease-in-out lowercase', diff --git a/src/components/dialog/Dialog.tsx b/src/components/dialog/Dialog.tsx index cf69223f8..2f09df500 100644 --- a/src/components/dialog/Dialog.tsx +++ b/src/components/dialog/Dialog.tsx @@ -10,7 +10,7 @@ import { forwardRef } from 'react'; import * as DialogPrimitive from '@radix-ui/react-dialog'; import { X } from 'lucide-react'; -import { cn } from '@/utils'; +import { cn } from '@/utils/cn'; const Dialog = DialogPrimitive.Root; diff --git a/src/components/drawer/Drawer.tsx b/src/components/drawer/Drawer.tsx index d9d4c6023..04cce7f15 100644 --- a/src/components/drawer/Drawer.tsx +++ b/src/components/drawer/Drawer.tsx @@ -10,7 +10,7 @@ import { forwardRef } from 'react'; import { Drawer as DrawerPrimitive } from 'vaul'; -import { cn } from '@/utils'; +import { cn } from '@/utils/cn'; const Drawer = ({ shouldScaleBackground = true, diff --git a/src/components/dropdown/Dropdown.tsx b/src/components/dropdown/Dropdown.tsx index cec9cffae..c776947bf 100644 --- a/src/components/dropdown/Dropdown.tsx +++ b/src/components/dropdown/Dropdown.tsx @@ -5,7 +5,7 @@ import { forwardRef } from 'react'; import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu'; -import { cn } from '@/utils'; +import { cn } from '@/utils/cn'; const DropdownMenu = DropdownMenuPrimitive.Root; diff --git a/src/components/input/Input.tsx b/src/components/input/Input.tsx index 7c6042334..1e3e20415 100644 --- a/src/components/input/Input.tsx +++ b/src/components/input/Input.tsx @@ -1,7 +1,7 @@ import type { InputHTMLAttributes, ReactNode } from 'react'; import { forwardRef } from 'react'; -import { cn } from '@/utils'; +import { cn } from '@/utils/cn'; export interface InputProps extends InputHTMLAttributes { withIcon?: boolean; diff --git a/src/components/label/Label.tsx b/src/components/label/Label.tsx index 27e0de0e0..8d15d942d 100644 --- a/src/components/label/Label.tsx +++ b/src/components/label/Label.tsx @@ -4,7 +4,7 @@ import { forwardRef } from 'react'; import * as LabelPrimitive from '@radix-ui/react-label'; import { cva, type VariantProps } from 'class-variance-authority'; -import { cn } from '@/utils'; +import { cn } from '@/utils/cn'; const label = cva( 'leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70', diff --git a/src/components/loader/Loader.tsx b/src/components/loader/Loader.tsx index 7c862ba61..e1bca1122 100644 --- a/src/components/loader/Loader.tsx +++ b/src/components/loader/Loader.tsx @@ -3,7 +3,7 @@ import { forwardRef } from 'react'; import { cva } from 'class-variance-authority'; -import { cn } from '@/utils'; +import { cn } from '@/utils/cn'; import type { VariantProps } from 'class-variance-authority'; diff --git a/src/components/pagination/Pagination.tsx b/src/components/pagination/Pagination.tsx index 0dbeb7995..5eadd6713 100644 --- a/src/components/pagination/Pagination.tsx +++ b/src/components/pagination/Pagination.tsx @@ -3,7 +3,7 @@ import { usePathname, useRouter, useSearchParams } from 'next/navigation'; import ReactPaginate from 'react-paginate'; -import { OFFSET } from '@/utils'; +import { OFFSET } from '@/utils/constants'; type Props = { nodesLength: number; diff --git a/src/components/popover/Popover.tsx b/src/components/popover/Popover.tsx index 9de6fa7a5..2dd3725b6 100644 --- a/src/components/popover/Popover.tsx +++ b/src/components/popover/Popover.tsx @@ -5,7 +5,7 @@ import { forwardRef } from 'react'; import * as PopoverPrimitive from '@radix-ui/react-popover'; -import { cn } from '@/utils'; +import { cn } from '@/utils/cn'; const Popover = PopoverPrimitive.Root; diff --git a/src/components/select/Select.tsx b/src/components/select/Select.tsx index 06819e870..b7b6716d7 100644 --- a/src/components/select/Select.tsx +++ b/src/components/select/Select.tsx @@ -6,7 +6,7 @@ import { forwardRef } from 'react'; import * as SelectPrimitive from '@radix-ui/react-select'; import { Check, ChevronDown } from 'lucide-react'; -import { cn } from '@/utils'; +import { cn } from '@/utils/cn'; const Select = SelectPrimitive.Root; diff --git a/src/components/tabs/Tabs.tsx b/src/components/tabs/Tabs.tsx index cf4bae9cf..bcc9e9719 100644 --- a/src/components/tabs/Tabs.tsx +++ b/src/components/tabs/Tabs.tsx @@ -5,7 +5,7 @@ import { forwardRef } from 'react'; import * as TabsPrimitive from '@radix-ui/react-tabs'; -import { cn } from '@/utils'; +import { cn } from '@/utils/cn'; const Tabs = TabsPrimitive.Root; diff --git a/src/components/tooltip/Tooltip.tsx b/src/components/tooltip/Tooltip.tsx index fb2246c4a..e7931abe9 100644 --- a/src/components/tooltip/Tooltip.tsx +++ b/src/components/tooltip/Tooltip.tsx @@ -5,7 +5,7 @@ import { forwardRef } from 'react'; import * as TooltipPrimitive from '@radix-ui/react-tooltip'; -import { cn } from '@/utils'; +import { cn } from '@/utils/cn'; const TooltipProvider = TooltipPrimitive.Provider; diff --git a/src/lib/validations.ts b/src/lib/validations.ts index e4f9be189..f7a4589d0 100644 --- a/src/lib/validations.ts +++ b/src/lib/validations.ts @@ -1,6 +1,6 @@ import { z } from 'zod'; -import { ACCEPTED_IMAGE_TYPES, MAX_FILE_SIZE } from '@/utils'; +import { MAX_FILE_SIZE, ACCEPTED_IMAGE_TYPES } from '@/utils/constants'; export const answerSchema = z.object({ text: z diff --git a/src/modules/header/Header.tsx b/src/modules/header/Header.tsx index 9dbf8e8b7..5f231e0ec 100644 --- a/src/modules/header/Header.tsx +++ b/src/modules/header/Header.tsx @@ -21,7 +21,7 @@ import { TooltipTrigger, } from '@/components'; import { userAtom } from '@/store'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; import { ThemeToggle } from '../theme'; diff --git a/src/modules/home/Question.tsx b/src/modules/home/Question.tsx index a7bcf37fe..6c7ec79e8 100644 --- a/src/modules/home/Question.tsx +++ b/src/modules/home/Question.tsx @@ -31,7 +31,8 @@ import { } from '@/components'; import { favoriteSchema, pinSchema } from '@/lib'; import { userAtom } from '@/store'; -import { Routes, dateOptions, timeOptions } from '@/utils'; +import { dateOptions, timeOptions } from '@/utils/date'; +import { Routes } from '@/utils/routing'; import type { createFavoriteSchema, diff --git a/src/modules/profile/Answers.tsx b/src/modules/profile/Answers.tsx index f384a9330..53c7224dd 100644 --- a/src/modules/profile/Answers.tsx +++ b/src/modules/profile/Answers.tsx @@ -3,7 +3,8 @@ import dynamic from 'next/dynamic'; import Link from 'next/link'; -import { dateOptions, Routes } from '@/utils'; +import { dateOptions } from '@/utils/date'; +import { Routes } from '@/utils/routing'; import type { NodeWithQuestionAndAnswer } from '@/types'; diff --git a/src/modules/profile/Favorites.tsx b/src/modules/profile/Favorites.tsx index 7030e1e65..c8bd81985 100644 --- a/src/modules/profile/Favorites.tsx +++ b/src/modules/profile/Favorites.tsx @@ -1,6 +1,7 @@ import Link from 'next/link'; -import { Routes, dateOptions } from '@/utils'; +import { dateOptions } from '@/utils/date'; +import { Routes } from '@/utils/routing'; import type { ExtendedFavorites } from '@/types'; diff --git a/src/modules/profile/Questions.tsx b/src/modules/profile/Questions.tsx index 1f5bec939..8e803a946 100644 --- a/src/modules/profile/Questions.tsx +++ b/src/modules/profile/Questions.tsx @@ -2,7 +2,8 @@ import Link from 'next/link'; -import { Routes, dateOptions } from '@/utils'; +import { dateOptions } from '@/utils/date'; +import { Routes } from '@/utils/routing'; import type { QuestionWithNodeId } from '@/types'; diff --git a/src/modules/profile/Update.tsx b/src/modules/profile/Update.tsx index 2de7de0f7..ea81e4094 100644 --- a/src/modules/profile/Update.tsx +++ b/src/modules/profile/Update.tsx @@ -10,7 +10,7 @@ import { useForm } from 'react-hook-form'; import { updateUser, updateUserSchema } from '@/actions'; import { Button, Field, Input, resultToast } from '@/components'; import { useMediaQuery } from '@/hooks'; -import { Limits } from '@/utils'; +import { Limits } from '@/utils/limits'; import { PageChangeAlert } from '../navigation'; diff --git a/src/modules/settings/general/Company.tsx b/src/modules/settings/general/Company.tsx index b397146e9..73c69a972 100644 --- a/src/modules/settings/general/Company.tsx +++ b/src/modules/settings/general/Company.tsx @@ -8,7 +8,7 @@ import { useForm } from 'react-hook-form'; import { updateTenant, updateTenantSchema } from '@/actions'; import { Button, Field, Input, resultToast } from '@/components'; import { PageChangeAlert } from '@/modules'; -import { Limits } from '@/utils'; +import { Limits } from '@/utils/limits'; import type { ITenantUpdateFields } from '@/types'; import type { Integrations, Tenant } from '@prisma/client'; diff --git a/src/modules/settings/general/Files.tsx b/src/modules/settings/general/Files.tsx index 1b0f30623..becc19b7f 100644 --- a/src/modules/settings/general/Files.tsx +++ b/src/modules/settings/general/Files.tsx @@ -11,7 +11,7 @@ import { useForm } from 'react-hook-form'; import { submitImage, updateLogo, updateLogoSchema } from '@/actions'; import { Button, resultToast } from '@/components'; import { filesSchema } from '@/lib/validations'; -import { MAX_FILE_SIZE } from '@/utils'; +import { MAX_FILE_SIZE } from '@/utils/constants'; import type { Tenant } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; diff --git a/src/modules/settings/payment/Billing.tsx b/src/modules/settings/payment/Billing.tsx index 85a9145f4..5b73b8597 100644 --- a/src/modules/settings/payment/Billing.tsx +++ b/src/modules/settings/payment/Billing.tsx @@ -4,7 +4,7 @@ import { Banknote } from 'lucide-react'; import { useForm } from 'react-hook-form'; import { Button, errorToast } from '@/components'; -import { Routes } from '@/utils'; +import { Routes } from '@/utils/routing'; type Props = { tenantId: string; diff --git a/src/modules/settings/users/Create.tsx b/src/modules/settings/users/Create.tsx index a9a4d6c3c..efce89b76 100644 --- a/src/modules/settings/users/Create.tsx +++ b/src/modules/settings/users/Create.tsx @@ -31,7 +31,7 @@ import { resultToast, } from '@/components'; import { useMediaQuery } from '@/hooks'; -import { Limits } from '@/utils'; +import { Limits } from '@/utils/limits'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; diff --git a/src/utils/index.ts b/src/utils/index.ts deleted file mode 100644 index 23ae23d6c..000000000 --- a/src/utils/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -export * from './cn'; -export * from './constants'; -export * from './date'; -export * from './functions'; -export * from './limits'; -export * from './models'; -export * from './routing'; -export * from './stripe'; From 23517db18e6780dd6f1441714f04e7a1446230dc Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Fri, 8 Nov 2024 13:20:52 +0100 Subject: [PATCH 314/326] :art: remove modules barrel file --- src/app/home.tsx | 3 ++- src/app/login/layout.tsx | 2 +- src/app/page.tsx | 3 ++- src/app/profile/page.tsx | 3 ++- src/app/profile/profile.tsx | 10 ++++------ src/app/question/[id]/page.tsx | 3 ++- src/app/question/answer/answer.tsx | 2 +- src/app/question/answer/page.tsx | 3 ++- src/app/question/edit/edit.tsx | 4 ++-- src/app/question/edit/page.tsx | 3 ++- src/app/question/new/new.tsx | 3 ++- src/app/question/new/page.tsx | 3 ++- src/app/register/layout.tsx | 2 +- src/app/settings/page.tsx | 3 ++- src/app/settings/settings.tsx | 5 ++++- src/modules/footer/index.ts | 1 - src/modules/header/index.ts | 1 - src/modules/home/index.ts | 1 - src/modules/index.ts | 9 --------- src/modules/navigation/index.ts | 1 - src/modules/profile/index.ts | 4 ---- src/modules/question/index.ts | 1 - src/modules/search/index.ts | 1 - src/modules/settings/general/Company.tsx | 2 +- src/modules/settings/general/index.ts | 1 - src/modules/settings/index.ts | 4 ---- src/modules/settings/payment/index.ts | 1 - src/modules/settings/tags/index.ts | 1 - src/modules/settings/users/index.ts | 1 - src/modules/theme/index.ts | 1 - 30 files changed, 32 insertions(+), 50 deletions(-) delete mode 100644 src/modules/footer/index.ts delete mode 100644 src/modules/header/index.ts delete mode 100644 src/modules/home/index.ts delete mode 100644 src/modules/index.ts delete mode 100644 src/modules/navigation/index.ts delete mode 100644 src/modules/profile/index.ts delete mode 100644 src/modules/question/index.ts delete mode 100644 src/modules/search/index.ts delete mode 100644 src/modules/settings/general/index.ts delete mode 100644 src/modules/settings/index.ts delete mode 100644 src/modules/settings/payment/index.ts delete mode 100644 src/modules/settings/tags/index.ts delete mode 100644 src/modules/settings/users/index.ts delete mode 100644 src/modules/theme/index.ts diff --git a/src/app/home.tsx b/src/app/home.tsx index ae205d8b0..f7cef1894 100644 --- a/src/app/home.tsx +++ b/src/app/home.tsx @@ -3,7 +3,8 @@ import { useSearchParams } from 'next/navigation'; import { Pagination } from '@/components'; -import { List, Search } from '@/modules'; +import { List } from '@/modules/home/List'; +import { Search } from '@/modules/search/Search'; import { OFFSET } from '@/utils/constants'; import type { ExtendedFavorites, ExtendedNode } from '@/types'; diff --git a/src/app/login/layout.tsx b/src/app/login/layout.tsx index 1076458b4..91229034f 100644 --- a/src/app/login/layout.tsx +++ b/src/app/login/layout.tsx @@ -1,6 +1,6 @@ import type { ReactNode } from 'react'; -import { ThemeToggle } from '@/modules'; +import { ThemeToggle } from '@/modules/theme/ThemeToggle'; type Props = { children: ReactNode; diff --git a/src/app/page.tsx b/src/app/page.tsx index a32579563..fb6c29b36 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -9,7 +9,8 @@ import { getSearchTags, getTags, } from '@/actions'; -import { Footer, Header } from '@/modules'; +import { Footer } from '@/modules/footer/Footer'; +import { Header } from '@/modules/header/Header'; import { Routes } from '@/utils/routing'; import Home from './home'; diff --git a/src/app/profile/page.tsx b/src/app/profile/page.tsx index 21f39b8f4..00cddee80 100644 --- a/src/app/profile/page.tsx +++ b/src/app/profile/page.tsx @@ -6,7 +6,8 @@ import { getUserAnswers, getUserQuestions, } from '@/actions'; -import { Footer, Header } from '@/modules'; +import { Footer } from '@/modules/footer/Footer'; +import { Header } from '@/modules/header/Header'; import { Routes } from '@/utils/routing'; import Profile from './profile'; diff --git a/src/app/profile/profile.tsx b/src/app/profile/profile.tsx index b2129cc4f..56136850f 100644 --- a/src/app/profile/profile.tsx +++ b/src/app/profile/profile.tsx @@ -1,12 +1,10 @@ 'use client'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components'; -import { - UpdateProfile, - UserAnswers, - UserFavorites, - UserQuestions, -} from '@/modules'; +import { UserAnswers } from '@/modules/profile/Answers'; +import { UserFavorites } from '@/modules/profile/Favorites'; +import { UserQuestions } from '@/modules/profile/Questions'; +import { UpdateProfile } from '@/modules/profile/Update'; import type { ExtendedFavorites, diff --git a/src/app/question/[id]/page.tsx b/src/app/question/[id]/page.tsx index 4e1baaec4..d124d7fbd 100644 --- a/src/app/question/[id]/page.tsx +++ b/src/app/question/[id]/page.tsx @@ -1,7 +1,8 @@ import { redirect } from 'next/navigation'; import { getFavorite, getMe, getNode } from '@/actions'; -import { Footer, Header } from '@/modules'; +import { Footer } from '@/modules/footer/Footer'; +import { Header } from '@/modules/header/Header'; import { Routes } from '@/utils/routing'; import Question from './question'; diff --git a/src/app/question/answer/answer.tsx b/src/app/question/answer/answer.tsx index 576b9bb8a..67f66cc8f 100644 --- a/src/app/question/answer/answer.tsx +++ b/src/app/question/answer/answer.tsx @@ -8,7 +8,7 @@ import { Controller, useForm } from 'react-hook-form'; import { createAnswer, updateAnswer } from '@/actions'; import { BackButton, Button, Editor, resultToast } from '@/components'; import { answerSchema } from '@/lib'; -import { PageChangeAlert } from '@/modules'; +import { PageChangeAlert } from '@/modules/navigation/PageChange'; import { Limits } from '@/utils/limits'; import type { createAnswerSchema, updateAnswerSchema } from '@/actions'; diff --git a/src/app/question/answer/page.tsx b/src/app/question/answer/page.tsx index 8f1cfc35e..4fcd0713f 100644 --- a/src/app/question/answer/page.tsx +++ b/src/app/question/answer/page.tsx @@ -1,7 +1,8 @@ import { redirect } from 'next/navigation'; import { getMe, getNode } from '@/actions'; -import { Footer, Header } from '@/modules'; +import { Footer } from '@/modules/footer/Footer'; +import { Header } from '@/modules/header/Header'; import { Routes } from '@/utils/routing'; import Answer from './answer'; diff --git a/src/app/question/edit/edit.tsx b/src/app/question/edit/edit.tsx index 0ab6977d6..548156784 100644 --- a/src/app/question/edit/edit.tsx +++ b/src/app/question/edit/edit.tsx @@ -9,7 +9,8 @@ import { useForm } from 'react-hook-form'; import { updateNode, updateNodeSchema } from '@/actions'; import { BackButton, Button, Field, Input, resultToast } from '@/components'; import { useMediaQuery } from '@/hooks'; -import { PageChangeAlert, TagsList } from '@/modules'; +import { PageChangeAlert } from '@/modules/navigation/PageChange'; +import { TagsList } from '@/modules/question/TagsList'; import { arraysAreEqual } from '@/utils/functions'; import { Limits } from '@/utils/limits'; @@ -18,7 +19,6 @@ import type { Tag } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; - type Props = { me: Me; node: ExtendedNode; diff --git a/src/app/question/edit/page.tsx b/src/app/question/edit/page.tsx index b770c5cfc..5fb494549 100644 --- a/src/app/question/edit/page.tsx +++ b/src/app/question/edit/page.tsx @@ -1,7 +1,8 @@ import { redirect } from 'next/navigation'; import { getMe, getNode, getTags } from '@/actions'; -import { Footer, Header } from '@/modules'; +import { Footer } from '@/modules/footer/Footer'; +import { Header } from '@/modules/header/Header'; import { Routes } from '@/utils/routing'; import Edit from './edit'; diff --git a/src/app/question/new/new.tsx b/src/app/question/new/new.tsx index 0d070e705..b59c3eef4 100644 --- a/src/app/question/new/new.tsx +++ b/src/app/question/new/new.tsx @@ -9,7 +9,8 @@ import { useForm } from 'react-hook-form'; import { createNode, createNodeSchema } from '@/actions'; import { BackButton, Button, Field, Input, resultToast } from '@/components'; import { useMediaQuery, useWarnIfUnsavedChanges } from '@/hooks'; -import { PageChangeAlert, TagsList } from '@/modules'; +import { PageChangeAlert } from '@/modules/navigation/PageChange'; +import { TagsList } from '@/modules/question/TagsList'; import { Limits } from '@/utils/limits'; import type { Me } from '@/types'; diff --git a/src/app/question/new/page.tsx b/src/app/question/new/page.tsx index 89285e1ca..d0252974a 100644 --- a/src/app/question/new/page.tsx +++ b/src/app/question/new/page.tsx @@ -1,7 +1,8 @@ import { redirect } from 'next/navigation'; import { getIntegration, getMe, getTags } from '@/actions'; -import { Footer, Header } from '@/modules'; +import { Footer } from '@/modules/footer/Footer'; +import { Header } from '@/modules/header/Header'; import { Routes } from '@/utils/routing'; import New from './new'; diff --git a/src/app/register/layout.tsx b/src/app/register/layout.tsx index fa401d53d..aaca5948c 100644 --- a/src/app/register/layout.tsx +++ b/src/app/register/layout.tsx @@ -1,6 +1,6 @@ import type { ReactNode } from 'react'; -import { ThemeToggle } from '@/modules'; +import { ThemeToggle } from '@/modules/theme/ThemeToggle'; type Props = { children: ReactNode; diff --git a/src/app/settings/page.tsx b/src/app/settings/page.tsx index a0878029f..1d36eef3f 100644 --- a/src/app/settings/page.tsx +++ b/src/app/settings/page.tsx @@ -9,7 +9,8 @@ import { getUsers, getUsersCount, } from '@/actions'; -import { Footer, Header } from '@/modules'; +import { Footer } from '@/modules/footer/Footer'; +import { Header } from '@/modules/header/Header'; import { Routes } from '@/utils/routing'; import Settings from './settings'; diff --git a/src/app/settings/settings.tsx b/src/app/settings/settings.tsx index d14703f82..61745a4df 100644 --- a/src/app/settings/settings.tsx +++ b/src/app/settings/settings.tsx @@ -1,5 +1,8 @@ import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components'; -import { General, Payment, Tags, Users } from '@/modules'; +import { General } from '@/modules/settings/general/General'; +import { Payment } from '@/modules/settings/payment/Payment'; +import { Tags } from '@/modules/settings/tags/Tags'; +import { Users } from '@/modules/settings/users/Users'; import type { Me } from '@/types'; import type { Integrations, Tag, Tenant, User } from '@prisma/client'; diff --git a/src/modules/footer/index.ts b/src/modules/footer/index.ts deleted file mode 100644 index ddcc5a9cd..000000000 --- a/src/modules/footer/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Footer'; diff --git a/src/modules/header/index.ts b/src/modules/header/index.ts deleted file mode 100644 index 266dec8a1..000000000 --- a/src/modules/header/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Header'; diff --git a/src/modules/home/index.ts b/src/modules/home/index.ts deleted file mode 100644 index 4994c1813..000000000 --- a/src/modules/home/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './List'; diff --git a/src/modules/index.ts b/src/modules/index.ts deleted file mode 100644 index 3ac144cc8..000000000 --- a/src/modules/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -export * from './footer'; -export * from './header'; -export * from './home'; -export * from './navigation'; -export * from './profile'; -export * from './question'; -export * from './search'; -export * from './settings'; -export * from './theme'; diff --git a/src/modules/navigation/index.ts b/src/modules/navigation/index.ts deleted file mode 100644 index a0b1f09b1..000000000 --- a/src/modules/navigation/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './PageChange'; diff --git a/src/modules/profile/index.ts b/src/modules/profile/index.ts deleted file mode 100644 index 0dc315a6e..000000000 --- a/src/modules/profile/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from './Update'; -export * from './Questions'; -export * from './Answers'; -export * from './Favorites'; diff --git a/src/modules/question/index.ts b/src/modules/question/index.ts deleted file mode 100644 index 88ab5e645..000000000 --- a/src/modules/question/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './TagsList'; diff --git a/src/modules/search/index.ts b/src/modules/search/index.ts deleted file mode 100644 index addd53308..000000000 --- a/src/modules/search/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Search'; diff --git a/src/modules/settings/general/Company.tsx b/src/modules/settings/general/Company.tsx index 73c69a972..7a77f40b7 100644 --- a/src/modules/settings/general/Company.tsx +++ b/src/modules/settings/general/Company.tsx @@ -7,7 +7,7 @@ import { useForm } from 'react-hook-form'; import { updateTenant, updateTenantSchema } from '@/actions'; import { Button, Field, Input, resultToast } from '@/components'; -import { PageChangeAlert } from '@/modules'; +import { PageChangeAlert } from '@/modules/navigation/PageChange'; import { Limits } from '@/utils/limits'; import type { ITenantUpdateFields } from '@/types'; diff --git a/src/modules/settings/general/index.ts b/src/modules/settings/general/index.ts deleted file mode 100644 index 0ab02c523..000000000 --- a/src/modules/settings/general/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './General'; diff --git a/src/modules/settings/index.ts b/src/modules/settings/index.ts deleted file mode 100644 index 4ad9e59fb..000000000 --- a/src/modules/settings/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from './payment'; -export * from './general'; -export * from './tags'; -export * from './users'; diff --git a/src/modules/settings/payment/index.ts b/src/modules/settings/payment/index.ts deleted file mode 100644 index a07ed8e43..000000000 --- a/src/modules/settings/payment/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Payment'; diff --git a/src/modules/settings/tags/index.ts b/src/modules/settings/tags/index.ts deleted file mode 100644 index b7c10b6d5..000000000 --- a/src/modules/settings/tags/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Tags'; diff --git a/src/modules/settings/users/index.ts b/src/modules/settings/users/index.ts deleted file mode 100644 index 1858d4aed..000000000 --- a/src/modules/settings/users/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Users'; diff --git a/src/modules/theme/index.ts b/src/modules/theme/index.ts deleted file mode 100644 index 879e51319..000000000 --- a/src/modules/theme/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './ThemeToggle'; From f1aa907df294c1b76a04f7ef2f00243496f004de Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Fri, 8 Nov 2024 14:31:57 +0100 Subject: [PATCH 315/326] :art: remove lib barrel file --- src/actions/delete-tenant/action.ts | 2 +- src/actions/update-logo/action.ts | 2 +- src/actions/upload-file/action.ts | 2 +- src/app/question/answer/answer.tsx | 2 +- src/lib/index.ts | 3 --- src/modules/home/Question.tsx | 2 +- 6 files changed, 5 insertions(+), 8 deletions(-) delete mode 100644 src/lib/index.ts diff --git a/src/actions/delete-tenant/action.ts b/src/actions/delete-tenant/action.ts index 3e609f306..ff5c3301f 100644 --- a/src/actions/delete-tenant/action.ts +++ b/src/actions/delete-tenant/action.ts @@ -7,7 +7,7 @@ import { import { redirect } from 'next/navigation'; import Stripe from 'stripe'; -import { s3Client } from '@/lib'; +import { s3Client } from '@/lib/aws'; import { authActionClient } from '@/lib/safe-actions'; import { STRIPE_VERSION } from '@/utils/constants'; import { Routes } from '@/utils/routing'; diff --git a/src/actions/update-logo/action.ts b/src/actions/update-logo/action.ts index 99aa41bc8..db2b35a12 100644 --- a/src/actions/update-logo/action.ts +++ b/src/actions/update-logo/action.ts @@ -7,7 +7,7 @@ import { import { revalidatePath } from 'next/cache'; import { redirect } from 'next/navigation'; -import { s3Client } from '@/lib'; +import { s3Client } from '@/lib/aws'; import { authActionClient } from '@/lib/safe-actions'; import { Routes } from '@/utils/routing'; import prisma from 'lib/prisma'; diff --git a/src/actions/upload-file/action.ts b/src/actions/upload-file/action.ts index 36a78d95e..2e6ad2da0 100644 --- a/src/actions/upload-file/action.ts +++ b/src/actions/upload-file/action.ts @@ -2,7 +2,7 @@ import { PutObjectCommand, PutObjectCommandInput } from '@aws-sdk/client-s3'; -import { s3Client } from '@/lib'; +import { s3Client } from '@/lib/aws'; export async function uploadFile( file: File, diff --git a/src/app/question/answer/answer.tsx b/src/app/question/answer/answer.tsx index 67f66cc8f..a31fa5fe7 100644 --- a/src/app/question/answer/answer.tsx +++ b/src/app/question/answer/answer.tsx @@ -7,7 +7,7 @@ import { Controller, useForm } from 'react-hook-form'; import { createAnswer, updateAnswer } from '@/actions'; import { BackButton, Button, Editor, resultToast } from '@/components'; -import { answerSchema } from '@/lib'; +import { answerSchema } from '@/lib/validations'; import { PageChangeAlert } from '@/modules/navigation/PageChange'; import { Limits } from '@/utils/limits'; diff --git a/src/lib/index.ts b/src/lib/index.ts deleted file mode 100644 index efaf0b0c6..000000000 --- a/src/lib/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './SuspenseWrapper'; -export * from './validations'; -export * from './aws'; diff --git a/src/modules/home/Question.tsx b/src/modules/home/Question.tsx index 6c7ec79e8..54913a8b5 100644 --- a/src/modules/home/Question.tsx +++ b/src/modules/home/Question.tsx @@ -29,7 +29,7 @@ import { TooltipTrigger, resultToast, } from '@/components'; -import { favoriteSchema, pinSchema } from '@/lib'; +import { favoriteSchema, pinSchema } from '@/lib/validations'; import { userAtom } from '@/store'; import { dateOptions, timeOptions } from '@/utils/date'; import { Routes } from '@/utils/routing'; From 608bcee12d755b52647f006ecee0c59874a57594 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Fri, 8 Nov 2024 14:34:26 +0100 Subject: [PATCH 316/326] :art: remove hooks barrel file --- src/app/question/edit/edit.tsx | 2 +- src/app/question/new/new.tsx | 3 ++- src/components/editor/Editor.tsx | 2 +- src/hooks/index.ts | 2 -- src/modules/navigation/PageChange.tsx | 2 +- src/modules/profile/Update.tsx | 2 +- src/modules/settings/tags/Create.tsx | 2 +- src/modules/settings/users/Create.tsx | 2 +- src/modules/settings/users/FileInput.tsx | 2 +- src/modules/settings/users/Update.tsx | 2 +- 10 files changed, 10 insertions(+), 11 deletions(-) delete mode 100644 src/hooks/index.ts diff --git a/src/app/question/edit/edit.tsx b/src/app/question/edit/edit.tsx index 548156784..16604088c 100644 --- a/src/app/question/edit/edit.tsx +++ b/src/app/question/edit/edit.tsx @@ -8,7 +8,7 @@ import { useForm } from 'react-hook-form'; import { updateNode, updateNodeSchema } from '@/actions'; import { BackButton, Button, Field, Input, resultToast } from '@/components'; -import { useMediaQuery } from '@/hooks'; +import { useMediaQuery } from '@/hooks/useMediaQuery'; import { PageChangeAlert } from '@/modules/navigation/PageChange'; import { TagsList } from '@/modules/question/TagsList'; import { arraysAreEqual } from '@/utils/functions'; diff --git a/src/app/question/new/new.tsx b/src/app/question/new/new.tsx index b59c3eef4..bda22abaf 100644 --- a/src/app/question/new/new.tsx +++ b/src/app/question/new/new.tsx @@ -8,7 +8,8 @@ import { useForm } from 'react-hook-form'; import { createNode, createNodeSchema } from '@/actions'; import { BackButton, Button, Field, Input, resultToast } from '@/components'; -import { useMediaQuery, useWarnIfUnsavedChanges } from '@/hooks'; +import { useMediaQuery } from '@/hooks/useMediaQuery'; +import { useWarnIfUnsavedChanges } from '@/hooks/useWarnIfUnsavedChanges'; import { PageChangeAlert } from '@/modules/navigation/PageChange'; import { TagsList } from '@/modules/question/TagsList'; import { Limits } from '@/utils/limits'; diff --git a/src/components/editor/Editor.tsx b/src/components/editor/Editor.tsx index 3a5a0bca4..f970ffbc0 100644 --- a/src/components/editor/Editor.tsx +++ b/src/components/editor/Editor.tsx @@ -5,7 +5,7 @@ import '@uiw/react-md-editor/markdown-editor.css'; import dynamic from 'next/dynamic'; import rehypeSanitize from 'rehype-sanitize'; -import { useMediaQuery } from '@/hooks'; +import { useMediaQuery } from '@/hooks/useMediaQuery'; const MDEditor = dynamic(() => import('@uiw/react-md-editor'), { ssr: false }); diff --git a/src/hooks/index.ts b/src/hooks/index.ts deleted file mode 100644 index 0fd5440c6..000000000 --- a/src/hooks/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './useMediaQuery'; -export * from './useWarnIfUnsavedChanges'; diff --git a/src/modules/navigation/PageChange.tsx b/src/modules/navigation/PageChange.tsx index cf6da6efd..913fe2ae1 100644 --- a/src/modules/navigation/PageChange.tsx +++ b/src/modules/navigation/PageChange.tsx @@ -1,4 +1,4 @@ -import { useWarnIfUnsavedChanges } from '@/hooks'; +import { useWarnIfUnsavedChanges } from '@/hooks/useWarnIfUnsavedChanges'; import { AlertDialog, diff --git a/src/modules/profile/Update.tsx b/src/modules/profile/Update.tsx index ea81e4094..d164e45f7 100644 --- a/src/modules/profile/Update.tsx +++ b/src/modules/profile/Update.tsx @@ -9,7 +9,7 @@ import { useForm } from 'react-hook-form'; import { updateUser, updateUserSchema } from '@/actions'; import { Button, Field, Input, resultToast } from '@/components'; -import { useMediaQuery } from '@/hooks'; +import { useMediaQuery } from '@/hooks/useMediaQuery'; import { Limits } from '@/utils/limits'; import { PageChangeAlert } from '../navigation'; diff --git a/src/modules/settings/tags/Create.tsx b/src/modules/settings/tags/Create.tsx index a08d5bb6c..56aee5e39 100644 --- a/src/modules/settings/tags/Create.tsx +++ b/src/modules/settings/tags/Create.tsx @@ -21,7 +21,7 @@ import { Input, resultToast, } from '@/components'; -import { useMediaQuery } from '@/hooks'; +import { useMediaQuery } from '@/hooks/useMediaQuery'; import type { $Enums } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; diff --git a/src/modules/settings/users/Create.tsx b/src/modules/settings/users/Create.tsx index efce89b76..08b618b87 100644 --- a/src/modules/settings/users/Create.tsx +++ b/src/modules/settings/users/Create.tsx @@ -30,7 +30,7 @@ import { SelectValue, resultToast, } from '@/components'; -import { useMediaQuery } from '@/hooks'; +import { useMediaQuery } from '@/hooks/useMediaQuery'; import { Limits } from '@/utils/limits'; import type { SubmitHandler } from 'react-hook-form'; diff --git a/src/modules/settings/users/FileInput.tsx b/src/modules/settings/users/FileInput.tsx index c5fd651df..0dfaf5b0a 100644 --- a/src/modules/settings/users/FileInput.tsx +++ b/src/modules/settings/users/FileInput.tsx @@ -24,7 +24,7 @@ import { DrawerTrigger, Input, } from '@/components'; -import { useMediaQuery } from '@/hooks'; +import { useMediaQuery } from '@/hooks/useMediaQuery'; import { csvUploadSchema } from '@/lib/validations'; import type { $Enums, User } from '@prisma/client'; diff --git a/src/modules/settings/users/Update.tsx b/src/modules/settings/users/Update.tsx index f57a57cc9..505efbf03 100644 --- a/src/modules/settings/users/Update.tsx +++ b/src/modules/settings/users/Update.tsx @@ -28,7 +28,7 @@ import { SelectTrigger, SelectValue, } from '@/components'; -import { useMediaQuery } from '@/hooks'; +import { useMediaQuery } from '@/hooks/useMediaQuery'; import type { User } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; From e966a2d92fac7d313fddc7421719d43ba620bee1 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Fri, 8 Nov 2024 14:58:59 +0100 Subject: [PATCH 317/326] :art: remove components barrel file --- src/actions/create-user/action.ts | 2 +- src/app/error.tsx | 2 +- src/app/home.tsx | 2 +- src/app/loading.tsx | 2 +- src/app/login/EmailForm.tsx | 5 ++++- src/app/login/page.tsx | 2 +- src/app/profile/profile.tsx | 7 ++++++- src/app/providers.tsx | 2 +- src/app/question/[id]/question.tsx | 10 ++++++---- src/app/question/answer/answer.tsx | 5 ++++- src/app/question/edit/edit.tsx | 6 +++++- src/app/question/new/new.tsx | 6 +++++- src/app/register/confirm/form.tsx | 3 ++- src/app/register/form.tsx | 4 +++- src/app/register/plan/form.tsx | 3 ++- src/app/register/user/form.tsx | 4 +++- src/app/settings/loading.tsx | 2 +- src/app/settings/settings.tsx | 7 ++++++- src/components/alert/index.ts | 1 - src/components/avatar/index.ts | 1 - src/components/badge/index.ts | 1 - src/components/button/index.ts | 2 -- src/components/dialog/index.ts | 1 - src/components/drawer/index.ts | 1 - src/components/dropdown/index.ts | 1 - src/components/editor/index.ts | 1 - src/components/emails/index.ts | 2 -- src/components/field/index.ts | 1 - src/components/index.ts | 20 -------------------- src/components/input/index.ts | 1 - src/components/label/index.ts | 1 - src/components/loader/index.ts | 1 - src/components/pagination/index.ts | 1 - src/components/popover/index.ts | 1 - src/components/select/index.ts | 1 - src/components/stepper/index.ts | 1 - src/components/tabs/index.ts | 1 - src/components/toast/index.ts | 1 - src/components/tooltip/index.ts | 1 - src/lib/SuspenseWrapper.tsx | 4 +--- src/modules/header/Header.tsx | 15 ++++++++++----- src/modules/home/Question.tsx | 9 +++++---- src/modules/profile/Update.tsx | 8 ++++++-- src/modules/question/TagsList.tsx | 2 +- src/modules/search/Search.tsx | 6 +++--- src/modules/settings/general/Company.tsx | 5 ++++- src/modules/settings/general/Files.tsx | 3 ++- src/modules/settings/payment/Billing.tsx | 3 ++- src/modules/settings/payment/Delete.tsx | 6 +++--- src/modules/settings/tags/Create.tsx | 17 ++++++++++------- src/modules/settings/tags/Tags.tsx | 10 +++++----- src/modules/settings/users/Create.tsx | 16 ++++++++++------ src/modules/settings/users/FileInput.tsx | 9 ++++++--- src/modules/settings/users/Update.tsx | 15 ++++++++++----- src/modules/settings/users/Users.tsx | 6 +++--- src/modules/theme/ThemeToggle.tsx | 4 ++-- 56 files changed, 136 insertions(+), 118 deletions(-) delete mode 100644 src/components/alert/index.ts delete mode 100644 src/components/avatar/index.ts delete mode 100644 src/components/badge/index.ts delete mode 100644 src/components/button/index.ts delete mode 100644 src/components/dialog/index.ts delete mode 100644 src/components/drawer/index.ts delete mode 100644 src/components/dropdown/index.ts delete mode 100644 src/components/editor/index.ts delete mode 100644 src/components/emails/index.ts delete mode 100644 src/components/field/index.ts delete mode 100644 src/components/index.ts delete mode 100644 src/components/input/index.ts delete mode 100644 src/components/label/index.ts delete mode 100644 src/components/loader/index.ts delete mode 100644 src/components/pagination/index.ts delete mode 100644 src/components/popover/index.ts delete mode 100644 src/components/select/index.ts delete mode 100644 src/components/stepper/index.ts delete mode 100644 src/components/tabs/index.ts delete mode 100644 src/components/toast/index.ts delete mode 100644 src/components/tooltip/index.ts diff --git a/src/actions/create-user/action.ts b/src/actions/create-user/action.ts index 65c5daab6..b4cd06e61 100644 --- a/src/actions/create-user/action.ts +++ b/src/actions/create-user/action.ts @@ -3,7 +3,7 @@ import { revalidatePath } from 'next/cache'; import { Resend } from 'resend'; -import { NewUserEmailTemplate } from '@/components'; +import { NewUserEmailTemplate } from '@/components/emails/NewUser'; import { ActionError, authActionClient } from '@/lib/safe-actions'; import { Routes } from '@/utils/routing'; import prisma from 'lib/prisma'; diff --git a/src/app/error.tsx b/src/app/error.tsx index aee9b6e07..f3ddcc814 100644 --- a/src/app/error.tsx +++ b/src/app/error.tsx @@ -4,7 +4,7 @@ import { useEffect } from 'react'; import Link from 'next/link'; -import { Button } from '@/components'; +import { Button } from '@/components/button/Button'; import { Routes } from '@/utils/routing'; export default function Error({ diff --git a/src/app/home.tsx b/src/app/home.tsx index f7cef1894..f8679c541 100644 --- a/src/app/home.tsx +++ b/src/app/home.tsx @@ -2,7 +2,7 @@ import { useSearchParams } from 'next/navigation'; -import { Pagination } from '@/components'; +import { Pagination } from '@/components/pagination/Pagination'; import { List } from '@/modules/home/List'; import { Search } from '@/modules/search/Search'; import { OFFSET } from '@/utils/constants'; diff --git a/src/app/loading.tsx b/src/app/loading.tsx index d92a3834f..cf32411b8 100644 --- a/src/app/loading.tsx +++ b/src/app/loading.tsx @@ -1,4 +1,4 @@ -import { Loader } from '@/components'; +import { Loader } from '@/components/loader/Loader'; export default function Loading() { return ; diff --git a/src/app/login/EmailForm.tsx b/src/app/login/EmailForm.tsx index fec58f02a..9b15bba80 100644 --- a/src/app/login/EmailForm.tsx +++ b/src/app/login/EmailForm.tsx @@ -7,7 +7,10 @@ import { AtSign } from 'lucide-react'; import { signIn } from 'next-auth/react'; import { useForm } from 'react-hook-form'; -import { Button, Field, Input, successToast } from '@/components'; +import { Button } from '@/components/button/Button'; +import { Field } from '@/components/field/Field'; +import { Input } from '@/components/input/Input'; +import { successToast } from '@/components/toast/Toast'; import { userEmailSchema } from '@/lib/validations'; import type { SubmitHandler } from 'react-hook-form'; diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index fac64d106..591d920df 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -3,7 +3,7 @@ import Link from 'next/link'; import { signInAction } from '@/actions'; import googleIcon from '@/assets/google.svg'; -import { Button } from '@/components'; +import { Button } from '@/components/button/Button'; import { Routes } from '@/utils/routing'; import EmailForm from './EmailForm'; diff --git a/src/app/profile/profile.tsx b/src/app/profile/profile.tsx index 56136850f..7ab230049 100644 --- a/src/app/profile/profile.tsx +++ b/src/app/profile/profile.tsx @@ -1,6 +1,11 @@ 'use client'; -import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components'; +import { + Tabs, + TabsContent, + TabsList, + TabsTrigger, +} from '@/components/tabs/Tabs'; import { UserAnswers } from '@/modules/profile/Answers'; import { UserFavorites } from '@/modules/profile/Favorites'; import { UserQuestions } from '@/modules/profile/Questions'; diff --git a/src/app/providers.tsx b/src/app/providers.tsx index 69e8949c7..c4069988a 100644 --- a/src/app/providers.tsx +++ b/src/app/providers.tsx @@ -7,7 +7,7 @@ import { SessionProvider } from 'next-auth/react'; import { ThemeProvider } from 'next-themes'; import { Toaster } from 'sonner'; -import { TooltipProvider } from '@/components'; +import { TooltipProvider } from '@/components/tooltip/Tooltip'; const merriweather = Merriweather({ subsets: ['latin'], diff --git a/src/app/question/[id]/question.tsx b/src/app/question/[id]/question.tsx index a4a9daf9d..c9b1e97b0 100644 --- a/src/app/question/[id]/question.tsx +++ b/src/app/question/[id]/question.tsx @@ -7,6 +7,7 @@ import { LinkIcon, Bookmark, BookmarkCheck, + Badge, } from 'lucide-react'; import dynamic from 'next/dynamic'; import Link from 'next/link'; @@ -18,18 +19,19 @@ import { createFavoriteSchema, deleteFavorite, } from '@/actions'; +import { BackButton } from '@/components/button/BackButton'; import { - BackButton, - Badge, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, +} from '@/components/dropdown/Dropdown'; +import { resultToast } from '@/components/toast/Toast'; +import { Tooltip, TooltipContent, TooltipTrigger, - resultToast, -} from '@/components'; +} from '@/components/tooltip/Tooltip'; import { dateOptions } from '@/utils/date'; import { Routes } from '@/utils/routing'; diff --git a/src/app/question/answer/answer.tsx b/src/app/question/answer/answer.tsx index a31fa5fe7..aebef3e50 100644 --- a/src/app/question/answer/answer.tsx +++ b/src/app/question/answer/answer.tsx @@ -3,10 +3,13 @@ import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; +import Editor from '@uiw/react-md-editor'; import { Controller, useForm } from 'react-hook-form'; import { createAnswer, updateAnswer } from '@/actions'; -import { BackButton, Button, Editor, resultToast } from '@/components'; +import { BackButton } from '@/components/button/BackButton'; +import { Button } from '@/components/button/Button'; +import { resultToast } from '@/components/toast/Toast'; import { answerSchema } from '@/lib/validations'; import { PageChangeAlert } from '@/modules/navigation/PageChange'; import { Limits } from '@/utils/limits'; diff --git a/src/app/question/edit/edit.tsx b/src/app/question/edit/edit.tsx index 16604088c..5e9a2cc65 100644 --- a/src/app/question/edit/edit.tsx +++ b/src/app/question/edit/edit.tsx @@ -7,7 +7,11 @@ import { HelpCircle } from 'lucide-react'; import { useForm } from 'react-hook-form'; import { updateNode, updateNodeSchema } from '@/actions'; -import { BackButton, Button, Field, Input, resultToast } from '@/components'; +import { BackButton } from '@/components/button/BackButton'; +import { Button } from '@/components/button/Button'; +import { Field } from '@/components/field/Field'; +import { Input } from '@/components/input/Input'; +import { resultToast } from '@/components/toast/Toast'; import { useMediaQuery } from '@/hooks/useMediaQuery'; import { PageChangeAlert } from '@/modules/navigation/PageChange'; import { TagsList } from '@/modules/question/TagsList'; diff --git a/src/app/question/new/new.tsx b/src/app/question/new/new.tsx index bda22abaf..84bb1681c 100644 --- a/src/app/question/new/new.tsx +++ b/src/app/question/new/new.tsx @@ -7,7 +7,11 @@ import { HelpCircle, MoveRight } from 'lucide-react'; import { useForm } from 'react-hook-form'; import { createNode, createNodeSchema } from '@/actions'; -import { BackButton, Button, Field, Input, resultToast } from '@/components'; +import { BackButton } from '@/components/button/BackButton'; +import { Button } from '@/components/button/Button'; +import { Field } from '@/components/field/Field'; +import { Input } from '@/components/input/Input'; +import { resultToast } from '@/components/toast/Toast'; import { useMediaQuery } from '@/hooks/useMediaQuery'; import { useWarnIfUnsavedChanges } from '@/hooks/useWarnIfUnsavedChanges'; import { PageChangeAlert } from '@/modules/navigation/PageChange'; diff --git a/src/app/register/confirm/form.tsx b/src/app/register/confirm/form.tsx index 34145ec0a..559aee517 100644 --- a/src/app/register/confirm/form.tsx +++ b/src/app/register/confirm/form.tsx @@ -9,7 +9,8 @@ import { useRouter } from 'next/navigation'; import { useForm } from 'react-hook-form'; import { createTenant, createTenantSchema } from '@/actions'; -import { Button, resultToast } from '@/components'; +import { Button } from '@/components/button/Button'; +import { resultToast } from '@/components/toast/Toast'; import { registerAtom } from '@/store'; import { Routes } from '@/utils/routing'; diff --git a/src/app/register/form.tsx b/src/app/register/form.tsx index b530b96c9..9f5db69e2 100644 --- a/src/app/register/form.tsx +++ b/src/app/register/form.tsx @@ -8,7 +8,9 @@ import { useRouter } from 'next/navigation'; import { useForm } from 'react-hook-form'; import { createTenantCompanySchema } from '@/actions'; -import { Button, Field, Input } from '@/components'; +import { Button } from '@/components/button/Button'; +import { Field } from '@/components/field/Field'; +import { Input } from '@/components/input/Input'; import { registerAtom } from '@/store'; import { Routes } from '@/utils/routing'; diff --git a/src/app/register/plan/form.tsx b/src/app/register/plan/form.tsx index 6ad97660d..510ed7e3c 100644 --- a/src/app/register/plan/form.tsx +++ b/src/app/register/plan/form.tsx @@ -8,7 +8,8 @@ import { Check, Minus, MoveRight, Wallet } from 'lucide-react'; import { useParams, useRouter } from 'next/navigation'; import { useForm } from 'react-hook-form'; -import { Button, errorToast, successToast } from '@/components'; +import { Button } from '@/components/button/Button'; +import { errorToast, successToast } from '@/components/toast/Toast'; import { registerAtom } from '@/store'; import { Routes } from '@/utils/routing'; import { getStripe } from '@/utils/stripe'; diff --git a/src/app/register/user/form.tsx b/src/app/register/user/form.tsx index ca500b013..a9c9c5e81 100644 --- a/src/app/register/user/form.tsx +++ b/src/app/register/user/form.tsx @@ -8,7 +8,9 @@ import { useRouter } from 'next/navigation'; import { useForm } from 'react-hook-form'; import { createTenantUserSchema } from '@/actions'; -import { Button, Field, Input } from '@/components'; +import { Button } from '@/components/button/Button'; +import { Field } from '@/components/field/Field'; +import { Input } from '@/components/input/Input'; import { registerAtom } from '@/store'; import { Routes } from '@/utils/routing'; diff --git a/src/app/settings/loading.tsx b/src/app/settings/loading.tsx index d92a3834f..cf32411b8 100644 --- a/src/app/settings/loading.tsx +++ b/src/app/settings/loading.tsx @@ -1,4 +1,4 @@ -import { Loader } from '@/components'; +import { Loader } from '@/components/loader/Loader'; export default function Loading() { return ; diff --git a/src/app/settings/settings.tsx b/src/app/settings/settings.tsx index 61745a4df..e8a8078f3 100644 --- a/src/app/settings/settings.tsx +++ b/src/app/settings/settings.tsx @@ -1,4 +1,9 @@ -import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components'; +import { + Tabs, + TabsContent, + TabsList, + TabsTrigger, +} from '@/components/tabs/Tabs'; import { General } from '@/modules/settings/general/General'; import { Payment } from '@/modules/settings/payment/Payment'; import { Tags } from '@/modules/settings/tags/Tags'; diff --git a/src/components/alert/index.ts b/src/components/alert/index.ts deleted file mode 100644 index 79e3b155f..000000000 --- a/src/components/alert/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Alert'; diff --git a/src/components/avatar/index.ts b/src/components/avatar/index.ts deleted file mode 100644 index 27700fe3f..000000000 --- a/src/components/avatar/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Avatar'; diff --git a/src/components/badge/index.ts b/src/components/badge/index.ts deleted file mode 100644 index 9c8edca28..000000000 --- a/src/components/badge/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Badge'; diff --git a/src/components/button/index.ts b/src/components/button/index.ts deleted file mode 100644 index da6bcc761..000000000 --- a/src/components/button/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './Button'; -export * from './BackButton'; diff --git a/src/components/dialog/index.ts b/src/components/dialog/index.ts deleted file mode 100644 index a5d315972..000000000 --- a/src/components/dialog/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Dialog'; diff --git a/src/components/drawer/index.ts b/src/components/drawer/index.ts deleted file mode 100644 index 0529d6460..000000000 --- a/src/components/drawer/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Drawer'; diff --git a/src/components/dropdown/index.ts b/src/components/dropdown/index.ts deleted file mode 100644 index 2f29bad4e..000000000 --- a/src/components/dropdown/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Dropdown'; diff --git a/src/components/editor/index.ts b/src/components/editor/index.ts deleted file mode 100644 index 8b7c4c267..000000000 --- a/src/components/editor/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Editor'; diff --git a/src/components/emails/index.ts b/src/components/emails/index.ts deleted file mode 100644 index 95fd743ad..000000000 --- a/src/components/emails/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './Register'; -export * from './NewUser'; diff --git a/src/components/field/index.ts b/src/components/field/index.ts deleted file mode 100644 index deacb7827..000000000 --- a/src/components/field/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Field'; diff --git a/src/components/index.ts b/src/components/index.ts deleted file mode 100644 index 251b14dee..000000000 --- a/src/components/index.ts +++ /dev/null @@ -1,20 +0,0 @@ -export * from './alert'; -export * from './avatar'; -export * from './badge'; -export * from './button'; -export * from './dialog'; -export * from './drawer'; -export * from './dropdown'; -export * from './editor'; -export * from './emails'; -export * from './field'; -export * from './input'; -export * from './label'; -export * from './loader'; -export * from './pagination'; -export * from './popover'; -export * from './select'; -export * from './stepper'; -export * from './tabs'; -export * from './toast'; -export * from './tooltip'; diff --git a/src/components/input/index.ts b/src/components/input/index.ts deleted file mode 100644 index ba9fe7ebc..000000000 --- a/src/components/input/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Input'; diff --git a/src/components/label/index.ts b/src/components/label/index.ts deleted file mode 100644 index ca58c61a2..000000000 --- a/src/components/label/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Label'; diff --git a/src/components/loader/index.ts b/src/components/loader/index.ts deleted file mode 100644 index d5ce98115..000000000 --- a/src/components/loader/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Loader'; diff --git a/src/components/pagination/index.ts b/src/components/pagination/index.ts deleted file mode 100644 index e016c96b7..000000000 --- a/src/components/pagination/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Pagination'; diff --git a/src/components/popover/index.ts b/src/components/popover/index.ts deleted file mode 100644 index 8f473de4b..000000000 --- a/src/components/popover/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Popover'; diff --git a/src/components/select/index.ts b/src/components/select/index.ts deleted file mode 100644 index 7868ecbae..000000000 --- a/src/components/select/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Select'; diff --git a/src/components/stepper/index.ts b/src/components/stepper/index.ts deleted file mode 100644 index 43e65a4b9..000000000 --- a/src/components/stepper/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Stepper'; diff --git a/src/components/tabs/index.ts b/src/components/tabs/index.ts deleted file mode 100644 index 856dbbb34..000000000 --- a/src/components/tabs/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Tabs'; diff --git a/src/components/toast/index.ts b/src/components/toast/index.ts deleted file mode 100644 index 1b794ee78..000000000 --- a/src/components/toast/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Toast'; diff --git a/src/components/tooltip/index.ts b/src/components/tooltip/index.ts deleted file mode 100644 index 7594a8f06..000000000 --- a/src/components/tooltip/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Tooltip'; diff --git a/src/lib/SuspenseWrapper.tsx b/src/lib/SuspenseWrapper.tsx index 2ff3878ea..5472a9a50 100644 --- a/src/lib/SuspenseWrapper.tsx +++ b/src/lib/SuspenseWrapper.tsx @@ -1,9 +1,7 @@ import type { ReactNode } from 'react'; import { Suspense } from 'react'; -import { Loader } from '@/components'; - -import type { LoaderProps } from '@/components'; +import { Loader, LoaderProps } from '@/components/loader/Loader'; type Props = { children: ReactNode; diff --git a/src/modules/header/Header.tsx b/src/modules/header/Header.tsx index 5f231e0ec..f966f8883 100644 --- a/src/modules/header/Header.tsx +++ b/src/modules/header/Header.tsx @@ -12,21 +12,26 @@ import { Avatar, AvatarFallback, AvatarImage, - Button, - Drawer, - DrawerContent, +} from '@/components/avatar/Avatar'; +import { Button } from '@/components/button/Button'; +import { DrawerTrigger, + DrawerContent, + Drawer, +} from '@/components/drawer/Drawer'; +import { Tooltip, TooltipContent, TooltipTrigger, -} from '@/components'; +} from '@/components/tooltip/Tooltip'; import { userAtom } from '@/store'; import { Routes } from '@/utils/routing'; -import { ThemeToggle } from '../theme'; +import { ThemeToggle } from '../theme/ThemeToggle'; import type { Me } from '@/types'; + type Props = { user: Me; }; diff --git a/src/modules/home/Question.tsx b/src/modules/home/Question.tsx index 54913a8b5..a0449e2a5 100644 --- a/src/modules/home/Question.tsx +++ b/src/modules/home/Question.tsx @@ -3,6 +3,7 @@ import { zodResolver } from '@hookform/resolvers/zod'; import { useAtomValue } from 'jotai'; import { + Badge, BadgeCheck, BadgeHelp, BadgeInfo, @@ -21,14 +22,13 @@ import { deleteFavorite, deletePin, } from '@/actions'; +import { Button } from '@/components/button/Button'; +import { resultToast } from '@/components/toast/Toast'; import { - Badge, - Button, Tooltip, TooltipContent, TooltipTrigger, - resultToast, -} from '@/components'; +} from '@/components/tooltip/Tooltip'; import { favoriteSchema, pinSchema } from '@/lib/validations'; import { userAtom } from '@/store'; import { dateOptions, timeOptions } from '@/utils/date'; @@ -44,6 +44,7 @@ import type { ExtendedFavorites, ExtendedNode } from '@/types'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; + const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { ssr: false, }); diff --git a/src/modules/profile/Update.tsx b/src/modules/profile/Update.tsx index d164e45f7..d42e19f6a 100644 --- a/src/modules/profile/Update.tsx +++ b/src/modules/profile/Update.tsx @@ -8,16 +8,20 @@ import Image from 'next/image'; import { useForm } from 'react-hook-form'; import { updateUser, updateUserSchema } from '@/actions'; -import { Button, Field, Input, resultToast } from '@/components'; +import { Button } from '@/components/button/Button'; +import { Field } from '@/components/field/Field'; +import { Input } from '@/components/input/Input'; +import { resultToast } from '@/components/toast/Toast'; import { useMediaQuery } from '@/hooks/useMediaQuery'; import { Limits } from '@/utils/limits'; -import { PageChangeAlert } from '../navigation'; +import { PageChangeAlert } from '../navigation/PageChange'; import type { IUserUpdateFields, Me } from '@/types'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; + type Props = { me: Me; }; diff --git a/src/modules/question/TagsList.tsx b/src/modules/question/TagsList.tsx index 21f2c5e0a..c64e1295e 100644 --- a/src/modules/question/TagsList.tsx +++ b/src/modules/question/TagsList.tsx @@ -2,7 +2,7 @@ import type { Dispatch, SetStateAction } from 'react'; -import { Button } from '@/components'; +import { Button } from '@/components/button/Button'; import type { Tag } from '@prisma/client'; diff --git a/src/modules/search/Search.tsx b/src/modules/search/Search.tsx index 8e319feea..f7b84be4d 100644 --- a/src/modules/search/Search.tsx +++ b/src/modules/search/Search.tsx @@ -11,9 +11,9 @@ import { DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, - Input, - Label, -} from '@/components'; +} from '@/components/dropdown/Dropdown'; +import { Input } from '@/components/input/Input'; +import { Label } from '@/components/label/Label'; import type { Tag } from '@prisma/client'; diff --git a/src/modules/settings/general/Company.tsx b/src/modules/settings/general/Company.tsx index 7a77f40b7..60e48fc0e 100644 --- a/src/modules/settings/general/Company.tsx +++ b/src/modules/settings/general/Company.tsx @@ -6,7 +6,10 @@ import { zodResolver } from '@hookform/resolvers/zod'; import { useForm } from 'react-hook-form'; import { updateTenant, updateTenantSchema } from '@/actions'; -import { Button, Field, Input, resultToast } from '@/components'; +import { Button } from '@/components/button/Button'; +import { Field } from '@/components/field/Field'; +import { Input } from '@/components/input/Input'; +import { resultToast } from '@/components/toast/Toast'; import { PageChangeAlert } from '@/modules/navigation/PageChange'; import { Limits } from '@/utils/limits'; diff --git a/src/modules/settings/general/Files.tsx b/src/modules/settings/general/Files.tsx index becc19b7f..4700b89d9 100644 --- a/src/modules/settings/general/Files.tsx +++ b/src/modules/settings/general/Files.tsx @@ -9,7 +9,8 @@ import { DropzoneOptions, useDropzone } from 'react-dropzone'; import { useForm } from 'react-hook-form'; import { submitImage, updateLogo, updateLogoSchema } from '@/actions'; -import { Button, resultToast } from '@/components'; +import { Button } from '@/components/button/Button'; +import { resultToast } from '@/components/toast/Toast'; import { filesSchema } from '@/lib/validations'; import { MAX_FILE_SIZE } from '@/utils/constants'; diff --git a/src/modules/settings/payment/Billing.tsx b/src/modules/settings/payment/Billing.tsx index 5b73b8597..20842080e 100644 --- a/src/modules/settings/payment/Billing.tsx +++ b/src/modules/settings/payment/Billing.tsx @@ -3,7 +3,8 @@ import { Banknote } from 'lucide-react'; import { useForm } from 'react-hook-form'; -import { Button, errorToast } from '@/components'; +import { Button } from '@/components/button/Button'; +import { errorToast } from '@/components/toast/Toast'; import { Routes } from '@/utils/routing'; type Props = { diff --git a/src/modules/settings/payment/Delete.tsx b/src/modules/settings/payment/Delete.tsx index bb427dfef..93ea13d48 100644 --- a/src/modules/settings/payment/Delete.tsx +++ b/src/modules/settings/payment/Delete.tsx @@ -7,8 +7,8 @@ import { Flame } from 'lucide-react'; import { useForm } from 'react-hook-form'; import { deleteTenant, deleteTenantSchema } from '@/actions'; +import { Button } from '@/components/button/Button'; import { - Button, Dialog, DialogClose, DialogContent, @@ -16,8 +16,8 @@ import { DialogHeader, DialogTitle, DialogTrigger, - Input, -} from '@/components'; +} from '@/components/dialog/Dialog'; +import { Input } from '@/components/input/Input'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; diff --git a/src/modules/settings/tags/Create.tsx b/src/modules/settings/tags/Create.tsx index 56aee5e39..67b14bbc5 100644 --- a/src/modules/settings/tags/Create.tsx +++ b/src/modules/settings/tags/Create.tsx @@ -5,28 +5,31 @@ import { Tag as TagIcon } from 'lucide-react'; import { useForm } from 'react-hook-form'; import { createTag, createTagSchema } from '@/actions'; +import { Button } from '@/components/button/Button'; import { - Button, Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger, - Drawer, +} from '@/components/dialog/Dialog'; +import { + DrawerTrigger, DrawerContent, DrawerHeader, DrawerTitle, - DrawerTrigger, - Field, - Input, - resultToast, -} from '@/components'; + Drawer, +} from '@/components/drawer/Drawer'; +import { Field } from '@/components/field/Field'; +import { Input } from '@/components/input/Input'; +import { resultToast } from '@/components/toast/Toast'; import { useMediaQuery } from '@/hooks/useMediaQuery'; import type { $Enums } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; + type Props = { tenantId: string; plan: $Enums.Plan; diff --git a/src/modules/settings/tags/Tags.tsx b/src/modules/settings/tags/Tags.tsx index 9916611c2..d57ccf995 100644 --- a/src/modules/settings/tags/Tags.tsx +++ b/src/modules/settings/tags/Tags.tsx @@ -8,17 +8,17 @@ import { SubmitHandler, useForm } from 'react-hook-form'; import { z } from 'zod'; import { deleteTag, updateTag, updateTagSchema } from '@/actions'; +import { Button } from '@/components/button/Button'; import { - Button, Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger, - Field, - Input, - resultToast, -} from '@/components'; +} from '@/components/dialog/Dialog'; +import { Field } from '@/components/field/Field'; +import { Input } from '@/components/input/Input'; +import { resultToast } from '@/components/toast/Toast'; import { CreateTag } from './Create'; diff --git a/src/modules/settings/users/Create.tsx b/src/modules/settings/users/Create.tsx index 08b618b87..a5562e350 100644 --- a/src/modules/settings/users/Create.tsx +++ b/src/modules/settings/users/Create.tsx @@ -8,28 +8,32 @@ import { AtSign, Mail } from 'lucide-react'; import { Controller, useForm } from 'react-hook-form'; import { createUser, createUserSchema } from '@/actions'; +import { Button } from '@/components/button/Button'; import { - Button, Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger, +} from '@/components/dialog/Dialog'; +import { Drawer, DrawerContent, DrawerHeader, DrawerTitle, DrawerTrigger, - Field, - Input, - Label, +} from '@/components/drawer/Drawer'; +import { Field } from '@/components/field/Field'; +import { Input } from '@/components/input/Input'; +import { Label } from '@/components/label/Label'; +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, - resultToast, -} from '@/components'; +} from '@/components/select/Select'; +import { resultToast } from '@/components/toast/Toast'; import { useMediaQuery } from '@/hooks/useMediaQuery'; import { Limits } from '@/utils/limits'; diff --git a/src/modules/settings/users/FileInput.tsx b/src/modules/settings/users/FileInput.tsx index 0dfaf5b0a..086cffb67 100644 --- a/src/modules/settings/users/FileInput.tsx +++ b/src/modules/settings/users/FileInput.tsx @@ -8,22 +8,24 @@ import { useForm } from 'react-hook-form'; import { usePapaParse } from 'react-papaparse'; import { createUsers } from '@/actions'; +import { Button } from '@/components/button/Button'; import { - Button, Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, +} from '@/components/dialog/Dialog'; +import { Drawer, DrawerContent, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger, - Input, -} from '@/components'; +} from '@/components/drawer/Drawer'; +import { Input } from '@/components/input/Input'; import { useMediaQuery } from '@/hooks/useMediaQuery'; import { csvUploadSchema } from '@/lib/validations'; @@ -31,6 +33,7 @@ import type { $Enums, User } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; + type Props = { tenantId: string; users: User[]; diff --git a/src/modules/settings/users/Update.tsx b/src/modules/settings/users/Update.tsx index 505efbf03..31f05271e 100644 --- a/src/modules/settings/users/Update.tsx +++ b/src/modules/settings/users/Update.tsx @@ -7,33 +7,38 @@ import { AtSign, UserIcon } from 'lucide-react'; import { Controller, useForm } from 'react-hook-form'; import { updateUser, updateUserSchema } from '@/actions'; +import { Button } from '@/components/button/Button'; import { - Button, Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger, +} from '@/components/dialog/Dialog'; +import { Drawer, DrawerContent, DrawerHeader, DrawerTitle, DrawerTrigger, - Field, - Input, - Label, +} from '@/components/drawer/Drawer'; +import { Field } from '@/components/field/Field'; +import { Input } from '@/components/input/Input'; +import { Label } from '@/components/label/Label'; +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, -} from '@/components'; +} from '@/components/select/Select'; import { useMediaQuery } from '@/hooks/useMediaQuery'; import type { User } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; + type Props = { user: User; tenantId: string; diff --git a/src/modules/settings/users/Users.tsx b/src/modules/settings/users/Users.tsx index c6cf1eb7e..41c939050 100644 --- a/src/modules/settings/users/Users.tsx +++ b/src/modules/settings/users/Users.tsx @@ -5,9 +5,9 @@ import { Avatar, AvatarFallback, AvatarImage, - Button, - resultToast, -} from '@/components'; +} from '@/components/avatar/Avatar'; +import { Button } from '@/components/button/Button'; +import { resultToast } from '@/components/toast/Toast'; import { CreateUser } from './Create'; import { FileInput } from './FileInput'; diff --git a/src/modules/theme/ThemeToggle.tsx b/src/modules/theme/ThemeToggle.tsx index 55aec0b9f..ea6f39064 100644 --- a/src/modules/theme/ThemeToggle.tsx +++ b/src/modules/theme/ThemeToggle.tsx @@ -5,13 +5,13 @@ import { useEffect } from 'react'; import { SunIcon, MoonIcon } from 'lucide-react'; import { useTheme } from 'next-themes'; +import { Button } from '@/components/button/Button'; import { - Button, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, -} from '@/components'; +} from '@/components/dropdown/Dropdown'; export const ThemeToggle = () => { const { theme, setTheme } = useTheme(); From 2a547e5b63284d51dfc96392ab5fae964c096353 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Fri, 8 Nov 2024 20:19:18 +0100 Subject: [PATCH 318/326] :art: remove types barrel file --- src/actions/get-favorites/index.ts | 3 +-- src/actions/get-me/index.ts | 2 +- src/actions/get-node/index.ts | 3 +-- src/actions/get-nodes/index.ts | 3 +-- src/actions/get-search-nodes/index.ts | 3 +-- src/actions/get-search-tags/index.ts | 3 +-- src/actions/get-user-answers/index.ts | 3 +-- src/actions/get-user-questions/index.ts | 3 +-- src/app/api/stripe/webhooks/route.ts | 3 +-- src/app/home.tsx | 2 +- src/app/profile/profile.tsx | 11 +++++------ src/app/question/[id]/question.tsx | 2 +- src/app/question/answer/answer.tsx | 2 +- src/app/question/edit/edit.tsx | 3 ++- src/app/question/new/new.tsx | 2 +- src/app/register/form.tsx | 2 +- src/app/register/plan/form.tsx | 3 +-- src/app/settings/settings.tsx | 2 +- src/components/stepper/Stepper.tsx | 2 +- src/modules/header/Header.tsx | 4 +--- src/modules/home/List.tsx | 4 ++-- src/modules/home/Question.tsx | 3 +-- src/modules/profile/Answers.tsx | 3 +-- src/modules/profile/Favorites.tsx | 3 +-- src/modules/profile/Questions.tsx | 3 +-- src/modules/profile/Update.tsx | 4 ++-- src/modules/settings/general/Company.tsx | 2 +- src/store/index.ts | 2 +- src/types/index.ts | 2 -- src/types/models/index.ts | 2 -- 30 files changed, 35 insertions(+), 54 deletions(-) delete mode 100644 src/types/index.ts delete mode 100644 src/types/models/index.ts diff --git a/src/actions/get-favorites/index.ts b/src/actions/get-favorites/index.ts index d0b55e229..a7737a1f0 100644 --- a/src/actions/get-favorites/index.ts +++ b/src/actions/get-favorites/index.ts @@ -1,9 +1,8 @@ import { cache } from 'react'; +import { ExtendedFavorites } from '@/types/models/node'; import prisma from 'lib/prisma'; -import type { ExtendedFavorites } from '@/types'; - export const getFavorites = cache( async (userId: string): Promise => { try { diff --git a/src/actions/get-me/index.ts b/src/actions/get-me/index.ts index 2462bdfcd..d2ad0c1ae 100644 --- a/src/actions/get-me/index.ts +++ b/src/actions/get-me/index.ts @@ -5,10 +5,10 @@ import { cache } from 'react'; import { redirect } from 'next/navigation'; import { auth } from '@/auth'; +import { Me } from '@/types/models/user'; import { Routes } from '@/utils/routing'; import prisma from 'lib/prisma'; -import type { Me } from '@/types'; import type { Session } from 'next-auth'; export const getMe = cache(async (): Promise => { diff --git a/src/actions/get-node/index.ts b/src/actions/get-node/index.ts index 557730f27..f8d752161 100644 --- a/src/actions/get-node/index.ts +++ b/src/actions/get-node/index.ts @@ -2,12 +2,11 @@ import { cache } from 'react'; import { redirect } from 'next/navigation'; +import { ExtendedNode } from '@/types/models/node'; import { nodeModel } from '@/utils/models'; import { Routes } from '@/utils/routing'; import prisma from 'lib/prisma'; -import type { ExtendedNode } from '@/types'; - export const getNode = cache( async (tenantId, id: string): Promise => { try { diff --git a/src/actions/get-nodes/index.ts b/src/actions/get-nodes/index.ts index 70aa6d4d2..8ecc8b363 100644 --- a/src/actions/get-nodes/index.ts +++ b/src/actions/get-nodes/index.ts @@ -1,13 +1,12 @@ import { cache } from 'react'; +import { ExtendedNode } from '@/types/models/node'; import { OFFSET } from '@/utils/constants'; import { nodeModel } from '@/utils/models'; import prisma from 'lib/prisma'; import { getNodesSchema } from './schema'; -import type { ExtendedNode } from '@/types'; - type Props = { tenantId: string; page: number; diff --git a/src/actions/get-search-nodes/index.ts b/src/actions/get-search-nodes/index.ts index eeaf126c9..653c3d942 100644 --- a/src/actions/get-search-nodes/index.ts +++ b/src/actions/get-search-nodes/index.ts @@ -1,12 +1,11 @@ import { cache } from 'react'; +import { ExtendedNode } from '@/types/models/node'; import { nodeModel } from '@/utils/models'; import prisma from 'lib/prisma'; import { getSearchSchema } from './schema'; -import type { ExtendedNode } from '@/types'; - export const getSearchNodes = cache( async (tenantId, query): Promise => { try { diff --git a/src/actions/get-search-tags/index.ts b/src/actions/get-search-tags/index.ts index e7f0a7058..651c2225c 100644 --- a/src/actions/get-search-tags/index.ts +++ b/src/actions/get-search-tags/index.ts @@ -1,12 +1,11 @@ import { cache } from 'react'; +import { ExtendedNode } from '@/types/models/node'; import { nodeModel } from '@/utils/models'; import prisma from 'lib/prisma'; import { getTagSearchSchema } from './schema'; -import type { ExtendedNode } from '@/types'; - export const getSearchTags = cache( async (tenantId, tag): Promise => { try { diff --git a/src/actions/get-user-answers/index.ts b/src/actions/get-user-answers/index.ts index 1933088a1..3a9565989 100644 --- a/src/actions/get-user-answers/index.ts +++ b/src/actions/get-user-answers/index.ts @@ -1,9 +1,8 @@ import { cache } from 'react'; +import { NodeWithQuestionAndAnswer } from '@/types/models/node'; import prisma from 'lib/prisma'; -import type { NodeWithQuestionAndAnswer } from '@/types'; - export const getUserAnswers = cache( async (userId: string): Promise => { try { diff --git a/src/actions/get-user-questions/index.ts b/src/actions/get-user-questions/index.ts index 2a3184567..c8564df08 100644 --- a/src/actions/get-user-questions/index.ts +++ b/src/actions/get-user-questions/index.ts @@ -1,9 +1,8 @@ import { cache } from 'react'; +import { QuestionWithNodeId } from '@/types/models/node'; import prisma from 'lib/prisma'; -import type { QuestionWithNodeId } from '@/types'; - export const getUserQuestions = cache( async (userId: string): Promise => { try { diff --git a/src/app/api/stripe/webhooks/route.ts b/src/app/api/stripe/webhooks/route.ts index 2a4a4feeb..a037b8cf5 100644 --- a/src/app/api/stripe/webhooks/route.ts +++ b/src/app/api/stripe/webhooks/route.ts @@ -4,11 +4,10 @@ import { headers } from 'next/headers'; import { NextRequest, NextResponse } from 'next/server'; import { Stripe } from 'stripe'; +import { IPlan } from '@/types/global'; import { STRIPE_VERSION } from '@/utils/constants'; import prisma from 'lib/prisma'; -import type { IPlan } from '@/types'; - const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { apiVersion: STRIPE_VERSION, }); diff --git a/src/app/home.tsx b/src/app/home.tsx index f8679c541..17342b9d7 100644 --- a/src/app/home.tsx +++ b/src/app/home.tsx @@ -5,9 +5,9 @@ import { useSearchParams } from 'next/navigation'; import { Pagination } from '@/components/pagination/Pagination'; import { List } from '@/modules/home/List'; import { Search } from '@/modules/search/Search'; +import { ExtendedNode, ExtendedFavorites } from '@/types/models/node'; import { OFFSET } from '@/utils/constants'; -import type { ExtendedFavorites, ExtendedNode } from '@/types'; import type { Tag } from '@prisma/client'; type Props = { diff --git a/src/app/profile/profile.tsx b/src/app/profile/profile.tsx index 7ab230049..6916d62b3 100644 --- a/src/app/profile/profile.tsx +++ b/src/app/profile/profile.tsx @@ -10,13 +10,12 @@ import { UserAnswers } from '@/modules/profile/Answers'; import { UserFavorites } from '@/modules/profile/Favorites'; import { UserQuestions } from '@/modules/profile/Questions'; import { UpdateProfile } from '@/modules/profile/Update'; - -import type { - ExtendedFavorites, - Me, - NodeWithQuestionAndAnswer, +import { QuestionWithNodeId, -} from '@/types'; + NodeWithQuestionAndAnswer, + ExtendedFavorites, +} from '@/types/models/node'; +import { Me } from '@/types/models/user'; type Props = { me: Me; diff --git a/src/app/question/[id]/question.tsx b/src/app/question/[id]/question.tsx index c9b1e97b0..bbd0a8279 100644 --- a/src/app/question/[id]/question.tsx +++ b/src/app/question/[id]/question.tsx @@ -32,10 +32,10 @@ import { TooltipContent, TooltipTrigger, } from '@/components/tooltip/Tooltip'; +import { ExtendedNode } from '@/types/models/node'; import { dateOptions } from '@/utils/date'; import { Routes } from '@/utils/routing'; -import type { ExtendedNode } from '@/types'; import type { Favorite } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; diff --git a/src/app/question/answer/answer.tsx b/src/app/question/answer/answer.tsx index aebef3e50..ba6407177 100644 --- a/src/app/question/answer/answer.tsx +++ b/src/app/question/answer/answer.tsx @@ -12,10 +12,10 @@ import { Button } from '@/components/button/Button'; import { resultToast } from '@/components/toast/Toast'; import { answerSchema } from '@/lib/validations'; import { PageChangeAlert } from '@/modules/navigation/PageChange'; +import { ExtendedNode } from '@/types/models/node'; import { Limits } from '@/utils/limits'; import type { createAnswerSchema, updateAnswerSchema } from '@/actions'; -import type { ExtendedNode } from '@/types'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; diff --git a/src/app/question/edit/edit.tsx b/src/app/question/edit/edit.tsx index 5e9a2cc65..59209e285 100644 --- a/src/app/question/edit/edit.tsx +++ b/src/app/question/edit/edit.tsx @@ -15,10 +15,11 @@ import { resultToast } from '@/components/toast/Toast'; import { useMediaQuery } from '@/hooks/useMediaQuery'; import { PageChangeAlert } from '@/modules/navigation/PageChange'; import { TagsList } from '@/modules/question/TagsList'; +import { ExtendedNode } from '@/types/models/node'; +import { Me } from '@/types/models/user'; import { arraysAreEqual } from '@/utils/functions'; import { Limits } from '@/utils/limits'; -import type { ExtendedNode, Me } from '@/types'; import type { Tag } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; diff --git a/src/app/question/new/new.tsx b/src/app/question/new/new.tsx index 84bb1681c..e665b4aaf 100644 --- a/src/app/question/new/new.tsx +++ b/src/app/question/new/new.tsx @@ -16,9 +16,9 @@ import { useMediaQuery } from '@/hooks/useMediaQuery'; import { useWarnIfUnsavedChanges } from '@/hooks/useWarnIfUnsavedChanges'; import { PageChangeAlert } from '@/modules/navigation/PageChange'; import { TagsList } from '@/modules/question/TagsList'; +import { Me } from '@/types/models/user'; import { Limits } from '@/utils/limits'; -import type { Me } from '@/types'; import type { Integrations, Tag } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; diff --git a/src/app/register/form.tsx b/src/app/register/form.tsx index 9f5db69e2..d10d245a2 100644 --- a/src/app/register/form.tsx +++ b/src/app/register/form.tsx @@ -12,9 +12,9 @@ import { Button } from '@/components/button/Button'; import { Field } from '@/components/field/Field'; import { Input } from '@/components/input/Input'; import { registerAtom } from '@/store'; +import { ITenantCreateFields } from '@/types/global'; import { Routes } from '@/utils/routing'; -import type { ITenantCreateFields } from '@/types'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; diff --git a/src/app/register/plan/form.tsx b/src/app/register/plan/form.tsx index 510ed7e3c..426c24fea 100644 --- a/src/app/register/plan/form.tsx +++ b/src/app/register/plan/form.tsx @@ -11,11 +11,10 @@ import { useForm } from 'react-hook-form'; import { Button } from '@/components/button/Button'; import { errorToast, successToast } from '@/components/toast/Toast'; import { registerAtom } from '@/store'; +import { IPlan } from '@/types/global'; import { Routes } from '@/utils/routing'; import { getStripe } from '@/utils/stripe'; -import type { IPlan } from '@/types'; - export default function Form() { const [state, setState] = useAtom(registerAtom); diff --git a/src/app/settings/settings.tsx b/src/app/settings/settings.tsx index e8a8078f3..25a7977ab 100644 --- a/src/app/settings/settings.tsx +++ b/src/app/settings/settings.tsx @@ -8,8 +8,8 @@ import { General } from '@/modules/settings/general/General'; import { Payment } from '@/modules/settings/payment/Payment'; import { Tags } from '@/modules/settings/tags/Tags'; import { Users } from '@/modules/settings/users/Users'; +import { Me } from '@/types/models/user'; -import type { Me } from '@/types'; import type { Integrations, Tag, Tenant, User } from '@prisma/client'; type Props = { diff --git a/src/components/stepper/Stepper.tsx b/src/components/stepper/Stepper.tsx index dc2f50c8f..587c59a74 100644 --- a/src/components/stepper/Stepper.tsx +++ b/src/components/stepper/Stepper.tsx @@ -2,7 +2,7 @@ import { Fragment } from 'react'; import { BadgeCheck } from 'lucide-react'; -import type { TSteps } from '@/types'; +import { TSteps } from '@/types/global'; type Props = { currentStep: number; diff --git a/src/modules/header/Header.tsx b/src/modules/header/Header.tsx index f966f8883..50d1009e2 100644 --- a/src/modules/header/Header.tsx +++ b/src/modules/header/Header.tsx @@ -25,13 +25,11 @@ import { TooltipTrigger, } from '@/components/tooltip/Tooltip'; import { userAtom } from '@/store'; +import { Me } from '@/types/models/user'; import { Routes } from '@/utils/routing'; import { ThemeToggle } from '../theme/ThemeToggle'; -import type { Me } from '@/types'; - - type Props = { user: Me; }; diff --git a/src/modules/home/List.tsx b/src/modules/home/List.tsx index 9b35f4bf4..6d47e9876 100644 --- a/src/modules/home/List.tsx +++ b/src/modules/home/List.tsx @@ -1,8 +1,8 @@ 'use client'; -import Question from './Question'; +import { ExtendedNode, ExtendedFavorites } from '@/types/models/node'; -import type { ExtendedFavorites, ExtendedNode } from '@/types'; +import Question from './Question'; type Props = { nodes: ExtendedNode[]; diff --git a/src/modules/home/Question.tsx b/src/modules/home/Question.tsx index a0449e2a5..aa98ec8e7 100644 --- a/src/modules/home/Question.tsx +++ b/src/modules/home/Question.tsx @@ -31,6 +31,7 @@ import { } from '@/components/tooltip/Tooltip'; import { favoriteSchema, pinSchema } from '@/lib/validations'; import { userAtom } from '@/store'; +import { ExtendedNode, ExtendedFavorites } from '@/types/models/node'; import { dateOptions, timeOptions } from '@/utils/date'; import { Routes } from '@/utils/routing'; @@ -40,11 +41,9 @@ import type { deleteFavoriteSchema, deletePinSchema, } from '@/actions'; -import type { ExtendedFavorites, ExtendedNode } from '@/types'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; - const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { ssr: false, }); diff --git a/src/modules/profile/Answers.tsx b/src/modules/profile/Answers.tsx index 53c7224dd..2a971e00b 100644 --- a/src/modules/profile/Answers.tsx +++ b/src/modules/profile/Answers.tsx @@ -3,11 +3,10 @@ import dynamic from 'next/dynamic'; import Link from 'next/link'; +import { NodeWithQuestionAndAnswer } from '@/types/models/node'; import { dateOptions } from '@/utils/date'; import { Routes } from '@/utils/routing'; -import type { NodeWithQuestionAndAnswer } from '@/types'; - const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { ssr: false, }); diff --git a/src/modules/profile/Favorites.tsx b/src/modules/profile/Favorites.tsx index c8bd81985..ce7e6b35c 100644 --- a/src/modules/profile/Favorites.tsx +++ b/src/modules/profile/Favorites.tsx @@ -1,10 +1,9 @@ import Link from 'next/link'; +import { ExtendedFavorites } from '@/types/models/node'; import { dateOptions } from '@/utils/date'; import { Routes } from '@/utils/routing'; -import type { ExtendedFavorites } from '@/types'; - type Props = { favorites?: ExtendedFavorites[]; }; diff --git a/src/modules/profile/Questions.tsx b/src/modules/profile/Questions.tsx index 8e803a946..bfca7c0d7 100644 --- a/src/modules/profile/Questions.tsx +++ b/src/modules/profile/Questions.tsx @@ -2,11 +2,10 @@ import Link from 'next/link'; +import { QuestionWithNodeId } from '@/types/models/node'; import { dateOptions } from '@/utils/date'; import { Routes } from '@/utils/routing'; -import type { QuestionWithNodeId } from '@/types'; - type Props = { questions?: QuestionWithNodeId[]; }; diff --git a/src/modules/profile/Update.tsx b/src/modules/profile/Update.tsx index d42e19f6a..838f093c3 100644 --- a/src/modules/profile/Update.tsx +++ b/src/modules/profile/Update.tsx @@ -13,15 +13,15 @@ import { Field } from '@/components/field/Field'; import { Input } from '@/components/input/Input'; import { resultToast } from '@/components/toast/Toast'; import { useMediaQuery } from '@/hooks/useMediaQuery'; +import { IUserUpdateFields } from '@/types/global'; +import { Me } from '@/types/models/user'; import { Limits } from '@/utils/limits'; import { PageChangeAlert } from '../navigation/PageChange'; -import type { IUserUpdateFields, Me } from '@/types'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; - type Props = { me: Me; }; diff --git a/src/modules/settings/general/Company.tsx b/src/modules/settings/general/Company.tsx index 60e48fc0e..23a49c9af 100644 --- a/src/modules/settings/general/Company.tsx +++ b/src/modules/settings/general/Company.tsx @@ -11,9 +11,9 @@ import { Field } from '@/components/field/Field'; import { Input } from '@/components/input/Input'; import { resultToast } from '@/components/toast/Toast'; import { PageChangeAlert } from '@/modules/navigation/PageChange'; +import { ITenantUpdateFields } from '@/types/global'; import { Limits } from '@/utils/limits'; -import type { ITenantUpdateFields } from '@/types'; import type { Integrations, Tenant } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; diff --git a/src/store/index.ts b/src/store/index.ts index 817bff1e2..44967bc3c 100644 --- a/src/store/index.ts +++ b/src/store/index.ts @@ -1,7 +1,7 @@ import { atom } from 'jotai'; import { atomWithStorage } from 'jotai/utils'; -import type { Me, RegisterInfo } from '@/types'; +import { RegisterInfo, Me } from '@/types/models/user'; export const registerAtom = atomWithStorage('register-data', { company: '', diff --git a/src/types/index.ts b/src/types/index.ts deleted file mode 100644 index ace30e8f1..000000000 --- a/src/types/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './models'; -export * from './global'; diff --git a/src/types/models/index.ts b/src/types/models/index.ts deleted file mode 100644 index bde8f26c7..000000000 --- a/src/types/models/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './node'; -export * from './user'; From de661b4329b9c3b6f194f12b8ee0afa92d8232ab Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Fri, 8 Nov 2024 20:22:45 +0100 Subject: [PATCH 319/326] :rotating_light: run lint + prettier --- src/modules/settings/tags/Create.tsx | 1 - src/modules/settings/users/FileInput.tsx | 1 - src/modules/settings/users/Update.tsx | 1 - 3 files changed, 3 deletions(-) diff --git a/src/modules/settings/tags/Create.tsx b/src/modules/settings/tags/Create.tsx index 67b14bbc5..f7a9ba3a4 100644 --- a/src/modules/settings/tags/Create.tsx +++ b/src/modules/settings/tags/Create.tsx @@ -29,7 +29,6 @@ import type { $Enums } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; - type Props = { tenantId: string; plan: $Enums.Plan; diff --git a/src/modules/settings/users/FileInput.tsx b/src/modules/settings/users/FileInput.tsx index 086cffb67..a98d59e8c 100644 --- a/src/modules/settings/users/FileInput.tsx +++ b/src/modules/settings/users/FileInput.tsx @@ -33,7 +33,6 @@ import type { $Enums, User } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; - type Props = { tenantId: string; users: User[]; diff --git a/src/modules/settings/users/Update.tsx b/src/modules/settings/users/Update.tsx index 31f05271e..0815291f1 100644 --- a/src/modules/settings/users/Update.tsx +++ b/src/modules/settings/users/Update.tsx @@ -38,7 +38,6 @@ import type { User } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; import type { z } from 'zod'; - type Props = { user: User; tenantId: string; From 0203cc68fec391bab6034814764300342e57ab38 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 10 Nov 2024 17:20:13 +0100 Subject: [PATCH 320/326] :art: remove actions barrel file --- src/actions/create-answer/index.ts | 2 -- src/actions/create-favorite/index.ts | 2 -- src/actions/create-node/index.ts | 2 -- src/actions/create-pin/index.ts | 2 -- src/actions/create-tag/index.ts | 2 -- src/actions/create-tenant/index.ts | 2 -- src/actions/create-user/index.ts | 2 -- src/actions/create-users/index.ts | 2 -- src/actions/delete-favorite/index.ts | 2 -- src/actions/delete-pin/index.ts | 2 -- src/actions/delete-tag/index.ts | 2 -- src/actions/delete-tenant/index.ts | 2 -- src/actions/delete-user/index.ts | 2 -- src/actions/index.ts | 44 ------------------------ src/actions/update-answer/index.ts | 2 -- src/actions/update-logo/index.ts | 2 -- src/actions/update-node/index.ts | 2 -- src/actions/update-tag/index.ts | 2 -- src/actions/update-tenant/index.ts | 2 -- src/actions/update-user/index.ts | 2 -- src/actions/upload-file/index.ts | 1 - src/app/login/EmailForm.tsx | 2 +- src/app/login/page.tsx | 2 +- src/app/page.tsx | 17 +++++---- src/app/profile/page.tsx | 10 +++--- src/app/question/[id]/page.tsx | 4 ++- src/app/question/[id]/question.tsx | 10 +++--- src/app/question/answer/answer.tsx | 8 +++-- src/app/question/answer/page.tsx | 3 +- src/app/question/edit/edit.tsx | 5 +-- src/app/question/edit/page.tsx | 4 ++- src/app/question/new/new.tsx | 5 +-- src/app/question/new/page.tsx | 4 ++- src/app/register/confirm/form.tsx | 5 +-- src/app/register/form.tsx | 4 +-- src/app/register/user/form.tsx | 4 +-- src/app/settings/page.tsx | 17 +++++---- src/modules/header/Header.tsx | 2 +- src/modules/home/Question.tsx | 22 +++++------- src/modules/profile/Update.tsx | 5 +-- src/modules/settings/general/Company.tsx | 5 +-- src/modules/settings/general/Files.tsx | 6 ++-- src/modules/settings/payment/Delete.tsx | 5 +-- src/modules/settings/tags/Create.tsx | 5 +-- src/modules/settings/tags/Tags.tsx | 4 ++- src/modules/settings/users/Create.tsx | 5 +-- src/modules/settings/users/FileInput.tsx | 4 +-- src/modules/settings/users/Update.tsx | 5 +-- src/modules/settings/users/Users.tsx | 2 +- 49 files changed, 93 insertions(+), 164 deletions(-) delete mode 100644 src/actions/create-answer/index.ts delete mode 100644 src/actions/create-favorite/index.ts delete mode 100644 src/actions/create-node/index.ts delete mode 100644 src/actions/create-pin/index.ts delete mode 100644 src/actions/create-tag/index.ts delete mode 100644 src/actions/create-tenant/index.ts delete mode 100644 src/actions/create-user/index.ts delete mode 100644 src/actions/create-users/index.ts delete mode 100644 src/actions/delete-favorite/index.ts delete mode 100644 src/actions/delete-pin/index.ts delete mode 100644 src/actions/delete-tag/index.ts delete mode 100644 src/actions/delete-tenant/index.ts delete mode 100644 src/actions/delete-user/index.ts delete mode 100644 src/actions/index.ts delete mode 100644 src/actions/update-answer/index.ts delete mode 100644 src/actions/update-logo/index.ts delete mode 100644 src/actions/update-node/index.ts delete mode 100644 src/actions/update-tag/index.ts delete mode 100644 src/actions/update-tenant/index.ts delete mode 100644 src/actions/update-user/index.ts delete mode 100644 src/actions/upload-file/index.ts diff --git a/src/actions/create-answer/index.ts b/src/actions/create-answer/index.ts deleted file mode 100644 index 6df325825..000000000 --- a/src/actions/create-answer/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './action'; -export * from './schema'; diff --git a/src/actions/create-favorite/index.ts b/src/actions/create-favorite/index.ts deleted file mode 100644 index af29b4d52..000000000 --- a/src/actions/create-favorite/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './schema'; -export * from './action'; diff --git a/src/actions/create-node/index.ts b/src/actions/create-node/index.ts deleted file mode 100644 index af29b4d52..000000000 --- a/src/actions/create-node/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './schema'; -export * from './action'; diff --git a/src/actions/create-pin/index.ts b/src/actions/create-pin/index.ts deleted file mode 100644 index af29b4d52..000000000 --- a/src/actions/create-pin/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './schema'; -export * from './action'; diff --git a/src/actions/create-tag/index.ts b/src/actions/create-tag/index.ts deleted file mode 100644 index af29b4d52..000000000 --- a/src/actions/create-tag/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './schema'; -export * from './action'; diff --git a/src/actions/create-tenant/index.ts b/src/actions/create-tenant/index.ts deleted file mode 100644 index af29b4d52..000000000 --- a/src/actions/create-tenant/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './schema'; -export * from './action'; diff --git a/src/actions/create-user/index.ts b/src/actions/create-user/index.ts deleted file mode 100644 index af29b4d52..000000000 --- a/src/actions/create-user/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './schema'; -export * from './action'; diff --git a/src/actions/create-users/index.ts b/src/actions/create-users/index.ts deleted file mode 100644 index af29b4d52..000000000 --- a/src/actions/create-users/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './schema'; -export * from './action'; diff --git a/src/actions/delete-favorite/index.ts b/src/actions/delete-favorite/index.ts deleted file mode 100644 index af29b4d52..000000000 --- a/src/actions/delete-favorite/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './schema'; -export * from './action'; diff --git a/src/actions/delete-pin/index.ts b/src/actions/delete-pin/index.ts deleted file mode 100644 index af29b4d52..000000000 --- a/src/actions/delete-pin/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './schema'; -export * from './action'; diff --git a/src/actions/delete-tag/index.ts b/src/actions/delete-tag/index.ts deleted file mode 100644 index af29b4d52..000000000 --- a/src/actions/delete-tag/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './schema'; -export * from './action'; diff --git a/src/actions/delete-tenant/index.ts b/src/actions/delete-tenant/index.ts deleted file mode 100644 index af29b4d52..000000000 --- a/src/actions/delete-tenant/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './schema'; -export * from './action'; diff --git a/src/actions/delete-user/index.ts b/src/actions/delete-user/index.ts deleted file mode 100644 index af29b4d52..000000000 --- a/src/actions/delete-user/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './schema'; -export * from './action'; diff --git a/src/actions/index.ts b/src/actions/index.ts deleted file mode 100644 index 1c67beec8..000000000 --- a/src/actions/index.ts +++ /dev/null @@ -1,44 +0,0 @@ -export { createAnswer, createAnswerSchema } from './create-answer'; -export { createFavorite, createFavoriteSchema } from './create-favorite'; -export { createNode, createNodeSchema } from './create-node'; -export { createPin, createPinSchema } from './create-pin'; -export { createTag, createTagSchema } from './create-tag'; -export { - createTenant, - createTenantCompanySchema, - createTenantSchema, - createTenantUserSchema, -} from './create-tenant'; -export { createUser, createUserSchema } from './create-user'; -export { createUsers, createUsersSchema } from './create-users'; -export { deleteFavorite, deleteFavoriteSchema } from './delete-favorite'; -export { deletePin, deletePinSchema } from './delete-pin'; -export { deleteTag, deleteTagSchema } from './delete-tag'; -export { deleteTenant, deleteTenantSchema } from './delete-tenant'; -export { deleteUser, deleteUserSchema } from './delete-user'; -export { getFavorite } from './get-favorite'; -export { getFavorites } from './get-favorites'; -export { getIntegration } from './get-integration'; -export { getMe } from './get-me'; -export { getNode } from './get-node'; -export { getPaginatedNodes } from './get-nodes'; -export { getNodesCount } from './get-nodes-count'; -export { getSearchNodes } from './get-search-nodes'; -export { getSearchTags } from './get-search-tags'; -export { getTags } from './get-tags'; -export { getTagsCount } from './get-tags-count'; -export { getTenant } from './get-tenant'; -export { getUser } from './get-user'; -export { getUserAnswers } from './get-user-answers'; -export { getUserQuestions } from './get-user-questions'; -export { getUsers } from './get-users'; -export { getUsersCount } from './get-users-count'; -export { signInAction } from './sign-in'; -export { signOutAction } from './sign-out'; -export { updateAnswer, updateAnswerSchema } from './update-answer'; -export { updateLogo, updateLogoSchema } from './update-logo'; -export { updateNode, updateNodeSchema } from './update-node'; -export { updateTag, updateTagSchema } from './update-tag'; -export { updateTenant, updateTenantSchema } from './update-tenant'; -export { updateUser, updateUserSchema } from './update-user'; -export { submitImage } from './upload-file'; diff --git a/src/actions/update-answer/index.ts b/src/actions/update-answer/index.ts deleted file mode 100644 index af29b4d52..000000000 --- a/src/actions/update-answer/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './schema'; -export * from './action'; diff --git a/src/actions/update-logo/index.ts b/src/actions/update-logo/index.ts deleted file mode 100644 index af29b4d52..000000000 --- a/src/actions/update-logo/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './schema'; -export * from './action'; diff --git a/src/actions/update-node/index.ts b/src/actions/update-node/index.ts deleted file mode 100644 index af29b4d52..000000000 --- a/src/actions/update-node/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './schema'; -export * from './action'; diff --git a/src/actions/update-tag/index.ts b/src/actions/update-tag/index.ts deleted file mode 100644 index af29b4d52..000000000 --- a/src/actions/update-tag/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './schema'; -export * from './action'; diff --git a/src/actions/update-tenant/index.ts b/src/actions/update-tenant/index.ts deleted file mode 100644 index af29b4d52..000000000 --- a/src/actions/update-tenant/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './schema'; -export * from './action'; diff --git a/src/actions/update-user/index.ts b/src/actions/update-user/index.ts deleted file mode 100644 index af29b4d52..000000000 --- a/src/actions/update-user/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './schema'; -export * from './action'; diff --git a/src/actions/upload-file/index.ts b/src/actions/upload-file/index.ts deleted file mode 100644 index 2c0622fbb..000000000 --- a/src/actions/upload-file/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './action'; diff --git a/src/app/login/EmailForm.tsx b/src/app/login/EmailForm.tsx index 9b15bba80..10b749a64 100644 --- a/src/app/login/EmailForm.tsx +++ b/src/app/login/EmailForm.tsx @@ -6,6 +6,7 @@ import { zodResolver } from '@hookform/resolvers/zod'; import { AtSign } from 'lucide-react'; import { signIn } from 'next-auth/react'; import { useForm } from 'react-hook-form'; +import { z } from 'zod'; import { Button } from '@/components/button/Button'; import { Field } from '@/components/field/Field'; @@ -14,7 +15,6 @@ import { successToast } from '@/components/toast/Toast'; import { userEmailSchema } from '@/lib/validations'; import type { SubmitHandler } from 'react-hook-form'; -import type { z } from 'zod'; type Schema = z.infer; diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index 591d920df..a8edf4af8 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -1,7 +1,7 @@ import Image from 'next/image'; import Link from 'next/link'; -import { signInAction } from '@/actions'; +import { signInAction } from '@/actions/sign-in'; import googleIcon from '@/assets/google.svg'; import { Button } from '@/components/button/Button'; import { Routes } from '@/utils/routing'; diff --git a/src/app/page.tsx b/src/app/page.tsx index fb6c29b36..7e0ac930e 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,14 +1,13 @@ import { redirect } from 'next/navigation'; -import { - getFavorites, - getMe, - getNodesCount, - getPaginatedNodes, - getSearchNodes, - getSearchTags, - getTags, -} from '@/actions'; + +import { getFavorites } from '@/actions/get-favorites'; +import { getMe } from '@/actions/get-me'; +import { getPaginatedNodes } from '@/actions/get-nodes'; +import { getNodesCount } from '@/actions/get-nodes-count'; +import { getSearchNodes } from '@/actions/get-search-nodes'; +import { getSearchTags } from '@/actions/get-search-tags'; +import { getTags } from '@/actions/get-tags'; import { Footer } from '@/modules/footer/Footer'; import { Header } from '@/modules/header/Header'; import { Routes } from '@/utils/routing'; diff --git a/src/app/profile/page.tsx b/src/app/profile/page.tsx index 00cddee80..c4418876e 100644 --- a/src/app/profile/page.tsx +++ b/src/app/profile/page.tsx @@ -1,11 +1,9 @@ import { redirect } from 'next/navigation'; -import { - getFavorites, - getMe, - getUserAnswers, - getUserQuestions, -} from '@/actions'; +import { getFavorites } from '@/actions/get-favorites'; +import { getMe } from '@/actions/get-me'; +import { getUserAnswers } from '@/actions/get-user-answers'; +import { getUserQuestions } from '@/actions/get-user-questions'; import { Footer } from '@/modules/footer/Footer'; import { Header } from '@/modules/header/Header'; import { Routes } from '@/utils/routing'; diff --git a/src/app/question/[id]/page.tsx b/src/app/question/[id]/page.tsx index d124d7fbd..051aa8e6a 100644 --- a/src/app/question/[id]/page.tsx +++ b/src/app/question/[id]/page.tsx @@ -1,6 +1,8 @@ import { redirect } from 'next/navigation'; -import { getFavorite, getMe, getNode } from '@/actions'; +import { getFavorite } from '@/actions/get-favorite'; +import { getMe } from '@/actions/get-me'; +import { getNode } from '@/actions/get-node'; import { Footer } from '@/modules/footer/Footer'; import { Header } from '@/modules/header/Header'; import { Routes } from '@/utils/routing'; diff --git a/src/app/question/[id]/question.tsx b/src/app/question/[id]/question.tsx index bbd0a8279..030e4f291 100644 --- a/src/app/question/[id]/question.tsx +++ b/src/app/question/[id]/question.tsx @@ -13,12 +13,11 @@ import dynamic from 'next/dynamic'; import Link from 'next/link'; import { usePathname } from 'next/navigation'; import { useForm } from 'react-hook-form'; +import { z } from 'zod'; -import { - createFavorite, - createFavoriteSchema, - deleteFavorite, -} from '@/actions'; +import { createFavorite } from '@/actions/create-favorite/action'; +import { createFavoriteSchema } from '@/actions/create-favorite/schema'; +import { deleteFavorite } from '@/actions/delete-favorite/action'; import { BackButton } from '@/components/button/BackButton'; import { DropdownMenu, @@ -38,7 +37,6 @@ import { Routes } from '@/utils/routing'; import type { Favorite } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; -import type { z } from 'zod'; const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { ssr: false, diff --git a/src/app/question/answer/answer.tsx b/src/app/question/answer/answer.tsx index ba6407177..2c543d528 100644 --- a/src/app/question/answer/answer.tsx +++ b/src/app/question/answer/answer.tsx @@ -5,8 +5,12 @@ import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; import Editor from '@uiw/react-md-editor'; import { Controller, useForm } from 'react-hook-form'; +import { z } from 'zod'; -import { createAnswer, updateAnswer } from '@/actions'; +import { createAnswer } from '@/actions/create-answer/action'; +import { createAnswerSchema } from '@/actions/create-answer/schema'; +import { updateAnswer } from '@/actions/update-answer/action'; +import { updateAnswerSchema } from '@/actions/update-answer/schema'; import { BackButton } from '@/components/button/BackButton'; import { Button } from '@/components/button/Button'; import { resultToast } from '@/components/toast/Toast'; @@ -15,9 +19,7 @@ import { PageChangeAlert } from '@/modules/navigation/PageChange'; import { ExtendedNode } from '@/types/models/node'; import { Limits } from '@/utils/limits'; -import type { createAnswerSchema, updateAnswerSchema } from '@/actions'; import type { SubmitHandler } from 'react-hook-form'; -import type { z } from 'zod'; type Props = { node: ExtendedNode; diff --git a/src/app/question/answer/page.tsx b/src/app/question/answer/page.tsx index 4fcd0713f..74666c5f4 100644 --- a/src/app/question/answer/page.tsx +++ b/src/app/question/answer/page.tsx @@ -1,6 +1,7 @@ import { redirect } from 'next/navigation'; -import { getMe, getNode } from '@/actions'; +import { getMe } from '@/actions/get-me'; +import { getNode } from '@/actions/get-node'; import { Footer } from '@/modules/footer/Footer'; import { Header } from '@/modules/header/Header'; import { Routes } from '@/utils/routing'; diff --git a/src/app/question/edit/edit.tsx b/src/app/question/edit/edit.tsx index 59209e285..676e7fa44 100644 --- a/src/app/question/edit/edit.tsx +++ b/src/app/question/edit/edit.tsx @@ -5,8 +5,10 @@ import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; import { HelpCircle } from 'lucide-react'; import { useForm } from 'react-hook-form'; +import { z } from 'zod'; -import { updateNode, updateNodeSchema } from '@/actions'; +import { updateNode } from '@/actions/update-node/action'; +import { updateNodeSchema } from '@/actions/update-node/schema'; import { BackButton } from '@/components/button/BackButton'; import { Button } from '@/components/button/Button'; import { Field } from '@/components/field/Field'; @@ -22,7 +24,6 @@ import { Limits } from '@/utils/limits'; import type { Tag } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; -import type { z } from 'zod'; type Props = { me: Me; diff --git a/src/app/question/edit/page.tsx b/src/app/question/edit/page.tsx index 5fb494549..ff9c3d7b3 100644 --- a/src/app/question/edit/page.tsx +++ b/src/app/question/edit/page.tsx @@ -1,6 +1,8 @@ import { redirect } from 'next/navigation'; -import { getMe, getNode, getTags } from '@/actions'; +import { getMe } from '@/actions/get-me'; +import { getNode } from '@/actions/get-node'; +import { getTags } from '@/actions/get-tags'; import { Footer } from '@/modules/footer/Footer'; import { Header } from '@/modules/header/Header'; import { Routes } from '@/utils/routing'; diff --git a/src/app/question/new/new.tsx b/src/app/question/new/new.tsx index e665b4aaf..55790fd2b 100644 --- a/src/app/question/new/new.tsx +++ b/src/app/question/new/new.tsx @@ -5,8 +5,10 @@ import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; import { HelpCircle, MoveRight } from 'lucide-react'; import { useForm } from 'react-hook-form'; +import { z } from 'zod'; -import { createNode, createNodeSchema } from '@/actions'; +import { createNode } from '@/actions/create-node/action'; +import { createNodeSchema } from '@/actions/create-node/schema'; import { BackButton } from '@/components/button/BackButton'; import { Button } from '@/components/button/Button'; import { Field } from '@/components/field/Field'; @@ -21,7 +23,6 @@ import { Limits } from '@/utils/limits'; import type { Integrations, Tag } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; -import type { z } from 'zod'; type Props = { me: Me; diff --git a/src/app/question/new/page.tsx b/src/app/question/new/page.tsx index d0252974a..0ca46d068 100644 --- a/src/app/question/new/page.tsx +++ b/src/app/question/new/page.tsx @@ -1,6 +1,8 @@ import { redirect } from 'next/navigation'; -import { getIntegration, getMe, getTags } from '@/actions'; +import { getIntegration } from '@/actions/get-integration'; +import { getMe } from '@/actions/get-me'; +import { getTags } from '@/actions/get-tags'; import { Footer } from '@/modules/footer/Footer'; import { Header } from '@/modules/header/Header'; import { Routes } from '@/utils/routing'; diff --git a/src/app/register/confirm/form.tsx b/src/app/register/confirm/form.tsx index 559aee517..30e6a4276 100644 --- a/src/app/register/confirm/form.tsx +++ b/src/app/register/confirm/form.tsx @@ -7,15 +7,16 @@ import { useAtom } from 'jotai'; import { MoveLeft } from 'lucide-react'; import { useRouter } from 'next/navigation'; import { useForm } from 'react-hook-form'; +import { z } from 'zod'; -import { createTenant, createTenantSchema } from '@/actions'; +import { createTenant } from '@/actions/create-tenant/action'; +import { createTenantSchema } from '@/actions/create-tenant/schema'; import { Button } from '@/components/button/Button'; import { resultToast } from '@/components/toast/Toast'; import { registerAtom } from '@/store'; import { Routes } from '@/utils/routing'; import type { SubmitHandler } from 'react-hook-form'; -import type { z } from 'zod'; type Schema = z.infer; diff --git a/src/app/register/form.tsx b/src/app/register/form.tsx index d10d245a2..6eb37ed4b 100644 --- a/src/app/register/form.tsx +++ b/src/app/register/form.tsx @@ -6,8 +6,9 @@ import { MoveRight } from 'lucide-react'; import Link from 'next/link'; import { useRouter } from 'next/navigation'; import { useForm } from 'react-hook-form'; +import { z } from 'zod'; -import { createTenantCompanySchema } from '@/actions'; +import { createTenantCompanySchema } from '@/actions/create-tenant/schema'; import { Button } from '@/components/button/Button'; import { Field } from '@/components/field/Field'; import { Input } from '@/components/input/Input'; @@ -16,7 +17,6 @@ import { ITenantCreateFields } from '@/types/global'; import { Routes } from '@/utils/routing'; import type { SubmitHandler } from 'react-hook-form'; -import type { z } from 'zod'; type Schema = z.infer; diff --git a/src/app/register/user/form.tsx b/src/app/register/user/form.tsx index a9c9c5e81..5970a05aa 100644 --- a/src/app/register/user/form.tsx +++ b/src/app/register/user/form.tsx @@ -6,8 +6,9 @@ import { MoveLeft, MoveRight } from 'lucide-react'; import Link from 'next/link'; import { useRouter } from 'next/navigation'; import { useForm } from 'react-hook-form'; +import { z } from 'zod'; -import { createTenantUserSchema } from '@/actions'; +import { createTenantUserSchema } from '@/actions/create-tenant/schema'; import { Button } from '@/components/button/Button'; import { Field } from '@/components/field/Field'; import { Input } from '@/components/input/Input'; @@ -15,7 +16,6 @@ import { registerAtom } from '@/store'; import { Routes } from '@/utils/routing'; import type { SubmitHandler } from 'react-hook-form'; -import type { z } from 'zod'; type Schema = z.infer; diff --git a/src/app/settings/page.tsx b/src/app/settings/page.tsx index 1d36eef3f..786982265 100644 --- a/src/app/settings/page.tsx +++ b/src/app/settings/page.tsx @@ -1,14 +1,13 @@ import { redirect } from 'next/navigation'; -import { - getIntegration, - getMe, - getTags, - getTagsCount, - getTenant, - getUsers, - getUsersCount, -} from '@/actions'; + +import { getIntegration } from '@/actions/get-integration'; +import { getMe } from '@/actions/get-me'; +import { getTags } from '@/actions/get-tags'; +import { getTagsCount } from '@/actions/get-tags-count'; +import { getTenant } from '@/actions/get-tenant'; +import { getUsers } from '@/actions/get-users'; +import { getUsersCount } from '@/actions/get-users-count'; import { Footer } from '@/modules/footer/Footer'; import { Header } from '@/modules/header/Header'; import { Routes } from '@/utils/routing'; diff --git a/src/modules/header/Header.tsx b/src/modules/header/Header.tsx index 50d1009e2..2d6961a82 100644 --- a/src/modules/header/Header.tsx +++ b/src/modules/header/Header.tsx @@ -7,7 +7,7 @@ import { AlignJustify, LogOut, Settings } from 'lucide-react'; import Image from 'next/image'; import Link from 'next/link'; -import { signOutAction } from '@/actions'; +import { signOutAction } from '@/actions/sign-out'; import { Avatar, AvatarFallback, diff --git a/src/modules/home/Question.tsx b/src/modules/home/Question.tsx index aa98ec8e7..1046380b0 100644 --- a/src/modules/home/Question.tsx +++ b/src/modules/home/Question.tsx @@ -15,13 +15,16 @@ import { import dynamic from 'next/dynamic'; import Link from 'next/link'; import { useForm } from 'react-hook-form'; +import { z } from 'zod'; -import { - createFavorite, - createPin, - deleteFavorite, - deletePin, -} from '@/actions'; +import { createFavorite } from '@/actions/create-favorite/action'; +import { createFavoriteSchema } from '@/actions/create-favorite/schema'; +import { createPin } from '@/actions/create-pin/action'; +import { createPinSchema } from '@/actions/create-pin/schema'; +import { deleteFavorite } from '@/actions/delete-favorite/action'; +import { deleteFavoriteSchema } from '@/actions/delete-favorite/schema'; +import { deletePin } from '@/actions/delete-pin/action'; +import { deletePinSchema } from '@/actions/delete-pin/schema'; import { Button } from '@/components/button/Button'; import { resultToast } from '@/components/toast/Toast'; import { @@ -35,14 +38,7 @@ import { ExtendedNode, ExtendedFavorites } from '@/types/models/node'; import { dateOptions, timeOptions } from '@/utils/date'; import { Routes } from '@/utils/routing'; -import type { - createFavoriteSchema, - createPinSchema, - deleteFavoriteSchema, - deletePinSchema, -} from '@/actions'; import type { SubmitHandler } from 'react-hook-form'; -import type { z } from 'zod'; const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), { ssr: false, diff --git a/src/modules/profile/Update.tsx b/src/modules/profile/Update.tsx index 838f093c3..d549959d5 100644 --- a/src/modules/profile/Update.tsx +++ b/src/modules/profile/Update.tsx @@ -6,8 +6,10 @@ import { zodResolver } from '@hookform/resolvers/zod'; import { AtSign, UserIcon } from 'lucide-react'; import Image from 'next/image'; import { useForm } from 'react-hook-form'; +import { z } from 'zod'; -import { updateUser, updateUserSchema } from '@/actions'; +import { updateUser } from '@/actions/update-user/action'; +import { updateUserSchema } from '@/actions/update-user/schema'; import { Button } from '@/components/button/Button'; import { Field } from '@/components/field/Field'; import { Input } from '@/components/input/Input'; @@ -20,7 +22,6 @@ import { Limits } from '@/utils/limits'; import { PageChangeAlert } from '../navigation/PageChange'; import type { SubmitHandler } from 'react-hook-form'; -import type { z } from 'zod'; type Props = { me: Me; diff --git a/src/modules/settings/general/Company.tsx b/src/modules/settings/general/Company.tsx index 23a49c9af..03d7e3886 100644 --- a/src/modules/settings/general/Company.tsx +++ b/src/modules/settings/general/Company.tsx @@ -4,8 +4,10 @@ import { Fragment, useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; import { useForm } from 'react-hook-form'; +import { z } from 'zod'; -import { updateTenant, updateTenantSchema } from '@/actions'; +import { updateTenant } from '@/actions/update-tenant/action'; +import { updateTenantSchema } from '@/actions/update-tenant/schema'; import { Button } from '@/components/button/Button'; import { Field } from '@/components/field/Field'; import { Input } from '@/components/input/Input'; @@ -16,7 +18,6 @@ import { Limits } from '@/utils/limits'; import type { Integrations, Tenant } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; -import type { z } from 'zod'; type Props = { tenant: Tenant; diff --git a/src/modules/settings/general/Files.tsx b/src/modules/settings/general/Files.tsx index 4700b89d9..978c488f8 100644 --- a/src/modules/settings/general/Files.tsx +++ b/src/modules/settings/general/Files.tsx @@ -7,8 +7,11 @@ import { Upload } from 'lucide-react'; import Image from 'next/image'; import { DropzoneOptions, useDropzone } from 'react-dropzone'; import { useForm } from 'react-hook-form'; +import { z } from 'zod'; -import { submitImage, updateLogo, updateLogoSchema } from '@/actions'; +import { updateLogo } from '@/actions/update-logo/action'; +import { updateLogoSchema } from '@/actions/update-logo/schema'; +import { submitImage } from '@/actions/upload-file/action'; import { Button } from '@/components/button/Button'; import { resultToast } from '@/components/toast/Toast'; import { filesSchema } from '@/lib/validations'; @@ -16,7 +19,6 @@ import { MAX_FILE_SIZE } from '@/utils/constants'; import type { Tenant } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; -import type { z } from 'zod'; type Props = { tenant: Tenant; diff --git a/src/modules/settings/payment/Delete.tsx b/src/modules/settings/payment/Delete.tsx index 93ea13d48..f084e07dc 100644 --- a/src/modules/settings/payment/Delete.tsx +++ b/src/modules/settings/payment/Delete.tsx @@ -5,8 +5,10 @@ import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; import { Flame } from 'lucide-react'; import { useForm } from 'react-hook-form'; +import { z } from 'zod'; -import { deleteTenant, deleteTenantSchema } from '@/actions'; +import { deleteTenant } from '@/actions/delete-tenant/action'; +import { deleteTenantSchema } from '@/actions/delete-tenant/schema'; import { Button } from '@/components/button/Button'; import { Dialog, @@ -20,7 +22,6 @@ import { import { Input } from '@/components/input/Input'; import type { SubmitHandler } from 'react-hook-form'; -import type { z } from 'zod'; type Props = { tenantId: string; diff --git a/src/modules/settings/tags/Create.tsx b/src/modules/settings/tags/Create.tsx index f7a9ba3a4..b5aff2914 100644 --- a/src/modules/settings/tags/Create.tsx +++ b/src/modules/settings/tags/Create.tsx @@ -3,8 +3,10 @@ import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; import { Tag as TagIcon } from 'lucide-react'; import { useForm } from 'react-hook-form'; +import { z } from 'zod'; -import { createTag, createTagSchema } from '@/actions'; +import { createTag } from '@/actions/create-tag/action'; +import { createTagSchema } from '@/actions/create-tag/schema'; import { Button } from '@/components/button/Button'; import { Dialog, @@ -27,7 +29,6 @@ import { useMediaQuery } from '@/hooks/useMediaQuery'; import type { $Enums } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; -import type { z } from 'zod'; type Props = { tenantId: string; diff --git a/src/modules/settings/tags/Tags.tsx b/src/modules/settings/tags/Tags.tsx index d57ccf995..4dc797268 100644 --- a/src/modules/settings/tags/Tags.tsx +++ b/src/modules/settings/tags/Tags.tsx @@ -7,7 +7,9 @@ import { TagIcon } from 'lucide-react'; import { SubmitHandler, useForm } from 'react-hook-form'; import { z } from 'zod'; -import { deleteTag, updateTag, updateTagSchema } from '@/actions'; +import { deleteTag } from '@/actions/delete-tag/action'; +import { updateTag } from '@/actions/update-tag/action'; +import { updateTagSchema } from '@/actions/update-tag/schema'; import { Button } from '@/components/button/Button'; import { Dialog, diff --git a/src/modules/settings/users/Create.tsx b/src/modules/settings/users/Create.tsx index a5562e350..52cd1e9a6 100644 --- a/src/modules/settings/users/Create.tsx +++ b/src/modules/settings/users/Create.tsx @@ -6,8 +6,10 @@ import { zodResolver } from '@hookform/resolvers/zod'; import { $Enums } from '@prisma/client'; import { AtSign, Mail } from 'lucide-react'; import { Controller, useForm } from 'react-hook-form'; +import { z } from 'zod'; -import { createUser, createUserSchema } from '@/actions'; +import { createUser } from '@/actions/create-user/action'; +import { createUserSchema } from '@/actions/create-user/schema'; import { Button } from '@/components/button/Button'; import { Dialog, @@ -38,7 +40,6 @@ import { useMediaQuery } from '@/hooks/useMediaQuery'; import { Limits } from '@/utils/limits'; import type { SubmitHandler } from 'react-hook-form'; -import type { z } from 'zod'; type Props = { tenantId: string; diff --git a/src/modules/settings/users/FileInput.tsx b/src/modules/settings/users/FileInput.tsx index a98d59e8c..911a5f13f 100644 --- a/src/modules/settings/users/FileInput.tsx +++ b/src/modules/settings/users/FileInput.tsx @@ -6,8 +6,9 @@ import { zodResolver } from '@hookform/resolvers/zod'; import { FileUp } from 'lucide-react'; import { useForm } from 'react-hook-form'; import { usePapaParse } from 'react-papaparse'; +import { z } from 'zod'; -import { createUsers } from '@/actions'; +import { createUsers } from '@/actions/create-users/action'; import { Button } from '@/components/button/Button'; import { Dialog, @@ -31,7 +32,6 @@ import { csvUploadSchema } from '@/lib/validations'; import type { $Enums, User } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; -import type { z } from 'zod'; type Props = { tenantId: string; diff --git a/src/modules/settings/users/Update.tsx b/src/modules/settings/users/Update.tsx index 0815291f1..0cf7440d9 100644 --- a/src/modules/settings/users/Update.tsx +++ b/src/modules/settings/users/Update.tsx @@ -5,8 +5,10 @@ import { useEffect, useState } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; import { AtSign, UserIcon } from 'lucide-react'; import { Controller, useForm } from 'react-hook-form'; +import { z } from 'zod'; -import { updateUser, updateUserSchema } from '@/actions'; +import { updateUser } from '@/actions/update-user/action'; +import { updateUserSchema } from '@/actions/update-user/schema'; import { Button } from '@/components/button/Button'; import { Dialog, @@ -36,7 +38,6 @@ import { useMediaQuery } from '@/hooks/useMediaQuery'; import type { User } from '@prisma/client'; import type { SubmitHandler } from 'react-hook-form'; -import type { z } from 'zod'; type Props = { user: User; diff --git a/src/modules/settings/users/Users.tsx b/src/modules/settings/users/Users.tsx index 41c939050..c56098569 100644 --- a/src/modules/settings/users/Users.tsx +++ b/src/modules/settings/users/Users.tsx @@ -1,6 +1,6 @@ 'use client'; -import { deleteUser } from '@/actions'; +import { deleteUser } from '@/actions/delete-user/action'; import { Avatar, AvatarFallback, From b19dddb8303c6984751fbca94daf101586dfd95b Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 10 Nov 2024 17:32:02 +0100 Subject: [PATCH 321/326] :heavy_minus_sign: remove sentry dependecy --- package.json | 1 - pnpm-lock.yaml | 417 ------------------------------------------------- 2 files changed, 418 deletions(-) diff --git a/package.json b/package.json index 1150858c0..65645145b 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,6 @@ "@radix-ui/react-tabs": "^1.0.4", "@radix-ui/react-tooltip": "^1.0.7", "@react-email/components": "^0.0.25", - "@sentry/nextjs": "^7.102.1", "@slack/webhook": "^7.0.1", "@stripe/stripe-js": "^4.9.0", "@uiw/react-markdown-preview": "^5.0.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0439ab806..13c83464b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -59,9 +59,6 @@ importers: '@react-email/components': specifier: ^0.0.25 version: 0.0.25(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021) - '@sentry/nextjs': - specifier: ^7.102.1 - version: 7.119.0(next@15.0.1(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(webpack@5.94.0) '@slack/webhook': specifier: ^7.0.1 version: 7.0.3 @@ -1574,24 +1571,6 @@ packages: peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc - '@rollup/plugin-commonjs@24.0.0': - resolution: {integrity: sha512-0w0wyykzdyRRPHOb0cQt14mIBLujfAv6GgP6g8nvg/iBxEm112t3YPPq+Buqe2+imvElTka+bjNlJ/gB56TD8g==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.68.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/pluginutils@5.1.1': - resolution: {integrity: sha512-bVRmQqBIyGD+VMihdEV2IBurfIrdW9tD9yzJUL3CBRDbyPBVzQnBSMSgyUZHl1E335rpMRj7r4o683fXLYw8iw==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} @@ -1601,76 +1580,6 @@ packages: '@selderee/plugin-htmlparser2@0.11.0': resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} - '@sentry-internal/feedback@7.119.0': - resolution: {integrity: sha512-om8TkAU5CQGO8nkmr7qsSBVkP+/vfeS4JgtW3sjoTK0fhj26+DljR6RlfCGWtYQdPSP6XV7atcPTjbSnsmG9FQ==} - engines: {node: '>=12'} - - '@sentry-internal/replay-canvas@7.119.0': - resolution: {integrity: sha512-NL02VQx6ekPxtVRcsdp1bp5Tb5w6vnfBKSIfMKuDRBy5A10Uc3GSoy/c3mPyHjOxB84452A+xZSx6bliEzAnuA==} - engines: {node: '>=12'} - - '@sentry-internal/tracing@7.119.0': - resolution: {integrity: sha512-oKdFJnn+56f0DHUADlL8o9l8jTib3VDLbWQBVkjD9EprxfaCwt2m8L5ACRBdQ8hmpxCEo4I8/6traZ7qAdBUqA==} - engines: {node: '>=8'} - - '@sentry/browser@7.119.0': - resolution: {integrity: sha512-WwmW1Y4D764kVGeKmdsNvQESZiAn9t8LmCWO0ucBksrjL2zw9gBPtOpRcO6l064sCLeSxxzCN+kIxhRm1gDFEA==} - engines: {node: '>=8'} - - '@sentry/cli@1.77.3': - resolution: {integrity: sha512-c3eDqcDRmy4TFz2bFU5Y6QatlpoBPPa8cxBooaS4aMQpnIdLYPF1xhyyiW0LQlDUNc3rRjNF7oN5qKoaRoMTQQ==} - engines: {node: '>= 8'} - hasBin: true - - '@sentry/core@7.119.0': - resolution: {integrity: sha512-CS2kUv9rAJJEjiRat6wle3JATHypB0SyD7pt4cpX5y0dN5dZ1JrF57oLHRMnga9fxRivydHz7tMTuBhSSwhzjw==} - engines: {node: '>=8'} - - '@sentry/integrations@7.119.0': - resolution: {integrity: sha512-OHShvtsRW0A+ZL/ZbMnMqDEtJddPasndjq+1aQXw40mN+zeP7At/V1yPZyFaURy86iX7Ucxw5BtmzuNy7hLyTA==} - engines: {node: '>=8'} - - '@sentry/nextjs@7.119.0': - resolution: {integrity: sha512-D2P0LmgQbF/d7Ar6u2OKj+strM1id6OFfsHAKeTYd6KVipwc4YBpbS5OYkwH3BhtofCXvtfU3VmayVJD1onOiw==} - engines: {node: '>=8'} - peerDependencies: - next: ^10.0.8 || ^11.0 || ^12.0 || ^13.0 || ^14.0 - react: 16.x || 17.x || 18.x - webpack: '>= 4.0.0' - peerDependenciesMeta: - webpack: - optional: true - - '@sentry/node@7.119.0': - resolution: {integrity: sha512-9PFzN8xS6U0oZCflpVxS2SSIsHkCaj7qYBlsvHj4CTGWfao9ImwrU6+smy4qoG6oxwPfoVb5pOOMb4WpWOvXcQ==} - engines: {node: '>=8'} - - '@sentry/react@7.119.0': - resolution: {integrity: sha512-cf8Cei+qdSA26gx+IMAuc/k44PeBImNzIpXi3930SLhUe44ypT5OZ/44L6xTODHZzTIyMSJPduf59vT2+eW9yg==} - engines: {node: '>=8'} - peerDependencies: - react: 15.x || 16.x || 17.x || 18.x - - '@sentry/replay@7.119.0': - resolution: {integrity: sha512-BnNsYL+X5I4WCH6wOpY6HQtp4MgVt0NVlhLUsEyrvMUiTs0bPkDBrulsgZQBUKJsbOr3l9nHrFoNVB/0i6WNLA==} - engines: {node: '>=12'} - - '@sentry/types@7.119.0': - resolution: {integrity: sha512-27qQbutDBPKGbuJHROxhIWc1i0HJaGLA90tjMu11wt0E4UNxXRX+UQl4Twu68v4EV3CPvQcEpQfgsViYcXmq+w==} - engines: {node: '>=8'} - - '@sentry/utils@7.119.0': - resolution: {integrity: sha512-ZwyXexWn2ZIe2bBoYnXJVPc2esCSbKpdc6+0WJa8eutXfHq3FRKg4ohkfCBpfxljQGEfP1+kfin945lA21Ka+A==} - engines: {node: '>=8'} - - '@sentry/vercel-edge@7.119.0': - resolution: {integrity: sha512-9gi5SrBSHhHFYBq/+vG1qC9r80eEskCf7ti/qYSvXc6zij5ieilurF5tunyAle+ayxfHdPTdkhUnDZT6G9jdmA==} - engines: {node: '>=8'} - - '@sentry/webpack-plugin@1.21.0': - resolution: {integrity: sha512-x0PYIMWcsTauqxgl7vWUY6sANl+XGKtx7DCVnnY7aOIIlIna0jChTAPANTfA2QrK+VK+4I/4JxatCEZBnXh3Og==} - engines: {node: '>= 8'} - '@slack/types@2.14.0': resolution: {integrity: sha512-n0EGm7ENQRxlXbgKSrQZL69grzg1gHLAVd+GlRVQJ1NSORo0FrApR7wql/gaKdu2n4TO83Sq/AmeUOqD60aXUA==} engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} @@ -2120,10 +2029,6 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: @@ -2350,10 +2255,6 @@ packages: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} - chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} - chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -2468,9 +2369,6 @@ packages: common-path-prefix@3.0.0: resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} - commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -2926,9 +2824,6 @@ packages: estree-util-is-identifier-name@3.0.0: resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -3037,9 +2932,6 @@ packages: fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -3110,11 +3002,6 @@ packages: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true - glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - deprecated: Glob versions prior to v9 are no longer supported - globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -3225,9 +3112,6 @@ packages: resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==} engines: {node: '>=8'} - hoist-non-react-statics@3.3.2: - resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} - html-to-text@9.0.5: resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} engines: {node: '>=14'} @@ -3241,10 +3125,6 @@ packages: htmlparser2@8.0.2: resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} - https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} @@ -3261,9 +3141,6 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - immediate@3.0.6: - resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -3272,10 +3149,6 @@ packages: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -3404,9 +3277,6 @@ packages: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} - is-reference@1.2.1: - resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} - is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} @@ -3559,9 +3429,6 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - lie@3.1.1: - resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} - lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} @@ -3586,9 +3453,6 @@ packages: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} - localforage@1.10.0: - resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} - locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -3626,10 +3490,6 @@ packages: peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc - magic-string@0.27.0: - resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} - engines: {node: '>=12'} - make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} @@ -3809,10 +3669,6 @@ packages: minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - minimatch@9.0.1: resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} engines: {node: '>=16 || 14 >=14.17'} @@ -3828,10 +3684,6 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -3938,15 +3790,6 @@ packages: sass: optional: true - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} @@ -4277,10 +4120,6 @@ packages: resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} engines: {node: '>=6'} - progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} - prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} @@ -4504,11 +4343,6 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rollup@2.78.0: - resolution: {integrity: sha512-4+YfbQC9QEVvKTanHhIAFVUFSRsezvQF8vFOJwtGfb9Bb+r014S+qryr9PSmw8x6sMnPkmFBGAvIFVQxvJxjtg==} - engines: {node: '>=10.0.0'} - hasBin: true - run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -4629,10 +4463,6 @@ packages: stable-hash@0.0.4: resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} - stacktrace-parser@0.1.10: - resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} - engines: {node: '>=6'} - stop-iteration-iterator@1.0.0: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} engines: {node: '>= 0.4'} @@ -4821,9 +4651,6 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} @@ -4867,10 +4694,6 @@ packages: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} - type-fest@0.7.1: - resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} - engines: {node: '>=8'} - typed-array-buffer@1.0.2: resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} engines: {node: '>= 0.4'} @@ -5005,9 +4828,6 @@ packages: web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webpack-sources@3.2.3: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} @@ -5022,9 +4842,6 @@ packages: webpack-cli: optional: true - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} @@ -6642,25 +6459,6 @@ snapshots: dependencies: react: 19.0.0-rc-69d4b800-20241021 - '@rollup/plugin-commonjs@24.0.0(rollup@2.78.0)': - dependencies: - '@rollup/pluginutils': 5.1.1(rollup@2.78.0) - commondir: 1.0.1 - estree-walker: 2.0.2 - glob: 8.1.0 - is-reference: 1.2.1 - magic-string: 0.27.0 - optionalDependencies: - rollup: 2.78.0 - - '@rollup/pluginutils@5.1.1(rollup@2.78.0)': - dependencies: - '@types/estree': 1.0.6 - estree-walker: 2.0.2 - picomatch: 2.3.1 - optionalDependencies: - rollup: 2.78.0 - '@rtsao/scc@1.1.0': {} '@rushstack/eslint-patch@1.10.4': {} @@ -6670,129 +6468,6 @@ snapshots: domhandler: 5.0.3 selderee: 0.11.0 - '@sentry-internal/feedback@7.119.0': - dependencies: - '@sentry/core': 7.119.0 - '@sentry/types': 7.119.0 - '@sentry/utils': 7.119.0 - - '@sentry-internal/replay-canvas@7.119.0': - dependencies: - '@sentry/core': 7.119.0 - '@sentry/replay': 7.119.0 - '@sentry/types': 7.119.0 - '@sentry/utils': 7.119.0 - - '@sentry-internal/tracing@7.119.0': - dependencies: - '@sentry/core': 7.119.0 - '@sentry/types': 7.119.0 - '@sentry/utils': 7.119.0 - - '@sentry/browser@7.119.0': - dependencies: - '@sentry-internal/feedback': 7.119.0 - '@sentry-internal/replay-canvas': 7.119.0 - '@sentry-internal/tracing': 7.119.0 - '@sentry/core': 7.119.0 - '@sentry/integrations': 7.119.0 - '@sentry/replay': 7.119.0 - '@sentry/types': 7.119.0 - '@sentry/utils': 7.119.0 - - '@sentry/cli@1.77.3': - dependencies: - https-proxy-agent: 5.0.1 - mkdirp: 0.5.6 - node-fetch: 2.7.0 - progress: 2.0.3 - proxy-from-env: 1.1.0 - which: 2.0.2 - transitivePeerDependencies: - - encoding - - supports-color - - '@sentry/core@7.119.0': - dependencies: - '@sentry/types': 7.119.0 - '@sentry/utils': 7.119.0 - - '@sentry/integrations@7.119.0': - dependencies: - '@sentry/core': 7.119.0 - '@sentry/types': 7.119.0 - '@sentry/utils': 7.119.0 - localforage: 1.10.0 - - '@sentry/nextjs@7.119.0(next@15.0.1(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(webpack@5.94.0)': - dependencies: - '@rollup/plugin-commonjs': 24.0.0(rollup@2.78.0) - '@sentry/core': 7.119.0 - '@sentry/integrations': 7.119.0 - '@sentry/node': 7.119.0 - '@sentry/react': 7.119.0(react@19.0.0-rc-69d4b800-20241021) - '@sentry/types': 7.119.0 - '@sentry/utils': 7.119.0 - '@sentry/vercel-edge': 7.119.0 - '@sentry/webpack-plugin': 1.21.0 - chalk: 3.0.0 - next: 15.0.1(@babel/core@7.24.5)(@playwright/test@1.47.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021) - react: 19.0.0-rc-69d4b800-20241021 - resolve: 1.22.8 - rollup: 2.78.0 - stacktrace-parser: 0.1.10 - optionalDependencies: - webpack: 5.94.0 - transitivePeerDependencies: - - encoding - - supports-color - - '@sentry/node@7.119.0': - dependencies: - '@sentry-internal/tracing': 7.119.0 - '@sentry/core': 7.119.0 - '@sentry/integrations': 7.119.0 - '@sentry/types': 7.119.0 - '@sentry/utils': 7.119.0 - - '@sentry/react@7.119.0(react@19.0.0-rc-69d4b800-20241021)': - dependencies: - '@sentry/browser': 7.119.0 - '@sentry/core': 7.119.0 - '@sentry/types': 7.119.0 - '@sentry/utils': 7.119.0 - hoist-non-react-statics: 3.3.2 - react: 19.0.0-rc-69d4b800-20241021 - - '@sentry/replay@7.119.0': - dependencies: - '@sentry-internal/tracing': 7.119.0 - '@sentry/core': 7.119.0 - '@sentry/types': 7.119.0 - '@sentry/utils': 7.119.0 - - '@sentry/types@7.119.0': {} - - '@sentry/utils@7.119.0': - dependencies: - '@sentry/types': 7.119.0 - - '@sentry/vercel-edge@7.119.0': - dependencies: - '@sentry-internal/tracing': 7.119.0 - '@sentry/core': 7.119.0 - '@sentry/integrations': 7.119.0 - '@sentry/types': 7.119.0 - '@sentry/utils': 7.119.0 - - '@sentry/webpack-plugin@1.21.0': - dependencies: - '@sentry/cli': 1.77.3 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - encoding - - supports-color - '@slack/types@2.14.0': {} '@slack/webhook@7.0.3': @@ -7432,12 +7107,6 @@ snapshots: acorn@8.12.1: {} - agent-base@6.0.2: - dependencies: - debug: 4.3.7 - transitivePeerDependencies: - - supports-color - ajv-formats@2.1.1(ajv@8.17.1): optionalDependencies: ajv: 8.17.1 @@ -7689,11 +7358,6 @@ snapshots: escape-string-regexp: 1.0.5 supports-color: 5.5.0 - chalk@3.0.0: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - chalk@4.1.2: dependencies: ansi-styles: 4.3.0 @@ -7794,8 +7458,6 @@ snapshots: common-path-prefix@3.0.0: {} - commondir@1.0.1: {} - concat-map@0.0.1: {} config-chain@1.1.13: @@ -8422,8 +8084,6 @@ snapshots: estree-util-is-identifier-name@3.0.0: {} - estree-walker@2.0.2: {} - esutils@2.0.3: {} eventemitter3@5.0.1: {} @@ -8539,8 +8199,6 @@ snapshots: fraction.js@4.3.7: {} - fs.realpath@1.0.0: {} - fsevents@2.3.2: optional: true @@ -8613,14 +8271,6 @@ snapshots: package-json-from-dist: 1.0.0 path-scurry: 1.11.1 - glob@8.1.0: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 - globals@11.12.0: {} globals@13.24.0: @@ -8815,10 +8465,6 @@ snapshots: hexoid@1.0.0: {} - hoist-non-react-statics@3.3.2: - dependencies: - react-is: 16.13.1 - html-to-text@9.0.5: dependencies: '@selderee/plugin-htmlparser2': 0.11.0 @@ -8838,13 +8484,6 @@ snapshots: domutils: 3.1.0 entities: 4.5.0 - https-proxy-agent@5.0.1: - dependencies: - agent-base: 6.0.2 - debug: 4.3.7 - transitivePeerDependencies: - - supports-color - human-signals@5.0.0: {} husky@9.1.6: {} @@ -8853,8 +8492,6 @@ snapshots: ignore@5.3.2: {} - immediate@3.0.6: {} - import-fresh@3.3.0: dependencies: parent-module: 1.0.1 @@ -8862,11 +8499,6 @@ snapshots: imurmurhash@0.1.4: {} - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - inherits@2.0.4: {} ini@1.3.8: {} @@ -8980,10 +8612,6 @@ snapshots: is-plain-obj@4.1.0: {} - is-reference@1.2.1: - dependencies: - '@types/estree': 1.0.6 - is-regex@1.1.4: dependencies: call-bind: 1.0.7 @@ -9127,10 +8755,6 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - lie@3.1.1: - dependencies: - immediate: 3.0.6 - lilconfig@2.1.0: {} lilconfig@3.1.2: {} @@ -9163,10 +8787,6 @@ snapshots: loader-runner@4.3.0: {} - localforage@1.10.0: - dependencies: - lie: 3.1.1 - locate-path@6.0.0: dependencies: p-locate: 5.0.0 @@ -9206,10 +8826,6 @@ snapshots: dependencies: react: 19.0.0-rc-69d4b800-20241021 - magic-string@0.27.0: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - make-error@1.3.6: {} markdown-table@3.0.3: {} @@ -9589,10 +9205,6 @@ snapshots: dependencies: brace-expansion: 1.1.11 - minimatch@5.1.6: - dependencies: - brace-expansion: 2.0.1 - minimatch@9.0.1: dependencies: brace-expansion: 2.0.1 @@ -9605,10 +9217,6 @@ snapshots: minipass@7.1.2: {} - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - ms@2.1.3: {} mz@2.7.0: @@ -9705,10 +9313,6 @@ snapshots: - '@babel/core' - babel-plugin-macros - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - node-releases@2.0.18: {} nopt@7.2.1: @@ -9973,8 +9577,6 @@ snapshots: prismjs@1.29.0: {} - progress@2.0.3: {} - prop-types@15.8.1: dependencies: loose-envify: 1.4.0 @@ -10300,10 +9902,6 @@ snapshots: rfdc@1.4.1: {} - rollup@2.78.0: - optionalDependencies: - fsevents: 2.3.3 - run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -10475,10 +10073,6 @@ snapshots: stable-hash@0.0.4: {} - stacktrace-parser@0.1.10: - dependencies: - type-fest: 0.7.1 - stop-iteration-iterator@1.0.0: dependencies: internal-slot: 1.0.7 @@ -10693,8 +10287,6 @@ snapshots: dependencies: is-number: 7.0.0 - tr46@0.0.3: {} - trim-lines@3.0.1: {} trough@2.2.0: {} @@ -10738,8 +10330,6 @@ snapshots: type-fest@0.20.2: {} - type-fest@0.7.1: {} - typed-array-buffer@1.0.2: dependencies: call-bind: 1.0.7 @@ -10909,8 +10499,6 @@ snapshots: web-namespaces@2.0.1: {} - webidl-conversions@3.0.1: {} - webpack-sources@3.2.3: {} webpack@5.94.0: @@ -10943,11 +10531,6 @@ snapshots: - esbuild - uglify-js - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - which-boxed-primitive@1.0.2: dependencies: is-bigint: 1.0.4 From 3f6f6c1f66a945fe31d199162462224a292cad5f Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 10 Nov 2024 17:32:26 +0100 Subject: [PATCH 322/326] :wrench: remove sentry --- .env.sample | 3 --- .gitignore | 3 --- next.config.js | 18 ------------------ sentry.client.config.ts | 15 --------------- sentry.edge.config.ts | 7 ------- sentry.server.config.ts | 7 ------- src/types/environment.d.ts | 3 --- 7 files changed, 56 deletions(-) delete mode 100644 sentry.client.config.ts delete mode 100644 sentry.edge.config.ts delete mode 100644 sentry.server.config.ts diff --git a/.env.sample b/.env.sample index 73ad37ad7..bb1abd64c 100644 --- a/.env.sample +++ b/.env.sample @@ -19,9 +19,6 @@ NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY= STRIPE_SECRET_KEY= STRIPE_WEBHOOK_SECRET= -# Sentry auth -SENTRY_AUTH_TOKEN= -SENTRY_IGNORE_API_RESOLUTION_ERROR=1 # Resend key RESEND_API_KEY= diff --git a/.gitignore b/.gitignore index d6de185ac..f03d58530 100644 --- a/.gitignore +++ b/.gitignore @@ -24,8 +24,5 @@ out/ /playwright-report/ /playwright -# Sentry Config File -.sentryclirc - # VSCode .vscode \ No newline at end of file diff --git a/next.config.js b/next.config.js index 9cc923c42..7c1383946 100644 --- a/next.config.js +++ b/next.config.js @@ -1,6 +1,5 @@ /** @type {import('next').NextConfig} */ const removeImports = require('next-remove-imports')(); -const { withSentryConfig } = require('@sentry/nextjs'); const nextConfig = removeImports({ transpilePackages: ['@mdxeditor/editor', 'react-diff-view'], @@ -25,21 +24,4 @@ const nextConfig = removeImports({ }, }); -// const sentryConfig = withSentryConfig( -// nextConfig, -// { -// authToken: process.env.SENTRY_AUTH_TOKEN, -// silent: true, -// org: 'thibaud-brault', -// project: 'faqmaker', -// }, -// { -// widenClientFileUpload: true, -// transpileClientSDK: true, -// tunnelRoute: '/monitoring', -// hideSourceMaps: true, -// disableLogger: true, -// }, -// ); - module.exports = nextConfig; diff --git a/sentry.client.config.ts b/sentry.client.config.ts deleted file mode 100644 index 8a0899a45..000000000 --- a/sentry.client.config.ts +++ /dev/null @@ -1,15 +0,0 @@ -import * as Sentry from '@sentry/nextjs'; - -Sentry.init({ - dsn: 'https://205614d8b705aa1e52a68d3affaef461@o4506702112489472.ingest.sentry.io/4506704576380928', - tracesSampleRate: 1, - debug: false, - replaysOnErrorSampleRate: 1.0, - replaysSessionSampleRate: 0.1, - integrations: [ - Sentry.replayIntegration({ - maskAllText: true, - blockAllMedia: true, - }), - ], -}); diff --git a/sentry.edge.config.ts b/sentry.edge.config.ts deleted file mode 100644 index 620e0f92b..000000000 --- a/sentry.edge.config.ts +++ /dev/null @@ -1,7 +0,0 @@ -import * as Sentry from '@sentry/nextjs'; - -Sentry.init({ - dsn: 'https://205614d8b705aa1e52a68d3affaef461@o4506702112489472.ingest.sentry.io/4506704576380928', - tracesSampleRate: 1, - debug: false, -}); diff --git a/sentry.server.config.ts b/sentry.server.config.ts deleted file mode 100644 index 620e0f92b..000000000 --- a/sentry.server.config.ts +++ /dev/null @@ -1,7 +0,0 @@ -import * as Sentry from '@sentry/nextjs'; - -Sentry.init({ - dsn: 'https://205614d8b705aa1e52a68d3affaef461@o4506702112489472.ingest.sentry.io/4506704576380928', - tracesSampleRate: 1, - debug: false, -}); diff --git a/src/types/environment.d.ts b/src/types/environment.d.ts index 68117a616..cb4ef7394 100644 --- a/src/types/environment.d.ts +++ b/src/types/environment.d.ts @@ -17,9 +17,6 @@ declare global { STRIPE_SECRET_KEY: string; STRIPE_WEBHOOK_SECRET: string; - SENTRY_AUTH_TOKEN: string; - SENTRY_IGNORE_API_RESOLUTION_ERROR: number; - PROJECT_ID: string; CLIENT_EMAIL: string; PRIVATE_KEY: string; From bce2d3cef3fe7d6d5fcdb0c2b627609bc67d3652 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 10 Nov 2024 17:33:12 +0100 Subject: [PATCH 323/326] :rotating_light: run lint + prettier --- src/app/page.tsx | 1 - src/app/settings/page.tsx | 1 - 2 files changed, 2 deletions(-) diff --git a/src/app/page.tsx b/src/app/page.tsx index 7e0ac930e..ccac53530 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,6 +1,5 @@ import { redirect } from 'next/navigation'; - import { getFavorites } from '@/actions/get-favorites'; import { getMe } from '@/actions/get-me'; import { getPaginatedNodes } from '@/actions/get-nodes'; diff --git a/src/app/settings/page.tsx b/src/app/settings/page.tsx index 786982265..e668f61a0 100644 --- a/src/app/settings/page.tsx +++ b/src/app/settings/page.tsx @@ -1,6 +1,5 @@ import { redirect } from 'next/navigation'; - import { getIntegration } from '@/actions/get-integration'; import { getMe } from '@/actions/get-me'; import { getTags } from '@/actions/get-tags'; From 527e5ed378cd73404cfe0c9f6a284293c1bdd9aa Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 10 Nov 2024 17:38:59 +0100 Subject: [PATCH 324/326] :bug: fix wrong path --- src/components/alert/Alert.tsx | 2 +- src/components/field/Field.tsx | 4 ++-- src/modules/navigation/PageChange.tsx | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/components/alert/Alert.tsx b/src/components/alert/Alert.tsx index 5be6627ce..faced5848 100644 --- a/src/components/alert/Alert.tsx +++ b/src/components/alert/Alert.tsx @@ -12,7 +12,7 @@ import { VariantProps } from 'class-variance-authority'; import { cn } from '@/utils/cn'; -import { buttonVariants } from '../button'; +import { buttonVariants } from '../button/Button'; const AlertDialog = AlertDialogPrimitive.Root; diff --git a/src/components/field/Field.tsx b/src/components/field/Field.tsx index e34fcefbf..438815c0a 100644 --- a/src/components/field/Field.tsx +++ b/src/components/field/Field.tsx @@ -2,8 +2,8 @@ import type { ReactNode } from 'react'; import { HelpCircle } from 'lucide-react'; -import { Label } from '../label'; -import { Tooltip, TooltipContent, TooltipTrigger } from '../tooltip'; +import { Label } from '../label/Label'; +import { Tooltip, TooltipContent, TooltipTrigger } from '../tooltip/Tooltip'; type Props = { children: ReactNode; diff --git a/src/modules/navigation/PageChange.tsx b/src/modules/navigation/PageChange.tsx index 913fe2ae1..4e2db410f 100644 --- a/src/modules/navigation/PageChange.tsx +++ b/src/modules/navigation/PageChange.tsx @@ -1,5 +1,3 @@ -import { useWarnIfUnsavedChanges } from '@/hooks/useWarnIfUnsavedChanges'; - import { AlertDialog, AlertDialogAction, @@ -9,7 +7,9 @@ import { AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, -} from '../../components/alert/Alert'; +} from '@/components/alert/Alert'; +import { useWarnIfUnsavedChanges } from '@/hooks/useWarnIfUnsavedChanges'; + type Props = { isDirty: boolean; From 850b40d5bd5446fe289042d5b0230b9bcfc56942 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 10 Nov 2024 17:39:40 +0100 Subject: [PATCH 325/326] :construction_worker: delete ci file --- .github/workflows/deploy.yml | 36 ------------------------------------ 1 file changed, 36 deletions(-) delete mode 100644 .github/workflows/deploy.yml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml deleted file mode 100644 index d2e13e576..000000000 --- a/.github/workflows/deploy.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: Deploy - -on: - push: - branches: main - -jobs: - deploy: - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - runs-on: ubuntu-latest - - steps: - - name: Checkout repo - uses: actions/checkout@v4 - uses: pnpm/action-setup@v3 - with: - version: 8 - - - name: Set up Node - uses: actions/setup-node@v4 - with: - node-version: lts/* - cache: 'pnpm' - - - name: Install dependencies - run: pnpm install - - - name: Set up database - run: pnpm migrate:deploy - env: - DATABASE_URL: ${{ secrets.DATABASE_URL }} - - - name: Apply database changes - run: pnpm build From f8fbbcd0431851301990cd1d502ce994efee3b44 Mon Sep 17 00:00:00 2001 From: Thibaud Brault Date: Sun, 10 Nov 2024 17:40:46 +0100 Subject: [PATCH 326/326] :green_heart: comment tests in CI --- .github/workflows/main.yml | 114 ++++++++++++++++++------------------- 1 file changed, 57 insertions(+), 57 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 380819509..c0227323a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - + - name: Set up repo uses: ./.github/actions/build @@ -48,59 +48,59 @@ jobs: - name: Format code run: pnpm prettier - playwright: - name: Playwright - runs-on: ubuntu-latest - services: - postgres: - image: postgres - env: - POSTGRES_DB: db - POSTGRES_USER: postgres - POSTGRES_PASSWORD: postgres - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - ports: - - 5432:5432 - - container: - image: mcr.microsoft.com/playwright:v1.41.0-jammy - - steps: - - uses: actions/checkout@v4 - - - name: Set up repo - uses: ./.github/actions/build - - - name: Install Playwright - run: pnpm install:playwright:deps - - - name: Build application - run: pnpm build - - - name: Start application - run: pnpm start & - - - name: Push database - run: pnpm push - - - name: Run Playwright tests - run: pnpm test - env: - HOME: /root - TEST_EMAIL: ${{secrets.TEST_EMAIL}} - TEST_PASSWORD: ${{secrets.TEST_PASSWORD}} - AUTH_GOOGLE_SECRET: ${{secrets.AUTH_GOOGLE_SECRET}} - AUTH_GOOGLE_ID: ${{secrets.AUTH_GOOGLE_ID}} - NEXTAUTH_URL: ${{secrets.NEXTAUTH_URL}} - NEXTAUTH_SECRET: ${{secrets.NEXTAUTH_SECRET}} - - - uses: actions/upload-artifact@v4 - if: always() - with: - name: playwright-report - path: playwright-report/ - retention-days: 30 \ No newline at end of file + # playwright: + # name: Playwright + # runs-on: ubuntu-latest + # services: + # postgres: + # image: postgres + # env: + # POSTGRES_DB: db + # POSTGRES_USER: postgres + # POSTGRES_PASSWORD: postgres + # options: >- + # --health-cmd pg_isready + # --health-interval 10s + # --health-timeout 5s + # --health-retries 5 + # ports: + # - 5432:5432 + + # container: + # image: mcr.microsoft.com/playwright:v1.41.0-jammy + + # steps: + # - uses: actions/checkout@v4 + + # - name: Set up repo + # uses: ./.github/actions/build + + # - name: Install Playwright + # run: pnpm install:playwright:deps + + # - name: Build application + # run: pnpm build + + # - name: Start application + # run: pnpm start & + + # - name: Push database + # run: pnpm push + + # - name: Run Playwright tests + # run: pnpm test + # env: + # HOME: /root + # TEST_EMAIL: ${{secrets.TEST_EMAIL}} + # TEST_PASSWORD: ${{secrets.TEST_PASSWORD}} + # AUTH_GOOGLE_SECRET: ${{secrets.AUTH_GOOGLE_SECRET}} + # AUTH_GOOGLE_ID: ${{secrets.AUTH_GOOGLE_ID}} + # NEXTAUTH_URL: ${{secrets.NEXTAUTH_URL}} + # NEXTAUTH_SECRET: ${{secrets.NEXTAUTH_SECRET}} + + # - uses: actions/upload-artifact@v4 + # if: always() + # with: + # name: playwright-report + # path: playwright-report/ + # retention-days: 30