diff --git a/package.json b/package.json index 24436696fa..bea07d7676 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ }, "dependencies": { "@reapit/cognito-auth": "^2.0.5", - "@reapit/elements": "^0.5.24", + "@reapit/elements": "^0.5.26", "dayjs": "^1.8.17", "diff": "^4.0.1", "gitter-sidecar": "^1.5.0", diff --git a/src/components/pages/__tests__/__snapshots__/developer-welcome.tsx.snap b/src/components/pages/__tests__/__snapshots__/developer-welcome.tsx.snap new file mode 100644 index 0000000000..7d35ef0e03 --- /dev/null +++ b/src/components/pages/__tests__/__snapshots__/developer-welcome.tsx.snap @@ -0,0 +1,68 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`DeveloperWelcomeMessage should match a snapshot when LOADING false 1`] = ` + + + + + + } + heading="Heading-1" + id="step-1" + key="step-1" + subHeading="SubHeading-1" + /> + + + + + + + + + +`; diff --git a/src/components/pages/__tests__/__snapshots__/help.tsx.snap b/src/components/pages/__tests__/__snapshots__/help.tsx.snap new file mode 100644 index 0000000000..1f572c29e1 --- /dev/null +++ b/src/components/pages/__tests__/__snapshots__/help.tsx.snap @@ -0,0 +1,48 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`HelpPage should match a snapshot 1`] = ` + + + +

+ Help +

+ + + + + + + +
+
+
+`; diff --git a/src/components/pages/__tests__/developer-welcome.tsx b/src/components/pages/__tests__/developer-welcome.tsx new file mode 100644 index 0000000000..52d1559feb --- /dev/null +++ b/src/components/pages/__tests__/developer-welcome.tsx @@ -0,0 +1,23 @@ +import * as React from 'react' +import { shallow } from 'enzyme' +import { DeveloperWelcomeMessage, DeveloperWelcomeMessageProps, handleUserAccept } from '../developer-welcome' +import routes from '@/constants/routes' + +const mockProps: DeveloperWelcomeMessageProps = {} + +describe('DeveloperWelcomeMessage', () => { + it('should match a snapshot when LOADING false', () => { + expect(shallow()).toMatchSnapshot() + }) + + describe('handleUserAccept', () => { + it('should call dispatch', () => { + const mockHistory = { + push: jest.fn() + } + const fn = handleUserAccept(mockHistory) + fn() + expect(mockHistory.push).toBeCalledWith(routes.DEVELOPER_MY_APPS) + }) + }) +}) diff --git a/src/components/pages/__tests__/help.tsx b/src/components/pages/__tests__/help.tsx new file mode 100644 index 0000000000..494cbaffec --- /dev/null +++ b/src/components/pages/__tests__/help.tsx @@ -0,0 +1,46 @@ +import * as React from 'react' +import { shallow, mount } from 'enzyme' +import { HelpPage, HelpPageProps } from '../help' +import routes from '@/constants/routes' +import { history } from '@/core/router' + +const mockProps: HelpPageProps = {} + +describe('HelpPage', () => { + const { open } = window + + beforeAll(() => { + delete window.open + window.open = jest.fn() + }) + + afterAll(() => { + window.open = open + }) + + it('should match a snapshot', () => { + expect(shallow()).toMatchSnapshot() + }) + + it('handleReportBug', () => { + const wrapper = mount() + const btnReportBug = wrapper.find('[data-testid="btnReportBug"]') + btnReportBug.props().onClick!({} as any) + expect(window.open).toBeCalled() + }) + + it('handleRequestEndpoint', () => { + const wrapper = mount() + const btnRequestEndPoint = wrapper.find('[data-testid="btnRequestEndPoint"]') + btnRequestEndPoint.props().onClick!({} as any) + expect(window.open).toBeCalled() + }) + + it('handleGotoWelcomeGuide', () => { + const wrapper = mount() + const btnGotoWelcomeGuide = wrapper.find('[data-testid="btnGotoWelcomeGuide"]') + jest.spyOn(history, 'push') + btnGotoWelcomeGuide.props().onClick!({} as any) + expect(history.push).toBeCalledWith(routes.DEVELOPER_WELCOME) + }) +}) diff --git a/src/components/pages/developer-welcome.tsx b/src/components/pages/developer-welcome.tsx new file mode 100644 index 0000000000..0c1caef00e --- /dev/null +++ b/src/components/pages/developer-welcome.tsx @@ -0,0 +1,106 @@ +import * as React from 'react' +import { + FlexContainerBasic, + Content, + FlexContainerResponsive, + useHelpGuideContext, + HelpGuide, + Button +} from '@reapit/elements' +import Routes from '@/constants/routes' +import { history } from '@/core/router' +import styles from '@/styles/pages/developer-welcome.scss?mod' + +export type DeveloperWelcomeMessageProps = {} + +const imageUrl = 'https://1001freedownloads.s3.amazonaws.com/vector/thumb/63319/Placeholder.png' + +const ComponentA = () => { + const context = useHelpGuideContext() + return ( +
+

+ Lorem ipsum, dolor sit amet consectetur adipisicing elit. Incidunt ipsa minima hic rerum. Aspernatur laborum eum + vel necessitatibus dolorum alias. Sunt necessitatibus nisi repellat perspiciatis quam, iusto, fugit expedita + cupiditate quisquam totam voluptates? Facilis laudantium dolores tempora aspernatur natus minus, soluta aliquam? + Similique mollitia, placeat architecto eum dolores quam, omnis quidem iste vero tempora ipsum repellendus + voluptas, aliquam rerum molestias iure quasi totam assumenda quo veritatis. Corporis debitis, veniam sit earum + vero id impedit odio totam itaque numquam omnis non repellat fugiat nostrum nam minima modi, dignissimos ut + quibusdam praesentium sunt in beatae at nemo! Inventore blanditiis expedita pariatur amet laboriosam culpa, + nihil sed rerum natus et recusandae hic est error ab accusantium impedit earum vero quae. Alias quae +

+ +
+ ) +} + +const ComponentB = () => { + const context = useHelpGuideContext() + + return ( +
+

+ Lorem, ipsum dolor sit amet consectetur adipisicing elit. Nemo expedita consequatur molestias! Magnam in + inventore, sunt fuga minus nihil pariatur facilis nobis modi debitis aspernatur perspiciatis quo officiis sit + laudantium! +

+ + +
+ ) +} + +const ComponentC = () => { + const context = useHelpGuideContext() + + return ( +
+

+ Lorem, ipsum dolor sit amet consectetur adipisicing elit. Nemo expedita consequatur molestias! Magnam in + inventore, sunt fuga minus nihil pariatur facilis nobis modi debitis aspernatur perspiciatis quo officiis sit + laudantium! +

+ +
+ ) +} + +export const handleUserAccept = history => () => history.push(Routes.DEVELOPER_MY_APPS) + +export const DeveloperWelcomeMessage: React.FC = () => { + return ( + + + + + } + /> + + + + + + + + + + ) +} + +export default DeveloperWelcomeMessage diff --git a/src/components/pages/help.tsx b/src/components/pages/help.tsx new file mode 100644 index 0000000000..44c70cc45a --- /dev/null +++ b/src/components/pages/help.tsx @@ -0,0 +1,51 @@ +import * as React from 'react' +import { history } from '@/core/router' +import { Button, FlexContainerResponsive, Content, H3, FlexContainerBasic, GridItem, Grid } from '@reapit/elements' +import Routes from '@/constants/routes' +import { GoogleForm } from '@/constants/google-form' + +export type HelpPageProps = {} + +export const HelpPage: React.FC = () => { + const handleReportBug = () => { + window.open(GoogleForm.BUG_REPORT, '_blank') + } + + const handleRequestEndpoint = () => { + window.open(GoogleForm.API_REQUEST, '_blank') + } + + const handleGotoWelcomeGuide = () => { + history.push(Routes.DEVELOPER_WELCOME) + } + + return ( + + + +

Help

+ + + + + + + +
+
+
+ ) +} + +export default HelpPage diff --git a/src/components/pages/login.tsx b/src/components/pages/login.tsx index 8f3550c2a7..3ffae9a993 100644 --- a/src/components/pages/login.tsx +++ b/src/components/pages/login.tsx @@ -12,6 +12,7 @@ import loginStyles from '@/styles/pages/login.scss?mod' import { withRouter, RouteComponentProps } from 'react-router' import logoImage from '@/assets/images/reapit-graphic.jpg' import { getLoginTypeByPath } from '@/utils/auth-route' +import { getCookieString, COOKIE_FIRST_TIME_LOGIN } from '@/utils/cookie' export interface LoginMappedActions { login: (params: LoginParams) => void @@ -73,17 +74,14 @@ export const Login: React.FunctionComponent = (props: LoginProps) => authChangeLoginType(currentLoginType) if (hasSession) { - return ( - - ) + const firstLoginCookie = getCookieString(COOKIE_FIRST_TIME_LOGIN) + if (loginType === 'DEVELOPER' && !firstLoginCookie) { + return + } + if (loginType === 'DEVELOPER' && firstLoginCookie) { + return + } + return } const queryParams = new URLSearchParams(props.location.search) diff --git a/src/components/ui/menu.tsx b/src/components/ui/menu.tsx index 068e1e75ae..640cf3f470 100644 --- a/src/components/ui/menu.tsx +++ b/src/components/ui/menu.tsx @@ -22,6 +22,7 @@ import { FaTable, FaComments } from 'react-icons/fa' +import { MdHelp } from 'react-icons/md' import { GoDatabase, GoCode } from 'react-icons/go' export const generateMenuConfig = ( @@ -150,6 +151,13 @@ export const generateMenuConfig = ( icon: , type: 'PRIMARY' }, + { + title: 'Help', + key: 'HELP', + url: Routes.DEVELOPER_HELP, + type: 'PRIMARY', + icon: + }, { title: 'Logout', key: 'LOGOUT', diff --git a/src/constants/google-form.ts b/src/constants/google-form.ts new file mode 100644 index 0000000000..8addc0272c --- /dev/null +++ b/src/constants/google-form.ts @@ -0,0 +1,4 @@ +export const GoogleForm = { + BUG_REPORT: 'https://docs.google.com/forms/d/e/1FAIpQLSfNgZcHsqZo1d3J1QRPUmzh4Og7m4JNeqws4rv17msRsudBlQ/viewform', + API_REQUEST: 'https://docs.google.com/forms/d/e/1FAIpQLSfYeQVgwsgj1A6ZE0k4cjEQ0hkPgpYrxHawvLGoWlQLd_b41A/viewform' +} diff --git a/src/constants/routes.ts b/src/constants/routes.ts index 8c6367e325..beb32d780f 100644 --- a/src/constants/routes.ts +++ b/src/constants/routes.ts @@ -5,6 +5,7 @@ const Routes = { MY_APPS: '/client/manage', MY_APPS_PAGINATE: '/client/manage/:page', DEVELOPER: '/developer', + DEVELOPER_WELCOME: '/developer/welcome', DEVELOPER_MY_APPS: '/developer/apps', DEVELOPER_SWAGGER: '/developer/swagger', DEVELOPER_ELEMENTS: '/developer/elements', @@ -17,6 +18,7 @@ const Routes = { DEVELOPER_RESET_PASSWORD: '/developer/reset-password', SETTINGS: '/developer/settings', SUBMIT_APP: '/developer/submit-app', + DEVELOPER_HELP: '/developer/help', REGISTER: '/register', REGISTER_CONFIRM: '/register/confirm', ADMIN: '/admin', diff --git a/src/core/__tests__/__snapshots__/router.tsx.snap b/src/core/__tests__/__snapshots__/router.tsx.snap index f70b244e1a..700c75784c 100644 --- a/src/core/__tests__/__snapshots__/router.tsx.snap +++ b/src/core/__tests__/__snapshots__/router.tsx.snap @@ -295,6 +295,33 @@ exports[`Router should match a snapshot 1`] = ` exact={true} path="/forum" /> + + import('../components/pages/elements')) const DesktopDocsPage = React.lazy(() => import('../components/pages/desktop-api-docs')) const WebComponentsPage = React.lazy(() => import('../components/pages/web-components')) const SettingsPage = React.lazy(() => import('../components/pages/settings')) +const DeveloperWelcomePage = React.lazy(() => import('../components/pages/developer-welcome')) +const HelpPage = React.lazy(() => import('../components/pages/help')) // const AnalyticsPage = React.lazy(() => import('../components/pages/analytics')) const ResetPassword = React.lazy(() => import('../components/pages/reset-password')) const ForgotPassword = React.lazy(() => import('../components/pages/forgot-password/forgot-password')) @@ -82,6 +84,14 @@ const Router = () => ( /> + + diff --git a/src/styles/pages/developer-welcome.scss b/src/styles/pages/developer-welcome.scss new file mode 100644 index 0000000000..3bc5f6f0bd --- /dev/null +++ b/src/styles/pages/developer-welcome.scss @@ -0,0 +1,3 @@ +.content { + min-height: 90vh; +} diff --git a/yarn.lock b/yarn.lock index 7bd759c868..c601b27a23 100644 --- a/yarn.lock +++ b/yarn.lock @@ -39,7 +39,7 @@ lodash "^4.17.13" source-map "^0.5.0" -"@babel/helper-annotate-as-pure@^7.7.4": +"@babel/helper-annotate-as-pure@^7.0.0", "@babel/helper-annotate-as-pure@^7.7.4": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.7.4.tgz#bb3faf1e74b74bd547e867e48f551fa6b098b6ce" integrity sha512-2BQmQgECKzYKFPpiycoF9tlb5HA4lrVyAmLLVK177EcQAqjVLciUb2/R+n1boQ9y5ENV3uz2ZqiNw7QMBBw1Og== @@ -641,7 +641,7 @@ "@babel/parser" "^7.7.4" "@babel/types" "^7.7.4" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.4": +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.4": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.7.4.tgz#9c1e7c60fb679fe4fcfaa42500833333c2058558" integrity sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw== @@ -744,7 +744,7 @@ resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.7.4.tgz#f14932887422c9056b15a8d222a9074a7dfa2831" integrity sha512-fxfMSBMX3tlIbKUdtGKxqB1fyrH6gVrX39Gsv3y8lRYKUqlgDt3UMqQyGnR1bQMa2B8aGnhLZokZgg8vT0Le+A== -"@emotion/is-prop-valid@0.8.6": +"@emotion/is-prop-valid@0.8.6", "@emotion/is-prop-valid@^0.8.1": version "0.8.6" resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.6.tgz#4757646f0a58e9dec614c47c838e7147d88c263c" integrity sha512-mnZMho3Sq8BfzkYYRVc8ilQTnc8U02Ytp6J1AwM6taQStZ3AhsEJBX2LzhA/LJirNCwM2VtHL3VFIZ+sNJUgUQ== @@ -795,7 +795,7 @@ 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.0": version "0.7.5" resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== @@ -990,10 +990,10 @@ dependencies: aws-sdk "^2.582.0" -"@reapit/elements@^0.5.24": - version "0.5.24" - resolved "https://registry.yarnpkg.com/@reapit/elements/-/elements-0.5.24.tgz#4a5941fb51a7487702d9a229009a85fb48692a1f" - integrity sha512-5G8VG4yD1d8ZqxlSCePD98YIM7MryKOQ75kILqFl1xMTcvHdwh7EvIGO0s23teGxYHy3N9R+HW9ky26kqqhhXg== +"@reapit/elements@^0.5.26": + version "0.5.26" + resolved "https://registry.yarnpkg.com/@reapit/elements/-/elements-0.5.26.tgz#cc0e0ef7115458af7136a21fc37cbbc1c16e1ea1" + integrity sha512-iL1koFAuwbWD/uqdPKhHBQNxWu6ioHyT2SwRVpIKoZDQ546KXOGMZIogorgA1fDZPnRbdSaWTEBMvxsAhSD/Og== dependencies: "@storybook/theming" "^5.2.8" "@types/papaparse" "^5.0.3" @@ -1012,6 +1012,7 @@ react-google-maps-loader "^4.2.5" react-icons "^3.7.0" react-table "7.0.0-alpha.35" + styled-components "^4.4.1" "@reapit/foundations-ts-definitions@^0.0.6": version "0.0.6" @@ -1249,9 +1250,9 @@ "@types/node" "*" "@types/node@*": - version "13.1.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-13.1.2.tgz#fe94285bf5e0782e1a9e5a8c482b1c34465fa385" - integrity sha512-B8emQA1qeKerqd1dmIsQYnXi+mmAzTB7flExjmy5X1aVAKFNNNDubkavwR13kR6JnpeLp3aLoJhwn9trWPAyFQ== + version "13.1.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.1.4.tgz#4cfd90175a200ee9b02bd6b1cd19bc349741607e" + integrity sha512-Lue/mlp2egZJoHXZr4LndxDAd7i/7SQYhV0EjWfb/a4/OZ6tuVwMCVPiwkU5nsEipxEf7hmkSU7Em5VQ8P5NGA== "@types/node@~12.0.2": version "12.0.12" @@ -1927,9 +1928,9 @@ autolinker@~0.28.0: gulp-header "^1.7.1" aws-sdk@^2.582.0: - version "2.596.0" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.596.0.tgz#1a4af0609e174a50ffb8ed8981981e6d77a614fb" - integrity sha512-Bp+gyqhLw8tK4sgM1v1PDSw26H1mSXs6yhQInmGzDKqXJor6UyUb9JskFv0zC/bA84XizlshN1BBIgINqk6pNg== + version "2.597.0" + resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.597.0.tgz#028c7778b4fdc742ac040e7071b85a070d18bf2a" + integrity sha512-xdhm1bYnh46b7pEOmIsptQcPAJmq9MT31cUsn3WzOr6IPtiRLz5XIHIusFFsJYpyjiFB99b1n8SabRR7j6H1AA== dependencies: buffer "4.9.1" events "1.1.1" @@ -2037,6 +2038,16 @@ babel-plugin-macros@^2.0.0: cosmiconfig "^6.0.0" resolve "^1.12.0" +"babel-plugin-styled-components@>= 1": + version "1.10.6" + resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-1.10.6.tgz#f8782953751115faf09a9f92431436912c34006b" + integrity sha512-gyQj/Zf1kQti66100PhrCRjI5ldjaze9O0M3emXRPAN80Zsf8+e1thpTpaXJXVHXtaM4/+dJEgZHyS9Its+8SA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-module-imports" "^7.0.0" + babel-plugin-syntax-jsx "^6.18.0" + lodash "^4.17.11" + 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" @@ -2334,13 +2345,13 @@ browserify-zlib@^0.2.0: pako "~1.0.5" browserslist@^4.6.0, browserslist@^4.8.2: - version "4.8.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.2.tgz#b45720ad5fbc8713b7253c20766f701c9a694289" - integrity sha512-+M4oeaTplPm/f1pXDw84YohEv7B1i/2Aisei8s4s6k3QsoSHa7i5sz8u/cGQkkatCPxMASKxPualR4wwYgVboA== + version "4.8.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.3.tgz#65802fcd77177c878e015f0e3189f2c4f627ba44" + integrity sha512-iU43cMMknxG1ClEZ2MDKeonKE1CCrFVkQK2AqO2YWFmvIrx4JWrvQ4w4hQez6EpVI8rHTtqh/ruHHDHSOKxvUg== dependencies: - caniuse-lite "^1.0.30001015" + caniuse-lite "^1.0.30001017" electron-to-chromium "^1.3.322" - node-releases "^1.1.42" + node-releases "^1.1.44" browserstack-capabilities@^0.7.0: version "0.7.0" @@ -2599,10 +2610,10 @@ camelize@^1.0.0: resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" integrity sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs= -caniuse-lite@^1.0.30001015: - version "1.0.30001017" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001017.tgz#d3ad6ec18148b9bd991829958d9d7e562bb78cd6" - integrity sha512-EDnZyOJ6eYh6lHmCvCdHAFbfV4KJ9lSdfv4h/ppEhrU/Yudkl7jujwMZ1we6RX7DXqBfT04pVMQ4J+1wcTlsKA== +caniuse-lite@^1.0.30001017: + version "1.0.30001019" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001019.tgz#857e3fccaad2b2feb3f1f6d8a8f62d747ea648e1" + integrity sha512-6ljkLtF1KM5fQ+5ZN0wuyVvvebJxgJPTmScOMaFuQN2QuOzvRJnWSKfzQskQU5IOU4Gap3zasYPIinzwUjoj/g== canonicalize@^1.0.1: version "1.0.1" @@ -3019,11 +3030,11 @@ compress-commons@^1.2.0: readable-stream "^2.0.0" compressible@~2.0.16: - version "2.0.17" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1" - integrity sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw== + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== dependencies: - mime-db ">= 1.40.0 < 2" + mime-db ">= 1.43.0 < 2" compression@^1.7.4: version "1.7.4" @@ -3411,7 +3422,7 @@ css-select@~1.0.0: domutils "1.4" nth-check "~1.0.0" -css-to-react-native@^2.0.3: +css-to-react-native@^2.0.3, css-to-react-native@^2.2.2: version "2.3.2" resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-2.3.2.tgz#e75e2f8f7aa385b4c3611c52b074b70a002f2e7d" integrity sha512-VOFaeZA053BqvvvqIA8c9n0+9vFppVBAHCp6JgFTtTMU3Mzi+XnelJ9XC9ul3BqFzZyQ5N+H0SnwsWT2Ebchxw== @@ -3492,9 +3503,9 @@ cyclist@^1.0.1: integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= cypress-file-upload@^3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/cypress-file-upload/-/cypress-file-upload-3.5.1.tgz#6dcd7a87c93242b8fe917abe39bdda1ff82e23a3" - integrity sha512-HUhnoLlhLTHmgRGsoflcGyv3n9WA/Kh96mmBLmTGlg9Fs/CP2fVVc4NdbKeT9fNYk6Qy3upjfUxYaavNnfQb/Q== + version "3.5.3" + resolved "https://registry.yarnpkg.com/cypress-file-upload/-/cypress-file-upload-3.5.3.tgz#cd706485de3fb2cbd4a8c2dd90fe96d537bb4311" + integrity sha512-S/czzqAj1BYz6Xxnfpx2aSc6hXsj76fd8/iuycJ2RxoxCcQMliw8eQV0ugzVlkzr1GD5dKGviNFGYqv3nRJ+Tg== cypress-plugin-retries@^1.5.2: version "1.5.2" @@ -4051,9 +4062,9 @@ ejs@~2.5.6: integrity sha512-GJCAeDBKfREgkBtgrYSf9hQy9kTb3helv0zGdzqhM7iAkW8FA/ZF97VQDbwFiwIT8MQLLOe5VlPZOEvZAqtUAQ== electron-to-chromium@^1.3.322: - version "1.3.322" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz#a6f7e1c79025c2b05838e8e344f6e89eb83213a8" - integrity sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA== + version "1.3.326" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.326.tgz#71715aca9afd328ea208a3bc4651c15b869f0d1b" + integrity sha512-kaBmGWJlLW5bGEbm7/HWG9jt4oH+uecBIIfzFWfFkgqssPT2I6RDenGqo4wmKzm7seNu7DSCRZBXCuf7w8dtkQ== elegant-spinner@^1.0.1: version "1.0.1" @@ -4334,9 +4345,9 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^ integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= escodegen@^1.9.1: - version "1.12.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.0.tgz#f763daf840af172bb3a2b6dd7219c0e17f7ff541" - integrity sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg== + version "1.12.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.1.tgz#08770602a74ac34c7a90ca9229e7d51e379abc76" + integrity sha512-Q8t2YZ+0e0pc7NRVj3B4tSQ9rim1oi4Fh46k2xhJ2qOiEwhQfdjyEQddWdj7ZFaKmU+5104vn1qrcjEPWq+bgQ== dependencies: esprima "^3.1.3" estraverse "^4.2.0" @@ -4987,9 +4998,9 @@ form-data@~2.3.2: mime-types "^2.1.12" formik@^2.0.4: - version "2.1.0" - resolved "https://registry.yarnpkg.com/formik/-/formik-2.1.0.tgz#5a59b358170049cebcaf03e661f5f9c6588714d1" - integrity sha512-GxH9uMX55UKQcX0hNBd/FuoYnYXKQY0nS9FH00vHyZzEvIfvvt+JMRWU515JbCvR9P2Sx3ZWMFgszjMugF3zNg== + version "2.1.1" + resolved "https://registry.yarnpkg.com/formik/-/formik-2.1.1.tgz#a0f436d088e0aecaaa2e619682c323408a9e2c79" + integrity sha512-PdpgIPn7ipCzU5KBA+ED6Yy0kPqpZsWzoqI69ZJvcMtUfTzWrNfDeEdv2kd5aMAU3Iqs4PYFREAZjcthS/nqQw== dependencies: deepmerge "^2.1.1" hoist-non-react-statics "^3.3.0" @@ -6382,6 +6393,11 @@ is-utf8@^0.2.0: resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= +is-what@^3.3.1: + version "3.5.0" + resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.5.0.tgz#c50b0e8f3021e0b39410c159bea43a5510d99027" + integrity sha512-00pwt/Jf7IaRh5m2Dp93Iw8LG2cd3OpDj3NrD1XPNUpAWVxPvBP296p4IiGmIU4Ur0f3f56IoIM+fS2pFYF+tQ== + is-window@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-window/-/is-window-1.0.2.tgz#2c896ca53db97de45d3c33133a65d8c9f563480d" @@ -7822,6 +7838,11 @@ mem@^4.0.0: mimic-fn "^2.0.0" p-is-promise "^2.0.0" +memoize-one@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.1.1.tgz#047b6e3199b508eaec03504de71229b8eb1d75c0" + integrity sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA== + memoizee@^0.4.12: version "0.4.14" resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.14.tgz#07a00f204699f9a95c2d9e77218271c7cd610d57" @@ -7875,6 +7896,13 @@ meow@^3.7.0: redent "^1.0.0" trim-newlines "^1.0.0" +merge-anything@^2.2.4: + version "2.4.4" + resolved "https://registry.yarnpkg.com/merge-anything/-/merge-anything-2.4.4.tgz#6226b2ac3d3d3fc5fb9e8d23aa400df25f98fdf0" + integrity sha512-l5XlriUDJKQT12bH+rVhAHjwIuXWdAIecGwsYjv2LJo+dA1AeRTmeQS+3QBpO6lEthBMDi2IUMpLC1yyRvGlwQ== + dependencies: + is-what "^3.3.1" + merge-defaults@^0.2.1: version "0.2.2" resolved "https://registry.yarnpkg.com/merge-defaults/-/merge-defaults-0.2.2.tgz#68b9da04fef804674a0d63df1c469378c343d506" @@ -7942,17 +7970,17 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.42.0, "mime-db@>= 1.40.0 < 2": - version "1.42.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac" - integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ== +mime-db@1.43.0, "mime-db@>= 1.43.0 < 2": + version "1.43.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" + integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.25" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.25.tgz#39772d46621f93e2a80a856c53b86a62156a6437" - integrity sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg== + version "2.1.26" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" + integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== dependencies: - mime-db "1.42.0" + mime-db "1.43.0" mime@1.6.0, mime@^1.3.4: version "1.6.0" @@ -8318,7 +8346,7 @@ node-notifier@^6.0.0: shellwords "^0.1.1" which "^1.3.1" -node-releases@^1.1.42: +node-releases@^1.1.44: version "1.1.44" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.44.tgz#cd66438a6eb875e3eb012b6a12e48d9f4326ffd7" integrity sha512-NwbdvJyR7nrcGrXvKAvzc5raj/NkoJudkarh2yIpJ4t0NH4aqjUDz/486P+ynIW5eokKOfzGNRdYoLfBlomruw== @@ -9042,9 +9070,9 @@ phin@^2.9.1: integrity sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA== picomatch@^2.0.5: - version "2.1.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.1.1.tgz#ecdfbea7704adb5fe6fb47f9866c4c0e15e905c5" - integrity sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA== + version "2.2.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" + integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== pify@^2.0.0, pify@^2.2.0: version "2.3.0" @@ -9832,9 +9860,9 @@ read-pkg@^5.0.0, read-pkg@^5.1.1: type-fest "^0.6.0" "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" - integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" @@ -11143,12 +11171,36 @@ styled-components@^2.4.0: stylis "^3.4.0" supports-color "^3.2.3" -stylis@^3.4.0: +styled-components@^4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-4.4.1.tgz#e0631e889f01db67df4de576fedaca463f05c2f2" + integrity sha512-RNqj14kYzw++6Sr38n7197xG33ipEOktGElty4I70IKzQF1jzaD1U4xQ+Ny/i03UUhHlC5NWEO+d8olRCDji6g== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@emotion/is-prop-valid" "^0.8.1" + "@emotion/unitless" "^0.7.0" + babel-plugin-styled-components ">= 1" + css-to-react-native "^2.2.2" + memoize-one "^5.0.0" + merge-anything "^2.2.4" + prop-types "^15.5.4" + react-is "^16.6.0" + stylis "^3.5.0" + stylis-rule-sheet "^0.0.10" + supports-color "^5.5.0" + +stylis-rule-sheet@^0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz#44e64a2b076643f4b52e5ff71efc04d8c3c4a430" + integrity sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw== + +stylis@^3.4.0, stylis@^3.5.0: version "3.5.4" resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.4.tgz#f665f25f5e299cf3d64654ab949a57c768b73fbe" integrity sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q== -supports-color@5.5.0, supports-color@^5.3.0: +supports-color@5.5.0, supports-color@^5.3.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== @@ -11366,9 +11418,9 @@ terser-webpack-plugin@^1.4.3: worker-farm "^1.7.0" terser@^4.1.2: - version "4.4.3" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.4.3.tgz#401abc52b88869cf904412503b1eb7da093ae2f0" - integrity sha512-0ikKraVtRDKGzHrzkCv5rUNDzqlhmhowOBqC0XqUHFpW+vJ45+20/IFBcebwKfiS2Z9fJin6Eo+F1zLZsxi8RA== + version "4.5.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.5.1.tgz#63b52d6b6ce344aa6fedcd0ee06a695799eb50bd" + integrity sha512-lH9zLIbX8PRBEFCTvfHGCy0s9HEKnNso1Dx9swSopF3VUnFLB8DpQ61tHxoofovNC/sG0spajJM3EIIRSTByiQ== dependencies: commander "^2.20.0" source-map "~0.6.1"