From 57f0dd0feae26cd5da84808df92ce7edfbb25fa7 Mon Sep 17 00:00:00 2001 From: Davit Darsavelidze <76407236+DaveDarsa@users.noreply.github.com> Date: Thu, 23 Mar 2023 05:49:50 +0400 Subject: [PATCH] Styled-components + TS w/ eslint (#104) --- .eslintrc.js | 44 + .gitignore | 3 + README.md | 14 + next-env.d.ts | 5 + package.json | 18 +- src/.babelrc | 14 +- src/components/Accordion/StyledAccordion.tsx | 62 + src/components/Accordion/index.js | 91 - src/components/Accordion/index.tsx | 47 + .../StyledActiveStandbyConfirm.tsx | 24 + src/components/ActiveStandbyConfirm/index.js | 69 - src/components/ActiveStandbyConfirm/index.tsx | 62 + src/components/AddTask/StyledAddTask.tsx | 37 + .../AddTask/components/Completed.js | 3 - .../AddTask/components/Completed.tsx | 3 + .../AddTask/components/CustomTaskConfirm.js | 63 - .../AddTask/components/CustomTaskConfirm.tsx | 48 + .../AddTask/components/DrushArchiveDump.js | 13 +- .../AddTask/components/DrushCacheClear.js | 13 +- .../AddTask/components/DrushCron.js | 12 +- .../AddTask/components/DrushRsyncFiles.js | 16 +- .../AddTask/components/DrushSqlDump.js | 13 +- .../AddTask/components/DrushSqlSync.js | 16 +- .../AddTask/components/DrushUserLogin.js | 13 +- src/components/AddTask/components/Empty.js | 4 - src/components/AddTask/components/Empty.tsx | 3 + src/components/AddTask/components/Error.js | 3 - src/components/AddTask/components/Error.tsx | 3 + .../components/InvokeRegisteredTask.js | 33 +- src/components/AddTask/components/Styles.tsx | 63 + src/components/AddTask/index.js | 88 +- src/components/Backups/StyledBackups.tsx | 125 ++ src/components/Backups/index.js | 160 -- src/components/Backups/index.tsx | 49 + src/components/Box/StyledBox.tsx | 50 + src/components/Box/index.js | 53 - src/components/Box/index.tsx | 19 + src/components/Breadcrumbs/Breadcrumb.js | 64 - src/components/Breadcrumbs/Breadcrumb.tsx | 41 + src/components/Breadcrumbs/BulkDeployment.js | 17 - src/components/Breadcrumbs/BulkDeployment.tsx | 15 + src/components/Breadcrumbs/Deployment.js | 17 - src/components/Breadcrumbs/Deployment.tsx | 23 + src/components/Breadcrumbs/Environment.js | 17 - src/components/Breadcrumbs/Environment.tsx | 21 + src/components/Breadcrumbs/Problem.js | 23 - src/components/Breadcrumbs/Problem.tsx | 28 + src/components/Breadcrumbs/Project.js | 17 - src/components/Breadcrumbs/Project.tsx | 11 + .../Breadcrumbs/StyledBreadCrumb.tsx | 54 + src/components/Breadcrumbs/Task.js | 17 - src/components/Breadcrumbs/Task.tsx | 23 + src/components/Breadcrumbs/index.js | 23 - src/components/Breadcrumbs/index.tsx | 13 + .../BulkDeployments/StyledBulkDeployments.tsx | 134 ++ src/components/BulkDeployments/index.js | 208 --- src/components/BulkDeployments/index.tsx | 99 ++ src/components/Button/StyledButton.tsx | 48 + src/components/Button/index.js | 77 - src/components/Button/index.tsx | 48 + .../DeployLatest/StyledDeployLatest.js | 33 + src/components/DeployLatest/index.js | 40 +- src/components/Deployment/StyledDeployment.js | 169 ++ src/components/Deployment/index.js | 190 +- .../Deployments/StyledDeployments.tsx | 132 ++ src/components/Deployments/index.js | 183 -- src/components/Deployments/index.tsx | 72 + .../StyledDeploymentsByFilter.js | 196 +++ src/components/DeploymentsByFilter/index.js | 210 +-- .../Environment/StyledEnvironment.tsx | 102 ++ src/components/Environment/index.js | 108 +- .../Environments/StyledEnvironments.tsx | 176 ++ src/components/Environments/index.js | 201 +-- src/components/Facts/StyledFacts.js | 132 ++ src/components/Facts/index.js | 139 +- src/components/Filters/StyledFilters.js | 21 + src/components/Filters/index.js | 28 +- src/components/Footer/StyledFooter.tsx | 39 + src/components/Footer/index.js | 51 +- src/components/Header/StyledHeader.tsx | 63 + src/components/Header/index.js | 70 +- .../HeaderMenu/StyledHeaderMenu.tsx | 107 ++ src/components/HeaderMenu/index.js | 155 +- src/components/Honeycomb/index.js | 52 - src/components/Insights/StyledInsights.tsx | 146 ++ src/components/Insights/index.js | 148 +- .../LogViewer/LogAccordion/index.js | 110 +- src/components/LogViewer/StyledLogViewer.tsx | 125 ++ src/components/LogViewer/index.js | 40 +- src/components/Modal/index.js | 52 +- src/components/NavTabs/StylednavTabs.tsx | 157 ++ src/components/NavTabs/index.js | 191 +- .../Problem/ContentDisplay/DefaultContent.js | 65 +- .../Problem/ContentDisplay/DrutinyContent.js | 34 +- .../Problem/ContentDisplay/StyledContent.tsx | 91 + src/components/Problem/index.js | 21 - src/components/Problems/StyledProblems.tsx | 125 ++ src/components/Problems/index.js | 130 +- .../StyledProblemsByIdentifier.tsx | 177 ++ src/components/ProblemsByIdentifier/index.js | 186 +- .../StyledProblemsByProject.tsx | 136 ++ src/components/ProblemsByProject/index.js | 141 +- .../StyledProjectSidebar.tsx | 194 +++ src/components/ProjectDetailsSidebar/index.js | 219 +-- src/components/Projects/StyledProjects.tsx | 95 + src/components/Projects/index.js | 163 +- .../ResultsLimited/StyledResultsLimited.tsx | 22 + src/components/ResultsLimited/index.js | 33 +- src/components/SshKeys/StyledKeys.tsx | 139 ++ src/components/SshKeys/index.js | 157 +- src/components/Task/StyledTask.tsx | 158 ++ src/components/Task/index.js | 215 --- src/components/Task/index.tsx | 76 + src/components/Tasks/StyledTasks.tsx | 161 ++ src/components/Tasks/index.js | 204 --- src/components/Tasks/index.tsx | 65 + src/layouts/GlobalStyles/index.js | 202 --- src/layouts/GlobalStyles/index.tsx | 234 +++ src/layouts/MainLayout/index.js | 13 +- .../StatusLayout/StyledStatusLayout.js | 25 + src/layouts/StatusLayout/index.js | 66 +- src/lib/variables.js | 1 + src/pages/_app.js | 3 +- src/pages/_document.js | 39 +- src/pages/_error.js | 4 +- src/pages/alldeployments.js | 58 +- src/pages/backups.js | 84 +- src/pages/bulkdeployments.js | 64 +- src/pages/deployment.js | 95 +- src/pages/deployments.js | 76 +- src/pages/environment.js | 46 +- src/pages/facts.js | 56 +- src/pages/insights.js | 98 +- .../problems-dashboard-by-project-hex.js | 72 +- src/pages/problems-dashboard-by-project.js | 262 ++- src/pages/problems-dashboard.js | 263 ++- src/pages/problems.js | 81 +- src/pages/project.js | 78 +- src/pages/projects.js | 88 +- src/pages/settings/index.js | 48 +- src/pages/task.js | 54 +- src/pages/tasks.js | 78 +- src/styles/commonPageStyles.js | 92 + src/styles/pageStyles.js | 316 ++++ src/webpack.shared-config.js | 2 +- tsconfig.json | 28 + yarn.lock | 1534 ++++++++++++++--- 147 files changed, 7244 insertions(+), 5955 deletions(-) create mode 100644 .eslintrc.js create mode 100644 next-env.d.ts create mode 100644 src/components/Accordion/StyledAccordion.tsx delete mode 100644 src/components/Accordion/index.js create mode 100644 src/components/Accordion/index.tsx create mode 100644 src/components/ActiveStandbyConfirm/StyledActiveStandbyConfirm.tsx delete mode 100644 src/components/ActiveStandbyConfirm/index.js create mode 100644 src/components/ActiveStandbyConfirm/index.tsx create mode 100644 src/components/AddTask/StyledAddTask.tsx delete mode 100644 src/components/AddTask/components/Completed.js create mode 100644 src/components/AddTask/components/Completed.tsx delete mode 100644 src/components/AddTask/components/CustomTaskConfirm.js create mode 100644 src/components/AddTask/components/CustomTaskConfirm.tsx delete mode 100644 src/components/AddTask/components/Empty.js create mode 100644 src/components/AddTask/components/Empty.tsx delete mode 100644 src/components/AddTask/components/Error.js create mode 100644 src/components/AddTask/components/Error.tsx create mode 100644 src/components/AddTask/components/Styles.tsx create mode 100644 src/components/Backups/StyledBackups.tsx delete mode 100644 src/components/Backups/index.js create mode 100644 src/components/Backups/index.tsx create mode 100644 src/components/Box/StyledBox.tsx delete mode 100644 src/components/Box/index.js create mode 100644 src/components/Box/index.tsx delete mode 100644 src/components/Breadcrumbs/Breadcrumb.js create mode 100644 src/components/Breadcrumbs/Breadcrumb.tsx delete mode 100644 src/components/Breadcrumbs/BulkDeployment.js create mode 100644 src/components/Breadcrumbs/BulkDeployment.tsx delete mode 100644 src/components/Breadcrumbs/Deployment.js create mode 100644 src/components/Breadcrumbs/Deployment.tsx delete mode 100644 src/components/Breadcrumbs/Environment.js create mode 100644 src/components/Breadcrumbs/Environment.tsx delete mode 100644 src/components/Breadcrumbs/Problem.js create mode 100644 src/components/Breadcrumbs/Problem.tsx delete mode 100644 src/components/Breadcrumbs/Project.js create mode 100644 src/components/Breadcrumbs/Project.tsx create mode 100644 src/components/Breadcrumbs/StyledBreadCrumb.tsx delete mode 100644 src/components/Breadcrumbs/Task.js create mode 100644 src/components/Breadcrumbs/Task.tsx delete mode 100644 src/components/Breadcrumbs/index.js create mode 100644 src/components/Breadcrumbs/index.tsx create mode 100644 src/components/BulkDeployments/StyledBulkDeployments.tsx delete mode 100644 src/components/BulkDeployments/index.js create mode 100644 src/components/BulkDeployments/index.tsx create mode 100644 src/components/Button/StyledButton.tsx delete mode 100644 src/components/Button/index.js create mode 100644 src/components/Button/index.tsx create mode 100644 src/components/DeployLatest/StyledDeployLatest.js create mode 100644 src/components/Deployment/StyledDeployment.js create mode 100644 src/components/Deployments/StyledDeployments.tsx delete mode 100644 src/components/Deployments/index.js create mode 100644 src/components/Deployments/index.tsx create mode 100644 src/components/DeploymentsByFilter/StyledDeploymentsByFilter.js create mode 100644 src/components/Environment/StyledEnvironment.tsx create mode 100644 src/components/Environments/StyledEnvironments.tsx create mode 100644 src/components/Facts/StyledFacts.js create mode 100644 src/components/Filters/StyledFilters.js create mode 100644 src/components/Footer/StyledFooter.tsx create mode 100644 src/components/Header/StyledHeader.tsx create mode 100644 src/components/HeaderMenu/StyledHeaderMenu.tsx create mode 100644 src/components/Insights/StyledInsights.tsx create mode 100644 src/components/LogViewer/StyledLogViewer.tsx create mode 100644 src/components/NavTabs/StylednavTabs.tsx create mode 100644 src/components/Problem/ContentDisplay/StyledContent.tsx create mode 100644 src/components/Problems/StyledProblems.tsx create mode 100644 src/components/ProblemsByIdentifier/StyledProblemsByIdentifier.tsx create mode 100644 src/components/ProblemsByProject/StyledProblemsByProject.tsx create mode 100644 src/components/ProjectDetailsSidebar/StyledProjectSidebar.tsx create mode 100644 src/components/Projects/StyledProjects.tsx create mode 100644 src/components/ResultsLimited/StyledResultsLimited.tsx create mode 100644 src/components/SshKeys/StyledKeys.tsx create mode 100644 src/components/Task/StyledTask.tsx delete mode 100644 src/components/Task/index.js create mode 100644 src/components/Task/index.tsx create mode 100644 src/components/Tasks/StyledTasks.tsx delete mode 100644 src/components/Tasks/index.js create mode 100644 src/components/Tasks/index.tsx delete mode 100644 src/layouts/GlobalStyles/index.js create mode 100644 src/layouts/GlobalStyles/index.tsx create mode 100644 src/layouts/StatusLayout/StyledStatusLayout.js create mode 100644 src/styles/commonPageStyles.js create mode 100644 src/styles/pageStyles.js create mode 100644 tsconfig.json diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000..8926574f --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,44 @@ +const path = require("path"); + +module.exports = { + extends: ["next"], + rules: { + "import/no-anonymous-default-export": "off", + "react/no-unescaped-entities": "off", + "react/display-name": "off", + }, + ignorePatterns: ["src/**/*.stories.js"], + + overrides: [ + { + files: ["src/**/*.ts", "src/**/*.tsx"], + parser: "@typescript-eslint/parser", + parserOptions: { + ecmaVersion: 2020, + sourceType: "module", + project: "./tsconfig.json", + tsConfigRootDir: path.resolve(__dirname), + }, + extends: [ + "eslint:recommended", + "plugin:@typescript-eslint/eslint-recommended", + "plugin:@typescript-eslint/recommended", + "plugin:@typescript-eslint/recommended-requiring-type-checking", + "next/core-web-vitals", + ], + rules: { + "@typescript-eslint/no-unsafe-assessment": "off", + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/require-await": ["error"], + "@typescript-eslint/no-unsafe-return": ["error"], + "@typescript-eslint/no-unsafe-call": ["error"], + "@typescript-eslint/no-unsafe-argument": ["error"], + "@typescript-eslint/no-unsafe-member-access": ["error"], + "@typescript-eslint/no-non-null-assertion": ["error"], + "@typescript-eslint/ban-ts-comment": "off", + "no-unused-vars": "off", + "require-await": "off", + }, + }, + ], +}; diff --git a/.gitignore b/.gitignore index ee43b8b3..3b669ab8 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,6 @@ build-storybook.log .env .python-version docker-compose.override.yml + +# ts linter +*.tsbuildinfo \ No newline at end of file diff --git a/README.md b/README.md index cb4ece38..c46ffd36 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,20 @@ docker-compose up -d This project is tested with BrowserStack. +## Linting + +The linter is configured for both JS and TypeScript files, with the latter being much stricter. +It runs during the build step but can also be ran during development by `yarn lint` + +Linter and TS configs are both located in the root of the project as `.eslintrc.js` and `tsconfig.json` + + +## Styling + +Lagoon-UI uses styled-components and it's recommended to use separete files for styling for each component. +` - - ); -}; - -Accordion.propTypes = { - children: PropTypes.any.isRequired, - defaultValue: PropTypes.bool, - className: PropTypes.string, - onToggle: PropTypes.func, - columns: PropTypes.any.isRequired -}; - -export default Accordion; diff --git a/src/components/Accordion/index.tsx b/src/components/Accordion/index.tsx new file mode 100644 index 00000000..f4ebefc7 --- /dev/null +++ b/src/components/Accordion/index.tsx @@ -0,0 +1,47 @@ +import React, { useState, Fragment, FC } from "react"; +import { StyledAccordion } from "./StyledAccordion"; + +interface AccordionProps { + children: JSX.Element[]; + defaultValue?: boolean; + minified?: boolean; + className?: string; + onToggle?: (visibility: boolean) => void; + columns?: { [key: string]: string } | string[]; +} + +const Accordion: FC = ({ + children, + defaultValue = true, + minified = false, + className = "", + onToggle, + columns, +}) => { + const [visibility, setVisibility] = useState(defaultValue); + const accordionType = minified ? "minified" : "wide"; + const colCountClass = columns && "cols-" + String(Object.keys(columns).length); + + return ( + +
{ + setVisibility(!visibility); + if (onToggle) onToggle(!visibility); + }} + > + {columns && + Object.keys(columns).map((item, i) => ( +
+ {columns[item]} +
+ ))} +
+ + {visibility ? {children} : null} +
+ ); +}; + +export default Accordion; diff --git a/src/components/ActiveStandbyConfirm/StyledActiveStandbyConfirm.tsx b/src/components/ActiveStandbyConfirm/StyledActiveStandbyConfirm.tsx new file mode 100644 index 00000000..ada37962 --- /dev/null +++ b/src/components/ActiveStandbyConfirm/StyledActiveStandbyConfirm.tsx @@ -0,0 +1,24 @@ +import styled from "styled-components"; +import { color } from "lib/variables"; + +export const StyledActiveStandbyConfirm = styled.div` + .margins { + margin-right: 10px; + } + input { + margin-right: 10px; + width: 100%; + } + .environment-name { + font-weight: bold; + color: ${color.lightBlue}; + } + a.hover-state { + margin-right: 10px; + color: ${color.blue}; + } + .form-input { + display: flex; + align-items: center; + } +`; diff --git a/src/components/ActiveStandbyConfirm/index.js b/src/components/ActiveStandbyConfirm/index.js deleted file mode 100644 index 1331fe98..00000000 --- a/src/components/ActiveStandbyConfirm/index.js +++ /dev/null @@ -1,69 +0,0 @@ -import React from 'react'; -import Modal from 'components/Modal'; -import Button from 'components/Button'; -import { bp, color } from 'lib/variables'; -// @TODO: add this once the logic exists -import withLogic from 'components/ActiveStandbyConfirm/logic'; -import ActiveStandby from 'components/ActiveStandbyConfirm'; - -/** - * Confirms the deletion of the specified name and type. - */ -export const ActiveStandbyConfirm = ({ - activeEnvironment, - standbyEnvironment, - onProceed, - open, - openModal, - closeModal -}) => { - return ( - -
- - -

- This will replace the current active environment {activeEnvironment}
- with the selected standby environment {standbyEnvironment}.

- Are you sure you want to do this?

- Upon confirmation you will be taken to the task page to monitor execution. -

- -
- cancel - -
-
-
- -
- ); -}; - -export default withLogic(ActiveStandbyConfirm); diff --git a/src/components/ActiveStandbyConfirm/index.tsx b/src/components/ActiveStandbyConfirm/index.tsx new file mode 100644 index 00000000..45801e0c --- /dev/null +++ b/src/components/ActiveStandbyConfirm/index.tsx @@ -0,0 +1,62 @@ +import React, { FC } from "react"; +import Modal from "components/Modal"; +import Button from "components/Button"; +// @TODO: add this once the logic exists +import withLogic from "components/ActiveStandbyConfirm/logic"; +import { StyledActiveStandbyConfirm } from "./StyledActiveStandbyConfirm"; + +/** + * Confirms the deletion of the specified name and type. + */ +interface ActiveStandbyConfirmProps { + activeEnvironment: string; + standbyEnvironment: string; + onProceed: () => void; + open: boolean; + openModal: () => void; + closeModal: () => void; +} + +export const ActiveStandbyConfirm: FC = ({ + activeEnvironment, + standbyEnvironment, + onProceed, + open, + openModal, + closeModal, +}) => { + return ( + +
+ +
+ + +

+ This will replace the current active environment + {activeEnvironment} +
+ with the selected standby environment + {standbyEnvironment}. +
+
+ Are you sure you want to do this? +
+
+ Upon confirmation you will be taken to the task page to monitor + execution. +

