From 30dff2d5d7ceee03e1af7cb65b48b8a151bfb217 Mon Sep 17 00:00:00 2001 From: Baptiste Arnaud Date: Sat, 24 Sep 2022 08:58:23 +0200 Subject: [PATCH] :bug: (limits) Fix storage limit trigger and e2e tests --- .../components/analytics/AnalyticsContent.tsx | 11 +- .../FolderContent/CreateFolderButton.tsx | 6 +- .../BillingContent/UsageContent/useUsage.ts | 2 +- .../queries/useInvoicesQuery.ts | 2 +- .../MembersList/MembersList.tsx | 24 +- .../editor/BlocksSideBar/BlockTypeLabel.tsx | 10 +- .../settings/GeneralSettingsForm.tsx | 28 +- apps/builder/components/share/EditableUrl.tsx | 5 +- .../builder/components/share/ShareContent.tsx | 29 +- .../shared/Graph/Edges/DropOffEdge.tsx | 31 +- .../components/shared/Graph/Edges/Edges.tsx | 1 - apps/builder/components/shared/PlanTag.tsx | 10 +- .../shared/buttons/UpgradeButton.tsx | 10 +- .../shared/modals/ChangePlanModal.tsx | 3 +- apps/builder/contexts/WorkspaceContext.tsx | 18 +- .../workspaces/[workspaceId]/invitations.ts | 39 +- apps/builder/playwright/services/browser.ts | 2 +- apps/builder/playwright/services/database.ts | 41 +- .../playwright/tests/accountSettings.spec.ts | 5 +- .../playwright/tests/analytics.spec.ts | 30 + apps/builder/playwright/tests/billing.spec.ts | 70 +- .../playwright/tests/collaboration.spec.ts | 26 +- .../playwright/tests/customDomains.spec.ts | 6 +- .../playwright/tests/dashboard.spec.ts | 157 +- apps/builder/playwright/tests/editor.spec.ts | 330 +-- .../playwright/tests/inputs/payment.spec.ts | 2 +- apps/builder/playwright/tests/results.spec.ts | 4 +- .../builder/playwright/tests/settings.spec.ts | 8 +- .../playwright/tests/workspaces.spec.ts | 4 +- apps/builder/services/workspace/member.ts | 4 +- apps/builder/services/workspace/workspace.ts | 5 +- apps/docs/package.json | 26 +- .../PricingPage/PricingCard/index.tsx | 2 - apps/landing-page/pages/pricing.tsx | 1 - .../blocks/[blockId]/storage/upload-url.ts | 14 +- .../pages/api/typebots/[typebotId]/results.ts | 14 +- apps/viewer/playwright/services/browser.ts | 6 +- apps/viewer/playwright/services/database.ts | 24 +- apps/viewer/playwright/tests/api.spec.ts | 13 +- .../playwright/tests/fileUpload.spec.ts | 5 +- .../viewer/playwright/tests/hugeBlock.spec.ts | 3 - apps/viewer/playwright/tests/limits.spec.ts | 4 +- apps/viewer/playwright/tests/metadata.spec.ts | 11 +- .../tests/predefinedVariables.spec.ts | 3 - .../viewer/playwright/tests/sendEmail.spec.ts | 3 - apps/viewer/playwright/tests/settings.spec.ts | 3 - .../playwright/tests/typebotLink.spec.ts | 3 - apps/viewer/playwright/tests/webhook.spec.ts | 3 - .../src/components/ConversationContainer.tsx | 5 +- packages/utils/package.json | 1 + packages/utils/playwright.ts | 21 +- pnpm-lock.yaml | 2141 ++++------------- 52 files changed, 1024 insertions(+), 2205 deletions(-) create mode 100644 apps/builder/playwright/tests/analytics.spec.ts diff --git a/apps/builder/components/analytics/AnalyticsContent.tsx b/apps/builder/components/analytics/AnalyticsContent.tsx index 907845595..9c32015da 100644 --- a/apps/builder/components/analytics/AnalyticsContent.tsx +++ b/apps/builder/components/analytics/AnalyticsContent.tsx @@ -2,7 +2,10 @@ import { Flex, Spinner, useDisclosure } from '@chakra-ui/react' import { StatsCards } from 'components/analytics/StatsCards' import { Graph } from 'components/shared/Graph' import { useToast } from 'components/shared/hooks/useToast' -import { ChangePlanModal } from 'components/shared/modals/ChangePlanModal' +import { + ChangePlanModal, + LimitReached, +} from 'components/shared/modals/ChangePlanModal' import { GraphProvider, GroupsCoordinatesProvider } from 'contexts/GraphContext' import { useTypebot } from 'contexts/TypebotContext/TypebotContext' import { Stats } from 'models' @@ -49,7 +52,11 @@ export const AnalyticsContent = ({ stats }: { stats?: Stats }) => { )} - + ) diff --git a/apps/builder/components/dashboard/FolderContent/CreateFolderButton.tsx b/apps/builder/components/dashboard/FolderContent/CreateFolderButton.tsx index e3da3bec1..1c2c75597 100644 --- a/apps/builder/components/dashboard/FolderContent/CreateFolderButton.tsx +++ b/apps/builder/components/dashboard/FolderContent/CreateFolderButton.tsx @@ -1,10 +1,12 @@ -import { Button, HStack, Tag, useDisclosure, Text } from '@chakra-ui/react' +import { Button, HStack, useDisclosure, Text } from '@chakra-ui/react' import { FolderPlusIcon } from 'assets/icons' import { LimitReached, ChangePlanModal, } from 'components/shared/modals/ChangePlanModal' +import { PlanTag } from 'components/shared/PlanTag' import { useWorkspace } from 'contexts/WorkspaceContext' +import { Plan } from 'db' import React from 'react' import { isFreePlan } from 'services/workspace' @@ -26,7 +28,7 @@ export const CreateFolderButton = ({ isLoading, onClick }: Props) => { > Create a folder - {isFreePlan(workspace) && Pro} + {isFreePlan(workspace) && } { { totalChatsUsed: number; totalStorageUsed: number }, Error >(workspaceId ? `/api/workspaces/${workspaceId}/usage` : null, fetcher, { - dedupingInterval: env('E2E_TEST') === 'enabled' ? 0 : undefined, + dedupingInterval: env('E2E_TEST') === 'true' ? 0 : undefined, }) return { data, diff --git a/apps/builder/components/dashboard/WorkspaceSettingsModal/BillingContent/queries/useInvoicesQuery.ts b/apps/builder/components/dashboard/WorkspaceSettingsModal/BillingContent/queries/useInvoicesQuery.ts index 184dba0da..8b4640821 100644 --- a/apps/builder/components/dashboard/WorkspaceSettingsModal/BillingContent/queries/useInvoicesQuery.ts +++ b/apps/builder/components/dashboard/WorkspaceSettingsModal/BillingContent/queries/useInvoicesQuery.ts @@ -14,7 +14,7 @@ export const useInvoicesQuery = (stripeId?: string | null) => { stripeId ? `/api/stripe/invoices?stripeId=${stripeId}` : null, fetcher, { - dedupingInterval: env('E2E_TEST') === 'enabled' ? 0 : undefined, + dedupingInterval: env('E2E_TEST') === 'true' ? 0 : undefined, } ) return { diff --git a/apps/builder/components/dashboard/WorkspaceSettingsModal/MembersList/MembersList.tsx b/apps/builder/components/dashboard/WorkspaceSettingsModal/MembersList/MembersList.tsx index cba5f9ac0..913445c8d 100644 --- a/apps/builder/components/dashboard/WorkspaceSettingsModal/MembersList/MembersList.tsx +++ b/apps/builder/components/dashboard/WorkspaceSettingsModal/MembersList/MembersList.tsx @@ -24,7 +24,7 @@ export const MembersList = () => { }) const handleDeleteMemberClick = (memberId: string) => async () => { - if (!workspace || !members || !invitations) return + if (!workspace) return await deleteMember(workspace.id, memberId) mutate({ members: members.filter((m) => m.userId !== memberId), @@ -34,7 +34,7 @@ export const MembersList = () => { const handleSelectNewRole = (memberId: string) => async (role: WorkspaceRole) => { - if (!workspace || !members || !invitations) return + if (!workspace) return await updateMember(workspace.id, { userId: memberId, role }) mutate({ members: members.map((m) => @@ -45,7 +45,7 @@ export const MembersList = () => { } const handleDeleteInvitationClick = (id: string) => async () => { - if (!workspace || !members || !invitations) return + if (!workspace) return await deleteInvitation({ workspaceId: workspace.id, id }) mutate({ invitations: invitations.filter((i) => i.id !== id), @@ -55,7 +55,7 @@ export const MembersList = () => { const handleSelectNewInvitationRole = (id: string) => async (type: WorkspaceRole) => { - if (!workspace || !members || !invitations) return + if (!workspace) return await updateInvitation({ workspaceId: workspace.id, id, type }) mutate({ invitations: invitations.map((i) => (i.id === id ? { ...i, type } : i)), @@ -63,17 +63,15 @@ export const MembersList = () => { }) } - const handleNewInvitation = (invitation: WorkspaceInvitation) => { - if (!members || !invitations) return - mutate({ + const handleNewInvitation = async (invitation: WorkspaceInvitation) => { + await mutate({ members, invitations: [...invitations, invitation], }) } - const handleNewMember = (member: Member) => { - if (!members || !invitations) return - mutate({ + const handleNewMember = async (member: Member) => { + await mutate({ members: [...members, member], invitations, }) @@ -81,7 +79,7 @@ export const MembersList = () => { const canInviteNewMember = checkCanInviteMember({ plan: workspace?.plan, - currentMembersCount: [...(members ?? []), ...(invitations ?? [])].length, + currentMembersCount: [...members, ...invitations].length, }) return ( @@ -103,7 +101,7 @@ export const MembersList = () => { isLocked={!canInviteNewMember} /> )} - {members?.map((member) => ( + {members.map((member) => ( { canEdit={canEdit} /> ))} - {invitations?.map((invitation) => ( + {invitations.map((invitation) => ( { File - {isFreePlan(workspace) && ( - - Pro - - )} + {isFreePlan(workspace) && } ) diff --git a/apps/builder/components/settings/GeneralSettingsForm.tsx b/apps/builder/components/settings/GeneralSettingsForm.tsx index b60e43528..959167f26 100644 --- a/apps/builder/components/settings/GeneralSettingsForm.tsx +++ b/apps/builder/components/settings/GeneralSettingsForm.tsx @@ -1,14 +1,12 @@ +import { Flex, FormLabel, Stack, Switch, useDisclosure } from '@chakra-ui/react' import { - Flex, - FormLabel, - Stack, - Switch, - Tag, - useDisclosure, -} from '@chakra-ui/react' -import { ChangePlanModal } from 'components/shared/modals/ChangePlanModal' + ChangePlanModal, + LimitReached, +} from 'components/shared/modals/ChangePlanModal' +import { PlanTag } from 'components/shared/PlanTag' import { SwitchWithLabel } from 'components/shared/SwitchWithLabel' import { useWorkspace } from 'contexts/WorkspaceContext' +import { Plan } from 'db' import { GeneralSettings } from 'models' import React from 'react' import { isFreePlan } from 'services/workspace' @@ -25,9 +23,9 @@ export const GeneralSettingsForm = ({ }: Props) => { const { isOpen, onOpen, onClose } = useDisclosure() const { workspace } = useWorkspace() - const isUserFreePlan = isFreePlan(workspace) + const isWorkspaceFreePlan = isFreePlan(workspace) const handleSwitchChange = () => { - if (generalSettings?.isBrandingEnabled && isUserFreePlan) return + if (generalSettings?.isBrandingEnabled && isWorkspaceFreePlan) return onGeneralSettingsChange({ ...generalSettings, isBrandingEnabled: !generalSettings?.isBrandingEnabled, @@ -56,15 +54,19 @@ export const GeneralSettingsForm = ({ return ( - + Typebot.io branding{' '} - {isUserFreePlan && Pro} + {isWorkspaceFreePlan && } diff --git a/apps/builder/components/share/ShareContent.tsx b/apps/builder/components/share/ShareContent.tsx index d9b67b9a3..aae9a8d35 100644 --- a/apps/builder/components/share/ShareContent.tsx +++ b/apps/builder/components/share/ShareContent.tsx @@ -4,18 +4,20 @@ import { HStack, IconButton, Stack, - Tag, Wrap, Text, } from '@chakra-ui/react' import { TrashIcon } from 'assets/icons' import { UpgradeButton } from 'components/shared/buttons/UpgradeButton' import { useToast } from 'components/shared/hooks/useToast' +import { LimitReached } from 'components/shared/modals/ChangePlanModal' +import { PlanTag } from 'components/shared/PlanTag' import { useTypebot } from 'contexts/TypebotContext/TypebotContext' import { useWorkspace } from 'contexts/WorkspaceContext' +import { Plan } from 'db' import React from 'react' import { parseDefaultPublicId } from 'services/typebots' -import { isFreePlan } from 'services/workspace' +import { isWorkspaceProPlan } from 'services/workspace' import { getViewerUrl, isDefined, isNotDefined } from 'utils' import { CustomDomainsDropdown } from './customDomain/CustomDomainsDropdown' import { EditableUrl } from './EditableUrl' @@ -80,19 +82,18 @@ export const ShareContent = () => { /> )} - {isFreePlan(workspace) ? ( - - Add my domain{' '} - Pro - + {isWorkspaceProPlan(workspace) && + isNotDefined(typebot?.customDomain) ? ( + ) : ( - <> - {isNotDefined(typebot?.customDomain) && ( - - )} - + + Add my domain + )} diff --git a/apps/builder/components/shared/Graph/Edges/DropOffEdge.tsx b/apps/builder/components/shared/Graph/Edges/DropOffEdge.tsx index b077fb3d2..2555d0d84 100644 --- a/apps/builder/components/shared/Graph/Edges/DropOffEdge.tsx +++ b/apps/builder/components/shared/Graph/Edges/DropOffEdge.tsx @@ -9,7 +9,7 @@ import { computeSourceCoordinates, computeDropOffPath, } from 'services/graph' -import { isFreePlan } from 'services/workspace' +import { isWorkspaceProPlan } from 'services/workspace' import { byId, isDefined } from 'utils' type Props = { @@ -28,7 +28,7 @@ export const DropOffEdge = ({ const { sourceEndpoints, graphPosition } = useGraph() const { publishedTypebot } = useTypebot() - const isUserOnFreePlan = isFreePlan(workspace) + const isProPlan = isWorkspaceProPlan(workspace) const totalAnswers = useMemo( () => answersCounts.find((a) => a.groupId === groupId)?.totalAnswers, @@ -95,7 +95,7 @@ export const DropOffEdge = ({ > - {isUserOnFreePlan ? 'X' : dropOffRate}% + + {isProPlan ? ( + dropOffRate + ) : ( + + X + + )} + % + - {isUserOnFreePlan ? 'n' : totalDroppedUser} users + {isProPlan ? ( + totalDroppedUser + ) : ( + + NN + + )}{' '} + users diff --git a/apps/builder/components/shared/Graph/Edges/Edges.tsx b/apps/builder/components/shared/Graph/Edges/Edges.tsx index e981e7a98..4204b9a8d 100644 --- a/apps/builder/components/shared/Graph/Edges/Edges.tsx +++ b/apps/builder/components/shared/Graph/Edges/Edges.tsx @@ -25,7 +25,6 @@ export const Edges = ({ pos="absolute" left="0" top="0" - pointerEvents="none" shapeRendering="geometricPrecision" > diff --git a/apps/builder/components/shared/PlanTag.tsx b/apps/builder/components/shared/PlanTag.tsx index d56972a66..fe272cd93 100644 --- a/apps/builder/components/shared/PlanTag.tsx +++ b/apps/builder/components/shared/PlanTag.tsx @@ -1,12 +1,12 @@ -import { Tag } from '@chakra-ui/react' +import { Tag, TagProps } from '@chakra-ui/react' import { Plan } from 'db' -export const PlanTag = ({ plan }: { plan?: Plan }) => { +export const PlanTag = ({ plan, ...props }: { plan?: Plan } & TagProps) => { switch (plan) { case Plan.LIFETIME: case Plan.PRO: { return ( - + Pro ) @@ -14,14 +14,14 @@ export const PlanTag = ({ plan }: { plan?: Plan }) => { case Plan.OFFERED: case Plan.STARTER: { return ( - + Starter ) } default: { return ( - + Free ) diff --git a/apps/builder/components/shared/buttons/UpgradeButton.tsx b/apps/builder/components/shared/buttons/UpgradeButton.tsx index 7b1362f86..680aaae9c 100644 --- a/apps/builder/components/shared/buttons/UpgradeButton.tsx +++ b/apps/builder/components/shared/buttons/UpgradeButton.tsx @@ -5,9 +5,9 @@ import { isNotDefined } from 'utils' import { ChangePlanModal } from '../modals/ChangePlanModal' import { LimitReached } from '../modals/ChangePlanModal' -type Props = { type?: LimitReached } & ButtonProps +type Props = { limitReachedType?: LimitReached } & ButtonProps -export const UpgradeButton = ({ type, ...props }: Props) => { +export const UpgradeButton = ({ limitReachedType, ...props }: Props) => { const { isOpen, onOpen, onClose } = useDisclosure() const { workspace } = useWorkspace() return ( @@ -18,7 +18,11 @@ export const UpgradeButton = ({ type, ...props }: Props) => { onClick={onOpen} > {props.children ?? 'Upgrade'} - + ) } diff --git a/apps/builder/components/shared/modals/ChangePlanModal.tsx b/apps/builder/components/shared/modals/ChangePlanModal.tsx index 0a2e7e523..ac06cfa52 100644 --- a/apps/builder/components/shared/modals/ChangePlanModal.tsx +++ b/apps/builder/components/shared/modals/ChangePlanModal.tsx @@ -13,9 +13,10 @@ import { ChangePlanForm } from 'components/shared/ChangePlanForm' export enum LimitReached { BRAND = 'remove branding', - CUSTOM_DOMAIN = 'add custom domain', + CUSTOM_DOMAIN = 'add custom domains', FOLDER = 'create folders', FILE_INPUT = 'use file input blocks', + ANALYTICS = 'unlock in-depth analytics', } type ChangePlanModalProps = { diff --git a/apps/builder/contexts/WorkspaceContext.tsx b/apps/builder/contexts/WorkspaceContext.tsx index 192997fa3..5e6e89708 100644 --- a/apps/builder/contexts/WorkspaceContext.tsx +++ b/apps/builder/contexts/WorkspaceContext.tsx @@ -37,7 +37,11 @@ const workspaceContext = createContext<{ //@ts-ignore }>({}) -export const WorkspaceContext = ({ children }: { children: ReactNode }) => { +type WorkspaceContextProps = { + children: ReactNode +} + +export const WorkspaceContext = ({ children }: WorkspaceContextProps) => { const { query } = useRouter() const { user } = useUser() const userId = user?.id @@ -45,6 +49,7 @@ export const WorkspaceContext = ({ children }: { children: ReactNode }) => { const { workspaces, isLoading, mutate } = useWorkspaces({ userId }) const [currentWorkspace, setCurrentWorkspace] = useState() + const [pendingWorkspaceId, setPendingWorkspaceId] = useState() const canEdit = workspaces @@ -58,7 +63,9 @@ export const WorkspaceContext = ({ children }: { children: ReactNode }) => { useEffect(() => { if (!workspaces || workspaces.length === 0 || currentWorkspace) return const lastWorspaceId = - query.workspaceId?.toString() ?? localStorage.getItem('workspaceId') + pendingWorkspaceId ?? + query.workspaceId?.toString() ?? + localStorage.getItem('workspaceId') const defaultWorkspace = lastWorspaceId ? workspaces.find(byId(lastWorspaceId)) : workspaces.find((w) => @@ -77,11 +84,8 @@ export const WorkspaceContext = ({ children }: { children: ReactNode }) => { }, [currentWorkspace?.id]) useEffect(() => { - if ( - !typebot?.workspaceId || - !currentWorkspace || - typebot.workspaceId === currentWorkspace.id - ) + if (!currentWorkspace) return setPendingWorkspaceId(typebot?.workspaceId) + if (!typebot?.workspaceId || typebot.workspaceId === currentWorkspace.id) return switchWorkspace(typebot.workspaceId) // eslint-disable-next-line react-hooks/exhaustive-deps diff --git a/apps/builder/pages/api/workspaces/[workspaceId]/invitations.ts b/apps/builder/pages/api/workspaces/[workspaceId]/invitations.ts index 17faae42e..689465ec4 100644 --- a/apps/builder/pages/api/workspaces/[workspaceId]/invitations.ts +++ b/apps/builder/pages/api/workspaces/[workspaceId]/invitations.ts @@ -38,6 +38,17 @@ const handler = async (req: NextApiRequest, res: NextApiResponse) => { userId: existingUser.id, }, }) + if (env('E2E_TEST') !== 'true') + await sendEmailNotification({ + to: data.email, + subject: "You've been invited to collaborate 🤝", + html: workspaceMemberInvitationEmail({ + workspaceName: workspace.name, + guestEmail: data.email, + url: `${process.env.NEXTAUTH_URL}/typebots?workspaceId=${workspace.id}`, + hostEmail: user.email ?? '', + }), + }) return res.send({ member: { userId: existingUser.id, @@ -47,19 +58,21 @@ const handler = async (req: NextApiRequest, res: NextApiResponse) => { workspaceId: data.workspaceId, }, }) - } else await prisma.workspaceInvitation.create({ data }) - if (env('E2E_TEST') !== 'true') - await sendEmailNotification({ - to: data.email, - subject: "You've been invited to collaborate 🤝", - html: workspaceMemberInvitationEmail({ - workspaceName: workspace.name, - guestEmail: data.email, - url: `${process.env.NEXTAUTH_URL}/typebots?workspaceId=${workspace.id}`, - hostEmail: user.email ?? '', - }), - }) - return res.send({ message: 'success' }) + } else { + const invitation = await prisma.workspaceInvitation.create({ data }) + if (env('E2E_TEST') !== 'true') + await sendEmailNotification({ + to: data.email, + subject: "You've been invited to collaborate 🤝", + html: workspaceMemberInvitationEmail({ + workspaceName: workspace.name, + guestEmail: data.email, + url: `${process.env.NEXTAUTH_URL}/typebots?workspaceId=${workspace.id}`, + hostEmail: user.email ?? '', + }), + }) + return res.send({ invitation }) + } } methodNotAllowed(res) } diff --git a/apps/builder/playwright/services/browser.ts b/apps/builder/playwright/services/browser.ts index 188e7e8c3..96e905534 100644 --- a/apps/builder/playwright/services/browser.ts +++ b/apps/builder/playwright/services/browser.ts @@ -6,7 +6,7 @@ export const refreshUser = async () => { document.dispatchEvent(event) } -export const connectedAsOtherUser = async (page: Page) => +export const mockSessionResponsesToOtherUser = async (page: Page) => page.route('/api/auth/session', (route) => { if (route.request().method() === 'GET') { return route.fulfill({ diff --git a/apps/builder/playwright/services/database.ts b/apps/builder/playwright/services/database.ts index ba65f8412..02567bd9c 100644 --- a/apps/builder/playwright/services/database.ts +++ b/apps/builder/playwright/services/database.ts @@ -21,6 +21,7 @@ import { readFileSync } from 'fs' import { injectFakeResults } from 'utils' import { encrypt } from 'utils/api' import Stripe from 'stripe' +import cuid from 'cuid' const prisma = new PrismaClient() @@ -28,7 +29,7 @@ const stripe = new Stripe(process.env.STRIPE_TEST_SECRET_KEY ?? '', { apiVersion: '2022-08-01', }) -const userId = 'userId' +export const userId = 'userId' const otherUserId = 'otherUserId' export const freeWorkspaceId = 'freeWorkspace' export const starterWorkspaceId = 'starterWorkspace' @@ -49,6 +50,12 @@ export const teardownDatabase = async () => { return prisma.webhook.deleteMany() } +export const deleteWorkspaces = async (workspaceIds: string[]) => { + await prisma.workspace.deleteMany({ + where: { id: { in: workspaceIds } }, + }) +} + export const addSubscriptionToWorkspace = async ( workspaceId: string, items: Stripe.SubscriptionCreateParams.Item[], @@ -90,12 +97,12 @@ export const addSubscriptionToWorkspace = async ( } export const setupDatabase = async () => { - await createWorkspaces() - await createUsers() - return createCredentials() + await setupWorkspaces() + await setupUsers() + return setupCredentials() } -export const createWorkspaces = async () => +export const setupWorkspaces = async () => prisma.workspace.createMany({ data: [ { @@ -122,21 +129,27 @@ export const createWorkspaces = async () => ], }) -export const createWorkspace = async (workspace: Partial) => { - const { id: workspaceId } = await prisma.workspace.create({ - data: { +export const createWorkspaces = async (workspaces: Partial[]) => { + const workspaceIds = workspaces.map((workspace) => workspace.id ?? cuid()) + await prisma.workspace.createMany({ + data: workspaces.map((workspace, index) => ({ + id: workspaceIds[index], name: 'Free workspace', plan: Plan.FREE, ...workspace, - }, + })), }) - await prisma.memberInWorkspace.create({ - data: { userId, workspaceId, role: WorkspaceRole.ADMIN }, + await prisma.memberInWorkspace.createMany({ + data: workspaces.map((_, index) => ({ + userId, + workspaceId: workspaceIds[index], + role: WorkspaceRole.ADMIN, + })), }) - return workspaceId + return workspaceIds } -export const createUsers = async () => { +export const setupUsers = async () => { await prisma.user.create({ data: { id: userId, @@ -237,7 +250,7 @@ export const createFolders = (partialFolders: Partial[]) => })), }) -const createCredentials = () => { +const setupCredentials = () => { const { encryptedData, iv } = encrypt({ expiry_date: 1642441058842, access_token: diff --git a/apps/builder/playwright/tests/accountSettings.spec.ts b/apps/builder/playwright/tests/accountSettings.spec.ts index 1e8a558ff..99daaf042 100644 --- a/apps/builder/playwright/tests/accountSettings.spec.ts +++ b/apps/builder/playwright/tests/accountSettings.spec.ts @@ -1,5 +1,8 @@ import test, { expect } from '@playwright/test' import path from 'path' +import { userId } from 'playwright/services/database' + +test.describe.configure({ mode: 'parallel' }) test('should display user info properly', async ({ page }) => { await page.goto('/typebots') @@ -18,7 +21,7 @@ test('should display user info properly', async ({ page }) => { await expect(page.locator('img >> nth=1')).toHaveAttribute( 'src', new RegExp( - `http://localhost:9000/typebot/public/users/proUser/avatar`, + `http://localhost:9000/typebot/public/users/${userId}/avatar`, 'gm' ) ) diff --git a/apps/builder/playwright/tests/analytics.spec.ts b/apps/builder/playwright/tests/analytics.spec.ts new file mode 100644 index 000000000..500e888ac --- /dev/null +++ b/apps/builder/playwright/tests/analytics.spec.ts @@ -0,0 +1,30 @@ +import test, { expect } from '@playwright/test' +import cuid from 'cuid' +import path from 'path' +import { + importTypebotInDatabase, + starterWorkspaceId, +} from '../services/database' + +test('analytics are not available for non-pro workspaces', async ({ page }) => { + const typebotId = cuid() + await importTypebotInDatabase( + path.join(__dirname, '../fixtures/typebots/results/submissionHeader.json'), + { + id: typebotId, + workspaceId: starterWorkspaceId, + } + ) + await page.goto(`/typebots/${typebotId}/results/analytics`) + const firstDropoffBox = page.locator('text="%" >> nth=0') + await firstDropoffBox.hover() + await expect( + page.locator('text="Unlock Drop-off rate by upgrading to Pro plan"') + ).toBeVisible() + await firstDropoffBox.click() + await expect( + page.locator( + 'text="You need to upgrade your plan in order to unlock in-depth analytics"' + ) + ).toBeVisible() +}) diff --git a/apps/builder/playwright/tests/billing.spec.ts b/apps/builder/playwright/tests/billing.spec.ts index b29ec54fe..1528b2f81 100644 --- a/apps/builder/playwright/tests/billing.spec.ts +++ b/apps/builder/playwright/tests/billing.spec.ts @@ -5,13 +5,34 @@ import { addSubscriptionToWorkspace, createResults, createTypebots, - createWorkspace, - starterWorkspaceId, + createWorkspaces, + deleteWorkspaces, } from '../services/database' +const usageWorkspaceId = cuid() +const usageTypebotId = cuid() +const planChangeWorkspaceId = cuid() + +test.beforeAll(async () => { + await createWorkspaces([ + { + id: usageWorkspaceId, + name: 'Usage Workspace', + plan: Plan.STARTER, + }, + { + id: planChangeWorkspaceId, + name: 'Plan Change Workspace', + }, + ]) + await createTypebots([{ id: usageTypebotId, workspaceId: usageWorkspaceId }]) +}) + +test.afterAll(async () => { + await deleteWorkspaces([usageWorkspaceId, planChangeWorkspaceId]) +}) + test('should display valid usage', async ({ page }) => { - const starterTypebotId = cuid() - createTypebots([{ id: starterTypebotId, workspaceId: starterWorkspaceId }]) await page.goto('/typebots') await page.click('text=Settings & Members') await page.click('text=Billing & Usage') @@ -24,37 +45,34 @@ test('should display valid usage', async ({ page }) => { await page.click('text=Settings & Members') await page.click('text=Billing & Usage') await expect(page.locator('text="/ 300"')).toBeVisible() + await expect(page.locator('text="Storage"')).toBeHidden() await page.click('text=Free workspace', { force: true }) await createResults({ - idPrefix: 'usage', count: 10, - typebotId: starterTypebotId, - isChronological: false, + typebotId: usageTypebotId, fakeStorage: 1100 * 1024 * 1024, }) await page.click('text=Free workspace') - await page.click('text="Starter workspace"') + await page.click('text="Usage Workspace"') await page.click('text=Settings & Members') await page.click('text=Billing & Usage') await expect(page.locator('text="/ 2,000"')).toBeVisible() await expect(page.locator('text="/ 2 GB"')).toBeVisible() - await expect(page.locator('text="1.07 GB"')).toBeVisible() - await expect(page.locator('text="200"')).toBeVisible() + await expect(page.locator('text="10" >> nth=0')).toBeVisible() await expect(page.locator('[role="progressbar"] >> nth=0')).toHaveAttribute( 'aria-valuenow', - '10' + '1' ) + await expect(page.locator('text="1.07 GB"')).toBeVisible() await expect(page.locator('[role="progressbar"] >> nth=1')).toHaveAttribute( 'aria-valuenow', '54' ) await createResults({ - idPrefix: 'usage2', - typebotId: starterTypebotId, - isChronological: false, - count: 900, + typebotId: usageTypebotId, + count: 1090, fakeStorage: 1200 * 1024 * 1024, }) await page.click('text="Settings"') @@ -68,12 +86,11 @@ test('should display valid usage', async ({ page }) => { }) test('plan changes should work', async ({ page }) => { - const workspaceId = await createWorkspace({ name: 'Awesome workspace' }) - + test.setTimeout(80000) // Upgrade to STARTER await page.goto('/typebots') await page.click('text=Pro workspace') - await page.click('text=Awesome workspace') + await page.click('text=Plan Change Workspace') await page.click('text=Settings & Members') await page.click('text=Billing & Usage') await page.click('button >> text="2,000"') @@ -89,7 +106,7 @@ test('plan changes should work', async ({ page }) => { await expect(page.locator('text=$4.00 >> nth=0')).toBeVisible() await expect(page.locator('text=user@email.com')).toBeVisible() await addSubscriptionToWorkspace( - workspaceId, + planChangeWorkspaceId, [ { price: process.env.STRIPE_STARTER_PRICE_ID, @@ -148,26 +165,23 @@ test('plan changes should work', async ({ page }) => { await page.goto('/typebots') await page.click('text=Settings & Members') await page.click('text=Billing & Usage') - await expect(page.locator('[data-testid="plan-tag"]')).toHaveText('Pro') + await expect(page.locator('[data-testid="pro-plan-tag"]')).toBeVisible() await page.click('button >> text="Cancel my subscription"') - await expect(page.locator('[data-testid="plan-tag"]')).toHaveText('Free') + await expect(page.locator('[data-testid="free-plan-tag"]')).toBeVisible() }) test('should display invoices', async ({ page }) => { await page.goto('/typebots') await page.click('text=Settings & Members') await page.click('text=Billing & Usage') - await expect( - page.locator('text="No invoices found for this workspace."') - ).toBeVisible() + await expect(page.locator('text="Invoices"')).toBeHidden() await page.click('text=Pro workspace', { force: true }) await page.click('text=Pro workspace') - await page.click('text=Starter workspace') + await page.click('text=Plan Change Workspace') await page.click('text=Settings & Members') await page.click('text=Billing & Usage') await expect(page.locator('text="Invoices"')).toBeVisible() - await expect(page.locator('text="Wed Jun 01 2022"')).toBeVisible() - await expect(page.locator('text="74567541-0001"')).toBeVisible() - await expect(page.locator('text="€30.00" >> nth=0')).toBeVisible() + await expect(page.locator('tr')).toHaveCount(2) + await expect(page.locator('text="€39.00"')).toBeVisible() }) diff --git a/apps/builder/playwright/tests/collaboration.spec.ts b/apps/builder/playwright/tests/collaboration.spec.ts index 38c6b1893..30fda9f64 100644 --- a/apps/builder/playwright/tests/collaboration.spec.ts +++ b/apps/builder/playwright/tests/collaboration.spec.ts @@ -8,6 +8,7 @@ import { createResults, createTypebots, parseDefaultGroupWithBlock, + userId, } from '../services/database' test.describe('Typebot owner', () => { @@ -21,7 +22,7 @@ test.describe('Typebot owner', () => { plan: Plan.FREE, members: { createMany: { - data: [{ role: WorkspaceRole.ADMIN, userId: 'proUser' }], + data: [{ role: WorkspaceRole.ADMIN, userId }], }, }, }, @@ -51,20 +52,20 @@ test.describe('Typebot owner', () => { await expect(page.locator('text=Free user')).toBeHidden() await page.fill( 'input[placeholder="colleague@company.com"]', - 'free-user@email.com' + 'other-user@email.com' ) await page.click('text=Can edit') await page.click('text=Can view') await page.click('text=Invite') - await expect(page.locator('text=Free user')).toBeVisible() + await expect(page.locator('text=James Doe')).toBeVisible() await page.click('text="guest@email.com"') await page.click('text="Remove"') await expect(page.locator('text="guest@email.com"')).toBeHidden() }) }) -test.describe('Collaborator', () => { - test('should display shared typebots', async ({ page }) => { +test.describe('Guest', () => { + test('should have shared typebots displayed', async ({ page }) => { const typebotId = cuid() const guestWorkspaceId = cuid() await prisma.workspace.create({ @@ -74,7 +75,7 @@ test.describe('Collaborator', () => { plan: Plan.FREE, members: { createMany: { - data: [{ role: WorkspaceRole.GUEST, userId: 'proUser' }], + data: [{ role: WorkspaceRole.GUEST, userId }], }, }, }, @@ -89,29 +90,34 @@ test.describe('Collaborator', () => { options: defaultTextInputOptions, }), }, + { + name: 'Another typebot', + workspaceId: guestWorkspaceId, + }, ]) await prisma.collaboratorsOnTypebots.create({ data: { typebotId, - userId: 'proUser', + userId, type: CollaborationType.READ, }, }) await createFolder(guestWorkspaceId, 'Guest folder') await createResults({ typebotId, count: 10 }) await page.goto(`/typebots`) - await page.click("text=Pro user's workspace") + await page.click('text=Pro workspace') await page.click('text=Guest workspace #2') await expect(page.locator('text=Guest typebot')).toBeVisible() + await expect(page.locator('text=Another typebot')).toBeHidden() await expect(page.locator('text=Guest folder')).toBeHidden() await page.click('text=Guest typebot') await page.click('button[aria-label="Show collaboration menu"]') await page.click('text=Everyone at Guest workspace') await expect(page.locator('text="Remove"')).toBeHidden() - await expect(page.locator('text=Pro user')).toBeVisible() + await expect(page.locator('text=John Doe')).toBeVisible() await page.click('text=Group #1', { force: true }) await expect(page.locator('input[value="Group #1"]')).toBeHidden() await page.goto(`/typebots/${typebotId}/results`) - await expect(page.locator('text="See logs" >> nth=10')).toBeVisible() + await expect(page.locator('text="See logs" >> nth=9')).toBeVisible() }) }) diff --git a/apps/builder/playwright/tests/customDomains.spec.ts b/apps/builder/playwright/tests/customDomains.spec.ts index 4fcede868..8e00e8280 100644 --- a/apps/builder/playwright/tests/customDomains.spec.ts +++ b/apps/builder/playwright/tests/customDomains.spec.ts @@ -59,6 +59,10 @@ test.describe('Starter workspace', () => { await page.goto(`/typebots/${typebotId}/share`) await expect(page.locator('text=Pro')).toBeVisible() await page.click('text=Add my domain') - await expect(page.locator('text=For solo creator')).toBeVisible() + await expect( + page.locator( + 'text="You need to upgrade your plan in order to add custom domains"' + ) + ).toBeVisible() }) }) diff --git a/apps/builder/playwright/tests/dashboard.spec.ts b/apps/builder/playwright/tests/dashboard.spec.ts index a8f23aa51..65d44dc0a 100644 --- a/apps/builder/playwright/tests/dashboard.spec.ts +++ b/apps/builder/playwright/tests/dashboard.spec.ts @@ -1,88 +1,87 @@ import test, { expect, Page } from '@playwright/test' import cuid from 'cuid' -import path from 'path' import { createFolders, createTypebots } from '../services/database' import { deleteButtonInConfirmDialog } from '../services/selectorUtils' -test.describe('Dashboard page', () => { - test('folders navigation should work', async ({ page }) => { +test('folders navigation should work', async ({ page }) => { + await page.goto('/typebots') + const createFolderButton = page.locator('button:has-text("Create a folder")') + await expect(createFolderButton).not.toBeDisabled() + await createFolderButton.click() + await page.click('text="New folder"') + await page.fill('input[value="New folder"]', 'My folder #1') + await page.press('input[value="My folder #1"]', 'Enter') + await waitForNextApiCall(page) + await page.click('li:has-text("My folder #1")') + await expect(page.locator('h1:has-text("My folder #1")')).toBeVisible() + await createFolderButton.click() + await page.click('text="New folder"') + await page.fill('input', 'My folder #2') + await page.press('input', 'Enter') + await waitForNextApiCall(page) + + await page.click('li:has-text("My folder #2")') + await expect(page.locator('h1 >> text="My folder #2"')).toBeVisible() + + await page.click('text="Back"') + await expect(page.locator('span >> text="My folder #2"')).toBeVisible() + + await page.click('text="Back"') + await expect(page.locator('span >> text=My folder #1')).toBeVisible() +}) + +test('folders and typebots should be deletable', async ({ page }) => { + await createFolders([{ name: 'Folder #1' }, { name: 'Folder #2' }]) + await createTypebots([{ id: 'deletable-typebot', name: 'Typebot #1' }]) + await page.goto('/typebots') + await page.click('button[aria-label="Show Folder #1 menu"]') + await page.click('li:has-text("Folder #1") >> button:has-text("Delete")') + await deleteButtonInConfirmDialog(page).click() + await expect(page.locator('span >> text="Folder #1"')).not.toBeVisible() + await page.click('button[aria-label="Show Typebot #1 menu"]') + await page.click('li:has-text("Typebot #1") >> button:has-text("Delete")') + await deleteButtonInConfirmDialog(page).click() + await expect(page.locator('span >> text="Typebot #1"')).not.toBeVisible() +}) + +test('folders and typebots should be movable', async ({ page }) => { + const droppableFolderId = cuid() + await createFolders([{ id: droppableFolderId, name: 'Droppable folder' }]) + await createTypebots([{ name: 'Draggable typebot' }]) + await page.goto('/typebots') + const typebotButton = page.locator('li:has-text("Draggable typebot")') + const folderButton = page.locator('li:has-text("Droppable folder")') + await page.dragAndDrop( + 'li:has-text("Draggable typebot")', + 'li:has-text("Droppable folder")' + ) + await waitForNextApiCall(page) + await expect(typebotButton).toBeHidden() + await folderButton.click() + await expect(page).toHaveURL(new RegExp(`/folders/${droppableFolderId}`)) + await expect(typebotButton).toBeVisible() + await page.dragAndDrop( + 'li:has-text("Draggable typebot")', + 'a:has-text("Back")' + ) + await waitForNextApiCall(page) + await expect(typebotButton).toBeHidden() + await page.click('a:has-text("Back")') + await expect(typebotButton).toBeVisible() +}) + +test.describe('Free user', () => { + test("create folder shouldn't be available", async ({ page }) => { await page.goto('/typebots') - const createFolderButton = page.locator( - 'button:has-text("Create a folder")' - ) - await expect(createFolderButton).not.toBeDisabled() - await createFolderButton.click() - await page.click('text="New folder"') - await page.fill('input[value="New folder"]', 'My folder #1') - await page.press('input[value="My folder #1"]', 'Enter') - await waitForNextApiCall(page) - await page.click('li:has-text("My folder #1")') - await expect(page.locator('h1:has-text("My folder #1")')).toBeVisible() - await createFolderButton.click() - await page.click('text="New folder"') - await page.fill('input', 'My folder #2') - await page.press('input', 'Enter') - await waitForNextApiCall(page) - - await page.click('li:has-text("My folder #2")') - await expect(page.locator('h1 >> text="My folder #2"')).toBeVisible() - - await page.click('text="Back"') - await expect(page.locator('span >> text="My folder #2"')).toBeVisible() - - await page.click('text="Back"') - await expect(page.locator('span >> text=My folder #1')).toBeVisible() - }) - - test('folders and typebots should be deletable', async ({ page }) => { - await createFolders([{ name: 'Folder #1' }, { name: 'Folder #2' }]) - await createTypebots([{ id: 'deletable-typebot', name: 'Typebot #1' }]) - await page.goto('/typebots') - await page.click('button[aria-label="Show Folder #1 menu"]') - await page.click('li:has-text("Folder #1") >> button:has-text("Delete")') - await deleteButtonInConfirmDialog(page).click() - await expect(page.locator('span >> text="Folder #1"')).not.toBeVisible() - await page.click('button[aria-label="Show Typebot #1 menu"]') - await page.click('li:has-text("Typebot #1") >> button:has-text("Delete")') - await deleteButtonInConfirmDialog(page).click() - await expect(page.locator('span >> text="Typebot #1"')).not.toBeVisible() - }) - - test('folders and typebots should be movable', async ({ page }) => { - const droppableFolderId = cuid() - await createFolders([{ id: droppableFolderId, name: 'Droppable folder' }]) - await createTypebots([{ name: 'Draggable typebot' }]) - await page.goto('/typebots') - const typebotButton = page.locator('li:has-text("Draggable typebot")') - const folderButton = page.locator('li:has-text("Droppable folder")') - await page.dragAndDrop( - 'li:has-text("Draggable typebot")', - 'li:has-text("Droppable folder")' - ) - await waitForNextApiCall(page) - await expect(typebotButton).toBeHidden() - await folderButton.click() - await expect(page).toHaveURL(new RegExp(`/folders/${droppableFolderId}`)) - await expect(typebotButton).toBeVisible() - await page.dragAndDrop( - 'li:has-text("Draggable typebot")', - 'a:has-text("Back")' - ) - await waitForNextApiCall(page) - await expect(typebotButton).toBeHidden() - await page.click('a:has-text("Back")') - await expect(typebotButton).toBeVisible() - }) - - test.describe('Free user', () => { - test.use({ - storageState: path.join(__dirname, '../secondUser.json'), - }) - test("create folder shouldn't be available", async ({ page }) => { - await page.goto('/typebots') - await page.click('text=Create a folder') - await expect(page.locator('text=For solo creator')).toBeVisible() - }) + await page.click('text="Pro workspace"') + await page.click('text="Free workspace"') + await expect(page.locator('[data-testid="starter-plan-tag"]')).toBeVisible() + await page.click('text=Create a folder') + await expect( + page.locator( + 'text="You need to upgrade your plan in order to create folders"' + ) + ).toBeVisible() }) }) diff --git a/apps/builder/playwright/tests/editor.spec.ts b/apps/builder/playwright/tests/editor.spec.ts index fa814d4c6..7965d46bf 100644 --- a/apps/builder/playwright/tests/editor.spec.ts +++ b/apps/builder/playwright/tests/editor.spec.ts @@ -9,174 +9,174 @@ import path from 'path' import cuid from 'cuid' import { typebotViewer } from '../services/selectorUtils' -test.describe.parallel('Editor', () => { - test('Edges connection should work', async ({ page }) => { - const typebotId = cuid() - await createTypebots([ - { - id: typebotId, - }, - ]) - await page.goto(`/typebots/${typebotId}/edit`) - await expect(page.locator("text='Start'")).toBeVisible() - await page.dragAndDrop('text=Button', '#editor-container', { - targetPosition: { x: 1000, y: 400 }, - }) - await page.dragAndDrop( - 'text=Text >> nth=0', - '[data-testid="group"] >> nth=1', - { - targetPosition: { x: 100, y: 50 }, - } - ) - await page.dragAndDrop( - '[data-testid="endpoint"]', - '[data-testid="group"] >> nth=1', - { targetPosition: { x: 100, y: 10 } } - ) - await expect(page.locator('[data-testid="edge"]')).toBeVisible() - await page.dragAndDrop( - '[data-testid="endpoint"]', - '[data-testid="group"] >> nth=1' - ) - await expect(page.locator('[data-testid="edge"]')).toBeVisible() - await page.dragAndDrop('text=Date', '#editor-container', { - targetPosition: { x: 1000, y: 800 }, - }) - await page.dragAndDrop( - '[data-testid="endpoint"] >> nth=2', - '[data-testid="group"] >> nth=2', - { - targetPosition: { x: 100, y: 10 }, - } - ) - await expect(page.locator('[data-testid="edge"] >> nth=0')).toBeVisible() - await expect(page.locator('[data-testid="edge"] >> nth=1')).toBeVisible() +test.describe.configure({ mode: 'parallel' }) - await page.click('[data-testid="clickable-edge"] >> nth=0', { - force: true, - button: 'right', - }) - await page.click('text=Delete') - const total = await page.locator('[data-testid="edge"]').count() - expect(total).toBe(1) +test('Edges connection should work', async ({ page }) => { + const typebotId = cuid() + await createTypebots([ + { + id: typebotId, + }, + ]) + await page.goto(`/typebots/${typebotId}/edit`) + await expect(page.locator("text='Start'")).toBeVisible() + await page.dragAndDrop('text=Button', '#editor-container', { + targetPosition: { x: 1000, y: 400 }, }) - test('Drag and drop blocks and items should work', async ({ page }) => { - const typebotId = cuid() - await importTypebotInDatabase( - path.join(__dirname, '../fixtures/typebots/editor/buttonsDnd.json'), - { - id: typebotId, - } - ) - - // Blocks dnd - await page.goto(`/typebots/${typebotId}/edit`) - await expect(page.locator('[data-testid="block"] >> nth=1')).toHaveText( - 'Hello!' - ) - await page.dragAndDrop('text=Hello', '[data-testid="block"] >> nth=3', { - targetPosition: { x: 100, y: 0 }, - }) - await expect(page.locator('[data-testid="block"] >> nth=2')).toHaveText( - 'Hello!' - ) - await page.dragAndDrop('text=Hello', 'text=Group #2') - await expect(page.locator('[data-testid="block"] >> nth=3')).toHaveText( - 'Hello!' - ) - - // Items dnd - await expect(page.locator('[data-testid="item"] >> nth=0')).toHaveText( - 'Item 1' - ) - await page.dragAndDrop('text=Item 1', 'text=Item 3') - await expect(page.locator('[data-testid="item"] >> nth=2')).toHaveText( - 'Item 1' - ) - await expect(page.locator('[data-testid="item"] >> nth=1')).toHaveText( - 'Item 3' - ) - await page.dragAndDrop('text=Item 3', 'text=Item 2-3') - await expect(page.locator('[data-testid="item"] >> nth=6')).toHaveText( - 'Item 3' - ) + await page.dragAndDrop( + 'text=Text >> nth=0', + '[data-testid="group"] >> nth=1', + { + targetPosition: { x: 100, y: 50 }, + } + ) + await page.dragAndDrop( + '[data-testid="endpoint"]', + '[data-testid="group"] >> nth=1', + { targetPosition: { x: 100, y: 10 } } + ) + await expect(page.locator('[data-testid="edge"]')).toBeVisible() + await page.dragAndDrop( + '[data-testid="endpoint"]', + '[data-testid="group"] >> nth=1' + ) + await expect(page.locator('[data-testid="edge"]')).toBeVisible() + await page.dragAndDrop('text=Date', '#editor-container', { + targetPosition: { x: 1000, y: 800 }, }) - test('Undo / Redo buttons should work', async ({ page }) => { - const typebotId = cuid() - await createTypebots([ - { - id: typebotId, - ...parseDefaultGroupWithBlock({ - type: InputBlockType.TEXT, - options: defaultTextInputOptions, - }), - }, - ]) + await page.dragAndDrop( + '[data-testid="endpoint"] >> nth=2', + '[data-testid="group"] >> nth=2', + { + targetPosition: { x: 100, y: 10 }, + } + ) + await expect(page.locator('[data-testid="edge"] >> nth=0')).toBeVisible() + await expect(page.locator('[data-testid="edge"] >> nth=1')).toBeVisible() - await page.goto(`/typebots/${typebotId}/edit`) - await page.click('text=Group #1', { button: 'right' }) - await page.click('text=Duplicate') - await expect(page.locator('text="Group #1"')).toBeVisible() - await expect(page.locator('text="Group #1 copy"')).toBeVisible() - await page.click('text="Group #1"', { button: 'right' }) - await page.click('text=Delete') - await expect(page.locator('text="Group #1"')).toBeHidden() - await page.click('button[aria-label="Undo"]') - await expect(page.locator('text="Group #1"')).toBeVisible() - await page.click('button[aria-label="Redo"]') - await expect(page.locator('text="Group #1"')).toBeHidden() - }) - - test('Rename and icon change should work', async ({ page }) => { - const typebotId = cuid() - await createTypebots([ - { - id: typebotId, - name: 'My awesome typebot', - ...parseDefaultGroupWithBlock({ - type: InputBlockType.TEXT, - options: defaultTextInputOptions, - }), - }, - ]) - - await page.goto(`/typebots/${typebotId}/edit`) - - await page.click('[data-testid="editable-icon"]') - await expect(page.locator('text="My awesome typebot"')).toBeVisible() - await page.fill('input[placeholder="Search..."]', 'love') - await page.click('text="😍"') - await page.click('text="My awesome typebot"') - await page.fill('input[value="My awesome typebot"]', 'My superb typebot') - await page.press('input[value="My superb typebot"]', 'Enter') - await page.click('[aria-label="Navigate back"]') - await expect(page.locator('text="😍"')).toBeVisible() - await expect(page.locator('text="My superb typebot"')).toBeVisible() - }) - - test('Preview from group should work', async ({ page }) => { - const typebotId = cuid() - await importTypebotInDatabase( - path.join(__dirname, '../fixtures/typebots/editor/previewFromGroup.json'), - { - id: typebotId, - } - ) - - await page.goto(`/typebots/${typebotId}/edit`) - await page.click('[aria-label="Preview bot from this group"] >> nth=1') - await expect( - typebotViewer(page).locator('text="Hello this is group 1"') - ).toBeVisible() - await page.click('[aria-label="Preview bot from this group"] >> nth=2') - await expect( - typebotViewer(page).locator('text="Hello this is group 2"') - ).toBeVisible() - await page.click('[aria-label="Close"]') - await page.click('text="Preview"') - await expect( - typebotViewer(page).locator('text="Hello this is group 1"') - ).toBeVisible() + await page.click('[data-testid="clickable-edge"] >> nth=0', { + force: true, + button: 'right', }) + await page.click('text=Delete') + const total = await page.locator('[data-testid="edge"]').count() + expect(total).toBe(1) +}) +test('Drag and drop blocks and items should work', async ({ page }) => { + const typebotId = cuid() + await importTypebotInDatabase( + path.join(__dirname, '../fixtures/typebots/editor/buttonsDnd.json'), + { + id: typebotId, + } + ) + + // Blocks dnd + await page.goto(`/typebots/${typebotId}/edit`) + await expect(page.locator('[data-testid="block"] >> nth=1')).toHaveText( + 'Hello!' + ) + await page.dragAndDrop('text=Hello', '[data-testid="block"] >> nth=3', { + targetPosition: { x: 100, y: 0 }, + }) + await expect(page.locator('[data-testid="block"] >> nth=2')).toHaveText( + 'Hello!' + ) + await page.dragAndDrop('text=Hello', 'text=Group #2') + await expect(page.locator('[data-testid="block"] >> nth=3')).toHaveText( + 'Hello!' + ) + + // Items dnd + await expect(page.locator('[data-testid="item"] >> nth=0')).toHaveText( + 'Item 1' + ) + await page.dragAndDrop('text=Item 1', 'text=Item 3') + await expect(page.locator('[data-testid="item"] >> nth=2')).toHaveText( + 'Item 1' + ) + await expect(page.locator('[data-testid="item"] >> nth=1')).toHaveText( + 'Item 3' + ) + await page.dragAndDrop('text=Item 3', 'text=Item 2-3') + await expect(page.locator('[data-testid="item"] >> nth=6')).toHaveText( + 'Item 3' + ) +}) +test('Undo / Redo buttons should work', async ({ page }) => { + const typebotId = cuid() + await createTypebots([ + { + id: typebotId, + ...parseDefaultGroupWithBlock({ + type: InputBlockType.TEXT, + options: defaultTextInputOptions, + }), + }, + ]) + + await page.goto(`/typebots/${typebotId}/edit`) + await page.click('text=Group #1', { button: 'right' }) + await page.click('text=Duplicate') + await expect(page.locator('text="Group #1"')).toBeVisible() + await expect(page.locator('text="Group #1 copy"')).toBeVisible() + await page.click('text="Group #1"', { button: 'right' }) + await page.click('text=Delete') + await expect(page.locator('text="Group #1"')).toBeHidden() + await page.click('button[aria-label="Undo"]') + await expect(page.locator('text="Group #1"')).toBeVisible() + await page.click('button[aria-label="Redo"]') + await expect(page.locator('text="Group #1"')).toBeHidden() +}) + +test('Rename and icon change should work', async ({ page }) => { + const typebotId = cuid() + await createTypebots([ + { + id: typebotId, + name: 'My awesome typebot', + ...parseDefaultGroupWithBlock({ + type: InputBlockType.TEXT, + options: defaultTextInputOptions, + }), + }, + ]) + + await page.goto(`/typebots/${typebotId}/edit`) + + await page.click('[data-testid="editable-icon"]') + await expect(page.locator('text="My awesome typebot"')).toBeVisible() + await page.fill('input[placeholder="Search..."]', 'love') + await page.click('text="😍"') + await page.click('text="My awesome typebot"') + await page.fill('input[value="My awesome typebot"]', 'My superb typebot') + await page.press('input[value="My superb typebot"]', 'Enter') + await page.click('[aria-label="Navigate back"]') + await expect(page.locator('text="😍"')).toBeVisible() + await expect(page.locator('text="My superb typebot"')).toBeVisible() +}) + +test('Preview from group should work', async ({ page }) => { + const typebotId = cuid() + await importTypebotInDatabase( + path.join(__dirname, '../fixtures/typebots/editor/previewFromGroup.json'), + { + id: typebotId, + } + ) + + await page.goto(`/typebots/${typebotId}/edit`) + await page.click('[aria-label="Preview bot from this group"] >> nth=1') + await expect( + typebotViewer(page).locator('text="Hello this is group 1"') + ).toBeVisible() + await page.click('[aria-label="Preview bot from this group"] >> nth=2') + await expect( + typebotViewer(page).locator('text="Hello this is group 2"') + ).toBeVisible() + await page.click('[aria-label="Close"]') + await page.click('text="Preview"') + await expect( + typebotViewer(page).locator('text="Hello this is group 1"') + ).toBeVisible() }) diff --git a/apps/builder/playwright/tests/inputs/payment.spec.ts b/apps/builder/playwright/tests/inputs/payment.spec.ts index fbe8cab68..393a512cf 100644 --- a/apps/builder/playwright/tests/inputs/payment.spec.ts +++ b/apps/builder/playwright/tests/inputs/payment.spec.ts @@ -62,7 +62,7 @@ test.describe('Payment input block', () => { await stripePaymentForm(page).locator(`[placeholder="CVC"]`).fill('240') await typebotViewer(page).locator(`text="Pay 30€"`).click() await expect( - typebotViewer(page).locator(`text="Your card was declined."`) + typebotViewer(page).locator(`text="Your card has been declined."`) ).toBeVisible() await stripePaymentForm(page) .locator(`[placeholder="1234 1234 1234 1234"]`) diff --git a/apps/builder/playwright/tests/results.spec.ts b/apps/builder/playwright/tests/results.spec.ts index 32a0ab9ae..31108d4fe 100644 --- a/apps/builder/playwright/tests/results.spec.ts +++ b/apps/builder/playwright/tests/results.spec.ts @@ -43,7 +43,7 @@ test('results should be deletable', async ({ page }) => { }), }, ]) - await createResults({ typebotId, count: 200 }) + await createResults({ typebotId, count: 200, isChronological: true }) await page.goto(`/typebots/${typebotId}/results`) await selectFirstResults(page) await page.click('text="Delete"') @@ -67,7 +67,7 @@ test('submissions table should have infinite scroll', async ({ page }) => { tableWrapper.scrollTo(0, tableWrapper.scrollHeight) }) - await createResults({ typebotId, count: 200 }) + await createResults({ typebotId, count: 200, isChronological: true }) await page.goto(`/typebots/${typebotId}/results`) await expect(page.locator('text=content199')).toBeVisible() diff --git a/apps/builder/playwright/tests/settings.spec.ts b/apps/builder/playwright/tests/settings.spec.ts index c770792ad..c1f10e495 100644 --- a/apps/builder/playwright/tests/settings.spec.ts +++ b/apps/builder/playwright/tests/settings.spec.ts @@ -135,9 +135,13 @@ test.describe.parallel('Settings page', () => { typebotViewer(page).locator('text="What\'s your name?"') ).toBeVisible() await page.click('button:has-text("General")') - await expect(page.locator('text=Pro')).toBeVisible() + await expect(page.locator('text=Starter')).toBeVisible() await page.click('text=Typebot.io branding') - await expect(page.locator('text=For solo creator')).toBeVisible() + await expect( + page.locator( + 'text="You need to upgrade your plan in order to remove branding"' + ) + ).toBeVisible() }) }) }) diff --git a/apps/builder/playwright/tests/workspaces.spec.ts b/apps/builder/playwright/tests/workspaces.spec.ts index 33551702d..e8ed48f73 100644 --- a/apps/builder/playwright/tests/workspaces.spec.ts +++ b/apps/builder/playwright/tests/workspaces.spec.ts @@ -1,7 +1,7 @@ import test, { expect } from '@playwright/test' import cuid from 'cuid' import { defaultTextInputOptions, InputBlockType } from 'models' -import { connectedAsOtherUser } from 'playwright/services/browser' +import { mockSessionResponsesToOtherUser } from 'playwright/services/browser' import { createTypebots, parseDefaultGroupWithBlock, @@ -129,7 +129,7 @@ test('can manage members', async ({ page }) => { await page.click('button >> text="Remove"') await expect(page.locator('text="guest@email.com"')).toBeHidden() - await connectedAsOtherUser(page) + await mockSessionResponsesToOtherUser(page) await page.goto('/typebots') await page.click('text=Settings & Members') await expect(page.locator('text="Settings"')).toBeHidden() diff --git a/apps/builder/services/workspace/member.ts b/apps/builder/services/workspace/member.ts index a3c793a4e..38b9ea25d 100644 --- a/apps/builder/services/workspace/member.ts +++ b/apps/builder/services/workspace/member.ts @@ -17,8 +17,8 @@ export const useMembers = ({ workspaceId }: { workspaceId?: string }) => { dedupingInterval: env('E2E_TEST') === 'true' ? 0 : undefined, }) return { - members: data?.members, - invitations: data?.invitations, + members: data?.members ?? [], + invitations: data?.invitations ?? [], isLoading: !error && !data, mutate, } diff --git a/apps/builder/services/workspace/workspace.ts b/apps/builder/services/workspace/workspace.ts index bcc2f7a59..edabe65e9 100644 --- a/apps/builder/services/workspace/workspace.ts +++ b/apps/builder/services/workspace/workspace.ts @@ -1,7 +1,7 @@ import { WorkspaceWithMembers } from 'contexts/WorkspaceContext' import { Plan, Workspace } from 'db' import useSWR from 'swr' -import { isNotDefined, sendRequest } from 'utils' +import { isDefined, isNotDefined, sendRequest } from 'utils' import { fetcher } from '../utils' export const useWorkspaces = ({ userId }: { userId?: string }) => { @@ -74,3 +74,6 @@ export const planToReadable = (plan?: Plan) => { export const isFreePlan = (workspace?: Pick) => isNotDefined(workspace) || workspace?.plan === Plan.FREE + +export const isWorkspaceProPlan = (workspace?: Pick) => + isDefined(workspace) && workspace.plan === Plan.PRO diff --git a/apps/docs/package.json b/apps/docs/package.json index c0cc47912..89c57973e 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -17,16 +17,16 @@ "dependencies": { "@docusaurus/core": "2.1.0", "@docusaurus/preset-classic": "2.1.0", - "@docusaurus/theme-search-algolia": "^2.1.0", + "@docusaurus/theme-search-algolia": "2.1.0", "@docusaurus/theme-common": "2.1.0", - "react": "^17.0.2", - "react-dom": "^17.0.2", - "@mdx-js/react": "^1.6.22", - "@svgr/webpack": "^6.3.1", - "clsx": "^1.2.1", - "file-loader": "^6.2.0", - "prism-react-renderer": "^1.3.5", - "url-loader": "^4.1.1" + "react": "17.0.2", + "react-dom": "17.0.2", + "@mdx-js/react": "1.6.22", + "@svgr/webpack": "6.3.1", + "clsx": "1.2.1", + "file-loader": "6.2.0", + "prism-react-renderer": "1.3.5", + "url-loader": "4.1.1" }, "browserslist": { "production": [ @@ -41,9 +41,9 @@ ] }, "devDependencies": { - "@algolia/client-search": "^4.14.2", - "@types/react": "^18.0.19", - "typescript": "^4.8.3", - "webpack": "^5.74.0" + "@algolia/client-search": "4.14.2", + "@types/react": "18.0.19", + "typescript": "4.8.3", + "webpack": "5.74.0" } } diff --git a/apps/landing-page/components/PricingPage/PricingCard/index.tsx b/apps/landing-page/components/PricingPage/PricingCard/index.tsx index 929b4b1cd..d00578c8b 100644 --- a/apps/landing-page/components/PricingPage/PricingCard/index.tsx +++ b/apps/landing-page/components/PricingPage/PricingCard/index.tsx @@ -23,14 +23,12 @@ interface PricingCardProps extends CardProps { data: PricingCardData icon?: JSX.Element button: React.ReactElement - isMostPopular?: boolean } export const PricingCard = ({ data, icon, button, - isMostPopular, ...rest }: PricingCardProps) => { const { features, price, name } = data diff --git a/apps/landing-page/pages/pricing.tsx b/apps/landing-page/pages/pricing.tsx index 324ff78d5..af04efc5a 100644 --- a/apps/landing-page/pages/pricing.tsx +++ b/apps/landing-page/pages/pricing.tsx @@ -219,7 +219,6 @@ const Pricing = () => { Subscribe now } - isMostPopular /> diff --git a/apps/viewer/pages/api/typebots/[typebotId]/blocks/[blockId]/storage/upload-url.ts b/apps/viewer/pages/api/typebots/[typebotId]/blocks/[blockId]/storage/upload-url.ts index 3f596ead1..6d71ea9c9 100644 --- a/apps/viewer/pages/api/typebots/[typebotId]/blocks/[blockId]/storage/upload-url.ts +++ b/apps/viewer/pages/api/typebots/[typebotId]/blocks/[blockId]/storage/upload-url.ts @@ -76,6 +76,7 @@ const checkStorageLimit = async (typebotId: string) => { }) if (!typebot?.workspace) throw new Error('Workspace not found') const { workspace } = typebot + console.log(typebot.workspaceId) const { _sum: { storageUsed: totalStorageUsed }, } = await prisma.answer.aggregate({ @@ -94,26 +95,27 @@ const checkStorageLimit = async (typebotId: string) => { if (!totalStorageUsed) return false const hasSentFirstEmail = workspace.storageLimitFirstEmailSentAt !== null const hasSentSecondEmail = workspace.storageLimitSecondEmailSentAt !== null - const storageLimit = getStorageLimit(typebot.workspace) * 1024 * 1024 * 1024 + const storageLimit = getStorageLimit(typebot.workspace) + const storageLimitBytes = storageLimit * 1024 * 1024 * 1024 if ( - totalStorageUsed >= storageLimit * LIMIT_EMAIL_TRIGGER_PERCENT && + totalStorageUsed >= storageLimitBytes * LIMIT_EMAIL_TRIGGER_PERCENT && !hasSentFirstEmail && env('E2E_TEST') !== 'true' ) - sendAlmostReachStorageLimitEmail({ + await sendAlmostReachStorageLimitEmail({ workspaceId: workspace.id, storageLimit, }) if ( - totalStorageUsed >= storageLimit && + totalStorageUsed >= storageLimitBytes && !hasSentSecondEmail && env('E2E_TEST') !== 'true' ) - sendReachStorageLimitEmail({ + await sendReachStorageLimitEmail({ workspaceId: workspace.id, storageLimit, }) - return (totalStorageUsed ?? 0) >= getStorageLimit(typebot?.workspace) + return totalStorageUsed >= storageLimitBytes } const sendAlmostReachStorageLimitEmail = async ({ diff --git a/apps/viewer/pages/api/typebots/[typebotId]/results.ts b/apps/viewer/pages/api/typebots/[typebotId]/results.ts index bf9568135..762b6cc19 100644 --- a/apps/viewer/pages/api/typebots/[typebotId]/results.ts +++ b/apps/viewer/pages/api/typebots/[typebotId]/results.ts @@ -69,8 +69,8 @@ const checkChatsUsage = async ( | 'chatsLimitSecondEmailSentAt' > ) => { - const chatLimit = getChatsLimit(workspace) - if (chatLimit === -1) return + const chatsLimit = getChatsLimit(workspace) + if (chatsLimit === -1) return const now = new Date() const firstDayOfMonth = new Date(now.getFullYear(), now.getMonth(), 1) const lastDayOfMonth = new Date(now.getFullYear(), now.getMonth() + 1, 0) @@ -91,26 +91,26 @@ const checkChatsUsage = async ( workspace.chatsLimitSecondEmailSentAt < firstDayOfNextMonth && workspace.chatsLimitSecondEmailSentAt > firstDayOfMonth if ( - chatsCount >= chatLimit * LIMIT_EMAIL_TRIGGER_PERCENT && + chatsCount >= chatsLimit * LIMIT_EMAIL_TRIGGER_PERCENT && !hasSentFirstEmail && env('E2E_TEST') !== 'true' ) await sendAlmostReachChatsLimitEmail({ workspaceId: workspace.id, - chatLimit, + chatLimit: chatsLimit, firstDayOfNextMonth, }) if ( - chatsCount >= chatLimit && + chatsCount >= chatsLimit && !hasSentSecondEmail && env('E2E_TEST') !== 'true' ) await sendReachedAlertEmail({ workspaceId: workspace.id, - chatLimit, + chatLimit: chatsLimit, firstDayOfNextMonth, }) - return chatsCount >= chatLimit + return chatsCount >= chatsLimit } const sendAlmostReachChatsLimitEmail = async ({ diff --git a/apps/viewer/playwright/services/browser.ts b/apps/viewer/playwright/services/browser.ts index 93c3a37de..9554ac7cf 100644 --- a/apps/viewer/playwright/services/browser.ts +++ b/apps/viewer/playwright/services/browser.ts @@ -1,11 +1,11 @@ import { Page } from '@playwright/test' -export const mockSessionApiCalls = (page: Page) => - page.route(`${process.env.BUILDER_URL}/api/auth/session`, (route) => { +export const mockSessionResponsesToOtherUser = async (page: Page) => + page.route('/api/auth/session', (route) => { if (route.request().method() === 'GET') { return route.fulfill({ status: 200, - body: '{"user":{"id":"proUser","name":"Pro user","email":"pro-user@email.com","emailVerified":null,"image":"https://avatars.githubusercontent.com/u/16015833?v=4","stripeId":null,"graphNavigation": "TRACKPAD"}}', + body: '{"user":{"id":"otherUserId","name":"James Doe","email":"other-user@email.com","emailVerified":null,"image":"https://avatars.githubusercontent.com/u/16015833?v=4","stripeId":null,"graphNavigation": "TRACKPAD"}}', }) } return route.continue() diff --git a/apps/viewer/playwright/services/database.ts b/apps/viewer/playwright/services/database.ts index d3439f8e4..cbf3ab28c 100644 --- a/apps/viewer/playwright/services/database.ts +++ b/apps/viewer/playwright/services/database.ts @@ -18,6 +18,8 @@ const prisma = new PrismaClient() const userId = 'userId' export const freeWorkspaceId = 'freeWorkspace' export const starterWorkspaceId = 'starterWorkspace' +export const limitTestWorkspaceId = 'limitTestWorkspace' +export const apiToken = 'jirowjgrwGREHE' export const teardownDatabase = async () => { await prisma.workspace.deleteMany({ @@ -51,6 +53,11 @@ export const createWorkspaces = async () => name: 'Starter workspace', plan: Plan.STARTER, }, + { + id: limitTestWorkspaceId, + name: 'Limit test workspace', + plan: Plan.FREE, + }, ], }) @@ -65,20 +72,10 @@ export const createUser = async () => { createMany: { data: [ { - name: 'Token 1', - token: 'jirowjgrwGREHEtoken1', + name: 'Token', + token: apiToken, createdAt: new Date(2022, 1, 1), }, - { - name: 'Github', - token: 'jirowjgrwGREHEgdrgithub', - createdAt: new Date(2022, 1, 2), - }, - { - name: 'N8n', - token: 'jirowjgrwGREHrgwhrwn8n', - createdAt: new Date(2022, 1, 3), - }, ], }, }, @@ -88,6 +85,7 @@ export const createUser = async () => { data: [ { role: WorkspaceRole.ADMIN, userId, workspaceId: freeWorkspaceId }, { role: WorkspaceRole.ADMIN, userId, workspaceId: starterWorkspaceId }, + { role: WorkspaceRole.ADMIN, userId, workspaceId: limitTestWorkspaceId }, ], }) } @@ -207,8 +205,8 @@ export const importTypebotInDatabase = async ( ) => { const typebot: Typebot = { ...JSON.parse(readFileSync(path).toString()), - ...updates, workspaceId: starterWorkspaceId, + ...updates, } await prisma.typebot.create({ data: typebot, diff --git a/apps/viewer/playwright/tests/api.spec.ts b/apps/viewer/playwright/tests/api.spec.ts index dd825e904..10bae4ff7 100644 --- a/apps/viewer/playwright/tests/api.spec.ts +++ b/apps/viewer/playwright/tests/api.spec.ts @@ -1,5 +1,6 @@ import test, { expect } from '@playwright/test' import { + apiToken, createResults, createWebhook, importTypebotInDatabase, @@ -23,7 +24,7 @@ test.beforeAll(async () => { test('can list typebots', async ({ request }) => { expect((await request.get(`/api/typebots`)).status()).toBe(401) const response = await request.get(`/api/typebots`, { - headers: { Authorization: 'Bearer userToken' }, + headers: { Authorization: `Bearer ${apiToken}` }, }) const { typebots } = await response.json() expect(typebots).toHaveLength(1) @@ -41,7 +42,7 @@ test('can get webhook blocks', async ({ request }) => { const response = await request.get( `/api/typebots/${typebotId}/webhookBlocks`, { - headers: { Authorization: 'Bearer userToken' }, + headers: { Authorization: `Bearer ${apiToken}` }, } ) const { blocks } = await response.json() @@ -65,7 +66,7 @@ test('can subscribe webhook', async ({ request }) => { `/api/typebots/${typebotId}/blocks/webhookBlock/subscribeWebhook`, { headers: { - Authorization: 'Bearer userToken', + Authorization: `Bearer ${apiToken}`, }, data: { url: 'https://test.com' }, } @@ -87,7 +88,7 @@ test('can unsubscribe webhook', async ({ request }) => { const response = await request.post( `/api/typebots/${typebotId}/blocks/webhookBlock/unsubscribeWebhook`, { - headers: { Authorization: 'Bearer userToken' }, + headers: { Authorization: `Bearer ${apiToken}` }, } ) const body = await response.json() @@ -107,7 +108,7 @@ test('can get a sample result', async ({ request }) => { const response = await request.get( `/api/typebots/${typebotId}/blocks/webhookBlock/sampleResult`, { - headers: { Authorization: 'Bearer userToken' }, + headers: { Authorization: `Bearer ${apiToken}` }, } ) const data = await response.json() @@ -128,7 +129,7 @@ test('can list results', async ({ request }) => { const response = await request.get( `/api/typebots/${typebotId}/results?limit=10`, { - headers: { Authorization: 'Bearer userToken' }, + headers: { Authorization: `Bearer ${apiToken}` }, } ) const { results } = await response.json() diff --git a/apps/viewer/playwright/tests/fileUpload.spec.ts b/apps/viewer/playwright/tests/fileUpload.spec.ts index 11c5aa684..ef4bfcb7e 100644 --- a/apps/viewer/playwright/tests/fileUpload.spec.ts +++ b/apps/viewer/playwright/tests/fileUpload.spec.ts @@ -6,7 +6,6 @@ import { typebotViewer } from '../services/selectorUtils' import { createResults, importTypebotInDatabase } from '../services/database' import { readFileSync } from 'fs' import { isDefined } from 'utils' -import { describe } from 'node:test' const THREE_GIGABYTES = 3 * 1024 * 1024 * 1024 @@ -49,7 +48,7 @@ test('should work as expected', async ({ page, browser }) => { page.locator('text="Export"').click(), ]) const downloadPath = await download.path() - expect(path).toBeDefined() + expect(downloadPath).toBeDefined() const file = readFileSync(downloadPath as string).toString() const { data } = parse(file) expect(data).toHaveLength(2) @@ -86,7 +85,7 @@ test('should work as expected', async ({ page, browser }) => { ).toBeVisible() }) -describe('Storage limit is reached', () => { +test.describe('Storage limit is reached', () => { const typebotId = cuid() test.beforeAll(async () => { diff --git a/apps/viewer/playwright/tests/hugeBlock.spec.ts b/apps/viewer/playwright/tests/hugeBlock.spec.ts index 25c064a1f..36491f780 100644 --- a/apps/viewer/playwright/tests/hugeBlock.spec.ts +++ b/apps/viewer/playwright/tests/hugeBlock.spec.ts @@ -3,9 +3,6 @@ import path from 'path' import { importTypebotInDatabase } from '../services/database' import { typebotViewer } from '../services/selectorUtils' import cuid from 'cuid' -import { mockSessionApiCalls } from 'playwright/services/browser' - -test.beforeEach(({ page }) => mockSessionApiCalls(page)) test('should work as expected', async ({ page }) => { const typebotId = cuid() diff --git a/apps/viewer/playwright/tests/limits.spec.ts b/apps/viewer/playwright/tests/limits.spec.ts index 6cb3623f2..358e39816 100644 --- a/apps/viewer/playwright/tests/limits.spec.ts +++ b/apps/viewer/playwright/tests/limits.spec.ts @@ -1,8 +1,8 @@ import test, { expect } from '@playwright/test' import { createResults, - freeWorkspaceId, importTypebotInDatabase, + limitTestWorkspaceId, } from '../services/database' import cuid from 'cuid' import path from 'path' @@ -14,7 +14,7 @@ test('should not start if chat limit is reached', async ({ page }) => { { id: typebotId, publicId: `${typebotId}-public`, - workspaceId: freeWorkspaceId, + workspaceId: limitTestWorkspaceId, } ) await createResults({ typebotId, count: 320 }) diff --git a/apps/viewer/playwright/tests/metadata.spec.ts b/apps/viewer/playwright/tests/metadata.spec.ts index b67eb92e7..d2daee801 100644 --- a/apps/viewer/playwright/tests/metadata.spec.ts +++ b/apps/viewer/playwright/tests/metadata.spec.ts @@ -11,9 +11,6 @@ import { } from 'models' import { typebotViewer } from '../services/selectorUtils' import cuid from 'cuid' -import { mockSessionApiCalls } from 'playwright/services/browser' - -test.beforeEach(({ page }) => mockSessionApiCalls(page)) test('Should correctly parse metadata', async ({ page }) => { const typebotId = cuid() @@ -37,20 +34,20 @@ test('Should correctly parse metadata', async ({ page }) => { }, ]) await page.goto(`/${typebotId}-public`) - await expect( + expect( await page.evaluate(`document.querySelector('title').textContent`) ).toBe(customMetadata.title) - await expect( + expect( await page.evaluate( () => (document.querySelector('meta[name="description"]') as any).content ) ).toBe(customMetadata.description) - await expect( + expect( await page.evaluate( () => (document.querySelector('meta[property="og:image"]') as any).content ) ).toBe(customMetadata.imageUrl) - await expect( + expect( await page.evaluate(() => (document.querySelector('link[rel="icon"]') as any).getAttribute('href') ) diff --git a/apps/viewer/playwright/tests/predefinedVariables.spec.ts b/apps/viewer/playwright/tests/predefinedVariables.spec.ts index fc7369124..7c70c3fa8 100644 --- a/apps/viewer/playwright/tests/predefinedVariables.spec.ts +++ b/apps/viewer/playwright/tests/predefinedVariables.spec.ts @@ -3,9 +3,6 @@ import { importTypebotInDatabase } from '../services/database' import cuid from 'cuid' import path from 'path' import { typebotViewer } from '../services/selectorUtils' -import { mockSessionApiCalls } from 'playwright/services/browser' - -test.beforeEach(({ page }) => mockSessionApiCalls(page)) test('should correctly be injected', async ({ page }) => { const typebotId = cuid() diff --git a/apps/viewer/playwright/tests/sendEmail.spec.ts b/apps/viewer/playwright/tests/sendEmail.spec.ts index 7eaed3f5d..831d4649d 100644 --- a/apps/viewer/playwright/tests/sendEmail.spec.ts +++ b/apps/viewer/playwright/tests/sendEmail.spec.ts @@ -7,9 +7,6 @@ import cuid from 'cuid' import path from 'path' import { typebotViewer } from '../services/selectorUtils' import { SmtpCredentialsData } from 'models' -import { mockSessionApiCalls } from 'playwright/services/browser' - -test.beforeEach(({ page }) => mockSessionApiCalls(page)) const mockSmtpCredentials: SmtpCredentialsData = { from: { diff --git a/apps/viewer/playwright/tests/settings.spec.ts b/apps/viewer/playwright/tests/settings.spec.ts index 5c9147bc2..98b18c0c6 100644 --- a/apps/viewer/playwright/tests/settings.spec.ts +++ b/apps/viewer/playwright/tests/settings.spec.ts @@ -10,9 +10,6 @@ import { defaultTextInputOptions, InputBlockType, } from 'models' -import { mockSessionApiCalls } from 'playwright/services/browser' - -test.beforeEach(({ page }) => mockSessionApiCalls(page)) test('Result should be in storage by default', async ({ page }) => { const typebotId = cuid() diff --git a/apps/viewer/playwright/tests/typebotLink.spec.ts b/apps/viewer/playwright/tests/typebotLink.spec.ts index a4fe1236e..ff0cb0127 100644 --- a/apps/viewer/playwright/tests/typebotLink.spec.ts +++ b/apps/viewer/playwright/tests/typebotLink.spec.ts @@ -2,9 +2,6 @@ import test, { expect } from '@playwright/test' import path from 'path' import { importTypebotInDatabase } from '../services/database' import { typebotViewer } from '../services/selectorUtils' -import { mockSessionApiCalls } from 'playwright/services/browser' - -test.beforeEach(({ page }) => mockSessionApiCalls(page)) test('should work as expected', async ({ page }) => { const typebotId = 'cl0ibhi7s0018n21aarlmg0cm' diff --git a/apps/viewer/playwright/tests/webhook.spec.ts b/apps/viewer/playwright/tests/webhook.spec.ts index 7d1294870..53672ea61 100644 --- a/apps/viewer/playwright/tests/webhook.spec.ts +++ b/apps/viewer/playwright/tests/webhook.spec.ts @@ -4,9 +4,6 @@ import cuid from 'cuid' import path from 'path' import { typebotViewer } from '../services/selectorUtils' import { HttpMethod } from 'models' -import { mockSessionApiCalls } from 'playwright/services/browser' - -test.beforeEach(({ page }) => mockSessionApiCalls(page)) test('should execute webhooks properly', async ({ page }) => { const typebotId = cuid() diff --git a/packages/bot-engine/src/components/ConversationContainer.tsx b/packages/bot-engine/src/components/ConversationContainer.tsx index f336c31e8..821e49a6c 100644 --- a/packages/bot-engine/src/components/ConversationContainer.tsx +++ b/packages/bot-engine/src/components/ConversationContainer.tsx @@ -80,6 +80,7 @@ export const ConversationContainer = ({ } const nextGroup = currentTypebot.groups.find(byId(nextEdge.to.groupId)) if (!nextGroup) return onCompleted() + console.log(nextGroup, nextEdge) const startBlockIndex = nextEdge.to.blockId ? nextGroup.blocks.findIndex(byId(nextEdge.to.blockId)) : 0 @@ -151,9 +152,7 @@ export const ConversationContainer = ({ const groupAfter = displayedGroups[idx + 1] const groupAfterStartsWithInput = groupAfter && - isInputBlock( - groupAfter.group.blocks[groupAfter.startBlockIndex] as Block - ) + isInputBlock(groupAfter.group.blocks[groupAfter.startBlockIndex]) return ( async ({ count, - idPrefix = '', + customResultIdPrefix, typebotId, - isChronological = true, + isChronological, fakeStorage, }: CreateFakeResultsProps) => { + const resultIdPrefix = customResultIdPrefix ?? cuid() await prisma.result.createMany({ data: [ ...Array.from(Array(count)).map((_, idx) => { const today = new Date() const rand = Math.random() return { - id: `${idPrefix}-result${idx}`, + id: `${resultIdPrefix}-result${idx}`, typebotId, createdAt: isChronological ? new Date( @@ -36,20 +38,23 @@ export const injectFakeResults = }), ], }) - return createAnswers(prisma)({ idPrefix, fakeStorage, count }) + return createAnswers(prisma)({ fakeStorage, resultIdPrefix, count }) } const createAnswers = (prisma: PrismaClient) => ({ count, - idPrefix, + resultIdPrefix, fakeStorage, - }: Pick) => { + }: { resultIdPrefix: string } & Pick< + CreateFakeResultsProps, + 'fakeStorage' | 'count' + >) => { return prisma.answer.createMany({ data: [ ...Array.from(Array(count)).map((_, idx) => ({ - resultId: `${idPrefix}-result${idx}`, + resultId: `${resultIdPrefix}-result${idx}`, content: `content${idx}`, blockId: 'block1', groupId: 'block1', diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e9013eccd..a151d372a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -112,7 +112,7 @@ importers: dependencies: '@chakra-ui/css-reset': 2.0.7_gyryel6m34lsxtsejhafetjriq '@chakra-ui/react': 2.3.2_uwd2kxpyhtmqlclhf6n5c2gfau - '@codemirror/lang-css': 6.0.0 + '@codemirror/lang-css': 6.0.0_2js663f52tgwrrbokpneg22gyy '@codemirror/lang-html': 6.1.1 '@codemirror/lang-javascript': 6.0.2 '@codemirror/lang-json': 6.0.0 @@ -141,7 +141,7 @@ importers: bot-engine: link:../../packages/bot-engine browser-image-compression: 2.0.0 canvas-confetti: 1.5.1 - codemirror: 6.0.1 + codemirror: 6.0.1_@lezer+common@1.0.0 cuid: 2.1.8 deep-object-diff: 1.1.7 dequal: 2.0.3 @@ -211,27 +211,27 @@ importers: apps/docs: specifiers: - '@algolia/client-search': ^4.14.2 + '@algolia/client-search': 4.14.2 '@docusaurus/core': 2.1.0 '@docusaurus/preset-classic': 2.1.0 '@docusaurus/theme-common': 2.1.0 - '@docusaurus/theme-search-algolia': ^2.1.0 - '@mdx-js/react': ^1.6.22 - '@svgr/webpack': ^6.3.1 - '@types/react': ^18.0.19 - clsx: ^1.2.1 - file-loader: ^6.2.0 - prism-react-renderer: ^1.3.5 - react: ^17.0.2 - react-dom: ^17.0.2 - typescript: ^4.8.3 - url-loader: ^4.1.1 - webpack: ^5.74.0 + '@docusaurus/theme-search-algolia': 2.1.0 + '@mdx-js/react': 1.6.22 + '@svgr/webpack': 6.3.1 + '@types/react': 18.0.19 + clsx: 1.2.1 + file-loader: 6.2.0 + prism-react-renderer: 1.3.5 + react: 17.0.2 + react-dom: 17.0.2 + typescript: 4.8.3 + url-loader: 4.1.1 + webpack: 5.74.0 dependencies: - '@docusaurus/core': 2.1.0_o6kpfqikfouunwlj6hykpi2c7m - '@docusaurus/preset-classic': 2.1.0_f7voygygfrlthmprdkattq7cqq - '@docusaurus/theme-common': 2.1.0_o6kpfqikfouunwlj6hykpi2c7m - '@docusaurus/theme-search-algolia': 2.1.0_b4fwet5r5zamzwgxne7ermgcdu + '@docusaurus/core': 2.1.0_mjb3abnop6izgvkouxh4aqdnvm + '@docusaurus/preset-classic': 2.1.0_zelwb7ht3lcpqjnqhj2oyn24te + '@docusaurus/theme-common': 2.1.0_sfoxds7t5ydpegc3knd667wn6m + '@docusaurus/theme-search-algolia': 2.1.0_zelwb7ht3lcpqjnqhj2oyn24te '@mdx-js/react': 1.6.22_react@17.0.2 '@svgr/webpack': 6.3.1 clsx: 1.2.1 @@ -482,7 +482,7 @@ importers: rollup-plugin-peer-deps-external: 2.2.4_rollup@2.79.0 rollup-plugin-postcss: 4.0.2_postcss@8.4.16 rollup-plugin-terser: 7.0.2_rollup@2.79.0 - tailwindcss: 3.1.8 + tailwindcss: 3.1.8_postcss@8.4.16 tslib: 2.4.0 typescript: 4.8.3 utils: link:../utils @@ -571,6 +571,7 @@ importers: specifiers: '@types/nodemailer': 6.4.5 aws-sdk: 2.1213.0 + cuid: ^2.1.8 db: workspace:* models: workspace:* next: 12.3.0 @@ -579,6 +580,7 @@ importers: devDependencies: '@types/nodemailer': 6.4.5 aws-sdk: 2.1213.0 + cuid: 2.1.8 db: link:../db models: link:../models next: 12.3.0_biqbaboplfbrettd7655fr4n2y @@ -753,11 +755,6 @@ packages: dependencies: '@babel/highlight': 7.18.6 - /@babel/compat-data/7.18.8: - resolution: {integrity: sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==} - engines: {node: '>=6.9.0'} - dev: false - /@babel/compat-data/7.19.0: resolution: {integrity: sha512-y5rqgTTPTmaF5e2nVhOxw+Ur9HDJLsWb6U/KpgUzRZEdPfE6VOubXBKLdbcUTijzRptednSBDQbYZBOSqJxpJw==} engines: {node: '>=6.9.0'} @@ -786,29 +783,6 @@ packages: - supports-color dev: false - /@babel/core/7.18.9: - resolution: {integrity: sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.0 - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.18.9 - '@babel/helper-compilation-targets': 7.18.9_@babel+core@7.18.9 - '@babel/helper-module-transforms': 7.18.9 - '@babel/helpers': 7.18.9 - '@babel/parser': 7.18.9 - '@babel/template': 7.18.6 - '@babel/traverse': 7.18.9 - '@babel/types': 7.18.9 - convert-source-map: 1.8.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.1 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/core/7.19.0: resolution: {integrity: sha512-reM4+U7B9ss148rh2n1Qs9ASS+w94irYXga7c2jaQv9RVzpS7Mv1a9rnYYwuDa45G+DkORt9g6An2k/V4d9LbQ==} engines: {node: '>=6.9.0'} @@ -831,24 +805,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/generator/7.18.12: - resolution: {integrity: sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.10 - '@jridgewell/gen-mapping': 0.3.2 - jsesc: 2.5.2 - dev: false - - /@babel/generator/7.18.13: - resolution: {integrity: sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.19.0 - '@jridgewell/gen-mapping': 0.3.2 - jsesc: 2.5.2 - dev: false - /@babel/generator/7.18.7: resolution: {integrity: sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==} engines: {node: '>=6.9.0'} @@ -858,14 +814,6 @@ packages: jsesc: 2.5.2 dev: false - /@babel/generator/7.18.9: - resolution: {integrity: sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.9 - '@jridgewell/gen-mapping': 0.3.2 - jsesc: 2.5.2 - /@babel/generator/7.19.0: resolution: {integrity: sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==} engines: {node: '>=6.9.0'} @@ -887,32 +835,6 @@ packages: '@babel/helper-explode-assignable-expression': 7.18.6 '@babel/types': 7.19.0 - /@babel/helper-compilation-targets/7.18.9_@babel+core@7.18.9: - resolution: {integrity: sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.18.8 - '@babel/core': 7.18.9 - '@babel/helper-validator-option': 7.18.6 - browserslist: 4.21.2 - semver: 6.3.0 - dev: false - - /@babel/helper-compilation-targets/7.18.9_@babel+core@7.19.0: - resolution: {integrity: sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.18.8 - '@babel/core': 7.19.0 - '@babel/helper-validator-option': 7.18.6 - browserslist: 4.21.2 - semver: 6.3.0 - dev: false - /@babel/helper-compilation-targets/7.19.0_@babel+core@7.19.0: resolution: {integrity: sha512-Ai5bNWXIvwDvWM7njqsG3feMlL9hCVQsPYXodsZyLwshYkZVJt59Gftau4VrE8S9IT9asd2uSP1hG6wCNw+sXA==} engines: {node: '>=6.9.0'} @@ -925,24 +847,6 @@ packages: browserslist: 4.21.3 semver: 6.3.0 - /@babel/helper-create-class-features-plugin/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.18.9 - '@babel/helper-member-expression-to-functions': 7.18.6 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-replace-supers': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/helper-create-class-features-plugin/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw==} engines: {node: '>=6.9.0'} @@ -960,39 +864,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-create-regexp-features-plugin/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-annotate-as-pure': 7.18.6 - regexpu-core: 5.1.0 - dev: false - - /@babel/helper-create-regexp-features-plugin/7.18.6_@babel+core@7.19.0: - resolution: {integrity: sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-annotate-as-pure': 7.18.6 - regexpu-core: 5.1.0 - dev: false - - /@babel/helper-create-regexp-features-plugin/7.19.0_@babel+core@7.18.9: - resolution: {integrity: sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-annotate-as-pure': 7.18.6 - regexpu-core: 5.1.0 - dev: false - /@babel/helper-create-regexp-features-plugin/7.19.0_@babel+core@7.19.0: resolution: {integrity: sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==} engines: {node: '>=6.9.0'} @@ -1003,42 +874,6 @@ packages: '@babel/helper-annotate-as-pure': 7.18.6 regexpu-core: 5.1.0 - /@babel/helper-define-polyfill-provider/0.3.1_@babel+core@7.18.9: - resolution: {integrity: sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==} - peerDependencies: - '@babel/core': ^7.4.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-compilation-targets': 7.18.9_@babel+core@7.18.9 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/traverse': 7.18.9 - debug: 4.3.4 - lodash.debounce: 4.0.8 - resolve: 1.22.1 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/helper-define-polyfill-provider/0.3.1_@babel+core@7.19.0: - resolution: {integrity: sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==} - peerDependencies: - '@babel/core': ^7.4.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-compilation-targets': 7.18.9_@babel+core@7.19.0 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/traverse': 7.18.9 - debug: 4.3.4 - lodash.debounce: 4.0.8 - resolve: 1.22.1 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/helper-define-polyfill-provider/0.3.2_@babel+core@7.19.0: resolution: {integrity: sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==} peerDependencies: @@ -1054,6 +889,22 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.19.0: + resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} + peerDependencies: + '@babel/core': ^7.4.0-0 + dependencies: + '@babel/core': 7.19.0 + '@babel/helper-compilation-targets': 7.19.0_@babel+core@7.19.0 + '@babel/helper-plugin-utils': 7.19.0 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.1 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/helper-environment-visitor/7.18.6: resolution: {integrity: sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==} engines: {node: '>=6.9.0'} @@ -1082,7 +933,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.18.6 - '@babel/types': 7.18.9 + '@babel/types': 7.19.0 /@babel/helper-function-name/7.19.0: resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} @@ -1101,7 +952,7 @@ packages: resolution: {integrity: sha512-CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.9 + '@babel/types': 7.19.0 /@babel/helper-member-expression-to-functions/7.18.9: resolution: {integrity: sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==} @@ -1167,36 +1018,6 @@ packages: resolution: {integrity: sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==} engines: {node: '>=6.9.0'} - /@babel/helper-remap-async-to-generator/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-z5wbmV55TveUPZlCLZvxWHtrjuJd+8inFhk7DG0WW87/oJuGDcjDiu7HIvGcpf5464L6xKCg3vNkmlVVz9hwyQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-wrap-function': 7.18.6 - '@babel/types': 7.18.10 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.18.9: - resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-wrap-function': 7.18.11 - '@babel/types': 7.19.0 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.19.0: resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} engines: {node: '>=6.9.0'} @@ -1218,8 +1039,8 @@ packages: '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-member-expression-to-functions': 7.18.6 '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/traverse': 7.18.9 - '@babel/types': 7.18.9 + '@babel/traverse': 7.19.0 + '@babel/types': 7.19.0 transitivePeerDependencies: - supports-color @@ -1241,13 +1062,6 @@ packages: dependencies: '@babel/types': 7.18.9 - /@babel/helper-skip-transparent-expression-wrappers/7.18.6: - resolution: {integrity: sha512-4KoLhwGS9vGethZpAhYnMejWkX64wsnHPDwvOsKWU6Fg4+AlK2Jz3TyjQLMEPvz+1zemi/WBdkYxCD0bAfIkiw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.9 - dev: false - /@babel/helper-skip-transparent-expression-wrappers/7.18.9: resolution: {integrity: sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==} engines: {node: '>=6.9.0'} @@ -1283,29 +1097,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-wrap-function/7.18.6: - resolution: {integrity: sha512-I5/LZfozwMNbwr/b1vhhuYD+J/mU+gfGAj5td7l5Rv9WYmH6i3Om69WGKNmlIpsVW/mF6O5bvTKbvDQZVgjqOw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-function-name': 7.18.9 - '@babel/template': 7.18.10 - '@babel/traverse': 7.18.11 - '@babel/types': 7.18.10 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/helpers/7.18.9: - resolution: {integrity: sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.18.6 - '@babel/traverse': 7.18.9 - '@babel/types': 7.18.9 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/helpers/7.19.0: resolution: {integrity: sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==} engines: {node: '>=6.9.0'} @@ -1339,13 +1130,6 @@ packages: '@babel/types': 7.18.8 dev: false - /@babel/parser/7.18.9: - resolution: {integrity: sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.18.9 - /@babel/parser/7.19.0: resolution: {integrity: sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw==} engines: {node: '>=6.0.0'} @@ -1353,16 +1137,6 @@ packages: dependencies: '@babel/types': 7.19.0 - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} @@ -1372,18 +1146,6 @@ packages: '@babel/core': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-Udgu8ZRgrBrttVz6A0EVL0SJ1z+RLbIeqsu632SA1hf0awEppD6TvdznoH+orIF8wtFFAV/Enmw9Y+9oV8TQcw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-skip-transparent-expression-wrappers': 7.18.6 - '@babel/plugin-proposal-optional-chaining': 7.18.6_@babel+core@7.18.9 - dev: false - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.18.9_@babel+core@7.19.0: resolution: {integrity: sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==} engines: {node: '>=6.9.0'} @@ -1395,36 +1157,6 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.19.0 - /@babel/plugin-proposal-async-generator-functions/7.18.10_@babel+core@7.19.0: - resolution: {integrity: sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.19.0 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.19.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-proposal-async-generator-functions/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-remap-async-to-generator': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.18.9 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-proposal-async-generator-functions/7.19.0_@babel+core@7.19.0: resolution: {integrity: sha512-nhEByMUTx3uZueJ/QkJuSlCfN4FGg+xy+vRsfGQGzSauq5ks2Deid2+05Q3KhfaUjvec1IGhw/Zm3cFm8JigTQ==} engines: {node: '>=6.9.0'} @@ -1439,19 +1171,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.18.9 - '@babel/helper-plugin-utils': 7.18.9 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} @@ -1464,20 +1183,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-proposal-class-static-block/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.18.9 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-proposal-class-static-block/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==} engines: {node: '>=6.9.0'} @@ -1491,17 +1196,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.18.9 - dev: false - /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} engines: {node: '>=6.9.0'} @@ -1512,17 +1206,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.19.0 - /@babel/plugin-proposal-export-namespace-from/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-zr/QcUlUo7GPo6+X1wC98NJADqmy5QTFWWhqeQWiki4XHafJtLl/YMGkmRB2szDD2IYJCCdBTd4ElwhId9T7Xw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.18.9 - dev: false - /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.19.0: resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} engines: {node: '>=6.9.0'} @@ -1533,17 +1216,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.19.0 - /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.18.9 - dev: false - /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} engines: {node: '>=6.9.0'} @@ -1554,17 +1226,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.19.0 - /@babel/plugin-proposal-logical-assignment-operators/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-zMo66azZth/0tVd7gmkxOkOjs2rpHyhpcFo565PUP37hSp6hSd9uUKIfTDFMz58BwqgQKhJ9YxtM5XddjXVn+Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.18.9 - dev: false - /@babel/plugin-proposal-logical-assignment-operators/7.18.9_@babel+core@7.19.0: resolution: {integrity: sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==} engines: {node: '>=6.9.0'} @@ -1575,17 +1236,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.19.0 - /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.18.9 - dev: false - /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} @@ -1596,17 +1246,6 @@ packages: '@babel/helper-plugin-utils': 7.18.9 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.19.0 - /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.18.9 - dev: false - /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} @@ -1628,20 +1267,6 @@ packages: '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.12.9 dev: false - /@babel/plugin-proposal-object-rest-spread/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-9yuM6wr4rIsKa1wlUAbZEazkCrgw2sMPEXCr4Rnwetu7cEW1NydkCWytLuYletbf8vFxdJxFhwEZqMpOx2eZyw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.18.8 - '@babel/core': 7.18.9 - '@babel/helper-compilation-targets': 7.18.9_@babel+core@7.18.9 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.18.9 - '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.18.9 - dev: false - /@babel/plugin-proposal-object-rest-spread/7.18.9_@babel+core@7.19.0: resolution: {integrity: sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==} engines: {node: '>=6.9.0'} @@ -1655,17 +1280,6 @@ packages: '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.19.0 '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.19.0 - /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.18.9 - dev: false - /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} engines: {node: '>=6.9.0'} @@ -1676,18 +1290,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.19.0 - /@babel/plugin-proposal-optional-chaining/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-PatI6elL5eMzoypFAiYDpYQyMtXTn+iMhuxxQt5mAXD4fEmKorpSI3PHd+i3JXBJN3xyA6MvJv7at23HffFHwA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-skip-transparent-expression-wrappers': 7.18.6 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.18.9 - dev: false - /@babel/plugin-proposal-optional-chaining/7.18.9_@babel+core@7.19.0: resolution: {integrity: sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==} engines: {node: '>=6.9.0'} @@ -1699,19 +1301,6 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.19.0 - /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} engines: {node: '>=6.9.0'} @@ -1724,21 +1313,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-proposal-private-property-in-object/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.18.9 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-proposal-private-property-in-object/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==} engines: {node: '>=6.9.0'} @@ -1753,17 +1327,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} - engines: {node: '>=4'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} engines: {node: '>=4'} @@ -1774,15 +1337,6 @@ packages: '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.18.9: - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.19.0: resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: @@ -1800,15 +1354,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.18.9: - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.19.0: resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: @@ -1817,16 +1362,6 @@ packages: '@babel/core': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.18.9: - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.19.0: resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} @@ -1836,15 +1371,6 @@ packages: '@babel/core': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.18.9: - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.19.0: resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: @@ -1853,15 +1379,6 @@ packages: '@babel/core': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.18.9: - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.19.0: resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: @@ -1880,16 +1397,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: false - /@babel/plugin-syntax-import-assertions/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-syntax-import-assertions/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==} engines: {node: '>=6.9.0'} @@ -1908,15 +1415,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.18.9: - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.19.0: resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: @@ -1934,16 +1432,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: false - /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.18.6 - dev: false - /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} engines: {node: '>=6.9.0'} @@ -1953,15 +1441,6 @@ packages: '@babel/core': 7.19.0 '@babel/helper-plugin-utils': 7.18.6 - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.18.9: - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.19.0: resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: @@ -1970,15 +1449,6 @@ packages: '@babel/core': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.18.9: - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.19.0: resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: @@ -1987,15 +1457,6 @@ packages: '@babel/core': 7.19.0 '@babel/helper-plugin-utils': 7.18.9 - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.18.9: - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.19.0: resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: @@ -2013,15 +1474,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: false - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.18.9: - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.19.0: resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: @@ -2030,15 +1482,6 @@ packages: '@babel/core': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.18.9: - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.19.0: resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: @@ -2047,15 +1490,6 @@ packages: '@babel/core': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.18.9: - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.19.0: resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: @@ -2064,16 +1498,6 @@ packages: '@babel/core': 7.19.0 '@babel/helper-plugin-utils': 7.18.9 - /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.18.9: - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.19.0: resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} @@ -2083,16 +1507,6 @@ packages: '@babel/core': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.18.9: - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.19.0: resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} @@ -2102,16 +1516,6 @@ packages: '@babel/core': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-typescript/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-syntax-typescript/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==} engines: {node: '>=6.9.0'} @@ -2119,17 +1523,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.18.9 - - /@babel/plugin-transform-arrow-functions/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 '@babel/helper-plugin-utils': 7.19.0 - dev: false /@babel/plugin-transform-arrow-functions/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} @@ -2140,20 +1534,6 @@ packages: '@babel/core': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-async-to-generator/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.18.9 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-transform-async-to-generator/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==} engines: {node: '>=6.9.0'} @@ -2167,16 +1547,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} engines: {node: '>=6.9.0'} @@ -2186,16 +1556,6 @@ packages: '@babel/core': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-block-scoping/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-pRqwb91C42vs1ahSAWJkxOxU1RHWDn16XAa6ggQ72wjLlWyYeAcLvTtE0aM8ph3KNydy9CQF2nLYcjq1WysgxQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-transform-block-scoping/7.18.9_@babel+core@7.19.0: resolution: {integrity: sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==} engines: {node: '>=6.9.0'} @@ -2205,44 +1565,6 @@ packages: '@babel/core': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-classes/7.18.8_@babel+core@7.18.9: - resolution: {integrity: sha512-RySDoXdF6hgHSHuAW4aLGyVQdmvEX/iJtjVre52k0pxRq4hzqze+rAVP++NmNv596brBpYmaiKgTZby7ziBnVg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.18.9 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-replace-supers': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-classes/7.18.9_@babel+core@7.19.0: - resolution: {integrity: sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-replace-supers': 7.18.9 - '@babel/helper-split-export-declaration': 7.18.6 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-transform-classes/7.19.0_@babel+core@7.19.0: resolution: {integrity: sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==} engines: {node: '>=6.9.0'} @@ -2262,16 +1584,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-computed-properties/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-9repI4BhNrR0KenoR9vm3/cIc1tSBIo+u1WVjKCAynahj25O8zfbiE6JtAtHPGQSs4yZ+bA8mRasRP+qc+2R5A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-transform-computed-properties/7.18.9_@babel+core@7.19.0: resolution: {integrity: sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==} engines: {node: '>=6.9.0'} @@ -2290,37 +1602,6 @@ packages: '@babel/core': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-destructuring/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-tgy3u6lRp17ilY8r1kP4i2+HDUwxlVqq3RTc943eAWSzGgpU1qhiKpqZ5CMyHReIYPHdo3Kg8v8edKtDqSVEyQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - - /@babel/plugin-transform-destructuring/7.18.9_@babel+core@7.19.0: - resolution: {integrity: sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - - /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} engines: {node: '>=6.9.0'} @@ -2331,16 +1612,6 @@ packages: '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-duplicate-keys/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-NJU26U/208+sxYszf82nmGYqVF9QN8py2HFTblPT9hbawi8+1C5a9JubODLTGFuT0qlkqVinmkwOD13s0sZktg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.19.0: resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} engines: {node: '>=6.9.0'} @@ -2350,17 +1621,6 @@ packages: '@babel/core': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} engines: {node: '>=6.9.0'} @@ -2382,16 +1642,6 @@ packages: '@babel/plugin-syntax-flow': 7.18.6_@babel+core@7.19.0 dev: false - /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.18.9: - resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.19.0: resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} engines: {node: '>=6.9.0'} @@ -2401,18 +1651,6 @@ packages: '@babel/core': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-function-name/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-kJha/Gbs5RjzIu0CxZwf5e3aTTSlhZnHMT8zPWnJMjNpLOUgqevg+PN5oMH68nMCXnfiMo4Bhgxqj59KHTlAnA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-compilation-targets': 7.18.9_@babel+core@7.18.9 - '@babel/helper-function-name': 7.18.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.19.0: resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} engines: {node: '>=6.9.0'} @@ -2424,16 +1662,6 @@ packages: '@babel/helper-function-name': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-literals/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-x3HEw0cJZVDoENXOp20HlypIHfl0zMIhMVZEBVTfmqbObIpsMxMbmU5nOEO8R7LYT+z5RORKPlTI5Hj4OsO9/Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-transform-literals/7.18.9_@babel+core@7.19.0: resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} engines: {node: '>=6.9.0'} @@ -2443,16 +1671,6 @@ packages: '@babel/core': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} engines: {node: '>=6.9.0'} @@ -2462,20 +1680,6 @@ packages: '@babel/core': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-modules-amd/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - babel-plugin-dynamic-import-node: 2.3.3 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-transform-modules-amd/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==} engines: {node: '>=6.9.0'} @@ -2489,21 +1693,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-modules-commonjs/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-module-transforms': 7.18.9 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-simple-access': 7.18.6 - babel-plugin-dynamic-import-node: 2.3.3 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-transform-modules-commonjs/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==} engines: {node: '>=6.9.0'} @@ -2518,38 +1707,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-modules-systemjs/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-UbPYpXxLjTw6w6yXX2BYNxF3p6QY225wcTkfQCy3OMnSlS/C3xGtwUjEzGkldb/sy6PWLiCQ3NbYfjWUTI3t4g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-module-transforms': 7.18.9 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-validator-identifier': 7.18.6 - babel-plugin-dynamic-import-node: 2.3.3 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-modules-systemjs/7.18.9_@babel+core@7.19.0: - resolution: {integrity: sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-validator-identifier': 7.18.6 - babel-plugin-dynamic-import-node: 2.3.3 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-transform-modules-systemjs/7.19.0_@babel+core@7.19.0: resolution: {integrity: sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==} engines: {node: '>=6.9.0'} @@ -2565,19 +1722,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} engines: {node: '>=6.9.0'} @@ -2590,28 +1734,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-named-capturing-groups-regex/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-create-regexp-features-plugin': 7.18.6_@babel+core@7.18.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - - /@babel/plugin-transform-named-capturing-groups-regex/7.18.6_@babel+core@7.19.0: - resolution: {integrity: sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-create-regexp-features-plugin': 7.18.6_@babel+core@7.19.0 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-transform-named-capturing-groups-regex/7.19.0_@babel+core@7.19.0: resolution: {integrity: sha512-HDSuqOQzkU//kfGdiHBt71/hkDTApw4U/cMVgKgX7PqfB3LOaK+2GtCEsBu1dL9CkswDm0Gwehht1dCr421ULQ==} engines: {node: '>=6.9.0'} @@ -2622,16 +1744,6 @@ packages: '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} engines: {node: '>=6.9.0'} @@ -2641,19 +1753,6 @@ packages: '@babel/core': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-replace-supers': 7.18.9 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} engines: {node: '>=6.9.0'} @@ -2676,16 +1775,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: false - /@babel/plugin-transform-parameters/7.18.8_@babel+core@7.18.9: - resolution: {integrity: sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-transform-parameters/7.18.8_@babel+core@7.19.0: resolution: {integrity: sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==} engines: {node: '>=6.9.0'} @@ -2695,16 +1784,6 @@ packages: '@babel/core': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} engines: {node: '>=6.9.0'} @@ -2714,24 +1793,14 @@ packages: '@babel/core': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-react-constant-elements/7.18.6_@babel+core@7.18.9: + /@babel/plugin-transform-react-constant-elements/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-4g5H1bonF1dqgMe+wQ2fvDlRZ/mN/KwArk13teDv+xxn+pUDEiiDluQd6D2B30MJcL1u3qr0WZpfq0mw9/zSqA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - - /@babel/plugin-transform-react-display-name/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.0 + '@babel/helper-plugin-utils': 7.19.0 dev: false /@babel/plugin-transform-react-display-name/7.18.6_@babel+core@7.19.0: @@ -2741,17 +1810,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - - /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/plugin-transform-react-jsx': 7.18.6_@babel+core@7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: false /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.19.0: @@ -2764,20 +1823,6 @@ packages: '@babel/plugin-transform-react-jsx': 7.18.6_@babel+core@7.19.0 dev: false - /@babel/plugin-transform-react-jsx/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-Mz7xMPxoy9kPS/JScj6fJs03TZ/fZ1dJPlMjRAgTaxaS0fUBk8FV/A2rRgfPsVCZqALNwMexD+0Uaf5zlcKPpw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.18.9 - '@babel/types': 7.18.9 - dev: false - /@babel/plugin-transform-react-jsx/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-Mz7xMPxoy9kPS/JScj6fJs03TZ/fZ1dJPlMjRAgTaxaS0fUBk8FV/A2rRgfPsVCZqALNwMexD+0Uaf5zlcKPpw==} engines: {node: '>=6.9.0'} @@ -2787,22 +1832,11 @@ packages: '@babel/core': 7.19.0 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.19.0 '@babel/types': 7.18.9 dev: false - /@babel/plugin-transform-react-pure-annotations/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-transform-react-pure-annotations/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==} engines: {node: '>=6.9.0'} @@ -2811,18 +1845,7 @@ packages: dependencies: '@babel/core': 7.19.0 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - - /@babel/plugin-transform-regenerator/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 '@babel/helper-plugin-utils': 7.19.0 - regenerator-transform: 0.15.0 dev: false /@babel/plugin-transform-regenerator/7.18.6_@babel+core@7.19.0: @@ -2835,16 +1858,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 regenerator-transform: 0.15.0 - /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} engines: {node: '>=6.9.0'} @@ -2854,33 +1867,23 @@ packages: '@babel/core': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-runtime/7.18.6_@babel+core@7.19.0: - resolution: {integrity: sha512-8uRHk9ZmRSnWqUgyae249EJZ94b0yAGLBIqzZzl+0iEdbno55Pmlt/32JZsHwXD9k/uZj18Aqqk35wBX4CBTXA==} + /@babel/plugin-transform-runtime/7.19.1_@babel+core@7.19.0: + resolution: {integrity: sha512-2nJjTUFIzBMP/f/miLxEK9vxwW/KUXsdvN4sR//TmuDhe6yU2h57WmIOE12Gng3MDP/xpjUV/ToZRdcf8Yj4fA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.19.0 '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.18.9 - babel-plugin-polyfill-corejs2: 0.3.2_@babel+core@7.19.0 - babel-plugin-polyfill-corejs3: 0.5.3_@babel+core@7.19.0 - babel-plugin-polyfill-regenerator: 0.3.1_@babel+core@7.19.0 + '@babel/helper-plugin-utils': 7.19.0 + babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.19.0 + babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.19.0 + babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.19.0 semver: 6.3.0 transitivePeerDependencies: - supports-color dev: false - /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} engines: {node: '>=6.9.0'} @@ -2890,28 +1893,6 @@ packages: '@babel/core': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-spread/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-ayT53rT/ENF8WWexIRg9AiV9h0aIteyWn5ptfZTZQrjk/+f3WdrJGCY4c9wcgl2+MKkKPhzbYp97FTsquZpDCw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-skip-transparent-expression-wrappers': 7.18.6 - dev: false - - /@babel/plugin-transform-spread/7.18.9_@babel+core@7.19.0: - resolution: {integrity: sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 - dev: false - /@babel/plugin-transform-spread/7.19.0_@babel+core@7.19.0: resolution: {integrity: sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==} engines: {node: '>=6.9.0'} @@ -2922,16 +1903,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 - /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} engines: {node: '>=6.9.0'} @@ -2941,16 +1912,6 @@ packages: '@babel/core': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-template-literals/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-UuqlRrQmT2SWRvahW46cGSany0uTlcj8NYOS5sRGYi8FxPYPoLd5DDmMd32ZXEj2Jq+06uGVQKHxa/hJx2EzKw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.19.0: resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} engines: {node: '>=6.9.0'} @@ -2960,16 +1921,6 @@ packages: '@babel/core': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-typeof-symbol/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-7m71iS/QhsPk85xSjFPovHPcH3H9qeyzsujhTc+vcdnsXavoWYJ74zx0lP5RhpC5+iDnVLO+PPMHzC11qels1g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.19.0: resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} engines: {node: '>=6.9.0'} @@ -2979,20 +1930,6 @@ packages: '@babel/core': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-typescript/7.18.8_@babel+core@7.18.9: - resolution: {integrity: sha512-p2xM8HI83UObjsZGofMV/EdYjamsDm6MoN3hXPYIT0+gxIoopE+B7rPYKAxfrz9K9PK7JafTTjqYC6qipLExYA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.18.9 - '@babel/helper-plugin-utils': 7.18.6 - '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.18.9 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-transform-typescript/7.18.8_@babel+core@7.19.0: resolution: {integrity: sha512-p2xM8HI83UObjsZGofMV/EdYjamsDm6MoN3hXPYIT0+gxIoopE+B7rPYKAxfrz9K9PK7JafTTjqYC6qipLExYA==} engines: {node: '>=6.9.0'} @@ -3001,7 +1938,7 @@ packages: dependencies: '@babel/core': 7.19.0 '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.19.0 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.19.0 transitivePeerDependencies: - supports-color @@ -3016,27 +1953,6 @@ packages: '@babel/core': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-unicode-escapes/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - - /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} engines: {node: '>=6.9.0'} @@ -3047,178 +1963,6 @@ packages: '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/preset-env/7.18.10_@babel+core@7.19.0: - resolution: {integrity: sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.18.8 - '@babel/core': 7.19.0 - '@babel/helper-compilation-targets': 7.19.0_@babel+core@7.19.0 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.19.0 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.18.9_@babel+core@7.19.0 - '@babel/plugin-proposal-async-generator-functions': 7.18.10_@babel+core@7.19.0 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.19.0 - '@babel/plugin-proposal-class-static-block': 7.18.6_@babel+core@7.19.0 - '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.19.0 - '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.19.0 - '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.19.0 - '@babel/plugin-proposal-logical-assignment-operators': 7.18.9_@babel+core@7.19.0 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.19.0 - '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.19.0 - '@babel/plugin-proposal-object-rest-spread': 7.18.9_@babel+core@7.19.0 - '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.19.0 - '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.19.0 - '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.19.0 - '@babel/plugin-proposal-private-property-in-object': 7.18.6_@babel+core@7.19.0 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.19.0 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.19.0 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.19.0 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.19.0 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.19.0 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.19.0 - '@babel/plugin-syntax-import-assertions': 7.18.6_@babel+core@7.19.0 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.19.0 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.19.0 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.19.0 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.19.0 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.19.0 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.19.0 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.19.0 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.19.0 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.19.0 - '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.19.0 - '@babel/plugin-transform-async-to-generator': 7.18.6_@babel+core@7.19.0 - '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.19.0 - '@babel/plugin-transform-block-scoping': 7.18.9_@babel+core@7.19.0 - '@babel/plugin-transform-classes': 7.18.9_@babel+core@7.19.0 - '@babel/plugin-transform-computed-properties': 7.18.9_@babel+core@7.19.0 - '@babel/plugin-transform-destructuring': 7.18.9_@babel+core@7.19.0 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.19.0 - '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.19.0 - '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.19.0 - '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.19.0 - '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.19.0 - '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.19.0 - '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.19.0 - '@babel/plugin-transform-modules-amd': 7.18.6_@babel+core@7.19.0 - '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.19.0 - '@babel/plugin-transform-modules-systemjs': 7.18.9_@babel+core@7.19.0 - '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.19.0 - '@babel/plugin-transform-named-capturing-groups-regex': 7.18.6_@babel+core@7.19.0 - '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.19.0 - '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.19.0 - '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.19.0 - '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.19.0 - '@babel/plugin-transform-regenerator': 7.18.6_@babel+core@7.19.0 - '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.19.0 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.19.0 - '@babel/plugin-transform-spread': 7.18.9_@babel+core@7.19.0 - '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.19.0 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.19.0 - '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.19.0 - '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.19.0 - '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.19.0 - '@babel/preset-modules': 0.1.5_@babel+core@7.19.0 - '@babel/types': 7.19.0 - babel-plugin-polyfill-corejs2: 0.3.2_@babel+core@7.19.0 - babel-plugin-polyfill-corejs3: 0.5.3_@babel+core@7.19.0 - babel-plugin-polyfill-regenerator: 0.4.0_@babel+core@7.19.0 - core-js-compat: 3.23.4 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/preset-env/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-WrthhuIIYKrEFAwttYzgRNQ5hULGmwTj+D6l7Zdfsv5M7IWV/OZbUfbeL++Qrzx1nVJwWROIFhCHRYQV4xbPNw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.18.8 - '@babel/core': 7.18.9 - '@babel/helper-compilation-targets': 7.18.9_@babel+core@7.18.9 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-proposal-async-generator-functions': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-proposal-class-static-block': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-proposal-export-namespace-from': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-proposal-logical-assignment-operators': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-proposal-object-rest-spread': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-proposal-optional-chaining': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-proposal-private-property-in-object': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.18.9 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.18.9 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.18.9 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.18.9 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.18.9 - '@babel/plugin-syntax-import-assertions': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.18.9 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.18.9 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.18.9 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.18.9 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.18.9 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.18.9 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.18.9 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.18.9 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.18.9 - '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-async-to-generator': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-block-scoping': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-classes': 7.18.8_@babel+core@7.18.9 - '@babel/plugin-transform-computed-properties': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-destructuring': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-duplicate-keys': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.18.9 - '@babel/plugin-transform-function-name': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-literals': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-modules-amd': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-modules-systemjs': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-named-capturing-groups-regex': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.18.9 - '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-regenerator': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-spread': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-template-literals': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-typeof-symbol': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-unicode-escapes': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.18.9 - '@babel/preset-modules': 0.1.5_@babel+core@7.18.9 - '@babel/types': 7.18.9 - babel-plugin-polyfill-corejs2: 0.3.1_@babel+core@7.18.9 - babel-plugin-polyfill-corejs3: 0.5.2_@babel+core@7.18.9 - babel-plugin-polyfill-regenerator: 0.3.1_@babel+core@7.18.9 - core-js-compat: 3.23.4 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/preset-env/7.19.0_@babel+core@7.19.0: resolution: {integrity: sha512-1YUju1TAFuzjIQqNM9WsF4U6VbD/8t3wEAlw3LFYuuEr+ywqLRcSXxFKz4DCEj+sN94l/XTDiUXYRrsvMpz9WQ==} engines: {node: '>=6.9.0'} @@ -3316,19 +2060,6 @@ packages: '@babel/plugin-transform-flow-strip-types': 7.18.9_@babel+core@7.19.0 dev: false - /@babel/preset-modules/0.1.5_@babel+core@7.18.9: - resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.18.9 - '@babel/types': 7.19.0 - esutils: 2.0.3 - dev: false - /@babel/preset-modules/0.1.5_@babel+core@7.19.0: resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} peerDependencies: @@ -3341,21 +2072,6 @@ packages: '@babel/types': 7.19.0 esutils: 2.0.3 - /@babel/preset-react/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-transform-react-display-name': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-react-jsx': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-react-pure-annotations': 7.18.6_@babel+core@7.18.9 - dev: false - /@babel/preset-react/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==} engines: {node: '>=6.9.0'} @@ -3363,7 +2079,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-validator-option': 7.18.6 '@babel/plugin-transform-react-display-name': 7.18.6_@babel+core@7.19.0 '@babel/plugin-transform-react-jsx': 7.18.6_@babel+core@7.19.0 @@ -3371,20 +2087,6 @@ packages: '@babel/plugin-transform-react-pure-annotations': 7.18.6_@babel+core@7.19.0 dev: false - /@babel/preset-typescript/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.18.6 - '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-transform-typescript': 7.18.8_@babel+core@7.18.9 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/preset-typescript/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==} engines: {node: '>=6.9.0'} @@ -3392,7 +2094,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.19.0 - '@babel/helper-plugin-utils': 7.18.6 + '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-validator-option': 7.18.6 '@babel/plugin-transform-typescript': 7.18.8_@babel+core@7.19.0 transitivePeerDependencies: @@ -3439,44 +2141,8 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/parser': 7.18.9 - '@babel/types': 7.18.9 - - /@babel/traverse/7.18.11: - resolution: {integrity: sha512-TG9PiM2R/cWCAy6BPJKeHzNbu4lPzOSZpeMfeNErskGpTJx6trEvFaVCbDvpcxwy49BKWmEPwiW8mrysNiDvIQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.18.12 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.18.9 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.18.11 - '@babel/types': 7.18.10 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/traverse/7.18.13: - resolution: {integrity: sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.19.0 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.18.9 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.19.0 - '@babel/types': 7.19.0 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: false + '@babel/types': 7.18.9 /@babel/traverse/7.18.8_supports-color@5.5.0: resolution: {integrity: sha512-UNg/AcSySJYR/+mIcJQDCv00T+AqRO7j/ZEJLzpaYtgM48rMg5MnkJgyNqkzo88+p4tfRvZJCEiwwfG6h4jkRg==} @@ -3501,13 +2167,13 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/generator': 7.18.9 + '@babel/generator': 7.19.0 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-function-name': 7.18.9 '@babel/helper-hoist-variables': 7.18.6 '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.18.9 - '@babel/types': 7.18.9 + '@babel/parser': 7.19.0 + '@babel/types': 7.19.0 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: @@ -4550,8 +3216,27 @@ packages: react: 18.2.0 dev: false - /@codemirror/autocomplete/6.1.0: + /@codemirror/autocomplete/6.1.0_cb7ocycrcgpxsqrosocw3o7ksu: resolution: {integrity: sha512-wtO4O5WDyXhhCd4q4utDIDZxnQfmJ++3dGBCG9LMtI79+92OcA1DVk/n7BEupKmjIr8AzvptDz7YQ9ud6OkU+A==} + peerDependencies: + '@codemirror/language': ^6.0.0 + '@codemirror/state': ^6.0.0 + '@codemirror/view': ^6.0.0 + '@lezer/common': ^1.0.0 + dependencies: + '@codemirror/language': 6.2.0 + '@codemirror/state': 6.1.1 + '@codemirror/view': 6.1.0 + '@lezer/common': 1.0.0 + dev: false + + /@codemirror/autocomplete/6.1.0_pzmb3em2q4wphwjkkiip7qfhga: + resolution: {integrity: sha512-wtO4O5WDyXhhCd4q4utDIDZxnQfmJ++3dGBCG9LMtI79+92OcA1DVk/n7BEupKmjIr8AzvptDz7YQ9ud6OkU+A==} + peerDependencies: + '@codemirror/language': ^6.0.0 + '@codemirror/state': ^6.0.0 + '@codemirror/view': ^6.0.0 + '@lezer/common': ^1.0.0 dependencies: '@codemirror/language': 6.2.0 '@codemirror/state': 6.1.1 @@ -4568,20 +3253,23 @@ packages: '@lezer/common': 1.0.0 dev: false - /@codemirror/lang-css/6.0.0: + /@codemirror/lang-css/6.0.0_2js663f52tgwrrbokpneg22gyy: resolution: {integrity: sha512-jBqc+BTuwhNOTlrimFghLlSrN6iFuE44HULKWoR4qKYObhOIl9Lci1iYj6zMIte1XTQmZguNvjXMyr43LUKwSw==} dependencies: - '@codemirror/autocomplete': 6.1.0 + '@codemirror/autocomplete': 6.1.0_pzmb3em2q4wphwjkkiip7qfhga '@codemirror/language': 6.2.0 '@codemirror/state': 6.1.1 '@lezer/css': 1.0.0 + transitivePeerDependencies: + - '@codemirror/view' + - '@lezer/common' dev: false /@codemirror/lang-html/6.1.1: resolution: {integrity: sha512-+hV1kVZySmr7GxCgSVM+BodaVlsgD98laEJbj/GALhgIrfnHTSiRuTz2EPTjNCKeq5uEQXeOKFY711/CxJbYrg==} dependencies: - '@codemirror/autocomplete': 6.1.0 - '@codemirror/lang-css': 6.0.0 + '@codemirror/autocomplete': 6.1.0_pzmb3em2q4wphwjkkiip7qfhga + '@codemirror/lang-css': 6.0.0_2js663f52tgwrrbokpneg22gyy '@codemirror/lang-javascript': 6.0.2 '@codemirror/language': 6.2.0 '@codemirror/state': 6.1.1 @@ -4593,7 +3281,7 @@ packages: /@codemirror/lang-javascript/6.0.2: resolution: {integrity: sha512-BZRJ9u/zl16hLkSpDAWm73mrfIR7HJrr0lvnhoSOCQVea5BglguWI/slxexhvUb0CB5cXgKWuo2bM+N9EhIaZw==} dependencies: - '@codemirror/autocomplete': 6.1.0 + '@codemirror/autocomplete': 6.1.0_cb7ocycrcgpxsqrosocw3o7ksu '@codemirror/language': 6.2.0 '@codemirror/lint': 6.0.0 '@codemirror/state': 6.1.1 @@ -4740,7 +3428,7 @@ packages: - '@algolia/client-search' dev: false - /@docusaurus/core/2.1.0_o6kpfqikfouunwlj6hykpi2c7m: + /@docusaurus/core/2.1.0_mjb3abnop6izgvkouxh4aqdnvm: resolution: {integrity: sha512-/ZJ6xmm+VB9Izbn0/s6h6289cbPy2k4iYFwWDhjiLsVqwa/Y0YBBcXvStfaHccudUC3OfP+26hMk7UCjc50J6Q==} engines: {node: '>=16.14'} hasBin: true @@ -4749,22 +3437,22 @@ packages: react-dom: ^16.8.4 || ^17.0.0 dependencies: '@babel/core': 7.19.0 - '@babel/generator': 7.18.13 + '@babel/generator': 7.19.0 '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.19.0 - '@babel/plugin-transform-runtime': 7.18.6_@babel+core@7.19.0 - '@babel/preset-env': 7.18.10_@babel+core@7.19.0 + '@babel/plugin-transform-runtime': 7.19.1_@babel+core@7.19.0 + '@babel/preset-env': 7.19.0_@babel+core@7.19.0 '@babel/preset-react': 7.18.6_@babel+core@7.19.0 '@babel/preset-typescript': 7.18.6_@babel+core@7.19.0 '@babel/runtime': 7.18.6 '@babel/runtime-corejs3': 7.18.6 - '@babel/traverse': 7.18.13 + '@babel/traverse': 7.19.0 '@docusaurus/cssnano-preset': 2.1.0 '@docusaurus/logger': 2.1.0 - '@docusaurus/mdx-loader': 2.1.0_ny44vnc5t4rlukh2kzmv2f2kze + '@docusaurus/mdx-loader': 2.1.0_sfoxds7t5ydpegc3knd667wn6m '@docusaurus/react-loadable': 5.5.2_react@17.0.2 - '@docusaurus/utils': 2.1.0_@docusaurus+types@2.1.0 - '@docusaurus/utils-common': 2.1.0_@docusaurus+types@2.1.0 - '@docusaurus/utils-validation': 2.1.0_@docusaurus+types@2.1.0 + '@docusaurus/utils': 2.1.0 + '@docusaurus/utils-common': 2.1.0 + '@docusaurus/utils-validation': 2.1.0 '@slorber/static-site-generator-webpack-plugin': 4.0.7 '@svgr/webpack': 6.3.1 autoprefixer: 10.4.8_postcss@8.4.16 @@ -4774,16 +3462,16 @@ packages: chalk: 4.1.2 chokidar: 3.5.3 clean-css: 5.3.1 - cli-table3: 0.6.2 + cli-table3: 0.6.3 combine-promises: 1.1.0 commander: 5.1.0 copy-webpack-plugin: 11.0.0_webpack@5.74.0 - core-js: 3.23.4 + core-js: 3.25.2 css-loader: 6.7.1_webpack@5.74.0 - css-minimizer-webpack-plugin: 4.0.0_kwz7aenajwsweas6icw5ncsgdy + css-minimizer-webpack-plugin: 4.1.0_kwz7aenajwsweas6icw5ncsgdy cssnano: 5.1.12_postcss@8.4.16 del: 6.1.1 - detect-port: 1.3.0 + detect-port: 1.5.1 escape-html: 1.0.3 eta: 1.12.3 file-loader: 6.2.0_webpack@5.74.0 @@ -4817,8 +3505,8 @@ packages: url-loader: 4.1.1_u4acmn7fe6yqgbrqzialkgh5lu wait-on: 6.0.1 webpack: 5.74.0 - webpack-bundle-analyzer: 4.5.0 - webpack-dev-server: 4.9.3_webpack@5.74.0 + webpack-bundle-analyzer: 4.6.1 + webpack-dev-server: 4.11.1_webpack@5.74.0 webpack-merge: 5.8.0 webpackbar: 5.0.2_webpack@5.74.0 transitivePeerDependencies: @@ -4830,6 +3518,7 @@ packages: - debug - esbuild - eslint + - lightningcss - supports-color - typescript - uglify-js @@ -4844,7 +3533,7 @@ packages: dependencies: cssnano-preset-advanced: 5.3.8_postcss@8.4.16 postcss: 8.4.16 - postcss-sort-media-queries: 4.2.1_postcss@8.4.16 + postcss-sort-media-queries: 4.3.0_postcss@8.4.16 tslib: 2.4.0 dev: false @@ -4891,6 +3580,41 @@ packages: - webpack-cli dev: false + /@docusaurus/mdx-loader/2.1.0_sfoxds7t5ydpegc3knd667wn6m: + resolution: {integrity: sha512-i97hi7hbQjsD3/8OSFhLy7dbKGH8ryjEzOfyhQIn2CFBYOY3ko0vMVEf3IY9nD3Ld7amYzsZ8153RPkcnXA+Lg==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@babel/parser': 7.19.0 + '@babel/traverse': 7.19.0 + '@docusaurus/logger': 2.1.0 + '@docusaurus/utils': 2.1.0 + '@mdx-js/mdx': 1.6.22 + escape-html: 1.0.3 + file-loader: 6.2.0_webpack@5.74.0 + fs-extra: 10.1.0 + image-size: 1.0.2 + mdast-util-to-string: 2.0.0 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + remark-emoji: 2.2.0 + stringify-object: 3.3.0 + tslib: 2.4.0 + unified: 9.2.2 + unist-util-visit: 2.0.3 + url-loader: 4.1.1_u4acmn7fe6yqgbrqzialkgh5lu + webpack: 5.74.0 + transitivePeerDependencies: + - '@docusaurus/types' + - '@swc/core' + - esbuild + - supports-color + - uglify-js + - webpack-cli + dev: false + /@docusaurus/module-type-aliases/2.1.0_sfoxds7t5ydpegc3knd667wn6m: resolution: {integrity: sha512-Z8WZaK5cis3xEtyfOT817u9xgGUauT0PuuVo85ysnFRX8n7qLN1lTPCkC+aCmFm/UcV8h/W5T4NtIsst94UntQ==} peerDependencies: @@ -4914,14 +3638,13 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-blog/2.1.0_mjb3abnop6izgvkouxh4aqdnvm: + /@docusaurus/plugin-content-blog/2.1.0_sfoxds7t5ydpegc3knd667wn6m: resolution: {integrity: sha512-xEp6jlu92HMNUmyRBEeJ4mCW1s77aAEQO4Keez94cUY/Ap7G/r0Awa6xSLff7HL0Fjg8KK1bEbDy7q9voIavdg==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.1.0_o6kpfqikfouunwlj6hykpi2c7m '@docusaurus/logger': 2.1.0 '@docusaurus/mdx-loader': 2.1.0_ny44vnc5t4rlukh2kzmv2f2kze '@docusaurus/types': 2.1.0_sfoxds7t5ydpegc3knd667wn6m @@ -4940,29 +3663,20 @@ packages: utility-types: 3.10.0 webpack: 5.74.0 transitivePeerDependencies: - - '@parcel/css' - '@swc/core' - - bufferutil - - csso - - debug - esbuild - - eslint - supports-color - - typescript - uglify-js - - utf-8-validate - - vue-template-compiler - webpack-cli dev: false - /@docusaurus/plugin-content-docs/2.1.0_mjb3abnop6izgvkouxh4aqdnvm: + /@docusaurus/plugin-content-docs/2.1.0_sfoxds7t5ydpegc3knd667wn6m: resolution: {integrity: sha512-Rup5pqXrXlKGIC4VgwvioIhGWF7E/NNSlxv+JAxRYpik8VKlWsk9ysrdHIlpX+KJUCO9irnY21kQh2814mlp/Q==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.1.0_o6kpfqikfouunwlj6hykpi2c7m '@docusaurus/logger': 2.1.0 '@docusaurus/mdx-loader': 2.1.0_ny44vnc5t4rlukh2kzmv2f2kze '@docusaurus/module-type-aliases': 2.1.0_sfoxds7t5ydpegc3knd667wn6m @@ -4981,29 +3695,20 @@ packages: utility-types: 3.10.0 webpack: 5.74.0 transitivePeerDependencies: - - '@parcel/css' - '@swc/core' - - bufferutil - - csso - - debug - esbuild - - eslint - supports-color - - typescript - uglify-js - - utf-8-validate - - vue-template-compiler - webpack-cli dev: false - /@docusaurus/plugin-content-pages/2.1.0_mjb3abnop6izgvkouxh4aqdnvm: + /@docusaurus/plugin-content-pages/2.1.0_sfoxds7t5ydpegc3knd667wn6m: resolution: {integrity: sha512-SwZdDZRlObHNKXTnFo7W2aF6U5ZqNVI55Nw2GCBryL7oKQSLeI0lsrMlMXdzn+fS7OuBTd3MJBO1T4Zpz0i/+g==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.1.0_o6kpfqikfouunwlj6hykpi2c7m '@docusaurus/mdx-loader': 2.1.0_ny44vnc5t4rlukh2kzmv2f2kze '@docusaurus/types': 2.1.0_sfoxds7t5ydpegc3knd667wn6m '@docusaurus/utils': 2.1.0_@docusaurus+types@2.1.0 @@ -5014,29 +3719,20 @@ packages: tslib: 2.4.0 webpack: 5.74.0 transitivePeerDependencies: - - '@parcel/css' - '@swc/core' - - bufferutil - - csso - - debug - esbuild - - eslint - supports-color - - typescript - uglify-js - - utf-8-validate - - vue-template-compiler - webpack-cli dev: false - /@docusaurus/plugin-debug/2.1.0_ur7ikrzxoibe66cwks7sngbf6y: + /@docusaurus/plugin-debug/2.1.0_xr54tcmld2z2uxcxwin3peds4e: resolution: {integrity: sha512-8wsDq3OIfiy6440KLlp/qT5uk+WRHQXIXklNHEeZcar+Of0TZxCNe2FBpv+bzb/0qcdP45ia5i5WmR5OjN6DPw==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.1.0_o6kpfqikfouunwlj6hykpi2c7m '@docusaurus/types': 2.1.0_sfoxds7t5ydpegc3knd667wn6m '@docusaurus/utils': 2.1.0_@docusaurus+types@2.1.0 fs-extra: 10.1.0 @@ -5045,89 +3741,62 @@ packages: react-json-view: 1.21.3_xr54tcmld2z2uxcxwin3peds4e tslib: 2.4.0 transitivePeerDependencies: - - '@parcel/css' - '@swc/core' - '@types/react' - - bufferutil - - csso - - debug - encoding - esbuild - - eslint - supports-color - - typescript - uglify-js - - utf-8-validate - - vue-template-compiler - webpack-cli dev: false - /@docusaurus/plugin-google-analytics/2.1.0_mjb3abnop6izgvkouxh4aqdnvm: + /@docusaurus/plugin-google-analytics/2.1.0_sfoxds7t5ydpegc3knd667wn6m: resolution: {integrity: sha512-4cgeqIly/wcFVbbWP03y1QJJBgH8W+Bv6AVbWnsXNOZa1yB3AO6hf3ZdeQH9x20v9T2pREogVgAH0rSoVnNsgg==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.1.0_o6kpfqikfouunwlj6hykpi2c7m '@docusaurus/types': 2.1.0_sfoxds7t5ydpegc3knd667wn6m '@docusaurus/utils-validation': 2.1.0_@docusaurus+types@2.1.0 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 tslib: 2.4.0 transitivePeerDependencies: - - '@parcel/css' - '@swc/core' - - bufferutil - - csso - - debug - esbuild - - eslint - supports-color - - typescript - uglify-js - - utf-8-validate - - vue-template-compiler - webpack-cli dev: false - /@docusaurus/plugin-google-gtag/2.1.0_mjb3abnop6izgvkouxh4aqdnvm: + /@docusaurus/plugin-google-gtag/2.1.0_sfoxds7t5ydpegc3knd667wn6m: resolution: {integrity: sha512-/3aDlv2dMoCeiX2e+DTGvvrdTA+v3cKQV3DbmfsF4ENhvc5nKV23nth04Z3Vq0Ci1ui6Sn80TkhGk/tiCMW2AA==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.1.0_o6kpfqikfouunwlj6hykpi2c7m '@docusaurus/types': 2.1.0_sfoxds7t5ydpegc3knd667wn6m '@docusaurus/utils-validation': 2.1.0_@docusaurus+types@2.1.0 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 tslib: 2.4.0 transitivePeerDependencies: - - '@parcel/css' - '@swc/core' - - bufferutil - - csso - - debug - esbuild - - eslint - supports-color - - typescript - uglify-js - - utf-8-validate - - vue-template-compiler - webpack-cli dev: false - /@docusaurus/plugin-sitemap/2.1.0_mjb3abnop6izgvkouxh4aqdnvm: + /@docusaurus/plugin-sitemap/2.1.0_sfoxds7t5ydpegc3knd667wn6m: resolution: {integrity: sha512-2Y6Br8drlrZ/jN9MwMBl0aoi9GAjpfyfMBYpaQZXimbK+e9VjYnujXlvQ4SxtM60ASDgtHIAzfVFBkSR/MwRUw==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.1.0_o6kpfqikfouunwlj6hykpi2c7m '@docusaurus/logger': 2.1.0 '@docusaurus/types': 2.1.0_sfoxds7t5ydpegc3knd667wn6m '@docusaurus/utils': 2.1.0_@docusaurus+types@2.1.0 @@ -5139,58 +3808,40 @@ packages: sitemap: 7.1.1 tslib: 2.4.0 transitivePeerDependencies: - - '@parcel/css' - '@swc/core' - - bufferutil - - csso - - debug - esbuild - - eslint - supports-color - - typescript - uglify-js - - utf-8-validate - - vue-template-compiler - webpack-cli dev: false - /@docusaurus/preset-classic/2.1.0_f7voygygfrlthmprdkattq7cqq: + /@docusaurus/preset-classic/2.1.0_zelwb7ht3lcpqjnqhj2oyn24te: resolution: {integrity: sha512-NQMnaq974K4BcSMXFSJBQ5itniw6RSyW+VT+6i90kGZzTwiuKZmsp0r9lC6BYAvvVMQUNJQwrETmlu7y2XKW7w==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.1.0_o6kpfqikfouunwlj6hykpi2c7m - '@docusaurus/plugin-content-blog': 2.1.0_mjb3abnop6izgvkouxh4aqdnvm - '@docusaurus/plugin-content-docs': 2.1.0_mjb3abnop6izgvkouxh4aqdnvm - '@docusaurus/plugin-content-pages': 2.1.0_mjb3abnop6izgvkouxh4aqdnvm - '@docusaurus/plugin-debug': 2.1.0_ur7ikrzxoibe66cwks7sngbf6y - '@docusaurus/plugin-google-analytics': 2.1.0_mjb3abnop6izgvkouxh4aqdnvm - '@docusaurus/plugin-google-gtag': 2.1.0_mjb3abnop6izgvkouxh4aqdnvm - '@docusaurus/plugin-sitemap': 2.1.0_mjb3abnop6izgvkouxh4aqdnvm - '@docusaurus/theme-classic': 2.1.0_mjb3abnop6izgvkouxh4aqdnvm - '@docusaurus/theme-common': 2.1.0_o6kpfqikfouunwlj6hykpi2c7m - '@docusaurus/theme-search-algolia': 2.1.0_b4fwet5r5zamzwgxne7ermgcdu + '@docusaurus/plugin-content-blog': 2.1.0_sfoxds7t5ydpegc3knd667wn6m + '@docusaurus/plugin-content-docs': 2.1.0_sfoxds7t5ydpegc3knd667wn6m + '@docusaurus/plugin-content-pages': 2.1.0_sfoxds7t5ydpegc3knd667wn6m + '@docusaurus/plugin-debug': 2.1.0_xr54tcmld2z2uxcxwin3peds4e + '@docusaurus/plugin-google-analytics': 2.1.0_sfoxds7t5ydpegc3knd667wn6m + '@docusaurus/plugin-google-gtag': 2.1.0_sfoxds7t5ydpegc3knd667wn6m + '@docusaurus/plugin-sitemap': 2.1.0_sfoxds7t5ydpegc3knd667wn6m + '@docusaurus/theme-classic': 2.1.0_sfoxds7t5ydpegc3knd667wn6m + '@docusaurus/theme-search-algolia': 2.1.0_yknu33fh4475pqgmpvv6x75eri '@docusaurus/types': 2.1.0_sfoxds7t5ydpegc3knd667wn6m react: 17.0.2 react-dom: 17.0.2_react@17.0.2 transitivePeerDependencies: - '@algolia/client-search' - - '@parcel/css' - '@swc/core' - '@types/react' - - bufferutil - - csso - - debug - encoding - esbuild - - eslint - supports-color - - typescript - uglify-js - - utf-8-validate - - vue-template-compiler - webpack-cli dev: false @@ -5204,20 +3855,18 @@ packages: react: 17.0.2 dev: false - /@docusaurus/theme-classic/2.1.0_mjb3abnop6izgvkouxh4aqdnvm: + /@docusaurus/theme-classic/2.1.0_sfoxds7t5ydpegc3knd667wn6m: resolution: {integrity: sha512-xn8ZfNMsf7gaSy9+ClFnUu71o7oKgMo5noYSS1hy3svNifRTkrBp6+MReLDsmIaj3mLf2e7+JCBYKBFbaGzQng==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.1.0_o6kpfqikfouunwlj6hykpi2c7m '@docusaurus/mdx-loader': 2.1.0_ny44vnc5t4rlukh2kzmv2f2kze '@docusaurus/module-type-aliases': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/plugin-content-blog': 2.1.0_mjb3abnop6izgvkouxh4aqdnvm - '@docusaurus/plugin-content-docs': 2.1.0_mjb3abnop6izgvkouxh4aqdnvm - '@docusaurus/plugin-content-pages': 2.1.0_mjb3abnop6izgvkouxh4aqdnvm - '@docusaurus/theme-common': 2.1.0_o6kpfqikfouunwlj6hykpi2c7m + '@docusaurus/plugin-content-blog': 2.1.0_sfoxds7t5ydpegc3knd667wn6m + '@docusaurus/plugin-content-docs': 2.1.0_sfoxds7t5ydpegc3knd667wn6m + '@docusaurus/plugin-content-pages': 2.1.0_sfoxds7t5ydpegc3knd667wn6m '@docusaurus/theme-translations': 2.1.0 '@docusaurus/types': 2.1.0_sfoxds7t5ydpegc3knd667wn6m '@docusaurus/utils': 2.1.0_@docusaurus+types@2.1.0 @@ -5231,7 +3880,7 @@ packages: nprogress: 0.2.0 postcss: 8.4.16 prism-react-renderer: 1.3.5_react@17.0.2 - prismjs: 1.28.0 + prismjs: 1.29.0 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 react-router-dom: 5.3.3_react@17.0.2 @@ -5239,34 +3888,26 @@ packages: tslib: 2.4.0 utility-types: 3.10.0 transitivePeerDependencies: - - '@parcel/css' - '@swc/core' - - bufferutil - - csso - - debug - esbuild - - eslint - supports-color - - typescript - uglify-js - - utf-8-validate - - vue-template-compiler - webpack-cli dev: false - /@docusaurus/theme-common/2.1.0_o6kpfqikfouunwlj6hykpi2c7m: + /@docusaurus/theme-common/2.1.0_sfoxds7t5ydpegc3knd667wn6m: resolution: {integrity: sha512-vT1otpVPbKux90YpZUnvknsn5zvpLf+AW1W0EDcpE9up4cDrPqfsh0QoxGHFJnobE2/qftsBFC19BneN4BH8Ag==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/mdx-loader': 2.1.0_ny44vnc5t4rlukh2kzmv2f2kze + '@docusaurus/mdx-loader': 2.1.0_sfoxds7t5ydpegc3knd667wn6m '@docusaurus/module-type-aliases': 2.1.0_sfoxds7t5ydpegc3knd667wn6m - '@docusaurus/plugin-content-blog': 2.1.0_mjb3abnop6izgvkouxh4aqdnvm - '@docusaurus/plugin-content-docs': 2.1.0_mjb3abnop6izgvkouxh4aqdnvm - '@docusaurus/plugin-content-pages': 2.1.0_mjb3abnop6izgvkouxh4aqdnvm - '@docusaurus/utils': 2.1.0_@docusaurus+types@2.1.0 + '@docusaurus/plugin-content-blog': 2.1.0_sfoxds7t5ydpegc3knd667wn6m + '@docusaurus/plugin-content-docs': 2.1.0_sfoxds7t5ydpegc3knd667wn6m + '@docusaurus/plugin-content-pages': 2.1.0_sfoxds7t5ydpegc3knd667wn6m + '@docusaurus/utils': 2.1.0 '@types/history': 4.7.11 '@types/react': 18.0.19 '@types/react-router-config': 5.0.6 @@ -5279,22 +3920,14 @@ packages: utility-types: 3.10.0 transitivePeerDependencies: - '@docusaurus/types' - - '@parcel/css' - '@swc/core' - - bufferutil - - csso - - debug - esbuild - - eslint - supports-color - - typescript - uglify-js - - utf-8-validate - - vue-template-compiler - webpack-cli dev: false - /@docusaurus/theme-search-algolia/2.1.0_b4fwet5r5zamzwgxne7ermgcdu: + /@docusaurus/theme-search-algolia/2.1.0_yknu33fh4475pqgmpvv6x75eri: resolution: {integrity: sha512-rNBvi35VvENhucslEeVPOtbAzBdZY/9j55gdsweGV5bYoAXy4mHB6zTGjealcB4pJ6lJY4a5g75fXXMOlUqPfg==} engines: {node: '>=16.14'} peerDependencies: @@ -5302,10 +3935,8 @@ packages: react-dom: ^16.8.4 || ^17.0.0 dependencies: '@docsearch/react': 3.1.1_zelwb7ht3lcpqjnqhj2oyn24te - '@docusaurus/core': 2.1.0_o6kpfqikfouunwlj6hykpi2c7m '@docusaurus/logger': 2.1.0 - '@docusaurus/plugin-content-docs': 2.1.0_mjb3abnop6izgvkouxh4aqdnvm - '@docusaurus/theme-common': 2.1.0_o6kpfqikfouunwlj6hykpi2c7m + '@docusaurus/plugin-content-docs': 2.1.0_sfoxds7t5ydpegc3knd667wn6m '@docusaurus/theme-translations': 2.1.0 '@docusaurus/utils': 2.1.0_@docusaurus+types@2.1.0 '@docusaurus/utils-validation': 2.1.0_@docusaurus+types@2.1.0 @@ -5322,19 +3953,45 @@ packages: transitivePeerDependencies: - '@algolia/client-search' - '@docusaurus/types' - - '@parcel/css' - '@swc/core' - '@types/react' - - bufferutil - - csso - - debug - esbuild - - eslint - supports-color - - typescript - uglify-js - - utf-8-validate - - vue-template-compiler + - webpack-cli + dev: false + + /@docusaurus/theme-search-algolia/2.1.0_zelwb7ht3lcpqjnqhj2oyn24te: + resolution: {integrity: sha512-rNBvi35VvENhucslEeVPOtbAzBdZY/9j55gdsweGV5bYoAXy4mHB6zTGjealcB4pJ6lJY4a5g75fXXMOlUqPfg==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docsearch/react': 3.1.1_zelwb7ht3lcpqjnqhj2oyn24te + '@docusaurus/logger': 2.1.0 + '@docusaurus/plugin-content-docs': 2.1.0_sfoxds7t5ydpegc3knd667wn6m + '@docusaurus/theme-translations': 2.1.0 + '@docusaurus/utils': 2.1.0 + '@docusaurus/utils-validation': 2.1.0 + algoliasearch: 4.13.1 + algoliasearch-helper: 3.10.0_algoliasearch@4.13.1 + clsx: 1.2.1 + eta: 1.12.3 + fs-extra: 10.1.0 + lodash: 4.17.21 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + tslib: 2.4.0 + utility-types: 3.10.0 + transitivePeerDependencies: + - '@algolia/client-search' + - '@docusaurus/types' + - '@swc/core' + - '@types/react' + - esbuild + - supports-color + - uglify-js - webpack-cli dev: false @@ -5369,6 +4026,18 @@ packages: - webpack-cli dev: false + /@docusaurus/utils-common/2.1.0: + resolution: {integrity: sha512-F2vgmt4yRFgRQR2vyEFGTWeyAdmgKbtmu3sjHObF0tjjx/pN0Iw/c6eCopaH34E6tc9nO0nvp01pwW+/86d1fg==} + engines: {node: '>=16.14'} + peerDependencies: + '@docusaurus/types': '*' + peerDependenciesMeta: + '@docusaurus/types': + optional: true + dependencies: + tslib: 2.4.0 + dev: false + /@docusaurus/utils-common/2.1.0_@docusaurus+types@2.1.0: resolution: {integrity: sha512-F2vgmt4yRFgRQR2vyEFGTWeyAdmgKbtmu3sjHObF0tjjx/pN0Iw/c6eCopaH34E6tc9nO0nvp01pwW+/86d1fg==} engines: {node: '>=16.14'} @@ -5382,6 +4051,24 @@ packages: tslib: 2.4.0 dev: false + /@docusaurus/utils-validation/2.1.0: + resolution: {integrity: sha512-AMJzWYKL3b7FLltKtDXNLO9Y649V2BXvrnRdnW2AA+PpBnYV78zKLSCz135cuWwRj1ajNtP4onbXdlnyvCijGQ==} + engines: {node: '>=16.14'} + dependencies: + '@docusaurus/logger': 2.1.0 + '@docusaurus/utils': 2.1.0 + joi: 17.6.0 + js-yaml: 4.1.0 + tslib: 2.4.0 + transitivePeerDependencies: + - '@docusaurus/types' + - '@swc/core' + - esbuild + - supports-color + - uglify-js + - webpack-cli + dev: false + /@docusaurus/utils-validation/2.1.0_@docusaurus+types@2.1.0: resolution: {integrity: sha512-AMJzWYKL3b7FLltKtDXNLO9Y649V2BXvrnRdnW2AA+PpBnYV78zKLSCz135cuWwRj1ajNtP4onbXdlnyvCijGQ==} engines: {node: '>=16.14'} @@ -5400,6 +4087,38 @@ packages: - webpack-cli dev: false + /@docusaurus/utils/2.1.0: + resolution: {integrity: sha512-fPvrfmAuC54n8MjZuG4IysaMdmvN5A/qr7iFLbSGSyDrsbP4fnui6KdZZIa/YOLIPLec8vjZ8RIITJqF18mx4A==} + engines: {node: '>=16.14'} + peerDependencies: + '@docusaurus/types': '*' + peerDependenciesMeta: + '@docusaurus/types': + optional: true + dependencies: + '@docusaurus/logger': 2.1.0 + '@svgr/webpack': 6.3.1 + file-loader: 6.2.0_webpack@5.74.0 + fs-extra: 10.1.0 + github-slugger: 1.4.0 + globby: 11.1.0 + gray-matter: 4.0.3 + js-yaml: 4.1.0 + lodash: 4.17.21 + micromatch: 4.0.5 + resolve-pathname: 3.0.0 + shelljs: 0.8.5 + tslib: 2.4.0 + url-loader: 4.1.1_u4acmn7fe6yqgbrqzialkgh5lu + webpack: 5.74.0 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - supports-color + - uglify-js + - webpack-cli + dev: false + /@docusaurus/utils/2.1.0_@docusaurus+types@2.1.0: resolution: {integrity: sha512-fPvrfmAuC54n8MjZuG4IysaMdmvN5A/qr7iFLbSGSyDrsbP4fnui6KdZZIa/YOLIPLec8vjZ8RIITJqF18mx4A==} engines: {node: '>=16.14'} @@ -6946,11 +5665,11 @@ packages: resolution: {integrity: sha512-eODxwIUShLxSMaRjzJtrj9wg89D75JLczvWg9SaB5W+OtVTkiC1vdGd8+t+pf5fTlBOy4RRXAq7x1E3DUl3D0A==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.18.9 - '@babel/plugin-transform-react-constant-elements': 7.18.6_@babel+core@7.18.9 - '@babel/preset-env': 7.18.6_@babel+core@7.18.9 - '@babel/preset-react': 7.18.6_@babel+core@7.18.9 - '@babel/preset-typescript': 7.18.6_@babel+core@7.18.9 + '@babel/core': 7.19.0 + '@babel/plugin-transform-react-constant-elements': 7.18.6_@babel+core@7.19.0 + '@babel/preset-env': 7.19.0_@babel+core@7.19.0 + '@babel/preset-react': 7.18.6_@babel+core@7.19.0 + '@babel/preset-typescript': 7.18.6_@babel+core@7.19.0 '@svgr/core': 6.3.1 '@svgr/plugin-jsx': 6.3.1_@svgr+core@6.3.1 '@svgr/plugin-svgo': 6.3.1_@svgr+core@6.3.1 @@ -7092,7 +5811,7 @@ packages: /@types/connect-history-api-fallback/1.3.5: resolution: {integrity: sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==} dependencies: - '@types/express-serve-static-core': 4.17.29 + '@types/express-serve-static-core': 4.17.31 '@types/node': 18.7.16 dev: false @@ -7137,21 +5856,21 @@ packages: /@types/estree/1.0.0: resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} - /@types/express-serve-static-core/4.17.29: - resolution: {integrity: sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==} + /@types/express-serve-static-core/4.17.31: + resolution: {integrity: sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==} dependencies: '@types/node': 18.7.16 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 dev: false - /@types/express/4.17.13: - resolution: {integrity: sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==} + /@types/express/4.17.14: + resolution: {integrity: sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==} dependencies: '@types/body-parser': 1.19.2 - '@types/express-serve-static-core': 4.17.29 + '@types/express-serve-static-core': 4.17.31 '@types/qs': 6.9.7 - '@types/serve-static': 1.13.10 + '@types/serve-static': 1.15.0 dev: false /@types/google-spreadsheet/3.3.0: @@ -7278,8 +5997,8 @@ packages: '@types/node': 18.7.16 dev: true - /@types/mime/1.3.2: - resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} + /@types/mime/3.0.1: + resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} dev: false /@types/minio/7.0.13: @@ -7418,13 +6137,13 @@ packages: /@types/serve-index/1.9.1: resolution: {integrity: sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==} dependencies: - '@types/express': 4.17.13 + '@types/express': 4.17.14 dev: false - /@types/serve-static/1.13.10: - resolution: {integrity: sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==} + /@types/serve-static/1.15.0: + resolution: {integrity: sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==} dependencies: - '@types/mime': 1.3.2 + '@types/mime': 3.0.1 '@types/node': 18.7.16 dev: false @@ -8257,8 +6976,8 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - /address/1.2.0: - resolution: {integrity: sha512-tNEZYz5G/zYunxFm7sfhAxkXEuLj3K6BKwv6ZURlsF6yiUQ65z0Q2wZW9L5cPUl9ocofGvXOdFYbFHp0+6MOig==} + /address/1.2.1: + resolution: {integrity: sha512-B+6bi5D34+fDYENiH5qOlA0cV2rAGKuWZ9LeyUUehbXy8e0VS9e498yO0Jeeh+iM+6KbfudHTFjXw2MmJD4QRA==} engines: {node: '>= 10.0.0'} dev: false @@ -8278,8 +6997,10 @@ packages: indent-string: 4.0.0 dev: false - /ajv-formats/2.1.1: + /ajv-formats/2.1.1_ajv@8.11.0: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 peerDependenciesMeta: ajv: optional: true @@ -8418,8 +7139,8 @@ packages: engines: {node: '>=10'} dev: true - /ansi-styles/6.1.0: - resolution: {integrity: sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==} + /ansi-styles/6.1.1: + resolution: {integrity: sha512-qDOv24WjnYuL+wbwHdlsYZFy+cgPtrYw0Tn7GLORicQp9BkQLzrgI3Pm4VyR9ERZ41YTn7KlMPuL1n05WdZvmg==} engines: {node: '>=12'} dev: false @@ -8784,19 +7505,6 @@ packages: resolve: 1.22.1 dev: false - /babel-plugin-polyfill-corejs2/0.3.1_@babel+core@7.18.9: - resolution: {integrity: sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.18.8 - '@babel/core': 7.18.9 - '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.18.9 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: false - /babel-plugin-polyfill-corejs2/0.3.2_@babel+core@7.19.0: resolution: {integrity: sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==} peerDependencies: @@ -8809,14 +7517,15 @@ packages: transitivePeerDependencies: - supports-color - /babel-plugin-polyfill-corejs3/0.5.2_@babel+core@7.18.9: - resolution: {integrity: sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==} + /babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.19.0: + resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.9 - '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.18.9 - core-js-compat: 3.23.4 + '@babel/compat-data': 7.19.0 + '@babel/core': 7.19.0 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.19.0 + semver: 6.3.0 transitivePeerDependencies: - supports-color dev: false @@ -8832,24 +7541,14 @@ packages: transitivePeerDependencies: - supports-color - /babel-plugin-polyfill-regenerator/0.3.1_@babel+core@7.18.9: - resolution: {integrity: sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.18.9 - transitivePeerDependencies: - - supports-color - dev: false - - /babel-plugin-polyfill-regenerator/0.3.1_@babel+core@7.19.0: - resolution: {integrity: sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==} + /babel-plugin-polyfill-corejs3/0.6.0_@babel+core@7.19.0: + resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.19.0 - '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.19.0 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.19.0 + core-js-compat: 3.25.2 transitivePeerDependencies: - supports-color dev: false @@ -8864,6 +7563,17 @@ packages: transitivePeerDependencies: - supports-color + /babel-plugin-polyfill-regenerator/0.4.1_@babel+core@7.19.0: + resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.19.0 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.19.0 + transitivePeerDependencies: + - supports-color + dev: false + /babel-plugin-styled-components/2.0.7_styled-components@5.3.5: resolution: {integrity: sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA==} peerDependencies: @@ -8988,8 +7698,8 @@ packages: - supports-color dev: false - /bonjour-service/1.0.13: - resolution: {integrity: sha512-LWKRU/7EqDUC9CTAQtuZl5HzBALoCYwtLhffW3et7vZMwv3bWLpJf8bRYlMD5OCcDpTfnPgNCV4yo9ZIaJGMiA==} + /bonjour-service/1.0.14: + resolution: {integrity: sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==} dependencies: array-flatten: 2.1.2 dns-equal: 1.0.0 @@ -9023,7 +7733,7 @@ packages: chalk: 4.1.2 cli-boxes: 3.0.0 string-width: 5.1.2 - type-fest: 2.16.0 + type-fest: 2.19.0 widest-line: 4.0.1 wrap-ansi: 8.0.1 dev: false @@ -9131,16 +7841,6 @@ packages: safe-buffer: 5.2.1 dev: false - /browserslist/4.21.2: - resolution: {integrity: sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001367 - electron-to-chromium: 1.4.196 - node-releases: 2.0.6 - update-browserslist-db: 1.0.5_browserslist@4.21.2 - /browserslist/4.21.3: resolution: {integrity: sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -9151,6 +7851,17 @@ packages: node-releases: 2.0.6 update-browserslist-db: 1.0.5_browserslist@4.21.3 + /browserslist/4.21.4: + resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001412 + electron-to-chromium: 1.4.261 + node-releases: 2.0.6 + update-browserslist-db: 1.0.9_browserslist@4.21.4 + dev: false + /bs-logger/0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} engines: {node: '>= 6'} @@ -9295,17 +8006,18 @@ packages: /caniuse-api/3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} dependencies: - browserslist: 4.21.2 - caniuse-lite: 1.0.30001367 + browserslist: 4.21.3 + caniuse-lite: 1.0.30001374 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - /caniuse-lite/1.0.30001367: - resolution: {integrity: sha512-XDgbeOHfifWV3GEES2B8rtsrADx4Jf+juKX2SICJcaUhjYBO3bR96kvEIHa15VU6ohtOhBZuPGGYGbXMRn0NCw==} - /caniuse-lite/1.0.30001374: resolution: {integrity: sha512-mWvzatRx3w+j5wx/mpFN5v5twlPrabG8NqX2c6e45LCpymdoGqNvRkRutFUqpRTXKFQFNQJasvK0YT7suW6/Hw==} + /caniuse-lite/1.0.30001412: + resolution: {integrity: sha512-+TeEIee1gS5bYOiuf+PS/kp2mrXic37Hl66VY6EAfxasIk5fELTktK2oOezYed12H8w7jt3s512PpulQidPjwA==} + dev: false + /canvas-confetti/1.5.1: resolution: {integrity: sha512-Ncz+oZJP6OvY7ti4E1slxVlyAV/3g7H7oQtcCDXgwGgARxPnwYY9PW5Oe+I8uvspYNtuHviAdgA0LfcKFWJfpg==} dev: false @@ -9494,8 +8206,8 @@ packages: restore-cursor: 2.0.0 dev: true - /cli-table3/0.6.2: - resolution: {integrity: sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==} + /cli-table3/0.6.3: + resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} engines: {node: 10.* || >= 12.*} dependencies: string-width: 4.2.3 @@ -9558,16 +8270,18 @@ packages: engines: {node: '>=0.10.0'} dev: false - /codemirror/6.0.1: + /codemirror/6.0.1_@lezer+common@1.0.0: resolution: {integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==} dependencies: - '@codemirror/autocomplete': 6.1.0 + '@codemirror/autocomplete': 6.1.0_cb7ocycrcgpxsqrosocw3o7ksu '@codemirror/commands': 6.0.1 '@codemirror/language': 6.2.0 '@codemirror/lint': 6.0.0 '@codemirror/search': 6.0.0 '@codemirror/state': 6.1.1 '@codemirror/view': 6.1.0 + transitivePeerDependencies: + - '@lezer/common' dev: false /collapse-white-space/1.0.6: @@ -9815,12 +8529,18 @@ packages: browserslist: 4.21.3 semver: 7.0.0 + /core-js-compat/3.25.2: + resolution: {integrity: sha512-TxfyECD4smdn3/CjWxczVtJqVLEEC2up7/82t7vC0AzNogr+4nQ8vyF7abxAuTXWvjTClSbvGhU0RgqA4ToQaQ==} + dependencies: + browserslist: 4.21.4 + dev: false + /core-js-pure/3.23.4: resolution: {integrity: sha512-lizxkcgj3XDmi7TUBFe+bQ1vNpD5E4t76BrBWI3HdUxdw/Mq1VF4CkiHzIKyieECKtcODK2asJttoofEeUKICQ==} requiresBuild: true - /core-js/3.23.4: - resolution: {integrity: sha512-vjsKqRc1RyAJC3Ye2kYqgfdThb3zYnx9CrqoCcjMOENMtQPC7ZViBvlDxwYU/2z2NI/IPuiXw5mT4hWhddqjzQ==} + /core-js/3.25.2: + resolution: {integrity: sha512-YB4IAT1bjEfxTJ1XYy11hJAKskO+qmhuDBM8/guIfMz4JvdsAQAqvyb97zXX7JgSrfPLG5mRGFWJwJD39ruq2A==} requiresBuild: true dev: false @@ -10003,14 +8723,15 @@ packages: webpack: 5.74.0 dev: false - /css-minimizer-webpack-plugin/4.0.0_kwz7aenajwsweas6icw5ncsgdy: - resolution: {integrity: sha512-7ZXXRzRHvofv3Uac5Y+RkWRNo0ZMlcg8e9/OtrqUYmwDWJo+qs67GvdeFrXLsFb7czKNwjQhPkM0avlIYl+1nA==} + /css-minimizer-webpack-plugin/4.1.0_kwz7aenajwsweas6icw5ncsgdy: + resolution: {integrity: sha512-Zd+yz4nta4GXi3pMqF6skO8kjzuCUbr62z8SLMGZZtxWxTGTLopOiabPGNDEyjHCRhnhdA1EfHmqLa2Oekjtng==} engines: {node: '>= 14.15.0'} peerDependencies: '@parcel/css': '*' clean-css: '*' csso: '*' esbuild: '*' + lightningcss: '*' webpack: ^5.0.0 peerDependenciesMeta: '@parcel/css': @@ -10021,6 +8742,8 @@ packages: optional: true esbuild: optional: true + lightningcss: + optional: true dependencies: clean-css: 5.3.1 cssnano: 5.1.12_postcss@8.4.16 @@ -10234,7 +8957,6 @@ packages: /cuid/2.1.8: resolution: {integrity: sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg==} - dev: false /cz-emoji/1.3.2-canary.2: resolution: {integrity: sha512-XVH9N3P5sepyCRZGVqXJcEkVHT9dPcgBipTmZgkeQUhOJEtaGy0hakMcNdaq1d7N0ZwWVEnsCIs2m/NgLT+SaA==} @@ -10490,30 +9212,24 @@ packages: /detect-node/2.0.4: resolution: {integrity: sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==} - dev: true - - /detect-node/2.1.0: - resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} - dev: false /detect-port-alt/1.1.6: resolution: {integrity: sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==} engines: {node: '>= 4.2.1'} hasBin: true dependencies: - address: 1.2.0 + address: 1.2.1 debug: 2.6.9 transitivePeerDependencies: - supports-color dev: false - /detect-port/1.3.0: - resolution: {integrity: sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ==} - engines: {node: '>= 4.2.1'} + /detect-port/1.5.1: + resolution: {integrity: sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==} hasBin: true dependencies: - address: 1.2.0 - debug: 2.6.9 + address: 1.2.1 + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: false @@ -10733,12 +9449,13 @@ packages: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: false - /electron-to-chromium/1.4.196: - resolution: {integrity: sha512-uxMa/Dt7PQsLBVXwH+t6JvpHJnrsYBaxWKi/J6HE+/nBtoHENhwBoNkgkm226/Kfxeg0z1eMQLBRPPKcDH8xWA==} - /electron-to-chromium/1.4.211: resolution: {integrity: sha512-BZSbMpyFQU0KBJ1JG26XGeFI3i4op+qOYGxftmZXFZoHkhLgsSv4DHDJfl8ogII3hIuzGt51PaZ195OVu0yJ9A==} + /electron-to-chromium/1.4.261: + resolution: {integrity: sha512-fVXliNUGJ7XUVJSAasPseBbVgJIeyw5M1xIkgXdTSRjlmCqBbiSTsEdLOCJS31Fc8B7CaloQ/BFAg8By3ODLdg==} + dev: false + /elliptic/6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} dependencies: @@ -10926,7 +9643,7 @@ packages: eslint: 8.23.0 eslint-import-resolver-node: 0.3.6 eslint-import-resolver-typescript: 2.7.1_faomjyrlgqmwswvqymymzkxcqi - eslint-plugin-import: 2.26.0_ijmu6epd3rsbb7y7umh7oqxvja + eslint-plugin-import: 2.26.0_iepzrjnvahcxaf6zc7cutko6om eslint-plugin-jsx-a11y: 6.6.0_eslint@8.23.0 eslint-plugin-react: 7.31.8_eslint@8.23.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.23.0 @@ -10963,7 +9680,7 @@ packages: dependencies: debug: 4.3.4 eslint: 8.23.0 - eslint-plugin-import: 2.26.0_ijmu6epd3rsbb7y7umh7oqxvja + eslint-plugin-import: 2.26.0_iepzrjnvahcxaf6zc7cutko6om glob: 7.2.3 is-glob: 4.0.3 resolve: 1.22.1 @@ -10972,7 +9689,7 @@ packages: - supports-color dev: true - /eslint-module-utils/2.7.3_2zrz7rhjbmz575pf362efqksom: + /eslint-module-utils/2.7.3_vcyzkqbdgh7pbhuc7ez2cv5xqa: resolution: {integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==} engines: {node: '>=4'} peerDependencies: @@ -10993,7 +9710,6 @@ packages: '@typescript-eslint/parser': 5.36.2_itqs5654cmlnjraw6gjzqacppi debug: 3.2.7 eslint-import-resolver-node: 0.3.6 - eslint-import-resolver-typescript: 2.7.1_faomjyrlgqmwswvqymymzkxcqi find-up: 2.1.0 transitivePeerDependencies: - supports-color @@ -11022,7 +9738,7 @@ packages: - supports-color dev: true - /eslint-plugin-import/2.26.0_ijmu6epd3rsbb7y7umh7oqxvja: + /eslint-plugin-import/2.26.0_iepzrjnvahcxaf6zc7cutko6om: resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} engines: {node: '>=4'} peerDependencies: @@ -11039,7 +9755,7 @@ packages: doctrine: 2.1.0 eslint: 8.23.0 eslint-import-resolver-node: 0.3.6 - eslint-module-utils: 2.7.3_2zrz7rhjbmz575pf362efqksom + eslint-module-utils: 2.7.3_vcyzkqbdgh7pbhuc7ez2cv5xqa has: 1.0.3 is-core-module: 2.9.0 is-glob: 4.0.3 @@ -11511,7 +10227,7 @@ packages: /fast-url-parser/1.1.3: resolution: {integrity: sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==} dependencies: - punycode: 1.4.1 + punycode: 1.3.2 dev: false /fast-xml-parser/3.21.1: @@ -12691,7 +11407,7 @@ packages: - supports-color dev: true - /http-proxy-middleware/2.0.6_@types+express@4.17.13: + /http-proxy-middleware/2.0.6_@types+express@4.17.14: resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -12700,7 +11416,7 @@ packages: '@types/express': optional: true dependencies: - '@types/express': 4.17.13 + '@types/express': 4.17.14 '@types/http-proxy': 1.17.9 http-proxy: 1.18.1 is-glob: 4.0.3 @@ -16095,7 +14811,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.2 + browserslist: 4.21.3 caniuse-api: 3.0.0 colord: 2.9.2 postcss: 8.4.14 @@ -16108,7 +14824,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.2 + browserslist: 4.21.3 caniuse-api: 3.0.0 colord: 2.9.2 postcss: 8.4.16 @@ -16120,7 +14836,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.2 + browserslist: 4.21.3 postcss: 8.4.14 postcss-value-parser: 4.2.0 dev: true @@ -16131,7 +14847,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.2 + browserslist: 4.21.3 postcss: 8.4.16 postcss-value-parser: 4.2.0 @@ -16304,7 +15020,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.2 + browserslist: 4.21.3 caniuse-api: 3.0.0 cssnano-utils: 3.1.0_postcss@8.4.14 postcss: 8.4.14 @@ -16317,7 +15033,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.2 + browserslist: 4.21.3 caniuse-api: 3.0.0 cssnano-utils: 3.1.0_postcss@8.4.16 postcss: 8.4.16 @@ -16371,7 +15087,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.2 + browserslist: 4.21.3 cssnano-utils: 3.1.0_postcss@8.4.14 postcss: 8.4.14 postcss-value-parser: 4.2.0 @@ -16383,7 +15099,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.2 + browserslist: 4.21.3 cssnano-utils: 3.1.0_postcss@8.4.16 postcss: 8.4.16 postcss-value-parser: 4.2.0 @@ -16629,7 +15345,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.2 + browserslist: 4.21.3 postcss: 8.4.14 postcss-value-parser: 4.2.0 dev: true @@ -16640,7 +15356,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.2 + browserslist: 4.21.3 postcss: 8.4.16 postcss-value-parser: 4.2.0 @@ -16721,7 +15437,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.2 + browserslist: 4.21.3 caniuse-api: 3.0.0 postcss: 8.4.14 dev: true @@ -16732,7 +15448,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.2 + browserslist: 4.21.3 caniuse-api: 3.0.0 postcss: 8.4.16 @@ -16762,14 +15478,14 @@ packages: cssesc: 3.0.0 util-deprecate: 1.0.2 - /postcss-sort-media-queries/4.2.1_postcss@8.4.16: - resolution: {integrity: sha512-9VYekQalFZ3sdgcTjXMa0dDjsfBVHXlraYJEMiOJ/2iMmI2JGCMavP16z3kWOaRu8NSaJCTgVpB/IVpH5yT9YQ==} + /postcss-sort-media-queries/4.3.0_postcss@8.4.16: + resolution: {integrity: sha512-jAl8gJM2DvuIJiI9sL1CuiHtKM4s5aEIomkU8G3LFvbP+p8i7Sz8VV63uieTgoewGqKbi+hxBTiOKJlB35upCg==} engines: {node: '>=10.0.0'} peerDependencies: - postcss: ^8.4.4 + postcss: ^8.4.16 dependencies: postcss: 8.4.16 - sort-css-media-queries: 2.0.4 + sort-css-media-queries: 2.1.0 dev: false /postcss-svgo/5.1.0_postcss@8.4.14: @@ -16936,8 +15652,8 @@ packages: dependencies: '@prisma/engines': 4.3.1 - /prismjs/1.28.0: - resolution: {integrity: sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw==} + /prismjs/1.29.0: + resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} engines: {node: '>=6'} dev: false @@ -17030,10 +15746,6 @@ packages: /punycode/1.3.2: resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==} - /punycode/1.4.1: - resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} - dev: false - /punycode/2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} @@ -17163,9 +15875,15 @@ packages: /react-dev-utils/12.0.1_kb3egcnme7w23lfa5xodfjfhge: resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} engines: {node: '>=14'} + peerDependencies: + typescript: '>=2.7' + webpack: '>=4' + peerDependenciesMeta: + typescript: + optional: true dependencies: '@babel/code-frame': 7.18.6 - address: 1.2.0 + address: 1.2.1 browserslist: 4.21.3 chalk: 4.1.2 cross-spawn: 7.0.3 @@ -17193,9 +15911,7 @@ packages: transitivePeerDependencies: - eslint - supports-color - - typescript - vue-template-compiler - - webpack dev: false /react-dom/17.0.2_react@17.0.2: @@ -18177,7 +16893,7 @@ packages: dependencies: '@types/json-schema': 7.0.11 ajv: 8.11.0 - ajv-formats: 2.1.1 + ajv-formats: 2.1.1_ajv@8.11.0 ajv-keywords: 5.1.0_ajv@8.11.0 dev: false @@ -18204,8 +16920,8 @@ packages: resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} dev: false - /selfsigned/2.0.1: - resolution: {integrity: sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==} + /selfsigned/2.1.1: + resolution: {integrity: sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==} engines: {node: '>=10'} dependencies: node-forge: 1.3.1 @@ -18529,8 +17245,8 @@ packages: websocket-driver: 0.7.4 dev: false - /sort-css-media-queries/2.0.4: - resolution: {integrity: sha512-PAIsEK/XupCQwitjv7XxoMvYhT7EAfyzI3hsy/MyDgTvc+Ft55ctdkctJLOy6cQejaIC+zjpUL4djFVm2ivOOw==} + /sort-css-media-queries/2.1.0: + resolution: {integrity: sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA==} engines: {node: '>= 6.3.0'} dev: false @@ -18614,7 +17330,7 @@ packages: resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} dependencies: debug: 4.3.4 - detect-node: 2.1.0 + detect-node: 2.0.4 hpack.js: 2.1.6 obuf: 1.1.2 readable-stream: 3.6.0 @@ -18708,8 +17424,8 @@ packages: engines: {node: '>= 0.8'} dev: false - /std-env/3.1.1: - resolution: {integrity: sha512-/c645XdExBypL01TpFKiG/3RAa/Qmu+zRi0MwAmrdEkwHNuN0ebo8ccAXBBDa5Z0QOJgBskUIbuCK91x0sCVEw==} + /std-env/3.2.1: + resolution: {integrity: sha512-D/uYFWkI/31OrnKmXZqGAGK5GbQRPp/BWA1nuITcc6ICblhhuQUPHS5E2GSCVS7Hwhf4ciq8qsATwBUxv+lI6w==} dev: false /strict-uri-encode/2.0.0: @@ -18961,7 +17677,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.2 + browserslist: 4.21.3 postcss: 8.4.14 postcss-selector-parser: 6.0.10 dev: true @@ -18972,7 +17688,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.2 + browserslist: 4.21.3 postcss: 8.4.16 postcss-selector-parser: 6.0.10 @@ -19067,10 +17783,12 @@ packages: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true - /tailwindcss/3.1.8: + /tailwindcss/3.1.8_postcss@8.4.16: resolution: {integrity: sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g==} engines: {node: '>=12.13.0'} hasBin: true + peerDependencies: + postcss: ^8.0.9 dependencies: arg: 5.0.2 chokidar: 3.5.3 @@ -19591,8 +18309,8 @@ packages: engines: {node: '>=8'} dev: true - /type-fest/2.16.0: - resolution: {integrity: sha512-qpaThT2HQkFb83gMOrdKVsfCN7LKxP26Yq+smPzY1FqoHRjqmjqHXA7n5Gkxi8efirtbeEUxzfEdePthQWCuHw==} + /type-fest/2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} dev: false @@ -19771,16 +18489,6 @@ packages: isobject: 3.0.1 dev: false - /update-browserslist-db/1.0.5_browserslist@4.21.2: - resolution: {integrity: sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.21.2 - escalade: 3.1.1 - picocolors: 1.0.0 - /update-browserslist-db/1.0.5_browserslist@4.21.3: resolution: {integrity: sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==} hasBin: true @@ -19791,6 +18499,17 @@ packages: escalade: 3.1.1 picocolors: 1.0.0 + /update-browserslist-db/1.0.9_browserslist@4.21.4: + resolution: {integrity: sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.4 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: false + /update-notifier/5.1.0: resolution: {integrity: sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==} engines: {node: '>=10'} @@ -20189,8 +18908,8 @@ packages: - utf-8-validate dev: true - /webpack-bundle-analyzer/4.5.0: - resolution: {integrity: sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ==} + /webpack-bundle-analyzer/4.6.1: + resolution: {integrity: sha512-oKz9Oz9j3rUciLNfpGFjOb49/jEpXNmWdVH8Ls//zNcnLlQdTGXQQMsBbb/gR7Zl8WNLxVCq+0Hqbx3zv6twBw==} engines: {node: '>= 10.13.0'} hasBin: true dependencies: @@ -20222,8 +18941,8 @@ packages: webpack: 5.74.0 dev: false - /webpack-dev-server/4.9.3_webpack@5.74.0: - resolution: {integrity: sha512-3qp/eoboZG5/6QgiZ3llN8TUzkSpYg1Ko9khWX1h40MIEUNS2mDoIa8aXsPfskER+GbTvs/IJZ1QTBBhhuetSw==} + /webpack-dev-server/4.11.1_webpack@5.74.0: + resolution: {integrity: sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==} engines: {node: '>= 12.13.0'} hasBin: true peerDependencies: @@ -20235,13 +18954,13 @@ packages: dependencies: '@types/bonjour': 3.5.10 '@types/connect-history-api-fallback': 1.3.5 - '@types/express': 4.17.13 + '@types/express': 4.17.14 '@types/serve-index': 1.9.1 - '@types/serve-static': 1.13.10 + '@types/serve-static': 1.15.0 '@types/sockjs': 0.3.33 '@types/ws': 8.5.3 ansi-html-community: 0.0.8 - bonjour-service: 1.0.13 + bonjour-service: 1.0.14 chokidar: 3.5.3 colorette: 2.0.19 compression: 1.7.4 @@ -20250,13 +18969,13 @@ packages: express: 4.18.1 graceful-fs: 4.2.10 html-entities: 2.3.3 - http-proxy-middleware: 2.0.6_@types+express@4.17.13 + http-proxy-middleware: 2.0.6_@types+express@4.17.14 ipaddr.js: 2.0.1 open: 8.4.0 p-retry: 4.6.2 rimraf: 3.0.2 schema-utils: 4.0.0 - selfsigned: 2.0.1 + selfsigned: 2.1.1 serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 @@ -20330,7 +19049,7 @@ packages: chalk: 4.1.2 consola: 2.15.3 pretty-time: 1.1.0 - std-env: 3.1.1 + std-env: 3.2.1 webpack: 5.74.0 dev: false @@ -20453,7 +19172,7 @@ packages: resolution: {integrity: sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==} engines: {node: '>=12'} dependencies: - ansi-styles: 6.1.0 + ansi-styles: 6.1.1 string-width: 5.1.2 strip-ansi: 7.0.1 dev: false