diff --git a/.eslintrc.json b/.eslintrc.json index bc1a835..68e0c3c 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,7 +1,16 @@ { - "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended", "prettier"], - "plugins": ["react", "@typescript-eslint", "react-hooks"], - + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "prettier" + ], + "plugins": [ + "react", + "@typescript-eslint", + "react-hooks", + "import", + "better-styled-components" + ], "env": { "node": true, "browser": true, @@ -10,11 +19,54 @@ "es6": true }, "rules": { + "better-styled-components/sort-declarations-alphabetically": 2, + "import/order": [ + "error", + { + "groups": [ + "builtin", + "external", + [ + "internal", + "parent", + "sibling", + "index", + "object" + ] + ], + "pathGroups": [ + { + "pattern": "react", + "group": "external", + "position": "before" + }, + { + "pattern": "src/**", + "group": "internal" + }, + { + "pattern": "theme/**", + "group": "internal" + } + ], + "pathGroupsExcludedImportTypes": [ + "react" + ], + "alphabetize": { + "order": "asc", + "caseInsensitive": true + }, + "newlines-between": "always" + } + ], "@typescript-eslint/naming-convention": [ "error", { "selector": "typeLike", - "format": ["PascalCase", "UPPER_CASE"] + "format": [ + "PascalCase", + "UPPER_CASE" + ] } ], "react-hooks/rules-of-hooks": "error", @@ -23,6 +75,7 @@ "no-unused-expressions": "off", "@typescript-eslint/no-unused-expressions": "error", "no-unused-vars": "off", + "@typescript-eslint/explicit-module-boundary-types": 0, "@typescript-eslint/no-unused-vars": [ "error", { diff --git a/package.json b/package.json index 5db9769..bd09650 100644 --- a/package.json +++ b/package.json @@ -73,6 +73,8 @@ "babel-plugin-styled-components": "^1.12.0", "cross-env": "^7.0.3", "eslint-config-prettier": "^7.2.0", + "eslint-plugin-better-styled-components": "^1.1.2", + "eslint-plugin-import": "^2.23.4", "husky": "^6.0.0", "lint-staged": "^10.5.4", "prettier": "^2.2.1", diff --git a/src/App.style.ts b/src/App.style.ts index c49b9d0..b6fc230 100644 --- a/src/App.style.ts +++ b/src/App.style.ts @@ -3,22 +3,22 @@ import styled from '@emotion/styled'; import theme from 'theme/globals'; export const AppWrapper = styled.div` - width: 100%; - height: calc(100vh); background-color: ${theme.defaultBackgroundColor}; - font-family: ${theme.fontFamily}; color: ${theme.defaultTextColor}; - position: relative; + font-family: ${theme.fontFamily}; + height: calc(100vh); overflow: hidden; + position: relative; + width: 100%; `; export const TopBar = styled.div` - width: 100%; - position: sticky; - display: flex; - flex-direction: row; align-items: center; + border-bottom: 1px black solid; color: black; + display: flex; + flex-direction: row; font-weight: 700; - border-bottom: 1px black solid; + position: sticky; + width: 100%; `; diff --git a/src/App.tsx b/src/App.tsx index 440db36..23250d2 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,11 +1,13 @@ import React from 'react'; -import { BrowserRouter as Router } from 'react-router-dom'; + import { ThemeProvider } from '@orfium/ictinus'; import { QueryClient, QueryClientProvider } from 'react-query'; +import { BrowserRouter as Router } from 'react-router-dom'; + -import theme from 'theme/globals'; import { AppWrapper } from './App.style'; import Routes from './routing/Routes'; +import theme from 'theme/globals'; const queryClient = new QueryClient(); diff --git a/src/api/userAPI/userAPI.tsx b/src/api/userAPI/userAPI.tsx index a67b67c..5daf176 100644 --- a/src/api/userAPI/userAPI.tsx +++ b/src/api/userAPI/userAPI.tsx @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ -import { METHODS, request } from '../axiosInstances'; import { LoginResponse } from '../../models/apiTypes'; +import { METHODS, request } from '../axiosInstances'; export default { signIn: (params: LoginResponse) => request(METHODS.POST, '/sign-in/', { params }), diff --git a/src/common.style.tsx b/src/common.style.tsx index ee15f52..a9e4d1f 100644 --- a/src/common.style.tsx +++ b/src/common.style.tsx @@ -1,7 +1,8 @@ +import { css } from '@emotion/react'; import styled from '@emotion/styled'; import { grid } from '@orfium/ictinus/dist/theme/functions'; + import { flex } from './theme/functions'; -import { css } from '@emotion/react'; export const PageWrapper = styled.div` ${flex}; @@ -44,10 +45,10 @@ export const CheckBoxContainer = styled.div<{ error?: boolean; checked?: boolean export const FieldsContainer = styled.div<{ withMargin?: boolean }>` ${grid}; - grid-template-columns: 1fr 1fr; column-gap: 38px; - row-gap: 24px; + grid-template-columns: 1fr 1fr; margin-bottom: ${(props) => (props.withMargin ? '24px' : null)}; + row-gap: 24px; `; export const LongFieldWrapper = styled.div` @@ -55,15 +56,15 @@ export const LongFieldWrapper = styled.div` `; export const FieldWrapper = styled.div` - width: 100%; box-sizing: border-box; + width: 100%; `; export const RadioText = styled.span` - min-height: 48px; - display: inline-flex; align-items: center; + display: inline-flex; margin-left: 8px; + min-height: 48px; `; // eslint-disable-next-line @typescript-eslint/ban-ts-comment diff --git a/src/hooks/api/userHooks.ts b/src/hooks/api/userHooks.ts index c1e8deb..0d665c8 100644 --- a/src/hooks/api/userHooks.ts +++ b/src/hooks/api/userHooks.ts @@ -1,15 +1,15 @@ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ +import { AxiosError } from 'axios'; import { useMutation } from 'react-query'; import { useHistory } from 'react-router-dom'; -import { AxiosError } from 'axios'; +import { __TOKEN__ } from 'utils/constants'; -import { LoginFormType, LoginResponse } from '../../models/apiTypes'; -import userAPI from '../../api/userAPI'; import { setAxiosToken } from '../../api/axiosInstances'; -import { __TOKEN__ } from 'utils/constants'; +import userAPI from '../../api/userAPI'; +import { LoginFormType, LoginResponse } from '../../models/apiTypes'; +import urls from '../../routing/urls'; import { setUserStorageItem } from '../../utils/storage'; -import urls from '../../routing/urls'; export const useSignIn = () => { const history = useHistory(); diff --git a/src/hooks/useResponsiveSidebar.ts b/src/hooks/useResponsiveSidebar.ts index 7ffe0a5..063a848 100644 --- a/src/hooks/useResponsiveSidebar.ts +++ b/src/hooks/useResponsiveSidebar.ts @@ -1,4 +1,5 @@ import { useEffect, useState } from 'react'; + import useBreakpoints from '@orfium/ictinus/dist/hooks/useBreakpoints'; export const useResponsiveLayout = () => { diff --git a/src/index.tsx b/src/index.tsx index 0aade1b..1263747 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -1,11 +1,12 @@ import React from 'react'; + import ReactDOM from 'react-dom'; import './index.css'; -import App from './App'; import { setAxiosToken } from './api/axiosInstances'; -import { getUserStorageItem } from './utils/storage'; +import App from './App'; import { __TOKEN__ } from './utils/constants'; +import { getUserStorageItem } from './utils/storage'; const token = getUserStorageItem(__TOKEN__); if (token) { diff --git a/src/pages/Layout/Layout.style.ts b/src/pages/Layout/Layout.style.ts index cbf2b88..d5d2dcb 100644 --- a/src/pages/Layout/Layout.style.ts +++ b/src/pages/Layout/Layout.style.ts @@ -1,9 +1,10 @@ import styled from '@emotion/styled'; import { flexCenter } from '@orfium/ictinus/dist/theme/functions'; -import { flex } from 'theme/functions'; + import { scrollBar } from '../../common.style'; import { ResponsiveProps } from '../types'; +import { flex } from 'theme/functions'; const SIDEBAR_WIDTH_COLLAPSED = 110; @@ -28,31 +29,31 @@ export const Main = styled.main` grid-area: main; ${scrollBar}; - overflow-y: auto; overflow-x: hidden; + overflow-y: auto; ${flex} `; export const MainContainer = styled.div` display: grid; - grid-template-columns: ${getWidth}px 1fr; - grid-template-rows: 0fr; grid-template-areas: 'header header' 'sidebar main' 'sidebar main'; + grid-template-columns: ${getWidth}px 1fr; + grid-template-rows: 0fr; height: 100vh; transition: all 0.5s ease-in-out 0s; `; export const Header = styled.header` - width: 100%; grid-area: header; + width: 100%; z-index: 120; & > div > div:nth-of-type(2) { - flex: 1; display: flex; + flex: 1; justify-content: flex-end; } `; diff --git a/src/pages/Layout/Layout.tsx b/src/pages/Layout/Layout.tsx index 36f08c6..2224416 100644 --- a/src/pages/Layout/Layout.tsx +++ b/src/pages/Layout/Layout.tsx @@ -1,10 +1,11 @@ /** @jsxImportSource @emotion/react */ import React from 'react'; -import { Header, Main, MainContainer, SideNav } from './Layout.style'; import { Drawer, IconButton } from '@orfium/ictinus'; + import { TopBar } from '../../App.style'; import { useResponsiveLayout } from '../../hooks/useResponsiveSidebar'; +import { Header, Main, MainContainer, SideNav } from './Layout.style'; interface Props { /** Component to load */ diff --git a/src/pages/Login/Login.style.ts b/src/pages/Login/Login.style.ts index 1494a00..bf3d8d0 100644 --- a/src/pages/Login/Login.style.ts +++ b/src/pages/Login/Login.style.ts @@ -1,8 +1,8 @@ import styled from '@emotion/styled'; export const TextContainer = styled.div` - display: flex; align-items: start; + display: flex; flex-direction: column; margin-top: 100px; `; diff --git a/src/pages/Login/Login.tsx b/src/pages/Login/Login.tsx index a367e47..65fba03 100644 --- a/src/pages/Login/Login.tsx +++ b/src/pages/Login/Login.tsx @@ -1,8 +1,8 @@ /** @jsxImportSource @emotion/react */ import React from 'react'; -import { Subtitle, TextContainer, Title } from './Login.style'; import LoginForm from './components/LoginForm'; +import { Subtitle, TextContainer, Title } from './Login.style'; const Login: React.FC = () => { return ( diff --git a/src/pages/Login/components/LoginForm/LoginForm.style.ts b/src/pages/Login/components/LoginForm/LoginForm.style.ts index 98e4af3..c64729c 100644 --- a/src/pages/Login/components/LoginForm/LoginForm.style.ts +++ b/src/pages/Login/components/LoginForm/LoginForm.style.ts @@ -19,9 +19,9 @@ export const ButtonContainer = styled.div` width: 100%; span { - justify-content: center; - font-weight: 700; font-size: 16px; + font-weight: 700; + justify-content: center; } } `; diff --git a/src/pages/Login/components/LoginForm/LoginForm.tsx b/src/pages/Login/components/LoginForm/LoginForm.tsx index 1215832..bf4bae3 100644 --- a/src/pages/Login/components/LoginForm/LoginForm.tsx +++ b/src/pages/Login/components/LoginForm/LoginForm.tsx @@ -1,12 +1,13 @@ /** @jsxImportSource @emotion/react */ import React from 'react'; -import { Field, Form } from 'react-final-form'; -import { Button, CheckBox, TextField } from '@orfium/ictinus'; +import { Button, CheckBox, TextField } from '@orfium/ictinus'; import { CheckBoxContainer, FieldsContainer, FieldWrapper, LongFieldWrapper } from 'common.style'; -import { ButtonContainer, FormBottom, FormContainer } from './LoginForm.style'; +import { Field, Form } from 'react-final-form'; + import { useSignIn } from '../../../../hooks/api/userHooks'; import { LoginFormType } from '../../../../models/apiTypes'; +import { ButtonContainer, FormBottom, FormContainer } from './LoginForm.style'; const SignIn: React.FC = () => { const { mutate } = useSignIn(); diff --git a/src/pages/PatientDirectory/PatientDirectory.style.ts b/src/pages/PatientDirectory/PatientDirectory.style.ts index e6df101..53295ba 100644 --- a/src/pages/PatientDirectory/PatientDirectory.style.ts +++ b/src/pages/PatientDirectory/PatientDirectory.style.ts @@ -1,4 +1,5 @@ import styled from '@emotion/styled'; + import { scrollBar } from '../../common.style'; export const PatientDirectoryContainer = styled.div` @@ -8,10 +9,10 @@ export const PatientDirectoryContainer = styled.div` `; export const SearchWrapper = styled.div` - padding: 18px; display: flex; flex-direction: column; gap: 8px; + padding: 18px; & > div > div { background: ${(props) => props.theme.utils.getColor('lightGray', 100)}; @@ -19,13 +20,13 @@ export const SearchWrapper = styled.div` `; export const Line = styled.div` - height: 0px; border-top: 1px solid #f2f2f2; + height: 0px; `; export const PatientsList = styled.div` ${scrollBar}; - overflow-y: auto; margin-bottom: 56px; + overflow-y: auto; padding: 0px 18px 18px 18px; `; diff --git a/src/pages/PatientDirectory/PatientDirectory.tsx b/src/pages/PatientDirectory/PatientDirectory.tsx index a03f402..1512154 100644 --- a/src/pages/PatientDirectory/PatientDirectory.tsx +++ b/src/pages/PatientDirectory/PatientDirectory.tsx @@ -1,14 +1,15 @@ import React from 'react'; + import { TextField, Select } from '@orfium/ictinus'; +import PatientCard from './components/PatientCard'; +import { Patients } from './constants'; import { PatientDirectoryContainer, SearchWrapper, Line, PatientsList, } from './PatientDirectory.style'; -import PatientCard from './components/PatientCard'; -import { Patients } from './constants'; const PatientDirectory: React.FC = () => { return ( diff --git a/src/pages/PatientDirectory/components/PatientCard/PatientCard.style.ts b/src/pages/PatientDirectory/components/PatientCard/PatientCard.style.ts index 41ab6e2..655c0bf 100644 --- a/src/pages/PatientDirectory/components/PatientCard/PatientCard.style.ts +++ b/src/pages/PatientDirectory/components/PatientCard/PatientCard.style.ts @@ -1,31 +1,31 @@ import styled from '@emotion/styled'; export const CardContainer = styled.div` - padding: 16px 0px 17px 4px; display: flex; flex-direction: column; gap: 21px; + padding: 16px 0px 17px 4px; `; export const Info = styled.div` - font-size: 14px; color: ${(props) => props.theme.utils.getColor('darkGray', 600)}; + font-size: 14px; `; export const ChipWrapper = styled.div` & > div { color: ${(props) => props.theme.utils.getColor('lightGray', 600)}; + font-size: 12px; font-weight: 500; white-space: nowrap; - font-size: 12px; } `; export const Header = styled.div` - display: flex; align-items: center; - justify-content: space-between; + display: flex; gap: 15px; + justify-content: space-between; `; export const Footer = styled.div` @@ -35,8 +35,8 @@ export const Footer = styled.div` export const CardLabel = styled.div` color: ${(props) => props.theme.utils.getColor('lightGray', 400)}; - font-weight: 500; font-size: 11px; + font-weight: 500; `; export const CardValue = styled.div` @@ -51,11 +51,11 @@ export const CardItemContainer = styled.div` `; export const ViewMore = styled.div` - font-size: 12px; - font-weight: 500; - display: flex; align-items: center; color: #0047ff; + display: flex; + font-size: 12px; + font-weight: 500; `; export const CardItemsContainer = styled.div` diff --git a/src/pages/PatientDirectory/components/PatientCard/PatientCard.tsx b/src/pages/PatientDirectory/components/PatientCard/PatientCard.tsx index c242e63..63a73d3 100644 --- a/src/pages/PatientDirectory/components/PatientCard/PatientCard.tsx +++ b/src/pages/PatientDirectory/components/PatientCard/PatientCard.tsx @@ -1,5 +1,7 @@ import React from 'react'; + import { Chip, Icon } from '@orfium/ictinus'; +import { Patient } from 'pages/PatientDirectory/types'; import { CardContainer, @@ -13,7 +15,6 @@ import { CardValue, ViewMore, } from './PatientCard.style'; -import { Patient } from 'pages/PatientDirectory/types'; const PatientCard: React.FC = ({ name, gender, age, hospital, patientHospitalId, id }) => { return ( diff --git a/src/pages/RegisterPatient/RegisterPatient.style.ts b/src/pages/RegisterPatient/RegisterPatient.style.ts index dc90fba..6860b12 100644 --- a/src/pages/RegisterPatient/RegisterPatient.style.ts +++ b/src/pages/RegisterPatient/RegisterPatient.style.ts @@ -3,16 +3,16 @@ import styled from '@emotion/styled'; export const FormHeading = styled.span` font-size: 14px; font-weight: 700; - padding: 18px; margin-bottom: 12px; + padding: 18px; `; export const ButtonsContainer = styled.div` - position: sticky; - padding: 15px; - height: 130px; background-color: white; + bottom: 0; display: flex; flex-direction: column; gap: 18px; - bottom: 0; + height: 130px; + padding: 15px; + position: sticky; `; diff --git a/src/pages/RegisterPatient/RegisterPatient.tsx b/src/pages/RegisterPatient/RegisterPatient.tsx index 5fdf8f4..8c624e5 100644 --- a/src/pages/RegisterPatient/RegisterPatient.tsx +++ b/src/pages/RegisterPatient/RegisterPatient.tsx @@ -1,12 +1,13 @@ /** @jsxImportSource @emotion/react */ import React from 'react'; + +import { Button } from '@orfium/ictinus'; import { Form } from 'react-final-form'; -import { LoginFormType } from '../../models/apiTypes'; -import { FormHeading, ButtonsContainer } from './RegisterPatient.style'; -import RegisterPatientForm from './components/RegisterPatientForm'; +import { LoginFormType } from '../../models/apiTypes'; import { ButtonContainer } from '../Login/components/LoginForm/LoginForm.style'; -import { Button } from '@orfium/ictinus'; +import RegisterPatientForm from './components/RegisterPatientForm'; +import { FormHeading, ButtonsContainer } from './RegisterPatient.style'; const RegisterPatient = () => { const handleSubmit = (form: LoginFormType) => { diff --git a/src/pages/RegisterPatient/components/RegisterPatientForm/RegisterPatientForm.style.tsx b/src/pages/RegisterPatient/components/RegisterPatientForm/RegisterPatientForm.style.tsx index 2fc9258..16eb1ee 100644 --- a/src/pages/RegisterPatient/components/RegisterPatientForm/RegisterPatientForm.style.tsx +++ b/src/pages/RegisterPatient/components/RegisterPatientForm/RegisterPatientForm.style.tsx @@ -1,10 +1,11 @@ import styled from '@emotion/styled'; + import { scrollBar } from '../../../../common.style'; export const FormSectionHeading = styled.span` color: ${(props) => props.theme.utils.getColor('lightGray', 600)}; - font-weight: 700; font-size: 10px; + font-weight: 700; `; export const FormHeadingContainer = styled.div` @@ -14,10 +15,10 @@ export const FormHeadingContainer = styled.div` `; export const FormContainer = styled.div` - overflow-y: auto; - padding: 18px; flex-grow: 1; margin-bottom: 120px; + overflow-y: auto; + padding: 18px; ${scrollBar}; `; diff --git a/src/pages/RegisterPatient/components/RegisterPatientForm/RegisterPatientForm.tsx b/src/pages/RegisterPatient/components/RegisterPatientForm/RegisterPatientForm.tsx index bff8a41..b65e5e1 100644 --- a/src/pages/RegisterPatient/components/RegisterPatientForm/RegisterPatientForm.tsx +++ b/src/pages/RegisterPatient/components/RegisterPatientForm/RegisterPatientForm.tsx @@ -1,8 +1,9 @@ /** @jsxImportSource @emotion/react */ import React, { ChangeEvent } from 'react'; -import { Field } from 'react-final-form'; + import { Radio, RadioGroup, Select, TextField } from '@orfium/ictinus'; import { omit } from 'lodash'; +import { Field } from 'react-final-form'; import { FieldsContainer, diff --git a/src/routing/PrivateRoute.tsx b/src/routing/PrivateRoute.tsx index 43c0135..c21de17 100644 --- a/src/routing/PrivateRoute.tsx +++ b/src/routing/PrivateRoute.tsx @@ -1,11 +1,12 @@ import React from 'react'; + +import Layout from 'pages/Layout/Layout'; import { Redirect, Route } from 'react-router-dom'; -import cookies from '../utils/cookies'; import { __TOKEN__ } from '../utils/constants'; -import urls from './urls'; +import cookies from '../utils/cookies'; import { CustomRouteProps } from './types'; -import Layout from 'pages/Layout/Layout'; +import urls from './urls'; const PrivateRoute: React.FC = ({ component: Component, ...rest }) => { const token = cookies.get(__TOKEN__); diff --git a/src/routing/PublicRoute.tsx b/src/routing/PublicRoute.tsx index 953744a..9d9d0e4 100644 --- a/src/routing/PublicRoute.tsx +++ b/src/routing/PublicRoute.tsx @@ -1,11 +1,12 @@ import React from 'react'; + import { Redirect, Route } from 'react-router-dom'; -import cookies from '../utils/cookies'; +import Layout from '../pages/Layout'; import { __TOKEN__ } from '../utils/constants'; +import cookies from '../utils/cookies'; import { CustomRouteProps } from './types'; import urls from './urls'; -import Layout from '../pages/Layout'; const PublicRoute: React.FC = ({ component: Component, ...rest }) => { const token = cookies.get(__TOKEN__); @@ -14,7 +15,9 @@ const PublicRoute: React.FC = ({ component: Component, ...rest return } />; } - return } />; + return ( + } /> + ); }; export default PublicRoute; diff --git a/src/routing/Routes.tsx b/src/routing/Routes.tsx index a1a5a2d..23a427c 100644 --- a/src/routing/Routes.tsx +++ b/src/routing/Routes.tsx @@ -1,11 +1,12 @@ import React from 'react'; -import { Switch } from 'react-router-dom'; -import PublicRoute from './PublicRoute'; -import urls from './urls'; import Login from 'pages/Login'; import PatientDirectory from 'pages/PatientDirectory'; import RegisterPatient from 'pages/RegisterPatient'; +import { Switch } from 'react-router-dom'; + +import PublicRoute from './PublicRoute'; +import urls from './urls'; const Routes: React.FC = () => ( diff --git a/src/test/utils.tsx b/src/test/utils.tsx index 9669568..bd45e71 100644 --- a/src/test/utils.tsx +++ b/src/test/utils.tsx @@ -1,8 +1,10 @@ import React, { FC } from 'react'; -import { render } from '@testing-library/react'; + import { ThemeProvider as OrfiumThemeProvider } from '@orfium/ictinus'; +import { render } from '@testing-library/react'; import { BrowserRouter as Router } from 'react-router-dom'; import cookies from 'utils/cookies'; + import { __TOKEN__ } from '../utils/constants'; export const LOGIN_TOKEN_MOCK = 'test-token'; diff --git a/src/theme/functions.ts b/src/theme/functions.ts index 283a951..5d7e93f 100644 --- a/src/theme/functions.ts +++ b/src/theme/functions.ts @@ -5,18 +5,18 @@ import { css } from '@emotion/react'; /* adds a "..." after the line of the text exceeds the width of the component*/ export const lineEllipsis = css` - white-space: nowrap; overflow: hidden; text-overflow: ellipsis; + white-space: nowrap; `; //https://css-tricks.com/snippets/css/prevent-long-urls-from-breaking-out-of-container/ export const breakWord = css` - overflow-wrap: break-word; - word-wrap: break-word; -ms-word-break: break-all; - word-break: break-all; + overflow-wrap: break-word; word-break: break-word; + word-break: break-all; + word-wrap: break-word; `; export const flex = css` @@ -29,18 +29,18 @@ export const flex = css` /* centers flex content */ export const flexCenter = css` ${flex}; - -webkit-align-items: center; -moz-box-align: center; -ms-flex-align: center; + -webkit-align-items: center; align-items: center; justify-content: center; `; export const flexCenterVertical = css` ${flex}; - -webkit-align-items: center; -moz-box-align: center; -ms-flex-align: center; + -webkit-align-items: center; align-items: center; `; diff --git a/yarn.lock b/yarn.lock index aabf73e..f8a107f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3579,6 +3579,17 @@ array-includes@^3.1.1: es-abstract "^1.17.0" is-string "^1.0.5" +array-includes@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" + integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + get-intrinsic "^1.1.1" + is-string "^1.0.5" + array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -3601,7 +3612,7 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= -array.prototype.flat@^1.2.3: +array.prototype.flat@^1.2.3, array.prototype.flat@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== @@ -4366,6 +4377,14 @@ call-bind@^1.0.0: function-bind "^1.1.1" get-intrinsic "^1.0.0" +call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + caller-callsite@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" @@ -5412,7 +5431,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: dependencies: ms "2.0.0" -debug@^3.1.1, debug@^3.2.6: +debug@^3.1.1, debug@^3.2.6, debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== @@ -5921,6 +5940,28 @@ es-abstract@^1.18.0-next.0, es-abstract@^1.18.0-next.1: string.prototype.trimend "^1.0.1" string.prototype.trimstart "^1.0.1" +es-abstract@^1.18.0-next.2, es-abstract@^1.18.2: + version "1.18.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.3.tgz#25c4c3380a27aa203c44b2b685bba94da31b63e0" + integrity sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.2" + is-callable "^1.2.3" + is-negative-zero "^2.0.1" + is-regex "^1.1.3" + is-string "^1.0.6" + object-inspect "^1.10.3" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.4" + string.prototype.trimstart "^1.0.4" + unbox-primitive "^1.0.1" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -6021,6 +6062,22 @@ eslint-module-utils@^2.6.0: debug "^2.6.9" pkg-dir "^2.0.0" +eslint-module-utils@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.1.tgz#b51be1e473dd0de1c5ea638e22429c2490ea8233" + integrity sha512-ZXI9B8cxAJIH4nfkhTwcRTEAnrVfobYqwjWy/QMCZ8rHkZHFjf9yO4BzpiF9kCSfNlMG54eKigISHpX0+AaT4A== + dependencies: + debug "^3.2.7" + pkg-dir "^2.0.0" + +eslint-plugin-better-styled-components@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-better-styled-components/-/eslint-plugin-better-styled-components-1.1.2.tgz#cc8af5607abfcdabb53160e94f8e342582a46031" + integrity sha512-pGLIv8Z05xnmMyDyLWV65KQs7HU+FN403Tqb5xv3BZvw5kjC3K18/aYm7mcRpLLPse5/lwhX8ieGQKflPgr0xQ== + dependencies: + postcss "^7.0.2" + requireindex "~1.1.0" + eslint-plugin-flowtype@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.2.0.tgz#a4bef5dc18f9b2bdb41569a4ab05d73805a3d261" @@ -6048,6 +6105,27 @@ eslint-plugin-import@^2.22.1: resolve "^1.17.0" tsconfig-paths "^3.9.0" +eslint-plugin-import@^2.23.4: + version "2.23.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz#8dceb1ed6b73e46e50ec9a5bb2411b645e7d3d97" + integrity sha512-6/wP8zZRsnQFiR3iaPFgh5ImVRM1WN5NUWfTIRqwOdeiGJlBcSk82o1FEVq8yXmy4lkIzTo7YhHCIxlU/2HyEQ== + dependencies: + array-includes "^3.1.3" + array.prototype.flat "^1.2.4" + debug "^2.6.9" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.4" + eslint-module-utils "^2.6.1" + find-up "^2.0.0" + has "^1.0.3" + is-core-module "^2.4.0" + minimatch "^3.0.4" + object.values "^1.1.3" + pkg-up "^2.0.0" + read-pkg-up "^3.0.0" + resolve "^1.20.0" + tsconfig-paths "^3.9.0" + eslint-plugin-jest@^24.1.0: version "24.1.3" resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-24.1.3.tgz#fa3db864f06c5623ff43485ca6c0e8fc5fe8ba0c" @@ -6787,6 +6865,15 @@ get-intrinsic@^1.0.0: has "^1.0.3" has-symbols "^1.0.1" +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + get-own-enumerable-property-symbols@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" @@ -6970,6 +7057,11 @@ harmony-reflect@^1.4.6: resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.1.tgz#c108d4f2bb451efef7a37861fdbdae72c9bdefa9" integrity sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA== +has-bigints@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" + integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -6985,6 +7077,11 @@ has-symbols@^1.0.1: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== +has-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -7492,6 +7589,11 @@ is-arrayish@^0.3.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== +is-bigint@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.2.tgz#ffb381442503235ad245ea89e45b3dbff040ee5a" + integrity sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA== + is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" @@ -7506,6 +7608,13 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" +is-boolean-object@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.1.tgz#3c0878f035cb821228d350d2e1e36719716a3de8" + integrity sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng== + dependencies: + call-bind "^1.0.2" + is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -7516,6 +7625,11 @@ is-callable@^1.1.4, is-callable@^1.2.2: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== +is-callable@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" + integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== + is-ci@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" @@ -7542,6 +7656,13 @@ is-core-module@^2.0.0, is-core-module@^2.1.0: dependencies: has "^1.0.3" +is-core-module@^2.2.0, is-core-module@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" + integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A== + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -7645,6 +7766,16 @@ is-negative-zero@^2.0.0: resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461" integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE= +is-negative-zero@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + +is-number-object@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.5.tgz#6edfaeed7950cff19afedce9fbfca9ee6dd289eb" + integrity sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw== + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -7710,6 +7841,14 @@ is-regex@^1.0.4, is-regex@^1.1.1: dependencies: has-symbols "^1.0.1" +is-regex@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" + integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ== + dependencies: + call-bind "^1.0.2" + has-symbols "^1.0.2" + is-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" @@ -7740,6 +7879,11 @@ is-string@^1.0.5: resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== +is-string@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.6.tgz#3fe5d5992fb0d93404f32584d4b0179a71b54a5f" + integrity sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w== + is-svg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" @@ -7754,6 +7898,13 @@ is-symbol@^1.0.2: dependencies: has-symbols "^1.0.1" +is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + is-text-path@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" @@ -8586,6 +8737,16 @@ load-json-file@^2.0.0: pify "^2.0.0" strip-bom "^3.0.0" +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + loader-runner@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" @@ -9389,6 +9550,11 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" +object-inspect@^1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.3.tgz#c2aa7d2d09f50c99375704f7a0adf24c5782d369" + integrity sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw== + object-inspect@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" @@ -9414,7 +9580,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.1.0, object.assign@^4.1.1: +object.assign@^4.1.0, object.assign@^4.1.1, object.assign@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== @@ -9468,6 +9634,15 @@ object.values@^1.1.0, object.values@^1.1.1: function-bind "^1.1.1" has "^1.0.3" +object.values@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.4.tgz#0d273762833e816b693a637d30073e7051535b30" + integrity sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.2" + obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" @@ -9803,6 +9978,13 @@ path-type@^2.0.0: dependencies: pify "^2.0.0" +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" @@ -9834,6 +10016,11 @@ pify@^2.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + pify@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" @@ -9886,6 +10073,13 @@ pkg-up@3.1.0: dependencies: find-up "^3.0.0" +pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" + integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= + dependencies: + find-up "^2.1.0" + please-upgrade-node@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" @@ -11102,6 +11296,14 @@ read-pkg-up@^2.0.0: find-up "^2.0.0" read-pkg "^2.0.0" +read-pkg-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= + dependencies: + find-up "^2.0.0" + read-pkg "^3.0.0" + read-pkg-up@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" @@ -11120,6 +11322,15 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + read-pkg@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" @@ -11390,6 +11601,11 @@ require-main-filename@^2.0.0: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== +requireindex@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.1.0.tgz#e5404b81557ef75db6e49c5a72004893fe03e162" + integrity sha1-5UBLgVV+91225JxacgBIk/4D4WI= + requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" @@ -11478,6 +11694,14 @@ resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.1 is-core-module "^2.1.0" path-parse "^1.0.6" +resolve@^1.20.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -12285,6 +12509,14 @@ string.prototype.trimend@^1.0.1: call-bind "^1.0.0" define-properties "^1.1.3" +string.prototype.trimend@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" + integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + string.prototype.trimstart@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa" @@ -12293,6 +12525,14 @@ string.prototype.trimstart@^1.0.1: call-bind "^1.0.0" define-properties "^1.1.3" +string.prototype.trimstart@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" + integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -12839,6 +13079,16 @@ typescript@^4.1.3: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.3.tgz#519d582bd94cba0cf8934c7d8e8467e473f53bb7" integrity sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg== +unbox-primitive@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" + integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== + dependencies: + function-bind "^1.1.1" + has-bigints "^1.0.1" + has-symbols "^1.0.2" + which-boxed-primitive "^1.0.2" + unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" @@ -13331,6 +13581,17 @@ whatwg-url@^8.0.0: tr46 "^2.0.2" webidl-conversions "^6.1.0" +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"