From 8c826fcf709ad4d8f199ad1e48d7e1883c9246ea Mon Sep 17 00:00:00 2001 From: Baptiste Arnaud Date: Tue, 28 Dec 2021 11:13:09 +0100 Subject: [PATCH] Add e2e tests for account --- .../components/account/BillingSection.tsx | 8 +- apps/builder/cypress/fixtures/avatar.jpg | Bin 0 -> 29752 bytes apps/builder/cypress/plugins/database.ts | 67 ++-- apps/builder/cypress/support/index.ts | 1 + apps/builder/cypress/tests/account.ts | 67 ++++ apps/builder/cypress/tests/board.ts | 2 +- apps/builder/cypress/tsconfig.json | 2 +- apps/builder/package.json | 1 + .../pages/api/stripe/customer-portal.ts | 32 ++ apps/builder/pages/api/typebots.ts | 40 +- packages/bot-engine/src/index.ts | 1 + packages/bot-engine/src/services/utils.ts | 50 ++- yarn.lock | 352 +++++++----------- 13 files changed, 321 insertions(+), 302 deletions(-) create mode 100644 apps/builder/cypress/fixtures/avatar.jpg create mode 100644 apps/builder/cypress/tests/account.ts create mode 100644 apps/builder/pages/api/stripe/customer-portal.ts diff --git a/apps/builder/components/account/BillingSection.tsx b/apps/builder/components/account/BillingSection.tsx index 1bf1d002c..44186a13e 100644 --- a/apps/builder/components/account/BillingSection.tsx +++ b/apps/builder/components/account/BillingSection.tsx @@ -1,6 +1,7 @@ import { Stack, Heading, HStack, Button, Text } from '@chakra-ui/react' import { NextChakraLink } from 'components/nextChakra/NextChakraLink' import { useUser } from 'contexts/UserContext' +import { Plan } from 'db' import React from 'react' import { SubscriptionTag } from './SubscriptionTag' @@ -17,10 +18,13 @@ export const BillingSection = () => { {user?.stripeId && ( - )} + {user?.plan === Plan.FREE && ( + + )} ) diff --git a/apps/builder/cypress/fixtures/avatar.jpg b/apps/builder/cypress/fixtures/avatar.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b67cbceb00b83d681408c69f05220f52504bc78a GIT binary patch literal 29752 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�x+WD3(0jLrNQOV=IodEw(6 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 prisma.user.createMany({ data: [ { id: 'test1', email: 'test1@gmail.com', emailVerified: new Date() }, - { id: 'test2', email: 'test2@gmail.com', emailVerified: new Date() }, + { + id: 'test2', + email: 'test2@gmail.com', + emailVerified: new Date(), + plan: Plan.PRO, + stripeId: 'stripe-test2', + }, ], }) @@ -26,52 +32,23 @@ const createFolders = () => }) const createTypebots = () => { - const startBlock: StartBlock = { - graphCoordinates: { x: 0, y: 0 }, - id: 'start-block', - steps: [ - { - id: 'start-step', - blockId: 'start-block', - type: StepType.START, - label: 'Start', - }, - ], - title: 'Home', - } - const blocks: Block[] = [ - { - id: 'block1', - title: 'Block1', - graphCoordinates: { x: 150, y: 150 }, - steps: [ - { id: 'step1', blockId: 'block1', type: StepType.TEXT, content: '' }, - { - id: 'step2', - blockId: 'block1', - type: StepType.DATE_PICKER, - content: '', - }, - ], - }, - { - id: 'block2', - title: 'Block2', - graphCoordinates: { x: 300, y: 300 }, - steps: [ - { id: 'step1', blockId: 'block2', type: StepType.TEXT, content: '' }, - ], - }, - ] return prisma.typebot.createMany({ data: [ - { id: 'typebot1', name: 'Typebot #1', ownerId: 'test2', startBlock }, { + ...parseNewTypebot({ + name: 'Typebot #1', + ownerId: 'test2', + folderId: null, + }), + id: 'typebot1', + }, + { + ...parseNewTypebot({ + name: 'Typebot #2', + ownerId: 'test2', + folderId: null, + }), id: 'typebot2', - name: 'Typebot #2', - ownerId: 'test2', - startBlock, - blocks, }, ], }) diff --git a/apps/builder/cypress/support/index.ts b/apps/builder/cypress/support/index.ts index 7e32111c2..f5a6458e7 100644 --- a/apps/builder/cypress/support/index.ts +++ b/apps/builder/cypress/support/index.ts @@ -40,6 +40,7 @@ declare global { // Import commands.js using ES2015 syntax: import '@testing-library/cypress/add-commands' +import 'cypress-file-upload' import './commands' // Alternatively you can use CommonJS syntax: diff --git a/apps/builder/cypress/tests/account.ts b/apps/builder/cypress/tests/account.ts new file mode 100644 index 000000000..fd459db63 --- /dev/null +++ b/apps/builder/cypress/tests/account.ts @@ -0,0 +1,67 @@ +describe('Dashboard page', () => { + before(() => { + cy.intercept({ + url: 'https://s3.eu-west-3.amazonaws.com/typebot', + method: 'POST', + }).as('postImage') + cy.intercept({ url: '/api/auth/session?update', method: 'GET' }).as( + 'getUpdatedSession' + ) + }) + + beforeEach(() => { + cy.task('seed') + cy.signOut() + }) + + it('should edit user info properly', () => { + cy.signIn('test1@gmail.com') + cy.visit('/account') + cy.findByRole('button', { name: 'Save' }).should('not.exist') + cy.findByRole('textbox', { name: 'Email address' }).should( + 'have.attr', + 'disabled' + ) + cy.findByRole('textbox', { name: 'Name' }) + .should('have.value', '') + .type('John Doe') + + cy.findByRole('img').should('not.have.attr', 'src') + cy.findByLabelText('Change photo').attachFile('avatar.jpg') + cy.wait('@postImage') + cy.findByRole('img') + .should('have.attr', 'src') + .should( + 'include', + 'https://s3.eu-west-3.amazonaws.com/typebot/test1/avatar' + ) + cy.findByRole('button', { name: 'Save' }).should('exist').click() + cy.wait('@getUpdatedSession') + cy.reload() + cy.findByRole('textbox', { name: 'Name' }).should('have.value', 'John Doe') + cy.findByRole('img') + .should('have.attr', 'src') + .should( + 'include', + 'https://s3.eu-west-3.amazonaws.com/typebot/test1/avatar' + ) + cy.findByRole('button', { name: 'Save' }).should('not.exist') + }) + + it('should display valid plans', () => { + cy.signIn('test1@gmail.com') + cy.visit('/account') + cy.findByText('Free plan').should('exist') + cy.findByRole('link', { name: 'Manage my subscription' }).should( + 'not.exist' + ) + cy.findByRole('button', { name: 'Upgrade' }).should('exist') + cy.signOut() + cy.signIn('test2@gmail.com') + cy.visit('/account') + cy.findByText('Pro plan').should('exist') + cy.findByRole('link', { name: 'Manage my subscription' }) + .should('have.attr', 'href') + .should('include', 'customer-portal') + }) +}) diff --git a/apps/builder/cypress/tests/board.ts b/apps/builder/cypress/tests/board.ts index 80ae0df5e..b7fe22bdf 100644 --- a/apps/builder/cypress/tests/board.ts +++ b/apps/builder/cypress/tests/board.ts @@ -6,7 +6,7 @@ describe('BoardPage', () => { it('steps should be droppable', () => { cy.signIn('test2@gmail.com') - cy.visit('/typebots/typebot1') + cy.visit('/typebots/typebot1/edit') // Can't find an easy way to implement this }) }) diff --git a/apps/builder/cypress/tsconfig.json b/apps/builder/cypress/tsconfig.json index 440f3aeb1..883901b9b 100644 --- a/apps/builder/cypress/tsconfig.json +++ b/apps/builder/cypress/tsconfig.json @@ -3,7 +3,7 @@ "include": ["**/*.ts"], "exclude": [], "compilerOptions": { - "types": ["cypress", "@testing-library/cypress"], + "types": ["cypress", "@testing-library/cypress", "cypress-file-upload"], "lib": ["es2015", "dom"], "target": "es5", "isolatedModules": false, diff --git a/apps/builder/package.json b/apps/builder/package.json index 737a57f62..9b6576f1b 100644 --- a/apps/builder/package.json +++ b/apps/builder/package.json @@ -62,6 +62,7 @@ "@types/testing-library__cypress": "^5.0.9", "@typescript-eslint/eslint-plugin": "^5.8.0", "cypress": "^9.2.0", + "cypress-file-upload": "^5.0.8", "cypress-social-logins": "^1.13.0", "eslint": "<8.0.0", "eslint-config-next": "12.0.7", diff --git a/apps/builder/pages/api/stripe/customer-portal.ts b/apps/builder/pages/api/stripe/customer-portal.ts new file mode 100644 index 000000000..f0288d845 --- /dev/null +++ b/apps/builder/pages/api/stripe/customer-portal.ts @@ -0,0 +1,32 @@ +import { User } from 'db' +import { NextApiRequest, NextApiResponse } from 'next' +import { getSession } from 'next-auth/react' +import { methodNotAllowed } from 'services/api/utils' +import Stripe from 'stripe' + +const createCheckoutSession = async ( + req: NextApiRequest, + res: NextApiResponse +) => { + const session = await getSession({ req }) + if (!session?.user) + return res.status(401).json({ message: 'Not authenticated' }) + const user = session.user as User + if (!user.stripeId) + return res.status(401).json({ message: 'Not authenticated' }) + if (req.method === 'GET') { + if (!process.env.STRIPE_SECRET_KEY) + throw Error('STRIPE_SECRET_KEY var is missing') + const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { + apiVersion: '2020-08-27', + }) + const session = await stripe.billingPortal.sessions.create({ + customer: user.stripeId, + return_url: `${req.headers.origin}/account`, + }) + res.status(201).redirect(session.url) + } + return methodNotAllowed(res) +} + +export default createCheckoutSession diff --git a/apps/builder/pages/api/typebots.ts b/apps/builder/pages/api/typebots.ts index 8a3eb2e09..dcec903ba 100644 --- a/apps/builder/pages/api/typebots.ts +++ b/apps/builder/pages/api/typebots.ts @@ -1,11 +1,5 @@ -import { - BackgroundType, - Settings, - StartBlock, - StepType, - Theme, -} from 'bot-engine' -import { Typebot, User } from 'db' +import { parseNewTypebot } from 'bot-engine' +import { User } from 'db' import prisma from 'libs/prisma' import { NextApiRequest, NextApiResponse } from 'next' import { getSession } from 'next-auth/react' @@ -30,35 +24,9 @@ const handler = async (req: NextApiRequest, res: NextApiResponse) => { return res.send({ typebots }) } if (req.method === 'POST') { - const data = JSON.parse(req.body) as Typebot - const startBlock: StartBlock = { - id: 'start-block', - title: 'Start', - graphCoordinates: { x: 0, y: 0 }, - steps: [ - { - id: 'start-step', - blockId: 'start-block', - label: 'Form starts here', - type: StepType.START, - }, - ], - } - const theme: Theme = { - general: { - font: 'Open Sans', - background: { type: BackgroundType.NONE, content: '#ffffff' }, - }, - } - const settings: Settings = { - typingEmulation: { - enabled: true, - speed: 300, - maxDelay: 1.5, - }, - } + const data = JSON.parse(req.body) const typebot = await prisma.typebot.create({ - data: { ...data, ownerId: user.id, startBlock, theme, settings }, + data: parseNewTypebot({ ownerId: user.id, ...data }), }) return res.send(typebot) } diff --git a/packages/bot-engine/src/index.ts b/packages/bot-engine/src/index.ts index 4841b903f..df1033f5c 100644 --- a/packages/bot-engine/src/index.ts +++ b/packages/bot-engine/src/index.ts @@ -1,2 +1,3 @@ export * from './components/TypebotViewer' export * from './models' +export { parseNewTypebot } from './services/utils' diff --git a/packages/bot-engine/src/services/utils.ts b/packages/bot-engine/src/services/utils.ts index 719d4b716..808531301 100644 --- a/packages/bot-engine/src/services/utils.ts +++ b/packages/bot-engine/src/services/utils.ts @@ -1,7 +1,55 @@ -import { Step, TextStep, StepType, TextInputStep } from '../models' +import { Prisma } from 'db' +import { + Step, + TextStep, + StepType, + TextInputStep, + BackgroundType, + Settings, + StartBlock, + Theme, +} from '../models' export const isTextStep = (step: Step): step is TextStep => step.type === StepType.TEXT export const isTextInputStep = (step: Step): step is TextInputStep => step.type === StepType.TEXT_INPUT + +export const parseNewTypebot = ({ + ownerId, + folderId, + name, +}: { + ownerId: string + folderId: string | null + name: string +}): Prisma.TypebotUncheckedCreateInput => { + const startBlock: StartBlock = { + id: 'start-block', + title: 'Start', + graphCoordinates: { x: 0, y: 0 }, + steps: [ + { + id: 'start-step', + blockId: 'start-block', + label: 'Form starts here', + type: StepType.START, + }, + ], + } + const theme: Theme = { + general: { + font: 'Open Sans', + background: { type: BackgroundType.NONE, content: '#ffffff' }, + }, + } + const settings: Settings = { + typingEmulation: { + enabled: true, + speed: 300, + maxDelay: 1.5, + }, + } + return { folderId, name, ownerId, startBlock, theme, settings } +} diff --git a/yarn.lock b/yarn.lock index 761b5f042..8af517cd9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,7 +9,7 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.14.5", "@babel/code-frame@^7.16.0": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.0.tgz#0dfc80309beec8411e65e706461c408b0bb9b431" integrity sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA== @@ -807,9 +807,9 @@ tslib "^2.0.0" "@emotion/babel-plugin@^11.3.0": - version "11.7.1" - resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.7.1.tgz#853fc4985d89dab0ea8e17af2858473d1b11be7e" - integrity sha512-K3/6Y+J/sIAjplf3uIteWLhPuOyuMNnE+iyYnTF/m294vc6IL90kTHp7y8ldZYbpKlP17rpOWDKM9DvTcrOmNQ== + version "11.7.2" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.7.2.tgz#fec75f38a6ab5b304b0601c74e2a5e77c95e5fa0" + integrity sha512-6mGSCWi9UzXut/ZAN6lGFu33wGR3SJisNl3c0tvlmb8XChH1b2SUvxvnOh7hvLpqyRdHHU9AiazV3Cwbk5SXKQ== dependencies: "@babel/helper-module-imports" "^7.12.13" "@babel/plugin-syntax-jsx" "^7.12.13" @@ -1382,14 +1382,14 @@ integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/is-hotkey@^0.1.1": - version "0.1.6" - resolved "https://registry.yarnpkg.com/@types/is-hotkey/-/is-hotkey-0.1.6.tgz#d90301e5a7632c141c5b534c7dcedc10544b1071" - integrity sha512-kG4tCqu3S4rsgkvmFy75I3Dt99kP/ipZMYi73JpsPSa/IIlHYigxD0XdyM0yn8BpGcD1hvlnrYzoZgzm88peKw== + version "0.1.7" + resolved "https://registry.yarnpkg.com/@types/is-hotkey/-/is-hotkey-0.1.7.tgz#30ec6d4234895230b576728ef77e70a52962f3b3" + integrity sha512-yB5C7zcOM7idwYZZ1wKQ3pTfjA9BbvFqRWvKB46GFddxnJtHwi/b9y84ykQtxQPg5qhdpg4Q/kWU3EGoCTmLzQ== "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" - integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== "@types/istanbul-lib-report@*": version "3.0.0" @@ -1452,30 +1452,20 @@ resolved "https://registry.yarnpkg.com/@types/mime-types/-/mime-types-2.1.1.tgz#d9ba43490fa3a3df958759adf69396c3532cf2c1" integrity sha512-vXOTGVSLR2jMw440moWTC7H19iUyLtP3Z1YTj7cSsubOICinjMxFeb/V57v9QdyyPGbbWolUFSSmSiRSn94tFw== -"@types/node@*": - version "17.0.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.0.tgz#62797cee3b8b497f6547503b2312254d4fe3c2bb" - integrity sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw== - -"@types/node@>=8.1.0": +"@types/node@*", "@types/node@>=8.1.0", "@types/node@^17.0.4": version "17.0.5" resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.5.tgz#57ca67ec4e57ad9e4ef5a6bab48a15387a1c83e0" integrity sha512-w3mrvNXLeDYV1GKTZorGJQivK6XLCoGwpnyJFbJVK/aTBQUxOCaa/GlFAAN3OTDFcb7h5tiFG+YXCO2By+riZw== "@types/node@^14.14.31": - version "14.18.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.0.tgz#98df2397f6936bfbff4f089e40e06fa5dd88d32a" - integrity sha512-0GeIl2kmVMXEnx8tg1SlG6Gg8vkqirrW752KqolYo1PHevhhZN3bhJ67qHj+bQaINhX0Ra3TlWwRvMCd9iEfNQ== + version "14.18.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.3.tgz#b3682cfd9d5542b025df13233d073cb4347f63f3" + integrity sha512-GtTH2crF4MtOIrrAa+jgTV9JX/PfoUCYr6MiZw7O/dkZu5b6gm5dc1nAL0jwGo4ortSBBtGyeVaxdC8X6V+pLg== "@types/node@^16.11.9": - version "16.11.14" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.14.tgz#4939fb42e5b0ffb3ea7e193c28244fe7414977a6" - integrity sha512-mK6BKLpL0bG6v2CxHbm0ed6RcZrAtTHBTd/ZpnlVPVa3HkumsqLE4BC4u6TQ8D7pnrRbOU0am6epuALs+Ncnzw== - -"@types/node@^17.0.4": - version "17.0.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.4.tgz#fec0ce0526abb6062fd206d72a642811b887a111" - integrity sha512-6xwbrW4JJiJLgF+zNypN5wr2ykM9/jHcL7rQ8fZe2vuftggjzZeRSM4OwRc6Xk8qWjwJ99qVHo/JgOGmomWRog== + version "16.11.17" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.17.tgz#ae146499772e33fc6382e1880bc567e41a528586" + integrity sha512-C1vTZME8cFo8uxY2ui41xcynEotVkczIVI5AjLmy5pkpBv/FtG+jhtOlfcPysI8VRVwoOMv6NJm44LGnoMSWkw== "@types/nprogress@^0.2.0": version "0.2.0" @@ -1513,16 +1503,7 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^17.0.37": - version "17.0.37" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.37.tgz#6884d0aa402605935c397ae689deed115caad959" - integrity sha512-2FS1oTqBGcH/s0E+CjrCCR9+JMpsu9b69RTFO+40ua43ZqP5MmQ4iUde/dMjWR909KxZwmOQIFq6AV6NjEG5xg== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/react@^17.0.38": +"@types/react@*", "@types/react@^17.0.37", "@types/react@^17.0.38": version "17.0.38" resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.38.tgz#f24249fefd89357d5fa71f739a686b8d7c7202bd" integrity sha512-SI92X1IA+FMnP3qM5m4QReluXzhcmovhZnLNm3pyeQlooi02qI7sLiepEYqT678uNiyc25XfCqxREFpy3W7YhQ== @@ -1609,12 +1590,12 @@ "@types/node" "*" "@typescript-eslint/eslint-plugin@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.8.0.tgz#52cd9305ceef98a5333f9492d519e6c6c7fe7d43" - integrity sha512-spu1UW7QuBn0nJ6+psnfCc3iVoQAifjKORgBngKOmC8U/1tbe2YJMzYQqDGYB4JCss7L8+RM2kKLb1B1Aw9BNA== + version "5.8.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.8.1.tgz#97dfaa39f38e99f86801fdf34f9f1bed66704258" + integrity sha512-wTZ5oEKrKj/8/366qTM366zqhIKAp6NCMweoRONtfuC07OAU9nVI2GZZdqQ1qD30WAAtcPdkH+npDwtRFdp4Rw== dependencies: - "@typescript-eslint/experimental-utils" "5.8.0" - "@typescript-eslint/scope-manager" "5.8.0" + "@typescript-eslint/experimental-utils" "5.8.1" + "@typescript-eslint/scope-manager" "5.8.1" debug "^4.3.2" functional-red-black-tree "^1.0.1" ignore "^5.1.8" @@ -1622,60 +1603,60 @@ semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/experimental-utils@5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.8.0.tgz#0916ffe98d34b3c95e3652efa0cace61a7b25728" - integrity sha512-KN5FvNH71bhZ8fKtL+lhW7bjm7cxs1nt+hrDZWIqb6ViCffQcWyLunGrgvISgkRojIDcXIsH+xlFfI4RCDA0xA== +"@typescript-eslint/experimental-utils@5.8.1": + version "5.8.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.8.1.tgz#01861eb2f0749f07d02db342b794145a66ed346f" + integrity sha512-fbodVnjIDU4JpeXWRDsG5IfIjYBxEvs8EBO8W1+YVdtrc2B9ppfof5sZhVEDOtgTfFHnYQJDI8+qdqLYO4ceww== dependencies: "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.8.0" - "@typescript-eslint/types" "5.8.0" - "@typescript-eslint/typescript-estree" "5.8.0" + "@typescript-eslint/scope-manager" "5.8.1" + "@typescript-eslint/types" "5.8.1" + "@typescript-eslint/typescript-estree" "5.8.1" eslint-scope "^5.1.1" eslint-utils "^3.0.0" "@typescript-eslint/parser@^5.0.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.8.0.tgz#b39970b21c1d7bc4a6018507fb29b380328d2587" - integrity sha512-Gleacp/ZhRtJRYs5/T8KQR3pAQjQI89Dn/k+OzyCKOsLiZH2/Vh60cFBTnFsHNI6WAD+lNUo/xGZ4NeA5u0Ipw== + version "5.8.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.8.1.tgz#380f5f1e596b540059998aa3fc80d78f0f9b0d0a" + integrity sha512-K1giKHAjHuyB421SoXMXFHHVI4NdNY603uKw92++D3qyxSeYvC10CBJ/GE5Thpo4WTUvu1mmJI2/FFkz38F2Gw== dependencies: - "@typescript-eslint/scope-manager" "5.8.0" - "@typescript-eslint/types" "5.8.0" - "@typescript-eslint/typescript-estree" "5.8.0" + "@typescript-eslint/scope-manager" "5.8.1" + "@typescript-eslint/types" "5.8.1" + "@typescript-eslint/typescript-estree" "5.8.1" debug "^4.3.2" -"@typescript-eslint/scope-manager@5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.8.0.tgz#2371095b4fa4c7be6a80b380f4e1b49c715e16f4" - integrity sha512-x82CYJsLOjPCDuFFEbS6e7K1QEWj7u5Wk1alw8A+gnJiYwNnDJk0ib6PCegbaPMjrfBvFKa7SxE3EOnnIQz2Gg== +"@typescript-eslint/scope-manager@5.8.1": + version "5.8.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.8.1.tgz#7fc0604f7ade8833e4d42cebaa1e2debf8b932e4" + integrity sha512-DGxJkNyYruFH3NIZc3PwrzwOQAg7vvgsHsHCILOLvUpupgkwDZdNq/cXU3BjF4LNrCsVg0qxEyWasys5AiJ85Q== dependencies: - "@typescript-eslint/types" "5.8.0" - "@typescript-eslint/visitor-keys" "5.8.0" + "@typescript-eslint/types" "5.8.1" + "@typescript-eslint/visitor-keys" "5.8.1" -"@typescript-eslint/types@5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.8.0.tgz#e7fa74ec35d9dbe3560d039d3d8734986c3971e0" - integrity sha512-LdCYOqeqZWqCMOmwFnum6YfW9F3nKuxJiR84CdIRN5nfHJ7gyvGpXWqL/AaW0k3Po0+wm93ARAsOdzlZDPCcXg== +"@typescript-eslint/types@5.8.1": + version "5.8.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.8.1.tgz#04c6b49ebc8c99238238a6b8b43f2fc613983b5a" + integrity sha512-L/FlWCCgnjKOLefdok90/pqInkomLnAcF9UAzNr+DSqMC3IffzumHTQTrINXhP1gVp9zlHiYYjvozVZDPleLcA== -"@typescript-eslint/typescript-estree@5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.8.0.tgz#900469ba9d5a37f4482b014ecce4a5dbb86cb4dd" - integrity sha512-srfeZ3URdEcUsSLbkOFqS7WoxOqn8JNil2NSLO9O+I2/Uyc85+UlfpEvQHIpj5dVts7KKOZnftoJD/Fdv0L7nQ== +"@typescript-eslint/typescript-estree@5.8.1": + version "5.8.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.8.1.tgz#a592855be688e7b729a1e9411d7d74ec992ed6ef" + integrity sha512-26lQ8l8tTbG7ri7xEcCFT9ijU5Fk+sx/KRRyyzCv7MQ+rZZlqiDPtMKWLC8P7o+dtCnby4c+OlxuX1tp8WfafQ== dependencies: - "@typescript-eslint/types" "5.8.0" - "@typescript-eslint/visitor-keys" "5.8.0" + "@typescript-eslint/types" "5.8.1" + "@typescript-eslint/visitor-keys" "5.8.1" debug "^4.3.2" globby "^11.0.4" is-glob "^4.0.3" semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/visitor-keys@5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.8.0.tgz#22d4ed96fe2451135299239feedb9fe1dcec780c" - integrity sha512-+HDIGOEMnqbxdAHegxvnOqESUH6RWFRR2b8qxP1W9CZnnYh4Usz6MBL+2KMAgPk/P0o9c1HqnYtwzVH6GTIqug== +"@typescript-eslint/visitor-keys@5.8.1": + version "5.8.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.8.1.tgz#58a2c566265d5511224bc316149890451c1bbab0" + integrity sha512-SWgiWIwocK6NralrJarPZlWdr0hZnj5GXHIgfdm8hNkyKvpeQuFyLP6YjSIe9kf3YBIfU6OHSZLYkQ+smZwtNg== dependencies: - "@typescript-eslint/types" "5.8.0" + "@typescript-eslint/types" "5.8.1" eslint-visitor-keys "^3.0.0" "@udecode/plate-autoformat@^9.0.0": @@ -1821,9 +1802,9 @@ acorn@^7.0.0, acorn@^7.4.0: integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== acorn@^8.4.1: - version "8.6.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.6.0.tgz#e3692ba0eb1a0c83eaa4f37f5fa7368dd7142895" - integrity sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw== + version "8.7.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" + integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== agent-base@5: version "5.1.1" @@ -2371,15 +2352,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001272, caniuse-lite@^1.0.30001286: - version "1.0.30001291" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001291.tgz#08a8d2cfea0b2cf2e1d94dd795942d0daef6108c" - integrity sha512-roMV5V0HNGgJ88s42eE70sstqGW/gwFndosYrikHthw98N5tLnOTxFqMLQjZVRxTWFlJ4rn+MsgXrR7MDPY4jA== - -caniuse-lite@^1.0.30001202, caniuse-lite@^1.0.30001219, caniuse-lite@^1.0.30001228: - version "1.0.30001287" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001287.tgz#5fab6a46ab9e47146d5dd35abfe47beaf8073c71" - integrity sha512-4udbs9bc0hfNrcje++AxBuc6PfLNHwh3PO9kbwnfCQWyqtlzg3py0YgFu8jyRTTo85VAz4U+VLxSlID09vNtWA== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001202, caniuse-lite@^1.0.30001219, caniuse-lite@^1.0.30001228, caniuse-lite@^1.0.30001272, caniuse-lite@^1.0.30001286: + version "1.0.30001292" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001292.tgz#4a55f61c06abc9595965cfd77897dc7bc1cdc456" + integrity sha512-jnT4Tq0Q4ma+6nncYQVe7d73kmDmE9C3OGTx3MvW7lBM/eY1S1DZTMBON7dqV481RhNiS5OxD7k9JQvmDOTirw== caseless@~0.12.0: version "0.12.0" @@ -2639,9 +2615,9 @@ copy-to-clipboard@3.3.1, copy-to-clipboard@^3.3.1: toggle-selection "^1.0.6" core-js-pure@^3.19.0: - version "3.20.0" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.20.0.tgz#7253feccf8bb05b72c153ddccdbe391ddbffbe03" - integrity sha512-qsrbIwWSEEYOM7z616jAVgwhuDDtPLwZSpUsU3vyUkHYqKTf/uwOJBZg2V7lMurYWkpVlaVOxBrfX0Q3ppvjfg== + version "3.20.1" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.20.1.tgz#f7a2c62f98de83e4da8fca7b78846d3a2f542145" + integrity sha512-yeNNr3L9cEBwNy6vhhIJ0nko7fE7uFO6PgawcacGt2VWep4WqQx0RiqlkgSP7kqUMC1IKdfO9qPeWXcUheHLVQ== core-util-is@1.0.2: version "1.0.2" @@ -2776,9 +2752,9 @@ css-in-js-utils@^2.0.0: isobject "^3.0.1" css-select@^4.1.3: - version "4.2.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.0.tgz#ab28276d3afb00cc05e818bd33eb030f14f57895" - integrity sha512-6YVG6hsH9yIb/si3Th/is8Pex7qnVHO6t7q7U6TIUnkQASGbS8tnUDBftnPynLNnuUl/r2+PTd0ekiiq7R0zJw== + version "4.2.1" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd" + integrity sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ== dependencies: boolbase "^1.0.0" css-what "^5.1.0" @@ -2893,6 +2869,11 @@ csstype@^3.0.2, csstype@^3.0.6, csstype@^3.0.9: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.10.tgz#2ad3a7bed70f35b965707c092e5f30b327c290e5" integrity sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA== +cypress-file-upload@^5.0.8: + version "5.0.8" + resolved "https://registry.yarnpkg.com/cypress-file-upload/-/cypress-file-upload-5.0.8.tgz#d8824cbeaab798e44be8009769f9a6c9daa1b4a1" + integrity sha512-+8VzNabRk3zG6x8f8BWArF/xA/W0VK4IZNx3MV0jFWrJS/qKn8eHfa5nU73P9fOQAgwHFJx7zjg4lwOnljMO8g== + cypress-social-logins@^1.13.0: version "1.13.0" resolved "https://registry.yarnpkg.com/cypress-social-logins/-/cypress-social-logins-1.13.0.tgz#b8795f2d1fdb7fe31f519f2cf2e55c8e214fba7c" @@ -2901,54 +2882,7 @@ cypress-social-logins@^1.13.0: otplib "^12.0.1" puppeteer "^2.1.1" -cypress@*: - version "9.1.1" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-9.1.1.tgz#26720ca5a22077cd85f49745616b7a08152a298f" - integrity sha512-yWcYD8SEQ8F3okFbRPqSDj5V0xhrZBT5QRIH+P1J2vYvtEmZ4KGciHE7LCcZZLILOrs7pg4WNCqkj/XRvReQlQ== - dependencies: - "@cypress/request" "^2.88.10" - "@cypress/xvfb" "^1.2.4" - "@types/node" "^14.14.31" - "@types/sinonjs__fake-timers" "^6.0.2" - "@types/sizzle" "^2.3.2" - arch "^2.2.0" - blob-util "^2.0.2" - bluebird "3.7.2" - cachedir "^2.3.0" - chalk "^4.1.0" - check-more-types "^2.24.0" - cli-cursor "^3.1.0" - cli-table3 "~0.6.0" - commander "^5.1.0" - common-tags "^1.8.0" - dayjs "^1.10.4" - debug "^4.3.2" - enquirer "^2.3.6" - eventemitter2 "^6.4.3" - execa "4.1.0" - executable "^4.1.1" - extract-zip "2.0.1" - figures "^3.2.0" - fs-extra "^9.1.0" - getos "^3.2.1" - is-ci "^3.0.0" - is-installed-globally "~0.4.0" - lazy-ass "^1.6.0" - listr2 "^3.8.3" - lodash "^4.17.21" - log-symbols "^4.0.0" - minimist "^1.2.5" - ospath "^1.2.2" - pretty-bytes "^5.6.0" - proxy-from-env "1.0.0" - request-progress "^3.0.0" - supports-color "^8.1.1" - tmp "~0.2.1" - untildify "^4.0.0" - url "^0.11.0" - yauzl "^2.10.0" - -cypress@^9.2.0: +cypress@*, cypress@^9.2.0: version "9.2.0" resolved "https://registry.yarnpkg.com/cypress/-/cypress-9.2.0.tgz#727c20b4662167890db81d5f6ba615231835b17d" integrity sha512-Jn26Tprhfzh/a66Sdj9SoaYlnNX6Mjfmj5PHu2a7l3YHXhrgmavM368wjCmgrxC6KHTOv9SpMQGhAJn+upDViA== @@ -3223,15 +3157,10 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" -electron-to-chromium@^1.3.723: - version "1.4.20" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.20.tgz#8fbf9677ccac19b4249c0a6204e0943d9d66ce30" - integrity sha512-N7ZVNrdzX8NE90OXEFBMsBf3fp8P/vVDUER3WCUZjzC7OkNTXHVoF6W9qVhq8+dA8tGnbDajzUpj2ISNVVyj+Q== - -electron-to-chromium@^1.4.17: - version "1.4.24" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.24.tgz#9cf8a92d5729c480ee47ff0aa5555f57467ae2fa" - integrity sha512-erwx5r69B/WFfFuF2jcNN0817BfDBdC4765kQ6WltOMuwsimlQo3JTEq0Cle+wpHralwdeX3OfAtw/mHxPK0Wg== +electron-to-chromium@^1.3.723, electron-to-chromium@^1.4.17: + version "1.4.28" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.28.tgz#fef0e92e281df6d568f482d8d53c34ca5374de48" + integrity sha512-Gzbf0wUtKfyPaqf0Plz+Ctinf9eQIzxEqBHwSvbGfeOm9GMNdLxyu1dNiCUfM+x6r4BE0xUJNh3Nmg9gfAtTmg== elliptic@^6.5.3: version "6.5.4" @@ -3261,11 +3190,6 @@ emojis-list@^2.0.0: resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - encoding@0.1.13: version "0.1.13" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" @@ -3471,9 +3395,9 @@ eslint-plugin-react-hooks@^4.3.0: integrity sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA== eslint-plugin-react@^7.27.0: - version "7.27.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.27.1.tgz#469202442506616f77a854d91babaae1ec174b45" - integrity sha512-meyunDjMMYeWr/4EBLTV1op3iSG3mjT/pz5gti38UzfM4OPpNc2m0t2xvKCOMU5D6FSdd34BIMFOvQbW+i8GAA== + version "7.28.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.28.0.tgz#8f3ff450677571a659ce76efc6d80b6a525adbdf" + integrity sha512-IOlFIRHzWfEQQKcAD4iyYDndHwTQiCMcJVJjxempf203jnNLUnW34AXLrV33+nEXoifJE2ZEGmcjKPL8957eSw== dependencies: array-includes "^3.1.4" array.prototype.flatmap "^1.2.5" @@ -3931,12 +3855,12 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -generic-names@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-2.0.1.tgz#f8a378ead2ccaa7a34f0317b05554832ae41b872" - integrity sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ== +generic-names@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-4.0.0.tgz#0bd8a2fd23fe8ea16cbd0a279acd69c06933d9a3" + integrity sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A== dependencies: - loader-utils "^1.1.0" + loader-utils "^3.2.0" get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: version "1.1.1" @@ -4242,9 +4166,9 @@ ignore@^4.0.6: integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== ignore@^5.1.4, ignore@^5.1.8: - version "5.1.9" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.9.tgz#9ec1a5cbe8e1446ec60d4420060d43aa6e7382fb" - integrity sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ== + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== image-size@1.0.0: version "1.0.0" @@ -4765,14 +4689,10 @@ loader-utils@1.2.3: emojis-list "^2.0.0" json5 "^1.0.1" -loader-utils@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" +loader-utils@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.0.tgz#bcecc51a7898bee7473d4bc6b845b23af8304d4f" + integrity sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ== locate-path@^2.0.0: version "2.0.0" @@ -5237,9 +5157,9 @@ object-hash@^2.0.1, object-hash@^2.2.0: integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw== object-inspect@^1.11.0, object-inspect@^1.9.0: - version "1.11.1" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.1.tgz#d4bd7d7de54b9a75599f59a00bd698c1f1c6549b" - integrity sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA== + version "1.12.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" + integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== object-is@^1.0.1: version "1.1.5" @@ -5319,9 +5239,9 @@ onetime@^5.1.0: mimic-fn "^2.1.0" openid-client@^5.0.2: - version "5.1.0" - resolved "https://registry.yarnpkg.com/openid-client/-/openid-client-5.1.0.tgz#e9a22574c0cf1ce64555b96a4670e33593cc276a" - integrity sha512-gTTNQ8SzfoWIeSeVkYGMDzaHHx06wRnJRYCyG1xrkGu9Xww7X4Uz4fFEJ19KQRee4xttb38GIcxACRxQVChegg== + version "5.1.1" + resolved "https://registry.yarnpkg.com/openid-client/-/openid-client-5.1.1.tgz#4b6597c34444f77494e1a057e93ad83875529324" + integrity sha512-vwbS4T7hpaWol0GerNabnslUWTxq1NHjnLqdFovzqWlLHW5kp08Tme8FSSeTswABjSC9d88ofTFnfAYy/zwtlQ== dependencies: jose "^4.1.4" lru-cache "^6.0.0" @@ -5742,11 +5662,11 @@ postcss-modules-values@^4.0.0: icss-utils "^5.0.0" postcss-modules@^4.0.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-4.2.2.tgz#5e7777c5a8964ea176919d90b2e54ef891321ce5" - integrity sha512-/H08MGEmaalv/OU8j6bUKi/kZr2kqGF6huAW8m9UAgOLWtpFdhA14+gPBoymtqyv+D4MLsmqaF2zvIegdCxJXg== + version "4.3.0" + resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-4.3.0.tgz#1cb32f16a8cfffe2b989598f8135eb6427106ec7" + integrity sha512-zoUttLDSsbWDinJM9jH37o7hulLRyEgH6fZm2PchxN7AZ8rkdWiALyNhnQ7+jg7cX9f10m6y5VhHsrjO0Mf/DA== dependencies: - generic-names "^2.0.1" + generic-names "^4.0.0" icss-replace-symbols "^1.1.0" lodash.camelcase "^4.3.0" postcss-modules-extract-imports "^3.0.0" @@ -5853,9 +5773,9 @@ postcss-reduce-transforms@^5.0.1: postcss-value-parser "^4.1.0" postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.6, postcss-selector-parser@^6.0.7: - version "6.0.7" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.7.tgz#48404830a635113a71fd79397de8209ed05a66fc" - integrity sha512-U+b/Deoi4I/UmE6KOVPpnhS7I7AYdKbhGcat+qTQ27gycvaACvNEw11ba6RrkwVmDVRW7sigWgLj4/KbbJjeDA== + version "6.0.8" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.8.tgz#f023ed7a9ea736cd7ef70342996e8e78645a7914" + integrity sha512-D5PG53d209Z1Uhcc0qAZ5U3t5HagH3cxu+WLZ22jt3gLUpXM4eXXfiO14jiDWST3NNooX/E8wISfOhZ9eIjGTQ== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" @@ -5986,13 +5906,13 @@ promise.series@^0.2.0: integrity sha1-LMfr6Vn8OmYZwEq029yeRS2GS70= prop-types@^15.6.2, prop-types@^15.7.2: - version "15.7.2" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" - integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + version "15.8.0" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.0.tgz#d237e624c45a9846e469f5f31117f970017ff588" + integrity sha512-fDGekdaHh65eI3lMi5OnErU6a8Ighg2KjcjQxO7m8VHyWjcPyj5kiOgV1LQDOOOgVy3+5FgjXvdSSX7B8/5/4g== dependencies: loose-envify "^1.4.0" object-assign "^4.1.1" - react-is "^16.8.1" + react-is "^16.13.1" proxy-from-env@1.0.0: version "1.0.0" @@ -6162,7 +6082,7 @@ react-is@17.0.2, react-is@^17.0.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== -react-is@^16.7.0, react-is@^16.8.1: +react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -6428,13 +6348,13 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: inherits "^2.0.1" rollup-plugin-dts@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-dts/-/rollup-plugin-dts-4.0.1.tgz#930cbd5aaaa64a55e895ecd6ae8234e1a5467710" - integrity sha512-DNv5F8pro/r0Hkx3JWKRtJZocDnqXfgypoajeiaNq134rYaFcEIl/oas5PogD1qexMadVijsHyVko1Chig0OOQ== + version "4.1.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-dts/-/rollup-plugin-dts-4.1.0.tgz#63b1e7de3970bb6d50877e60df2150a3892bc49c" + integrity sha512-rriXIm3jdUiYeiAAd1Fv+x2AxK6Kq6IybB2Z/IdoAW95fb4uRUurYsEYKa8L1seedezDeJhy8cfo8FEL9aZzqg== dependencies: magic-string "^0.25.7" optionalDependencies: - "@babel/code-frame" "^7.14.5" + "@babel/code-frame" "^7.16.0" rollup-plugin-peer-deps-external@^2.2.4: version "2.2.4" @@ -6478,9 +6398,9 @@ rollup-pluginutils@^2.8.2: estree-walker "^0.6.1" rollup@^2.61.1: - version "2.61.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.61.1.tgz#1a5491f84543cf9e4caf6c61222d9a3f8f2ba454" - integrity sha512-BbTXlEvB8d+XFbK/7E5doIcRtxWPRiqr0eb5vQ0+2paMM04Ye4PZY5nHOQef2ix24l/L0SpLd5hwcH15QHPdvA== + version "2.62.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.62.0.tgz#9e640b419fc5b9e0241844f6d55258bd79986ecc" + integrity sha512-cJEQq2gwB0GWMD3rYImefQTSjrPYaC6s4J9pYqnstVLJ1CHa/aZNVkD4Epuvg4iLeMA4KRiq7UM7awKK6j7jcw== optionalDependencies: fsevents "~2.3.2" @@ -6499,11 +6419,11 @@ run-parallel@^1.1.9: queue-microtask "^1.2.2" rxjs@^7.4.0: - version "7.4.0" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.4.0.tgz#a12a44d7eebf016f5ff2441b87f28c9a51cebc68" - integrity sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w== + version "7.5.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.1.tgz#af73df343cbcab37628197f43ea0c8256f54b157" + integrity sha512-KExVEeZWxMZnZhUZtsJcFwz8IvPvgu4G2Z2QyqjZQzUGr32KDYuSxrEYO4w3tFFNbfLozcrKUTvTPi+E9ywJkQ== dependencies: - tslib "~2.1.0" + tslib "^2.1.0" safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: version "5.2.1" @@ -6692,9 +6612,9 @@ slate-react@^0.72.1: tiny-invariant "1.0.6" slate@^0.72.0: - version "0.72.0" - resolved "https://registry.yarnpkg.com/slate/-/slate-0.72.0.tgz#509b4fd06a13eab6c19ea28aa4f1848064e4c61b" - integrity sha512-PdyMSxsv6ZOeoPp/tKb3mCfn7jWdtnavKzzuVrTYbydOIubYq60N9D3kJRcvR7Z86kxIOzu1ZXB8vsUzy30/vg== + version "0.72.3" + resolved "https://registry.yarnpkg.com/slate/-/slate-0.72.3.tgz#c74eb85133b975b2d44d219462c127cdb992e76b" + integrity sha512-ALsYQHKTN4rC+iHnOJzV+aC4AHdhoPkBWrfEK3W/LbXOzPrR+wL80a66OZiYg9Xb0QeGzlLSGdOOFQd2ix9Wmg== dependencies: immer "^9.0.6" is-plain-object "^5.0.0" @@ -7093,9 +7013,9 @@ svgo@^2.7.0: stable "^0.1.8" swr@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/swr/-/swr-1.1.1.tgz#f13346cc830d7950183af57b341bfabb4cc90d43" - integrity sha512-ZpUHyU3N3snj2QGFeE2Fd3BXl1CVS6YQIQGb1ttPAkTmvwZqDyV3GRMNPsaeAYCBM74tfn4XbKx28FVQR0mS7Q== + version "1.1.2" + resolved "https://registry.yarnpkg.com/swr/-/swr-1.1.2.tgz#9f3de2541931fccf03c48f322f1fc935a7551612" + integrity sha512-UsM0eo5T+kRPyWFZtWRx2XR5qzohs/LS4lDC0GCyLpCYFmsfTk28UCVDbOE9+KtoXY4FnwHYiF+ZYEU3hnJ1lQ== table@^6.0.9: version "6.7.5" @@ -7290,11 +7210,6 @@ tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== -tslib@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" - integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== - tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -7710,7 +7625,12 @@ yocto-queue@^0.1.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -zustand@3.6.7, zustand@^3.4.2: +zustand@3.6.7: version "3.6.7" resolved "https://registry.yarnpkg.com/zustand/-/zustand-3.6.7.tgz#aab5ac0a9d6d21dce752aecd390f373ed9c9d70a" integrity sha512-bYWKXMfoJwZyliFgidcQ3tJC/F2f2hHq1+lhTk8dVPX2k28i4VnpnKjBGNxAd2QNliV0m455Vm+gDL8LShrV3g== + +zustand@^3.4.2: + version "3.6.8" + resolved "https://registry.yarnpkg.com/zustand/-/zustand-3.6.8.tgz#17f24351aa9e1fbf46f3addb0bcb81b05940d79f" + integrity sha512-8dqxig1l/o/N4M3DGxhweLVyCvNsd40oU3fXuY4MfqX1notavmjljCnSeTN3FGfYzbo963w4un2ChYsPB/0gKA==