+ +
+ + cancel + + +
+
+
+
+ ); +}; +// eslint-disable-next-line @typescript-eslint/no-unsafe-call +export default withLogic(ActiveStandbyConfirm); diff --git a/src/components/AddTask/StyledAddTask.tsx b/src/components/AddTask/StyledAddTask.tsx new file mode 100644 index 00000000..3b441224 --- /dev/null +++ b/src/components/AddTask/StyledAddTask.tsx @@ -0,0 +1,37 @@ +import styled from "styled-components"; +import { bp, color } from "lib/variables"; + +export const StyledNewTask = styled.div` + background: ${color.white}; + border: 1px solid ${color.lightestGrey}; + border-radius: 3px; + box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.03); + display: flex; + flex-flow: column; + margin-bottom: 32px; + padding: 32px 20px; + width: 100%; + @media ${bp.tabletUp} { + margin-bottom: 0; + } + .selectTask { + flex-grow: 1; + min-width: 220px; + } + .taskForm { + margin-top: 20px; + } +`; + +export const NewTaskWrapper = styled.div` + @media ${bp.wideUp} { + display: flex; + } + &::before { + @media ${bp.wideUp} { + content: ""; + display: block; + flex-grow: 1; + } + } +`; diff --git a/src/components/AddTask/components/Completed.js b/src/components/AddTask/components/Completed.js deleted file mode 100644 index a2b708d4..00000000 --- a/src/components/AddTask/components/Completed.js +++ /dev/null @@ -1,3 +0,0 @@ -import React from 'react'; - -export default () =>
Task added.
; diff --git a/src/components/AddTask/components/Completed.tsx b/src/components/AddTask/components/Completed.tsx new file mode 100644 index 00000000..e9f3c835 --- /dev/null +++ b/src/components/AddTask/components/Completed.tsx @@ -0,0 +1,3 @@ +import React from "react"; +const Completed = () =>
Task added.
; +export default Completed; diff --git a/src/components/AddTask/components/CustomTaskConfirm.js b/src/components/AddTask/components/CustomTaskConfirm.js deleted file mode 100644 index 92875938..00000000 --- a/src/components/AddTask/components/CustomTaskConfirm.js +++ /dev/null @@ -1,63 +0,0 @@ -import React from 'react'; -import Modal from 'components/Modal'; -import Button from 'components/Button'; -import { bp, color } from 'lib/variables'; - -import ReactMarkdown from 'react-markdown'; - -/** - * Confirm custom task - */ - export const CustomTaskConfirm = ({ - taskText, - onProceed, - open, - openModal, - closeModal, - disabled, - }) => { - return ( - -
- -
- - - - {taskText} - -
- Cancel - -
-
-
- -
- ); - }; \ No newline at end of file diff --git a/src/components/AddTask/components/CustomTaskConfirm.tsx b/src/components/AddTask/components/CustomTaskConfirm.tsx new file mode 100644 index 00000000..e0b03d40 --- /dev/null +++ b/src/components/AddTask/components/CustomTaskConfirm.tsx @@ -0,0 +1,48 @@ +import React, { FC } from "react"; +import Modal from "components/Modal"; +import Button from "components/Button"; + +import ReactMarkdown from "react-markdown"; +import { StyledCustomTaskConfirm } from "./Styles"; + +interface CustomTaskConfirmProps { + taskText: string; + onProceed: () => void; + open: boolean; + openModal: () => void; + closeModal: () => void; + disabled: boolean; +} + +/** + * Confirm custom task + */ +export const CustomTaskConfirm: FC = ({ + taskText, + onProceed, + open, + openModal, + closeModal, + disabled, +}) => { + return ( + +
+ +
+ + + {taskText} +
+ + Cancel + + +
+
+
+
+ ); +}; diff --git a/src/components/AddTask/components/DrushArchiveDump.js b/src/components/AddTask/components/DrushArchiveDump.js index 61aa6e30..fa02054a 100644 --- a/src/components/AddTask/components/DrushArchiveDump.js +++ b/src/components/AddTask/components/DrushArchiveDump.js @@ -3,7 +3,7 @@ import { Mutation } from 'react-apollo'; import gql from 'graphql-tag'; import ReactSelect from 'react-select'; import Button from 'components/Button'; -import { bp, color, fontSize } from 'lib/variables'; +import { SelectWrapper } from './Styles'; const taskDrushArchiveDump = gql` mutation taskDrushArchiveDump($environment: Int!) { @@ -30,9 +30,9 @@ const DrushArchiveDump = ({ pageEnvironment, onCompleted, onError }) => ( environment: pageEnvironment.id }} > - {(taskDrushArchiveDump, { loading, called, error, data }) => { + {(taskDrushArchiveDump) => { return ( - +
( />
- -
+ ); }} diff --git a/src/components/AddTask/components/DrushCacheClear.js b/src/components/AddTask/components/DrushCacheClear.js index 52ef354c..2c664ab7 100644 --- a/src/components/AddTask/components/DrushCacheClear.js +++ b/src/components/AddTask/components/DrushCacheClear.js @@ -3,7 +3,7 @@ import { Mutation } from 'react-apollo'; import gql from 'graphql-tag'; import ReactSelect from 'react-select'; import Button from 'components/Button'; -import { bp, color, fontSize } from 'lib/variables'; +import { SelectWrapper } from './Styles'; const taskDrushCacheClear = gql` mutation taskDrushCacheClear($environment: Int!) { @@ -30,9 +30,9 @@ const DrushCacheClear = ({ pageEnvironment, onCompleted, onError }) => ( environment: pageEnvironment.id }} > - {(taskDrushCacheClear, { loading, called, error, data }) => { + {(taskDrushCacheClear) => { return ( - +
( />
- -
+ ); }} diff --git a/src/components/AddTask/components/DrushCron.js b/src/components/AddTask/components/DrushCron.js index 1a755aeb..8db03a84 100644 --- a/src/components/AddTask/components/DrushCron.js +++ b/src/components/AddTask/components/DrushCron.js @@ -4,6 +4,7 @@ import gql from 'graphql-tag'; import ReactSelect from 'react-select'; import Button from 'components/Button'; import { bp, color, fontSize } from 'lib/variables'; +import { SelectWrapper } from './Styles'; const taskDrushCron = gql` mutation taskDrushCron($environment: Int!) { @@ -30,9 +31,9 @@ const DrushCron = ({ pageEnvironment, onCompleted, onError }) => ( environment: pageEnvironment.id }} > - {(taskDrushCron, { loading, called, error, data }) => { + {(taskDrushCron) => { return ( - +
( />
- -
+ ); }} diff --git a/src/components/AddTask/components/DrushRsyncFiles.js b/src/components/AddTask/components/DrushRsyncFiles.js index e10bffcd..e63351d4 100644 --- a/src/components/AddTask/components/DrushRsyncFiles.js +++ b/src/components/AddTask/components/DrushRsyncFiles.js @@ -4,7 +4,7 @@ import gql from 'graphql-tag'; import ReactSelect from 'react-select'; import Button from 'components/Button'; import withLogic from 'components/AddTask/components/logic'; -import { bp, color, fontSize } from 'lib/variables'; +import { SelectWrapper } from './Styles'; const taskDrushRsyncFiles = gql` mutation taskDrushRsyncFiles( @@ -45,7 +45,7 @@ const DrushRsyncFiles = ({ > {(taskDrushRsyncFiles, { loading, called, error, data }) => { return ( - +
Warning!
This task replaces files. Be careful to double check the source and @@ -97,17 +97,7 @@ const DrushRsyncFiles = ({ > Run task - - + ); }} diff --git a/src/components/AddTask/components/DrushSqlDump.js b/src/components/AddTask/components/DrushSqlDump.js index 5022682b..cdbbbaad 100644 --- a/src/components/AddTask/components/DrushSqlDump.js +++ b/src/components/AddTask/components/DrushSqlDump.js @@ -3,7 +3,7 @@ import { Mutation } from 'react-apollo'; import gql from 'graphql-tag'; import ReactSelect from 'react-select'; import Button from 'components/Button'; -import { bp, color, fontSize } from 'lib/variables'; +import { SelectWrapper } from './Styles'; const taskDrushSqlDump = gql` mutation taskDrushSqlDump($environment: Int!) { @@ -30,9 +30,9 @@ const DrushSqlDump = ({ pageEnvironment, onCompleted, onError }) => ( environment: pageEnvironment.id }} > - {(taskDrushSqlDump, { loading, called, error, data }) => { + {(taskDrushSqlDump) => { return ( - +
( />
- -
+ ); }} diff --git a/src/components/AddTask/components/DrushSqlSync.js b/src/components/AddTask/components/DrushSqlSync.js index deda5b42..d30fc774 100644 --- a/src/components/AddTask/components/DrushSqlSync.js +++ b/src/components/AddTask/components/DrushSqlSync.js @@ -4,7 +4,7 @@ import gql from 'graphql-tag'; import ReactSelect from 'react-select'; import Button from 'components/Button'; import withLogic from 'components/AddTask/components/logic'; -import { bp, color, fontSize } from 'lib/variables'; +import { SelectWrapper } from './Styles'; const taskDrushSqlSync = gql` mutation taskDrushSqlSync( @@ -45,7 +45,7 @@ const DrushSqlSync = ({ > {(taskDrushSqlSync, { loading, called, error, data }) => { return ( - +
Warning!
This task overwrites databases. Be careful to double check the @@ -97,17 +97,7 @@ const DrushSqlSync = ({ > Run task - - + ); }} diff --git a/src/components/AddTask/components/DrushUserLogin.js b/src/components/AddTask/components/DrushUserLogin.js index 25063efe..8525ff0e 100644 --- a/src/components/AddTask/components/DrushUserLogin.js +++ b/src/components/AddTask/components/DrushUserLogin.js @@ -3,7 +3,7 @@ import { Mutation } from 'react-apollo'; import gql from 'graphql-tag'; import ReactSelect from 'react-select'; import Button from 'components/Button'; -import { bp, color, fontSize } from 'lib/variables'; +import { SelectWrapper } from './Styles'; const taskDrushUserLogin = gql` mutation taskDrushUserLogin($environment: Int!) { @@ -30,9 +30,9 @@ const DrushUserLogin = ({ pageEnvironment, onCompleted, onError }) => ( environment: pageEnvironment.id }} > - {(taskDrushUserLogin, { loading, called, error, data }) => { + {(taskDrushUserLogin) => { return ( - +
( />
- -
+ ); }} diff --git a/src/components/AddTask/components/Empty.js b/src/components/AddTask/components/Empty.js deleted file mode 100644 index 421db2b9..00000000 --- a/src/components/AddTask/components/Empty.js +++ /dev/null @@ -1,4 +0,0 @@ -import React from 'react'; - -export default () => ; - diff --git a/src/components/AddTask/components/Empty.tsx b/src/components/AddTask/components/Empty.tsx new file mode 100644 index 00000000..a7499058 --- /dev/null +++ b/src/components/AddTask/components/Empty.tsx @@ -0,0 +1,3 @@ +import React from "react"; +const Empty = () => ; +export default Empty; diff --git a/src/components/AddTask/components/Error.js b/src/components/AddTask/components/Error.js deleted file mode 100644 index df622bad..00000000 --- a/src/components/AddTask/components/Error.js +++ /dev/null @@ -1,3 +0,0 @@ -import React from 'react'; - -export default () =>
Error.
; diff --git a/src/components/AddTask/components/Error.tsx b/src/components/AddTask/components/Error.tsx new file mode 100644 index 00000000..d7e37c55 --- /dev/null +++ b/src/components/AddTask/components/Error.tsx @@ -0,0 +1,3 @@ +import React from "react"; +const Error = () =>
Error.
; +export default Error; diff --git a/src/components/AddTask/components/InvokeRegisteredTask.js b/src/components/AddTask/components/InvokeRegisteredTask.js index 0e74cfe4..24d59ed5 100644 --- a/src/components/AddTask/components/InvokeRegisteredTask.js +++ b/src/components/AddTask/components/InvokeRegisteredTask.js @@ -6,6 +6,7 @@ import Button from 'components/Button'; import withState from 'recompose/withState'; import * as R from "ramda"; import { CustomTaskConfirm } from './CustomTaskConfirm'; +import { StyledRegisteredTasks } from './Styles'; const mutationInvokeRegisteredTask = gql` mutation invokeRegisteredTask($environment: Int!, $taskRegistration: Int!, $argumentValues: [AdvancedTaskDefinitionArgumentValueInput]) { @@ -59,9 +60,9 @@ const InvokeRegisteredTask = ({ pageEnvironment, selectedTask, advancedTaskArgum })(), }} > - {(mutationInvokeRegisteredTask, { loading, called, error, data }) => { + {(mutationInvokeRegisteredTask) => { return ( - +
{selectedTask.arguments && selectedTask.arguments.map((d, index) => { switch(d.type) { @@ -114,33 +115,7 @@ const InvokeRegisteredTask = ({ pageEnvironment, selectedTask, advancedTaskArgum closeModal={()=>{setIsConfirmOpen(false);}} /> || } - - + ); }} diff --git a/src/components/AddTask/components/Styles.tsx b/src/components/AddTask/components/Styles.tsx new file mode 100644 index 00000000..6ede967f --- /dev/null +++ b/src/components/AddTask/components/Styles.tsx @@ -0,0 +1,63 @@ +import styled from "styled-components"; +import { color } from "lib/variables"; + +export const StyledCustomTaskConfirm = styled.div` + .margins { + margin-right: 10px; + } + input { + margin-right: 10px; + width: 100%; + } + .environment-name { + font-weight: bold; + color: ${color.lightBlue}; + } + a.hover-state { + margin-right: 10px; + color: ${color.blue}; + } + .form-input { + display: flex; + align-items: center; + justify-content: space-between; + } +`; + +export const SelectWrapper = styled.div` + .envSelect { + margin: 10px 0; + } + .warning { + background-color: red; + color: white; + padding: 10px; + } +`; + +export const StyledRegisteredTasks = styled.div` + .envSelect { + margin: 10px 0; + } + .envText { + display: block; + margin: 10px 0; + } + .envText label { + display: block; + } + .envText input { + width: 100%; + margin-bottom: 15px; + padding: 8px 2px; + border-color: rgb(204, 204, 204); + border-radius: 4px; + border-style: solid; + border-width: 1px; + } + .warning { + background-color: red; + color: white; + padding: 10px; + } +`; diff --git a/src/components/AddTask/index.js b/src/components/AddTask/index.js index 61596732..7bb289c6 100644 --- a/src/components/AddTask/index.js +++ b/src/components/AddTask/index.js @@ -1,18 +1,18 @@ -import React from 'react'; -import ReactSelect from 'react-select'; -import withLogic from './logic'; -import DrushArchiveDump from './components/DrushArchiveDump'; -import DrushSqlDump from './components/DrushSqlDump'; -import DrushCacheClear from './components/DrushCacheClear'; -import DrushCron from './components/DrushCron'; -import DrushRsyncFiles from './components/DrushRsyncFiles'; -import DrushSqlSync from './components/DrushSqlSync'; -import DrushUserLogin from './components/DrushUserLogin'; -import Empty from './components/Empty'; -import Completed from './components/Completed'; -import Error from './components/Error'; -import InvokeRegisteredTask from './components/InvokeRegisteredTask'; -import { bp, color } from 'lib/variables'; +import React from "react"; +import ReactSelect from "react-select"; +import withLogic from "./logic"; +import DrushArchiveDump from "./components/DrushArchiveDump"; +import DrushSqlDump from "./components/DrushSqlDump"; +import DrushCacheClear from "./components/DrushCacheClear"; +import DrushCron from "./components/DrushCron"; +import DrushRsyncFiles from "./components/DrushRsyncFiles"; +import DrushSqlSync from "./components/DrushSqlSync"; +import DrushUserLogin from "./components/DrushUserLogin"; +import Empty from "./components/Empty"; +import Completed from "./components/Completed"; +import Error from "./components/Error"; +import InvokeRegisteredTask from "./components/InvokeRegisteredTask"; +import { NewTaskWrapper, StyledNewTask } from "./StyledAddTask"; /** * Perform a task on the CLI environment. @@ -24,9 +24,8 @@ const AddTask = ({ setSelectedTask, onCompleted, onError, - options + options, }) => { - const newTaskComponents = { DrushArchiveDump, DrushSqlDump, @@ -38,24 +37,26 @@ const AddTask = ({ Empty, Completed, Error, - InvokeRegisteredTask + InvokeRegisteredTask, }; const NewTask = selectedTask - ? selectedTask.value ? newTaskComponents[selectedTask.value] : newTaskComponents[selectedTask] + ? selectedTask.value + ? newTaskComponents[selectedTask.value] + : newTaskComponents[selectedTask] : newTaskComponents[Empty]; return ( -
-
+ +
o.value === selectedTask)} - onChange={selectedOption => setSelectedTask(selectedOption)} + value={options.find((o) => o.value === selectedTask)} + onChange={(selectedOption) => setSelectedTask(selectedOption)} options={options} required /> @@ -71,45 +72,8 @@ const AddTask = ({ />
)} -
-
- + +
); }; diff --git a/src/components/Backups/StyledBackups.tsx b/src/components/Backups/StyledBackups.tsx new file mode 100644 index 00000000..582eea1f --- /dev/null +++ b/src/components/Backups/StyledBackups.tsx @@ -0,0 +1,125 @@ +import styled from "styled-components"; +import { bp, color } from "lib/variables"; + +export const BackupsHeader = styled.div` + @media ${bp.wideUp} { + align-items: center; + display: flex; + margin: 0 0 14px; + padding-right: 40px; + } + @media ${bp.smallOnly} { + flex-wrap: wrap; + } + @media ${bp.tabletUp} { + margin-top: 40px; + } + + label { + display: none; + padding-left: 20px; + @media ${bp.wideUp} { + display: block; + } + + &.source { + width: 15%; + @media ${bp.extraWideUp} { + width: 10%; + } + } + + &.created { + width: 25%; + @media ${bp.extraWideUp} { + width: 20%; + } + } + + &.backupid { + width: 45%; + @media ${bp.extraWideUp} { + width: 55%; + } + } + } +`; + +export const DataTable = styled.div` + background-color: ${color.white}; + border: 1px solid ${color.lightestGrey}; + border-radius: 3px; + box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.03); + + .data-none { + border: 1px solid ${color.white}; + border-bottom: 1px solid ${color.lightestGrey}; + border-radius: 3px; + line-height: 1.5rem; + padding: 8px 0 7px 0; + text-align: center; + } + + .data-row { + border: 1px solid ${color.white}; + border-bottom: 1px solid ${color.lightestGrey}; + border-radius: 0; + line-height: 1.5rem; + padding: 8px 0 7px 0; + @media ${bp.wideUp} { + display: flex; + justify-content: space-between; + padding-right: 15px; + } + + & > div { + padding-left: 20px; + @media ${bp.wideDown} { + padding-right: 40px; + } + @media ${bp.wideUp} { + &.source { + width: 10%; + } + + &.created { + width: 20%; + } + + &.download { + align-self: center; + width: 25%; + @media ${bp.extraWideUp} { + width: 20%; + } + } + } + + &.backupid { + word-break: break-word; + overflow: hidden; + text-overflow: ellipsis; + @media ${bp.wideUp} { + width: 45%; + } + @media ${bp.extraWideUp} { + width: 50%; + } + } + } + + &:hover { + border: 1px solid ${color.brightBlue}; + } + + &:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; + } + + &:last-child { + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; + } + } +`; diff --git a/src/components/Backups/index.js b/src/components/Backups/index.js deleted file mode 100644 index 7d6147a3..00000000 --- a/src/components/Backups/index.js +++ /dev/null @@ -1,160 +0,0 @@ -import React from 'react'; -import css from 'styled-jsx/css'; -import moment from 'moment'; -import RestoreButton from 'components/RestoreButton'; -import { bp, color, fontSize } from 'lib/variables'; - -const Backups = ({ backups }) => ( -
-
- - - -
-
- {!backups.length &&
No Backups
} - {backups.map(backup => ( -
-
{backup.source}
-
- {moment - .utc(backup.created) - .local() - .format('DD MMM YYYY, HH:mm:ss (Z)')} -
- -
{backup.backupId}
-
- -
-
- ))} -
- -
-); - -export default Backups; diff --git a/src/components/Backups/index.tsx b/src/components/Backups/index.tsx new file mode 100644 index 00000000..20d6d852 --- /dev/null +++ b/src/components/Backups/index.tsx @@ -0,0 +1,49 @@ +import React, { FC } from "react"; +import moment from "moment"; +import RestoreButton from "components/RestoreButton"; +import { BackupsHeader, DataTable } from "./StyledBackups"; + +interface BackupsProps { + backups: { + source: string; + id: string; + created: string; + backupId: string; + restore: { + status: "completed" | "pending" | "failed"; + restoreLocation: string; + }; + }[]; +} + +const Backups: FC = ({ backups }) => ( +
+ + + + + + + + {!backups.length &&
No Backups
} + {backups.map((backup) => ( +
+
{backup.source}
+
+ {moment + .utc(backup.created) + .local() + .format("DD MMM YYYY, HH:mm:ss (Z)")} +
+ +
{backup.backupId}
+
+ +
+
+ ))} +
+
+); + +export default Backups; diff --git a/src/components/Box/StyledBox.tsx b/src/components/Box/StyledBox.tsx new file mode 100644 index 00000000..df6c10df --- /dev/null +++ b/src/components/Box/StyledBox.tsx @@ -0,0 +1,50 @@ +import styled, { css } from "styled-components"; +import { color } from "lib/variables"; + +export const StyledBox = styled.div<{ activeBgs?: string[] }>` + border: 1px solid ${color.lightestGrey}; + box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.03); + border-radius: 3px; + position: relative; + width: 100%; + + &::after { + bottom: 4px; + content: ""; + display: block; + height: 20px; + left: 15px; + position: absolute; + transition: box-shadow 0.5s ease; + width: calc(100% - 30px); + } + + &:hover { + border: 1px solid ${color.brightBlue}; + + &::after { + box-shadow: 0px 12px 40px 0px rgba(73, 127, 250, 0.5); + } + } + + .content { + background-color: ${color.white}; + height: 100%; + overflow: hidden; + padding: 16px 20px; + position: relative; + transition: background-image 0.5s ease-in-out; + z-index: 10; + } + ${(props) => + props.activeBgs && + css` + .content { + background-image: ${props.activeBgs[0]}; + + &:hover { + background-image: ${props.activeBgs[1]}; + } + } + `} +`; diff --git a/src/components/Box/index.js b/src/components/Box/index.js deleted file mode 100644 index 01fec04b..00000000 --- a/src/components/Box/index.js +++ /dev/null @@ -1,53 +0,0 @@ -import React from 'react'; -import { color } from 'lib/variables'; - -/** - * Displays a box, given an optional class name. - */ -const Box = ({ className = '', children }) => ( - <> -
-
{children}
-
- - -); - -export default Box; diff --git a/src/components/Box/index.tsx b/src/components/Box/index.tsx new file mode 100644 index 00000000..ea59b97a --- /dev/null +++ b/src/components/Box/index.tsx @@ -0,0 +1,19 @@ +import React, { FC } from "react"; +import { StyledBox } from "./StyledBox"; + +/** + * Displays a box, given an optional class name. + */ + +interface BoxProps { + className?: string; + children: JSX.Element[]; + activeBgs?: string[]; // if present, they act as hover backgrounds +} +const Box: FC = ({ className = "", activeBgs, children }) => ( + +
{children}
+
+); + +export default Box; diff --git a/src/components/Breadcrumbs/Breadcrumb.js b/src/components/Breadcrumbs/Breadcrumb.js deleted file mode 100644 index 420c8b97..00000000 --- a/src/components/Breadcrumbs/Breadcrumb.js +++ /dev/null @@ -1,64 +0,0 @@ -import React from 'react'; -import Router from 'next/router'; -import { bp, color, fontSize } from 'lib/variables'; - -const Breadcrumb = ({ header, title, urlObject, asPath }) => ( - <> - { - e.preventDefault(); - Router.push(urlObject, asPath); - }} - > -
-
- -

{title}

-
-
-
- - -); - -export default Breadcrumb; diff --git a/src/components/Breadcrumbs/Breadcrumb.tsx b/src/components/Breadcrumbs/Breadcrumb.tsx new file mode 100644 index 00000000..d5cf4772 --- /dev/null +++ b/src/components/Breadcrumbs/Breadcrumb.tsx @@ -0,0 +1,41 @@ +import React, { FC } from "react"; +import Router from "next/router"; +import { BreadCrumbLink, StyledBreadCrumb } from "./StyledBreadCrumb"; + +interface BreadcrumbProps { + header: string; + title: string; + urlObject: { + pathname: string; + query: { + [key: string]: string; + }; + }; + asPath: string; +} + +const Breadcrumb: FC = ({ + header, + title, + urlObject, + asPath, +}) => ( + <> + { + e.preventDefault(); + void Router.push(urlObject, asPath); + }} + > + +
+ +

{title}

+
+
+
+ +); + +export default Breadcrumb; diff --git a/src/components/Breadcrumbs/BulkDeployment.js b/src/components/Breadcrumbs/BulkDeployment.js deleted file mode 100644 index d8d9ed33..00000000 --- a/src/components/Breadcrumbs/BulkDeployment.js +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react'; -import { getLinkData } from 'components/link/BulkDeployment'; -import Breadcrumb from 'components/Breadcrumbs/Breadcrumb'; - -const BulkDeploymentBreadcrumb = ({ bulkIdSlug }) => { - const linkData = getLinkData(bulkIdSlug); - - return ( - - ); -}; - -export default BulkDeploymentBreadcrumb; diff --git a/src/components/Breadcrumbs/BulkDeployment.tsx b/src/components/Breadcrumbs/BulkDeployment.tsx new file mode 100644 index 00000000..5429d66b --- /dev/null +++ b/src/components/Breadcrumbs/BulkDeployment.tsx @@ -0,0 +1,15 @@ +import React, { FC } from "react"; +import { getLinkData } from "components/link/BulkDeployment"; +import Breadcrumb from "components/Breadcrumbs/Breadcrumb"; + +const BulkDeploymentBreadcrumb: FC<{ bulkIdSlug: string }> = ({ + bulkIdSlug, +}) => { + const linkData = getLinkData(bulkIdSlug); + + return ( + + ); +}; + +export default BulkDeploymentBreadcrumb; diff --git a/src/components/Breadcrumbs/Deployment.js b/src/components/Breadcrumbs/Deployment.js deleted file mode 100644 index 666da0ba..00000000 --- a/src/components/Breadcrumbs/Deployment.js +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react'; -import { getLinkData } from 'components/link/Deployment'; -import Breadcrumb from 'components/Breadcrumbs/Breadcrumb'; - -const DeploymentBreadcrumb = ({ deploymentSlug, environmentSlug, projectSlug }) => { - const linkData = getLinkData(deploymentSlug, environmentSlug, projectSlug); - - return ( - - ); -}; - -export default DeploymentBreadcrumb; diff --git a/src/components/Breadcrumbs/Deployment.tsx b/src/components/Breadcrumbs/Deployment.tsx new file mode 100644 index 00000000..b1f17d0d --- /dev/null +++ b/src/components/Breadcrumbs/Deployment.tsx @@ -0,0 +1,23 @@ +import React, { FC } from "react"; +import { getLinkData } from "components/link/Deployment"; +import Breadcrumb from "components/Breadcrumbs/Breadcrumb"; + +interface DeploymentBreadcrumbProps { + deploymentSlug: string; + environmentSlug: string; + projectSlug: string; +} + +const DeploymentBreadcrumb: FC = ({ + deploymentSlug, + environmentSlug, + projectSlug, +}) => { + const linkData = getLinkData(deploymentSlug, environmentSlug, projectSlug); + + return ( + + ); +}; + +export default DeploymentBreadcrumb; diff --git a/src/components/Breadcrumbs/Environment.js b/src/components/Breadcrumbs/Environment.js deleted file mode 100644 index 83aac709..00000000 --- a/src/components/Breadcrumbs/Environment.js +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react'; -import { getLinkData } from 'components/link/Environment'; -import Breadcrumb from 'components/Breadcrumbs/Breadcrumb'; - -const EnvironmentBreadcrumb = ({ environmentSlug, projectSlug }) => { - const linkData = getLinkData(environmentSlug, projectSlug); - - return ( - - ); -}; - -export default EnvironmentBreadcrumb; diff --git a/src/components/Breadcrumbs/Environment.tsx b/src/components/Breadcrumbs/Environment.tsx new file mode 100644 index 00000000..25f9e6e6 --- /dev/null +++ b/src/components/Breadcrumbs/Environment.tsx @@ -0,0 +1,21 @@ +import React, { FC } from "react"; +import { getLinkData } from "components/link/Environment"; +import Breadcrumb from "components/Breadcrumbs/Breadcrumb"; + +interface EnvironmentBreadcrumbProps { + environmentSlug: string; + projectSlug: string; +} + +const EnvironmentBreadcrumb: FC = ({ + environmentSlug, + projectSlug, +}) => { + const linkData = getLinkData(environmentSlug, projectSlug); + + return ( + + ); +}; + +export default EnvironmentBreadcrumb; diff --git a/src/components/Breadcrumbs/Problem.js b/src/components/Breadcrumbs/Problem.js deleted file mode 100644 index 27664f72..00000000 --- a/src/components/Breadcrumbs/Problem.js +++ /dev/null @@ -1,23 +0,0 @@ -import React from 'react'; -import { getLinkData } from 'components/link/Problem'; -import Breadcrumb from 'components/Breadcrumbs/Breadcrumb'; - -const EnvironmentBreadcrumb = ({ header, problemSlug, environmentSlug, projectSlug }) => { - const linkData = { - urlObject: { - pathname: '/problems', - query: { openshiftProjectName: environmentSlug } - }, - asPath: `/projects/${projectSlug}/${environmentSlug}/problems` - }; - - return ( - - ); -}; - -export default EnvironmentBreadcrumb; diff --git a/src/components/Breadcrumbs/Problem.tsx b/src/components/Breadcrumbs/Problem.tsx new file mode 100644 index 00000000..35aee9e0 --- /dev/null +++ b/src/components/Breadcrumbs/Problem.tsx @@ -0,0 +1,28 @@ +import React, { FC } from "react"; +import Breadcrumb from "components/Breadcrumbs/Breadcrumb"; + +interface EnvironmentBreadcrumbProps { + header: string; + problemSlug: string; + environmentSlug: string; + projectSlug: string; +} + +const EnvironmentBreadcrumb: FC = ({ + header, + problemSlug, + environmentSlug, + projectSlug, +}) => { + const linkData = { + urlObject: { + pathname: "/problems", + query: { openshiftProjectName: environmentSlug }, + }, + asPath: `/projects/${projectSlug}/${environmentSlug}/problems`, + }; + + return ; +}; + +export default EnvironmentBreadcrumb; diff --git a/src/components/Breadcrumbs/Project.js b/src/components/Breadcrumbs/Project.js deleted file mode 100644 index 945d474f..00000000 --- a/src/components/Breadcrumbs/Project.js +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react'; -import { getLinkData } from 'components/link/Project'; -import Breadcrumb from 'components/Breadcrumbs/Breadcrumb'; - -const ProjectBreadcrumb = ({ projectSlug }) => { - const linkData = getLinkData(projectSlug); - - return ( - - ); -}; - -export default ProjectBreadcrumb; diff --git a/src/components/Breadcrumbs/Project.tsx b/src/components/Breadcrumbs/Project.tsx new file mode 100644 index 00000000..f1c6a0a8 --- /dev/null +++ b/src/components/Breadcrumbs/Project.tsx @@ -0,0 +1,11 @@ +import React from "react"; +import { getLinkData } from "components/link/Project"; +import Breadcrumb from "components/Breadcrumbs/Breadcrumb"; + +const ProjectBreadcrumb = ({ projectSlug }: { projectSlug: string }) => { + const linkData = getLinkData(projectSlug); + + return ; +}; + +export default ProjectBreadcrumb; diff --git a/src/components/Breadcrumbs/StyledBreadCrumb.tsx b/src/components/Breadcrumbs/StyledBreadCrumb.tsx new file mode 100644 index 00000000..09c235b5 --- /dev/null +++ b/src/components/Breadcrumbs/StyledBreadCrumb.tsx @@ -0,0 +1,54 @@ +import styled from "styled-components"; +import { bp, color, fontSize } from "lib/variables"; + +export const StyledBreadCrumb = styled.div` + height: 100%; + padding: 32px 16px 0 46px; + position: relative; + @media ${bp.tabletUp} { + padding: 42px 76px 0 96px; + } + + &::after { + content: ""; + position: absolute; + top: 0; + left: 30px; + width: 1px; + height: 100%; + background: ${color.midGrey}; + transform-origin: 100% 0; + transform: skew(-12deg); + } + + h2 { + ${fontSize(28)}; + margin-bottom: 24px; + @media ${bp.tabletUp} { + ${fontSize(36)}; + margin-bottom: 38px; + } + } +`; + +export const BreadCrumbLink = styled.a` + &:first-child { + .breadcrumb { + padding-left: 0; + + &::after { + content: none; + } + } + } +`; + +export const StyledBreadcrumbsWrapper = styled.div` + background-color: ${color.white}; + border-bottom: 1px solid ${color.midGrey}; + + .breadcrumbs { + display: flex; + margin: 0 calc((100vw / 16) * 1); + } +`; diff --git a/src/components/Breadcrumbs/Task.js b/src/components/Breadcrumbs/Task.js deleted file mode 100644 index 0b4311c1..00000000 --- a/src/components/Breadcrumbs/Task.js +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react'; -import { getLinkData } from 'components/link/Task'; -import Breadcrumb from 'components/Breadcrumbs/Breadcrumb'; - -const TaskBreadcrumb = ({ taskName, taskSlug, environmentSlug, projectSlug }) => { - const linkData = getLinkData(taskSlug, environmentSlug, projectSlug); - - return ( - - ); -}; - -export default TaskBreadcrumb; diff --git a/src/components/Breadcrumbs/Task.tsx b/src/components/Breadcrumbs/Task.tsx new file mode 100644 index 00000000..faa970c1 --- /dev/null +++ b/src/components/Breadcrumbs/Task.tsx @@ -0,0 +1,23 @@ +import React, { FC } from "react"; +import { getLinkData } from "components/link/Task"; +import Breadcrumb from "components/Breadcrumbs/Breadcrumb"; + +interface TaskBreadcrumbProps { + taskName: string; + taskSlug: string; + environmentSlug: string; + projectSlug: string; +} + +const TaskBreadcrumb: FC = ({ + taskName, + taskSlug, + environmentSlug, + projectSlug, +}) => { + const linkData = getLinkData(taskSlug, environmentSlug, projectSlug); + + return ; +}; + +export default TaskBreadcrumb; diff --git a/src/components/Breadcrumbs/index.js b/src/components/Breadcrumbs/index.js deleted file mode 100644 index c18137bc..00000000 --- a/src/components/Breadcrumbs/index.js +++ /dev/null @@ -1,23 +0,0 @@ -import React from 'react'; -import { color } from 'lib/variables'; - -/** - * Displays the Project and, optionally, the Environment breadcrumbs. - */ -const Breadcrumbs = ({ children }) => ( -
-
{children}
- -
-); - -export default Breadcrumbs; diff --git a/src/components/Breadcrumbs/index.tsx b/src/components/Breadcrumbs/index.tsx new file mode 100644 index 00000000..45616386 --- /dev/null +++ b/src/components/Breadcrumbs/index.tsx @@ -0,0 +1,13 @@ +import React from "react"; +import { StyledBreadcrumbsWrapper } from "./StyledBreadCrumb"; + +/** + * Displays the Project and, optionally, the Environment breadcrumbs. + */ +const Breadcrumbs = ({ children }: { children: JSX.Element[] }) => ( + +
{children}
+
+); + +export default Breadcrumbs; diff --git a/src/components/BulkDeployments/StyledBulkDeployments.tsx b/src/components/BulkDeployments/StyledBulkDeployments.tsx new file mode 100644 index 00000000..dd2712c5 --- /dev/null +++ b/src/components/BulkDeployments/StyledBulkDeployments.tsx @@ -0,0 +1,134 @@ +import styled from "styled-components"; +import { bp, color } from "lib/variables"; + +export const BulkDeploymentsHeader = styled.div` + @media ${bp.tinyUp} { + align-items: center; + display: flex; + justify-content: space-between; + margin: 0 0 14px; + padding-right: 40px; + } + @media ${bp.smallOnly} { + flex-wrap: wrap; + } + @media ${bp.tabletUp} { + margin-top: 40px; + } + + label { + display: none; + padding-left: 20px; + width: 25%; + @media ${bp.tinyUp} { + display: block; + } + } + + .priority { + width: 10%; + } +`; + +export const BulkDeploymentsDataTable = styled.div` + background-color: ${color.white}; + border: 1px solid ${color.lightestGrey}; + border-radius: 3px; + box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.03); + + .data-none { + border: 1px solid ${color.white}; + border-bottom: 1px solid ${color.lightestGrey}; + border-radius: 3px; + line-height: 1.5rem; + padding: 8px 0 7px 0; + text-align: center; + } + + .data-row { + background-image: url("/static/images/right-arrow.svg"); + background-position: right 20px center; + background-repeat: no-repeat; + background-size: 18px 11px; + border: 1px solid ${color.white}; + border-bottom: 1px solid ${color.lightestGrey}; + border-radius: 0; + line-height: 1.5rem; + padding: 8px 0 7px 0; + @media ${bp.tinyUp} { + display: flex; + justify-content: space-between; + padding-right: 40px; + } + + & > div { + padding-left: 20px; + @media ${bp.tinyUp} { + width: 25%; + } + } + + &:hover { + border: 1px solid ${color.brightBlue}; + } + + &:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; + } + + &:nth-child(odd) { + background-color: ${color.white}; + } + + &:nth-child(even) { + background-color: ${color.lightestGrey}; + } + + &:last-child { + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; + } + + .priority { + width: 10%; + } + + .status { + @media ${bp.xs_smallOnly} { + margin-left: 20px; + } + background-position: left 7px; + background-repeat: no-repeat; + background-size: 10px 10px; + + &.new { + background-image: url("/static/images/pending.svg"); + } + + &.pending { + background-image: url("/static/images/pending.svg"); + } + + &.running { + background-image: url("/static/images/in-progress.svg"); + } + + &.cancelled { + background-image: url("/static/images/failed.svg"); + } + + &.error { + background-image: url("/static/images/failed.svg"); + } + + &.failed { + background-image: url("/static/images/failed.svg"); + } + + &.complete { + background-image: url("/static/images/successful.svg"); + } + } + } +`; diff --git a/src/components/BulkDeployments/index.js b/src/components/BulkDeployments/index.js deleted file mode 100644 index 73335f52..00000000 --- a/src/components/BulkDeployments/index.js +++ /dev/null @@ -1,208 +0,0 @@ -import React from 'react'; -import moment from 'moment'; -import ProjectLink from 'components/link/Project'; -import DeploymentsLink from 'components/link/Deployments'; -import DeploymentLink from 'components/link/Deployment'; -import CancelDeployment from 'components/CancelDeployment'; -import { getDeploymentDuration } from 'components/Deployment'; -import { bp, color, fontSize } from 'lib/variables'; - -/** - * Displays a list of deployments. - */ -const BulkDeployments = ({ deployments }) => ( -
-
- - - - - - - - -
-
- {!deployments.length &&
No Deployments
} - {deployments.map(deployment => ( -
-
- {deployment.environment.project.name} - -
-
- {deployment.environment.name} - -
-
- - {deployment.name} - -
-
{deployment.priority}
-
- {moment - .utc(deployment.created) - .local() - .format('DD MMM YYYY, HH:mm:ss (Z)')} -
-
- {deployment.status.charAt(0).toUpperCase() + - deployment.status.slice(1)} -
-
{getDeploymentDuration(deployment)}
-
- {['new', 'pending', 'queued', 'running'].includes(deployment.status) && ( - - )} -
-
- ))} -
- -
-); - -export default BulkDeployments; diff --git a/src/components/BulkDeployments/index.tsx b/src/components/BulkDeployments/index.tsx new file mode 100644 index 00000000..da235fb3 --- /dev/null +++ b/src/components/BulkDeployments/index.tsx @@ -0,0 +1,99 @@ +import React, { FC } from "react"; +import moment from "moment"; +import ProjectLink from "components/link/Project"; +import DeploymentsLink from "components/link/Deployments"; +import DeploymentLink from "components/link/Deployment"; +import CancelDeployment from "components/CancelDeployment"; +import { getDeploymentDuration } from "components/Deployment"; +import { + BulkDeploymentsDataTable, + BulkDeploymentsHeader, +} from "./StyledBulkDeployments"; + +/** + * Displays a list of deployments. + */ +interface BulkDeploymentsProps { + deployments: { + id: string; + name: string; + priority: string; + status: string; + created: string; + environment: { + openshiftProjectName: string; + name: string; + project: { + name: string; + }; + }; + }[]; +} + +const BulkDeployments: FC = ({ deployments }) => ( +
+ + + + + + + + + + + + {!deployments.length &&
No Deployments
} + {deployments.map((deployment, idx) => ( +
+
+ + {deployment.environment.project.name} + +
+
+ + {deployment.environment.name} + +
+
+ + {deployment.name} + +
+
{deployment.priority}
+
+ {moment + .utc(deployment.created) + .local() + .format("DD MMM YYYY, HH:mm:ss (Z)")} +
+
+ {deployment.status.charAt(0).toUpperCase() + + deployment.status.slice(1)} +
+
{getDeploymentDuration(deployment)}
+
+ {['new', 'pending', 'queued', 'running'].includes(deployment.status) && ( + + )} +
+
+ ))} +
+
+); + +export default BulkDeployments; diff --git a/src/components/Button/StyledButton.tsx b/src/components/Button/StyledButton.tsx new file mode 100644 index 00000000..4248fe7e --- /dev/null +++ b/src/components/Button/StyledButton.tsx @@ -0,0 +1,48 @@ +import styled, { css } from "styled-components"; +import { bp, color } from "lib/variables"; + +const sharedStyles = css` + display: inline-block; + background-color: ${color.lightBlue}; + border: none; + border-radius: 3px; + color: ${color.white}; + cursor: pointer; + padding: 10px 30px; + @media ${bp.tinyUp} { + align-self: auto; + } + + &:hover { + background-color: ${color.blue}; + } + + &.btn--disabled { + background-color: ${color.lightestGrey}; + color: ${color.darkGrey}; + cursor: not-allowed; + margin-right: 16px; + } + + &.btn-red { + background-color: ${color.lightRed}; + &.btn--disabled { + background-color: ${color.lightestGrey}; + &:hover, + &:active { + background-color: ${color.lightestGrey}; + } + } + &:hover { + background-color: ${color.red}; + } + } +`; + +export const LinkElement = styled.a` + ${sharedStyles} +`; + +export const ButtonElem = styled.button` + ${sharedStyles} +`; diff --git a/src/components/Button/index.js b/src/components/Button/index.js deleted file mode 100644 index d4f6fedf..00000000 --- a/src/components/Button/index.js +++ /dev/null @@ -1,77 +0,0 @@ -import React from 'react'; -import { bp, color } from 'lib/variables'; - -const Button = ({ action = null, href = null, disabled, children, variant }) => { - const ButtonElement = href ? 'a' : 'button'; - const onClick = action - ? action - : e => { - if (disabled) { - e.preventDefault(); - return false; - } - }; - return ( - <> - - {children} - - - - ); -}; - -export default Button; diff --git a/src/components/Button/index.tsx b/src/components/Button/index.tsx new file mode 100644 index 00000000..c2456ed7 --- /dev/null +++ b/src/components/Button/index.tsx @@ -0,0 +1,48 @@ +import React, { FC } from "react"; +import { LinkElement, ButtonElem } from "./StyledButton"; + +interface ButtonProps { + action: () => void; + href?: string; + disabled?: boolean; + children?: string | JSX.Element | JSX.Element[]; + variant?: string; +} + +const Button: FC = ({ + action = undefined, + href = undefined, + disabled, + children, + variant, +}) => { + const createClassName = () => + `${variant ? `btn-${variant}` : "btn"} ${disabled ? "btn--disabled" : ""} `; + + const onClick = action + ? action + : (e: React.MouseEvent) => { + if (disabled) { + e.preventDefault(); + return false; + } + }; + + const ButtonElement = href ? ( + + {children} + + ) : ( + + {children} + + ); + + return <>{ButtonElement}; +}; + +export default Button; diff --git a/src/components/DeployLatest/StyledDeployLatest.js b/src/components/DeployLatest/StyledDeployLatest.js new file mode 100644 index 00000000..813acaa8 --- /dev/null +++ b/src/components/DeployLatest/StyledDeployLatest.js @@ -0,0 +1,33 @@ +import styled from "styled-components"; +import { bp, color } from "lib/variables"; + +export const NewDeployment = styled.div` + align-items: center; + background: ${color.white}; + border: 1px solid ${color.lightestGrey}; + border-radius: 3px; + box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.03); + display: flex; + flex-flow: row wrap; + justify-content: space-between; + margin-bottom: 32px; + padding: 15px; + + @media ${bp.tabletUp} { + margin-bottom: 0; + } + + @media ${bp.wideUp} { + min-width: 52%; + } + + .description { + color: ${color.darkGrey}; + } + + .deploy_result { + margin-top: 20px; + text-align: right; + width: 100%; + } +`; diff --git a/src/components/DeployLatest/index.js b/src/components/DeployLatest/index.js index 3a1bd50e..9f57ff39 100644 --- a/src/components/DeployLatest/index.js +++ b/src/components/DeployLatest/index.js @@ -2,7 +2,7 @@ import React from 'react'; import { Mutation } from 'react-apollo'; import gql from 'graphql-tag'; import Button from 'components/Button'; -import { bp, color, fontSize } from 'lib/variables'; +import { NewDeployment } from './StyledDeployLatest'; const DEPLOY_ENVIRONMENT_LATEST_MUTATION = gql` mutation deployEnvironmentLatest($environmentId: Int!) { @@ -36,7 +36,7 @@ const DeployLatest = ({ pageEnvironment: environment, ...rest }) => { } return ( -
+ {!deploymentsEnabled && (
@@ -90,41 +90,7 @@ const DeployLatest = ({ pageEnvironment: environment, ...rest }) => { )} - -
+
); }; diff --git a/src/components/Deployment/StyledDeployment.js b/src/components/Deployment/StyledDeployment.js new file mode 100644 index 00000000..c543d509 --- /dev/null +++ b/src/components/Deployment/StyledDeployment.js @@ -0,0 +1,169 @@ +import styled from "styled-components"; +import { bp } from "lib/variables"; + +export const FieldWrapper = styled.div` + display: flex; + > div { + padding-left: 14px; + } + &::before { + left: calc(((-100vw / 16) * 1.5) - 28px); + + content: ""; + display: inline-block; + background-repeat: no-repeat; + height: 60px; + width: 25px; + border-right: 1px solid rgb(235, 236, 240); + padding-right: 14px; + } + @media ${bp.xs_smallUp} { + min-width: 50%; + position: relative; + width: 50%; + } + @media ${bp.desktopUp} { + min-width: 33.33%; + min-width: calc(100% / 3); + width: 33.33%; + width: calc(100% / 3); + } + @media ${bp.extraWideUp} { + min-width: 25%; + width: 25%; + } + + &.created { + &::before { + background-image: url("/static/images/created.svg"); + background-size: 17px 16px; + } + } + + &.duration { + &::before { + background-image: url("/static/images/duration.svg"); + background-size: 17px; + } + } + + &.status { + &::before { + background-size: 14px; + } + + &.new { + &::before { + background-image: url("/static/images/pending.svg"); + } + } + + &.pending { + &::before { + background-image: url("/static/images/pending.svg"); + } + } + + &.running { + &::before { + background-image: url("/static/images/in-progress.svg"); + } + } + + &.cancelled { + &::before { + background-image: url("/static/images/failed.svg"); + } + } + + &.error { + &::before { + background-image: url("/static/images/failed.svg"); + } + } + + &.failed { + &::before { + background-image: url("/static/images/failed.svg"); + } + } + + &.complete { + &::before { + background-image: url("/static/images/successful.svg"); + } + } + } + + &.bulk { + &::before { + background-image: url("/static/images/tasks-dark.svg"); + background-size: 14px; + } + } + + & > div { + width: 100%; + } + + .field { + padding-right: calc((100vw / 16) * 1); + @media ${bp.extraWideUp} { + padding-right: calc((100vw / 16) * 0.5); + } + } +`; + +export const DeploymentDetails = styled.div` + padding-inline: 5% 10%; + width: 100%; + @media ${bp.xs_smallUp} { + display: flex; + flex-wrap: wrap; + min-width: 100%; + + position: relative; + width: 100%; + } + + @media ${bp.extraWideUp} { + padding-top: 48px; + } + + h3 { + width: 100%; + @media ${bp.xs_smallUp} { + left: calc(100vw / 16); + position: absolute; + top: 32px; + } + @media ${bp.tabletUp} { + top: 48px; + } + @media ${bp.extraWideUp} { + min-width: 25%; + padding-right: 60px; + position: initial; + width: 25%; + } + } +`; + +export const ButtonRow = styled.div` + padding: 0px calc(100vw / 16) 20px; + width: 100%; + @media ${bp.xs_smallUp} { + display: flex; + flex-wrap: wrap; + min-width: 100%; + padding-left: calc(((100vw / 16) * 1.5) + 28px); + position: relative; + width: 100%; + } + @media ${bp.tabletUp} { + padding: 0 calc(100vw / 16) 20px calc(((100vw / 16) * 1.5) + 28px); + } + @media ${bp.extraWideUp} { + padding-left: calc(100vw / 16); + } +`; diff --git a/src/components/Deployment/index.js b/src/components/Deployment/index.js index b0ea5c4d..e86e501e 100644 --- a/src/components/Deployment/index.js +++ b/src/components/Deployment/index.js @@ -4,10 +4,10 @@ import momentDurationFormatSetup from 'moment-duration-format'; import CancelDeployment from 'components/CancelDeployment'; import BulkDeploymentLink from 'components/link/BulkDeployment'; import LogViewer from 'components/LogViewer'; -import { bp, color, fontSize } from 'lib/variables'; import withState from 'recompose/withState'; import withHandlers from 'recompose/withHandlers'; import Button from 'components/Button'; +import { ButtonRow, DeploymentDetails, FieldWrapper } from './StyledDeployment'; export const getDeploymentDuration = deployment => { const deploymentStart = deployment.started || deployment.created; @@ -33,8 +33,8 @@ const withParseLogsStateHandlers = withHandlers({ */ const Deployment = ({ deployment, checkedParseState, changeState }) => (
-
-
+ +
@@ -44,8 +44,8 @@ const Deployment = ({ deployment, checkedParseState, changeState }) => ( .format('DD MMM YYYY, HH:mm:ss (Z)')}
-
-
+ +
@@ -53,14 +53,14 @@ const Deployment = ({ deployment, checkedParseState, changeState }) => ( deployment.status.slice(1)}
-
-
+ +
{getDeploymentDuration(deployment)}
-
-
+ +
@@ -69,8 +69,8 @@ const Deployment = ({ deployment, checkedParseState, changeState }) => (
-
- {deployment.bulkId &&
+ + {deployment.bulkId &&
@@ -81,172 +81,14 @@ const Deployment = ({ deployment, checkedParseState, changeState }) => (
-
} -
-
- {['new', 'pending', 'queued', 'running'].includes(deployment.status) && ( + } + + + {['new', 'pending', 'queued', 'running'].includes(deployment.status) && ( )} -
+ -
); diff --git a/src/components/Deployments/StyledDeployments.tsx b/src/components/Deployments/StyledDeployments.tsx new file mode 100644 index 00000000..7da60556 --- /dev/null +++ b/src/components/Deployments/StyledDeployments.tsx @@ -0,0 +1,132 @@ +import styled from "styled-components"; +import { bp, color, fontSize } from "lib/variables"; + +export const StyledDeployments = styled.div` + .header { + @media ${bp.tinyUp} { + align-items: center; + display: flex; + justify-content: space-between; + margin: 0 0 14px; + padding-right: 40px; + } + @media ${bp.smallOnly} { + flex-wrap: wrap; + } + @media ${bp.tabletUp} { + margin-top: 40px; + } + + label { + display: none; + padding-left: 20px; + width: 25%; + @media ${bp.tinyUp} { + display: block; + } + } + } + + .bulk-label { + background-color: ${color.lightBlue}; + ${fontSize(12)}; + margin-left: 10px; + padding: 0px 5px 0px 5px; + border-radius: 3px; + box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.03); + &:hover { + background-color: ${color.blue}; + } + } + + .data-table { + background-color: ${color.white}; + border: 1px solid ${color.lightestGrey}; + border-radius: 3px; + box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.03); + + .data-none { + border: 1px solid ${color.white}; + border-bottom: 1px solid ${color.lightestGrey}; + border-radius: 3px; + line-height: 1.5rem; + padding: 8px 0 7px 0; + text-align: center; + } + + .data-row { + background-image: url("/static/images/right-arrow.svg"); + background-position: right 20px center; + background-repeat: no-repeat; + background-size: 18px 11px; + border: 1px solid ${color.white}; + border-bottom: 1px solid ${color.lightestGrey}; + border-radius: 0; + line-height: 1.5rem; + padding: 8px 0 7px 0; + @media ${bp.tinyUp} { + display: flex; + justify-content: space-between; + padding-right: 40px; + } + + & > div { + padding-left: 20px; + @media ${bp.tinyUp} { + width: 25%; + } + } + + &:hover { + border: 1px solid ${color.brightBlue}; + } + + &:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; + } + + &:last-child { + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; + } + + .status { + @media ${bp.xs_smallOnly} { + margin-left: 20px; + } + background-position: left 7px; + background-repeat: no-repeat; + background-size: 10px 10px; + + &.new { + background-image: url("/static/images/pending.svg"); + } + + &.pending { + background-image: url("/static/images/pending.svg"); + } + + &.running { + background-image: url("/static/images/in-progress.svg"); + } + + &.cancelled { + background-image: url("/static/images/failed.svg"); + } + + &.error { + background-image: url("/static/images/failed.svg"); + } + + &.failed { + background-image: url("/static/images/failed.svg"); + } + + &.complete { + background-image: url("/static/images/successful.svg"); + } + } + } + } +`; diff --git a/src/components/Deployments/index.js b/src/components/Deployments/index.js deleted file mode 100644 index d71179c0..00000000 --- a/src/components/Deployments/index.js +++ /dev/null @@ -1,183 +0,0 @@ -import React from 'react'; -import moment from 'moment'; -import DeploymentLink from 'components/link/Deployment'; -import BulkDeploymentLink from 'components/link/BulkDeployment'; -import { getDeploymentDuration } from 'components/Deployment'; -import { bp, color, fontSize } from 'lib/variables'; - -/** - * Displays a list of deployments. - */ -const Deployments = ({ deployments, environmentSlug, projectSlug }) => ( -
-
- - - - -
-
- {!deployments.length &&
No Deployments
} - {deployments.map(deployment => ( - -
-
{deployment.name}{deployment.bulkId && } -
-
- {moment - .utc(deployment.created) - .local() - .format('DD MMM YYYY, HH:mm:ss (Z)')} -
-
- {deployment.status.charAt(0).toUpperCase() + - deployment.status.slice(1)} -
-
{getDeploymentDuration(deployment)}
-
-
- ))} -
- -
-); - -export default Deployments; diff --git a/src/components/Deployments/index.tsx b/src/components/Deployments/index.tsx new file mode 100644 index 00000000..1b119282 --- /dev/null +++ b/src/components/Deployments/index.tsx @@ -0,0 +1,72 @@ +import React, { FC } from "react"; +import moment from "moment"; +import DeploymentLink from "components/link/Deployment"; +import BulkDeploymentLink from "components/link/BulkDeployment"; +import { getDeploymentDuration } from "components/Deployment"; +import { StyledDeployments } from "./StyledDeployments"; + +interface DeploymentsProps { + deployments: { + id: string; + name: string; + bulkId: string; + status: string; + created: string; + }[]; + environmentSlug: string; + projectSlug: string; +} +/** + * Displays a list of deployments. + */ +const Deployments: FC = ({ + deployments, + environmentSlug, + projectSlug, +}) => ( + +
+ + + + +
+
+ {!deployments.length &&
No Deployments
} + {deployments.map((deployment) => ( + +
+
+ {deployment.name} + {deployment.bulkId && ( + + )} +
+
+ {moment + .utc(deployment.created) + .local() + .format("DD MMM YYYY, HH:mm:ss (Z)")} +
+
+ {deployment.status.charAt(0).toUpperCase() + + deployment.status.slice(1)} +
+
{getDeploymentDuration(deployment)}
+
+
+ ))} +
+
+); + +export default Deployments; diff --git a/src/components/DeploymentsByFilter/StyledDeploymentsByFilter.js b/src/components/DeploymentsByFilter/StyledDeploymentsByFilter.js new file mode 100644 index 00000000..36c366a1 --- /dev/null +++ b/src/components/DeploymentsByFilter/StyledDeploymentsByFilter.js @@ -0,0 +1,196 @@ +import styled, { css } from "styled-components"; +import { bp, color } from "lib/variables"; + +export const Deployments = styled.div` + ${css` + .box { + margin-bottom: 7px; + + .content { + padding: 9px 20px 14px; + @media ${bp.tinyUp} { + display: flex; + } + } + } + input#filter { + width: 100%; + border: none; + padding: 10px 20px; + margin: 0; + font-style: italic; + } + + .button-sort { + color: #5f6f7a; + position: relative; + font-family: "source-code-pro", sans-serif; + font-size: 13px; + font-size: 0.8125rem; + line-height: 1.4; + text-transform: uppercase; + padding-left: 20px; + border: none; + background: none; + cursor: pointer; + + &:after { + position: absolute; + right: -18px; + top: 0; + width: 20px; + height: 20px; + } + + &.ascending:after { + content: " \\25B2"; + } + + &.descending:after { + content: " \\25BC"; + } + + &:first-child { + padding-left: 0; + } + } + + .expanded-wrapper { + padding: 20px; + background: ${color.lightestGrey}; + .fieldWrapper { + padding-bottom: 20px; + } + } + `} +`; + +export const DeploymentsHeader = styled.div` + @media ${bp.tinyUp} { + margin: 0 0 14px; + } + @media ${bp.smallOnly} { + flex-wrap: wrap; + } + @media ${bp.tabletUp} { + margin-top: 40px; + } + + display: flex; + justify-content: space-between; + + label, + button { + display: none; + padding-left: 20px; + width: 50%; + @media ${bp.tinyUp} { + display: block; + text-align: left; + } + } +`; + +export const DeploymentsDataTable = styled.div` + background-color: ${color.white}; + border: 1px solid ${color.lightestGrey}; + border-radius: 3px; + box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.03); + + .data-none { + border: 1px solid ${color.white}; + border-bottom: 1px solid ${color.lightestGrey}; + border-radius: 3px; + line-height: 1.5rem; + padding: 8px 0 7px 0; + text-align: center; + } + + .data-row { + border: 1px solid ${color.white}; + border-bottom: 1px solid ${color.lightestGrey}; + border-radius: 0; + line-height: 1.5rem; + padding: 8px 0 7px 0; + + @media ${bp.tinyUp} { + display: flex; + justify-content: space-between; + } + + & > div { + padding-left: 20px; + @media ${bp.tinyUp} { + width: 20%; + } + @media ${bp.xs_smallUp} { + width: 24%; + } + } + + &:hover { + border: 1px solid ${color.brightBlue}; + } + + &:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; + } + + &:last-child { + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; + } + + .status { + @media ${bp.smallOnly} { + background: none; + background-size: 0; + } + padding-left: 0; + margin-left: 15px; + background-position: 5px 7px; + background-repeat: no-repeat; + background-size: 10px 10px; + text-indent: 20px; + + &.active { + background-image: url("/static/images/in-progress.svg"); + } + + &.new { + background-image: url("/static/images/in-progress.svg"); + } + + &.pending { + background-image: url("/static/images/in-progress.svg"); + } + + &.running { + background-image: url("/static/images/in-progress.svg"); + } + + &.failed { + background-image: url("/static/images/failed.svg"); + } + + &.cancelled { + background-image: url("/static/images/failed.svg"); + } + + &.succeeded { + background-image: url("/static/images/successful.svg"); + } + + &.complete { + background-image: url("/static/images/successful.svg"); + } + + span { + @media ${bp.tiny_wide} { + display: none; + } + } + } + } +`; diff --git a/src/components/DeploymentsByFilter/index.js b/src/components/DeploymentsByFilter/index.js index c54c2ef8..1ea39f2d 100644 --- a/src/components/DeploymentsByFilter/index.js +++ b/src/components/DeploymentsByFilter/index.js @@ -1,29 +1,14 @@ import React, { useState } from 'react'; import moment from 'moment'; -import { bp, color } from 'lib/variables'; import useSortableData from '../../lib/withSortedItems'; -import css from 'styled-jsx/css'; -import Box from 'components/Box'; import { getDeploymentDuration } from 'components/Deployment'; import CancelDeployment from 'components/CancelDeployment'; import ProjectLink from 'components/link/Project'; import DeploymentsLink from 'components/link/Deployments'; import DeploymentLink from 'components/link/Deployment'; -import { filter } from 'ramda'; +import { Deployments, DeploymentsDataTable, DeploymentsHeader } from './StyledDeploymentsByFilter'; -const { className: boxClassName, styles: boxStyles } = css.resolve` - .box { - margin-bottom: 7px; - - .content { - padding: 9px 20px 14px; - @media ${bp.tinyUp} { - display: flex; - } - } - } -`; /** @@ -83,7 +68,7 @@ const DeploymentsByFilter = ({ deployments }) => { return ( -
+
@@ -94,7 +79,7 @@ const DeploymentsByFilter = ({ deployments }) => { onChange={handleSearchFilterChange} />
-
+ @@ -122,8 +107,8 @@ const DeploymentsByFilter = ({ deployments }) => { -
-
+ + {!sortedItems.filter(deployment => filterResults(deployment)).length &&
No deployments
} {sortedItems.filter(deployment => filterResults(deployment)).map((deployment) => { return ( @@ -174,189 +159,8 @@ const DeploymentsByFilter = ({ deployments }) => {
) })} -
- - {boxStyles} -
+ + ); }; diff --git a/src/components/Environment/StyledEnvironment.tsx b/src/components/Environment/StyledEnvironment.tsx new file mode 100644 index 00000000..7963e888 --- /dev/null +++ b/src/components/Environment/StyledEnvironment.tsx @@ -0,0 +1,102 @@ +import styled from "styled-components"; +import { bp, color } from "lib/variables"; + +export const StyledEnvironmentDetails = styled.div` + padding: 32px calc((100vw / 16) * 1); + width: 100%; + padding-left: 5%; + .btn-red { + margin-left: 64px; + } + > * { + display: flex; + align-items: flex-start; + + height: min-content; + .field { + padding-right: 0 !important; + text-align: left; + } + } + @media ${bp.xs_smallUp} { + display: flex; + flex-wrap: wrap; + min-width: 100%; + + padding-top: 48px; + width: 100%; + } + .field-wrapper { + > div { + padding-right: 36px; + } + &::before { + margin-right: 14px; + background-position-y: 15px; + } + @media ${bp.xs_smallUp} { + min-width: 50%; + position: relative; + width: 50%; + } + @media ${bp.wideUp} { + min-width: 33.33%; + width: 33.33%; + } + @media ${bp.extraWideUp} { + min-width: 25%; + width: 25%; + } + &.environmentType { + &::before { + background-image: url("/static/images/environments.svg"); + background-size: 20px 20px; + } + } + &.deployType { + &::before { + background-image: url("/static/images/branches.svg"); + background-size: 15px 20px; + } + } + &.updated { + &::before { + background-image: url("/static/images/last-deploy.svg"); + background-size: 20px 15px; + } + } + &.routes { + width: 100%; + &::before { + background-image: url("/static/images/url.svg"); + background-size: 19px 19px; + } + } + &.created { + &::before { + background-image: url("/static/images/created.svg"); + background-size: 17px 16px; + } + } + &.source { + width: 100%; + &::before { + background-image: url("/static/images/git-lab.svg"); + background-size: 19px 17px; + } + .field { + color: ${color.linkBlue}; + max-width: 100%; + overflow: hidden; + text-overflow: ellipsis; + } + } + & > div { + width: 100%; + } + + .field { + padding-right: calc((100vw / 16) * 1); + } + } +`; diff --git a/src/components/Environment/index.js b/src/components/Environment/index.js index e4f70a46..3ea9edb7 100644 --- a/src/components/Environment/index.js +++ b/src/components/Environment/index.js @@ -1,14 +1,14 @@ import React from 'react'; -import Link from 'next/link'; import moment from 'moment'; import giturlparse from 'git-url-parse'; import { Mutation } from 'react-apollo'; import DeleteEnvironmentMutation from 'lib/mutation/DeleteEnvironment'; import DeleteConfirm from 'components/DeleteConfirm'; -import { bp, color } from 'lib/variables'; import Router from 'next/router'; import ActiveStandbyConfirm from 'components/ActiveStandbyConfirm'; import SwitchActiveStandbyMutation from 'lib/mutation/SwitchActiveStandby'; +import {StyledEnvironmentDetails} from "./StyledEnvironment" + /** * Displays the environment information. @@ -20,7 +20,7 @@ const Environment = ({ environment }) => { }/${environment.deployType === 'branch' ? `tree/${environment.name}` : `pull/${environment.name.replace(/pr-/i, '')}`}`; return ( -
+
@@ -175,107 +175,7 @@ const Environment = ({ environment }) => { ); }} - -
+ ); }; diff --git a/src/components/Environments/StyledEnvironments.tsx b/src/components/Environments/StyledEnvironments.tsx new file mode 100644 index 00000000..91cbc0b2 --- /dev/null +++ b/src/components/Environments/StyledEnvironments.tsx @@ -0,0 +1,176 @@ +import styled from "styled-components"; +import { bp, color, fontSize } from "lib/variables"; + +export const StyledEnvironments = styled.div` + display: block; + @media ${bp.tinyUp} { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + + &::after { + content: ""; + flex: auto; + } + } + + .environment { + width: 100%; + @media ${bp.xs_smallUp} { + margin-left: 48px; + min-width: calc(50% - 24px); + width: calc(50% - 24px); + } + @media ${bp.xs_small} { + &:nth-child(2n + 1) { + margin-left: 0; + } + } + @media ${bp.tabletUp} { + margin-left: 0; + min-width: 100%; + width: 100%; + } + @media ${bp.desktopUp} { + margin-left: 48px; + min-width: calc(50% - 24px); + width: calc(50% - 24px); + } + @media ${bp.desktop_extrawide} { + &:nth-child(2n + 1) { + margin-left: 0; + } + } + @media ${bp.extraWideUp} { + min-width: calc((100% / 3) - 32px); + width: calc((100% / 3) - 32px); + &:nth-child(3n + 1) { + margin-left: 0; + } + } + } + + .productionLabel { + color: ${color.green}; + ${fontSize(13)}; + position: absolute; + right: -38px; + text-transform: uppercase; + top: 50%; + transform: translateY(-50%) rotate(-90deg); + + &::after { + border-top: 1px solid ${color.grey}; + content: ""; + display: block; + position: relative; + right: 12px; + top: -12px; + width: calc(100% + 26px); + z-index: -1; + } + + span { + background-color: ${color.white}; + padding: 0 16px; + z-index: 0; + } + } + + .standbyLabel { + color: ${color.blue}; + ${fontSize(13)}; + position: absolute; + right: 0px; + text-transform: uppercase; + top: 50%; + transform: translateY(-50%) rotate(-90deg); + + &::after { + border-top: 1px solid ${color.grey}; + content: ""; + display: block; + position: relative; + right: 12px; + top: -12px; + width: calc(100% + 26px); + z-index: -1; + } + + span { + background-color: ${color.white}; + padding: 0 16px; + z-index: 0; + } + } + + .activeLabel { + color: ${color.green}; + ${fontSize(13)}; + position: absolute; + right: 0px; + text-transform: uppercase; + top: 50%; + transform: translateY(-50%) rotate(-90deg); + + &::after { + border-top: 1px solid ${color.grey}; + content: ""; + display: block; + position: relative; + right: 12px; + top: -12px; + width: calc(100% + 26px); + z-index: -1; + } + + span { + background-color: ${color.white}; + padding: 0 16px; + z-index: 0; + } + } + + label { + ${fontSize(10)}; + background-color: ${color.lightestGrey}; + border-bottom-right-radius: 15px; + border-top-right-radius: 15px; + margin-left: -25px; + padding: 3px 15px 2px; + } + + .clusterLabel { + ${fontSize(10)}; + background-color: ${color.lightestGrey}; + border-bottom-right-radius: 15px; + border-top-right-radius: 15px; + margin-left: -25px; + padding: 3px 15px 2px; + } + + .regionLabel { + ${fontSize(10)}; + background-color: ${color.lightestGrey}; + border-bottom-right-radius: 15px; + border-top-right-radius: 15px; + margin-left: -25px; + padding: 3px 15px 2px; + } + + .routeLink { + position: absolute; + top: 8px; + right: 50px; + } + .box { + margin-bottom: 35px; + .content { + background-position: right 32px bottom -6px; + background-repeat: no-repeat; + background-size: 40px 50px; + min-height: 122px; + padding: 10px 15px; + } + } +`; diff --git a/src/components/Environments/index.js b/src/components/Environments/index.js index 1dffbcfa..4d59727f 100644 --- a/src/components/Environments/index.js +++ b/src/components/Environments/index.js @@ -1,10 +1,9 @@ -import React, { useState } from 'react'; +import React from 'react'; import * as R from 'ramda'; -import css from 'styled-jsx/css'; import EnvironmentLink from 'components/link/Environment'; import Box from 'components/Box'; -import { bp, color, fontSize } from 'lib/variables'; import { makeSafe } from 'lib/util'; +import {StyledEnvironments} from "./StyledEnvironments"; const bgImages = { branch: { @@ -21,48 +20,25 @@ const bgImages = { } }; -const { className: boxClassName, styles: boxStyles } = css.resolve` - .box { - margin-bottom: 35px; - - .content { - background-position: right 32px bottom -6px; - background-repeat: no-repeat; - background-size: 40px 50px; - min-height: 122px; - padding: 10px 15px; - } - } -`; - const Environments = ({ environments = [], project }) => { if (environments.length === 0) { return null; } return ( -
+ {environments.map(environment => { const bgImage = R.propOr( bgImages.none, environment.deployType, bgImages ); - const { className: bgClassName, styles: bgStyles } = css.resolve` - .content { - background-image: ${bgImage.normal}; - - &:hover { - background-image: ${bgImage.hover}; - } - } - `; const activeEnvironment = project.productionEnvironment && project.standbyProductionEnvironment && project.productionEnvironment == makeSafe(environment.name); const standbyEnvironment = project.productionEnvironment && project.standbyProductionEnvironment && project.standbyProductionEnvironment == makeSafe(environment.name); return (
- + { : '' } - {bgStyles}
); })} - - {boxStyles} -
+ ); }; diff --git a/src/components/Facts/StyledFacts.js b/src/components/Facts/StyledFacts.js new file mode 100644 index 00000000..a10d9c69 --- /dev/null +++ b/src/components/Facts/StyledFacts.js @@ -0,0 +1,132 @@ +import styled from "styled-components"; +import { bp, color } from "lib/variables"; + +export const StyledFacts = styled.div` + input#filter { + width: 100%; + border: none; + padding: 10px 20px; + margin: 0; + font-style: italic; + } + + .button-sort { + color: #5f6f7a; + position: relative; + font-family: "source-code-pro", sans-serif; + font-size: 13px; + font-size: 0.8125rem; + line-height: 1.4; + text-transform: uppercase; + padding-left: 20px; + border: none; + background: none; + cursor: pointer; + + &:after { + position: absolute; + right: -18px; + top: 0; + width: 20px; + height: 20px; + } + + &.ascending:after { + content: " \\25B2"; + } + + &.descending:after { + content: " \\25BC"; + } + + &:first-child { + padding-left: 0; + } + } + + .expanded-wrapper { + padding: 20px; + background: ${color.lightestGrey}; + .fieldWrapper { + padding-bottom: 20px; + } + } + + .data-row { + display: flex; + justify-content: space-between; + border: 1px solid ${color.white}; + border-bottom: 1px solid ${color.lightestGrey}; + border-radius: 0; + line-height: 1.5rem; + + @media ${bp.smallOnly} { + padding: 10px; + } + + @media ${bp.wideUp} { + padding: 15px 0; + } + + &:hover { + border: 1px solid ${color.brightBlue}; + } + + &:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; + } + + &:last-child { + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; + } + + .col { + @media ${bp.wideUp} { + padding: 0 20px; + } + width: 33.33%; + } + + .col-2 { + text-align: center; + } + + .col-3 { + text-align: end; + } + + .description { + font-style: italic; + font-size: 12px; + } + } + + .row-heading { + background: ${color.white}; + } +`; + +export const Header = styled.div` + @media ${bp.smallOnly} { + flex-wrap: wrap; + margin: 10px; + } + @media ${bp.wideUp} { + align-items: center; + display: flex; + margin: 15px 20px 10px; + } + + display: flex; + justify-content: space-between; + + label { + display: none; + padding-left: 20px; + @media ${bp.wideUp} { + display: block; + } + } +`; diff --git a/src/components/Facts/index.js b/src/components/Facts/index.js index cdba14fb..70c5b653 100644 --- a/src/components/Facts/index.js +++ b/src/components/Facts/index.js @@ -1,6 +1,6 @@ import React, { useState } from 'react'; -import { bp, color, fontSize } from 'lib/variables'; import useSortableData from '../../lib/withSortedItems'; +import { Header, StyledFacts } from './StyledFacts'; const Facts = ({ facts }) => { const { sortedItems, getClassNamesFor, requestSort } = useSortableData(facts, {key: 'name', direction: 'ascending'}); @@ -36,14 +36,14 @@ const Facts = ({ facts }) => { }; return ( -
+
-
+
-
+
{!sortedItems.filter(fact => filterResults(fact)).length &&
No Facts
} {sortedItems.filter(fact => filterResults(fact)).map((fact) => { @@ -81,136 +81,7 @@ const Facts = ({ facts }) => { ); })}
- -
+ ); }; diff --git a/src/components/Filters/StyledFilters.js b/src/components/Filters/StyledFilters.js new file mode 100644 index 00000000..3eb90310 --- /dev/null +++ b/src/components/Filters/StyledFilters.js @@ -0,0 +1,21 @@ +import styled from "styled-components"; +import { bp } from "lib/variables"; + +export const FiltersTitle = styled.label` + margin: auto 0; + @media ${bp.wideUp} { + margin: auto 15px; + } +`; + +export const Filter = styled.div` + margin-bottom: 1em; + + @media ${bp.wideUp} { + display: flex; + flex-direction: row; + justify-content: space-between; + flex: 2 1 auto; + margin: 0; + } +`; diff --git a/src/components/Filters/index.js b/src/components/Filters/index.js index e3ad4278..35860ce8 100644 --- a/src/components/Filters/index.js +++ b/src/components/Filters/index.js @@ -1,7 +1,6 @@ import React from 'react'; import Select from 'react-select'; -import { bp } from 'lib/variables'; -import { color } from 'lib/variables'; +import { Filter, FiltersTitle } from './StyledFilters'; /** * Displays a select filter and sends state back to parent in a callback. @@ -31,8 +30,8 @@ const SelectFilter = ({ title, options, onFilterChange, loading, defaultValue, i }; return ( -
- + + {title}
-
+ -
+
{!sortedItems.filter(item => filterResults(item)).length &&
No Problems
} {sortedItems.filter(item => filterResults(item)).map((item) => { @@ -144,183 +144,7 @@ const ProblemsByIdentifier = ({ problems }) => { ); })}
- -
+ ); }; diff --git a/src/components/ProblemsByProject/StyledProblemsByProject.tsx b/src/components/ProblemsByProject/StyledProblemsByProject.tsx new file mode 100644 index 00000000..d7871101 --- /dev/null +++ b/src/components/ProblemsByProject/StyledProblemsByProject.tsx @@ -0,0 +1,136 @@ +import styled from "styled-components"; +import { bp, color } from "lib/variables"; + +export const StyledProblemsByProject = styled.div` + .header { + @media ${bp.wideUp} { + display: flex; + margin: 0 0 14px; + } + @media ${bp.smallOnly} { + flex-wrap: wrap; + } + @media ${bp.tabletUp} { + margin-top: 20px; + } + + display: flex; + + label { + display: none; + padding-left: 20px; + @media ${bp.wideUp} { + display: block; + } + } + } + + input#filter { + width: 100%; + border: none; + padding: 10px 20px; + margin: 0; + } + + .button-sort { + color: ${color.darkGrey}; + font-family: "source-code-pro", sans-serif; + font-size: 13px; + font-size: 0.8125rem; + line-height: 1.4; + text-transform: uppercase; + border: none; + background: none; + cursor: pointer; + min-width: 16.66%; + + &.ascending:after { + content: " \\25B2"; + } + + &.descending:after { + content: " \\25BC"; + } + } + + .more { + background: none; + border: none; + color: ${color.brightBlue}; + padding: 5px 0; + text-transform: uppercase; + font-size: 0.8em; + cursor: pointer; + } + + .data-table { + background-color: ${color.white}; + border: 1px solid ${color.lightestGrey}; + border-radius: 3px; + box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.03); + + .data-none { + border: 1px solid ${color.white}; + border-bottom: 1px solid ${color.lightestGrey}; + border-radius: 3px; + line-height: 1.5rem; + padding: 8px 0 7px 0; + text-align: center; + } + + .data-row { + border: 1px solid ${color.white}; + border-bottom: 1px solid ${color.lightestGrey}; + border-radius: 0; + line-height: 1.5rem; + padding: 8px 0 7px 0; + @media ${bp.wideUp} { + display: flex; + justify-content: space-between; + padding-right: 15px; + } + + & > div { + padding-left: 20px; + @media ${bp.wideDown} { + padding-right: 40px; + } + @media ${bp.wideUp} { + } + } + + &:hover { + border: 1px solid ${color.brightBlue}; + } + + &:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; + } + + &:last-child { + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; + } + } + + .row-heading { + cursor: pointer; + } + } + + .data { + padding: 20px; + margin: 0; + color: ${color.white}; + font: 0.8rem Inconsolata, monospace; + line-height: 2; + transition: all 0.6s ease-in-out; + padding: 20px; + width: 100%; + + .key { + color: ${color.brightBlue}; + } + } +`; diff --git a/src/components/ProblemsByProject/index.js b/src/components/ProblemsByProject/index.js index fb5fe5b5..32516444 100644 --- a/src/components/ProblemsByProject/index.js +++ b/src/components/ProblemsByProject/index.js @@ -1,7 +1,7 @@ import React, { useState } from 'react'; -import { bp, color, fontSize } from 'lib/variables'; import useSortableData from './sortedItems'; import Problem from 'components/Problem'; +import {StyledProblemsByProject} from "./StyledProblemsByProject"; const ProblemsByProject = ({ problems, minified }) => { const { sortedItems, getClassNamesFor, requestSort } = useSortableData(problems, {key: 'id', direction: 'ascending'}); @@ -36,7 +36,7 @@ const ProblemsByProject = ({ problems, minified }) => { }; return ( -
+
{ ))}
- -
+ ); }; diff --git a/src/components/ProjectDetailsSidebar/StyledProjectSidebar.tsx b/src/components/ProjectDetailsSidebar/StyledProjectSidebar.tsx new file mode 100644 index 00000000..6d7bdfcb --- /dev/null +++ b/src/components/ProjectDetailsSidebar/StyledProjectSidebar.tsx @@ -0,0 +1,194 @@ +import styled from "styled-components"; +import { bp, color, fontSize } from "lib/variables"; + +export const ProjectDetails = styled.div` + display: flex; + flex-direction: column; + padding: 48px 24px 48px clamp(5%, 4vw, 20%); + + @media ${bp.xlWideDown} { + padding: 48px 24px 48px clamp(5%, 1vw, 10%); + } + width: 100%; +`; + +export const FieldWrapper = styled.div` + width: clamp(23rem, 95%, 24.375rem); + overflow: hidden; + white-space: nowrap; + display: flex; + justify-content: flex-start; + align-items: flex-start; + + > div { + margin-left: 14px; + } + + &::before { + min-width: 25px; + } + + &.created { + &:before { + background-image: url("/static/images/created.svg"); + } + } + &.origin { + width: 100%; + > div { + width: 100%; + } + .field { + color: ${color.linkBlue}; + max-width: 90%; + overflow: hidden; + text-overflow: ellipsis; + width: 85%; + } + + &:before { + background-image: url("/static/images/git-lab.svg"); + } + + & > div { + max-width: 100%; + } + } + + &.giturl { + margin-bottom: 24px; + overflow: visible; + @media ${bp.xs_smallUp} { + margin-bottom: 36px; + } + + & > div { + max-width: 100%; + position: relative; + } + + &:before { + background-image: url("/static/images/git.svg"); + height: 84px; + } + + .copy-field { + display: flex; + width: 100%; + overflow: visible; + transform: translateX(-13px); + } + .field { + background-color: ${color.white}; + border-right: 28px solid ${color.white}; + color: ${color.darkGrey}; + font-family: "source-code-pro", sans-serif; + ${fontSize(13)}; + margin-top: 6px; + overflow: hidden; + padding: 6px 13px 6px 15px; + position: relative; + text-overflow: ellipsis; + } + + .copy { + background: url("/static/images/copy.svg") center center no-repeat + ${color.white}; + background-size: 16px; + border-left: 1px solid ${color.lightestGrey}; + bottom: 0; + height: 33px; + position: absolute; + right: 0; + width: 37px; + transition: all 0.5s; + + &:hover { + background-color: ${color.midGrey}; + cursor: pointer; + } + } + + .copied { + background-color: ${color.midGrey}; + ${fontSize(9, 16)}; + border-radius: 3px; + padding: 0 4px; + position: absolute; + right: 0; + text-transform: uppercase; + top: 20px; + transition: top 0.5s, opacity 0.75s ease-in; + } + } + + &.branches { + &:before { + background-image: url("/static/images/branches.svg"); + } + + .field { + white-space: break-spaces; + } + } + + &.prs { + &:before { + background-image: url("/static/images/pull-request.svg"); + } + } + + &.envlimit { + &:before { + background-image: url("/static/images/environments-in-use.svg"); + } + } + + &.target { + &:before { + background-image: url("/static/images/target.svg"); + } + + .field1 { + margin-left: 10px; + max-width: 100%; + white-space: break-spaces; + } + + .field2 { + margin-left: 20px; + max-width: 100%; + white-space: break-spaces; + } + } + + &.members { + &:before { + background-image: url("/static/images/members.svg"); + } + + & > div { + display: block; + width: 100%; + } + + .field { + .member { + margin-bottom: 5px; + + .name { + font-weight: 400; + display: inline-block; + float: left; + } + + .email { + overflow: hidden; + text-overflow: ellipsis; + display: inline-block; + float: left; + } + } + } + } +`; diff --git a/src/components/ProjectDetailsSidebar/index.js b/src/components/ProjectDetailsSidebar/index.js index c5753f1e..1a38da96 100644 --- a/src/components/ProjectDetailsSidebar/index.js +++ b/src/components/ProjectDetailsSidebar/index.js @@ -4,7 +4,9 @@ import { CopyToClipboard } from 'react-copy-to-clipboard'; import moment from 'moment'; import giturlparse from 'git-url-parse'; import Environments from 'components/Environments'; -import { bp, color, fontSize } from 'lib/variables'; + + +import {FieldWrapper, ProjectDetails} from "./StyledProjectSidebar" const Project = ({ project }) => { const [copied, setCopied] = useState(false); @@ -19,8 +21,8 @@ const Project = ({ project }) => { const projectUsesDeployTargets = project.deployTargetConfigs.length > 0; return ( -
-
+ +
@@ -30,8 +32,8 @@ const Project = ({ project }) => { .format('DD MMM YYYY, HH:mm:ss (Z)')}
-
-
+ +
@@ -44,14 +46,15 @@ const Project = ({ project }) => {
-
-
+ +
+
{project.gitUrl}
Copied @@ -66,25 +69,26 @@ const Project = ({ project }) => { > +
-
+ {!projectUsesDeployTargets && ( -
+
{project.branches}
-
+ )} {!projectUsesDeployTargets && ( -
+
{project.pullrequests}
-
+ )} -
+
@@ -92,9 +96,9 @@ const Project = ({ project }) => { {R.defaultTo('unlimited', project.developmentEnvironmentsLimit)}
-
+ {projectUsesDeployTargets && ( -
+
{project.deployTargetConfigs.map(depTarget => ( @@ -111,188 +115,9 @@ const Project = ({ project }) => {
))}
-
+ )} - - -
+ ); }; diff --git a/src/components/Projects/StyledProjects.tsx b/src/components/Projects/StyledProjects.tsx new file mode 100644 index 00000000..0d9cfd3d --- /dev/null +++ b/src/components/Projects/StyledProjects.tsx @@ -0,0 +1,95 @@ +import styled from "styled-components"; +import { bp, color } from "lib/variables"; + +export const ProjectsPage = styled.section` + .box { + margin-bottom: 7px; + + & > .content { + padding: 9px 20px 14px; + @media ${bp.tinyUp} { + display: flex; + } + } + } +`; + +export const ProjectsHeader = styled.div` + @media ${bp.tinyUp} { + align-items: center; + display: flex; + justify-content: flex-end; + margin: 0 0 14px; + } + @media ${bp.smallOnly} { + flex-wrap: wrap; + } + @media ${bp.tabletUp} { + margin-top: 40px; + } + label { + display: none; + padding-left: 20px; + width: 50%; + @media ${bp.tinyUp} { + display: block; + } + &:nth-child(2) { + @media ${bp.tabletUp} { + width: 20%; + } + } + } +`; + +export const SearchInput = styled.input` + background: url("/static/images/search.png") 12px center no-repeat + ${color.white}; + background-size: 14px; + border: 1px solid ${color.midGrey}; + height: 40px; + padding: 0 12px 0 34px; + transition: border 0.5s ease; + @media ${bp.smallOnly} { + margin-bottom: 20px; + order: -1; + width: 100%; + } + @media ${bp.tabletUp} { + width: 30%; + } + &::placeholder { + color: ${color.midGrey}; + } + &:focus { + border: 1px solid ${color.brightBlue}; + outline: none; + } +`; + +export const StyledProject = styled.div` + font-weight: normal; + + @media ${bp.tinyUp} { + width: 50%; + } +`; + +export const StyledRoute = styled.div` + color: ${color.linkBlue}; + line-height: 24px; +`; + +export const StyledCustomer = styled.div` + color: ${color.darkGrey}; + padding-top: 16px; + @media ${bp.tinyUp} { + padding-left: 20px; + } + @media ${bp.wideUp} { + width: calc((100vw / 16) * 7); + } + @media ${bp.extraWideUp} { + width: calc((100vw / 16) * 6); + } +`; diff --git a/src/components/Projects/index.js b/src/components/Projects/index.js index 67b8f271..0ffbd194 100644 --- a/src/components/Projects/index.js +++ b/src/components/Projects/index.js @@ -1,35 +1,28 @@ -import React, { useState } from 'react'; -import Link from 'next/link'; -import css from 'styled-jsx/css'; -import Highlighter from 'react-highlight-words'; -import ProjectLink from 'components/link/Project'; -import Box from 'components/Box'; -import { bp, color, fontSize } from 'lib/variables'; - -const { className: boxClassName, styles: boxStyles } = css.resolve` - .box { - margin-bottom: 7px; - - .content { - padding: 9px 20px 14px; - @media ${bp.tinyUp} { - display: flex; - } - } - } -`; +import React, { FC, useState } from "react"; +import Link from "next/link"; +import Highlighter from "react-highlight-words"; +import ProjectLink from "components/link/Project"; +import Box from "components/Box"; +import { + ProjectsHeader, + SearchInput, + StyledProject, + StyledCustomer, + StyledRoute, + ProjectsPage, +} from "./StyledProjects"; /** * The primary list of projects. */ const Projects = ({ projects = [] }) => { - const [searchInput, setSearchInput] = useState(''); + const [searchInput, setSearchInput] = useState(""); - const filteredProjects = projects.filter(key => { + const filteredProjects = projects.filter((key) => { const sortByName = key.name .toLowerCase() .includes(searchInput.trim().toLowerCase()); - let sortByUrl = ''; + let sortByUrl = ""; if (key.environments[0] !== void 0) { if (key.environments[0].route !== null) { sortByUrl = key.environments[0].route @@ -37,44 +30,48 @@ const Projects = ({ projects = [] }) => { .includes(searchInput.trim().toLowerCase()); } } - return ['name', 'environments', '__typename'].includes(key) + return ["name", "environments", "__typename"].includes(key) ? false : (true && sortByName) || sortByUrl; }); return ( - <> -
- + + + - setSearchInput(e.target.value)} + onChange={(e) => setSearchInput(e.target.value)} placeholder="Type to search" disabled={projects.length === 0} /> -
+ {!projects.length && ( - +

No projects

)} - {(searchInput && !filteredProjects.length) && ( - + {searchInput && !filteredProjects.length && ( +

No projects matching "{searchInput}"

)} - {filteredProjects.map(project => ( + {filteredProjects.map((project) => ( - -
+ +

{ textToHighlight={project.name} />

-
+ {project.environments.map((environment, index) => ( { autoEscape={true} textToHighlight={ environment.route - ? environment.route.replace(/^https?\:\/\//i, '') - : '' + ? environment.route.replace(/^https?\:\/\//i, "") + : "" } /> ))} -
-
-
- -
+ + +
))} - - {boxStyles} - + ); }; diff --git a/src/components/ResultsLimited/StyledResultsLimited.tsx b/src/components/ResultsLimited/StyledResultsLimited.tsx new file mode 100644 index 00000000..f5773568 --- /dev/null +++ b/src/components/ResultsLimited/StyledResultsLimited.tsx @@ -0,0 +1,22 @@ +import styled from "styled-components"; +import { color } from "lib/variables"; + +export const StyledResultsLimited = styled.div` + .results { + padding: 8px; + display: flex; + justify-content: right; + } + .description { + background: ${color.white}; + border: 1px solid ${color.lightestGrey}; + border-radius: 3px; + box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.03); + justify-content: space-between; + margin-top: 8px; + padding: 8px; + display: flex; + justify-content: center; + color: ${color.darkGrey}; + } +`; diff --git a/src/components/ResultsLimited/index.js b/src/components/ResultsLimited/index.js index 8116687b..f3c0f06e 100644 --- a/src/components/ResultsLimited/index.js +++ b/src/components/ResultsLimited/index.js @@ -1,6 +1,6 @@ import React from 'react'; import ReactSelect from 'react-select'; -import { color } from 'lib/variables'; +import {StyledResultsLimited} from "./StyledResultsLimited" const options = [ { value: '10', label: '10' }, @@ -10,7 +10,6 @@ const options = [ { value: '-1', label: 'all' } ] const handleChange = (values) => { - console.log(values); window.location.href = (window.location.href.split('?')[0]) + "?limit="+values.value; }; const customStyles = { @@ -27,7 +26,7 @@ const customStyles = { /** * Button that deploys the latest environment. */ -const ResultsLimited = ({ limit, results, message }) => { +const ResultsLimited = ({ limit, message }) => { return ( // if the number of results = the limit, then display a message that the results are limited @@ -35,7 +34,7 @@ const ResultsLimited = ({ limit, results, message }) => { // the number of results will never be more than the limit (see deployments.js, backups.js, and tasks.js) // as the limit is set here and the results returned will either be less than or equal to this limit, never more ( -
+ {limit &&
@@ -54,31 +53,7 @@ const ResultsLimited = ({ limit, results, message }) => { required />}
- -
+ )); }; diff --git a/src/components/SshKeys/StyledKeys.tsx b/src/components/SshKeys/StyledKeys.tsx new file mode 100644 index 00000000..c9c044c6 --- /dev/null +++ b/src/components/SshKeys/StyledKeys.tsx @@ -0,0 +1,139 @@ +import styled from "styled-components"; +import { bp, color } from "lib/variables"; + +export const StyledKeys = styled.div` + label.fingerprint, + div.fingerprint { + flex: 4; + align-self: center; + } + label.type, + div.type { + flex: 2; + align-self: center; + } + label.name, + div.name { + flex: 1.8; + } + + label.created, + div.created { + flex: 2; + } + + .header { + padding-right: calc(15% + 8px); + display: flex; + + @media ${bp.wideUp} { + align-items: center; + display: flex; + margin: 0 0 14px; + } + @media ${bp.smallOnly} { + flex-wrap: wrap; + } + @media ${bp.tabletUp} { + margin-top: 40px; + } + + label { + display: none; + padding-left: 20px; + @media ${bp.wideUp} { + display: block; + } + } + } + + .data-table { + background-color: ${color.white}; + border: 1px solid ${color.lightestGrey}; + border-radius: 3px; + box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.03); + + .data-none { + border: 1px solid ${color.white}; + border-bottom: 1px solid ${color.lightestGrey}; + border-radius: 3px; + line-height: 1.5rem; + padding: 8px 0 7px 0; + text-align: center; + } + + .data-row { + border: 1px solid ${color.white}; + border-bottom: 1px solid ${color.lightestGrey}; + border-radius: 0; + line-height: 1.5rem; + padding: 8px 0 7px 0; + + > div { + word-wrap: break-word; + word-break: break-all; + } + @media ${bp.wideUp} { + display: flex; + justify-content: space-between; + padding-right: 15px; + } + + & > div { + padding-left: 20px; + @media ${bp.wideDown} { + padding-right: 40px; + } + + @media ${bp.wideUp} { + &.name, + &.type, + &.fingerprint, + &.created { + align-self: center; + } + &.name { + overflow-wrap: break-word; + } + + &.fingerprint { + overflow-wrap: break-word; + } + &.delete { + width: 15% !important; + padding: 0; + display: flex; + justify-content: center; + align-items: center; + } + } + + &.created { + word-break: break-word; + overflow: hidden; + text-overflow: ellipsis; + @media ${bp.wideUp} { + width: 45%; + } + @media ${bp.extraWideUp} { + width: 50%; + } + } + } + + &:hover { + border: 1px solid ${color.brightBlue}; + } + + &:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; + } + + &:last-child { + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; + } + } + } +`; diff --git a/src/components/SshKeys/index.js b/src/components/SshKeys/index.js index 2846fea6..27e41e46 100644 --- a/src/components/SshKeys/index.js +++ b/src/components/SshKeys/index.js @@ -1,16 +1,15 @@ import React from 'react'; -import css from 'styled-jsx/css'; import moment from 'moment'; import Button from 'components/Button'; import { Mutation } from 'react-apollo'; import DeleteSshKeyById from 'lib/mutation/DeleteSshKeyById'; import Me from 'lib/query/Me'; -import { bp, color, fontSize } from 'lib/variables'; +import {StyledKeys} from "./StyledKeys" const SshKeys = ({me: { id, email, sshKeys: keys }}) => { return( -
+
@@ -55,157 +54,7 @@ const SshKeys = ({me: { id, email, sshKeys: keys }}) => {
))}
- - -
+ ); }; diff --git a/src/components/Task/StyledTask.tsx b/src/components/Task/StyledTask.tsx new file mode 100644 index 00000000..f6d70966 --- /dev/null +++ b/src/components/Task/StyledTask.tsx @@ -0,0 +1,158 @@ +import styled from "styled-components"; +import { bp } from "lib/variables"; + +export const StyledTask = styled.div` + .details { + width: 100%; + padding-top: 48px; + margin-inline: 7% 10%; + @media ${bp.xs_smallUp} { + display: flex; + flex-wrap: wrap; + min-width: 100%; + position: relative; + width: 100%; + } + h3 { + width: 100%; + @media ${bp.xs_smallUp} { + left: calc(100vw / 16); + position: absolute; + top: 32px; + } + @media ${bp.tabletUp} { + top: 48px; + } + @media ${bp.extraWideUp} { + margin-left: calc(((-100vw / 16) / 1.25) + 28px); + position: initial; + } + } + + .field-wrapper { + & > div:first-of-type { + margin-left: 14px; + } + &::before { + left: calc(((-100vw / 16) * 1.5) - 28px); + } + @media ${bp.xs_smallUp} { + min-width: 50%; + position: relative; + width: 50%; + } + @media ${bp.desktopUp} { + min-width: 33.33%; + min-width: calc(100% / 3); + width: 33.33%; + width: calc(100% / 3); + } + @media ${bp.extraWideUp} { + min-width: 25%; + width: 25%; + } + + &.created { + &::before { + background-image: url("/static/images/created.svg"); + background-size: 17px 16px; + } + } + + &.command { + &::before { + background-image: url("/static/images/command.svg"); + background-size: 16px; + } + } + + &.service { + &::before { + background-image: url("/static/images/service.svg"); + background-size: 16px; + } + } + + &.status { + &::before { + background-size: 14px; + } + + &.active { + &::before { + background-image: url("/static/images/in-progress.svg"); + } + } + + &.new { + &::before { + background-image: url("/static/images/in-progress.svg"); + } + } + + &.pending { + &::before { + background-image: url("/static/images/in-progress.svg"); + } + } + + &.running { + &::before { + background-image: url("/static/images/in-progress.svg"); + } + } + + &.failed { + &::before { + background-image: url("/static/images/failed.svg"); + } + } + + &.cancelled { + &::before { + background-image: url("/static/images/failed.svg"); + } + } + + &.succeeded { + &::before { + background-image: url("/static/images/successful.svg"); + } + } + + &.complete { + &::before { + background-image: url("/static/images/successful.svg"); + } + } + } + + & > div { + width: 100%; + } + + .field { + padding-right: calc((100vw / 16) * 1); + @media ${bp.extraWideUp} { + padding-right: calc((100vw / 16) * 0.5); + } + } + + &.files { + &::before { + background-image: url("/static/images/files.svg"); + } + + ul.field { + margin: 0; + + li { + list-style: none; + margin: 0; + padding: 0; + } + } + } + } + } +`; diff --git a/src/components/Task/index.js b/src/components/Task/index.js deleted file mode 100644 index d5e7db9b..00000000 --- a/src/components/Task/index.js +++ /dev/null @@ -1,215 +0,0 @@ -import React from 'react'; -import moment from 'moment'; -import LogViewer from 'components/LogViewer'; -import { bp } from 'lib/variables'; - -/** - * Displays information about an environment task. - */ -const Task = ({ task }) => ( -
-
-
-
- -
- {moment - .utc(task.created) - .local() - .format('DD MMM YYYY, HH:mm:ss (Z)')} -
-
-
-
-
- -
- {task.service} -
-
-
-
-
- -
- {task.status.charAt(0).toUpperCase() + - task.status.slice(1)} -
-
-
- {task.files.length > 0 && -
-
- - -
-
} -
- - -
-); - -export default Task; diff --git a/src/components/Task/index.tsx b/src/components/Task/index.tsx new file mode 100644 index 00000000..e5499a18 --- /dev/null +++ b/src/components/Task/index.tsx @@ -0,0 +1,76 @@ +import React, { FC } from "react"; +import moment from "moment"; +import LogViewer from "components/LogViewer"; +import { StyledTask } from "./StyledTask"; + +type TaskFile = { + id: string; + download: string; + filename: string; +}; +interface TaskProps { + task: { + created: string; + service: string; + status: string; + files: TaskFile[]; + logs: string; + }; +} + +/** + * Displays information about an environment task. + */ +const Task: FC = ({ task }) => ( + +
+
+
+ +
+ {moment + .utc(task.created) + .local() + .format("DD MMM YYYY, HH:mm:ss (Z)")} +
+
+
+
+
+ +
{task.service}
+
+
+
+
+ +
+ {task.status.charAt(0).toUpperCase() + task.status.slice(1)} +
+
+
+ {task.files.length > 0 && ( +
+
+ + +
+
+ )} +
+ +
+); + +export default Task; diff --git a/src/components/Tasks/StyledTasks.tsx b/src/components/Tasks/StyledTasks.tsx new file mode 100644 index 00000000..5b6db42e --- /dev/null +++ b/src/components/Tasks/StyledTasks.tsx @@ -0,0 +1,161 @@ +import styled from "styled-components"; +import { bp, color, fontSize } from "lib/variables"; + +export const StyledTasks = styled.div` + .header { + @media ${bp.tinyUp} { + align-items: center; + display: flex; + justify-content: space-between; + margin: 0 0 14px; + padding-right: 40px; + } + @media ${bp.smallOnly} { + flex-wrap: wrap; + } + @media ${bp.tabletUp} { + margin-top: 40px; + } + + label { + display: none; + padding-left: 20px; + @media ${bp.tinyUp} { + display: block; + width: 20%; + } + @media ${bp.xs_smallUp} { + width: 24%; + &.service, + &.status { + width: 14%; + } + } + } + } +`; + +export const TasksTable = styled.div` + &.data-table { + background-color: ${color.white}; + border: 1px solid ${color.lightestGrey}; + border-radius: 3px; + box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.03); + + .data-none { + border: 1px solid ${color.white}; + border-bottom: 1px solid ${color.lightestGrey}; + border-radius: 3px; + line-height: 1.5rem; + padding: 8px 0 7px 0; + text-align: center; + } + + .data-row { + background-image: url("/static/images/right-arrow.svg"); + background-position: right 20px center; + background-repeat: no-repeat; + background-size: 18px 11px; + border: 1px solid ${color.white}; + border-bottom: 1px solid ${color.lightestGrey}; + border-radius: 0; + line-height: 1.5rem; + padding: 8px 0 7px 0; + @media ${bp.tinyUp} { + display: flex; + justify-content: space-between; + padding-right: 40px; + } + + & > div { + padding-left: 20px; + @media ${bp.tinyUp} { + width: 20%; + } + @media ${bp.xs_smallUp} { + width: 24%; + &.service, + &.status { + width: 14%; + } + } + } + + .bulk-label { + color: ${color.white}; + background-color: ${color.lightBlue}; + ${fontSize(12)}; + margin-left: 10px; + padding: 0px 5px 0px 5px; + border-radius: 3px; + box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.03); + &:hover { + background-color: ${color.blue}; + } + } + &:hover { + border: 1px solid ${color.brightBlue}; + } + + &:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; + } + + &:last-child { + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; + } + + .status { + @media ${bp.tinyOnly} { + margin-left: 20px; + } + @media ${bp.tiny_wide} { + background-position: center; + } + background-position: left 7px; + background-repeat: no-repeat; + background-size: 10px 10px; + + &.active { + background-image: url("/static/images/in-progress.svg"); + } + + &.new { + background-image: url("/static/images/in-progress.svg"); + } + + &.pending { + background-image: url("/static/images/in-progress.svg"); + } + + &.running { + background-image: url("/static/images/in-progress.svg"); + } + + &.failed { + background-image: url("/static/images/failed.svg"); + } + + &.cancelled { + background-image: url("/static/images/failed.svg"); + } + + &.succeeded { + background-image: url("/static/images/successful.svg"); + } + + &.complete { + background-image: url("/static/images/successful.svg"); + } + + span { + @media ${bp.tiny_wide} { + display: none; + } + } + } + } + } +`; diff --git a/src/components/Tasks/index.js b/src/components/Tasks/index.js deleted file mode 100644 index 44d6fee2..00000000 --- a/src/components/Tasks/index.js +++ /dev/null @@ -1,204 +0,0 @@ -import React from 'react'; -import moment from 'moment'; -import TaskLink from 'components/link/Task'; -import { bp, color, fontSize } from 'lib/variables'; - -/** - * Displays an environment's list of tasks. - */ -const Tasks = ({ tasks, environmentSlug, projectSlug }) => ( -
-
- - - - -
-
- {!tasks.length &&
No Tasks
} - {tasks.map(task => ( - -
-
{task.name}{task.adminOnlyView && }
-
- {moment - .utc(task.created) - .local() - .format('DD MMM YYYY, HH:mm:ss (Z)')} -
-
{task.service}
-
- - {task.status.charAt(0).toUpperCase() + task.status.slice(1)} - -
-
-
- ))} -
- -
-); - -export default Tasks; diff --git a/src/components/Tasks/index.tsx b/src/components/Tasks/index.tsx new file mode 100644 index 00000000..5bc35cfb --- /dev/null +++ b/src/components/Tasks/index.tsx @@ -0,0 +1,65 @@ +import React, { FC } from "react"; +import moment from "moment"; +import TaskLink from "components/link/Task"; +import { StyledTasks, TasksTable } from "./StyledTasks"; + +interface TasksProps { + tasks: { + taskName: string; + name: string; + adminOnlyView: boolean; + created: string; + service: string; + status: string; + }[]; + environmentSlug: string; + projectSlug: string; +} + +/** + * Displays an environment's list of tasks. + */ +const Tasks: FC = ({ tasks, environmentSlug, projectSlug }) => ( + +
+ + + + +
+ + {!tasks.length &&
No Tasks
} + {tasks.map((task) => ( + +
+
+ {task.name} + {task.adminOnlyView && ( + + )} +
+
+ {moment + .utc(task.created) + .local() + .format("DD MMM YYYY, HH:mm:ss (Z)")} +
+
{task.service}
+
+ + {task.status.charAt(0).toUpperCase() + task.status.slice(1)} + +
+
+
+ ))} +
+
+); + +export default Tasks; diff --git a/src/layouts/GlobalStyles/index.js b/src/layouts/GlobalStyles/index.js deleted file mode 100644 index e84fda4a..00000000 --- a/src/layouts/GlobalStyles/index.js +++ /dev/null @@ -1,202 +0,0 @@ -import React from 'react'; -import { bp, color, fontSize } from 'lib/variables'; - -/** - * Applies styles globally to any component nested inside it. - */ -const GlobalStyles = ({ children }) => ( - <> - { children } - - -); - -export default GlobalStyles; diff --git a/src/layouts/GlobalStyles/index.tsx b/src/layouts/GlobalStyles/index.tsx new file mode 100644 index 00000000..653c51ce --- /dev/null +++ b/src/layouts/GlobalStyles/index.tsx @@ -0,0 +1,234 @@ +import { bp, color, fontSize } from "lib/variables"; +import { createGlobalStyle } from "styled-components"; + +/** + * Applies styles globally to any component nested inside it. + */ +const GlobalStyles = createGlobalStyle` +* { + box-sizing: border-box; +} + +html, body { + scroll-behavior: smooth; +} + +body { + color: ${color.black}; + font-family: 'source-sans-pro', sans-serif; + ${fontSize(16)}; + height: 100%; + line-height: 1.25rem; + overflow-x: hidden; +} + +.content-wrapper { + background-color: ${color.almostWhite}; + flex: 1 0 auto; + width: 100%; +} + +#__next { + display: flex; + flex-direction: column; + min-height: 100vh; +} + +a { + color: ${color.black}; + text-decoration: none; + + &.hover-state { + position: relative; + transition: all 0.2s ease-in-out; + + &::before, + &::after { + content: ''; + position: absolute; + bottom: 0; + width: 0; + height: 1px; + transition: all 0.2s ease-in-out; + transition-duration: 0.75s; + opacity: 0; + } + &::after { + left: 0; + background-color: ${color.linkBlue}; + } + &:hover { + &::before, + &::after { + width: 100%; + opacity: 1; + } + } + } +} + +.bulk-label a:link { color: ${color.white}; } +.bulk-label a:visited { color: ${color.white}; } +.bulk-label a:hover { color: ${color.white}; } +.bulk-label a:active { color: ${color.white}; } + +p { + margin: 0 0 1.25rem; +} + +p a { + text-decoration: none; + transition: background 0.3s ease-out; +} + +strong { + font-weight: normal; +} + +em { + font-style: normal; +} + +h2 { + ${fontSize(36, 42)}; + font-weight: normal; + margin: 0 0 38px; +} + +h3 { + ${fontSize(30, 42)}; + font-weight: normal; + margin: 0 0 36px; +} + +h4 { + ${fontSize(25, 38)}; + font-weight: normal; + margin: 4px 0 0; +} + +ul { + list-style: none; + margin: 0 0 1.25rem; + padding-left: 0; + + li { + background-size: 8px; + margin-bottom: 1.25rem; + padding-left: 20px; + + a { + text-decoration: none; + } + } +} + +ol { + margin: 0 0 1.25rem; + padding-left: 20px; + + li { + margin-bottom: 1.25rem; + + a { + text-decoration: none; + } + } +} + +.field { + line-height: 25px; + + a { + color: ${color.linkBlue}; + } +} + +button, +input, +optgroup, +select, +textarea { + font-family: 'source-sans-pro', sans-serif; + line-height: 1.25rem; +} + +label { + color: ${color.darkGrey}; + font-family: 'source-code-pro', sans-serif; + ${fontSize(13)}; + text-transform: uppercase; +} + +.field-wrapper { + display: flex; + margin-bottom: 18px; + + @media ${bp.xs_smallUp} { + margin-bottom: 30px; + } + + &::before { + @media ${bp.xs_smallUp} { + background-position: center; + background-repeat: no-repeat; + background-size: 21px; + border-right: 1px solid ${color.midGrey}; + content: ''; + display: flex; + height: 60px; + padding-right: 28px; + width: 25px; + } + } + + & > div { + @media ${bp.xs_smallUp} { + margin-top: 8px; + } + } +} + +main{ + background-color: ${color.almostWhite}; + margin: 0 !important; + padding: 62px !important; + } + .modal__overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + /* color.almostWhite, 0.75 opacity */ + background-color: rgb(250, 250, 252, 0.75); + z-index: 100; + } +.modal__content { + position: absolute; + top: 50%; + left: 50%; + right: auto; + bottom: auto; + margin-right: -50%; + transform: translate(-50%, -50%); + border: 1px solid ${color.midGrey}; + background: ${color.white}; + overflow: auto; + -webkit-overflow-scrolling: touch; + border-radius: 4px; + outline: none; + padding: 20px; + color: ${color.black}; + max-width: 90vw; + @media ${bp.desktopUp} { + max-width: 60vw; + } + @media ${bp.extraWideUp} { + max-width: 40vw; + } + } + +`; + +export default GlobalStyles; diff --git a/src/layouts/MainLayout/index.js b/src/layouts/MainLayout/index.js index 63332588..ba7e8953 100644 --- a/src/layouts/MainLayout/index.js +++ b/src/layouts/MainLayout/index.js @@ -1,16 +1,17 @@ -import GlobalStyles from 'layouts/GlobalStyles'; -import Header from 'components/Header'; -import Footer from 'components/Footer'; +import Header from "components/Header"; +import Footer from "components/Footer"; +import GlobalStyles from "../GlobalStyles"; /** * The main layout includes the Lagoon UI header. */ const MainLayout = ({ children }) => ( - + <> +
- { children } + {children}
- + ); export default MainLayout; diff --git a/src/layouts/StatusLayout/StyledStatusLayout.js b/src/layouts/StatusLayout/StyledStatusLayout.js new file mode 100644 index 00000000..9b22756f --- /dev/null +++ b/src/layouts/StatusLayout/StyledStatusLayout.js @@ -0,0 +1,25 @@ +import styled from "styled-components"; +import { bp } from "lib/variables"; + +export const StyledContentWrapper = styled.div` + display: flex; + flex-direction: column; + height: 100vh; + main{ + flex: 1; + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: center; + } + + .content { + margin-top: 38px; + @media ${bp.wideUp} { + margin: 62px; + } + @media ${bp.extraWideUp} { + margin: 62px; + } + } +`; diff --git a/src/layouts/StatusLayout/index.js b/src/layouts/StatusLayout/index.js index a9026456..03bdef26 100644 --- a/src/layouts/StatusLayout/index.js +++ b/src/layouts/StatusLayout/index.js @@ -1,59 +1,29 @@ -import GlobalStlyes from 'layouts/GlobalStyles'; -import Header from 'components/Header'; -import Footer from 'components/Footer'; -import { bp } from 'lib/variables'; +import Header from "components/Header"; +import Footer from "components/Footer"; +import { StyledContentWrapper } from "./StyledStatusLayout"; +import GlobalStyles from "../GlobalStyles"; /** * The status layout includes the Lagoon UI header and grey box to wrap content. */ const StatusLayout = ({ children }) => ( - -
-
-
{children}
-
- -
- + <> + + +
+
{children}
+
+ + ); export const StatusLayoutNoHeader = ({ children }) => ( - -
-
{children}
-
- -
+ <> + + +
{children}
+
+ ); export default StatusLayout; diff --git a/src/lib/variables.js b/src/lib/variables.js index fa91ed1a..c2c42d4c 100644 --- a/src/lib/variables.js +++ b/src/lib/variables.js @@ -31,6 +31,7 @@ export const bp = { smallOnly: `all and (max-width: ${(BP_TABLET - 1) / 16}em)`, tabletDown: `all and (max-width: ${(BP_DESKTOP - 1) / 16}em)`, wideDown: `all and (max-width: ${(BP_WIDE - 1) / 16}em)`, + xlWideDown: `all and (max-width: ${(BP_EXTRAWIDE + 150) / 16}em)`, tinyUp: `all and (min-width: ${BP_TINY / 16}em)`, xs_smallUp: `all and (min-width: ${(BP_XS) / 16}em)`, diff --git a/src/pages/_app.js b/src/pages/_app.js index 1d98bbdf..69da1218 100644 --- a/src/pages/_app.js +++ b/src/pages/_app.js @@ -9,6 +9,7 @@ import Authenticator, { AuthContext } from "lib/Authenticator"; import ApiConnection from "lib/ApiConnection"; import Script from "next/script"; import App from "next/app"; +import GlobalStyles from "../layouts/GlobalStyles"; const { serverRuntimeConfig, publicRuntimeConfig } = getConfig(); @@ -20,7 +21,6 @@ const LagoonApp = ({ Component, pageProps, err }) => { return ( <> - { strategy="beforeInteractive" /> - diff --git a/src/pages/_document.js b/src/pages/_document.js index c258e899..b2f51c62 100644 --- a/src/pages/_document.js +++ b/src/pages/_document.js @@ -2,29 +2,52 @@ // Event handlers like onClick can't be added to this file // ./pages/_document.js -import Document, { Html, Head, Main, NextScript } from 'next/document' -import Plugins from '../components/Plugins/components/Plugins' +import Document, { Html, Head, Main, NextScript} from "next/document"; +import Plugins from "../components/Plugins/components/Plugins"; +// styled-components +import { ServerStyleSheet } from "styled-components"; class MyDocument extends Document { static async getInitialProps(ctx) { - const initialProps = await Document.getInitialProps(ctx) - return { ...initialProps } + const sheet = new ServerStyleSheet(); + const originalRenderpage = ctx.renderPage; + + try { + ctx.renderPage = () => + originalRenderpage({ + enhanceApp: (App) => (props) => + sheet.collectStyles(), + }); + const initialProps = await Document.getInitialProps(ctx); + return { + ...initialProps, + styles: ( + <> + {initialProps.styles} + {sheet.getStyleElement()} + + ), + }; + } finally { + sheet.seal(); + } } render() { return ( - + +
- + - ) + ); } } -export default MyDocument \ No newline at end of file +export default MyDocument; diff --git a/src/pages/_error.js b/src/pages/_error.js index fea6a03b..eb6118da 100644 --- a/src/pages/_error.js +++ b/src/pages/_error.js @@ -30,9 +30,7 @@ export default class Error extends React.Component { return ( - - {statusCode}: {title} - + {`${statusCode}: ${title}`}

{title}

{errorMessage &&

{errorMessage}

} diff --git a/src/pages/alldeployments.js b/src/pages/alldeployments.js index a5c5433b..d7eee48d 100644 --- a/src/pages/alldeployments.js +++ b/src/pages/alldeployments.js @@ -1,15 +1,15 @@ -import React from 'react'; -import * as R from 'ramda'; -import Head from 'next/head'; -import { Query } from 'react-apollo'; -import MainLayout from 'layouts/MainLayout'; -import deploymentsByFilter from 'lib/query/DeploymentsByFilter'; -import Projects from 'components/Projects'; -import withQueryLoading from 'lib/withQueryLoading'; -import withQueryError from 'lib/withQueryError'; -import { bp } from 'lib/variables'; -import { withRouter } from 'next/router'; -import DeploymentsByFilter from '../components/DeploymentsByFilter'; +import React from "react"; +import * as R from "ramda"; +import Head from "next/head"; +import { Query } from "react-apollo"; +import MainLayout from "layouts/MainLayout"; +import deploymentsByFilter from "lib/query/DeploymentsByFilter"; +import Projects from "components/Projects"; +import withQueryLoading from "lib/withQueryLoading"; +import withQueryError from "lib/withQueryError"; +import { withRouter } from "next/router"; +import DeploymentsByFilter from "../components/DeploymentsByFilter"; +import { CommonWrapperMargin } from "../styles/commonPageStyles"; /** * Displays the projects page. @@ -20,38 +20,16 @@ const AllDeployments = () => ( All deployments - {R.compose( - withQueryLoading - )(({ data }) => ( + {R.compose(withQueryLoading)(({ data }) => ( -
+

Deployments

- +
-
- +
))}
diff --git a/src/pages/backups.js b/src/pages/backups.js index c17bd2c5..81b659fc 100644 --- a/src/pages/backups.js +++ b/src/pages/backups.js @@ -1,22 +1,22 @@ -import React from 'react'; -import * as R from 'ramda'; -import { withRouter } from 'next/router'; -import Head from 'next/head'; -import getConfig from 'next/config'; -import { Query } from 'react-apollo'; -import MainLayout from 'layouts/MainLayout'; -import EnvironmentWithBackupsQuery from 'lib/query/EnvironmentWithBackups'; -import BackupsSubscription from 'lib/subscription/Backups'; -import Breadcrumbs from 'components/Breadcrumbs'; -import ProjectBreadcrumb from 'components/Breadcrumbs/Project'; -import EnvironmentBreadcrumb from 'components/Breadcrumbs/Environment'; -import NavTabs from 'components/NavTabs'; -import Backups from 'components/Backups'; -import ResultsLimited from 'components/ResultsLimited'; -import withQueryLoading from 'lib/withQueryLoading'; -import withQueryError from 'lib/withQueryError'; -import { withEnvironmentRequired } from 'lib/withDataRequired'; -import { bp, color } from 'lib/variables'; +import React from "react"; +import * as R from "ramda"; +import { withRouter } from "next/router"; +import Head from "next/head"; +import getConfig from "next/config"; +import { Query } from "react-apollo"; +import MainLayout from "layouts/MainLayout"; +import EnvironmentWithBackupsQuery from "lib/query/EnvironmentWithBackups"; +import BackupsSubscription from "lib/subscription/Backups"; +import Breadcrumbs from "components/Breadcrumbs"; +import ProjectBreadcrumb from "components/Breadcrumbs/Project"; +import EnvironmentBreadcrumb from "components/Breadcrumbs/Environment"; +import NavTabs from "components/NavTabs"; +import Backups from "components/Backups"; +import ResultsLimited from "components/ResultsLimited"; +import withQueryLoading from "lib/withQueryLoading"; +import withQueryError from "lib/withQueryError"; +import { withEnvironmentRequired } from "lib/withDataRequired"; +import { CommonWrapperWNotification } from "../styles/commonPageStyles"; const { publicRuntimeConfig } = getConfig(); const envLimit = parseInt(publicRuntimeConfig.LAGOON_UI_BACKUPS_LIMIT, 10); @@ -26,7 +26,7 @@ let urlResultLimit = envLimit; if (typeof window !== "undefined") { let search = window.location.search; let params = new URLSearchParams(search); - let limit = params.get('limit'); + let limit = params.get("limit"); if (limit) { if (parseInt(limit.trim(), 10)) { urlResultLimit = parseInt(limit.trim(), 10); @@ -47,7 +47,7 @@ export const PageBackups = ({ router }) => ( query={EnvironmentWithBackupsQuery} variables={{ openshiftProjectName: router.query.openshiftProjectName, - limit: resultLimit + limit: resultLimit, }} > {R.compose( @@ -63,14 +63,14 @@ export const PageBackups = ({ router }) => ( const prevBackups = prevStore.environment.backups; const incomingBackup = subscriptionData.data.backupChanged; const existingIndex = prevBackups.findIndex( - prevBackup => prevBackup.id === incomingBackup.id + (prevBackup) => prevBackup.id === incomingBackup.id ); let newBackups; // New backup. if (existingIndex === -1) { // Don't add new deleted backups. - if (incomingBackup.deleted !== '0000-00-00 00:00:00') { + if (incomingBackup.deleted !== "0000-00-00 00:00:00") { return prevStore; } @@ -79,9 +79,9 @@ export const PageBackups = ({ router }) => ( // Existing backup. else { // Updated backup - if (incomingBackup.deleted === '0000-00-00 00:00:00') { + if (incomingBackup.deleted === "0000-00-00 00:00:00") { newBackups = Object.assign([...prevBackups], { - [existingIndex]: incomingBackup + [existingIndex]: incomingBackup, }); } // Deleted backup @@ -94,12 +94,12 @@ export const PageBackups = ({ router }) => ( ...prevStore, environment: { ...prevStore.environment, - backups: newBackups - } + backups: newBackups, + }, }; return newStore; - } + }, }); return ( @@ -111,7 +111,7 @@ export const PageBackups = ({ router }) => ( projectSlug={environment.project.name} /> -
+
@@ -123,29 +123,13 @@ export const PageBackups = ({ router }) => (
-
- +
); })} diff --git a/src/pages/bulkdeployments.js b/src/pages/bulkdeployments.js index 534000b0..17b6e385 100644 --- a/src/pages/bulkdeployments.js +++ b/src/pages/bulkdeployments.js @@ -1,16 +1,16 @@ -import React from 'react'; -import * as R from 'ramda'; -import Head from 'next/head'; -import { withRouter } from 'next/router'; -import { Query } from 'react-apollo'; -import MainLayout from 'layouts/MainLayout'; -import Breadcrumbs from 'components/Breadcrumbs'; -import BulkDeploymentBreadcrumb from 'components/Breadcrumbs/BulkDeployment'; -import BulkDeploymentById from 'lib/query/BulkDeploymentById'; -import BulkDeployments from 'components/BulkDeployments'; -import withQueryLoading from 'lib/withQueryLoading'; -import withQueryError from 'lib/withQueryError'; -import { bp } from 'lib/variables'; +import React from "react"; +import * as R from "ramda"; +import Head from "next/head"; +import { withRouter } from "next/router"; +import { Query } from "react-apollo"; +import MainLayout from "layouts/MainLayout"; +import Breadcrumbs from "components/Breadcrumbs"; +import BulkDeploymentBreadcrumb from "components/Breadcrumbs/BulkDeployment"; +import BulkDeploymentById from "lib/query/BulkDeploymentById"; +import BulkDeployments from "components/BulkDeployments"; +import withQueryLoading from "lib/withQueryLoading"; +import withQueryError from "lib/withQueryError"; +import { CommonWrapper } from "../styles/commonPageStyles"; /** * Displays the bulk deployments page. @@ -18,7 +18,7 @@ import { bp } from 'lib/variables'; const BulkDeploymentsPage = ({ router }) => ( <> - Bulk Deployment - { router.query.bulkId } + Bulk Deployment - {router.query.bulkId} ( withQueryError )(({ data }) => ( - - - -
+ + + +
-
- +
))}
diff --git a/src/pages/deployment.js b/src/pages/deployment.js index 0ab21c27..5a38f219 100644 --- a/src/pages/deployment.js +++ b/src/pages/deployment.js @@ -1,23 +1,23 @@ -import React, { useEffect, useRef, useState } from 'react'; -import * as R from 'ramda'; -import { withRouter } from 'next/router'; -import Head from 'next/head'; -import { Query } from 'react-apollo'; -import MainLayout from 'layouts/MainLayout'; -import EnvironmentWithDeploymentQuery from 'lib/query/EnvironmentWithDeployment'; -import Breadcrumbs from 'components/Breadcrumbs'; -import ProjectBreadcrumb from 'components/Breadcrumbs/Project'; -import EnvironmentBreadcrumb from 'components/Breadcrumbs/Environment'; -import DeploymentBreadcrumb from 'components/Breadcrumbs/Deployment'; -import NavTabs from 'components/NavTabs'; -import Deployment from 'components/Deployment'; -import withQueryLoading from 'lib/withQueryLoading'; -import withQueryError from 'lib/withQueryError'; +import React, { useRef, useState } from "react"; +import * as R from "ramda"; +import { withRouter } from "next/router"; +import Head from "next/head"; +import { Query } from "react-apollo"; +import MainLayout from "layouts/MainLayout"; +import EnvironmentWithDeploymentQuery from "lib/query/EnvironmentWithDeployment"; +import Breadcrumbs from "components/Breadcrumbs"; +import ProjectBreadcrumb from "components/Breadcrumbs/Project"; +import EnvironmentBreadcrumb from "components/Breadcrumbs/Environment"; +import DeploymentBreadcrumb from "components/Breadcrumbs/Deployment"; +import NavTabs from "components/NavTabs"; +import Deployment from "components/Deployment"; +import withQueryLoading from "lib/withQueryLoading"; +import withQueryError from "lib/withQueryError"; import { withEnvironmentRequired, - withDeploymentRequired -} from 'lib/withDataRequired'; -import { bp } from 'lib/variables'; + withDeploymentRequired, +} from "lib/withDataRequired"; +import { DeploymentWrapper } from "../styles/pageStyles"; /** * Displays a deployment page, given the openshift project and deployment name. @@ -44,7 +44,9 @@ export const PageDeployment = ({ router }) => { const onScroll = () => { const pageTop = document.documentElement.scrollTop <= 300; - const pageBottom = (document.body.scrollHeight - document.documentElement.scrollTop) - 100 <= document.documentElement.clientHeight; + const pageBottom = + document.body.scrollHeight - document.documentElement.scrollTop - 100 <= + document.documentElement.clientHeight; if (hidden == "hidden") return; if (pageTop) { @@ -55,7 +57,7 @@ export const PageDeployment = ({ router }) => { setShowTop(true); setShowBottom(false); } - } + }; return ( <> @@ -66,7 +68,7 @@ export const PageDeployment = ({ router }) => { query={EnvironmentWithDeploymentQuery} variables={{ openshiftProjectName: router.query.openshiftProjectName, - deploymentName: router.query.deploymentName + deploymentName: router.query.deploymentName, }} > {R.compose( @@ -89,60 +91,17 @@ export const PageDeployment = ({ router }) => { deploymentSlug={deployment.name} environmentSlug={environment.openshiftProjectName} projectSlug={environment.project.name} - /> + /> -
+
-
+
- - ) + ); })} diff --git a/src/pages/deployments.js b/src/pages/deployments.js index fae4c89e..67e23a3c 100644 --- a/src/pages/deployments.js +++ b/src/pages/deployments.js @@ -1,23 +1,23 @@ -import React from 'react'; -import * as R from 'ramda'; -import { withRouter } from 'next/router'; -import Head from 'next/head'; -import getConfig from 'next/config'; -import { Query } from 'react-apollo'; -import MainLayout from 'layouts/MainLayout'; -import EnvironmentWithDeploymentsQuery from 'lib/query/EnvironmentWithDeployments'; -import DeploymentsSubscription from 'lib/subscription/Deployments'; -import Breadcrumbs from 'components/Breadcrumbs'; -import ProjectBreadcrumb from 'components/Breadcrumbs/Project'; -import EnvironmentBreadcrumb from 'components/Breadcrumbs/Environment'; -import NavTabs from 'components/NavTabs'; -import DeployLatest from 'components/DeployLatest'; -import ResultsLimited from 'components/ResultsLimited'; -import Deployments from 'components/Deployments'; -import withQueryLoading from 'lib/withQueryLoading'; -import withQueryError from 'lib/withQueryError'; -import { withEnvironmentRequired } from 'lib/withDataRequired'; -import { bp } from 'lib/variables'; +import React from "react"; +import * as R from "ramda"; +import { withRouter } from "next/router"; +import Head from "next/head"; +import getConfig from "next/config"; +import { Query } from "react-apollo"; +import MainLayout from "layouts/MainLayout"; +import EnvironmentWithDeploymentsQuery from "lib/query/EnvironmentWithDeployments"; +import DeploymentsSubscription from "lib/subscription/Deployments"; +import Breadcrumbs from "components/Breadcrumbs"; +import ProjectBreadcrumb from "components/Breadcrumbs/Project"; +import EnvironmentBreadcrumb from "components/Breadcrumbs/Environment"; +import NavTabs from "components/NavTabs"; +import DeployLatest from "components/DeployLatest"; +import ResultsLimited from "components/ResultsLimited"; +import withQueryLoading from "lib/withQueryLoading"; +import withQueryError from "lib/withQueryError"; +import { withEnvironmentRequired } from "lib/withDataRequired"; +import { DeploymentsWrapper } from "../styles/pageStyles"; +import Deployments from "components/Deployments"; const { publicRuntimeConfig } = getConfig(); const envLimit = parseInt(publicRuntimeConfig.LAGOON_UI_DEPLOYMENTS_LIMIT, 10); @@ -27,7 +27,7 @@ let urlResultLimit = envLimit; if (typeof window !== "undefined") { let search = window.location.search; let params = new URLSearchParams(search); - let limit = params.get('limit'); + let limit = params.get("limit"); if (limit) { if (parseInt(limit.trim(), 10)) { urlResultLimit = parseInt(limit.trim(), 10); @@ -49,7 +49,7 @@ export const PageDeployments = ({ router }) => { query={EnvironmentWithDeploymentsQuery} variables={{ openshiftProjectName: router.query.openshiftProjectName, - limit: resultLimit + limit: resultLimit, }} > {R.compose( @@ -66,7 +66,7 @@ export const PageDeployments = ({ router }) => { const incomingDeployment = subscriptionData.data.deploymentChanged; const existingIndex = prevDeployments.findIndex( - prevDeployment => prevDeployment.id === incomingDeployment.id + (prevDeployment) => prevDeployment.id === incomingDeployment.id ); let newDeployments; @@ -77,7 +77,7 @@ export const PageDeployments = ({ router }) => { // Updated deployment else { newDeployments = Object.assign([...prevDeployments], { - [existingIndex]: incomingDeployment + [existingIndex]: incomingDeployment, }); } @@ -85,12 +85,12 @@ export const PageDeployments = ({ router }) => { ...prevStore, environment: { ...prevStore.environment, - deployments: newDeployments - } + deployments: newDeployments, + }, }; return newStore; - } + }, }); return ( @@ -102,7 +102,7 @@ export const PageDeployments = ({ router }) => { projectSlug={environment.project.name} /> -
+
@@ -114,23 +114,13 @@ export const PageDeployments = ({ router }) => {
-
- + ); })} diff --git a/src/pages/environment.js b/src/pages/environment.js index ff5a7ec6..1c431464 100644 --- a/src/pages/environment.js +++ b/src/pages/environment.js @@ -1,19 +1,19 @@ -import React from 'react'; -import * as R from 'ramda'; -import { withRouter } from 'next/router'; -import Head from 'next/head'; -import { Query } from 'react-apollo'; -import MainLayout from 'layouts/MainLayout'; -import EnvironmentByOpenshiftProjectNameQuery from 'lib/query/EnvironmentByOpenshiftProjectName'; -import Breadcrumbs from 'components/Breadcrumbs'; -import ProjectBreadcrumb from 'components/Breadcrumbs/Project'; -import EnvironmentBreadcrumb from 'components/Breadcrumbs/Environment'; -import NavTabs from 'components/NavTabs'; -import Environment from 'components/Environment'; -import withQueryLoading from 'lib/withQueryLoading'; -import withQueryError from 'lib/withQueryError'; -import { withEnvironmentRequired } from 'lib/withDataRequired'; -import { bp } from 'lib/variables'; +import React from "react"; +import * as R from "ramda"; +import { withRouter } from "next/router"; +import Head from "next/head"; +import { Query } from "react-apollo"; +import MainLayout from "layouts/MainLayout"; +import EnvironmentByOpenshiftProjectNameQuery from "lib/query/EnvironmentByOpenshiftProjectName"; +import Breadcrumbs from "components/Breadcrumbs"; +import ProjectBreadcrumb from "components/Breadcrumbs/Project"; +import EnvironmentBreadcrumb from "components/Breadcrumbs/Environment"; +import NavTabs from "components/NavTabs"; +import Environment from "components/Environment"; +import withQueryLoading from "lib/withQueryLoading"; +import withQueryError from "lib/withQueryError"; +import { withEnvironmentRequired } from "lib/withDataRequired"; +import { EnvironmentWrapper } from "../styles/pageStyles"; /** * Displays an environment page, given the openshift project name. @@ -26,7 +26,7 @@ export const PageEnvironment = ({ router }) => ( {R.compose( @@ -42,20 +42,12 @@ export const PageEnvironment = ({ router }) => ( projectSlug={environment.project.name} /> -
+
-
- + ))}
diff --git a/src/pages/facts.js b/src/pages/facts.js index 7c03f21d..50b7b9a7 100644 --- a/src/pages/facts.js +++ b/src/pages/facts.js @@ -1,19 +1,19 @@ -import React from 'react'; -import * as R from 'ramda'; -import { withRouter } from 'next/router'; -import Head from 'next/head'; -import { Query } from 'react-apollo'; -import MainLayout from 'layouts/MainLayout'; -import EnvironmentWithFactsQuery from 'lib/query/EnvironmentWithFacts'; -import Breadcrumbs from 'components/Breadcrumbs'; -import ProjectBreadcrumb from 'components/Breadcrumbs/Project'; -import EnvironmentBreadcrumb from 'components/Breadcrumbs/Environment'; -import NavTabs from 'components/NavTabs'; -import Facts from 'components/Facts'; -import withQueryLoading from 'lib/withQueryLoading'; -import withQueryError from 'lib/withQueryError'; -import { withEnvironmentRequired } from 'lib/withDataRequired'; -import { bp, color } from 'lib/variables'; +import React from "react"; +import * as R from "ramda"; +import { withRouter } from "next/router"; +import Head from "next/head"; +import { Query } from "react-apollo"; +import MainLayout from "layouts/MainLayout"; +import EnvironmentWithFactsQuery from "lib/query/EnvironmentWithFacts"; +import Breadcrumbs from "components/Breadcrumbs"; +import ProjectBreadcrumb from "components/Breadcrumbs/Project"; +import EnvironmentBreadcrumb from "components/Breadcrumbs/Environment"; +import NavTabs from "components/NavTabs"; +import Facts from "components/Facts"; +import withQueryLoading from "lib/withQueryLoading"; +import withQueryError from "lib/withQueryError"; +import { withEnvironmentRequired } from "lib/withDataRequired"; +import { CommonWrapperWNotification } from "../styles/commonPageStyles"; /** * Displays the facts page, given the name of an openshift project. @@ -32,7 +32,6 @@ export const PageFacts = ({ router }) => ( withQueryError, withEnvironmentRequired )(({ data: { environment } }) => { - return ( @@ -42,31 +41,12 @@ export const PageFacts = ({ router }) => ( projectSlug={environment.project.name} /> -
+
-
- +
); })} diff --git a/src/pages/insights.js b/src/pages/insights.js index 27220bf3..aba25633 100644 --- a/src/pages/insights.js +++ b/src/pages/insights.js @@ -1,23 +1,21 @@ import React, { Suspense } from "react"; -import * as R from 'ramda'; -import { withRouter } from 'next/router'; +import * as R from "ramda"; +import { withRouter } from "next/router"; // import { useQuery } from "@apollo/client"; -import Head from 'next/head'; -import { Query } from 'react-apollo'; +import Head from "next/head"; +import { Query } from "react-apollo"; -import MainLayout from 'layouts/MainLayout'; -import NavTabs from 'components/NavTabs'; -import withQueryLoading from 'lib/withQueryLoading'; -import withQueryError from 'lib/withQueryError'; -import { withEnvironmentRequired } from 'lib/withDataRequired'; +import MainLayout from "layouts/MainLayout"; +import NavTabs from "components/NavTabs"; +import withQueryLoading from "lib/withQueryLoading"; +import withQueryError from "lib/withQueryError"; +import { withEnvironmentRequired } from "lib/withDataRequired"; -import Breadcrumbs from 'components/Breadcrumbs'; -import ProjectBreadcrumb from 'components/Breadcrumbs/Project'; -import EnvironmentBreadcrumb from 'components/Breadcrumbs/Environment'; +import Breadcrumbs from "components/Breadcrumbs"; +import ProjectBreadcrumb from "components/Breadcrumbs/Project"; +import EnvironmentBreadcrumb from "components/Breadcrumbs/Environment"; -import Insights from 'components/Insights'; - -import { bp, color } from 'lib/variables'; +import Insights from "components/Insights"; // import MainNavigation from 'layouts/MainNavigation'; // import Navigation from 'components/Navigation'; @@ -25,7 +23,8 @@ import { bp, color } from 'lib/variables'; // import { Grid, Message } from 'semantic-ui-react'; -import EnvironmentWithInsightsQuery from 'lib/query/EnvironmentWithInsights'; +import EnvironmentWithInsightsQuery from "lib/query/EnvironmentWithInsights"; +import { CommonWrapperWNotification } from "../styles/commonPageStyles"; // import { LoadingRowsContent, LazyLoadingContent } from 'components/Loading'; /** @@ -36,63 +35,44 @@ export const PageInsights = ({ router }) => ( {`${router.query.openshiftProjectName} | Insights`} - + {R.compose( withQueryLoading, withQueryError, withEnvironmentRequired )(({ data: { environment } }) => { - return ( - - + + -
- -
- {environment && -
- {!environment.insights && -

{`No insights found for '${router.query.environmentSlug}'`}

- } - {environment.insights && } -
- } -
-
- -
- ) + + +
+ {environment && ( +
+ {!environment.insights && ( +

{`No insights found for '${router.query.environmentSlug}'`}

+ )} + {environment.insights && ( + + )} +
+ )} +
+
+
+ ); })}
); - -export default withRouter(PageInsights); \ No newline at end of file +export default withRouter(PageInsights); diff --git a/src/pages/problems-dashboard-by-project-hex.js b/src/pages/problems-dashboard-by-project-hex.js index 8be02007..de9be021 100644 --- a/src/pages/problems-dashboard-by-project-hex.js +++ b/src/pages/problems-dashboard-by-project-hex.js @@ -3,12 +3,12 @@ import * as R from 'ramda'; import Head from 'next/head'; import { useQuery } from "@apollo/react-hooks"; import AllProjectsProblemsQuery from 'lib/query/AllProjectsProblems'; -import getSeverityEnumQuery, {getProjectOptions, getSourceOptions} from 'components/Filters/helpers'; +import getSeverityEnumQuery, { getSourceOptions} from 'components/Filters/helpers'; import { LoadingPageNoHeader } from 'pages/_loading'; import Honeycomb from "components/Honeycomb"; import MainLayout from 'layouts/MainLayout'; import SelectFilter from 'components/Filters'; -import { bp } from 'lib/variables'; +import {ProblemsByDashBoard} from "../styles/pageStyles" /** * Displays problems page by project. @@ -54,7 +54,7 @@ const ProblemsDashboardByProjectPageHexDisplay = () => { }; return ( - <> + Problems Dashboard By Project @@ -102,72 +102,8 @@ const ProblemsDashboardByProjectPageHexDisplay = () => { }
- - ); + ); }; export default ProblemsDashboardByProjectPageHexDisplay; diff --git a/src/pages/problems-dashboard-by-project.js b/src/pages/problems-dashboard-by-project.js index d78a6ab0..27a8b75e 100644 --- a/src/pages/problems-dashboard-by-project.js +++ b/src/pages/problems-dashboard-by-project.js @@ -1,4 +1,4 @@ -import React, {useEffect, useState} from 'react'; +import React, {useState} from 'react'; import * as R from 'ramda'; import Head from 'next/head'; import { Query } from 'react-apollo'; @@ -11,7 +11,7 @@ import ProblemsByProject from "components/ProblemsByProject"; import Accordion from "components/Accordion"; import MainLayout from 'layouts/MainLayout'; import SelectFilter from 'components/Filters'; -import { bp } from 'lib/variables'; +import {StyledProblemsDashBoardByProject} from "../styles/pageStyles" /** * Displays the problems overview page by project. @@ -58,7 +58,7 @@ const ProblemsDashboardProductPage = () => { }; return ( - <> + Problems Dashboard By Project @@ -99,27 +99,6 @@ const ProblemsDashboardProductPage = () => { onFilterChange={handleEnvTypeChange} />
-
{projects && @@ -130,136 +109,129 @@ const ProblemsDashboardProductPage = () => {
}
- {projects && projects.allProjects.map(project => { + {projects && projects.allProjects.map((project,idx) => { const filterProjectSelect = projectSelect.filter(s => { return s.includes(project.name); }).toString() || ''; return ( - - {R.compose( - withQueryLoadingNoHeader, - withQueryErrorNoHeader - )(({data: { project }}) => { - const {environments, id, name} = project || []; - const filterProblems = environments && environments.filter(e => e instanceof Object).map(e => { - return e.problems; - }); - - const problemsPerProject = Array.prototype.concat.apply([], filterProblems); - const critical = problemsPerProject.filter(p => p.severity === 'CRITICAL').length; - const high = problemsPerProject.filter(p => p.severity === 'HIGH').length; - const medium = problemsPerProject.filter(p => p.severity === 'MEDIUM').length; - const low = problemsPerProject.filter(p => p.severity === 'LOW').length; - - const columns = {name, problemCount: problemsPerProject.length}; - - return ( - <> - {environments && -
-
- - {!environments.length &&
No Environments
} -
-
    -
  • {Object.keys(problemsPerProject).length} Problems
  • -
  • {critical}
  • -
  • {high}
  • -
  • {medium}
  • -
  • {low}
  • -
+ + {R.compose( + withQueryLoadingNoHeader, + withQueryErrorNoHeader + )(({ data: { project } }) => { + const { environments, id, name } = project || []; + const filterProblems = + environments && + environments + .filter((e) => e instanceof Object) + .map((e) => { + return e.problems; + }); + + const problemsPerProject = Array.prototype.concat.apply( + [], + filterProblems + ); + const critical = problemsPerProject.filter( + (p) => p.severity === "CRITICAL" + ).length; + const high = problemsPerProject.filter( + (p) => p.severity === "HIGH" + ).length; + const medium = problemsPerProject.filter( + (p) => p.severity === "MEDIUM" + ).length; + const low = problemsPerProject.filter( + (p) => p.severity === "LOW" + ).length; + + const columns = { + name, + problemCount: problemsPerProject.length, + }; + + return ( + <> + {environments && ( +
+
+ + {!environments.length && ( +
No Environments
+ )} +
+
    +
  • + + { + Object.keys(problemsPerProject).length + }{" "} + Problems +
  • +
  • + + {critical} +
  • +
  • + + {high} +
  • +
  • + + {medium} +
  • +
  • + + {low} +
  • +
+
+ {environments.map((environment, idx) => ( +
+ + +
+ ))} +
- {environments.map(environment => ( -
- - -
- ))} - -
-
- } - ); - })} - )})} +
+ )} + + ); + })} + + );})}
-
- ); + ); }; export default ProblemsDashboardProductPage; diff --git a/src/pages/problems-dashboard.js b/src/pages/problems-dashboard.js index debe900c..51b49b66 100644 --- a/src/pages/problems-dashboard.js +++ b/src/pages/problems-dashboard.js @@ -1,16 +1,18 @@ -import React, {useState} from 'react'; -import * as R from 'ramda'; -import Head from 'next/head'; -import { Query } from 'react-apollo'; -import {useQuery} from "@apollo/react-hooks"; -import AllProblemsQuery from 'lib/query/AllProblems'; -import getSeverityEnumQuery, {getSourceOptions} from 'components/Filters/helpers'; -import withQueryLoadingNoHeader from 'lib/withQueryLoadingNoHeader'; -import withQueryErrorNoHeader from 'lib/withQueryErrorNoHeader'; +import React, { useState } from "react"; +import * as R from "ramda"; +import Head from "next/head"; +import { Query } from "react-apollo"; +import { useQuery } from "@apollo/react-hooks"; +import AllProblemsQuery from "lib/query/AllProblems"; +import getSeverityEnumQuery, { + getSourceOptions, +} from "components/Filters/helpers"; +import withQueryLoadingNoHeader from "lib/withQueryLoadingNoHeader"; +import withQueryErrorNoHeader from "lib/withQueryErrorNoHeader"; import ProblemsByIdentifier from "components/ProblemsByIdentifier"; -import MainLayout from 'layouts/MainLayout'; -import SelectFilter from 'components/Filters'; -import { bp } from 'lib/variables'; +import MainLayout from "layouts/MainLayout"; +import SelectFilter from "components/Filters"; +import { ProblemsDashBoardWrapper, ProblemDashboardFilterWrapper } from "../styles/pageStyles"; /** * Displays the problems overview page. @@ -18,48 +20,51 @@ import { bp } from 'lib/variables'; */ const ProblemsDashboardPage = () => { const [source, setSource] = useState([]); - const [severity, setSeverity] = useState(['CRITICAL']); - const [envType, setEnvType] = useState('PRODUCTION'); + const [severity, setSeverity] = useState(["CRITICAL"]); + const [envType, setEnvType] = useState("PRODUCTION"); - const { data: severities, loading: severityLoading } = useQuery(getSeverityEnumQuery); + const { data: severities, loading: severityLoading } = useQuery( + getSeverityEnumQuery + ); const { data: sources, loading: sourceLoading } = useQuery(getSourceOptions); const handleEnvTypeChange = (envType) => setEnvType(envType.value); const handleSourceChange = (source) => { - let values = source && source.map(s => s.value) || []; + let values = (source && source.map((s) => s.value)) || []; setSource(values); }; const handleSeverityChange = (severity) => { - let values = severity && severity.map(s => s.value) || []; + let values = (severity && severity.map((s) => s.value)) || []; setSeverity(values); }; const sourceOptions = (sources) => { - return sources && sources.map(s => ({ value: s, label: s})); + return sources && sources.map((s) => ({ value: s, label: s })); }; const severityOptions = (enums) => { - return enums && enums.map(s => ({ value: s.name, label: s.name})); + return enums && enums.map((s) => ({ value: s.name, label: s.name })); }; - const groupByProblemIdentifier = (problems) => problems && problems.reduce((arr, problem) => { - arr[problem.identifier] = arr[problem.identifier] || []; - arr[problem.identifier].push(problem); - return arr; - }, {}); - + const groupByProblemIdentifier = (problems) => + problems && + problems.reduce((arr, problem) => { + arr[problem.identifier] = arr[problem.identifier] || []; + arr[problem.identifier].push(problem); + return arr; + }, {}); return ( - <> - - Problems Dashboard - - -
-

Problems Dashboard By Identifier

-
+ <> + + Problems Dashboard + + + +

Problems Dashboard By Identifier

+
{ -
- -
- + + - {R.compose( + envType: envType, + }} + displayName="AllProblemsQuery" + > + {R.compose( withQueryLoadingNoHeader, withQueryErrorNoHeader - )(({data: {problems} }) => { - - // Group problems by identifier - const problemsById = groupByProblemIdentifier(problems) || []; - const problemIdentifiers = problemsById && Object.keys(problemsById).map(p => { - const problem = problemsById[p][0]; - - return {identifier: p, source: problem.source, severity: problem.severity, problems: problemsById[p]}; - }, []); - - const critical = problems && problems.filter(p => p.severity === 'CRITICAL').length; - const high = problems && problems.filter(p => p.severity === 'HIGH').length; - const medium = problems && problems.filter(p => p.severity === 'MEDIUM').length; - const low = problems && problems.filter(p => p.severity === 'LOW').length; - - return ( - <> -
-
-
-
    -
  • {problems && Object.keys(problems).length} Problems
  • -
  • {critical}
  • -
  • {high}
  • -
  • {medium}
  • -
  • {low}
  • -
-
    -
  • {envType.charAt(0).toUpperCase() + envType.slice(1).toLowerCase()} environments
  • -
-
- -
- -
- ); - })} -
- - ); + )(({ data: { problems } }) => { + // Group problems by identifier + const problemsById = groupByProblemIdentifier(problems) || []; + const problemIdentifiers = + problemsById && + Object.keys(problemsById).map((p) => { + const problem = problemsById[p][0]; + + return { + identifier: p, + source: problem.source, + severity: problem.severity, + problems: problemsById[p], + }; + }, []); + + const critical = + problems && + problems.filter((p) => p.severity === "CRITICAL").length; + const high = + problems && problems.filter((p) => p.severity === "HIGH").length; + const medium = + problems && + problems.filter((p) => p.severity === "MEDIUM").length; + const low = + problems && problems.filter((p) => p.severity === "LOW").length; + + return ( + <> + +
+
+
    +
  • + + {problems && Object.keys(problems).length} Problems +
  • +
  • + + {critical} +
  • +
  • + + {high} +
  • +
  • + + {medium} +
  • +
  • + + {low} +
  • +
+
    +
  • + + {envType.charAt(0).toUpperCase() + + envType.slice(1).toLowerCase()}{" "} + environments +
  • +
+
+ +
+
+ + ); + })} +
+ + + ); }; export default ProblemsDashboardPage; diff --git a/src/pages/problems.js b/src/pages/problems.js index 3f60cd77..012021ab 100644 --- a/src/pages/problems.js +++ b/src/pages/problems.js @@ -1,19 +1,19 @@ -import React from 'react'; -import * as R from 'ramda'; -import { withRouter } from 'next/router'; -import Head from 'next/head'; -import { Query } from 'react-apollo'; -import MainLayout from 'layouts/MainLayout'; -import EnvironmentWithProblemsQuery from 'lib/query/EnvironmentWithProblems'; -import Breadcrumbs from 'components/Breadcrumbs'; -import ProjectBreadcrumb from 'components/Breadcrumbs/Project'; -import EnvironmentBreadcrumb from 'components/Breadcrumbs/Environment'; -import NavTabs from 'components/NavTabs'; -import Problems from 'components/Problems'; -import withQueryLoading from 'lib/withQueryLoading'; -import withQueryError from 'lib/withQueryError'; -import { withEnvironmentRequired } from 'lib/withDataRequired'; -import { bp, color } from 'lib/variables'; +import React from "react"; +import * as R from "ramda"; +import { withRouter } from "next/router"; +import Head from "next/head"; +import { Query } from "react-apollo"; +import MainLayout from "layouts/MainLayout"; +import EnvironmentWithProblemsQuery from "lib/query/EnvironmentWithProblems"; +import Breadcrumbs from "components/Breadcrumbs"; +import ProjectBreadcrumb from "components/Breadcrumbs/Project"; +import EnvironmentBreadcrumb from "components/Breadcrumbs/Environment"; +import NavTabs from "components/NavTabs"; +import Problems from "components/Problems"; +import withQueryLoading from "lib/withQueryLoading"; +import withQueryError from "lib/withQueryError"; +import { withEnvironmentRequired } from "lib/withDataRequired"; +import { CommonWrapperWNotification } from "../styles/commonPageStyles"; /** * Displays the problems page, given the name of an openshift project. @@ -32,17 +32,18 @@ export const PageProblems = ({ router }) => ( withQueryError, withEnvironmentRequired )(({ data: { environment } }) => { - - const problems = environment.problems && environment.problems.map(problem => { - return { - ...problem, - environment: { - id: environment.id, - openshiftProjectName: environment.openshiftProjectName, - project: environment.project - } - } - }); + const problems = + environment.problems && + environment.problems.map((problem) => { + return { + ...problem, + environment: { + id: environment.id, + openshiftProjectName: environment.openshiftProjectName, + project: environment.project, + }, + }; + }); return ( @@ -53,34 +54,12 @@ export const PageProblems = ({ router }) => ( projectSlug={environment.project.name} /> -
+
-
- +
); })} diff --git a/src/pages/project.js b/src/pages/project.js index 292af13f..6f89884c 100644 --- a/src/pages/project.js +++ b/src/pages/project.js @@ -1,18 +1,18 @@ -import React from 'react'; -import * as R from 'ramda'; -import { withRouter } from 'next/router'; -import Head from 'next/head'; -import { Query } from 'react-apollo'; -import MainLayout from 'layouts/MainLayout'; -import ProjectByNameQuery from 'lib/query/ProjectByName'; -import Breadcrumbs from 'components/Breadcrumbs'; -import ProjectBreadcrumb from 'components/Breadcrumbs/Project'; -import ProjectDetailsSidebar from 'components/ProjectDetailsSidebar'; -import Environments from 'components/Environments'; -import withQueryLoading from 'lib/withQueryLoading'; -import withQueryError from 'lib/withQueryError'; -import { withProjectRequired } from 'lib/withDataRequired'; -import { bp, color } from 'lib/variables'; +import React from "react"; +import * as R from "ramda"; +import { withRouter } from "next/router"; +import Head from "next/head"; +import { Query } from "react-apollo"; +import MainLayout from "layouts/MainLayout"; +import ProjectByNameQuery from "lib/query/ProjectByName"; +import Breadcrumbs from "components/Breadcrumbs"; +import ProjectBreadcrumb from "components/Breadcrumbs/Project"; +import ProjectDetailsSidebar from "components/ProjectDetailsSidebar"; +import Environments from "components/Environments"; +import withQueryLoading from "lib/withQueryLoading"; +import withQueryError from "lib/withQueryError"; +import { withProjectRequired } from "lib/withDataRequired"; +import { ProjectDetailsWrapper } from "../styles/pageStyles"; /** * Displays a project page, given the project name. @@ -34,8 +34,8 @@ export const PageProject = ({ router }) => ( // Sort alphabetically by environmentType and then deployType const environments = R.sortWith( [ - R.descend(R.prop('environmentType')), - R.ascend(R.prop('deployType')) + R.descend(R.prop("environmentType")), + R.ascend(R.prop("deployType")), ], project.environments ); @@ -45,7 +45,7 @@ export const PageProject = ({ router }) => ( -
+
@@ -54,47 +54,7 @@ export const PageProject = ({ router }) => ( {!environments.length &&

No Environments

}
-
- +
); })} diff --git a/src/pages/projects.js b/src/pages/projects.js index d8d38e40..446528e0 100644 --- a/src/pages/projects.js +++ b/src/pages/projects.js @@ -1,63 +1,39 @@ -import React from 'react'; -import * as R from 'ramda'; -import Head from 'next/head'; -import { Query } from 'react-apollo'; -import MainLayout from 'layouts/MainLayout'; -import AllProjectsQuery from 'lib/query/AllProjects'; -import Projects from 'components/Projects'; -import withQueryLoading from 'lib/withQueryLoading'; -import withQueryError from 'lib/withQueryError'; -import { bp } from 'lib/variables'; +import React from "react"; +import * as R from "ramda"; +import Head from "next/head"; +import { Query } from "react-apollo"; +import MainLayout from "layouts/MainLayout"; +import AllProjectsQuery from "lib/query/AllProjects"; +import Projects from "components/Projects"; +import withQueryLoading from "lib/withQueryLoading"; +import withQueryError from "lib/withQueryError"; +import { CommonWrapper } from "../styles/commonPageStyles"; /** * Displays the projects page. */ const ProjectsPage = () => { - return ( - <> - - Projects - - - {R.compose( - withQueryLoading, - withQueryError - )(({ data }) => ( - -
-

Projects

-
- -
-
- -
- ))} -
- ) - } -; - + <> + + Projects + + + {R.compose( + withQueryLoading, + withQueryError + )(({ data }) => ( + + +

Projects

+
+ +
+
+
+ ))} +
+ + ); +}; export default ProjectsPage; diff --git a/src/pages/settings/index.js b/src/pages/settings/index.js index 73bb8801..f8ee8929 100644 --- a/src/pages/settings/index.js +++ b/src/pages/settings/index.js @@ -1,14 +1,14 @@ -import React from 'react'; -import * as R from 'ramda'; -import Head from 'next/head'; -import { Query } from 'react-apollo'; -import MainLayout from 'layouts/MainLayout'; -import Me from 'lib/query/Me'; -import withQueryLoading from 'lib/withQueryLoading'; -import withQueryError from 'lib/withQueryError'; -import { bp } from 'lib/variables'; -import SshKeys from '../../components/SshKeys'; -import AddSshKey from '../../components/SshKeys/AddSshKey'; +import React from "react"; +import * as R from "ramda"; +import Head from "next/head"; +import { Query } from "react-apollo"; +import MainLayout from "layouts/MainLayout"; +import Me from "lib/query/Me"; +import withQueryLoading from "lib/withQueryLoading"; +import withQueryError from "lib/withQueryError"; +import SshKeys from "../../components/SshKeys"; +import AddSshKey from "../../components/SshKeys/AddSshKey"; +import { CommonWrapper } from "../../styles/commonPageStyles"; /** * Displays the user settings page. @@ -24,35 +24,13 @@ const SettingsPage = () => ( withQueryError )(({ data }) => ( -
+

SSH keys

-
- +
))} diff --git a/src/pages/task.js b/src/pages/task.js index fd00a000..11ed81cc 100644 --- a/src/pages/task.js +++ b/src/pages/task.js @@ -1,23 +1,23 @@ -import React from 'react'; -import * as R from 'ramda'; -import { withRouter } from 'next/router'; -import Head from 'next/head'; -import { Query } from 'react-apollo'; -import MainLayout from 'layouts/MainLayout'; -import EnvironmentWithTaskQuery from 'lib/query/EnvironmentWithTask'; -import Breadcrumbs from 'components/Breadcrumbs'; -import ProjectBreadcrumb from 'components/Breadcrumbs/Project'; -import EnvironmentBreadcrumb from 'components/Breadcrumbs/Environment'; -import TaskBreadcrumb from 'components/Breadcrumbs/Task'; -import NavTabs from 'components/NavTabs'; -import Task from 'components/Task'; -import withQueryLoading from 'lib/withQueryLoading'; -import withQueryError from 'lib/withQueryError'; +import React from "react"; +import * as R from "ramda"; +import { withRouter } from "next/router"; +import Head from "next/head"; +import { Query } from "react-apollo"; +import MainLayout from "layouts/MainLayout"; +import EnvironmentWithTaskQuery from "lib/query/EnvironmentWithTask"; +import Breadcrumbs from "components/Breadcrumbs"; +import ProjectBreadcrumb from "components/Breadcrumbs/Project"; +import EnvironmentBreadcrumb from "components/Breadcrumbs/Environment"; +import TaskBreadcrumb from "components/Breadcrumbs/Task"; +import NavTabs from "components/NavTabs"; +import Task from "components/Task"; +import withQueryLoading from "lib/withQueryLoading"; +import withQueryError from "lib/withQueryError"; import { withEnvironmentRequired, - withTaskRequired -} from 'lib/withDataRequired'; -import { bp } from 'lib/variables'; + withTaskRequired, +} from "lib/withDataRequired"; +import { TaskWrapper } from "../styles/pageStyles"; /** * Displays a task page, given the openshift project and task ID. @@ -31,7 +31,7 @@ export const PageTask = ({ router }) => ( query={EnvironmentWithTaskQuery} variables={{ openshiftProjectName: router.query.openshiftProjectName, - taskName: router.query.taskName + taskName: router.query.taskName, }} > {R.compose( @@ -54,24 +54,12 @@ export const PageTask = ({ router }) => ( taskName={environment.tasks[0].name} /> -
+
-
- + ))} diff --git a/src/pages/tasks.js b/src/pages/tasks.js index 1deb3afa..32cd52c8 100644 --- a/src/pages/tasks.js +++ b/src/pages/tasks.js @@ -1,23 +1,23 @@ -import React from 'react'; -import * as R from 'ramda'; -import { withRouter } from 'next/router'; -import Head from 'next/head'; -import getConfig from 'next/config'; -import { Query } from 'react-apollo'; -import MainLayout from 'layouts/MainLayout'; -import EnvironmentWithTasksQuery from 'lib/query/EnvironmentWithTasks'; -import TasksSubscription from 'lib/subscription/Tasks'; -import Breadcrumbs from 'components/Breadcrumbs'; -import ProjectBreadcrumb from 'components/Breadcrumbs/Project'; -import EnvironmentBreadcrumb from 'components/Breadcrumbs/Environment'; -import NavTabs from 'components/NavTabs'; -import AddTask from 'components/AddTask'; -import Tasks from 'components/Tasks'; -import ResultsLimited from 'components/ResultsLimited'; -import withQueryLoading from 'lib/withQueryLoading'; -import withQueryError from 'lib/withQueryError'; -import { withEnvironmentRequired } from 'lib/withDataRequired'; -import { bp } from 'lib/variables'; +import React from "react"; +import * as R from "ramda"; +import { withRouter } from "next/router"; +import Head from "next/head"; +import getConfig from "next/config"; +import { Query } from "react-apollo"; +import MainLayout from "layouts/MainLayout"; +import EnvironmentWithTasksQuery from "lib/query/EnvironmentWithTasks"; +import TasksSubscription from "lib/subscription/Tasks"; +import Breadcrumbs from "components/Breadcrumbs"; +import ProjectBreadcrumb from "components/Breadcrumbs/Project"; +import EnvironmentBreadcrumb from "components/Breadcrumbs/Environment"; +import NavTabs from "components/NavTabs"; +import Tasks from "components/Tasks"; +import ResultsLimited from "components/ResultsLimited"; +import withQueryLoading from "lib/withQueryLoading"; +import withQueryError from "lib/withQueryError"; +import { withEnvironmentRequired } from "lib/withDataRequired"; +import { TasksWrapper } from "../styles/pageStyles"; +import AddTask from "components/AddTask"; const { publicRuntimeConfig } = getConfig(); const envLimit = parseInt(publicRuntimeConfig.LAGOON_UI_TASKS_LIMIT, 10); @@ -27,13 +27,13 @@ let urlResultLimit = envLimit; if (typeof window !== "undefined") { let search = window.location.search; let params = new URLSearchParams(search); - let limit = params.get('limit'); + let limit = params.get("limit"); if (limit) { if (parseInt(limit.trim(), 10)) { urlResultLimit = parseInt(limit.trim(), 10); } if (limit == "all") { - urlResultLimit = -1 + urlResultLimit = -1; } } } @@ -50,7 +50,7 @@ export const PageTasks = ({ router }) => ( query={EnvironmentWithTasksQuery} variables={{ openshiftProjectName: router.query.openshiftProjectName, - limit: resultLimit + limit: resultLimit, }} > {R.compose( @@ -66,7 +66,7 @@ export const PageTasks = ({ router }) => ( const prevTasks = prevStore.environment.tasks; const incomingTask = subscriptionData.data.taskChanged; const existingIndex = prevTasks.findIndex( - prevTask => prevTask.id === incomingTask.id + (prevTask) => prevTask.id === incomingTask.id ); let newTasks; @@ -77,7 +77,7 @@ export const PageTasks = ({ router }) => ( // Updated task else { newTasks = Object.assign([...prevTasks], { - [existingIndex]: incomingTask + [existingIndex]: incomingTask, }); } @@ -85,12 +85,12 @@ export const PageTasks = ({ router }) => ( ...prevStore, environment: { ...prevStore.environment, - tasks: newTasks - } + tasks: newTasks, + }, }; return newStore; - } + }, }); return ( @@ -102,7 +102,7 @@ export const PageTasks = ({ router }) => ( projectSlug={environment.project.name} /> -
+
@@ -114,23 +114,13 @@ export const PageTasks = ({ router }) => (
-
- + ); })} diff --git a/src/styles/commonPageStyles.js b/src/styles/commonPageStyles.js new file mode 100644 index 00000000..c13dfde2 --- /dev/null +++ b/src/styles/commonPageStyles.js @@ -0,0 +1,92 @@ +import styled from "styled-components"; +import { bp, color } from "lib/variables"; + +export const commonBg = ` +background-color: rgb(250, 250, 252); +flex: 1 0 auto; +width: 100%; +`; + +export const CommonWrapper = styled.div` + ${commonBg} + h2 { + margin: 38px calc((100vw / 16) * 1) 0; + @media ${bp.wideUp} { + margin: 62px calc((100vw / 16) * 2) 0; + } + @media ${bp.extraWideUp} { + margin: 62px calc((100vw / 16) * 3) 0; + } + } + & > .content { + margin: 38px calc((100vw / 16) * 1); + @media ${bp.wideUp} { + margin: 38px calc((100vw / 16) * 2); + } + @media ${bp.extraWideUp} { + margin: 38px calc((100vw / 16) * 3); + } + } +`; + +export const CommonWrapperMargin = styled.div` + ${commonBg} + h2 { + margin: 38px calc((100vw / 16) * 1) 0; + @media ${bp.wideUp} { + margin: 62px calc((100vw / 16) * 1) 0; + } + @media ${bp.extraWideUp} { + margin: 62px calc((100vw / 16) * 2) 0; + } + } + & > .content { + margin: 38px calc((100vw / 16) * 1); + @media ${bp.wideUp} { + margin: 38px calc((100vw / 16) * 1); + } + @media ${bp.extraWideUp} { + margin: 38px calc((100vw / 16) * 2); + } + } +`; + +export const CommonWrapperWNotification = styled.div` + ${commonBg} + @media ${bp.tabletUp} { + display: flex; + padding: 0; + } + + & > .content { + padding: 32px calc((100vw / 16) * 1); + width: 100%; + + .notification { + background-color: ${color.lightBlue}; + color: ${color.white}; + padding: 10px 20px; + } + } +`; + +export const CommonFiltersWrapper = styled.div` + ${commonBg} + margin: 38px calc((100vw / 16) * 1); + @media ${bp.wideUp} { + margin: 38px calc((100vw / 16) * 2); + } + @media ${bp.extraWideUp} { + margin: 38px calc((100vw / 16) * 3); + } + .filters { + display: flex; + justify-content: space-between; + padding-bottom: 1em; + flex-direction: column; + + @media ${bp.wideUp} { + flex-flow: row; + } + } +`; diff --git a/src/styles/pageStyles.js b/src/styles/pageStyles.js new file mode 100644 index 00000000..bf784b9e --- /dev/null +++ b/src/styles/pageStyles.js @@ -0,0 +1,316 @@ +import styled from "styled-components"; +import { bp, color } from "lib/variables"; +import { commonBg } from "./commonPageStyles"; + +export const ProblemsByDashBoard = styled.div` + ${commonBg}; + .filters-wrapper, + .project-filter { + margin: 32px calc((100vw / 16) * 1); + @media ${bp.wideUp} { + margin: 32px calc((100vw / 16) * 2); + } + @media ${bp.extraWideUp} { + margin: 32px calc((100vw / 16) * 3); + } + .filters { + display: flex; + flex-direction: column; + @media ${bp.wideUp} { + flex-flow: row; + } + + &:first-child { + padding-bottom: 1em; + } + } + } + .extra-filters { + padding: 0 15px; + } + .content-wrapper { + h2 { + margin: 38px calc((100vw / 16) * 1) 0; + @media ${bp.wideUp} { + margin: 62px calc((100vw / 16) * 2) 0; + } + @media ${bp.extraWideUp} { + margin: 62px calc((100vw / 16) * 3) 0; + } + } + .content { + background: #fff; + margin: 0 calc((100vw / 16) * 1); + @media ${bp.wideUp} { + margin: 0 calc((100vw / 16) * 2); + } + @media ${bp.extraWideUp} { + margin: 0 calc((100vw / 16) * 3); + } + li.result { + display: inline; + } + } + .environment-wrapper { + padding: 0 1em 1em; + background: #fefefe; + margin: 0 0 2em; + + h4 { + font-weight: 500; + } + } + .data-none { + display: flex; + justify-content: space-between; + padding: 1em; + border: 1px solid #efefef; + } + } + + .project { + padding: 20px; + background: rgb(255, 255, 255); + margin-bottom: 20px; + } + .content-wrapper { + .results { + margin-bottom: 20px; + .content { + background: rgb(241, 241, 241) !important; + padding: 0px 15px; + .label { + color: rgb(95, 111, 122); + font-family: source-code-pro, sans-serif; + font-size: 0.8125rem; + line-height: 1.35417rem; + text-transform: uppercase; + } + } + } + } +`; +export const DeploymentWrapper = styled.div` + flex: 1; + ${commonBg}; + @media ${bp.tabletUp} { + display: flex; + padding: 0; + } + + & > .content { + width: 100%; + } +`; + +export const DeploymentsWrapper = styled.div` + ${commonBg}; + flex: 1; + @media ${bp.tabletUp} { + display: flex; + padding: 0; + } + + & > .content { + padding: 32px calc((100vw / 16) * 1); + width: 100%; + } +`; + +export const EnvironmentWrapper = styled.div` + ${commonBg}; + flex: 1; + @media ${bp.tabletUp} { + display: flex; + padding: 0; + } +`; + +export const ProblemsDashBoardWrapper = styled.div` + ${commonBg}; + flex: 1; + h2 { + margin: 38px calc((100vw / 16) * 1) 0; + @media ${bp.wideUp} { + margin: 62px calc((100vw / 16) * 2) 0; + } + @media ${bp.extraWideUp} { + margin: 62px calc((100vw / 16) * 3) 0; + } + } + & > .content { + margin: 38px calc((100vw / 16) * 1); + @media ${bp.wideUp} { + margin: 38px calc((100vw / 16) * 2); + } + @media ${bp.extraWideUp} { + margin: 38px calc((100vw / 16) * 3); + } + + li.result { + display: inline; + padding: 0 20px 0 0; + } + } +`; + +export const TasksWrapper = styled.div` + ${commonBg}; + @media ${bp.tabletUp} { + display: flex; + padding: 0; + } + + & > .content { + padding: 32px calc((100vw / 16) * 1); + width: 100%; + } +`; + +export const TaskWrapper = styled.div` + ${commonBg}; + flex: 1; + @media ${bp.tabletUp} { + display: flex; + padding: 0; + } + + & > .content { + width: 100%; + } +`; + +export const ProjectDetailsWrapper = styled.div` + @media ${bp.tabletUp} { + display: flex; + justify-content: space-between; + } + + ${commonBg}; + .project-details-sidebar { + background-color: ${color.lightestGrey}; + border-right: 1px solid ${color.midGrey}; + width: 100%; + display: flex; + justify-content: center; + align-items: flex-start; + @media ${bp.tabletUp} { + min-width: 50%; + width: 50%; + } + @media ${bp.desktopUp} { + min-width: 40%; + width: 40%; + } + @media ${bp.wideUp} { + min-width: 33.33%; + width: 33.33%; + width: calc((100vw / 16) * 5); + } + } + + .environments-wrapper { + flex-grow: 1; + padding: 40px calc((100vw / 16) * 1); + } +`; + +export const StyledProblemsDashBoardByProject = styled.div` + .filters-wrapper, + .project-filter { + margin: 32px calc((100vw / 16) * 1); + @media ${bp.wideUp} { + margin: 32px calc((100vw / 16) * 2); + } + @media ${bp.extraWideUp} { + margin: 32px calc((100vw / 16) * 3); + } + .filters { + @media ${bp.wideUp} { + display: flex; + justify-content: space-between; + + &:first-child { + padding-bottom: 1em; + } + } + } + } + + .content-wrapper { + h2 { + margin: 38px calc((100vw / 16) * 1) 0; + @media ${bp.wideUp} { + margin: 62px calc((100vw / 16) * 2) 0; + } + @media ${bp.extraWideUp} { + margin: 62px calc((100vw / 16) * 3) 0; + } + } + .results { + padding: 5px 0 5px; + background: #f3f3f3; + margin-bottom: 1em; + } + .content { + margin: 0 calc((100vw / 16) * 1); + @media ${bp.wideUp} { + margin: 0 calc((100vw / 16) * 2); + } + @media ${bp.extraWideUp} { + margin: 0 calc((100vw / 16) * 3); + } + li.result { + display: inline; + } + } + .projects { + padding-bottom: 20px; + } + .project-overview { + background: #fff; + } + .overview { + .overview-list { + margin: 0; + padding: 0.8em 0; + background: #f3f3f3; + } + } + .environment-wrapper { + padding: 0 1em 1em; + background: #fefefe; + margin: 0 0 2em; + + h5 { + margin: 2em 0.5em; + font-weight: 500; + } + } + .data-none { + display: flex; + justify-content: space-between; + padding: 1em; + border: 1px solid #efefef; + } + } +`; + +export const ProblemDashboardFilterWrapper = styled.div` + margin: 38px calc((100vw / 16) * 1); + @media ${bp.wideUp} { + margin: 38px calc((100vw / 16) * 2); + } + @media ${bp.extraWideUp} { + margin: 38px calc((100vw / 16) * 3); + } + .filters { + display: flex; + justify-content: space-between; + padding-bottom: 1em; + flex-direction: column; + @media ${bp.wideUp} { + flex-flow: row; + } + } +`; diff --git a/src/webpack.shared-config.js b/src/webpack.shared-config.js index 31ffdc12..ad8b8f93 100644 --- a/src/webpack.shared-config.js +++ b/src/webpack.shared-config.js @@ -1,7 +1,7 @@ const path = require('path'); module.exports = { - extensions: ['.js'], + extensions: ['.js',".tsx"], alias: { components: path.join(__dirname, 'components'), layouts: path.join(__dirname, 'layouts'), diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..fc02ab7e --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "target": "es6", + "baseUrl": "./", + "paths": { + "components/*": ["src/components/*"], + "layouts/*": ["src/layouts/*"], + "lib/*": ["src/lib/*"], + "pages/*": ["src/pages/*"], + }, + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "suppressImplicitAnyIndexErrors": true, + "noEmit": true, + "incremental": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve" + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], + "exclude": ["node_modules"] +} diff --git a/yarn.lock b/yarn.lock index 4b94b859..94fe7805 100644 --- a/yarn.lock +++ b/yarn.lock @@ -21,9 +21,9 @@ "@octokit/plugin-rest-endpoint-methods" "^5.13.0" "@actions/http-client@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@actions/http-client/-/http-client-2.0.1.tgz#873f4ca98fe32f6839462a6f046332677322f99c" - integrity sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw== + version "2.1.0" + resolved "https://registry.yarnpkg.com/@actions/http-client/-/http-client-2.1.0.tgz#b6d8c3934727d6a50d10d19f00a711a964599a9f" + integrity sha512-BonhODnXr3amchh4qkmjPMUO8mFi/zLaaCeCAJZqch8iQqyDnVIkySjB38VHAC8IJ+bnlgfOqlhpyCUZHlQsqw== dependencies: tunnel "^0.0.6" @@ -95,37 +95,37 @@ source-map "^0.5.0" "@babel/core@^7.1.0", "@babel/core@^7.13.16", "@babel/core@^7.4.5", "@babel/core@^7.7.4", "@babel/core@^7.7.5": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.0.tgz#1341aefdcc14ccc7553fcc688dd8986a2daffc13" - integrity sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA== + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.3.tgz#cf1c877284a469da5d1ce1d1e53665253fae712e" + integrity sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw== dependencies: "@ampproject/remapping" "^2.2.0" "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.21.0" + "@babel/generator" "^7.21.3" "@babel/helper-compilation-targets" "^7.20.7" - "@babel/helper-module-transforms" "^7.21.0" + "@babel/helper-module-transforms" "^7.21.2" "@babel/helpers" "^7.21.0" - "@babel/parser" "^7.21.0" + "@babel/parser" "^7.21.3" "@babel/template" "^7.20.7" - "@babel/traverse" "^7.21.0" - "@babel/types" "^7.21.0" + "@babel/traverse" "^7.21.3" + "@babel/types" "^7.21.3" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.2" semver "^6.3.0" -"@babel/generator@^7.12.11", "@babel/generator@^7.12.5", "@babel/generator@^7.21.0", "@babel/generator@^7.21.1", "@babel/generator@^7.4.0": - version "7.21.1" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.1.tgz#951cc626057bc0af2c35cd23e9c64d384dea83dd" - integrity sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA== +"@babel/generator@^7.12.11", "@babel/generator@^7.12.5", "@babel/generator@^7.21.3", "@babel/generator@^7.4.0": + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.3.tgz#232359d0874b392df04045d72ce2fd9bb5045fce" + integrity sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA== dependencies: - "@babel/types" "^7.21.0" + "@babel/types" "^7.21.3" "@jridgewell/gen-mapping" "^0.3.2" "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" -"@babel/helper-annotate-as-pure@^7.18.6": +"@babel/helper-annotate-as-pure@^7.16.0", "@babel/helper-annotate-as-pure@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== @@ -219,14 +219,14 @@ dependencies: "@babel/types" "^7.21.0" -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.18.6": +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.16.0", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11", "@babel/helper-module-transforms@^7.21.0", "@babel/helper-module-transforms@^7.21.2": +"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11", "@babel/helper-module-transforms@^7.21.2": version "7.21.2" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz#160caafa4978ac8c00ac66636cb0fa37b024e2d2" integrity sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ== @@ -343,10 +343,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.12.7", "@babel/parser@^7.13.12", "@babel/parser@^7.13.16", "@babel/parser@^7.16.4", "@babel/parser@^7.20.7", "@babel/parser@^7.21.0", "@babel/parser@^7.21.2", "@babel/parser@^7.4.2", "@babel/parser@^7.4.3", "@babel/parser@^7.6.0", "@babel/parser@^7.9.6": - version "7.21.2" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.2.tgz#dacafadfc6d7654c3051a66d6fe55b6cb2f2a0b3" - integrity sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ== +"@babel/parser@^7.12.7", "@babel/parser@^7.13.12", "@babel/parser@^7.13.16", "@babel/parser@^7.16.4", "@babel/parser@^7.20.7", "@babel/parser@^7.21.3", "@babel/parser@^7.4.2", "@babel/parser@^7.4.3", "@babel/parser@^7.6.0", "@babel/parser@^7.9.6": + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.3.tgz#1d285d67a19162ff9daa358d4cb41d50c06220b3" + integrity sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" @@ -689,9 +689,9 @@ "@babel/template" "^7.20.7" "@babel/plugin-transform-destructuring@^7.20.2": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz#8bda578f71620c7de7c93af590154ba331415454" - integrity sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA== + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz#73b46d0fd11cd6ef57dea8a381b1215f4959d401" + integrity sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA== dependencies: "@babel/helper-plugin-utils" "^7.20.2" @@ -815,9 +815,9 @@ "@babel/helper-replace-supers" "^7.18.6" "@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.20.1", "@babel/plugin-transform-parameters@^7.20.7": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz#0ee349e9d1bc96e78e3b37a7af423a4078a7083f" - integrity sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA== + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz#18fc4e797cf6d6d972cb8c411dbe8a809fa157db" + integrity sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ== dependencies: "@babel/helper-plugin-utils" "^7.20.2" @@ -829,9 +829,9 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-react-constant-elements@^7.0.0", "@babel/plugin-transform-react-constant-elements@^7.2.0", "@babel/plugin-transform-react-constant-elements@^7.6.3": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.20.2.tgz#3f02c784e0b711970d7d8ccc96c4359d64e27ac7" - integrity sha512-KS/G8YI8uwMGKErLFOHS/ekhqdHhpEloxs43NecQHVgo2QuQSyJhGIY1fL8UGl9wy5ItVwwoUL4YxVqsplGq2g== + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.21.3.tgz#b32a5556100d424b25e388dd689050d78396884d" + integrity sha512-4DVcFeWe/yDYBLp0kBmOGFJ6N2UYg7coGid1gdxb4co62dy/xISDMaYBXBVXEDhfgMk7qkbcYiGtwd5Q/hwDDQ== dependencies: "@babel/helper-plugin-utils" "^7.20.2" @@ -920,10 +920,11 @@ "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-typescript@^7.21.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.0.tgz#f0956a153679e3b377ae5b7f0143427151e4c848" - integrity sha512-xo///XTPp3mDzTtrqXoBlK9eiAYW3wv9JXglcn/u1bi60RW11dEUxIgA8cbnDhutS1zacjMRmAwxE0gMklLnZg== + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.3.tgz#316c5be579856ea890a57ebc5116c5d064658f2b" + integrity sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw== dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-create-class-features-plugin" "^7.21.0" "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-typescript" "^7.20.0" @@ -1081,7 +1082,7 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.3", "@babel/runtime@^7.15.4", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.3", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.7", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw== @@ -1097,26 +1098,26 @@ "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" -"@babel/traverse@^7.1.6", "@babel/traverse@^7.12.9", "@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7", "@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2", "@babel/traverse@^7.4.3": - version "7.21.2" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.2.tgz#ac7e1f27658750892e815e60ae90f382a46d8e75" - integrity sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw== +"@babel/traverse@^7.1.6", "@babel/traverse@^7.12.9", "@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7", "@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2", "@babel/traverse@^7.21.3", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.5": + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.3.tgz#4747c5e7903d224be71f90788b06798331896f67" + integrity sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ== dependencies: "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.21.1" + "@babel/generator" "^7.21.3" "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-function-name" "^7.21.0" "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.21.2" - "@babel/types" "^7.21.2" + "@babel/parser" "^7.21.3" + "@babel/types" "^7.21.3" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.12.7", "@babel/types@^7.18.6", "@babel/types@^7.18.8", "@babel/types@^7.18.9", "@babel/types@^7.2.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.2", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.6.1", "@babel/types@^7.9.6": - version "7.21.2" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.2.tgz#92246f6e00f91755893c2876ad653db70c8310d1" - integrity sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw== +"@babel/types@^7.12.7", "@babel/types@^7.18.6", "@babel/types@^7.18.8", "@babel/types@^7.18.9", "@babel/types@^7.2.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.2", "@babel/types@^7.21.3", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.6.1", "@babel/types@^7.9.6": + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.3.tgz#4865a5357ce40f64e3400b0f3b737dc6d4f64d05" + integrity sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg== dependencies: "@babel/helper-string-parser" "^7.19.4" "@babel/helper-validator-identifier" "^7.19.1" @@ -1155,6 +1156,23 @@ resolved "https://registry.yarnpkg.com/@egoist/vue-to-react/-/vue-to-react-1.2.0.tgz#ae8dfdadae5a0a14ecc6b44c86ae339bc1622082" integrity sha512-uUtkzw+jtB1t++XjgwmzD/cgPVs7ZWyypw/IjciwZHNWODb/Ij19KJIkwxxKqokzopxmgbJKK4a5Zj9d9+WrPA== +"@emotion/babel-plugin@^11.10.6": + version "11.10.6" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.10.6.tgz#a68ee4b019d661d6f37dec4b8903255766925ead" + integrity sha512-p2dAqtVrkhSa7xz1u/m9eHYdLi+en8NowrmXeF/dKtJpU8lCWli8RUAati7NcSl0afsBott48pdnANuD0wh9QQ== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/runtime" "^7.18.3" + "@emotion/hash" "^0.9.0" + "@emotion/memoize" "^0.8.0" + "@emotion/serialize" "^1.1.1" + babel-plugin-macros "^3.1.0" + convert-source-map "^1.5.0" + escape-string-regexp "^4.0.0" + find-root "^1.1.0" + source-map "^0.5.7" + stylis "4.1.3" + "@emotion/cache@^10.0.27", "@emotion/cache@^10.0.9": version "10.0.29" resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-10.0.29.tgz#87e7e64f412c060102d589fe7c6dc042e6f9d1e0" @@ -1165,6 +1183,17 @@ "@emotion/utils" "0.11.3" "@emotion/weak-memoize" "0.2.5" +"@emotion/cache@^11.10.5", "@emotion/cache@^11.4.0": + version "11.10.5" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.10.5.tgz#c142da9351f94e47527ed458f7bbbbe40bb13c12" + integrity sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA== + dependencies: + "@emotion/memoize" "^0.8.0" + "@emotion/sheet" "^1.2.1" + "@emotion/utils" "^1.2.0" + "@emotion/weak-memoize" "^0.3.0" + stylis "4.1.3" + "@emotion/core@^10.0.20", "@emotion/core@^10.0.28", "@emotion/core@^10.0.9": version "10.3.1" resolved "https://registry.yarnpkg.com/@emotion/core/-/core-10.3.1.tgz#4021b6d8b33b3304d48b0bb478485e7d7421c69d" @@ -1191,6 +1220,11 @@ resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== +"@emotion/hash@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.0.tgz#c5153d50401ee3c027a57a177bc269b16d889cb7" + integrity sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ== + "@emotion/is-prop-valid@0.8.8": version "0.8.8" resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" @@ -1198,11 +1232,37 @@ dependencies: "@emotion/memoize" "0.7.4" +"@emotion/is-prop-valid@^1.1.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz#7f2d35c97891669f7e276eb71c83376a5dc44c83" + integrity sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg== + dependencies: + "@emotion/memoize" "^0.8.0" + "@emotion/memoize@0.7.4": version "0.7.4" resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== +"@emotion/memoize@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.0.tgz#f580f9beb67176fa57aae70b08ed510e1b18980f" + integrity sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA== + +"@emotion/react@^11.8.1": + version "11.10.6" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.10.6.tgz#dbe5e650ab0f3b1d2e592e6ab1e006e75fd9ac11" + integrity sha512-6HT8jBmcSkfzO7mc+N1L9uwvOnlcGoix8Zn7srt+9ga0MjREo6lRpuVX0kzo6Jp6oTqDhREOFsygN6Ew4fEQbw== + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.10.6" + "@emotion/cache" "^11.10.5" + "@emotion/serialize" "^1.1.1" + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" + "@emotion/utils" "^1.2.0" + "@emotion/weak-memoize" "^0.3.0" + hoist-non-react-statics "^3.3.1" + "@emotion/serialize@^0.11.15", "@emotion/serialize@^0.11.16": version "0.11.16" resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-0.11.16.tgz#dee05f9e96ad2fb25a5206b6d759b2d1ed3379ad" @@ -1214,11 +1274,27 @@ "@emotion/utils" "0.11.3" csstype "^2.5.7" +"@emotion/serialize@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.1.tgz#0595701b1902feded8a96d293b26be3f5c1a5cf0" + integrity sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA== + dependencies: + "@emotion/hash" "^0.9.0" + "@emotion/memoize" "^0.8.0" + "@emotion/unitless" "^0.8.0" + "@emotion/utils" "^1.2.0" + csstype "^3.0.2" + "@emotion/sheet@0.9.4": version "0.9.4" resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-0.9.4.tgz#894374bea39ec30f489bbfc3438192b9774d32e5" integrity sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA== +"@emotion/sheet@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.1.tgz#0767e0305230e894897cadb6c8df2c51e61a6c2c" + integrity sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA== + "@emotion/styled-base@^10.3.0": version "10.3.0" resolved "https://registry.yarnpkg.com/@emotion/styled-base/-/styled-base-10.3.0.tgz#9aa2c946100f78b47316e4bc6048321afa6d4e36" @@ -1237,26 +1313,109 @@ "@emotion/styled-base" "^10.3.0" babel-plugin-emotion "^10.0.27" -"@emotion/stylis@0.8.5": +"@emotion/stylis@0.8.5", "@emotion/stylis@^0.8.4": version "0.8.5" resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== -"@emotion/unitless@0.7.5": +"@emotion/unitless@0.7.5", "@emotion/unitless@^0.7.4": version "0.7.5" resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== +"@emotion/unitless@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.0.tgz#a4a36e9cbdc6903737cd20d38033241e1b8833db" + integrity sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw== + +"@emotion/use-insertion-effect-with-fallbacks@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz#ffadaec35dbb7885bd54de3fa267ab2f860294df" + integrity sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A== + "@emotion/utils@0.11.3": version "0.11.3" resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-0.11.3.tgz#a759863867befa7e583400d322652a3f44820924" integrity sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw== +"@emotion/utils@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.0.tgz#9716eaccbc6b5ded2ea5a90d65562609aab0f561" + integrity sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw== + "@emotion/weak-memoize@0.2.5": version "0.2.5" resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== +"@emotion/weak-memoize@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz#ea89004119dc42db2e1dba0f97d553f7372f6fcb" + integrity sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg== + +"@eslint-community/eslint-utils@^4.2.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.3.0.tgz#a556790523a351b4e47e9d385f47265eaaf9780a" + integrity sha512-v3oplH6FYCULtFuCeqyuTd9D2WKO937Dxdq+GmHOLL72TTRriLxz2VLlNfkZRsvj6PKnOPAtuT6dwrs/pA5DvA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.4.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.4.0.tgz#3e61c564fcd6b921cb789838631c5ee44df09403" + integrity sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ== + +"@eslint/eslintrc@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.1.tgz#7888fe7ec8f21bc26d646dbd2c11cd776e21192d" + integrity sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.5.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.36.0": + version "8.36.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.36.0.tgz#9837f768c03a1e4a30bd304a64fb8844f0e72efe" + integrity sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg== + +"@floating-ui/core@^1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.2.4.tgz#89e6311b021190c9e121fcf20306e76ac66e4066" + integrity sha512-SQOeVbMwb1di+mVWWJLpsUTToKfqVNioXys011beCAhyOIFtS+GQoW4EQSneuxzmQKddExDwQ+X0hLl4lJJaSQ== + +"@floating-ui/dom@^1.0.1": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.2.5.tgz#c9ec259a24ce0958b1ea29674df4eee4455361a9" + integrity sha512-+sAUfpQ3Frz+VCbPCqj+cZzvEESy3fjSeT/pDWkYCWOBXYNNKZfuVsHuv8/JO2zze8+Eb/Q7a6hZVgzS81fLbQ== + dependencies: + "@floating-ui/core" "^1.2.4" + +"@humanwhocodes/config-array@^0.11.8": + version "0.11.8" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" + integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + "@hypnosphi/create-react-context@^0.3.1": version "0.3.1" resolved "https://registry.yarnpkg.com/@hypnosphi/create-react-context/-/create-react-context-0.3.1.tgz#f8bfebdc7665f5d426cba3753e0e9c7d3154d7c6" @@ -1382,7 +1541,7 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": version "0.3.17" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== @@ -1447,6 +1606,13 @@ resolved "https://registry.yarnpkg.com/@next/env/-/env-12.3.4.tgz#c787837d36fcad75d72ff8df6b57482027d64a47" integrity sha512-H/69Lc5Q02dq3o+dxxy5O/oNxFsZpdL6WREtOOtOM1B/weonIwDXkekr1KV5DPVPr12IHFPrMrcJQ6bgPMfn7A== +"@next/eslint-plugin-next@13.2.4": + version "13.2.4" + resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-13.2.4.tgz#3e124cd10ce24dab5d3448ce04104b4f1f4c6ca7" + integrity sha512-ck1lI+7r1mMJpqLNa3LJ5pxCfOB1lfJncKmRJeJxcJqcngaFwylreLP7da6Rrjr6u2gVRTfmnkSkjc80IiQCwQ== + dependencies: + glob "7.1.7" + "@next/swc-android-arm-eabi@12.3.4": version "12.3.4" resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.3.4.tgz#fd1c2dafe92066c6120761c6a39d19e666dc5dd0" @@ -1512,11 +1678,32 @@ resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.3.4.tgz#d28ea15a72cdcf96201c60a43e9630cd7fda168f" integrity sha512-DQ20JEfTBZAgF8QCjYfJhv2/279M6onxFjdG/+5B0Cyj00/EdBxiWb2eGGFgQhrBbNv/lsvzFbbi0Ptf8Vw/bg== +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + "@nodelib/fs.stat@^1.1.2": version "1.1.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + "@octokit/auth-token@^2.4.4": version "2.5.0" resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36" @@ -1603,6 +1790,18 @@ dependencies: "@octokit/openapi-types" "^12.11.0" +"@pkgr/utils@^2.3.1": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.3.1.tgz#0a9b06ffddee364d6642b3cd562ca76f55b34a03" + integrity sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw== + dependencies: + cross-spawn "^7.0.3" + is-glob "^4.0.3" + open "^8.4.0" + picocolors "^1.0.0" + tiny-glob "^0.2.9" + tslib "^2.4.0" + "@reach/router@^1.2.1": version "1.3.4" resolved "https://registry.yarnpkg.com/@reach/router/-/router-1.3.4.tgz#d2574b19370a70c80480ed91f3da840136d10f8c" @@ -1613,6 +1812,11 @@ prop-types "^15.6.1" react-lifecycles-compat "^3.0.4" +"@rushstack/eslint-patch@^1.1.3": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz#8be36a1f66f3265389e90b5f9c9962146758f728" + integrity sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg== + "@samverschueren/stream-to-observable@^0.3.0": version "0.3.1" resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz#a21117b19ee9be70c379ec1877537ef2e1c63301" @@ -2340,9 +2544,9 @@ "@types/estree" "*" "@types/eslint@*": - version "8.21.1" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.21.1.tgz#110b441a210d53ab47795124dbc3e9bb993d1e7c" - integrity sha512-rc9K8ZpVjNcLs8Fp0dkozd5Pt2Apk1glO4Vgz8ix1u6yFByxfqo5Yavpy65o+93TAe24jr7v+eSBtFLvOQtCRQ== + version "8.21.3" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.21.3.tgz#5794b3911f0f19e34e3a272c49cbdf48d6f543f2" + integrity sha512-fa7GkppZVEByMWGbTtE5MbmXWJTVbrjjaS8K6uQj+XtuuUv1fsuPAxhygfqLmsb/Ufb3CV8deFCpiMfAgi00Sw== dependencies: "@types/estree" "*" "@types/json-schema" "*" @@ -2357,6 +2561,11 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== +"@types/git-url-parse@^9.0.1": + version "9.0.1" + resolved "https://registry.yarnpkg.com/@types/git-url-parse/-/git-url-parse-9.0.1.tgz#1c7cc89527ca8b5afcf260ead3b0e4e373c43938" + integrity sha512-Zf9mY4Mz7N3Nyi341nUkOtgVUQn4j6NS4ndqEha/lOgEbTkHzpD7wZuRagYKzrXNtvawWfsrojoC1nhsQexvNA== + "@types/hast@^2.0.0": version "2.3.4" resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.4.tgz#8aa5ef92c117d20d974a82bdfb6a648b08c0bafc" @@ -2364,7 +2573,7 @@ dependencies: "@types/unist" "*" -"@types/hoist-non-react-statics@^3.3.0": +"@types/hoist-non-react-statics@*", "@types/hoist-non-react-statics@^3.3.0": version "3.3.1" resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f" integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== @@ -2402,15 +2611,20 @@ "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" -"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8": +"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.11" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + "@types/mdast@^3.0.0": - version "3.0.10" - resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af" - integrity sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA== + version "3.0.11" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.11.tgz#dc130f7e7d9306124286f6d6cee40cf4d14a3dc0" + integrity sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw== dependencies: "@types/unist" "*" @@ -2420,9 +2634,9 @@ integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== "@types/node@*", "@types/node@>=6": - version "18.14.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.14.1.tgz#90dad8476f1e42797c49d6f8b69aaf9f876fc69f" - integrity sha512-QH+37Qds3E0eDlReeboBxfHbX9omAcBCXEzswCu6jySP642jiM3cYSIkU/REqwhCUqXdonHFuBfJDiAJxMNhaQ== + version "18.15.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.5.tgz#3af577099a99c61479149b716183e70b5239324a" + integrity sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew== "@types/normalize-package-data@^2.4.0": version "2.4.1" @@ -2469,6 +2683,20 @@ "@types/react" "*" "@types/reactcss" "*" +"@types/react-dom@^18.0.11": + version "18.0.11" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.11.tgz#321351c1459bc9ca3d216aefc8a167beec334e33" + integrity sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw== + dependencies: + "@types/react" "*" + +"@types/react-highlight-words@^0.16.4": + version "0.16.4" + resolved "https://registry.yarnpkg.com/@types/react-highlight-words/-/react-highlight-words-0.16.4.tgz#441b6f05c27ce6ab76833803a84bc385f0a1e8f2" + integrity sha512-KITBX3xzheQLu2s3bUgLmRE7ekmhc52zRjRTwkKayQARh30L4fjEGzGm7ULK9TuX2LgxWWavZqyQGDGjAHbL3w== + dependencies: + "@types/react" "*" + "@types/react-redux@^7.1.20": version "7.1.25" resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.25.tgz#de841631205b24f9dfb4967dd4a7901e048f9a88" @@ -2493,7 +2721,14 @@ dependencies: "@types/react" "*" -"@types/react@*": +"@types/react-transition-group@^4.4.0": + version "4.4.5" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.5.tgz#aae20dcf773c5aa275d5b9f7cdbca638abc5e416" + integrity sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA== + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@^18.0.28": version "18.0.28" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.28.tgz#accaeb8b86f4908057ad629a26635fe641480065" integrity sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew== @@ -2509,11 +2744,23 @@ dependencies: "@types/react" "*" +"@types/recompose@^0.30.10": + version "0.30.10" + resolved "https://registry.yarnpkg.com/@types/recompose/-/recompose-0.30.10.tgz#b6ab1743c279f463f2b62ccb90b82433dcea63c5" + integrity sha512-oF1ulwi5Tz7L9jZE870CCyD6n/nvCLNaGMp/oMEnm4gd7doc67rSHtypM6MFDiI6BKjTXoR87CwhET5JJInDFQ== + dependencies: + "@types/react" "*" + "@types/scheduler@*": version "0.16.2" resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== +"@types/semver@^7.3.12": + version "7.3.13" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" + integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== + "@types/source-list-map@*": version "0.1.2" resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" @@ -2524,6 +2771,15 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== +"@types/styled-components@^5.1.26": + version "5.1.26" + resolved "https://registry.yarnpkg.com/@types/styled-components/-/styled-components-5.1.26.tgz#5627e6812ee96d755028a98dae61d28e57c233af" + integrity sha512-KuKJ9Z6xb93uJiIyxo/+ksS7yLjS1KzG6iv5i78dhVg/X3u5t1H7juRWqVmodIdz6wGVaIApo1u01kmFRdJHVw== + dependencies: + "@types/hoist-non-react-statics" "*" + "@types/react" "*" + csstype "^3.0.2" + "@types/tapable@^1", "@types/tapable@^1.0.5": version "1.0.8" resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.8.tgz#b94a4391c85666c7b73299fd3ad79d4faa435310" @@ -2584,6 +2840,90 @@ resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.3.tgz#781d360c282436494b32fe7d9f7f8e64b3118aa3" integrity sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw== +"@typescript-eslint/eslint-plugin@^5.54.0": + version "5.56.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.56.0.tgz#e4fbb4d6dd8dab3e733485c1a44a02189ae75364" + integrity sha512-ZNW37Ccl3oMZkzxrYDUX4o7cnuPgU+YrcaYXzsRtLB16I1FR5SHMqga3zGsaSliZADCWo2v8qHWqAYIj8nWCCg== + dependencies: + "@eslint-community/regexpp" "^4.4.0" + "@typescript-eslint/scope-manager" "5.56.0" + "@typescript-eslint/type-utils" "5.56.0" + "@typescript-eslint/utils" "5.56.0" + debug "^4.3.4" + grapheme-splitter "^1.0.4" + ignore "^5.2.0" + natural-compare-lite "^1.4.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/parser@^5.42.0", "@typescript-eslint/parser@^5.54.0": + version "5.56.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.56.0.tgz#42eafb44b639ef1dbd54a3dbe628c446ca753ea6" + integrity sha512-sn1OZmBxUsgxMmR8a8U5QM/Wl+tyqlH//jTqCg8daTAmhAk26L2PFhcqPLlYBhYUJMZJK276qLXlHN3a83o2cg== + dependencies: + "@typescript-eslint/scope-manager" "5.56.0" + "@typescript-eslint/types" "5.56.0" + "@typescript-eslint/typescript-estree" "5.56.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.56.0": + version "5.56.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.56.0.tgz#62b4055088903b5254fa20403010e1c16d6ab725" + integrity sha512-jGYKyt+iBakD0SA5Ww8vFqGpoV2asSjwt60Gl6YcO8ksQ8s2HlUEyHBMSa38bdLopYqGf7EYQMUIGdT/Luw+sw== + dependencies: + "@typescript-eslint/types" "5.56.0" + "@typescript-eslint/visitor-keys" "5.56.0" + +"@typescript-eslint/type-utils@5.56.0": + version "5.56.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.56.0.tgz#e6f004a072f09c42e263dc50e98c70b41a509685" + integrity sha512-8WxgOgJjWRy6m4xg9KoSHPzBNZeQbGlQOH7l2QEhQID/+YseaFxg5J/DLwWSsi9Axj4e/cCiKx7PVzOq38tY4A== + dependencies: + "@typescript-eslint/typescript-estree" "5.56.0" + "@typescript-eslint/utils" "5.56.0" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.56.0": + version "5.56.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.56.0.tgz#b03f0bfd6fa2afff4e67c5795930aff398cbd834" + integrity sha512-JyAzbTJcIyhuUhogmiu+t79AkdnqgPUEsxMTMc/dCZczGMJQh1MK2wgrju++yMN6AWroVAy2jxyPcPr3SWCq5w== + +"@typescript-eslint/typescript-estree@5.56.0": + version "5.56.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.56.0.tgz#48342aa2344649a03321e74cab9ccecb9af086c3" + integrity sha512-41CH/GncsLXOJi0jb74SnC7jVPWeVJ0pxQj8bOjH1h2O26jXN3YHKDT1ejkVz5YeTEQPeLCCRY0U2r68tfNOcg== + dependencies: + "@typescript-eslint/types" "5.56.0" + "@typescript-eslint/visitor-keys" "5.56.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.56.0": + version "5.56.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.56.0.tgz#db64705409b9a15546053fb4deb2888b37df1f41" + integrity sha512-XhZDVdLnUJNtbzaJeDSCIYaM+Tgr59gZGbFuELgF7m0IY03PlciidS7UQNKLE0+WpUTn1GlycEr6Ivb/afjbhA== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.56.0" + "@typescript-eslint/types" "5.56.0" + "@typescript-eslint/typescript-estree" "5.56.0" + eslint-scope "^5.1.1" + semver "^7.3.7" + +"@typescript-eslint/visitor-keys@5.56.0": + version "5.56.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.56.0.tgz#f19eb297d972417eb13cb69b35b3213e13cc214f" + integrity sha512-1mFdED7u5bZpX6Xxf5N9U2c18sb+8EvU3tyOIj6LQZ5OOvnmj8BVeNNP603OFPm5KkS1a7IvCIcwrdHXaEMG/Q== + dependencies: + "@typescript-eslint/types" "5.56.0" + eslint-visitor-keys "^3.3.0" + "@vue/compiler-core@3.2.47": version "3.2.47" resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.47.tgz#3e07c684d74897ac9aa5922c520741f3029267f8" @@ -2946,7 +3286,7 @@ acorn-import-assertions@^1.7.6: resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== -acorn-jsx@^5.1.0: +acorn-jsx@^5.1.0, acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== @@ -2966,7 +3306,7 @@ acorn@^7.1.0, acorn@^7.1.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.5.0, acorn@^8.7.1: +acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0: version "8.8.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== @@ -3029,7 +3369,7 @@ ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -3256,6 +3596,18 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +aria-query@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" + integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== + dependencies: + deep-equal "^2.0.5" + arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" @@ -3271,12 +3623,20 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== -array-includes@^3.0.3: +array-includes@^3.0.3, array-includes@^3.1.5, array-includes@^3.1.6: version "3.1.6" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== @@ -3294,6 +3654,11 @@ array-union@^1.0.1: dependencies: array-uniq "^1.0.1" +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" @@ -3304,7 +3669,7 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== -array.prototype.flat@^1.2.1: +array.prototype.flat@^1.2.1, array.prototype.flat@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== @@ -3314,7 +3679,7 @@ array.prototype.flat@^1.2.1: es-abstract "^1.20.4" es-shim-unscopables "^1.0.0" -array.prototype.flatmap@^1.2.1: +array.prototype.flatmap@^1.2.1, array.prototype.flatmap@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== @@ -3346,6 +3711,17 @@ array.prototype.reduce@^1.0.5: es-array-method-boxes-properly "^1.0.0" is-string "^1.0.7" +array.prototype.tosorted@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz#ccf44738aa2b5ac56578ffda97c03fd3e23dd532" + integrity sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.1.3" + arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -3406,6 +3782,11 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== +ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== + ast-types@0.14.2, ast-types@^0.14.2: version "0.14.2" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.14.2.tgz#600b882df8583e3cd4f2df5fa20fa83759d4bdfd" @@ -3482,6 +3863,11 @@ axe-core@^3.3.2: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-3.5.6.tgz#e762a90d7f6dbd244ceacb4e72760ff8aad521b5" integrity sha512-LEUDjgmdJoA3LqklSTwKYqkjcZ4HKc4ddIYGSAiSkr46NTjzg2L9RNB+lekO9P7Dlpa87+hBtzc2Fzn/+GUWMQ== +axe-core@^4.6.2: + version "4.6.3" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.6.3.tgz#fc0db6fdb65cc7a80ccf85286d91d64ababa3ece" + integrity sha512-/BQzOX780JhsxDnPpH4ZiyrJAzcd8AfzFPkv+89veFSr1rcMjuq2JDCwypKaPeB6ljHp9KjXhPpjgCvQlWYuqg== + axios@0.21.4: version "0.21.4" resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" @@ -3489,6 +3875,13 @@ axios@0.21.4: dependencies: follow-redirects "^1.14.0" +axobject-query@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.1.1.tgz#3b6e5c6d4e43ca7ba51c5babf99d22a9c68485e1" + integrity sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg== + dependencies: + deep-equal "^2.0.5" + babel-code-frame@^6.22.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" @@ -3603,6 +3996,15 @@ babel-plugin-macros@^2.0.0, babel-plugin-macros@^2.7.0, babel-plugin-macros@^2.7 cosmiconfig "^6.0.0" resolve "^1.12.0" +babel-plugin-macros@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" + integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== + dependencies: + "@babel/runtime" "^7.12.5" + cosmiconfig "^7.0.0" + resolve "^1.19.0" + babel-plugin-minify-builtins@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.5.0.tgz#31eb82ed1a0d0efdc31312f93b6e4741ce82c36b" @@ -3717,6 +4119,17 @@ babel-plugin-react-docgen@^4.0.0: lodash "^4.17.15" react-docgen "^5.0.0" +"babel-plugin-styled-components@>= 1.12.0", babel-plugin-styled-components@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz#c81ef34b713f9da2b7d3f5550df0d1e19e798086" + integrity sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-module-imports" "^7.16.0" + babel-plugin-syntax-jsx "^6.18.0" + lodash "^4.17.11" + picomatch "^2.3.0" + babel-plugin-syntax-jsx@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" @@ -4235,15 +4648,20 @@ camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +camelize@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" + integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== + can-use-dom@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/can-use-dom/-/can-use-dom-0.1.0.tgz#22cc4a34a0abc43950f42c6411024a3f6366b45a" integrity sha512-ceOhN1DL7Y4O6M0j9ICgmTYziV89WMd96SvSl0REd8PMgrY0B/WBOPoed5S1KUmJqXgUXh8gzSe6E3ae27upsQ== caniuse-lite@^1.0.30000989, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001406, caniuse-lite@^1.0.30001449: - version "1.0.30001457" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001457.tgz#6af34bb5d720074e2099432aa522c21555a18301" - integrity sha512-SDIV6bgE1aVbK6XyxdURbUE89zY7+k1BBBaOwYwkNCglXlel/E7mELiHC64HQ+W0xSKlqWhV9Wh7iHxUjMs4fA== + version "1.0.30001469" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001469.tgz#3dd505430c8522fdc9f94b4a19518e330f5c945a" + integrity sha512-Rcp7221ScNqQPP3W+lVOYDyjdR6dC+neEQCttoNr5bAyz54AboB4iwpnWgyi8P4YUsPybVzT4LgWiBbI3drL4g== capture-exit@^2.0.0: version "2.0.0" @@ -4295,7 +4713,7 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.1.0, chalk@^4.1.2: +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -4610,7 +5028,7 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colors@^1.1.2: +colors@^1.1.2, colors@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== @@ -4737,16 +5155,16 @@ copy-to-clipboard@^3.0.8, copy-to-clipboard@^3.3.1: toggle-selection "^1.0.6" core-js-compat@^3.25.1: - version "3.28.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.28.0.tgz#c08456d854608a7264530a2afa281fadf20ecee6" - integrity sha512-myzPgE7QodMg4nnd3K1TDoES/nADRStM8Gpz0D6nhkwbmwEnE0ZGJgoWsvQ722FR8D7xS0n0LV556RcEicjTyg== + version "3.29.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.29.1.tgz#15c0fb812ea27c973c18d425099afa50b934b41b" + integrity sha512-QmchCua884D8wWskMX8tW5ydINzd8oSJVx38lx/pVkFGqztxt73GYre3pm/hyYq8bPf+MW5In4I/uRShFDsbrA== dependencies: browserslist "^4.21.5" core-js-pure@^3.0.1: - version "3.28.0" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.28.0.tgz#4ef2888475b6c856ef6f5aeef8b4f618b76ad048" - integrity sha512-DSOVleA9/v3LNj/vFxAPfUHttKTzrB2RXhAPvR5TPXn4vrra3Z2ssytvRyt8eruJwAfwAiFADEbrjcRdcvPLQQ== + version "3.29.1" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.29.1.tgz#1be6ca2b8772f6b4df7fc4621743286e676c6162" + integrity sha512-4En6zYVi0i0XlXHVz/bi6l1XDjCqkKRq765NXuX+SnaIatlE96Odt5lMLjdxUiNI1v9OXI5DSLWYPlmTfkTktg== core-js@^1.0.0: version "1.2.7" @@ -4754,9 +5172,9 @@ core-js@^1.0.0: integrity sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA== core-js@^3.0.1, core-js@^3.0.4: - version "3.28.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.28.0.tgz#ed8b9e99c273879fdfff0edfc77ee709a5800e4a" - integrity sha512-GiZn9D4Z/rSYvTeg1ljAIsEqFm0LaN9gVtwDCrKL80zHtS31p9BAjmTxVqTQDMpwlMolJZOFntUG2uwyj7DAqw== + version "3.29.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.29.1.tgz#40ff3b41588b091aaed19ca1aa5cb111803fa9a6" + integrity sha512-+jwgnhg6cQxKYIIjGtAHq2nwUOolo9eoFZ4sHfUH09BLXBgxnH4gA0zEd+t+BO2cNB8idaBtZFcFTRjQJRJmAw== core-util-is@1.0.2: version "1.0.2" @@ -4776,19 +5194,6 @@ corejs-upgrade-webpack-plugin@^2.2.0: resolve-from "^5.0.0" webpack "^4.38.0" -cosmiconfig@^2.1.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.2.2.tgz#6173cebd56fac042c1f4390edf7af6c07c7cb892" - integrity sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A== - dependencies: - is-directory "^0.3.1" - js-yaml "^3.4.3" - minimist "^1.2.0" - object-assign "^4.1.0" - os-homedir "^1.0.1" - parse-json "^2.2.0" - require-from-string "^1.1.0" - cosmiconfig@^5.0.0, cosmiconfig@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" @@ -4810,6 +5215,17 @@ cosmiconfig@^6.0.0: path-type "^4.0.0" yaml "^1.7.2" +cosmiconfig@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + create-ecdh@^4.0.0: version "4.0.4" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" @@ -4893,6 +5309,11 @@ css-box-model@^1.2.0: dependencies: tiny-invariant "^1.0.6" +css-color-keywords@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" + integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg== + css-loader@^3.0.0: version "3.6.0" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.6.0.tgz#2e4b2c7e6e2d27f8c8f28f61bffcd2e6c91ef645" @@ -4938,6 +5359,15 @@ css-select@^4.1.3: domutils "^2.8.0" nth-check "^2.0.1" +css-to-react-native@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.2.0.tgz#cdd8099f71024e149e4f6fe17a7d46ecd55f1e32" + integrity sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ== + dependencies: + camelize "^1.0.0" + css-color-keywords "^1.0.0" + postcss-value-parser "^4.0.2" + css-tree@1.0.0-alpha.37: version "1.0.0-alpha.37" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" @@ -5239,6 +5669,11 @@ d3@^5.15.0: d3-voronoi "1" d3-zoom "1" +damerau-levenshtein@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== + dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -5261,14 +5696,6 @@ date-format@0.0.2: resolved "https://registry.yarnpkg.com/date-format/-/date-format-0.0.2.tgz#fafd448f72115ef1e2b739155ae92f2be6c28dd1" integrity sha512-M4obuJx8jU5T91lcbwi0+QPNVaWOY1DQYz5xUuKYWO93osVzB2ZPqyDUc5T+mDjbA1X8VOb4JDZ+8r2MrSOp7Q== -deasync@^0.1.12: - version "0.1.28" - resolved "https://registry.yarnpkg.com/deasync/-/deasync-0.1.28.tgz#9b447b79b3f822432f0ab6a8614c0062808b5ad2" - integrity sha512-QqLF6inIDwiATrfROIyQtwOQxjZuek13WRYZ7donU5wJPLoP67MnYxA6QtqdvdBy2mMqv5m3UefBVdJjvevOYg== - dependencies: - bindings "^1.5.0" - node-addon-api "^1.7.1" - debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -5276,7 +5703,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0: dependencies: ms "2.0.0" -debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2: +debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -5290,7 +5717,7 @@ debug@4.3.1: dependencies: ms "2.1.2" -debug@^3.0.0, debug@^3.2.5: +debug@^3.0.0, debug@^3.2.5, debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== @@ -5327,7 +5754,30 @@ deep-equal@^1.1.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" -deep-is@~0.1.3: +deep-equal@^2.0.5: + version "2.2.0" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.0.tgz#5caeace9c781028b9ff459f33b779346637c43e6" + integrity sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw== + dependencies: + call-bind "^1.0.2" + es-get-iterator "^1.1.2" + get-intrinsic "^1.1.3" + is-arguments "^1.1.1" + is-array-buffer "^3.0.1" + is-date-object "^1.0.5" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + isarray "^2.0.5" + object-is "^1.1.5" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + side-channel "^1.0.4" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.9" + +deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== @@ -5337,6 +5787,11 @@ deep-object-diff@^1.1.0: resolved "https://registry.yarnpkg.com/deep-object-diff/-/deep-object-diff-1.1.9.tgz#6df7ef035ad6a0caa44479c536ed7b02570f4595" integrity sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA== +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.1.4: version "1.2.0" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" @@ -5450,6 +5905,20 @@ dir-glob@2.0.0: arrify "^1.0.1" path-type "^3.0.0" +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -5626,9 +6095,9 @@ ejs@^2.7.4: integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== electron-to-chromium@^1.3.247, electron-to-chromium@^1.4.284: - version "1.4.309" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.309.tgz#82158606da135ffffc16a2e1eb853fa0a10955e7" - integrity sha512-U7DTiKe4h+irqBG6h4EZ0XXaZuJj4md3xIXXaGSYhwiumPZ4BSc6rgf9UD0hVUMaeP/jB0q5pKWCPxvhO8fvZA== + version "1.4.335" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.335.tgz#69c08baa608bbb58e290d83320190fa82c835efe" + integrity sha512-l/eowQqTnrq3gu+WSrdfkhfNHnPgYqlKAwxz7MTOj6mom19vpEDHNXl6dxDxyTiYuhemydprKr/HCrHfgk+OfQ== elegant-spinner@^1.0.1: version "1.0.1" @@ -5660,6 +6129,11 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" @@ -5736,7 +6210,7 @@ errno@^0.1.3, errno@~0.1.7: dependencies: prr "~1.0.1" -error-ex@^1.2.0, error-ex@^1.3.1: +error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== @@ -5744,17 +6218,17 @@ error-ex@^1.2.0, error-ex@^1.3.1: is-arrayish "^0.2.1" es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.20.4: - version "1.21.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.1.tgz#e6105a099967c08377830a0c9cb589d570dd86c6" - integrity sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg== + version "1.21.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.2.tgz#a56b9695322c8a185dc25975aa3b8ec31d0e7eff" + integrity sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg== dependencies: + array-buffer-byte-length "^1.0.0" available-typed-arrays "^1.0.5" call-bind "^1.0.2" es-set-tostringtag "^2.0.1" es-to-primitive "^1.2.1" - function-bind "^1.1.1" function.prototype.name "^1.1.5" - get-intrinsic "^1.1.3" + get-intrinsic "^1.2.0" get-symbol-description "^1.0.0" globalthis "^1.0.3" gopd "^1.0.1" @@ -5762,8 +6236,8 @@ es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.20.4: has-property-descriptors "^1.0.0" has-proto "^1.0.1" has-symbols "^1.0.3" - internal-slot "^1.0.4" - is-array-buffer "^3.0.1" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" is-callable "^1.2.7" is-negative-zero "^2.0.2" is-regex "^1.1.4" @@ -5771,11 +6245,12 @@ es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.20.4: is-string "^1.0.7" is-typed-array "^1.1.10" is-weakref "^1.0.2" - object-inspect "^1.12.2" + object-inspect "^1.12.3" object-keys "^1.1.1" object.assign "^4.1.4" regexp.prototype.flags "^1.4.3" safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.7" string.prototype.trimend "^1.0.6" string.prototype.trimstart "^1.0.6" typed-array-length "^1.0.4" @@ -5787,7 +6262,7 @@ es-array-method-boxes-properly@^1.0.0: resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== -es-get-iterator@^1.0.2: +es-get-iterator@^1.0.2, es-get-iterator@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== @@ -5867,6 +6342,11 @@ escape-string-regexp@^2.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + escodegen@^1.12.0: version "1.14.3" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" @@ -5879,7 +6359,120 @@ escodegen@^1.12.0: optionalDependencies: source-map "~0.6.1" -eslint-scope@5.1.1: +eslint-config-next@^13.2.3: + version "13.2.4" + resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-13.2.4.tgz#8aa4d42da3a575a814634ba9c88c8d25266c5fdd" + integrity sha512-lunIBhsoeqw6/Lfkd6zPt25w1bn0znLA/JCL+au1HoEpSb4/PpsOYsYtgV/q+YPsoKIOzFyU5xnb04iZnXjUvg== + dependencies: + "@next/eslint-plugin-next" "13.2.4" + "@rushstack/eslint-patch" "^1.1.3" + "@typescript-eslint/parser" "^5.42.0" + eslint-import-resolver-node "^0.3.6" + eslint-import-resolver-typescript "^3.5.2" + eslint-plugin-import "^2.26.0" + eslint-plugin-jsx-a11y "^6.5.1" + eslint-plugin-react "^7.31.7" + eslint-plugin-react-hooks "^4.5.0" + +eslint-import-resolver-node@^0.3.6, eslint-import-resolver-node@^0.3.7: + version "0.3.7" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz#83b375187d412324a1963d84fa664377a23eb4d7" + integrity sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA== + dependencies: + debug "^3.2.7" + is-core-module "^2.11.0" + resolve "^1.22.1" + +eslint-import-resolver-typescript@^3.5.2: + version "3.5.3" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.3.tgz#db5ed9e906651b7a59dd84870aaef0e78c663a05" + integrity sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ== + dependencies: + debug "^4.3.4" + enhanced-resolve "^5.10.0" + get-tsconfig "^4.2.0" + globby "^13.1.2" + is-core-module "^2.10.0" + is-glob "^4.0.3" + synckit "^0.8.4" + +eslint-module-utils@^2.7.4: + version "2.7.4" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz#4f3e41116aaf13a20792261e61d3a2e7e0583974" + integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA== + dependencies: + debug "^3.2.7" + +eslint-plugin-import@^2.26.0: + version "2.27.5" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz#876a6d03f52608a3e5bb439c2550588e51dd6c65" + integrity sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow== + dependencies: + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + array.prototype.flatmap "^1.3.1" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.7" + eslint-module-utils "^2.7.4" + has "^1.0.3" + is-core-module "^2.11.0" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.values "^1.1.6" + resolve "^1.22.1" + semver "^6.3.0" + tsconfig-paths "^3.14.1" + +eslint-plugin-jsx-a11y@^6.5.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz#fca5e02d115f48c9a597a6894d5bcec2f7a76976" + integrity sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA== + dependencies: + "@babel/runtime" "^7.20.7" + aria-query "^5.1.3" + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + ast-types-flow "^0.0.7" + axe-core "^4.6.2" + axobject-query "^3.1.1" + damerau-levenshtein "^1.0.8" + emoji-regex "^9.2.2" + has "^1.0.3" + jsx-ast-utils "^3.3.3" + language-tags "=1.0.5" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + semver "^6.3.0" + +eslint-plugin-react-hooks@^4.5.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" + integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== + +eslint-plugin-react@^7.31.7: + version "7.32.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz#e71f21c7c265ebce01bcbc9d0955170c55571f10" + integrity sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg== + dependencies: + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + array.prototype.tosorted "^1.1.1" + doctrine "^2.1.0" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + object.hasown "^1.1.2" + object.values "^1.1.6" + prop-types "^15.8.1" + resolve "^2.0.0-next.4" + semver "^6.3.0" + string.prototype.matchall "^4.0.8" + +eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -5895,16 +6488,91 @@ eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" +eslint-scope@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" + integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== + +eslint@^8.35.0: + version "8.36.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.36.0.tgz#1bd72202200a5492f91803b113fb8a83b11285cf" + integrity sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.4.0" + "@eslint/eslintrc" "^2.0.1" + "@eslint/js" "8.36.0" + "@humanwhocodes/config-array" "^0.11.8" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.1.1" + eslint-visitor-keys "^3.3.0" + espree "^9.5.0" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + grapheme-splitter "^1.0.4" + ignore "^5.2.0" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-sdsl "^4.1.4" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.1" + strip-ansi "^6.0.1" + strip-json-comments "^3.1.0" + text-table "^0.2.0" + esm@^3.2.25: version "3.2.25" resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== +espree@^9.5.0: + version "9.5.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.0.tgz#3646d4e3f58907464edba852fa047e6a27bdf113" + integrity sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw== + dependencies: + acorn "^8.8.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.3.0" + esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + dependencies: + estraverse "^5.1.0" + esrecurse@^4.1.0, esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" @@ -5917,7 +6585,7 @@ estraverse@^4.1.1, estraverse@^4.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -estraverse@^5.2.0: +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== @@ -6130,7 +6798,7 @@ fast-deep-equal@^2.0.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" integrity sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w== -fast-deep-equal@^3.1.1: +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== @@ -6147,16 +6815,34 @@ fast-glob@^2.0.2: merge2 "^1.2.3" micromatch "^3.1.10" +fast-glob@^3.2.11, fast-glob@^3.2.9: + version "3.2.12" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== +fastq@^1.6.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + dependencies: + reusify "^1.0.4" + fault@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/fault/-/fault-1.0.4.tgz#eafcfc0a6d214fc94601e170df29954a4f842f13" @@ -6218,6 +6904,13 @@ figures@^3.0.0: dependencies: escape-string-regexp "^1.0.5" +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + file-loader@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.3.0.tgz#780f040f729b3d18019f20605f723e844b8a58af" @@ -6327,10 +7020,23 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.2.7" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" + integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== + flow-parser@0.*: - version "0.200.0" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.200.0.tgz#7cbdd4cace2843e2fd6098df68247b3876f55917" - integrity sha512-01eYYVlCEO2p6JexhTbMbDNPeDKQZV++SJbaHE/HzypTkV83oJmsJQVjVCGD8FYWiQ3ha9ALD/AHwsFhPwnZJA== + version "0.202.0" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.202.0.tgz#534178266d3ceec5368415e59990db97eece5bd0" + integrity sha512-ZiXxSIXK3zPmY3zrzCofFonM2T+/3Jz5QZKJyPVtUERQEJUnYkXBQ+0H3FzyqiyJs+VXqb/UNU6/K6sziVYdxw== flush-write-stream@^1.0.0: version "1.1.1" @@ -6585,6 +7291,11 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" +get-tsconfig@^4.2.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.4.0.tgz#64eee64596668a81b8fce18403f94f245ee0d4e5" + integrity sha512-0Gdjo/9+FzsYhXCEFueo2aY1z1tpXrxWZzP7k8ul9qt1U5o8rYJwTJYmaeHdrVosYIVYkOy2iwCJ9FdpocJhPQ== + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -6640,13 +7351,20 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@~5.1.2: +glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + glob-to-regexp@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" @@ -6657,6 +7375,18 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== +glob@7.1.7: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@^7.0.0, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" @@ -6698,6 +7428,13 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +globals@^13.19.0: + version "13.20.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" + integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== + dependencies: + type-fest "^0.20.2" + globalthis@^1.0.0, globalthis@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" @@ -6705,6 +7442,11 @@ globalthis@^1.0.0, globalthis@^1.0.3: dependencies: define-properties "^1.1.3" +globalyzer@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465" + integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q== + globby@8.0.2: version "8.0.2" resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" @@ -6718,6 +7460,34 @@ globby@8.0.2: pify "^3.0.0" slash "^1.0.0" +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +globby@^13.1.2: + version "13.1.3" + resolved "https://registry.yarnpkg.com/globby/-/globby-13.1.3.tgz#f62baf5720bcb2c1330c8d4ef222ee12318563ff" + integrity sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw== + dependencies: + dir-glob "^3.0.1" + fast-glob "^3.2.11" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^4.0.0" + +globrex@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" + integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== + good-listener@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50" @@ -6733,9 +7503,14 @@ gopd@^1.0.1: get-intrinsic "^1.1.3" graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.4, graceful-fs@^4.2.9: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== graphql-tag@^2.10.0: version "2.12.6" @@ -6880,10 +7655,10 @@ hash-base@^3.0.0: readable-stream "^3.6.0" safe-buffer "^5.2.0" -hash-sum@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" - integrity sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA== +hash-sum@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-2.0.0.tgz#81d01bb5de8ea4a214ad5d6ead1b523460b0b45a" + integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg== hash.js@^1.0.0, hash.js@^1.0.3: version "1.1.7" @@ -7005,7 +7780,7 @@ hoist-non-react-statics@^2.3.1: resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw== -hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2: +hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== @@ -7161,6 +7936,11 @@ ignore@^3.3.5: resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== +ignore@^5.2.0: + version "5.2.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + immer@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/immer/-/immer-1.10.0.tgz#bad67605ba9c810275d91e1c2a47d4582e98286d" @@ -7181,7 +7961,7 @@ import-fresh@^2.0.0: caller-path "^2.0.0" resolve-from "^3.0.0" -import-fresh@^3.1.0: +import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -7292,7 +8072,7 @@ inquirer@^7.0.0: strip-ansi "^6.0.0" through "^2.3.6" -internal-slot@^1.0.3, internal-slot@^1.0.4: +internal-slot@^1.0.3, internal-slot@^1.0.4, internal-slot@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== @@ -7368,13 +8148,13 @@ is-arguments@^1.0.4, is-arguments@^1.1.1: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-array-buffer@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.1.tgz#deb1db4fcae48308d54ef2442706c0393997052a" - integrity sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ== +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== dependencies: call-bind "^1.0.2" - get-intrinsic "^1.1.3" + get-intrinsic "^1.2.0" is-typed-array "^1.1.10" is-arrayish@^0.2.1: @@ -7433,7 +8213,7 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" -is-core-module@^2.5.0, is-core-module@^2.9.0: +is-core-module@^2.10.0, is-core-module@^2.11.0, is-core-module@^2.5.0, is-core-module@^2.9.0: version "2.11.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== @@ -7454,7 +8234,7 @@ is-data-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" -is-date-object@^1.0.1: +is-date-object@^1.0.1, is-date-object@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== @@ -7489,7 +8269,7 @@ is-directory@^0.3.1: resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== -is-docker@^2.0.0: +is-docker@^2.0.0, is-docker@^2.1.1: version "2.2.1" resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== @@ -7575,7 +8355,7 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== @@ -7587,7 +8367,7 @@ is-hexadecimal@^1.0.0: resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== -is-map@^2.0.2: +is-map@^2.0.1, is-map@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== @@ -7641,6 +8421,11 @@ is-observable@^1.1.0: dependencies: symbol-observable "^1.1.0" +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" @@ -7686,7 +8471,7 @@ is-root@2.1.0: resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== -is-set@^2.0.2: +is-set@^2.0.1, is-set@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== @@ -7745,6 +8530,11 @@ is-typedarray@~1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== + is-weakref@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" @@ -7752,6 +8542,14 @@ is-weakref@^1.0.2: dependencies: call-bind "^1.0.2" +is-weakset@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" + integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + is-whitespace-character@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" @@ -7777,7 +8575,7 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== -is-wsl@^2.1.1: +is-wsl@^2.1.1, is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== @@ -7993,6 +8791,11 @@ jest-worker@^27.4.5: merge-stream "^2.0.0" supports-color "^8.0.0" +js-sdsl@^4.1.4: + version "4.4.0" + resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.0.tgz#8b437dbe642daa95760400b602378ed8ffea8430" + integrity sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg== + js-string-escape@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" @@ -8013,7 +8816,7 @@ js-tokens@^3.0.2: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg== -js-yaml@^3.13.1, js-yaml@^3.4.3: +js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -8021,6 +8824,13 @@ js-yaml@^3.13.1, js-yaml@^3.4.3: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -8081,6 +8891,11 @@ json-schema@0.4.0: resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + json-stringify-safe@5.0.x, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -8091,7 +8906,7 @@ json3@^3.3.2: resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== -json5@^1.0.1: +json5@^1.0.1, json5@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== @@ -8137,6 +8952,14 @@ jstransformer@1.0.0: is-promise "^2.0.0" promise "^7.0.1" +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" + integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== + dependencies: + array-includes "^3.1.5" + object.assign "^4.1.3" + junit-report-builder@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/junit-report-builder/-/junit-report-builder-2.1.0.tgz#7089dd8ae547657509b9a5eb7b5082bde22bcc7e" @@ -8178,6 +9001,18 @@ kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== +language-subtag-registry@~0.3.2: + version "0.3.22" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" + integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== + +language-tags@=1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" + integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ== + dependencies: + language-subtag-registry "~0.3.2" + lazy-cache@^0.2.3: version "0.2.7" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65" @@ -8199,6 +9034,14 @@ lazy-universal-dotenv@^3.0.1: dotenv "^8.0.0" dotenv-expand "^5.1.0" +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -8362,6 +9205,11 @@ lodash.memoize@^4.1.2: resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + lodash.throttle@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" @@ -8415,14 +9263,6 @@ lowlight@~1.11.0: fault "^1.0.2" highlight.js "~9.13.0" -lru-cache@^4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -8437,6 +9277,11 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +lru-cache@^8.0.3: + version "8.0.4" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-8.0.4.tgz#49fbbc46c0b4cedc36258885247f93dba341e7ec" + integrity sha512-E9FF6+Oc/uFLqZCuZwRKUzgFt5Raih6LfxknOSAVTjNkrCZkBf7DQCwJxZQgd9l4eHjIJDGR+E+1QKD1RhThPw== + magic-string@^0.25.7: version "0.25.9" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" @@ -8627,6 +9472,11 @@ memoize-one@^5.0.0, memoize-one@^5.1.1: resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== +memoize-one@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-6.0.0.tgz#b2591b871ed82948aee4727dc6abceeeac8c1045" + integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw== + memoizerific@^1.11.3: version "1.11.3" resolved "https://registry.yarnpkg.com/memoizerific/-/memoizerific-1.11.3.tgz#7c87a4646444c32d75438570905f2dbd1b1a805a" @@ -8686,7 +9536,7 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.2.3: +merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== @@ -8728,7 +9578,7 @@ micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" -micromatch@^4.0.2: +micromatch@^4.0.2, micromatch@^4.0.4: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== @@ -8815,7 +9665,7 @@ minimatch@3.0.4: dependencies: brace-expansion "^1.1.7" -minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1: +minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -8982,6 +9832,16 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + negotiator@0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" @@ -9040,11 +9900,6 @@ no-proxy@^1.0.3: optionalDependencies: url-parse "^1.2.0" -node-addon-api@^1.7.1: - version "1.7.2" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.7.2.tgz#3df30b95720b53c24e59948b49532b662444f54d" - integrity sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg== - node-ask@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/node-ask/-/node-ask-1.0.1.tgz#caaa1076cc58e0364267a0903e3eadfac158396b" @@ -9254,12 +10109,12 @@ object-hash@^3.0.0: resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== -object-inspect@^1.12.2, object-inspect@^1.9.0: +object-inspect@^1.12.3, object-inspect@^1.9.0: version "1.12.3" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== -object-is@^1.0.1: +object-is@^1.0.1, object-is@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== @@ -9279,7 +10134,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.1.4: +object.assign@^4.1.3, object.assign@^4.1.4: version "4.1.4" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== @@ -9289,7 +10144,7 @@ object.assign@^4.1.4: has-symbols "^1.0.3" object-keys "^1.1.1" -object.entries@^1.1.0: +object.entries@^1.1.0, object.entries@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23" integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== @@ -9298,7 +10153,7 @@ object.entries@^1.1.0: define-properties "^1.1.4" es-abstract "^1.20.4" -"object.fromentries@^2.0.0 || ^1.0.0": +"object.fromentries@^2.0.0 || ^1.0.0", object.fromentries@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73" integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== @@ -9317,6 +10172,14 @@ object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0 define-properties "^1.1.4" es-abstract "^1.20.4" +object.hasown@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.2.tgz#f919e21fad4eb38a57bc6345b3afd496515c3f92" + integrity sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw== + dependencies: + define-properties "^1.1.4" + es-abstract "^1.20.4" + object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -9324,7 +10187,7 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -object.values@^1.1.0: +object.values@^1.1.0, object.values@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== @@ -9376,6 +10239,15 @@ open@^7.0.0: is-docker "^2.0.0" is-wsl "^2.1.1" +open@^8.4.0: + version "8.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + openurl@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/openurl/-/openurl-1.1.1.tgz#3875b4b0ef7a52c156f0db41d4609dbb0f94b387" @@ -9400,16 +10272,23 @@ optionator@^0.8.1: type-check "~0.3.2" word-wrap "~1.2.3" +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + os-browserify@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== -os-homedir@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== - os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -9555,13 +10434,6 @@ parse-entities@^2.0.0: is-decimal "^1.0.0" is-hexadecimal "^1.0.0" -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - integrity sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ== - dependencies: - error-ex "^1.2.0" - parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -9705,7 +10577,7 @@ picomatch@2.2.2: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.0, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -9797,14 +10669,6 @@ postcss-load-config@^2.0.0: cosmiconfig "^5.0.0" import-cwd "^2.0.0" -postcss-load-plugins@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz#745768116599aca2f009fad426b00175049d8d92" - integrity sha512-/WGUMYhKiryWjYO6c7kAcqMuD7DVkaQ8HcbQenDme/d3OBOmrYMFObOKgUWyUy1uih5U2Dakq8H6VcJi5C9wHQ== - dependencies: - cosmiconfig "^2.1.1" - object-assign "^4.1.0" - postcss-loader@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" @@ -9873,7 +10737,7 @@ postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-value-parser@^4.1.0: +postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: version "4.2.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== @@ -9887,7 +10751,7 @@ postcss@8.4.14: picocolors "^1.0.0" source-map-js "^1.0.2" -postcss@^6.0.13, postcss@^6.0.14: +postcss@^6.0.14: version "6.0.23" resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== @@ -9913,6 +10777,11 @@ postcss@^8.1.10: picocolors "^1.0.0" source-map-js "^1.0.2" +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -10038,11 +10907,6 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== - psl@^1.1.28: version "1.9.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" @@ -10208,13 +11072,20 @@ q@^1.1.2: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== -qs@6.11.0, qs@^6.6.0: +qs@6.11.0: version "6.11.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== dependencies: side-channel "^1.0.4" +qs@^6.6.0: + version "6.11.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.1.tgz#6c29dff97f0c0060765911ba65cbc9764186109f" + integrity sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ== + dependencies: + side-channel "^1.0.4" + qs@~6.5.2: version "6.5.3" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" @@ -10248,6 +11119,11 @@ querystringify@^2.1.1: resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + quick-lru@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" @@ -10448,9 +11324,9 @@ react-error-overlay@^6.0.3: integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== react-fast-compare@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" - integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== + version "3.2.1" + resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.1.tgz#53933d9e14f364281d6cba24bfed7a4afb808b5f" + integrity sha512-xTYf9zFim2pEif/Fw16dBiXpe0hoy5PxcD8+OwBnTtNLfIm3g6WxhKNurY+6OmdH1u6Ta/W/Vl6vjbYP1MFnDg== react-focus-lock@^2.1.0: version "2.9.4" @@ -10598,7 +11474,22 @@ react-redux@^7.0.2, react-redux@^7.2.0: prop-types "^15.7.2" react-is "^17.0.2" -react-select@^3.0.0, react-select@^3.0.8: +react-select@5.7.0: + version "5.7.0" + resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.7.0.tgz#82921b38f1fcf1471a0b62304da01f2896cd8ce6" + integrity sha512-lJGiMxCa3cqnUr2Jjtg9YHsaytiZqeNOKeibv6WF5zbK/fPegZ1hg3y/9P1RZVLhqBTs0PfqQLKuAACednYGhQ== + dependencies: + "@babel/runtime" "^7.12.0" + "@emotion/cache" "^11.4.0" + "@emotion/react" "^11.8.1" + "@floating-ui/dom" "^1.0.1" + "@types/react-transition-group" "^4.4.0" + memoize-one "^6.0.0" + prop-types "^15.6.0" + react-transition-group "^4.3.0" + use-isomorphic-layout-effect "^1.1.2" + +react-select@^3.0.8: version "3.2.0" resolved "https://registry.yarnpkg.com/react-select/-/react-select-3.2.0.tgz#de9284700196f5f9b5277c5d850a9ce85f5c72fe" integrity sha512-B/q3TnCZXEKItO0fFN/I0tWOX3WJvi/X2wtdffmwSQVRwg5BpValScTO1vdic9AxlUgmeSzib2hAZAwIUQUZGQ== @@ -10732,9 +11623,9 @@ read-pkg@^5.2.0: util-deprecate "~1.0.1" readable-stream@^3.6.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.1.tgz#f9f9b5f536920253b3d26e7660e7da4ccff9bb62" - integrity sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ== + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" @@ -10876,9 +11767,9 @@ regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.3: functions-have-names "^1.2.2" regexpu-core@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.1.tgz#66900860f88def39a5cb79ebd9490e84f17bcdfb" - integrity sha512-nCOzW2V/X15XpLsK2rlgdwrysrBq+AauCn+omItIz4R1pIcmeot5zvjdmOBRLzEH/CkC6IxMJVmxDe3QcMuNVQ== + version "5.3.2" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== dependencies: "@babel/regjsgen" "^0.8.0" regenerate "^1.4.2" @@ -11045,11 +11936,6 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== -require-from-string@^1.1.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" - integrity sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q== - require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" @@ -11085,7 +11971,7 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.15.1, resolve@^1.3.2: +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.15.1, resolve@^1.19.0, resolve@^1.22.1, resolve@^1.3.2: version "1.22.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== @@ -11094,6 +11980,15 @@ resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.14 path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^2.0.0-next.4: + version "2.0.0-next.4" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" + integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -11120,6 +12015,11 @@ retry@0.13.1: resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + rimraf@^2.5.4, rimraf@^2.6.3, rimraf@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" @@ -11159,6 +12059,13 @@ run-async@^2.2.0, run-async@^2.4.0: resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" @@ -11291,7 +12198,7 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.3.4, semver@^7.3.5: +semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: version "7.3.8" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== @@ -11324,7 +12231,7 @@ serialize-javascript@^4.0.0: dependencies: randombytes "^2.1.0" -serialize-javascript@^6.0.0: +serialize-javascript@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== @@ -11504,6 +12411,11 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +slash@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" + integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== + slice-ansi@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" @@ -11618,9 +12530,9 @@ space-separated-tokens@^1.0.0, space-separated-tokens@^1.1.0, space-separated-to integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + version "3.2.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" @@ -11639,9 +12551,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.12" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz#69077835abe2710b65f03969898b6637b505a779" - integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA== + version "3.0.13" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz#7189a474c46f8d47c7b0da4b987bb45e908bd2d5" + integrity sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w== speedometer@~1.0.0: version "1.0.0" @@ -11800,7 +12712,7 @@ string-width@^2.1.0, string-width@^2.1.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -"string.prototype.matchall@^4.0.0 || ^3.0.1": +"string.prototype.matchall@^4.0.0 || ^3.0.1", string.prototype.matchall@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3" integrity sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg== @@ -11832,6 +12744,15 @@ string.prototype.padstart@^3.0.0: define-properties "^1.1.4" es-abstract "^1.20.4" +string.prototype.trim@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" + integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + string.prototype.trimend@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" @@ -11921,6 +12842,11 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + style-loader@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.3.0.tgz#828b4a3b3b7e7aa5847ce7bae9e874512114249e" @@ -11936,20 +12862,32 @@ style-to-object@0.3.0, style-to-object@^0.3.0: dependencies: inline-style-parser "0.1.1" -styled-jsx-plugin-postcss@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/styled-jsx-plugin-postcss/-/styled-jsx-plugin-postcss-0.1.3.tgz#046d0e4c6963e0d0ed65ee51a8048088d5e35353" - integrity sha512-1+1+cjWzvIHiDkD/ffewLSmk0aiZJtyeEKOU4u1sngKDr3JAPDOgTns0Y7SjFwyr6JotjniXQLS0ZcR0WCvViw== +styled-components@^5.3.6: + version "5.3.9" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.9.tgz#641af2a8bb89904de708c71b439caa9633e8f0ba" + integrity sha512-Aj3kb13B75DQBo2oRwRa/APdB5rSmwUfN5exyarpX+x/tlM/rwZA2vVk2vQgVSP6WKaZJHWwiFrzgHt+CLtB4A== dependencies: - deasync "^0.1.12" - postcss "^6.0.13" - postcss-load-plugins "^2.3.0" + "@babel/helper-module-imports" "^7.0.0" + "@babel/traverse" "^7.4.5" + "@emotion/is-prop-valid" "^1.1.0" + "@emotion/stylis" "^0.8.4" + "@emotion/unitless" "^0.7.4" + babel-plugin-styled-components ">= 1.12.0" + css-to-react-native "^3.0.0" + hoist-non-react-statics "^3.0.0" + shallowequal "^1.1.0" + supports-color "^5.5.0" styled-jsx@5.0.7: version "5.0.7" resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.0.7.tgz#be44afc53771b983769ac654d355ca8d019dff48" integrity sha512-b3sUzamS086YLRuvnaDigdAewz1/EFYlHpYBP5mZovKEdQQOIIYq8lApylub3HHZ6xFjV051kkGU7cudJmrXEA== +stylis@4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.1.3.tgz#fd2fbe79f5fed17c55269e16ed8da14c84d069f7" + integrity sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA== + subscriptions-transport-ws@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/subscriptions-transport-ws/-/subscriptions-transport-ws-0.11.0.tgz#baf88f050cba51d52afe781de5e81b3c31f89883" @@ -11966,7 +12904,7 @@ supports-color@^2.0.0: resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== -supports-color@^5.3.0, supports-color@^5.4.0: +supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== @@ -12047,6 +12985,14 @@ symbol.prototype.description@^1.0.0: has-symbols "^1.0.2" object.getownpropertydescriptors "^2.1.2" +synckit@^0.8.4: + version "0.8.5" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.5.tgz#b7f4358f9bb559437f9f167eb6bc46b3c9818fa3" + integrity sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q== + dependencies: + "@pkgr/utils" "^2.3.1" + tslib "^2.5.0" + tapable@^1.0.0, tapable@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" @@ -12114,15 +13060,15 @@ terser-webpack-plugin@^2.1.2: webpack-sources "^1.4.3" terser-webpack-plugin@^5.1.3: - version "5.3.6" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz#5590aec31aa3c6f771ce1b1acca60639eab3195c" - integrity sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ== + version "5.3.7" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz#ef760632d24991760f339fe9290deb936ad1ffc7" + integrity sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw== dependencies: - "@jridgewell/trace-mapping" "^0.3.14" + "@jridgewell/trace-mapping" "^0.3.17" jest-worker "^27.4.5" schema-utils "^3.1.1" - serialize-javascript "^6.0.0" - terser "^5.14.1" + serialize-javascript "^6.0.1" + terser "^5.16.5" terser@^4.1.2, terser@^4.6.12, terser@^4.6.3: version "4.8.1" @@ -12133,10 +13079,10 @@ terser@^4.1.2, terser@^4.6.12, terser@^4.6.3: source-map "~0.6.1" source-map-support "~0.5.12" -terser@^5.14.1: - version "5.16.5" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.5.tgz#1c285ca0655f467f92af1bbab46ab72d1cb08e5a" - integrity sha512-qcwfg4+RZa3YvlFh0qjifnzBHjKGNbtDo9yivMqMFDy9Q6FSaQWSB/j1xKhsoUFJIqDOM3TsN6D5xbrMrFcHbg== +terser@^5.16.5: + version "5.16.6" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.6.tgz#f6c7a14a378ee0630fbe3ac8d1f41b4681109533" + integrity sha512-IBZ+ZQIA9sMaXmRZCUMDjNH0D5AQQfdn4WUjHL0+1lF4TP1IHRJbrhb6fNaXWikrYQTSkb7SLxkeXAiy1p7mbg== dependencies: "@jridgewell/source-map" "^0.3.2" acorn "^8.5.0" @@ -12162,7 +13108,7 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" -text-table@0.2.0: +text-table@0.2.0, text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== @@ -12197,6 +13143,14 @@ tiny-emitter@^2.0.0: resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423" integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q== +tiny-glob@^0.2.9: + version "0.2.9" + resolved "https://registry.yarnpkg.com/tiny-glob/-/tiny-glob-0.2.9.tgz#2212d441ac17928033b110f8b3640683129d31e2" + integrity sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg== + dependencies: + globalyzer "0.1.0" + globrex "^0.1.2" + tiny-invariant@^1.0.6: version "1.3.1" resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642" @@ -12350,16 +13304,33 @@ ts-pnp@^1.1.2: resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== -tslib@^1.10.0, tslib@^1.9.0, tslib@^1.9.3: +tsconfig-paths@^3.14.1: + version "3.14.2" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" + integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0: +tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" @@ -12382,6 +13353,13 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -12394,6 +13372,11 @@ type-fest@^0.18.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + type-fest@^0.21.3: version "0.21.3" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" @@ -12436,6 +13419,11 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== +typescript@^4.9.5: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + typpy@2.3.11: version "2.3.11" resolved "https://registry.yarnpkg.com/typpy/-/typpy-2.3.11.tgz#21a0d22c96fb646306e08b6c669ad43608e1b3b9" @@ -12444,9 +13432,9 @@ typpy@2.3.11: function.name "^1.0.3" ua-parser-js@^0.7.30: - version "0.7.33" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.33.tgz#1d04acb4ccef9293df6f70f2c3d22f3030d8b532" - integrity sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw== + version "0.7.34" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.34.tgz#afb439e2e3e394bdc90080acb661a39c685b67d7" + integrity sha512-cJMeh/eOILyGu0ejgTKB95yKT3zOenSe9UGE3vj6WfiOwgGYnmATUsnDixMFvdU+rNMvWih83hrUP8VwhF9yXQ== unbox-primitive@^1.0.2: version "1.0.2" @@ -12719,6 +13707,11 @@ use-callback-ref@^1.3.0: dependencies: tslib "^2.0.0" +use-isomorphic-layout-effect@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" + integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== + use-memo-one@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/use-memo-one/-/use-memo-one-1.1.3.tgz#2fd2e43a2169eabc7496960ace8c79efef975e99" @@ -12886,21 +13879,21 @@ void-elements@^3.1.0: integrity sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w== vue-docgen-api@^4.1.0: - version "4.56.4" - resolved "https://registry.yarnpkg.com/vue-docgen-api/-/vue-docgen-api-4.56.4.tgz#ccb175f2b3453bf5da01f80311ae4f43e17e2a57" - integrity sha512-Z59qNUYZNHMZL0QITNbqobGKJgmqyOs4OiAdzr1Ug7ys1gkFBGewiuwPURTsoM2zi4GWZWy2eW4B5FevwT7gpA== + version "4.64.1" + resolved "https://registry.yarnpkg.com/vue-docgen-api/-/vue-docgen-api-4.64.1.tgz#d337dfa3ddea2ab8e980f88cc7612f1b1a943105" + integrity sha512-jbOf7ByE3Zvtuk+429Jorl+eIeh2aB2Fx1GUo3xJd1aByJWE8KDlSEa6b11PB1ze8f0sRUBraRDinICCk0KY7g== dependencies: "@babel/parser" "^7.13.12" "@babel/types" "^7.18.8" "@vue/compiler-dom" "^3.2.0" "@vue/compiler-sfc" "^3.2.0" ast-types "0.14.2" - hash-sum "^1.0.2" - lru-cache "^4.1.5" + hash-sum "^2.0.0" + lru-cache "^8.0.3" pug "^3.0.2" recast "0.22.0" ts-map "^1.0.3" - vue-inbrowser-compiler-independent-utils "^4.56.2" + vue-inbrowser-compiler-independent-utils "^4.64.1" vue-docgen-loader@^1.3.0-beta.0: version "1.5.1" @@ -12912,10 +13905,10 @@ vue-docgen-loader@^1.3.0-beta.0: loader-utils "^1.2.3" querystring "^0.2.0" -vue-inbrowser-compiler-independent-utils@^4.56.2: - version "4.56.2" - resolved "https://registry.yarnpkg.com/vue-inbrowser-compiler-independent-utils/-/vue-inbrowser-compiler-independent-utils-4.56.2.tgz#2ca2866b205eb1ef02c04b7a87b6a9f21000c3c7" - integrity sha512-szE2vZDSkZlItq+K4MevgvCGKt5IzM6OkIjyCuj/09ty2akixeQGNFRXyDELMdmVVzmN+9nJn02YKnoPkhXHwA== +vue-inbrowser-compiler-independent-utils@^4.64.1: + version "4.64.1" + resolved "https://registry.yarnpkg.com/vue-inbrowser-compiler-independent-utils/-/vue-inbrowser-compiler-independent-utils-4.64.1.tgz#4dd4d9b7f138c45eae2d2d2e5b0da3f73285c30e" + integrity sha512-Hn32n07XZ8j9W8+fmOXPQL+i+W2e/8i6mkH4Ju3H6nR0+cfvmWM95GhczYi5B27+Y8JlCKgAo04IUiYce4mKAw== walker@^1.0.7, walker@~1.0.5: version "1.0.8" @@ -13112,6 +14105,16 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== + dependencies: + is-map "^2.0.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" + which-typed-array@^1.1.2, which-typed-array@^1.1.9: version "1.1.9" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" @@ -13167,7 +14170,7 @@ with@^7.0.0: assert-never "^1.2.1" babel-walk "3.0.0-canary-5" -word-wrap@~1.2.3: +word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== @@ -13251,11 +14254,6 @@ y18n@^5.0.5: resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== - yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" @@ -13266,7 +14264,7 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.7.2: +yaml@^1.10.0, yaml@^1.7.2: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==