From 08bcdbb1b048a170f2276f80d5e38a4363e42ca4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germ=C3=A1n=20Mart=C3=ADnez?= Date: Wed, 22 May 2019 12:37:44 +0200 Subject: [PATCH 01/19] Add error color --- src/components/layout/ButtonLink/index.jsx | 2 +- src/components/layout/ButtonLink/index.scss | 4 ++++ src/components/layout/Heading/index.jsx | 2 +- src/components/layout/Heading/index.scss | 4 ++++ src/components/layout/Paragraph/index.jsx | 2 +- src/components/layout/Paragraph/index.scss | 4 ++++ src/theme/mui.js | 3 ++- src/theme/variables.js | 2 ++ 8 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/components/layout/ButtonLink/index.jsx b/src/components/layout/ButtonLink/index.jsx index ae988f11..12e08b01 100644 --- a/src/components/layout/ButtonLink/index.jsx +++ b/src/components/layout/ButtonLink/index.jsx @@ -11,7 +11,7 @@ type Props = { type: 'button' | 'submit' | 'reset', size?: 'sm' | 'md' | 'lg' | 'xl' | 'xxl', weight?: 'light' | 'regular' | 'bolder' | 'bold', - color?: 'soft' | 'medium' | 'dark' | 'white' | 'fancy' | 'primary' | 'secondary' | 'warning' | 'disabled', + color?: 'soft' | 'medium' | 'dark' | 'white' | 'fancy' | 'primary' | 'secondary' | 'warning' | 'disabled' | 'error', } const GnoButtonLink = ({ diff --git a/src/components/layout/ButtonLink/index.scss b/src/components/layout/ButtonLink/index.scss index b184489a..bd6cf736 100644 --- a/src/components/layout/ButtonLink/index.scss +++ b/src/components/layout/ButtonLink/index.scss @@ -74,6 +74,10 @@ color: $disabled; } +.error { + color: $error; +} + .white { color: white; } \ No newline at end of file diff --git a/src/components/layout/Heading/index.jsx b/src/components/layout/Heading/index.jsx index dd7de50d..c35ba0a1 100644 --- a/src/components/layout/Heading/index.jsx +++ b/src/components/layout/Heading/index.jsx @@ -11,7 +11,7 @@ type HeadingTag = 'h1' | 'h2' | 'h3' | 'h4'; type Props = { align?: 'left' | 'center' | 'right', margin?: 'sm' | 'md' | 'lg' | 'xl', - color?: 'soft' | 'medium' | 'dark' | 'white' | 'fancy' | 'primary' | 'secondary' | 'warning' | 'disabled', + color?: 'soft' | 'medium' | 'dark' | 'white' | 'fancy' | 'primary' | 'secondary' | 'warning' | 'disabled' | 'error', tag: HeadingTag, truncate?: boolean, children: React$Node, diff --git a/src/components/layout/Heading/index.scss b/src/components/layout/Heading/index.scss index e3c38b50..8a46620f 100644 --- a/src/components/layout/Heading/index.scss +++ b/src/components/layout/Heading/index.scss @@ -95,6 +95,10 @@ color: $disabled; } +.error { + color: $error; +} + .white { color: white; } diff --git a/src/components/layout/Paragraph/index.jsx b/src/components/layout/Paragraph/index.jsx index 5cbd9c7b..8d046aca 100644 --- a/src/components/layout/Paragraph/index.jsx +++ b/src/components/layout/Paragraph/index.jsx @@ -11,7 +11,7 @@ type Props = { noPadding?: boolean, weight?: 'light' | 'regular' | 'bolder' | 'bold', size?: 'sm' | 'md' | 'lg' | 'xl' | 'xxl', - color?: 'soft' | 'medium' | 'dark' | 'white' | 'fancy' | 'primary' | 'secondary' | 'warning' | 'disabled', + color?: 'soft' | 'medium' | 'dark' | 'white' | 'fancy' | 'primary' | 'secondary' | 'warning' | 'disabled' | 'error', transform?: 'capitalize' | 'lowercase' | 'uppercase', children: React$Node, dot?: boolean, diff --git a/src/components/layout/Paragraph/index.scss b/src/components/layout/Paragraph/index.scss index 0a54b864..2d00bdb2 100644 --- a/src/components/layout/Paragraph/index.scss +++ b/src/components/layout/Paragraph/index.scss @@ -35,6 +35,10 @@ color: $disabled; } +.error { + color: $error; +} + .white { color: white; } diff --git a/src/theme/mui.js b/src/theme/mui.js index 5455e662..55dcd377 100644 --- a/src/theme/mui.js +++ b/src/theme/mui.js @@ -7,6 +7,7 @@ import { disabled, primary, secondary, + error, md, lg, bolderFont, @@ -27,7 +28,7 @@ const palette = { main: secondary, }, error: { - main: '#FB4F62', + main: error, }, contrastThreshold: 3, tonalOffset: 0.2, diff --git a/src/theme/variables.js b/src/theme/variables.js index 42694b90..49c4eeea 100644 --- a/src/theme/variables.js +++ b/src/theme/variables.js @@ -7,6 +7,7 @@ const tertiary = '#f6f9fc' const fontColor = '#4a5579' const fancyColor = '#fd7890' const warningColor = '#ffc05f' +const errorColor = '#fb4f62' const connectedColor = '#00c4c4' const disabled = '#65707e' const xs = '4px' @@ -28,6 +29,7 @@ module.exports = Object.assign( fontColor, fancy: fancyColor, warning: warningColor, + error: errorColor, connected: connectedColor, xs, sm, From 9b19ca1274ac0b3afbbb83a9316b01f6f518e1f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germ=C3=A1n=20Mart=C3=ADnez?= Date: Wed, 22 May 2019 12:51:02 +0200 Subject: [PATCH 02/19] Add code formatting --- src/logic/tokens/store/actions/addToken.js | 9 +++------ src/logic/tokens/store/actions/saveTokens.js | 9 +++------ src/routes/open/utils/safeDataExtractor.js | 9 ++------- src/routes/safe/store/actions/addSafe.js | 9 +++------ 4 files changed, 11 insertions(+), 25 deletions(-) diff --git a/src/logic/tokens/store/actions/addToken.js b/src/logic/tokens/store/actions/addToken.js index 3eda6473..333a8b90 100644 --- a/src/logic/tokens/store/actions/addToken.js +++ b/src/logic/tokens/store/actions/addToken.js @@ -8,9 +8,6 @@ type AddTokenProps = { token: Token, } -export const addToken = createAction( - ADD_TOKEN, - (token: Token): AddTokenProps => ({ - token, - }), -) +export const addToken = createAction(ADD_TOKEN, (token: Token): AddTokenProps => ({ + token, +})) diff --git a/src/logic/tokens/store/actions/saveTokens.js b/src/logic/tokens/store/actions/saveTokens.js index bc2a3800..d020c2ed 100644 --- a/src/logic/tokens/store/actions/saveTokens.js +++ b/src/logic/tokens/store/actions/saveTokens.js @@ -9,11 +9,8 @@ type TokenProps = { tokens: Map, } -const addTokens = createAction( - ADD_TOKENS, - (tokens: Map): TokenProps => ({ - tokens, - }), -) +const addTokens = createAction(ADD_TOKENS, (tokens: Map): TokenProps => ({ + tokens, +})) export default addTokens diff --git a/src/routes/open/utils/safeDataExtractor.js b/src/routes/open/utils/safeDataExtractor.js index b71f348a..5d198bfc 100644 --- a/src/routes/open/utils/safeDataExtractor.js +++ b/src/routes/open/utils/safeDataExtractor.js @@ -17,13 +17,8 @@ export const getNamesFrom = (values: Object): string[] => { return accounts.map(account => values[account]).slice(0, values.owners) } -export const getOwnersFrom = ( - names: string[], - addresses: string[], -): Array => { - const owners = names.map((name: string, index: number) => makeOwner( - { name, address: addresses[index] }, - )) +export const getOwnersFrom = (names: string[], addresses: string[]): Array => { + const owners = names.map((name: string, index: number) => makeOwner({ name, address: addresses[index] })) return owners } diff --git a/src/routes/safe/store/actions/addSafe.js b/src/routes/safe/store/actions/addSafe.js index 97f3a312..a3395ac8 100644 --- a/src/routes/safe/store/actions/addSafe.js +++ b/src/routes/safe/store/actions/addSafe.js @@ -18,12 +18,9 @@ type ActionReturn = { safe: Safe, } -export const addSafe = createAction( - ADD_SAFE, - (safe: Safe): ActionReturn => ({ - safe, - }), -) +export const addSafe = createAction(ADD_SAFE, (safe: Safe): ActionReturn => ({ + safe, +})) const saveSafe = (name: string, address: string, threshold: number, ownersName: string[], ownersAddress: string[]) => ( dispatch: ReduxDispatch, From 9d689a8f483d2c1cc1293470f95ee899bb873e16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germ=C3=A1n=20Mart=C3=ADnez?= Date: Wed, 22 May 2019 12:56:11 +0200 Subject: [PATCH 03/19] Remove Safe owners from storage --- src/logic/safe/utils/safeStorage.js | 11 ++++++++++- src/utils/storage/index.js | 8 ++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/logic/safe/utils/safeStorage.js b/src/logic/safe/utils/safeStorage.js index 2301a5e1..3a5ad40e 100644 --- a/src/logic/safe/utils/safeStorage.js +++ b/src/logic/safe/utils/safeStorage.js @@ -1,7 +1,7 @@ // @flow import { type Owner } from '~/routes/safe/store/models/owner' import { List, Map } from 'immutable' -import { loadFromStorage, saveToStorage } from '~/utils/storage' +import { loadFromStorage, saveToStorage, removeFromStorage } from '~/utils/storage' export const SAFES_KEY = 'SAFES' export const TX_KEY = 'TX' @@ -41,3 +41,12 @@ export const getOwners = async (safeAddress: string): Map => { return data ? Map(data) : Map() } + +export const removeOwners = async (safeAddress: string): Map => { + try { + await removeFromStorage(`${OWNERS_KEY}-${safeAddress}`) + } catch (err) { + // eslint-disable-next-line + console.log('Error removing owners from localstorage') + } +} diff --git a/src/utils/storage/index.js b/src/utils/storage/index.js index d1f3f1bf..80d34efe 100644 --- a/src/utils/storage/index.js +++ b/src/utils/storage/index.js @@ -31,3 +31,11 @@ export const saveToStorage = async (key: string, value: *): Promise<*> => { console.error(`Failed to save ${key} in the storage:`, err) } } + +export const removeFromStorage = async (key: string): Promise<*> => { + try { + await storage.remove(`${PREFIX}__${key}`) + } catch (err) { + console.error(`Failed to remove ${key} from the storage:`, err) + } +} From c5193281d7e752ed727a6e327007478d90e4dc32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germ=C3=A1n=20Mart=C3=ADnez?= Date: Wed, 22 May 2019 14:20:36 +0200 Subject: [PATCH 04/19] Add basic settings page --- src/routes/safe/components/Layout.jsx | 9 +++ src/routes/safe/components/Settings/index.jsx | 73 +++++++++++++++++++ src/routes/safe/components/Settings/style.js | 17 +++++ 3 files changed, 99 insertions(+) create mode 100644 src/routes/safe/components/Settings/index.jsx create mode 100644 src/routes/safe/components/Settings/style.js diff --git a/src/routes/safe/components/Layout.jsx b/src/routes/safe/components/Layout.jsx index 4383a63f..fe148dca 100644 --- a/src/routes/safe/components/Layout.jsx +++ b/src/routes/safe/components/Layout.jsx @@ -19,6 +19,7 @@ import { } from '~/theme/variables' import { copyToClipboard } from '~/utils/clipboard' import Balances from './Balances' +import Settings from './Settings' type Props = SelectorProps & { classes: Object, @@ -141,6 +142,14 @@ class Layout extends React.Component { createTransaction={createTransaction} /> )} + {tabIndex === 2 && ( + + )} ) } diff --git a/src/routes/safe/components/Settings/index.jsx b/src/routes/safe/components/Settings/index.jsx new file mode 100644 index 00000000..96b3f8d7 --- /dev/null +++ b/src/routes/safe/components/Settings/index.jsx @@ -0,0 +1,73 @@ +// @flow +import * as React from 'react' +import { withStyles } from '@material-ui/core/styles' +import Col from '~/components/layout/Col' +import Row from '~/components/layout/Row' +import RemoveSafeModal from './RemoveSafeModal' +import Paragraph from '~/components/layout/Paragraph' + +import { styles } from './style' + +type State = { + showRemoveSafe: boolean, +} + +type Props = { + classes: Object, + granted: boolean, + etherScanLink: string, + safeAddress: string, + safeName: string, +} + +type Action = 'RemoveSafe' + +class Settings extends React.Component { + state = { + showRemoveSafe: false, + } + + onShow = (action: Action) => () => { + this.setState(() => ({ [`show${action}`]: true })) + } + + onHide = (action: Action) => () => { + this.setState(() => ({ [`show${action}`]: false })) + } + + render() { + const { showRemoveSafe } = this.state + const { + classes, + granted, + etherScanLink, + safeAddress, + safeName, + } = this.props + + return ( + + + + Settings + + + + Remove Safe + + + + + Settings page content + + ) + } +} + +export default withStyles(styles)(Settings) diff --git a/src/routes/safe/components/Settings/style.js b/src/routes/safe/components/Settings/style.js new file mode 100644 index 00000000..d6aa5104 --- /dev/null +++ b/src/routes/safe/components/Settings/style.js @@ -0,0 +1,17 @@ +// @flow +import { sm, xs } from '~/theme/variables' + +export const styles = (theme: Object) => ({ + settings: { + letterSpacing: '-0.5px', + }, + message: { + margin: `${sm} 0`, + }, + links: { + textDecoration: 'underline', + '&:hover': { + cursor: 'pointer', + }, + }, +}) From 500b696e7b4f9c82a5c7beeda1a2b66c5166bcf1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germ=C3=A1n=20Mart=C3=ADnez?= Date: Wed, 22 May 2019 18:43:51 +0200 Subject: [PATCH 05/19] Remove Safe from modal window --- .../Settings/RemoveSafeModal/actions.js | 10 ++ .../Settings/RemoveSafeModal/index.jsx | 170 ++++++++++++++++++ src/routes/safe/store/actions/removeSafe.js | 8 + .../safe/store/middleware/safeStorage.js | 8 +- src/routes/safe/store/reducer/safe.js | 6 + 5 files changed, 200 insertions(+), 2 deletions(-) create mode 100644 src/routes/safe/components/Settings/RemoveSafeModal/actions.js create mode 100644 src/routes/safe/components/Settings/RemoveSafeModal/index.jsx create mode 100644 src/routes/safe/store/actions/removeSafe.js diff --git a/src/routes/safe/components/Settings/RemoveSafeModal/actions.js b/src/routes/safe/components/Settings/RemoveSafeModal/actions.js new file mode 100644 index 00000000..a90404e9 --- /dev/null +++ b/src/routes/safe/components/Settings/RemoveSafeModal/actions.js @@ -0,0 +1,10 @@ +// @flow +import removeSafe from '~/routes/safe/store/actions/removeSafe' + +export type Actions = { + removeSafe: Function, +} + +export default { + removeSafe, +} diff --git a/src/routes/safe/components/Settings/RemoveSafeModal/index.jsx b/src/routes/safe/components/Settings/RemoveSafeModal/index.jsx new file mode 100644 index 00000000..40e3dfe4 --- /dev/null +++ b/src/routes/safe/components/Settings/RemoveSafeModal/index.jsx @@ -0,0 +1,170 @@ +// @flow +import React from 'react' +import classNames from 'classnames' +import { connect } from 'react-redux' +import { history } from '~/store' +import { SAFELIST_ADDRESS } from '~/routes/routes' +import { withStyles } from '@material-ui/core/styles' +import Close from '@material-ui/icons/Close' +import IconButton from '@material-ui/core/IconButton' +import OpenInNew from '@material-ui/icons/OpenInNew' +import Block from '~/components/layout/Block' +import Modal from '~/components/Modal' +import Identicon from '~/components/Identicon' +import Col from '~/components/layout/Col' +import Row from '~/components/layout/Row' +import Button from '~/components/layout/Button' +import Link from '~/components/layout/Link' +import Paragraph from '~/components/layout/Paragraph' +import Hairline from '~/components/layout/Hairline' +import actions, { type Actions } from './actions' +import { lg, md, sm, secondary, error, background, fancy } from '~/theme/variables' + +const openIconStyle = { + height: '16px', + color: secondary, +} + +const styles = () => ({ + heading: { + padding: `${sm} ${lg}`, + justifyContent: 'space-between', + maxHeight: '75px', + boxSizing: 'border-box', + }, + container: { + minHeight: '369px', + }, + manage: { + fontSize: '24px', + }, + close: { + height: '35px', + width: '35px', + }, + buttonRow: { + height: '84px', + justifyContent: 'center', + }, + buttonRemove: { + color: '#fff', + backgroundColor: error, + }, + name: { + textOverflow: 'ellipsis', + overflow: 'hidden', + }, + userName: { + whiteSpace: 'nowrap', + }, + owner: { + backgroundColor: background, + padding: md, + alignItems: 'center', + }, + user: { + justifyContent: 'left', + }, + description: { + padding: md, + }, + open: { + paddingLeft: sm, + width: 'auto', + '&:hover': { + cursor: 'pointer', + }, + }, +}) + +type Props = Actions & { + onClose: () => void, + classes: Object, + isOpen: boolean, + safeAddress: string, + etherScanLink: string, + safeName: string, +} + +const RemoveSafeComponent = ({ + onClose, + isOpen, + classes, + safeAddress, + etherScanLink, + safeName, + removeSafe, +}: Props) => { + return ( + + + + Remove Safe + + + + + + + + + + + + + + + {safeName} + + + + {safeAddress} + + + + + + + + + + + + Removing a Safe only removes it from your interface. It does not delete the Safe. You can always add it back using the Safe's address. + + + + + + + + + + ) +} + +const RemoveSafeModal = withStyles(styles)(RemoveSafeComponent) + +export default connect( + undefined, + actions, +)(RemoveSafeModal) diff --git a/src/routes/safe/store/actions/removeSafe.js b/src/routes/safe/store/actions/removeSafe.js new file mode 100644 index 00000000..272f6743 --- /dev/null +++ b/src/routes/safe/store/actions/removeSafe.js @@ -0,0 +1,8 @@ +// @flow +import { createAction } from 'redux-actions' + +export const REMOVE_SAFE = 'REMOVE_SAFE' + +const removeSafe = createAction(REMOVE_SAFE) + +export default removeSafe diff --git a/src/routes/safe/store/middleware/safeStorage.js b/src/routes/safe/store/middleware/safeStorage.js index e9ea4050..d49b1a50 100644 --- a/src/routes/safe/store/middleware/safeStorage.js +++ b/src/routes/safe/store/middleware/safeStorage.js @@ -1,9 +1,10 @@ // @flow import { ADD_SAFE } from '~/routes/safe/store/actions/addSafe' import { UPDATE_SAFE } from '~/routes/safe/store/actions/updateSafe' +import { REMOVE_SAFE } from '~/routes/safe/store/actions/removeSafe' import type { Store, AnyAction } from 'redux' import { type GlobalState } from '~/store/' -import { saveSafes, setOwners } from '~/logic/safe/utils' +import { saveSafes, setOwners, removeOwners } from '~/logic/safe/utils' import { safesMapSelector } from '~/routes/safeList/store/selectors' import { getActiveTokensAddressesForAllSafes } from '~/routes/safe/store/selectors' import { tokensSelector } from '~/logic/tokens/store/selectors' @@ -11,7 +12,7 @@ import type { Token } from '~/logic/tokens/store/model/token' import { saveActiveTokens } from '~/logic/tokens/utils/tokensStorage' import { ACTIVATE_TOKEN_FOR_ALL_SAFES } from '~/routes/safe/store/actions/activateTokenForAllSafes' -const watchedActions = [ADD_SAFE, UPDATE_SAFE, ACTIVATE_TOKEN_FOR_ALL_SAFES] +const watchedActions = [ADD_SAFE, UPDATE_SAFE, REMOVE_SAFE, ACTIVATE_TOKEN_FOR_ALL_SAFES] const safeStorageMware = (store: Store) => (next: Function) => async (action: AnyAction) => { const handledAction = next(action) @@ -40,6 +41,9 @@ const safeStorageMware = (store: Store) => (next: Function) => asyn if (action.type === ADD_SAFE) { const { safe } = action.payload setOwners(safe.address, safe.owners) + } else if (action.type === REMOVE_SAFE) { + const safeAddress = action.payload + removeOwners(safeAddress) } } diff --git a/src/routes/safe/store/reducer/safe.js b/src/routes/safe/store/reducer/safe.js index 8e90b2cc..c3aff170 100644 --- a/src/routes/safe/store/reducer/safe.js +++ b/src/routes/safe/store/reducer/safe.js @@ -9,6 +9,7 @@ import { loadFromStorage } from '~/utils/storage' import { SAFES_KEY } from '~/logic/safe/utils' import { UPDATE_SAFE } from '~/routes/safe/store/actions/updateSafe' import { ACTIVATE_TOKEN_FOR_ALL_SAFES } from '~/routes/safe/store/actions/activateTokenForAllSafes' +import { REMOVE_SAFE } from '~/routes/safe/store/actions/removeSafe' export const SAFE_REDUCER_ID = 'safes' @@ -91,6 +92,11 @@ export default handleActions( return state.set(safe.address, SafeRecord(safe)) }, + [REMOVE_SAFE]: (state: State, action: ActionType): State => { + const safeAddress = action.payload + + return state.delete(safeAddress) + }, }, Map(), ) From d17eaec11894f7e665f5984c74d173b07177f3da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germ=C3=A1n=20Mart=C3=ADnez?= Date: Wed, 22 May 2019 19:15:04 +0200 Subject: [PATCH 06/19] Create settings menu --- src/routes/safe/components/Settings/index.jsx | 53 +++++++++++++++++-- src/routes/safe/components/Settings/style.js | 22 +++++++- 2 files changed, 71 insertions(+), 4 deletions(-) diff --git a/src/routes/safe/components/Settings/index.jsx b/src/routes/safe/components/Settings/index.jsx index 96b3f8d7..0b1360e8 100644 --- a/src/routes/safe/components/Settings/index.jsx +++ b/src/routes/safe/components/Settings/index.jsx @@ -1,11 +1,12 @@ // @flow import * as React from 'react' import { withStyles } from '@material-ui/core/styles' +import Block from '~/components/layout/Block' import Col from '~/components/layout/Col' import Row from '~/components/layout/Row' import RemoveSafeModal from './RemoveSafeModal' import Paragraph from '~/components/layout/Paragraph' - +import Hairline from '~/components/layout/Hairline' import { styles } from './style' type State = { @@ -25,6 +26,11 @@ type Action = 'RemoveSafe' class Settings extends React.Component { state = { showRemoveSafe: false, + menuOptionIndex: 1, + } + + handleChange = menuOptionIndex => () => { + this.setState({ menuOptionIndex }) } onShow = (action: Action) => () => { @@ -36,7 +42,7 @@ class Settings extends React.Component { } render() { - const { showRemoveSafe } = this.state + const { showRemoveSafe, menuOptionIndex } = this.state const { classes, granted, @@ -64,7 +70,48 @@ class Settings extends React.Component { /> - Settings page content + + + + + Safe name + + + {granted && ( + + + Owners + + + + Required confirmations + + + + Modules + + + + )} + + + + + {menuOptionIndex === 1 && ( +

To be done

+ )} + {granted && menuOptionIndex === 2 && ( +

To be done

+ )} + {granted && menuOptionIndex === 3 && ( +

To be done

+ )} + {granted && menuOptionIndex === 4 && ( +

To be done

+ )} +
+ +
) } diff --git a/src/routes/safe/components/Settings/style.js b/src/routes/safe/components/Settings/style.js index d6aa5104..7fb64f13 100644 --- a/src/routes/safe/components/Settings/style.js +++ b/src/routes/safe/components/Settings/style.js @@ -1,10 +1,30 @@ // @flow -import { sm, xs } from '~/theme/variables' +import { + sm, md, lg, border, +} from '~/theme/variables' export const styles = (theme: Object) => ({ + root: { + backgroundColor: 'white', + boxShadow: '0 -1px 4px 0 rgba(74, 85, 121, 0.5)', + minHeight: '400px', + display: 'flex', + }, settings: { letterSpacing: '-0.5px', }, + menu: { + borderRight: `solid 1px ${border}`, + height: '100%', + }, + menuOption: { + padding: lg, + alignItems: 'center', + cursor: 'pointer', + }, + container: { + padding: lg, + }, message: { margin: `${sm} 0`, }, From 0d42ec4feaba5d45ee4e8d96b10e9891a1c61bfe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germ=C3=A1n=20Mart=C3=ADnez?= Date: Fri, 14 Jun 2019 13:48:47 +0200 Subject: [PATCH 07/19] Refactor remove Safe styles --- .../Settings/RemoveSafeModal/index.jsx | 181 +++++++----------- .../Settings/RemoveSafeModal/style.js | 56 ++++++ 2 files changed, 121 insertions(+), 116 deletions(-) create mode 100644 src/routes/safe/components/Settings/RemoveSafeModal/style.js diff --git a/src/routes/safe/components/Settings/RemoveSafeModal/index.jsx b/src/routes/safe/components/Settings/RemoveSafeModal/index.jsx index 40e3dfe4..60e9eb15 100644 --- a/src/routes/safe/components/Settings/RemoveSafeModal/index.jsx +++ b/src/routes/safe/components/Settings/RemoveSafeModal/index.jsx @@ -18,65 +18,14 @@ import Link from '~/components/layout/Link' import Paragraph from '~/components/layout/Paragraph' import Hairline from '~/components/layout/Hairline' import actions, { type Actions } from './actions' -import { lg, md, sm, secondary, error, background, fancy } from '~/theme/variables' +import { lg, md, secondary } from '~/theme/variables' +import { styles } from './style' const openIconStyle = { height: '16px', color: secondary, } -const styles = () => ({ - heading: { - padding: `${sm} ${lg}`, - justifyContent: 'space-between', - maxHeight: '75px', - boxSizing: 'border-box', - }, - container: { - minHeight: '369px', - }, - manage: { - fontSize: '24px', - }, - close: { - height: '35px', - width: '35px', - }, - buttonRow: { - height: '84px', - justifyContent: 'center', - }, - buttonRemove: { - color: '#fff', - backgroundColor: error, - }, - name: { - textOverflow: 'ellipsis', - overflow: 'hidden', - }, - userName: { - whiteSpace: 'nowrap', - }, - owner: { - backgroundColor: background, - padding: md, - alignItems: 'center', - }, - user: { - justifyContent: 'left', - }, - description: { - padding: md, - }, - open: { - paddingLeft: sm, - width: 'auto', - '&:hover': { - cursor: 'pointer', - }, - }, -}) - type Props = Actions & { onClose: () => void, classes: Object, @@ -94,73 +43,73 @@ const RemoveSafeComponent = ({ etherScanLink, safeName, removeSafe, -}: Props) => { - return ( - - - +}: Props) => ( + + + Remove Safe - - - - - - - - - - - - - - - {safeName} + + + + + + + + + + + + + + + {safeName} + + + + {safeAddress} - - - {safeAddress} - - - - - + + + - - - - - - Removing a Safe only removes it from your interface. It does not delete the Safe. You can always add it back using the Safe's address. - - - - - - - + + - - ) -} + + + + Removing a Safe only removes it from your interface. + It does not delete the Safe. + You can always add it back using the Safe's address. + + + + + + + + + +) const RemoveSafeModal = withStyles(styles)(RemoveSafeComponent) diff --git a/src/routes/safe/components/Settings/RemoveSafeModal/style.js b/src/routes/safe/components/Settings/RemoveSafeModal/style.js new file mode 100644 index 00000000..33ec9e55 --- /dev/null +++ b/src/routes/safe/components/Settings/RemoveSafeModal/style.js @@ -0,0 +1,56 @@ +// @flow +import { + lg, md, sm, error, background, +} from '~/theme/variables' + +export const styles = (theme: Object) => ({ + heading: { + padding: `${sm} ${lg}`, + justifyContent: 'space-between', + maxHeight: '75px', + boxSizing: 'border-box', + }, + container: { + minHeight: '369px', + }, + manage: { + fontSize: '24px', + }, + close: { + height: '35px', + width: '35px', + }, + buttonRow: { + height: '84px', + justifyContent: 'center', + }, + buttonRemove: { + color: '#fff', + backgroundColor: error, + }, + name: { + textOverflow: 'ellipsis', + overflow: 'hidden', + }, + userName: { + whiteSpace: 'nowrap', + }, + owner: { + backgroundColor: background, + padding: md, + alignItems: 'center', + }, + user: { + justifyContent: 'left', + }, + description: { + padding: md, + }, + open: { + paddingLeft: sm, + width: 'auto', + '&:hover': { + cursor: 'pointer', + }, + }, +}) From 5580011778c50d45a4c1f06c0e174da2c7b15e15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germ=C3=A1n=20Mart=C3=ADnez?= Date: Fri, 14 Jun 2019 16:49:38 +0200 Subject: [PATCH 08/19] Update Safe name wip --- .../Settings/UpdateSafeName/index.jsx | 56 +++++++++++++++++++ .../Settings/UpdateSafeName/style.js | 4 ++ 2 files changed, 60 insertions(+) create mode 100644 src/routes/safe/components/Settings/UpdateSafeName/index.jsx create mode 100644 src/routes/safe/components/Settings/UpdateSafeName/style.js diff --git a/src/routes/safe/components/Settings/UpdateSafeName/index.jsx b/src/routes/safe/components/Settings/UpdateSafeName/index.jsx new file mode 100644 index 00000000..24980f6b --- /dev/null +++ b/src/routes/safe/components/Settings/UpdateSafeName/index.jsx @@ -0,0 +1,56 @@ +// @flow +import * as React from 'react' +import { withStyles } from '@material-ui/core/styles' +import Block from '~/components/layout/Block' +import Col from '~/components/layout/Col' +import Row from '~/components/layout/Row' +import Paragraph from '~/components/layout/Paragraph' +import Button from '~/components/layout/Button' +import { sm, boldFont } from '~/theme/variables' +import { styles } from './style' + +const controlsStyle = { + backgroundColor: 'white', + padding: sm, +} + +const saveButtonStyle = { + marginRight: sm, + fontWeight: boldFont, +} + +type Props = { + classes: Object, +} + +class UpdateSafeName extends React.Component { + render() { + const { classes } = this.props + + return ( + + + + Details + + + + + + + + + ) + } +} + +export default withStyles(styles)(UpdateSafeName) diff --git a/src/routes/safe/components/Settings/UpdateSafeName/style.js b/src/routes/safe/components/Settings/UpdateSafeName/style.js new file mode 100644 index 00000000..3980c700 --- /dev/null +++ b/src/routes/safe/components/Settings/UpdateSafeName/style.js @@ -0,0 +1,4 @@ +// @flow +import { lg, border } from '~/theme/variables' + +export const styles = () => ({}) From 53f6861645e1c0f6199a936e6eba048765aa875d Mon Sep 17 00:00:00 2001 From: Mikhail Mikheev Date: Mon, 17 Jun 2019 14:08:32 +0400 Subject: [PATCH 09/19] dep bump --- package.json | 46 +- yarn.lock | 1197 +++++++++++++++++++++++--------------------------- 2 files changed, 580 insertions(+), 663 deletions(-) diff --git a/package.json b/package.json index 375beea7..8f7cbe9a 100644 --- a/package.json +++ b/package.json @@ -32,13 +32,13 @@ "dependencies": { "@gnosis.pm/safe-contracts": "^1.0.0", "@gnosis.pm/util-contracts": "2.0.1", - "@material-ui/core": "4.1.0", - "@material-ui/icons": "4.1.0", - "@welldone-software/why-did-you-render": "^3.0.9", - "axios": "^0.18.0", + "@material-ui/core": "4.1.1", + "@material-ui/icons": "4.2.0", + "@welldone-software/why-did-you-render": "3.2.0", + "axios": "0.19.0", "bignumber.js": "9.0.0", "connected-react-router": "^6.3.1", - "final-form": "4.13.1", + "final-form": "4.15.0", "history": "^4.7.2", "immortal-db": "^1.0.2", "immutable": "^4.0.0-rc.9", @@ -47,11 +47,11 @@ "qrcode.react": "^0.9.3", "react": "^16.8.6", "react-dom": "^16.8.6", - "react-final-form": "6.0.1", + "react-final-form": "6.2.1", "react-final-form-listeners": "^1.0.2", - "react-hot-loader": "4.11.0", + "react-hot-loader": "4.11.1", "react-infinite-scroll-component": "^4.5.2", - "react-redux": "7.0.3", + "react-redux": "7.1.0", "react-router-dom": "^4.3.1", "recompose": "^0.30.0", "redux": "^4.0.1", @@ -86,10 +86,10 @@ "@babel/preset-flow": "^7.0.0-beta.40", "@babel/preset-react": "^7.0.0-beta.40", "@sambego/storybook-state": "^1.0.7", - "@storybook/addon-actions": "5.1.3", - "@storybook/addon-knobs": "5.1.3", - "@storybook/addon-links": "5.1.3", - "@storybook/react": "5.1.3", + "@storybook/addon-actions": "5.1.8", + "@storybook/addon-knobs": "5.1.8", + "@storybook/addon-links": "5.1.8", + "@storybook/react": "5.1.8", "autoprefixer": "9.6.0", "babel-core": "^7.0.0-bridge.0", "babel-eslint": "^10.0.1", @@ -99,19 +99,19 @@ "babel-plugin-transform-es3-member-expression-literals": "^6.22.0", "babel-plugin-transform-es3-property-literals": "^6.22.0", "classnames": "^2.2.5", - "css-loader": "^2.1.0", + "css-loader": "3.0.0", "detect-port": "^1.2.2", "eslint": "^5.16.0", "eslint-config-airbnb": "^17.1.0", - "eslint-plugin-flowtype": "3.10.1", + "eslint-plugin-flowtype": "3.10.3", "eslint-plugin-import": "2.17.3", "eslint-plugin-jest": "22.6.4", "eslint-plugin-jsx-a11y": "^6.0.3", "eslint-plugin-react": "7.13.0", "ethereumjs-abi": "^0.6.7", "extract-text-webpack-plugin": "^4.0.0-beta.0", - "file-loader": "^3.0.1", - "flow-bin": "0.100.0", + "file-loader": "4.0.0", + "flow-bin": "0.101.0", "fs-extra": "8.0.1", "html-loader": "^0.5.5", "html-webpack-plugin": "^3.0.4", @@ -122,19 +122,19 @@ "postcss-mixins": "^6.2.0", "postcss-simple-vars": "^5.0.2", "pre-commit": "^1.2.2", - "prettier-eslint-cli": "^4.7.1", - "react-testing-library": "^7.0.1", + "prettier-eslint-cli": "5.0.0", + "react-testing-library": "8.0.1", "run-with-testrpc": "0.3.1", "storybook-host": "^5.0.3", "storybook-router": "^0.3.3", "style-loader": "^0.23.1", - "truffle": "5.0.21", - "truffle-contract": "4.0.19", - "truffle-solidity-loader": "0.1.20", + "truffle": "5.0.22", + "truffle-contract": "4.0.20", + "truffle-solidity-loader": "0.1.21", "uglifyjs-webpack-plugin": "2.1.3", - "webpack": "4.33.0", + "webpack": "4.34.0", "webpack-bundle-analyzer": "3.3.2", - "webpack-cli": "3.3.3", + "webpack-cli": "3.3.4", "webpack-dev-server": "3.7.1", "webpack-manifest-plugin": "^2.0.0-rc.2" } diff --git a/yarn.lock b/yarn.lock index 53493a95..afdc9812 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1300,7 +1300,7 @@ dependencies: regenerator-runtime "^0.12.0" -"@babel/runtime@7.4.3", "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.2", "@babel/runtime@^7.4.3": +"@babel/runtime@7.4.3", "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.2": version "7.4.3" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.3.tgz#79888e452034223ad9609187a0ad1fe0d2ad4bdc" integrity sha512-9lsJwJLxDh/T3Q3SZszfWOTkk3pHbkmH+3KY+zwIDmsNlxsumuhS2TH3NIpktU4kNvfzy+k3eLT7aTJSPTo0OA== @@ -1723,14 +1723,14 @@ "@types/istanbul-reports" "^1.1.1" "@types/yargs" "^12.0.9" -"@material-ui/core@4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-4.1.0.tgz#4a350b5c77f4427a35b6c6d46e100c95e4eaaafd" - integrity sha512-dpS7OvW4eBInskB3l72htaBY+3VFfgEs0UiNczyJyqb6SjymVx7ymi0BnwfUOWJYwPq0jfRqPddy0ThADBqvHQ== +"@material-ui/core@4.1.1": + version "4.1.1" + resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-4.1.1.tgz#11e703f3d44d84750c9b829f13bb08ad8949e12a" + integrity sha512-dZVuVFqKnG3uf+s32U5wMTAXYBGBM6e2LF4fz4ud9woaYcthRiEFJTg2idt0j1jBMg99gqLuznR5+A9TCQbgxQ== dependencies: "@babel/runtime" "^7.2.0" - "@material-ui/styles" "^4.1.0" - "@material-ui/system" "^4.1.0" + "@material-ui/styles" "^4.1.1" + "@material-ui/system" "^4.2.0" "@material-ui/types" "^4.1.0" "@material-ui/utils" "^4.1.0" "@types/react-transition-group" "^2.0.16" @@ -1747,17 +1747,17 @@ react-transition-group "^4.0.0" warning "^4.0.1" -"@material-ui/icons@4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@material-ui/icons/-/icons-4.1.0.tgz#583f09918f0217948485a548c18e3088ede3a352" - integrity sha512-EwlS/D3O1lBEFBBOwBJgcV3c9zkLYy6GpJzBFL4i8rpkwfpWAE2dvz2TGsHfftfR60tiiLpZJhngBL7NJYnRng== +"@material-ui/icons@4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@material-ui/icons/-/icons-4.2.0.tgz#cd0b6521288c5e6c0b084d6defec37a4491e0c51" + integrity sha512-v+rz61KzH+qR8x17BrfOF73f75x+wUNiBhv9tsKnEed+ElROMK2dqfMAlsdgEP+wgGl4VOcxzUQqWHcaApZ+CA== dependencies: "@babel/runtime" "^7.2.0" -"@material-ui/styles@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@material-ui/styles/-/styles-4.1.0.tgz#a8a200bf81c4a603a298b7df114d66b624b7fab1" - integrity sha512-GMv/8UcfZv5P9Cl2eR+HbyJwCnrYOeDRW3BALCGZgQ7nBiQTQnrhXxA1MprBoRBPl5KiD2kQJdjbdkvT8OSfNg== +"@material-ui/styles@^4.1.1": + version "4.1.1" + resolved "https://registry.yarnpkg.com/@material-ui/styles/-/styles-4.1.1.tgz#16e9d4770bd18b85c25fd3cb925043af5fa37f36" + integrity sha512-BmtfLRY0CqAkYPdcFmNcD1/zyU6ATRx9vaBxJ31//YVxfRsyPOuQXW6fvAoDvQt/hbZpTR4E0K/+4D3wHHTdHQ== dependencies: "@babel/runtime" "^7.2.0" "@emotion/hash" "^0.7.1" @@ -1778,10 +1778,10 @@ prop-types "^15.7.2" warning "^4.0.1" -"@material-ui/system@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@material-ui/system/-/system-4.1.0.tgz#c850a625d1a5d5440e1ad039d2503da63f8c6727" - integrity sha512-1v/J2X820CzYhiH46z9qcbd+AVcQ+578ycsHAo6MVpu5eI399S6t+OcO6vg0FPhCrLshWynNGNfeF0JcLlrYzA== +"@material-ui/system@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@material-ui/system/-/system-4.2.0.tgz#1c0759f1168bf871a7970239dc781b7bf9dfd010" + integrity sha512-t51525FWVDjca/3UPwN99vqyvbfGNtBVesGYH2UpxVgKOdiP1ZINeHhBrZ8h4uOu5ZwgO4aceuk1TuM9uMttYw== dependencies: "@babel/runtime" "^7.2.0" deepmerge "^3.0.0" @@ -1877,28 +1877,23 @@ dependencies: uuid "^3.1.0" -"@sheerun/mutationobserver-shim@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.2.tgz#8013f2af54a2b7d735f71560ff360d3a8176a87b" - integrity sha512-vTCdPp/T/Q3oSqwHmZ5Kpa9oI7iLtGl3RQaA/NyLHikvcrPxACkkKVr/XzkSPJWXHRhKGzVvb0urJsbMlRxi1Q== - -"@storybook/addon-actions@5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-5.1.3.tgz#2df95e91f6c2992ed0bec048fb5353b490d08218" - integrity sha512-ajOJ+hWvFFfj7GiLgV1auw9rmA9edUm1PP0fJxz2H1O8abqqOr+zVLFR15lxs2pFp1TCgRXTvQYiMj9ZxTZAwQ== +"@storybook/addon-actions@5.1.8": + version "5.1.8" + resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-5.1.8.tgz#98d6aff42fb7fa7477b4db6cf21da3ede18ede0d" + integrity sha512-p4d3B5jzYMuQn4n/owbpkrFLKvn0bjuwl6pFda4DNYnhiWtornKvOGb4g0Wjtz1Pw61tkb1PZN+OJuQ8imifjw== dependencies: - "@storybook/addons" "5.1.3" - "@storybook/api" "5.1.3" - "@storybook/components" "5.1.3" - "@storybook/core-events" "5.1.3" - "@storybook/theming" "5.1.3" + "@storybook/addons" "5.1.8" + "@storybook/api" "5.1.8" + "@storybook/components" "5.1.8" + "@storybook/core-events" "5.1.8" + "@storybook/theming" "5.1.8" core-js "^3.0.1" fast-deep-equal "^2.0.1" global "^4.3.2" lodash "^4.17.11" polished "^3.3.1" prop-types "^15.7.2" - react "^16.8.4" + react "^16.8.3" react-inspector "^3.0.2" uuid "^3.3.2" @@ -1918,16 +1913,16 @@ react-inspector "^2.2.2" uuid "^3.2.1" -"@storybook/addon-knobs@5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@storybook/addon-knobs/-/addon-knobs-5.1.3.tgz#238fdd72193c1936453a6824570c0a9d240051cf" - integrity sha512-ug64vIxA/Ly2lc3LYIrOvy6Cq3qocQu4N2lZzvy+BY4aG5aYmgNJupVjQnQ6qLLiYJsGaPyjG5+74cudgE5Nrg== +"@storybook/addon-knobs@5.1.8": + version "5.1.8" + resolved "https://registry.yarnpkg.com/@storybook/addon-knobs/-/addon-knobs-5.1.8.tgz#f0b7cf1e14e647e2030055a8f9eb9e09e595fd5d" + integrity sha512-GCcjc3iO8YQOKdOaA1pr4INzNA3gU/0qIpYg0En3CbNH9LodfBha3l91G64AH06rCqhAYWp5D482kptKRaFxOA== dependencies: - "@storybook/addons" "5.1.3" - "@storybook/client-api" "5.1.3" - "@storybook/components" "5.1.3" - "@storybook/core-events" "5.1.3" - "@storybook/theming" "5.1.3" + "@storybook/addons" "5.1.8" + "@storybook/client-api" "5.1.8" + "@storybook/components" "5.1.8" + "@storybook/core-events" "5.1.8" + "@storybook/theming" "5.1.8" copy-to-clipboard "^3.0.8" core-js "^3.0.1" escape-html "^1.0.3" @@ -1940,82 +1935,82 @@ react-lifecycles-compat "^3.0.4" react-select "^2.2.0" -"@storybook/addon-links@5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-5.1.3.tgz#80fa1c3322e92fde98fb0e69838a73db6b7ec5ef" - integrity sha512-DpLa4qgPcTtJbHjYdWEv2c1Xo0IOk7opybm/Gby9uUuUL0rCMBQoROoeXfwQGeaAK8vhwiyHb48OsVzbwbPoSw== +"@storybook/addon-links@5.1.8": + version "5.1.8" + resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-5.1.8.tgz#03c307e20b7b868cd0935a52062b1a442cb9d33f" + integrity sha512-GSSgR2LM0HmBi8YBXsdzLsMaWaBs/u45Ahngcj9KNNwirWNvtAN571Kt/BMCiSe25q8aq/1MeZrENuIIvSe1bg== dependencies: - "@storybook/addons" "5.1.3" - "@storybook/core-events" "5.1.3" - "@storybook/router" "5.1.3" + "@storybook/addons" "5.1.8" + "@storybook/core-events" "5.1.8" + "@storybook/router" "5.1.8" common-tags "^1.8.0" core-js "^3.0.1" global "^4.3.2" prop-types "^15.7.2" qs "^6.6.0" -"@storybook/addons@5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-5.1.3.tgz#43181aa927e81d9f1747ae5dcbe7dbabf113f978" - integrity sha512-/xfpU9hIl2JRks3mrWGF/PuP91sflVY+w46KLJuLKXRVGn0slO8ijGs+x+HHBuZZ5MjOW7BCSrQgFjPE8B5Vjg== +"@storybook/addons@5.1.8": + version "5.1.8" + resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-5.1.8.tgz#d4c9bacd5cce58c3375a3c5b3b3e47ab0cee2818" + integrity sha512-qV3NJyoxJWOb6E1pJXjrj4KJ77OHjNNC0tUzdiHPlWqc21Szu8AKIC7b3L6+fqwmZoAUg1XdtrynJwjXaNkVeQ== dependencies: - "@storybook/api" "5.1.3" - "@storybook/channels" "5.1.3" - "@storybook/client-logger" "5.1.3" + "@storybook/api" "5.1.8" + "@storybook/channels" "5.1.8" + "@storybook/client-logger" "5.1.8" core-js "^3.0.1" global "^4.3.2" util-deprecate "^1.0.2" -"@storybook/api@5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@storybook/api/-/api-5.1.3.tgz#db809a1a153d7bb86a494b18866c81093dfa0084" - integrity sha512-jL7aFaVodzzJ9GJnxW6vgm5PVoF859pjIukg9gsyp1aEvO5HpE+YelmAR6GdEH0JGxpk3UH8L+3V/W2zUOG9lA== +"@storybook/api@5.1.8": + version "5.1.8" + resolved "https://registry.yarnpkg.com/@storybook/api/-/api-5.1.8.tgz#fb10fff22d063d3198549994b1af6994b49d0c5a" + integrity sha512-uNH97oW5GSqSpz3SPvonPERJgfWc+ApiAZFBDv5djS7/FSSvqGaPwnXuutwQoBwx3GX5tT0K2VSAstOXRMGIOA== dependencies: - "@storybook/channels" "5.1.3" - "@storybook/client-logger" "5.1.3" - "@storybook/core-events" "5.1.3" - "@storybook/router" "5.1.3" - "@storybook/theming" "5.1.3" + "@storybook/channels" "5.1.8" + "@storybook/client-logger" "5.1.8" + "@storybook/core-events" "5.1.8" + "@storybook/router" "5.1.8" + "@storybook/theming" "5.1.8" core-js "^3.0.1" fast-deep-equal "^2.0.1" global "^4.3.2" lodash "^4.17.11" memoizerific "^1.11.3" prop-types "^15.6.2" - react "^16.7.0" + react "^16.8.3" semver "^6.0.0" shallow-equal "^1.1.0" store2 "^2.7.1" telejson "^2.2.1" util-deprecate "^1.0.2" -"@storybook/channel-postmessage@5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-5.1.3.tgz#bd44302b1de729c2eeb84334935b8d2827d82de2" - integrity sha512-dmvZxzig2yP1qXT7btUHR5KncEEiC2HZMLyEOAZ2GPUSYUGGHGQQXD6OE4pRGj4IzCxrE7BUNQ/VDKqGGwO6rQ== +"@storybook/channel-postmessage@5.1.8": + version "5.1.8" + resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-5.1.8.tgz#81e7ddee8339c3901d449a261f833cbc006fb934" + integrity sha512-lvSY3qZFQMdFioN8IzDuSG9SsuhBtP/6HIAc0dd08q+wqD3Qiglq38TRwyFa+OXJ2eDD98KtlT7w9Mi+Ncu8bw== dependencies: - "@storybook/channels" "5.1.3" - "@storybook/client-logger" "5.1.3" + "@storybook/channels" "5.1.8" + "@storybook/client-logger" "5.1.8" core-js "^3.0.1" global "^4.3.2" telejson "^2.2.1" -"@storybook/channels@5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-5.1.3.tgz#25f2ff489a71fc58ee75d6d3e6b964790ba6193a" - integrity sha512-wZCLiR13edXyN0zw9fGNFAQIAppOAs/GmMLDPPBwujuTimmjLVK0OcTSR3TJzYeOeaUag5q5Rkt67Lq2rU0qcg== +"@storybook/channels@5.1.8": + version "5.1.8" + resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-5.1.8.tgz#eab67155999d36519feb4e134c420209f128ac9f" + integrity sha512-iuB326WWEmLYiMFnAoGoL4E4yADJ71EngHvbUBogtzx6VV3NjoeW6BoWbZTcBTL4lqfiKhnRbtOB379SXKErfw== dependencies: core-js "^3.0.1" -"@storybook/client-api@5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@storybook/client-api/-/client-api-5.1.3.tgz#28724bbedcbe51a2c10e1fa8a76484797334e9af" - integrity sha512-KXuzzDl8w0C+n5qfs+xunaVzp0SaSfGboHYy17VLryRAmFRFw8E9om0mHpRWihXqHWfF0zlC7L6onH8V74d8Kw== +"@storybook/client-api@5.1.8": + version "5.1.8" + resolved "https://registry.yarnpkg.com/@storybook/client-api/-/client-api-5.1.8.tgz#77e9923393349cbc10bfa7e2728ba79ae415cec9" + integrity sha512-ct1tNKTiJGh+n6X//h48K0eiIGs5/9p2VYWQgmejrssNniSEBUnnKa3V2RsLtFj2jhUkBeVu+btClm4xFUqAug== dependencies: - "@storybook/addons" "5.1.3" - "@storybook/client-logger" "5.1.3" - "@storybook/core-events" "5.1.3" - "@storybook/router" "5.1.3" + "@storybook/addons" "5.1.8" + "@storybook/client-logger" "5.1.8" + "@storybook/core-events" "5.1.8" + "@storybook/router" "5.1.8" common-tags "^1.8.0" core-js "^3.0.1" eventemitter3 "^3.1.0" @@ -2025,10 +2020,10 @@ memoizerific "^1.11.3" qs "^6.6.0" -"@storybook/client-logger@5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-5.1.3.tgz#6d9f45fdac7d3f2f65d1238c35df11170c2f8b68" - integrity sha512-/86NGA7NPsAktpA0lSnw0NhgdqS7Grz08wE7Paz+qLDj1AxnttTvMZctWJ8bLAa3EeJ9wHXGak854CmGiVFnWA== +"@storybook/client-logger@5.1.8": + version "5.1.8" + resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-5.1.8.tgz#444b18a25981b8030eaea0dca1a8247070c11297" + integrity sha512-TGf6KLGbS2JIJuQpBeHHgqNgy/c1j3dpeuagjJra5H/Sd+ZZj3VZRoCIU14mHP4Z9uffssSsHYj7PCJFYVXLgA== dependencies: core-js "^3.0.1" @@ -2041,13 +2036,13 @@ glamorous "^4.12.1" prop-types "^15.6.1" -"@storybook/components@5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@storybook/components/-/components-5.1.3.tgz#9c6898f8f66bf6b9dfdb3ecca73370f2d799e546" - integrity sha512-lM+iSdIl/UlmPlgH3vqo8NhMAdPUrWkgp40CVADfXsM6Yxai/23gpg8/HEoHiU5hFjNxowJUt76gTvwt9ak+gg== +"@storybook/components@5.1.8": + version "5.1.8" + resolved "https://registry.yarnpkg.com/@storybook/components/-/components-5.1.8.tgz#5cb6ffbc6d7c0785f54f63fcbd8b8417d9a8c4be" + integrity sha512-s6ulZkr/XOqS9kqPAE76QaVtudwkxwrurIYJ348Z+UttDjbVfv64xNtcU36pQnMV9aH8MEqIfSuCGZxRi/9v5w== dependencies: - "@storybook/client-logger" "5.1.3" - "@storybook/theming" "5.1.3" + "@storybook/client-logger" "5.1.8" + "@storybook/theming" "5.1.8" core-js "^3.0.1" global "^4.3.2" markdown-to-jsx "^6.9.1" @@ -2055,8 +2050,8 @@ polished "^3.3.1" popper.js "^1.14.7" prop-types "^15.7.2" - react "^16.8.4" - react-dom "^16.8.4" + react "^16.8.3" + react-dom "^16.8.3" react-focus-lock "^1.18.3" react-helmet-async "^1.0.2" react-popper-tooltip "^2.8.3" @@ -2065,32 +2060,32 @@ recompose "^0.30.0" simplebar-react "^1.0.0-alpha.6" -"@storybook/core-events@5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-5.1.3.tgz#febed0fb83201a107fd1c25b5487e2daec911fa0" - integrity sha512-oO9b05G/+9rYdNIx1BoOpFW+jwJeIR60PuJbvNMr1lSo9LH0JsG0+TNADjNXrLCChHfk1KMp1+DcpsSdNNNUqg== +"@storybook/core-events@5.1.8": + version "5.1.8" + resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-5.1.8.tgz#048545d70e03f56eb4d35e3797f6efd9ffe4e541" + integrity sha512-fqam2Rm5aV8TxdBgC/eiHriY33O4wTUKw+odiH3sH0l5gZQhcAcFtnV2K2rtxrhgQnsdAzDZ5FNIKvv+xx5ZCg== dependencies: core-js "^3.0.1" -"@storybook/core@5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@storybook/core/-/core-5.1.3.tgz#4c0ec2082432eed97884d8cde99acc905d3f257f" - integrity sha512-D3R4EIypMjeSMQw5s9cJeABdX8ymPUJPZ9RclBoALlhdJRZgzrFOU7fytKVXIfnSbRAH58d1/siZhxINBqs3GA== +"@storybook/core@5.1.8": + version "5.1.8" + resolved "https://registry.yarnpkg.com/@storybook/core/-/core-5.1.8.tgz#7e286dce3d01a1805be29c9f47c63275302ad87d" + integrity sha512-iCAZpa0qVRRyaOsvX2RhSZ/PjYHGDTs/sXCH4MHhXE/juU/6QaM8rdwu83Aw0Xm++LLbnNJgTVrJUVLoaVjTtg== dependencies: "@babel/plugin-proposal-class-properties" "^7.3.3" "@babel/plugin-proposal-object-rest-spread" "^7.3.2" "@babel/plugin-syntax-dynamic-import" "^7.2.0" "@babel/plugin-transform-react-constant-elements" "^7.2.0" "@babel/preset-env" "^7.4.5" - "@storybook/addons" "5.1.3" - "@storybook/channel-postmessage" "5.1.3" - "@storybook/client-api" "5.1.3" - "@storybook/client-logger" "5.1.3" - "@storybook/core-events" "5.1.3" - "@storybook/node-logger" "5.1.3" - "@storybook/router" "5.1.3" - "@storybook/theming" "5.1.3" - "@storybook/ui" "5.1.3" + "@storybook/addons" "5.1.8" + "@storybook/channel-postmessage" "5.1.8" + "@storybook/client-api" "5.1.8" + "@storybook/client-logger" "5.1.8" + "@storybook/core-events" "5.1.8" + "@storybook/node-logger" "5.1.8" + "@storybook/router" "5.1.8" + "@storybook/theming" "5.1.8" + "@storybook/ui" "5.1.8" airbnb-js-shims "^1 || ^2" autoprefixer "^9.4.9" babel-plugin-add-react-displayname "^0.0.5" @@ -2104,6 +2099,7 @@ commander "^2.19.0" common-tags "^1.8.0" core-js "^3.0.1" + corejs-upgrade-webpack-plugin "^2.0.0" css-loader "^2.1.1" detect-port "^1.3.0" dotenv-webpack "^1.7.0" @@ -2138,14 +2134,14 @@ terser-webpack-plugin "^1.2.4" url-loader "^1.1.2" util-deprecate "^1.0.2" - webpack "^4.32.0" + webpack "^4.33.0" webpack-dev-middleware "^3.7.0" webpack-hot-middleware "^2.25.0" -"@storybook/node-logger@5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-5.1.3.tgz#c93e17d497ae83732fae5e06dbe1f2cf8fb074e2" - integrity sha512-Whdm/aPe04SZzgaxLUGsiyeN3z9IYtvJbxQs+3p3XXaiUWG1P5HJL2uUiCv+nzvJfovpN81mAPaGFEiXUR+42g== +"@storybook/node-logger@5.1.8": + version "5.1.8" + resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-5.1.8.tgz#f3c72e5ed97ab7347bb00d4de5f9ff926c55c6bd" + integrity sha512-o1aUDhmIo/5wpkQybGNKiMd+hG9e97D2kVGVxiuUB7LRmK8RcQAhl+KEQ9tcutazczWekmiDjm25iw7KHRBAaA== dependencies: chalk "^2.4.2" core-js "^3.0.1" @@ -2153,16 +2149,16 @@ pretty-hrtime "^1.0.3" regenerator-runtime "^0.12.1" -"@storybook/react@5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@storybook/react/-/react-5.1.3.tgz#117fad300f6d128d635c98d4fa8971b051b21e74" - integrity sha512-udQrADQTbI7e6moqu6FXytqYl0h9JKyQ3gowvgauiZIMzCplWgFwAAFr6t6Dl26Opg0nTC8x9q4yztFuXbGTwA== +"@storybook/react@5.1.8": + version "5.1.8" + resolved "https://registry.yarnpkg.com/@storybook/react/-/react-5.1.8.tgz#566d4a982051d15b8af06e0bf6222187edc3d444" + integrity sha512-7lNbT2JBAOiXezG0s9UrWfUKubluS1M5ufyMUi8u+1JIvgSduS0q6FsRJV+dDAJFvDYEt03fpEZWgZU/bRUL/w== dependencies: "@babel/plugin-transform-react-constant-elements" "^7.2.0" "@babel/preset-flow" "^7.0.0" "@babel/preset-react" "^7.0.0" - "@storybook/core" "5.1.3" - "@storybook/node-logger" "5.1.3" + "@storybook/core" "5.1.8" + "@storybook/node-logger" "5.1.8" "@svgr/webpack" "^4.0.3" babel-plugin-named-asset-import "^0.3.1" babel-plugin-react-docgen "^3.0.0" @@ -2176,12 +2172,12 @@ react-dev-utils "^9.0.0" regenerator-runtime "^0.12.1" semver "^6.0.0" - webpack "^4.28.0" + webpack "^4.33.0" -"@storybook/router@5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@storybook/router/-/router-5.1.3.tgz#e87f7f368816f7a6b248d3aac39c57642c4f5083" - integrity sha512-ZTFVyJvmVzpMY7KKpqns9bPD61A0nhfEVspxe6auPzIszZ/NSqCazEINUNf6nwKc+pR61S29FdzpMFPys6E42Q== +"@storybook/router@5.1.8": + version "5.1.8" + resolved "https://registry.yarnpkg.com/@storybook/router/-/router-5.1.8.tgz#177a0322d5860b11ca662438bc8ecd08188f85e1" + integrity sha512-YKwAXBInzmi1zVcQSxK9rvFw7jDdy0zDU0Zr/oQxQCcnFs02YRRv5DJ47DqLIRxUHq7Uc6RxXfpl2wLJZi1ZfQ== dependencies: "@reach/router" "^1.2.1" core-js "^3.0.1" @@ -2189,14 +2185,14 @@ memoizerific "^1.11.3" qs "^6.6.0" -"@storybook/theming@5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-5.1.3.tgz#705654392b020ef5654c6c500f4398cc7f067653" - integrity sha512-ScBAEMkpwY6pHPuD7SYqAwbQ3M4cOEYY2340HtLNR53M6EJ2mcd87rH2kwpTEgTzeA0VuUln6WXEoBz3WRBLYA== +"@storybook/theming@5.1.8": + version "5.1.8" + resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-5.1.8.tgz#70981c26b962ae49cbdb0dd827d35cd9f1759107" + integrity sha512-kfo2BAGb0i1ZTCvcHFG6dLkYAeM1HoIDpEfcGZN4DIjxYd76qmyG3HlAfWGo0KmPIUk8iBnXZs8LmuhK7woZsA== dependencies: "@emotion/core" "^10.0.9" "@emotion/styled" "^10.0.7" - "@storybook/client-logger" "5.1.3" + "@storybook/client-logger" "5.1.8" common-tags "^1.8.0" core-js "^3.0.1" deep-object-diff "^1.1.0" @@ -2207,18 +2203,18 @@ prop-types "^15.7.2" resolve-from "^5.0.0" -"@storybook/ui@5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@storybook/ui/-/ui-5.1.3.tgz#6bb07ada02196163a3df52cd3e7062e305eb869a" - integrity sha512-6DL0pHUXnJv4nsXld5vTerHGFAeDZ4ec38+/3oAcjztmnVzRm49P4v0aUGdCKxxra2h6Ytk6KHPmoqsFEX69CQ== +"@storybook/ui@5.1.8": + version "5.1.8" + resolved "https://registry.yarnpkg.com/@storybook/ui/-/ui-5.1.8.tgz#84cf1b0f0b833140cd2ffd30b9a2f85574dfa37f" + integrity sha512-YIJH/k9QdYQqIch2yEuj8eiEN9CKmlG+hgWR5v/hSm1i33ga1W5Qn64/w2xZESccnLMWc+bJH/visB8U/bcRnQ== dependencies: - "@storybook/addons" "5.1.3" - "@storybook/api" "5.1.3" - "@storybook/client-logger" "5.1.3" - "@storybook/components" "5.1.3" - "@storybook/core-events" "5.1.3" - "@storybook/router" "5.1.3" - "@storybook/theming" "5.1.3" + "@storybook/addons" "5.1.8" + "@storybook/api" "5.1.8" + "@storybook/client-logger" "5.1.8" + "@storybook/components" "5.1.8" + "@storybook/core-events" "5.1.8" + "@storybook/router" "5.1.8" + "@storybook/theming" "5.1.8" copy-to-clipboard "^3.0.8" core-js "^3.0.1" core-js-pure "^3.0.1" @@ -2231,8 +2227,8 @@ polished "^3.3.1" prop-types "^15.7.2" qs "^6.6.0" - react "^16.8.4" - react-dom "^16.8.4" + react "^16.8.3" + react-dom "^16.8.3" react-draggable "^3.1.1" react-helmet-async "^1.0.2" react-hotkeys "2.0.0-pre4" @@ -2389,6 +2385,11 @@ dependencies: "@types/node" "*" +"@types/eslint-visitor-keys@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" + integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== + "@types/events@*": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" @@ -2505,6 +2506,32 @@ resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-12.0.12.tgz#45dd1d0638e8c8f153e87d296907659296873916" integrity sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw== +"@typescript-eslint/experimental-utils@1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-1.10.2.tgz#cd548c03fc1a2b3ba5c136d1599001a1ede24215" + integrity sha512-Hf5lYcrnTH5Oc67SRrQUA7KuHErMvCf5RlZsyxXPIT6AXa8fKTyfFO6vaEnUmlz48RpbxO4f0fY3QtWkuHZNjg== + dependencies: + "@typescript-eslint/typescript-estree" "1.10.2" + eslint-scope "^4.0.0" + +"@typescript-eslint/parser@^1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-1.10.2.tgz#36cfe8c6bf1b6c1dd81da56f88c8588f4b1a852b" + integrity sha512-xWDWPfZfV0ENU17ermIUVEVSseBBJxKfqBcRCMZ8nAjJbfA5R7NWMZmFFHYnars5MjK4fPjhu4gwQv526oZIPQ== + dependencies: + "@types/eslint-visitor-keys" "^1.0.0" + "@typescript-eslint/experimental-utils" "1.10.2" + "@typescript-eslint/typescript-estree" "1.10.2" + eslint-visitor-keys "^1.0.0" + +"@typescript-eslint/typescript-estree@1.10.2": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.10.2.tgz#8403585dd74b6cfb6f78aa98b6958de158b5897b" + integrity sha512-Kutjz0i69qraOsWeI8ETqYJ07tRLvD9URmdrMoF10bG8y8ucLmPtSxROvVejWvlJUGl2et/plnMiKRDW+rhEhw== + dependencies: + lodash.unescape "4.0.1" + semver "5.5.0" + "@webassemblyjs/ast@1.8.5": version "1.8.5" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" @@ -2651,10 +2678,10 @@ "@webassemblyjs/wast-parser" "1.8.5" "@xtuc/long" "4.2.2" -"@welldone-software/why-did-you-render@^3.0.9": - version "3.0.9" - resolved "https://registry.yarnpkg.com/@welldone-software/why-did-you-render/-/why-did-you-render-3.0.9.tgz#c850001f9b94c5e930ddaa29251bb0ae5b78a295" - integrity sha512-iSv9vRHxAK1EckGFG6GPNpS25LM4PHbILUvYDziqDtqRMGjCkeVqd/R4KAnkvTk7+9W4CazZa9HwXDBRFC/LnQ== +"@welldone-software/why-did-you-render@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@welldone-software/why-did-you-render/-/why-did-you-render-3.2.0.tgz#cce1cdb6c20ba1c5f9e7d34f90e63cdcaa460347" + integrity sha512-88QQs6tmB6DhK3yeLiY3KYWVubIKH3GOhn7YQvzsX30AatZnKH/RTER/oLRlPgWGJmpXLTzcl5zEBetsXqmYUQ== dependencies: lodash "^4" @@ -2842,17 +2869,12 @@ ajv-errors@^1.0.0: resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== -ajv-keywords@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" - integrity sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I= - ajv-keywords@^3.1.0: version "3.4.0" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.0.tgz#4b831e7b531415a7cc518cd404e73f6193c6349d" integrity sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw== -ajv@^5.1.1, ajv@^5.2.3, ajv@^5.3.0: +ajv@^5.1.1: version "5.5.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU= @@ -2919,7 +2941,7 @@ ansi-styles@^2.2.1: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= -ansi-styles@^3.1.0, ansi-styles@^3.2.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== @@ -3090,6 +3112,11 @@ arrify@^1.0.0, arrify@^1.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + asap@~2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" @@ -3227,13 +3254,13 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== -axios@^0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.0.tgz#32d53e4851efdc0a11993b6cd000789d70c05102" - integrity sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI= +axios@0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.0.tgz#8e09bff3d9122e133f7b8101c8fbdd00ed3d2ab8" + integrity sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ== dependencies: - follow-redirects "^1.3.0" - is-buffer "^1.1.5" + follow-redirects "1.5.10" + is-buffer "^2.0.2" axobject-query@^2.0.2: version "2.0.2" @@ -4143,7 +4170,7 @@ babel-register@*, babel-register@^6.26.0: mkdirp "^0.5.1" source-map-support "^0.4.15" -babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.26.0: +babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= @@ -4805,13 +4832,6 @@ caller-callsite@^2.0.0: dependencies: callsites "^2.0.0" -caller-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" - integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8= - dependencies: - callsites "^0.2.0" - caller-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" @@ -4819,11 +4839,6 @@ caller-path@^2.0.0: dependencies: caller-callsite "^2.0.0" -callsites@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" - integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo= - callsites@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" @@ -4847,14 +4862,14 @@ camelcase-css@^2.0.1: resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== -camelcase-keys@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" - integrity sha1-oqpfsa9oh1glnDLBQUJteJI7m3c= +camelcase-keys@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.0.0.tgz#12a07a6f50189213c3e8626c4069e28b997d01d1" + integrity sha512-NW1C7M9/uDZlfDP0+pWv0yAtgni7AZ9bYKtWgIfJylNXUFfis2BxsX3lCVuZE12wtRePEfJjnG6T9CnMohEybw== dependencies: - camelcase "^4.1.0" - map-obj "^2.0.0" - quick-lru "^1.0.0" + camelcase "^5.3.1" + map-obj "^4.0.0" + quick-lru "^4.0.1" camelcase@^4.1.0: version "4.1.0" @@ -4930,15 +4945,6 @@ chai@4.2.0: pathval "^1.1.0" type-detect "^4.0.5" -chalk@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" - integrity sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q== - dependencies: - ansi-styles "^3.1.0" - escape-string-regexp "^1.0.5" - supports-color "^4.0.0" - chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -4979,11 +4985,6 @@ character-reference-invalid@^1.0.0: resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.2.tgz#21e421ad3d84055952dab4a43a04e73cd425d3ed" integrity sha512-7I/xceXfKyUJmSAn/jw8ve/9DyOP7XxufNYLI9Px7CmsKgEUaZLUTax6nZxGQtaoiZCjpu6cHPj20xC/vqRReQ== -chardet@^0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" - integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= - chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -5110,11 +5111,6 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" -circular-json@^0.3.1: - version "0.3.3" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" - integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== - class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -5196,6 +5192,15 @@ cliui@^4.0.0: strip-ansi "^4.0.0" wrap-ansi "^2.0.0" +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + clone-deep@^0.2.4: version "0.2.4" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.2.4.tgz#4e73dd09e9fb971cc38670c5dced9c1896481cc6" @@ -5406,7 +5411,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.4.7, concat-stream@^1.5.0, concat-stream@^1.5.1, concat-stream@^1.6.0: +concat-stream@^1.4.7, concat-stream@^1.5.0, concat-stream@^1.5.1: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -5599,11 +5604,24 @@ core-js@^3.0.1: resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.1.3.tgz#95700bca5f248f5f78c0ec63e784eca663ec4138" integrity sha512-PWZ+ZfuaKf178BIAg+CRsljwjIMRV8MY00CbZczkR6Zk5LfkSkjGoaab3+bqRQWVITNZxQB7TFYz+CFcyuamvA== +core-js@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.1.4.tgz#3a2837fc48e582e1ae25907afcd6cf03b0cc7a07" + integrity sha512-YNZN8lt82XIMLnLirj9MhKDFZHalwzzrL9YLt6eb0T5D0EDl4IQ90IGkua8mHbnxNrkj1d8hbdizMc0Qmg1WnQ== + core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= +corejs-upgrade-webpack-plugin@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/corejs-upgrade-webpack-plugin/-/corejs-upgrade-webpack-plugin-2.0.0.tgz#adc05c9db427d87062c981373d28d4d174ddffcd" + integrity sha512-EiVJMYjo8uVkaj0JdQnfCW+ZuGPdloCDCSNTDdxr7R/9T+WHCx/4u2Q9kCNNMDRoB02jpyZPzrX5GBWNXM+Smg== + dependencies: + resolve-from "^5.0.0" + webpack "^4.33.0" + cors@^2.8.1: version "2.8.5" resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" @@ -5730,7 +5748,7 @@ cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^5.0.1, cross-spawn@^5.1.0: +cross-spawn@^5.0.1: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= @@ -5792,7 +5810,25 @@ css-in-js-utils@^2.0.0: hyphenate-style-name "^1.0.2" isobject "^3.0.1" -css-loader@^2.1.0, css-loader@^2.1.1: +css-loader@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.0.0.tgz#bdd48a4921eefedf1f0a55266585944d4e5efc63" + integrity sha512-WR6KZuCkFbnMhRrGPlkwAA7SSCtwqPwpyXJAPhotYkYsc0mKU9n/fu5wufy4jl2WhBw9Ia8gUQMIp/1w98DuPw== + dependencies: + camelcase "^5.3.1" + cssesc "^3.0.0" + icss-utils "^4.1.1" + loader-utils "^1.2.3" + normalize-path "^3.0.0" + postcss "^7.0.17" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^3.0.2" + postcss-modules-scope "^2.1.0" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.0.0" + schema-utils "^1.0.0" + +css-loader@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-2.1.1.tgz#d8254f72e412bb2238bb44dd674ffbef497333ea" integrity sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w== @@ -6025,7 +6061,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8, debug@^2.6. dependencies: ms "2.0.0" -debug@3.1.0: +debug@3.1.0, debug@=3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== @@ -6427,16 +6463,6 @@ dom-serializer@0, dom-serializer@~0.1.0: domelementtype "^1.3.0" entities "^1.1.1" -dom-testing-library@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/dom-testing-library/-/dom-testing-library-4.1.1.tgz#615af61bee06db51bd8ecea60c113eba7cb49dda" - integrity sha512-PUsG7aY5BJxzulDrOtkksqudRRypcVQF6d4RGAyj9xNwallOFqrNLOyg2QW2mCpFaNVPELX8hBX/wbHQtOto/A== - dependencies: - "@babel/runtime" "^7.4.3" - "@sheerun/mutationobserver-shim" "^0.3.2" - pretty-format "^24.7.0" - wait-for-expect "^1.1.1" - dom-walk@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" @@ -6817,10 +6843,10 @@ eslint-module-utils@^2.4.0: debug "^2.6.8" pkg-dir "^2.0.0" -eslint-plugin-flowtype@3.10.1: - version "3.10.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-3.10.1.tgz#f83d4c9a4594b3444433c8efb1caf91dcc0be32a" - integrity sha512-TnwILo1XT5w6Fgz8j+NEqivmgsYJA7FYFnnE2jdXot/H7Pb9C2Fp+Tqdzb//O+PSVi5X2ureYqCCn7KDfon4iQ== +eslint-plugin-flowtype@3.10.3: + version "3.10.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-3.10.3.tgz#4a249e2fa98679d87cddbc00e22241e2466abe2e" + integrity sha512-b1OzI5drhiDmIG52jiZVR7IWQkiwN1vLD+VqvYuLnpzGBwfdw/mjdXz+qN7XN1IVKQ6pUSV0t4F9TxKoJNkpRA== dependencies: lodash "^4.17.11" @@ -6912,51 +6938,7 @@ eslint-visitor-keys@^1.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== -eslint@^4.0.0, eslint@^4.5.0: - version "4.19.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300" - integrity sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ== - dependencies: - ajv "^5.3.0" - babel-code-frame "^6.22.0" - chalk "^2.1.0" - concat-stream "^1.6.0" - cross-spawn "^5.1.0" - debug "^3.1.0" - doctrine "^2.1.0" - eslint-scope "^3.7.1" - eslint-visitor-keys "^1.0.0" - espree "^3.5.4" - esquery "^1.0.0" - esutils "^2.0.2" - file-entry-cache "^2.0.0" - functional-red-black-tree "^1.0.1" - glob "^7.1.2" - globals "^11.0.1" - ignore "^3.3.3" - imurmurhash "^0.1.4" - inquirer "^3.0.6" - is-resolvable "^1.0.0" - js-yaml "^3.9.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.4" - minimatch "^3.0.2" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.2" - pluralize "^7.0.0" - progress "^2.0.0" - regexpp "^1.0.1" - require-uncached "^1.0.3" - semver "^5.3.0" - strip-ansi "^4.0.0" - strip-json-comments "~2.0.1" - table "4.0.2" - text-table "~0.2.0" - -eslint@^5.16.0, eslint@^5.5.0: +eslint@^5.0.0, eslint@^5.16.0, eslint@^5.5.0: version "5.16.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== @@ -6998,7 +6980,7 @@ eslint@^5.16.0, eslint@^5.5.0: table "^5.2.3" text-table "^0.2.0" -espree@^3.5.2, espree@^3.5.4: +espree@^3.5.2: version "3.5.4" resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" integrity sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A== @@ -7695,15 +7677,6 @@ extend@^3.0.0, extend@~3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -external-editor@^2.0.4: - version "2.2.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" - integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A== - dependencies: - chardet "^0.4.0" - iconv-lite "^0.4.17" - tmp "^0.0.33" - external-editor@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" @@ -7870,14 +7843,6 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" -file-entry-cache@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" - integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E= - dependencies: - flat-cache "^1.2.1" - object-assign "^4.0.1" - file-entry-cache@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" @@ -7885,6 +7850,14 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" +file-loader@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.0.0.tgz#c3570783fefb6e1bc0978a856f4bf5825b966c2a" + integrity sha512-roAbL6IdSGczwfXxhMi6Zq+jD4IfUpL0jWHD7fvmjdOVb7xBfdRUHe4LpBgO23VtVK5AW1OlWZo0p34Jvx3iWg== + dependencies: + loader-utils "^1.2.2" + schema-utils "^1.0.0" + file-loader@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-3.0.1.tgz#f8e0ba0b599918b51adfe45d66d1e771ad560faa" @@ -7953,10 +7926,10 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" -final-form@4.13.1: - version "4.13.1" - resolved "https://registry.yarnpkg.com/final-form/-/final-form-4.13.1.tgz#5893b1fe490a36198b219b351eec135d7394cdcf" - integrity sha512-9bTIY68bKn6rIcyolFZlUqK1odlRXpi30C5CazJ5gUZpoMkeDAeb53FQ3gv37eX1zWtQtydgwD5ZAwZB5EGoGg== +final-form@4.15.0: + version "4.15.0" + resolved "https://registry.yarnpkg.com/final-form/-/final-form-4.15.0.tgz#8bce40c65138d0dd464c705880bbdc273320438a" + integrity sha512-A7pvzFAZ/mswLfU4pMKnB+otx3ttv8dO6/X+gWqhUSP+EpNsMenY88PHuGNJ9bIkhYcwF1ErXB8b2E2EMHKBLg== dependencies: "@babel/runtime" "^7.3.1" @@ -8038,6 +8011,14 @@ find-up@^4.0.0: dependencies: locate-path "^5.0.0" +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + findup-sync@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" @@ -8048,16 +8029,6 @@ findup-sync@^2.0.0: micromatch "^3.0.4" resolve-dir "^1.0.1" -flat-cache@^1.2.1: - version "1.3.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f" - integrity sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg== - dependencies: - circular-json "^0.3.1" - graceful-fs "^4.1.2" - rimraf "~2.6.2" - write "^0.2.1" - flat-cache@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" @@ -8072,10 +8043,10 @@ flatted@^2.0.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== -flow-bin@0.100.0: - version "0.100.0" - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.100.0.tgz#729902726658cfa0a81425d6401f9625cf9f5534" - integrity sha512-jcethhgrslBJukH7Z7883ohFFpzLrdsOEwHxvn5NwuTWbNaE71GAl55/PEBRJwYpDvYkRlqgcNkANTv0x5XjqA== +flow-bin@0.101.0: + version "0.101.0" + resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.101.0.tgz#c56fa0afb9c151eeba7954136e9066d408691063" + integrity sha512-2xriPEOSrGQklAArNw1ixoIUiLTWhIquYV26WqnxEu7IcXWgoZUcfJXufG9kIvrNbdwCNd5RBjTwbB0p6L6XaA== flush-write-stream@^1.0.0: version "1.1.1" @@ -8090,7 +8061,14 @@ focus-lock@^0.6.3: resolved "https://registry.yarnpkg.com/focus-lock/-/focus-lock-0.6.5.tgz#f6eb37832a9b1b205406175f5277396a28c0fce1" integrity sha512-i/mVBOoa9o+tl+u9owOJUF8k8L85odZNIsctB+JAK2HFT8jckiBwmk+3uydlm6FN8czgnkIwQtBv6yyAbrzXjw== -follow-redirects@^1.0.0, follow-redirects@^1.3.0: +follow-redirects@1.5.10: + version "1.5.10" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== + dependencies: + debug "=3.1.0" + +follow-redirects@^1.0.0: version "1.7.0" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.7.0.tgz#489ebc198dc0e7f64167bd23b03c4c19b5784c76" integrity sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ== @@ -8414,6 +8392,11 @@ get-caller-file@^1.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + get-func-name@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" @@ -8438,10 +8421,10 @@ get-params@^0.1.2: resolved "https://registry.yarnpkg.com/get-params/-/get-params-0.1.2.tgz#bae0dfaba588a0c60d7834c0d8dc2ff60eeef2fe" integrity sha1-uuDfq6WIoMYNeDTA2Nwv9g7u8v4= -get-stdin@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398" - integrity sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g= +get-stdin@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" + integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ== get-stream@^2.2.0: version "2.3.1" @@ -8562,15 +8545,15 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@~7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@~7.0.6: - version "7.0.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a" - integrity sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo= +glob@^7.1.4: + version "7.1.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.2" + minimatch "^3.0.4" once "^1.3.0" path-is-absolute "^1.0.0" @@ -8618,7 +8601,7 @@ global@^4.3.0, global@^4.3.2, global@~4.3.0: min-document "^2.19.0" process "~0.5.1" -globals@^11.0.1, globals@^11.1.0, globals@^11.7.0: +globals@^11.1.0, globals@^11.7.0: version "11.11.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e" integrity sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw== @@ -9201,7 +9184,7 @@ iconv-lite@0.4.23: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -9213,6 +9196,13 @@ icss-replace-symbols@^1.1.0: resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= +icss-utils@^4.0.0, icss-utils@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" + integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== + dependencies: + postcss "^7.0.14" + icss-utils@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.0.tgz#339dbbffb9f8729a243b701e1c29d4cc58c52f0e" @@ -9249,7 +9239,7 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" -ignore@^3.2.7, ignore@^3.3.3, ignore@^3.3.5: +ignore@^3.3.5: version "3.3.10" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== @@ -9259,6 +9249,11 @@ ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== +ignore@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.2.tgz#e28e584d43ad7e92f96995019cc43b9e1ac49558" + integrity sha512-vdqWBp7MyzdmHkkRWV5nY+PfGRbYbahfuvsBCh277tq+w9zyNi7h5CYJCK0kmzti9kU+O/cB7sE8HvKv6aXAKQ== + immediate@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c" @@ -9330,10 +9325,10 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= -indent-string@^3.1.0, indent-string@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" - integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== indexes-of@^1.0.1: version "1.0.1" @@ -9395,26 +9390,6 @@ inquirer@6.2.2: strip-ansi "^5.0.0" through "^2.3.6" -inquirer@^3.0.6: - version "3.3.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" - integrity sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ== - dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.0" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^2.0.4" - figures "^2.0.0" - lodash "^4.3.0" - mute-stream "0.0.7" - run-async "^2.2.0" - rx-lite "^4.0.8" - rx-lite-aggregates "^4.0.8" - string-width "^2.1.0" - strip-ansi "^4.0.0" - through "^2.3.6" - inquirer@^6.2.0, inquirer@^6.2.2: version "6.3.1" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.3.1.tgz#7a413b5e7950811013a3db491c61d1f3b776e8e7" @@ -9545,7 +9520,7 @@ is-buffer@^1.0.2, is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-buffer@^2.0.0: +is-buffer@^2.0.0, is-buffer@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.3.tgz#4ecf3fcf749cbd1e472689e109ac66261a25e725" integrity sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw== @@ -10382,7 +10357,7 @@ js-tokens@^3.0.2: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= -js-yaml@^3.13.0, js-yaml@^3.9.0, js-yaml@^3.9.1: +js-yaml@^3.13.0, js-yaml@^3.9.0: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== @@ -10961,7 +10936,7 @@ loader-runner@^2.3.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@1.2.3, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: +loader-utils@1.2.3, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.2, loader-utils@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== @@ -11083,7 +11058,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@4.17.11, lodash@>4.17.4, "lodash@>=3.5 <5", lodash@^4, lodash@^4.0.1, lodash@^4.1.0, lodash@^4.11.2, lodash@^4.15.0, lodash@^4.17.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0: +lodash@4.17.11, lodash@>4.17.4, "lodash@>=3.5 <5", lodash@^4, lodash@^4.0.1, lodash@^4.1.0, lodash@^4.11.2, lodash@^4.15.0, lodash@^4.17.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== @@ -11207,7 +11182,7 @@ make-error@^1.3.4: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== -make-plural@^4.1.1: +make-plural@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/make-plural/-/make-plural-4.3.0.tgz#f23de08efdb0cac2e0c9ba9f315b0dff6b4c2735" integrity sha512-xTYd4JVHpSCW+aqDof6w/MebaMVNTVYBZhbB/vi513xXdiPT92JMVCo0Jq8W2UZnzYRFeVbQiQ+I25l13JuKvA== @@ -11238,10 +11213,10 @@ map-cache@^0.2.2: resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= -map-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" - integrity sha1-plzSkIepJZi4eRJXpSPgISIqwfk= +map-obj@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.1.0.tgz#b91221b542734b9f14256c0132c897c5d7256fd5" + integrity sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g== map-or-similar@^1.5.0: version "1.5.0" @@ -11420,21 +11395,24 @@ merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2.3.2: rlp "^2.0.0" semaphore ">=1.0.1" -messageformat-parser@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/messageformat-parser/-/messageformat-parser-1.1.0.tgz#13ba2250a76bbde8e0fca0dbb3475f95c594a90a" - integrity sha512-Hwem6G3MsKDLS1FtBRGIs8T50P1Q00r3srS6QJePCFbad9fq0nYxwf3rnU2BreApRGhmpKMV7oZI06Sy1c9TPA== +messageformat-formatters@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/messageformat-formatters/-/messageformat-formatters-2.0.0.tgz#bf4e1c4f924c3e35e070617744a5bbe513303d60" + integrity sha512-0AhoocUMk5CFKvqTubLfR6xKcoYAnbVFEMzXe2oNetLG0zlEHLg+gq4NQ3bBMy6T2qaOJRLjF2ZBT4Wzeof02A== -messageformat@^1.0.2: - version "1.1.1" - resolved "https://registry.yarnpkg.com/messageformat/-/messageformat-1.1.1.tgz#ceaa2e6c86929d4807058275a7372b1bd963bdf6" - integrity sha512-Q0uXcDtF5pEZsVSyhzDOGgZZK6ykN79VY9CwU3Nv0gsqx62BjdJW0MT+63UkHQ4exe3HE33ZlxR2/YwoJarRTg== +messageformat-parser@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/messageformat-parser/-/messageformat-parser-4.1.1.tgz#665c70393f7b9b55a666ab27f6503ce0b5beeb1f" + integrity sha512-g5JfN4P58rrx0YVYo4S/tT23cYYm3NNeJLm2F2hhcFq1O1xieVGTssHa1QWMYeHCulTJ/1V7EMkOtItJa9LFUg== + +messageformat@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/messageformat/-/messageformat-2.2.1.tgz#8afb70bbb2ef43f43c49a7af3e1256847b2a6be0" + integrity sha512-yMeuqLBgmn2IFqy51xKMeuQQYK/SLVX4mqT51VaaVp2bCOEaYs2/4qN5mSnVTvkMdDNvt7YwGw4wpGR0WjeT6A== dependencies: - glob "~7.0.6" - make-plural "^4.1.1" - messageformat-parser "^1.1.0" - nopt "~3.0.6" - reserved-words "^0.1.2" + make-plural "^4.3.0" + messageformat-formatters "^2.0.0" + messageformat-parser "^4.1.1" methods@~1.1.2: version "1.1.2" @@ -11984,13 +11962,6 @@ nopt@~1.0.10: dependencies: abbrev "1" -nopt@~3.0.6: - version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= - dependencies: - abbrev "1" - normalize-package-data@^2.3.2: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -12364,7 +12335,7 @@ os-locale@^2.0.0: lcid "^1.0.0" mem "^1.1.0" -os-locale@^3.0.0: +os-locale@^3.0.0, os-locale@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== @@ -12659,6 +12630,11 @@ path-exists@^3.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -12793,11 +12769,6 @@ pkg-up@2.0.0: dependencies: find-up "^2.1.0" -pluralize@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" - integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== - pn@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" @@ -13008,6 +12979,16 @@ postcss-modules-local-by-default@^2.0.6: postcss-selector-parser "^6.0.0" postcss-value-parser "^3.3.1" +postcss-modules-local-by-default@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz#e8a6561be914aaf3c052876377524ca90dbb7915" + integrity sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ== + dependencies: + icss-utils "^4.1.1" + postcss "^7.0.16" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.0" + postcss-modules-scope@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.1.0.tgz#ad3f5bf7856114f6fcab901b0502e2a2bc39d4eb" @@ -13024,6 +13005,14 @@ postcss-modules-values@^2.0.0: icss-replace-symbols "^1.1.0" postcss "^7.0.6" +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== + dependencies: + icss-utils "^4.0.0" + postcss "^7.0.6" + postcss-normalize-charset@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" @@ -13152,7 +13141,7 @@ postcss-selector-parser@^5.0.0-rc.4: indexes-of "^1.0.1" uniq "^1.0.1" -postcss-selector-parser@^6.0.0: +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== @@ -13192,6 +13181,11 @@ postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0, postcss-value-parser@^ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== +postcss-value-parser@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.0.tgz#99a983d365f7b2ad8d0f9b8c3094926eab4b936d" + integrity sha512-ESPktioptiSUchCKgggAkzdmkgzKfmp0EU8jXH+5kbIUB+unr0Y4CY9SRMvibuvYUBjNh1ACLbxqYNpdTQOteQ== + postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.5, postcss@^7.0.6: version "7.0.14" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.14.tgz#4527ed6b1ca0d82c53ce5ec1a2041c2346bbd6e5" @@ -13201,7 +13195,7 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.5, source-map "^0.6.1" supports-color "^6.1.0" -postcss@^7.0.16: +postcss@^7.0.16, postcss@^7.0.17: version "7.0.17" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.17.tgz#4da1bdff5322d4a0acaab4d87f3e782436bad31f" integrity sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ== @@ -13239,47 +13233,46 @@ preserve@^0.2.0: resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= -prettier-eslint-cli@^4.7.1: - version "4.7.1" - resolved "https://registry.yarnpkg.com/prettier-eslint-cli/-/prettier-eslint-cli-4.7.1.tgz#3d103c494baa4e80b99ad53e2b9db7620101859f" - integrity sha512-hQbsGaEVz97oBBcKdsJ46khv0kOGkMyWrXzcFOXW6X8UuetZ/j0yDJkNJgUTVc6PVFbbzBXk+qgd5vos9qzXPQ== +prettier-eslint-cli@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/prettier-eslint-cli/-/prettier-eslint-cli-5.0.0.tgz#3d2334053f87413842c1729ecfb7886377bef89f" + integrity sha512-cei9UbN1aTrz3sQs88CWpvY/10PYTevzd76zoG1tdJ164OhmNTFRKPTOZrutVvscoQWzbnLKkviS3gu5JXwvZg== dependencies: - arrify "^1.0.1" - babel-runtime "^6.23.0" + arrify "^2.0.1" boolify "^1.0.0" - camelcase-keys "^4.1.0" - chalk "2.3.0" - common-tags "^1.4.0" - eslint "^4.5.0" - find-up "^2.1.0" - get-stdin "^5.0.1" - glob "^7.1.1" - ignore "^3.2.7" - indent-string "^3.1.0" + camelcase-keys "^6.0.0" + chalk "^2.4.2" + common-tags "^1.8.0" + core-js "^3.1.4" + eslint "^5.0.0" + find-up "^4.1.0" + get-stdin "^7.0.0" + glob "^7.1.4" + ignore "^5.1.2" lodash.memoize "^4.1.2" loglevel-colored-level-prefix "^1.0.0" - messageformat "^1.0.2" - prettier-eslint "^8.5.0" - rxjs "^5.3.0" - yargs "10.0.3" + messageformat "^2.2.1" + prettier-eslint "^9.0.0" + rxjs "^6.5.2" + yargs "^13.2.4" -prettier-eslint@^8.5.0: - version "8.8.2" - resolved "https://registry.yarnpkg.com/prettier-eslint/-/prettier-eslint-8.8.2.tgz#fcb29a48ab4524e234680797fe70e9d136ccaf0b" - integrity sha512-2UzApPuxi2yRoyMlXMazgR6UcH9DKJhNgCviIwY3ixZ9THWSSrUww5vkiZ3C48WvpFl1M1y/oU63deSy1puWEA== +prettier-eslint@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/prettier-eslint/-/prettier-eslint-9.0.0.tgz#b9a6ecb67c69be43cbd598addf7ff0b6753e6999" + integrity sha512-0dael2aMpMAxAwClnLi2Coc30v3BubsTX6clqseZ8NFCJZnbZlwxZGHHESYBlqTyN9lvZDHHv+XdeHW0fKhxJQ== dependencies: - babel-runtime "^6.26.0" + "@typescript-eslint/parser" "^1.10.2" common-tags "^1.4.0" + core-js "^3.1.4" dlv "^1.1.0" - eslint "^4.0.0" - indent-string "^3.2.0" + eslint "^5.0.0" + indent-string "^4.0.0" lodash.merge "^4.6.0" loglevel-colored-level-prefix "^1.0.0" prettier "^1.7.0" pretty-format "^23.0.1" require-relative "^0.8.7" - typescript "^2.5.1" - typescript-eslint-parser "^16.0.0" + typescript "^3.2.1" vue-eslint-parser "^2.0.2" prettier@^1.17.0: @@ -13308,7 +13301,7 @@ pretty-format@^23.0.1: ansi-regex "^3.0.0" ansi-styles "^3.2.0" -pretty-format@^24.7.0, pretty-format@^24.8.0: +pretty-format@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.8.0.tgz#8dae7044f58db7cb8be245383b565a963e3c27f2" integrity sha512-P952T7dkrDEplsR+TuY7q3VXDae5Sr7zmQb12JU/NDQa/3CH7/QW0yvqLcGN6jL+zQFKaoJcPc+yJxMTGmosqw== @@ -13604,10 +13597,10 @@ querystringify@^2.0.0: resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== -quick-lru@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" - integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= +quick-lru@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" + integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== raf-schd@^4.0.0: version "4.0.1" @@ -13772,7 +13765,7 @@ react-docgen@^4.1.0: node-dir "^0.1.10" recast "^0.17.3" -react-dom@^16.8.4, react-dom@^16.8.6: +react-dom@^16.8.3, react-dom@^16.8.6: version "16.8.6" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.6.tgz#71d6303f631e8b0097f56165ef608f051ff6e10f" integrity sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA== @@ -13816,13 +13809,13 @@ react-final-form-listeners@^1.0.2: dependencies: "@babel/runtime" "^7.1.5" -react-final-form@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/react-final-form/-/react-final-form-6.0.1.tgz#7be4e42b05db065c511d566c5db535f5c9081a1b" - integrity sha512-5neRoPwGIQY0Ty6sOm0XxmqAi7upxqVgFt8ZdFGNaHa3krLVtQe85hsWKO3H4tabYmmw9KQfTT+NMflsou3yZQ== +react-final-form@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/react-final-form/-/react-final-form-6.2.1.tgz#c674ba55bb1cadd407eaa3466db8257e63cf7a4b" + integrity sha512-U4sxiBw5BtKJXCOA5ezaX+0U/Rr3j4R3YwNEkfYsBfYHtJABfUNrTmxPqeX0hrvj+jdhsBTgMU/41jZddJ9p9A== dependencies: "@babel/runtime" "^7.4.5" - ts-essentials "^2.0.2" + ts-essentials "^2.0.8" react-focus-lock@^1.18.3: version "1.19.1" @@ -13845,10 +13838,10 @@ react-helmet-async@^1.0.2: react-fast-compare "2.0.4" shallowequal "1.1.0" -react-hot-loader@4.11.0: - version "4.11.0" - resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.11.0.tgz#6a453ae4a2c96a2bd780dd9a763e07e4df535fb7" - integrity sha512-EXwYmn+7bU9GgidYjx36IfX1t9/mZlKN8TuGXW6C4J2fEL6cKh4QUtpY/toZe9QBoKMot7UfksFKzl7Wq2qJ+w== +react-hot-loader@4.11.1: + version "4.11.1" + resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.11.1.tgz#2cabbd0f1c8a44c28837b86d6ce28521e6d9a8ac" + integrity sha512-HAC0UedYzM3mD+ZaQHesntFO0yi2ftOV4ZMMRTj43E4GvW5sQqYTPvur+6J7EaH3MDr/RqjDKXyCqKepV8+y7w== dependencies: fast-levenshtein "^2.0.6" global "^4.3.0" @@ -13934,12 +13927,12 @@ react-popper@^1.3.3: typed-styles "^0.0.7" warning "^4.0.2" -react-redux@7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.0.3.tgz#983c5a6de81cb1e696bd1c090ba826545f9170f1" - integrity sha512-vYZA7ftOYlDk3NetitsI7fLjryt/widNl1SLXYvFenIpm7vjb4ryK0EeFrgn62usg5fYkyIAWNUPKnwWPevKLg== +react-redux@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.1.0.tgz#72af7cf490a74acdc516ea9c1dd80e25af9ea0b2" + integrity sha512-hyu/PoFK3vZgdLTg9ozbt7WF3GgX5+Yn3pZm5/96/o4UueXA+zj08aiSC9Mfj2WtD1bvpIb3C5yvskzZySzzaw== dependencies: - "@babel/runtime" "^7.4.3" + "@babel/runtime" "^7.4.5" hoist-non-react-statics "^3.3.0" invariant "^2.2.4" loose-envify "^1.4.0" @@ -14006,13 +13999,10 @@ react-syntax-highlighter@^8.0.1: prismjs "^1.8.4" refractor "^2.4.1" -react-testing-library@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/react-testing-library/-/react-testing-library-7.0.1.tgz#0cf113bb53a78599f018378f6854e91a52dbf205" - integrity sha512-doQkM3/xPcIm22x9jgTkGxU8xqXg4iWvM1WwbbQ7CI5/EMk3DhloYBwMyk+Ywtta3dIAIh9sC7llXoKovf3L+w== - dependencies: - "@babel/runtime" "^7.4.3" - dom-testing-library "^4.1.0" +react-testing-library@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/react-testing-library/-/react-testing-library-8.0.1.tgz#b3dd43bce3fa88423cf0a23292fb819023c227cc" + integrity sha512-Gq4JC9r3prA4hYwo7afcbHHMFckO29+5Nrh2KblAEPuK/DWaU0bJE1vtpAgLhzhY9bBirmcgjjIHljHEwGAXKw== react-textarea-autosize@^7.1.0: version "7.1.0" @@ -14052,7 +14042,7 @@ react-transition-group@^4.0.0: object-assign "^4.1.0" prop-types "^15.5.10" -react@^16.7.0, react@^16.8.4, react@^16.8.6: +react@^16.8.3, react@^16.8.6: version "16.8.6" resolved "https://registry.yarnpkg.com/react/-/react-16.8.6.tgz#ad6c3a9614fd3a4e9ef51117f54d888da01f2bbe" integrity sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw== @@ -14395,11 +14385,6 @@ regexp.prototype.flags@^1.2.0: dependencies: define-properties "^1.1.2" -regexpp@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab" - integrity sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw== - regexpp@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" @@ -14588,19 +14573,16 @@ require-main-filename@^1.0.1: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= +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" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + require-relative@^0.8.7: version "0.8.7" resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de" integrity sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4= -require-uncached@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" - integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM= - dependencies: - caller-path "^0.1.0" - resolve-from "^1.0.0" - requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" @@ -14622,11 +14604,6 @@ reselect@^4.0.0: resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.0.0.tgz#f2529830e5d3d0e021408b246a206ef4ea4437f7" integrity sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA== -reserved-words@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/reserved-words/-/reserved-words-0.1.2.tgz#00a0940f98cd501aeaaac316411d9adc52b31ab1" - integrity sha1-AKCUD5jNUBrqqsMWQR2a3FKzGrE= - resize-observer-polyfill@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" @@ -14647,11 +14624,6 @@ resolve-dir@^1.0.0, resolve-dir@^1.0.1: expand-tilde "^2.0.0" global-modules "^1.0.0" -resolve-from@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" - integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY= - resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" @@ -14731,7 +14703,7 @@ rgba-regex@^1.0.0: resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= -rimraf@2, rimraf@2.6.3, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@~2.6.2: +rimraf@2, rimraf@2.6.3, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== @@ -14803,25 +14775,6 @@ rustbn.js@~0.2.0: resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== -rx-lite-aggregates@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" - integrity sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74= - dependencies: - rx-lite "*" - -rx-lite@*, rx-lite@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" - integrity sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ= - -rxjs@^5.3.0: - version "5.5.12" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" - integrity sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw== - dependencies: - symbol-observable "1.0.1" - rxjs@^6.4.0: version "6.4.0" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.4.0.tgz#f3bb0fe7bda7fb69deac0c16f17b50b0b8790504" @@ -14829,6 +14782,13 @@ rxjs@^6.4.0: dependencies: tslib "^1.9.0" +rxjs@^6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" + integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg== + dependencies: + tslib "^1.9.0" + safe-buffer@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" @@ -15343,13 +15303,6 @@ slash@^2.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== -slice-ansi@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" - integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg== - dependencies: - is-fullwidth-code-point "^2.0.0" - slice-ansi@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" @@ -15749,7 +15702,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string-width@^3.0.0: +string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== @@ -15918,13 +15871,6 @@ supports-color@^2.0.0: resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= -supports-color@^4.0.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" - integrity sha1-vnoN5ITexcXN34s9WRJQRJEvY1s= - dependencies: - has-flag "^2.0.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" @@ -16001,11 +15947,6 @@ swarm-js@^0.1.39: tar "^4.0.2" xhr-request-promise "^0.1.2" -symbol-observable@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" - integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ= - symbol-observable@^1.0.2, symbol-observable@^1.0.3, symbol-observable@^1.0.4, symbol-observable@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -16023,18 +15964,6 @@ symbol.prototype.description@^1.0.0: dependencies: has-symbols "^1.0.0" -table@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" - integrity sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA== - dependencies: - ajv "^5.2.3" - ajv-keywords "^2.1.0" - chalk "^2.1.0" - lodash "^4.17.4" - slice-ansi "1.0.0" - string-width "^2.1.1" - table@^5.2.3: version "5.2.3" resolved "https://registry.yarnpkg.com/table/-/table-5.2.3.tgz#cde0cc6eb06751c009efab27e8c820ca5b67b7f2" @@ -16206,7 +16135,7 @@ test-exclude@^5.0.0: read-pkg-up "^4.0.0" require-main-filename "^1.0.1" -text-table@0.2.0, text-table@^0.2.0, 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 sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= @@ -16437,14 +16366,14 @@ truffle-artifactor@^2.1.2: truffle-contract "^2.0.3" truffle-contract-schema "^0.0.5" -truffle-artifactor@^4.0.18: - version "4.0.18" - resolved "https://registry.yarnpkg.com/truffle-artifactor/-/truffle-artifactor-4.0.18.tgz#c0d22f12d2289b3db9b39ca30960db96bff0b7ac" - integrity sha512-C/DYSmDMgWvv/6n/hd6djGbvKNUVK8elCoyhV9jxOQngqMeREvZ/fxGbq3XYptasSVyDRSi178je1JP7wwDUkA== +truffle-artifactor@^4.0.19: + version "4.0.19" + resolved "https://registry.yarnpkg.com/truffle-artifactor/-/truffle-artifactor-4.0.19.tgz#2d5d2d19dcb09fab3b155f062b88ab024032d02d" + integrity sha512-IFfDt29yuCRUj/SRmUktgePmZO9rDpWsfTe/kGBGikzCkXWyWiHEoNSQxuo3xLtlZrxX7xOjxPqdZ+H9DhGvTw== dependencies: fs-extra "6.0.1" lodash "4.17.11" - truffle-contract-schema "^3.0.10" + truffle-contract-schema "^3.0.11" truffle-blockchain-utils@^0.0.10: version "0.0.10" @@ -16551,10 +16480,10 @@ truffle-contract-schema@^2.0.1: crypto-js "^3.1.9-1" debug "^3.1.0" -truffle-contract-schema@^3.0.10: - version "3.0.10" - resolved "https://registry.yarnpkg.com/truffle-contract-schema/-/truffle-contract-schema-3.0.10.tgz#bb168f25be32479d2cf46a1dde36f425ac8e9522" - integrity sha512-YHxCiAoqk2iamJfaFWfkm7WNhvx75vsOdRjrqlpSzM10M0MO42V88SozHsfcv0h0i7riLO5Eht3EjDJuc5v4iA== +truffle-contract-schema@^3.0.11: + version "3.0.11" + resolved "https://registry.yarnpkg.com/truffle-contract-schema/-/truffle-contract-schema-3.0.11.tgz#202f6982b51bcad032b7ff2a8d5837853fb69301" + integrity sha512-YcgSOlrufi6VtnXg8LU5Ma7JHzHpnZQxzB1PSWnb+JOTc1nL02XRoCWTgEO7PkJnFgf6yrwOpW0ajSwHk3zQ7Q== dependencies: ajv "^6.10.0" crypto-js "^3.1.9-1" @@ -16584,15 +16513,15 @@ truffle-contract@4.0.0-next.0: web3-eth-abi "1.0.0-beta.35" web3-utils "1.0.0-beta.35" -truffle-contract@4.0.19, truffle-contract@^4.0.19: - version "4.0.19" - resolved "https://registry.yarnpkg.com/truffle-contract/-/truffle-contract-4.0.19.tgz#986070a7d301e74e69f6f5d6c02ad57dcae08f3a" - integrity sha512-3tIDnpNOBEbjJO2VIzBfH4IhXAGXlk/FnrCl52NBDidBa++CVSQVLlgRigqw1UAIX5YN4MeIS5eC/tojee0BRQ== +truffle-contract@4.0.20, truffle-contract@^4.0.20: + version "4.0.20" + resolved "https://registry.yarnpkg.com/truffle-contract/-/truffle-contract-4.0.20.tgz#319a2d8de85daf9c3bc07d4e6312f4293140d2d0" + integrity sha512-enj4ymJCSBWMPLI6GPpeQVqA/+5DPL4bwIeq6BcvFPBmsPw2jRyMJUrK05/PuuANVtwI9bBoOJlh1S9uu8lEdA== dependencies: bignumber.js "^7.2.1" ethers "^4.0.0-beta.1" truffle-blockchain-utils "^0.0.10" - truffle-contract-schema "^3.0.10" + truffle-contract-schema "^3.0.11" truffle-error "^0.0.5" truffle-interface-adapter "^0.1.6" web3 "1.0.0-beta.37" @@ -16610,10 +16539,10 @@ truffle-contract@^2.0.3: truffle-contract-schema "^0.0.5" web3 "^0.20.1" -truffle-core@^5.0.21: - version "5.0.21" - resolved "https://registry.yarnpkg.com/truffle-core/-/truffle-core-5.0.21.tgz#455103886d7a49d457a070a78c0cadfb5a14ecf5" - integrity sha512-ejXYrLfWYPNslj2k2HxC8QFmT73r3zSLDn6Y4J2YJbZxTlo9CHBxbcYjky0gMyzIIiiBVmQVS3gILL3QoMXZYA== +truffle-core@^5.0.22: + version "5.0.22" + resolved "https://registry.yarnpkg.com/truffle-core/-/truffle-core-5.0.22.tgz#6565d4f4ce0f42f693a80a4b70e8a5091f2d8a4f" + integrity sha512-XkNAw4Z9L6rdQkyTQHQsC+xDHUdESp3jUX9M6VO95V8xBuElAhgqO64sV6JWLBWY1YkISjFNagZ0X6H7U5yBug== dependencies: app-module-path "^2.2.0" async "2.6.1" @@ -16632,7 +16561,6 @@ truffle-core@^5.0.21: fs-extra "6.0.1" ganache-core "2.5.5" hdkey "^1.1.0" - lodash "4.17.11" mkdirp "^0.5.1" mocha "5.2.0" node-dir "0.1.17" @@ -16644,26 +16572,26 @@ truffle-core@^5.0.21: source-map-support "^0.5.3" spawn-args "^0.1.0" temp "^0.8.3" - truffle-artifactor "^4.0.18" + truffle-artifactor "^4.0.19" truffle-box "^1.0.27" truffle-compile "^4.1.0" truffle-config "^1.1.13" - truffle-contract "^4.0.19" + truffle-contract "^4.0.20" truffle-contract-sources "^0.1.4" truffle-debug-utils "^1.0.18" - truffle-debugger "^5.0.14" - truffle-deployer "^3.0.20" + truffle-debugger "^5.0.15" + truffle-deployer "^3.0.21" truffle-error "^0.0.5" truffle-expect "^0.0.9" truffle-init "^1.0.7" truffle-interface-adapter "^0.1.6" - truffle-migrate "^3.0.20" + truffle-migrate "^3.0.21" truffle-provider "^0.1.10" truffle-provisioner "^0.1.5" truffle-require "^2.0.13" truffle-resolver "^5.0.14" truffle-solidity-utils "^1.2.3" - truffle-workflow-compile "^2.0.18" + truffle-workflow-compile "^2.0.19" universal-analytics "^0.4.17" web3 "1.0.0-beta.37" xregexp "^4.2.4" @@ -16678,10 +16606,10 @@ truffle-debug-utils@^1.0.18: debug "^4.1.0" node-dir "0.1.17" -truffle-debugger@^5.0.14: - version "5.0.14" - resolved "https://registry.yarnpkg.com/truffle-debugger/-/truffle-debugger-5.0.14.tgz#a1247884677d254a293bfe068dfc237404f1b520" - integrity sha512-KhptoR19PA3rbjVY3wVJbV8mX8U7uBMACDnyUYDeY4O8ns7GtBjADnWj62RfhOszHrDOBbcc6qUDPee6DL8IuA== +truffle-debugger@^5.0.15: + version "5.0.15" + resolved "https://registry.yarnpkg.com/truffle-debugger/-/truffle-debugger-5.0.15.tgz#4571eaf6df9810db0a5e3182e25bf6ad7e7d9c2a" + integrity sha512-RgUkOprpWKcB7RuuHV3ADT89Rn2YexlAwzQDC+Jom5J8/Jo1dwb4dTkEWowAMXnDbjz9oV4kjq69A74rFJkEMw== dependencies: bn.js "^4.11.8" debug "^4.1.0" @@ -16693,17 +16621,17 @@ truffle-debugger@^5.0.14: remote-redux-devtools "^0.5.12" reselect-tree "^1.3.1" truffle-code-utils "^1.2.4" - truffle-decode-utils "^1.0.13" - truffle-decoder "^3.0.4" + truffle-decode-utils "^1.0.14" + truffle-decoder "^3.0.5" truffle-expect "^0.0.9" truffle-solidity-utils "^1.2.3" web3 "1.0.0-beta.37" web3-eth-abi "1.0.0-beta.37" -truffle-decode-utils@^1.0.13: - version "1.0.13" - resolved "https://registry.yarnpkg.com/truffle-decode-utils/-/truffle-decode-utils-1.0.13.tgz#901171be197e7e2d0d007d794ac50389c9a39f76" - integrity sha512-QZJ+gl5/iak68rqsyYlJx6s6UyJ6oRfevLK8GnsGQQWRFbu5w7f5GABevBDLr6L/X/hksD0qKYyG9qf3SixJyw== +truffle-decode-utils@^1.0.14: + version "1.0.14" + resolved "https://registry.yarnpkg.com/truffle-decode-utils/-/truffle-decode-utils-1.0.14.tgz#25784462145e696d8cd1534ab788e67e189a2a09" + integrity sha512-Ue1k5nNE/Tj38Ld9jH+/PWzw1q1PgDDMFT7yyqur8Yz/MQu9IT7NyYGx51+7LKWxF+yefyxL3c9GJ488Deic1g== dependencies: bn.js "^4.11.8" lodash.clonedeep "^4.5.0" @@ -16711,10 +16639,10 @@ truffle-decode-utils@^1.0.13: web3 "1.0.0-beta.37" web3-eth-abi "1.0.0-beta.52" -truffle-decoder@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/truffle-decoder/-/truffle-decoder-3.0.4.tgz#1e150c464bd3cde66267dc0615ca71b66039dc10" - integrity sha512-KyYxxz/NqeIqV/47UnJLUKZhCN54GVasAbPsgQWp3pa93LD3Dy+RMMtnqeifhAYIQk9nFM/QX5C4ygQEq2n+PA== +truffle-decoder@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/truffle-decoder/-/truffle-decoder-3.0.5.tgz#78d106eb50a3f032da963e0059a802bebafe618a" + integrity sha512-lY1ls6Hht9NK/UAzNYh9bfx5fDPBe7DvJGTwYm4TehwpaCsz67xTMrYN/Fr+6qFSxXXQ0lSW3X0VRQcbD5CDlA== dependencies: abi-decoder "^1.2.0" async-eventemitter "^0.2.4" @@ -16723,16 +16651,16 @@ truffle-decoder@^3.0.4: lodash.clonedeep "^4.5.0" lodash.isequal "^4.5.0" lodash.merge "^4.6.1" - truffle-decode-utils "^1.0.13" + truffle-decode-utils "^1.0.14" web3 "1.0.0-beta.37" -truffle-deployer@^3.0.20: - version "3.0.20" - resolved "https://registry.yarnpkg.com/truffle-deployer/-/truffle-deployer-3.0.20.tgz#733eafac4b8008a0fea47634bbf5032df1917cb9" - integrity sha512-CQ4yHZLO6rwfFWluB6hwoSiCTmrw1NDYNPO5zsNE+2tVSPxDJs8AzyZ7SZkSR42x4hxgTrIXoJUCJ/RnLb08EA== +truffle-deployer@^3.0.21: + version "3.0.21" + resolved "https://registry.yarnpkg.com/truffle-deployer/-/truffle-deployer-3.0.21.tgz#91819031bbfc5565b1fc7cd934ed3ef34c2df2ed" + integrity sha512-/3/qQCbPDyr/LtQGR46jP/7OHBNdvHzuWA/DaGSK7ghykhCF/SJ8Br80Ge/MGQm+wUc6NsOmNSNO/Ggeh9D3QQ== dependencies: emittery "^0.4.0" - truffle-contract "^4.0.19" + truffle-contract "^4.0.20" truffle-expect "^0.0.9" truffle-error@^0.0.3: @@ -16755,14 +16683,14 @@ truffle-expect@^0.0.9: resolved "https://registry.yarnpkg.com/truffle-expect/-/truffle-expect-0.0.9.tgz#d4f0e4aae06333c7c1e093c8f6c0355eb7f9b0c3" integrity sha512-8ifOoAiRVHsmM8vsn4xATsa4zifTsRA3vt7rsz1ryP2JE+uUqavqQficdh2uVJoa/DIid6O7iZ7J1HtQsHikOQ== -truffle-external-compile@^1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/truffle-external-compile/-/truffle-external-compile-1.0.10.tgz#0f51c14cd03eb80f127cf1d530cdbd85990e4e9c" - integrity sha512-wd4aVLDqSo5Db37vnMtwhaqNwAL3/HH6b/JRQln9xBYwR4RfecBpz70jS7s+hnpgNUnb0HL7FM+NX80a4CJhyA== +truffle-external-compile@^1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/truffle-external-compile/-/truffle-external-compile-1.0.11.tgz#3139a2d75c139086e3d31d5c23c6367bac15f6d0" + integrity sha512-s253KcXnd/Tzi+AZRWtD42GiMY8TKVwJt6WBQhFoXcC5IkwRAKOoBFNrG9mnoUB2hNv5Mopom5pYU9AhTepH9w== dependencies: debug "^4.1.0" glob "^7.1.2" - truffle-contract-schema "^3.0.10" + truffle-contract-schema "^3.0.11" truffle-expect "^0.0.9" web3-utils "1.0.0-beta.37" @@ -16804,16 +16732,16 @@ truffle-interface-adapter@^0.1.6: bn.js "^4.11.8" web3 "1.0.0-beta.37" -truffle-migrate@^3.0.20: - version "3.0.20" - resolved "https://registry.yarnpkg.com/truffle-migrate/-/truffle-migrate-3.0.20.tgz#59aca27e2fd29d5a03e7523953894711b5fe7a0b" - integrity sha512-yChaHVBLqaVQyMobgqHuSHnM/79NOLof6bYWtqXvX53hZq3e5wvaMX0XwRtWoHfzrSEGMKqL2lAgXAfHDOBNLg== +truffle-migrate@^3.0.21: + version "3.0.21" + resolved "https://registry.yarnpkg.com/truffle-migrate/-/truffle-migrate-3.0.21.tgz#db45f4345be13a58fb8e6008c2f8a5eea8be4ca3" + integrity sha512-SgdEYSTyIip/E3Jn5q8gKHiY6VYciNsppQQvfKroYJguIoWO3l0KqyFjJ5ObZphsyPYYgQwJqYOFOSHNmxiouQ== dependencies: async "2.6.1" emittery "^0.4.0" node-dir "0.1.17" truffle-config "^1.1.13" - truffle-deployer "^3.0.20" + truffle-deployer "^3.0.21" truffle-expect "^0.0.9" truffle-interface-adapter "^0.1.6" truffle-reporters "^1.0.10" @@ -16874,41 +16802,41 @@ truffle-resolver@^5.0.14: truffle-expect "^0.0.9" truffle-provisioner "^0.1.5" -truffle-solidity-loader@0.1.20: - version "0.1.20" - resolved "https://registry.yarnpkg.com/truffle-solidity-loader/-/truffle-solidity-loader-0.1.20.tgz#171a19cc767e777c40222a59444ab3d3f39a469e" - integrity sha512-VJC6uR5+65hDcHf0TgBAMxxQcpbgsFAMaK1zYXyUtFUXxPAPqhMLOHMf+4ARlQzs8n20zVv/y5wy3R0MOFxZ8Q== +truffle-solidity-loader@0.1.21: + version "0.1.21" + resolved "https://registry.yarnpkg.com/truffle-solidity-loader/-/truffle-solidity-loader-0.1.21.tgz#fec536debf5a8746004abdc4a2fd3976d73ec1e2" + integrity sha512-iIXNJ2WHczDxGQQagtMLN1DzKqhtOYBs6nArCKyhv8UfE2Cz2LNKl0OYzLIySGilTVTPgoQj8NLpJrx3g4N9+Q== dependencies: chalk "^1.1.3" find-up "^1.1.2" loader-utils "^1.1.0" schema-utils "^1.0.0" truffle-config "^1.1.13" - truffle-core "^5.0.21" + truffle-core "^5.0.22" truffle-solidity-utils@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/truffle-solidity-utils/-/truffle-solidity-utils-1.2.3.tgz#9e83c80fe5eeac1b9587f227af57e3feee5e183c" integrity sha512-Rf9KLx8BFTX6/1jxKuzWC5AegSMTN9uxLIKWP38oBAxHq/ilD64W+W5eyEqBxAXUYlAABj9jpOg4Pn5NRYtxOg== -truffle-workflow-compile@^2.0.18: - version "2.0.18" - resolved "https://registry.yarnpkg.com/truffle-workflow-compile/-/truffle-workflow-compile-2.0.18.tgz#6045070b1d0c05e44171bee9e8585dfcef82bb7f" - integrity sha512-zcYTLGC5tBCOEJViTUKNdtnBynNcZnXnvsG2DeLxhSNiYzFdcJY4sq//ZBcGNUzfcdoDj+ug0NHSdGCaADF+xA== +truffle-workflow-compile@^2.0.19: + version "2.0.19" + resolved "https://registry.yarnpkg.com/truffle-workflow-compile/-/truffle-workflow-compile-2.0.19.tgz#b3563389337bc983847096910eb99e5bdb3bda9b" + integrity sha512-VBAfdJhPyR0BGNP44enDXztsYO5zqKqwaKfLxmlQ/eaKHGfl0iqh8iNnUz9SysNTY2LchjNk9ase7vJPO8SCsg== dependencies: mkdirp "^0.5.1" - truffle-artifactor "^4.0.18" + truffle-artifactor "^4.0.19" truffle-compile "^4.1.0" truffle-compile-vyper "^1.0.17" truffle-config "^1.1.13" truffle-expect "^0.0.9" - truffle-external-compile "^1.0.10" + truffle-external-compile "^1.0.11" truffle-resolver "^5.0.14" -truffle@5.0.21: - version "5.0.21" - resolved "https://registry.yarnpkg.com/truffle/-/truffle-5.0.21.tgz#ecb25fb0097093a3b38eaf79d258889cfc5ad015" - integrity sha512-RF5TETOzp9WCTsSEZX0Cqtb9FQjJU288nO/VZX6melPSoDwmDOApqhjLZ5XNXNmVpUMo4Ds2TqA5xPX8D+HNsg== +truffle@5.0.22: + version "5.0.22" + resolved "https://registry.yarnpkg.com/truffle/-/truffle-5.0.22.tgz#a5a86a10317dfe1443cbcf25e4848aced8334733" + integrity sha512-6J/mgpgtA1m165WJrNmcRcsnaAjrMluGwTfoiG1pbpvsBoXkCL3nIVQaeYgRFOgDdrIJh1sInH+xFRhzkF/MBg== dependencies: app-module-path "^2.2.0" mocha "^4.1.0" @@ -16919,10 +16847,10 @@ tryer@^1.0.0: resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== -ts-essentials@^2.0.2: - version "2.0.7" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-2.0.7.tgz#f2bcc9d747289ffa8076727a7067f673f4e6d0f2" - integrity sha512-ptWcvcbgD7geud/+OVNPklmhpdsSZa7diUJk3ly/wJH2975h1ozzbGAyxH/kj3wjyZre08QE9lSfbLOZpngjaw== +ts-essentials@^2.0.8: + version "2.0.10" + resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-2.0.10.tgz#c44ebe16ee8089c6cbb9a423ed14f700dd4fe58e" + integrity sha512-QnjI4QUa+dgP6NU6+uicEN7HDHrsyX26tCyhysmowfnGrGhs+gY9i5fDmMDBF+Bu7X3/mHUlag9jvkqsPaXJiA== tslib@^1.9.0: version "1.9.3" @@ -17008,14 +16936,6 @@ typescript-compare@^0.0.2: dependencies: typescript-logic "^0.0.0" -typescript-eslint-parser@^16.0.0: - version "16.0.1" - resolved "https://registry.yarnpkg.com/typescript-eslint-parser/-/typescript-eslint-parser-16.0.1.tgz#b40681c7043b222b9772748b700a000b241c031b" - integrity sha512-IKawLTu4A2xN3aN/cPLxvZ0bhxZHILGDKTZWvWNJ3sLNhJ3PjfMEDQmR2VMpdRPrmWOadgWXRwjLBzSA8AGsaQ== - dependencies: - lodash.unescape "4.0.1" - semver "5.5.0" - typescript-logic@^0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/typescript-logic/-/typescript-logic-0.0.0.tgz#66ebd82a2548f2b444a43667bec120b496890196" @@ -17028,10 +16948,10 @@ typescript-tuple@^2.1.0: dependencies: typescript-compare "^0.0.2" -typescript@^2.5.1: - version "2.9.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c" - integrity sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w== +typescript@^3.2.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.2.tgz#a09e1dc69bc9551cadf17dba10ee42cf55e5d56c" + integrity sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA== typewise-core@^1.2, typewise-core@^1.2.0: version "1.2.0" @@ -17522,11 +17442,6 @@ w3c-hr-time@^1.0.1: dependencies: browser-process-hrtime "^0.1.2" -wait-for-expect@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/wait-for-expect/-/wait-for-expect-1.2.0.tgz#fdab6a26e87d2039101db88bff3d8158e5c3e13f" - integrity sha512-EJhKpA+5UHixduMBEGhTFuLuVgQBKWxkFbefOdj2bbk2/OpA5Opsc4aUTGmF+qJ+v3kTGxDRNYwKaT4j6g5n8Q== - walker@^1.0.7, walker@~1.0.5: version "1.0.7" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" @@ -18361,10 +18276,10 @@ webpack-bundle-analyzer@3.3.2: opener "^1.5.1" ws "^6.0.0" -webpack-cli@3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.3.tgz#8b7587dee369a838eb4722f6cfa711c779011e5f" - integrity sha512-/qBxTvsxZ7bIFQtSa08QRY5BZuiJb27cbJM/nzmgXg9NEaudP20D7BruKKIuWfABqWoMEJQcNYYq/OxxSbPHlg== +webpack-cli@3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.4.tgz#de27e281c48a897b8c219cb093e261d5f6afe44a" + integrity sha512-ubJGQEKMtBSpT+LiL5hXvn2GIOWiRWItR1DGUqJRhwRBeGhpRXjvF5f0erqdRJLErkfqS5/Ldkkedh4AL5Q1ZQ== dependencies: chalk "^2.4.1" cross-spawn "^6.0.5" @@ -18461,10 +18376,10 @@ webpack-sources@^1.1.0, webpack-sources@^1.3.0: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@4.33.0, webpack@^4.28.0, webpack@^4.32.0: - version "4.33.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.33.0.tgz#c30fc4307db432e5c5e3333aaa7c16a15a3b277e" - integrity sha512-ggWMb0B2QUuYso6FPZKUohOgfm+Z0sVFs8WwWuSH1IAvkWs428VDNmOlAxvHGTB9Dm/qOB/qtE5cRx5y01clxw== +webpack@4.34.0, webpack@^4.33.0: + version "4.34.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.34.0.tgz#a4c30129482f7b4ece4c0842002dedf2b56fab58" + integrity sha512-ry2IQy1wJjOefLe1uJLzn5tG/DdIKzQqNlIAd2L84kcaADqNvQDTBlo8UcCNyDaT5FiaB+16jhAkb63YeG3H8Q== dependencies: "@webassemblyjs/ast" "1.8.5" "@webassemblyjs/helper-module-context" "1.8.5" @@ -18650,6 +18565,15 @@ wrap-ansi@^2.0.0: string-width "^1.0.1" strip-ansi "^3.0.1" +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -18680,13 +18604,6 @@ write@1.0.3: dependencies: mkdirp "^0.5.1" -write@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" - integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c= - dependencies: - mkdirp "^0.5.1" - ws@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/ws/-/ws-5.1.1.tgz#1d43704689711ac1942fd2f283e38f825c4b8b95" @@ -18836,6 +18753,14 @@ yargs-parser@^11.1.1: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^13.1.0: + version "13.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" + integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs-parser@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" @@ -18843,13 +18768,6 @@ yargs-parser@^7.0.0: dependencies: camelcase "^4.1.0" -yargs-parser@^8.0.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950" - integrity sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ== - dependencies: - camelcase "^4.1.0" - yargs-parser@^9.0.2: version "9.0.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" @@ -18857,24 +18775,6 @@ yargs-parser@^9.0.2: dependencies: camelcase "^4.1.0" -yargs@10.0.3: - version "10.0.3" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.0.3.tgz#6542debd9080ad517ec5048fb454efe9e4d4aaae" - integrity sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw== - dependencies: - cliui "^3.2.0" - decamelize "^1.1.1" - find-up "^2.1.0" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^8.0.0" - yargs@11.1.0, yargs@^11.0.0: version "11.1.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" @@ -18911,6 +18811,23 @@ yargs@12.0.5, yargs@^12.0.2, yargs@^12.0.5: y18n "^3.2.1 || ^4.0.0" yargs-parser "^11.1.1" +yargs@^13.2.4: + version "13.2.4" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" + integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + os-locale "^3.1.0" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.0" + yargs@^8.0.2: version "8.0.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" From 7dd15740a0bc4986ee0dbcd224d20b978ff5eeca Mon Sep 17 00:00:00 2001 From: Mikhail Mikheev Date: Mon, 17 Jun 2019 14:35:58 +0400 Subject: [PATCH 10/19] add active styles for settings menu --- .../components/Settings/Threshold/index.jsx | 9 ++++ src/routes/safe/components/Settings/index.jsx | 45 ++++++++++--------- src/routes/safe/components/Settings/style.js | 7 ++- 3 files changed, 39 insertions(+), 22 deletions(-) create mode 100644 src/routes/safe/components/Settings/Threshold/index.jsx diff --git a/src/routes/safe/components/Settings/Threshold/index.jsx b/src/routes/safe/components/Settings/Threshold/index.jsx new file mode 100644 index 00000000..c354bd56 --- /dev/null +++ b/src/routes/safe/components/Settings/Threshold/index.jsx @@ -0,0 +1,9 @@ +import React from 'react' + +const Threshold = () => { + return
+ This will change the threshold +
+} + +export default Threshold \ No newline at end of file diff --git a/src/routes/safe/components/Settings/index.jsx b/src/routes/safe/components/Settings/index.jsx index 0b1360e8..d89a11a5 100644 --- a/src/routes/safe/components/Settings/index.jsx +++ b/src/routes/safe/components/Settings/index.jsx @@ -1,5 +1,6 @@ // @flow import * as React from 'react' +import cn from 'classnames' import { withStyles } from '@material-ui/core/styles' import Block from '~/components/layout/Block' import Col from '~/components/layout/Col' @@ -7,10 +8,12 @@ import Row from '~/components/layout/Row' import RemoveSafeModal from './RemoveSafeModal' import Paragraph from '~/components/layout/Paragraph' import Hairline from '~/components/layout/Hairline' +import Threshold from './Threshold' import { styles } from './style' type State = { showRemoveSafe: boolean, + menuOptionIndex: number, } type Props = { @@ -44,11 +47,7 @@ class Settings extends React.Component { render() { const { showRemoveSafe, menuOptionIndex } = this.state const { - classes, - granted, - etherScanLink, - safeAddress, - safeName, + classes, granted, etherScanLink, safeAddress, safeName, } = this.props return ( @@ -73,21 +72,33 @@ class Settings extends React.Component { - + Safe name {granted && ( - + Owners - + Required confirmations - + Modules @@ -97,18 +108,10 @@ class Settings extends React.Component { - {menuOptionIndex === 1 && ( -

To be done

- )} - {granted && menuOptionIndex === 2 && ( -

To be done

- )} - {granted && menuOptionIndex === 3 && ( -

To be done

- )} - {granted && menuOptionIndex === 4 && ( -

To be done

- )} + {menuOptionIndex === 1 &&

To be done

} + {granted && menuOptionIndex === 2 &&

To be done

} + {granted && menuOptionIndex === 3 && } + {granted && menuOptionIndex === 4 &&

To be done

}
diff --git a/src/routes/safe/components/Settings/style.js b/src/routes/safe/components/Settings/style.js index 7fb64f13..ce8eac3c 100644 --- a/src/routes/safe/components/Settings/style.js +++ b/src/routes/safe/components/Settings/style.js @@ -1,6 +1,6 @@ // @flow import { - sm, md, lg, border, + sm, md, lg, border, secondary, bolderFont, } from '~/theme/variables' export const styles = (theme: Object) => ({ @@ -22,6 +22,11 @@ export const styles = (theme: Object) => ({ alignItems: 'center', cursor: 'pointer', }, + active: { + backgroundColor: '#f4f4f9', + color: secondary, + fontWeight: bolderFont, + }, container: { padding: lg, }, From 523157e414e4d39ec4d2e44e85e2617efeb85dfb Mon Sep 17 00:00:00 2001 From: Mikhail Mikheev Date: Mon, 17 Jun 2019 16:02:02 +0400 Subject: [PATCH 11/19] Add threshold settings component (TODO Modal) --- src/components/layout/Block/index.jsx | 2 +- src/components/layout/Link/index.jsx | 2 +- src/components/layout/Row/index.jsx | 4 +- src/routes/safe/components/Layout.jsx | 2 + .../components/Settings/Threshold/index.jsx | 9 ---- .../Settings/ThresholdSettings/index.jsx | 43 +++++++++++++++++++ .../Settings/ThresholdSettings/style.js | 33 ++++++++++++++ src/routes/safe/components/Settings/index.jsx | 10 +++-- src/routes/safe/components/Settings/style.js | 2 +- 9 files changed, 90 insertions(+), 17 deletions(-) delete mode 100644 src/routes/safe/components/Settings/Threshold/index.jsx create mode 100644 src/routes/safe/components/Settings/ThresholdSettings/index.jsx create mode 100644 src/routes/safe/components/Settings/ThresholdSettings/style.js diff --git a/src/components/layout/Block/index.jsx b/src/components/layout/Block/index.jsx index a0dd2f0c..d56d9cbc 100644 --- a/src/components/layout/Block/index.jsx +++ b/src/components/layout/Block/index.jsx @@ -24,7 +24,7 @@ class Block extends PureComponent { const paddingStyle = padding ? capitalize(padding, 'padding') : undefined return (
- { children } + {children}
) } diff --git a/src/components/layout/Link/index.jsx b/src/components/layout/Link/index.jsx index 54ec0bb1..70437e80 100644 --- a/src/components/layout/Link/index.jsx +++ b/src/components/layout/Link/index.jsx @@ -13,7 +13,7 @@ type Props = { children: React.Node, color?: 'regular' | 'white', className?: string, - innerRef: React.ElementRef, + innerRef?: React.ElementRef, } const GnosisLink = ({ diff --git a/src/components/layout/Row/index.jsx b/src/components/layout/Row/index.jsx index 7e6f27bf..0d4433ae 100644 --- a/src/components/layout/Row/index.jsx +++ b/src/components/layout/Row/index.jsx @@ -1,6 +1,6 @@ // @flow import classNames from 'classnames/bind' -import React from 'react' +import * as React from 'react' import { capitalize } from '~/utils/css' import styles from './index.scss' @@ -27,7 +27,7 @@ const Row = ({ return (
- { children } + {children}
) } diff --git a/src/routes/safe/components/Layout.jsx b/src/routes/safe/components/Layout.jsx index fe148dca..80e23b7e 100644 --- a/src/routes/safe/components/Layout.jsx +++ b/src/routes/safe/components/Layout.jsx @@ -148,6 +148,8 @@ class Layout extends React.Component { safeAddress={address} safeName={name} etherScanLink={etherScanLink} + threshold={safe.threshold} + owners={safe.owners} /> )} diff --git a/src/routes/safe/components/Settings/Threshold/index.jsx b/src/routes/safe/components/Settings/Threshold/index.jsx deleted file mode 100644 index c354bd56..00000000 --- a/src/routes/safe/components/Settings/Threshold/index.jsx +++ /dev/null @@ -1,9 +0,0 @@ -import React from 'react' - -const Threshold = () => { - return
- This will change the threshold -
-} - -export default Threshold \ No newline at end of file diff --git a/src/routes/safe/components/Settings/ThresholdSettings/index.jsx b/src/routes/safe/components/Settings/ThresholdSettings/index.jsx new file mode 100644 index 00000000..4b03d8a5 --- /dev/null +++ b/src/routes/safe/components/Settings/ThresholdSettings/index.jsx @@ -0,0 +1,43 @@ +// @flow +import React from 'react' +import { withStyles } from '@material-ui/core/styles' +import Heading from '~/components/layout/Heading' +import Button from '~/components/layout/Button' +import Bold from '~/components/layout/Bold' +import Block from '~/components/layout/Block' +import Row from '~/components/layout/Row' +import Paragraph from '~/components/layout/Paragraph/index' +import { styles } from './style' + +type Props = { + owners: any, + threshold: number, + classes: Object, +} + +const ThresholdSettings = ({ owners, threshold, classes }: Props) => ( + + Required confirmations + + Any transaction over any daily limit +
+ {' '} +requires the confirmation of: +
+ + {threshold} + {' '} +out of + {owners.size} + {' '} +owners + + + + +
+) + +export default withStyles(styles)(ThresholdSettings) diff --git a/src/routes/safe/components/Settings/ThresholdSettings/style.js b/src/routes/safe/components/Settings/ThresholdSettings/style.js new file mode 100644 index 00000000..fe909dbf --- /dev/null +++ b/src/routes/safe/components/Settings/ThresholdSettings/style.js @@ -0,0 +1,33 @@ +// @flow +import { fontColor, lg, smallFontSize, md } from '~/theme/variables' + +export const styles = () => ({ + ownersText: { + fontSize: '26px', + color: '#8896b6', + '& b': { + color: fontColor, + }, + }, + container: { + height: '100%', + position: 'relative', + padding: lg, + }, + buttonRow: { + position: 'absolute', + bottom: '51px', + left: 0, + height: '51px', + width: '100%', + paddingRight: md, + display: 'flex', + justifyContent: 'flex-end', + borderTop: 'solid 1px #e4e8f1', + boxSizing: 'border-box', + }, + modifyBtn: { + height: '32px', + fontSize: smallFontSize, + }, +}) diff --git a/src/routes/safe/components/Settings/index.jsx b/src/routes/safe/components/Settings/index.jsx index d89a11a5..b8b7ca24 100644 --- a/src/routes/safe/components/Settings/index.jsx +++ b/src/routes/safe/components/Settings/index.jsx @@ -1,6 +1,7 @@ // @flow import * as React from 'react' import cn from 'classnames' +import { List } from 'immutable' import { withStyles } from '@material-ui/core/styles' import Block from '~/components/layout/Block' import Col from '~/components/layout/Col' @@ -8,7 +9,8 @@ import Row from '~/components/layout/Row' import RemoveSafeModal from './RemoveSafeModal' import Paragraph from '~/components/layout/Paragraph' import Hairline from '~/components/layout/Hairline' -import Threshold from './Threshold' +import type { Owner } from '~/routes/safe/store/models/owner' +import ThresholdSettings from './ThresholdSettings' import { styles } from './style' type State = { @@ -22,6 +24,8 @@ type Props = { etherScanLink: string, safeAddress: string, safeName: string, + owners: List, + threshold: number, } type Action = 'RemoveSafe' @@ -47,7 +51,7 @@ class Settings extends React.Component { render() { const { showRemoveSafe, menuOptionIndex } = this.state const { - classes, granted, etherScanLink, safeAddress, safeName, + classes, granted, etherScanLink, safeAddress, safeName, owners, threshold, } = this.props return ( @@ -110,7 +114,7 @@ class Settings extends React.Component { {menuOptionIndex === 1 &&

To be done

} {granted && menuOptionIndex === 2 &&

To be done

} - {granted && menuOptionIndex === 3 && } + {granted && menuOptionIndex === 3 && } {granted && menuOptionIndex === 4 &&

To be done

}
diff --git a/src/routes/safe/components/Settings/style.js b/src/routes/safe/components/Settings/style.js index ce8eac3c..2b6202b5 100644 --- a/src/routes/safe/components/Settings/style.js +++ b/src/routes/safe/components/Settings/style.js @@ -28,7 +28,7 @@ export const styles = (theme: Object) => ({ fontWeight: bolderFont, }, container: { - padding: lg, + height: '100%', }, message: { margin: `${sm} 0`, From 6fcab5ced6fbe6fb3b6a842fb6f0c1fed52bd9b1 Mon Sep 17 00:00:00 2001 From: Mikhail Mikheev Date: Mon, 17 Jun 2019 16:51:37 +0400 Subject: [PATCH 12/19] ThresholdModal wip --- .../ChangeThreshold/index.jsx | 45 +++++++++++ .../ChangeThreshold/style.js | 37 +++++++++ .../Settings/ThresholdSettings/index.jsx | 78 +++++++++++++------ .../Settings/ThresholdSettings/style.js | 4 +- 4 files changed, 139 insertions(+), 25 deletions(-) create mode 100644 src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/index.jsx create mode 100644 src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/style.js diff --git a/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/index.jsx b/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/index.jsx new file mode 100644 index 00000000..9c6e67b8 --- /dev/null +++ b/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/index.jsx @@ -0,0 +1,45 @@ +// @flow +import React from 'react' +import { List } from 'immutable' +import { withStyles } from '@material-ui/core/styles' +import Close from '@material-ui/icons/Close' +import IconButton from '@material-ui/core/IconButton' +import Hairline from '~/components/layout/Hairline' +import Paragraph from '~/components/layout/Paragraph' +import Button from '~/components/layout/Button' +import Block from '~/components/layout/Block' +import Row from '~/components/layout/Row' +import Col from '~/components/layout/Col' +import type { Owner } from '~/routes/safe/store/models/owner' +import { styles } from './style' + +type Props = { + onClose: () => void, + classes: Object, + threshold: number, + owners: List, +} + +const ChangeThreshold = ({ onClose, owners, threshold, classes, }: Props) => ( + + + + Remove owner + + + + + + + + + + + + + +) + +export default withStyles(styles)(ChangeThreshold) diff --git a/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/style.js b/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/style.js new file mode 100644 index 00000000..96e20c6b --- /dev/null +++ b/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/style.js @@ -0,0 +1,37 @@ +// @flow +import { lg, md, sm } from '~/theme/variables' + +export const styles = () => ({ + heading: { + padding: `${sm} ${lg}`, + justifyContent: 'flex-start', + boxSizing: 'border-box', + maxHeight: '75px', + }, + annotation: { + letterSpacing: '-1px', + color: '#a2a8ba', + marginRight: 'auto', + marginLeft: '20px', + }, + headingText: { + fontSize: '24px', + }, + closeIcon: { + height: '35px', + width: '35px', + }, + container: { + padding: `${md} ${lg}`, + }, + amount: { + marginLeft: sm, + }, + buttonRow: { + height: '84px', + justifyContent: 'center', + position: 'absolute', + bottom: 0, + width: '100%', + }, +}) diff --git a/src/routes/safe/components/Settings/ThresholdSettings/index.jsx b/src/routes/safe/components/Settings/ThresholdSettings/index.jsx index 4b03d8a5..d6cd64a4 100644 --- a/src/routes/safe/components/Settings/ThresholdSettings/index.jsx +++ b/src/routes/safe/components/Settings/ThresholdSettings/index.jsx @@ -1,43 +1,73 @@ // @flow -import React from 'react' +import React, { useState } from 'react' import { withStyles } from '@material-ui/core/styles' +import { List } from 'immutable' import Heading from '~/components/layout/Heading' import Button from '~/components/layout/Button' import Bold from '~/components/layout/Bold' import Block from '~/components/layout/Block' import Row from '~/components/layout/Row' -import Paragraph from '~/components/layout/Paragraph/index' +import Modal from '~/components/Modal' +import Paragraph from '~/components/layout/Paragraph' +import ChangeThreshold from './ChangeThreshold' +import type { Owner } from '~/routes/safe/store/models/owner' import { styles } from './style' type Props = { - owners: any, + owners: List, threshold: number, classes: Object, } -const ThresholdSettings = ({ owners, threshold, classes }: Props) => ( - - Required confirmations - - Any transaction over any daily limit -
- {' '} +const ThresholdSettings = ({ owners, threshold, classes }: Props) => { + const [isModalOpen, setModalOpen] = useState(false) + + const toggleModal = () => { + setModalOpen(prevOpen => !prevOpen) + } + + return ( + + + Required confirmations + + Any transaction over any daily limit +
+ {' '} requires the confirmation of: -
- - {threshold} - {' '} + + + {threshold} + {' '} out of - {owners.size} - {' '} + {owners.size} + {' '} owners - - - - -
-) +
+ + + +
+ + + + + ) +} export default withStyles(styles)(ThresholdSettings) diff --git a/src/routes/safe/components/Settings/ThresholdSettings/style.js b/src/routes/safe/components/Settings/ThresholdSettings/style.js index fe909dbf..350e71ac 100644 --- a/src/routes/safe/components/Settings/ThresholdSettings/style.js +++ b/src/routes/safe/components/Settings/ThresholdSettings/style.js @@ -1,5 +1,7 @@ // @flow -import { fontColor, lg, smallFontSize, md } from '~/theme/variables' +import { + fontColor, lg, smallFontSize, md, +} from '~/theme/variables' export const styles = () => ({ ownersText: { From 01e42af47fc4a967f92964274de3c4a5f9c03eb9 Mon Sep 17 00:00:00 2001 From: Mikhail Mikheev Date: Mon, 17 Jun 2019 17:56:02 +0400 Subject: [PATCH 13/19] ThresholdModal wip --- .../ChangeThreshold/index.jsx | 23 ++++++++++++------- .../ChangeThreshold/style.js | 6 ++--- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/index.jsx b/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/index.jsx index 9c6e67b8..cc21caf5 100644 --- a/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/index.jsx +++ b/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/index.jsx @@ -9,7 +9,6 @@ import Paragraph from '~/components/layout/Paragraph' import Button from '~/components/layout/Button' import Block from '~/components/layout/Block' import Row from '~/components/layout/Row' -import Col from '~/components/layout/Col' import type { Owner } from '~/routes/safe/store/models/owner' import { styles } from './style' @@ -20,23 +19,31 @@ type Props = { owners: List, } -const ChangeThreshold = ({ onClose, owners, threshold, classes, }: Props) => ( +const ChangeThreshold = ({ + onClose, owners, threshold, classes, +}: Props) => ( - - Remove owner + + Change required confirmations - - - + + + Wanna change threshold? + + + + diff --git a/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/style.js b/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/style.js index 96e20c6b..27c327d6 100644 --- a/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/style.js +++ b/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/style.js @@ -4,7 +4,7 @@ import { lg, md, sm } from '~/theme/variables' export const styles = () => ({ heading: { padding: `${sm} ${lg}`, - justifyContent: 'flex-start', + justifyContent: 'space-between', boxSizing: 'border-box', maxHeight: '75px', }, @@ -15,9 +15,9 @@ export const styles = () => ({ marginLeft: '20px', }, headingText: { - fontSize: '24px', + fontSize: '20px', }, - closeIcon: { + close: { height: '35px', width: '35px', }, From 473e2a769f9bc47e438b95e487df3a2a60ae26c1 Mon Sep 17 00:00:00 2001 From: mmv Date: Tue, 18 Jun 2019 12:51:47 +0400 Subject: [PATCH 14/19] change threshold modal wip --- package.json | 6 +-- .../ChangeThreshold/index.jsx | 42 ++++++++++++++++++- .../ChangeThreshold/style.js | 2 +- yarn.lock | 33 +++++++-------- 4 files changed, 58 insertions(+), 25 deletions(-) diff --git a/package.json b/package.json index 0fe5b806..724e9b3f 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "@gnosis.pm/util-contracts": "2.0.1", "@material-ui/core": "4.1.1", "@material-ui/icons": "4.2.0", - "@welldone-software/why-did-you-render": "3.2.0", + "@welldone-software/why-did-you-render": "3.2.1", "axios": "0.19.0", "bignumber.js": "9.0.0", "connected-react-router": "^6.3.1", @@ -92,7 +92,7 @@ "@storybook/react": "5.1.8", "autoprefixer": "9.6.0", "babel-core": "^7.0.0-bridge.0", - "babel-eslint": "^10.0.1", + "babel-eslint": "10.0.2", "babel-jest": "24.8.0", "babel-loader": "8.0.6", "babel-plugin-dynamic-import-node": "^2.2.0", @@ -136,7 +136,7 @@ "webpack": "4.34.0", "webpack-bundle-analyzer": "3.3.2", "webpack-cli": "3.3.4", - "webpack-dev-server": "3.7.1", + "webpack-dev-server": "3.7.2", "webpack-manifest-plugin": "^2.0.0-rc.2" } } diff --git a/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/index.jsx b/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/index.jsx index cc21caf5..7d8b1544 100644 --- a/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/index.jsx +++ b/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/index.jsx @@ -4,11 +4,18 @@ import { List } from 'immutable' import { withStyles } from '@material-ui/core/styles' import Close from '@material-ui/icons/Close' import IconButton from '@material-ui/core/IconButton' +import SelectField from '~/components/forms/SelectField' +import MenuItem from '@material-ui/core/MenuItem' +import { + composeValidators, minValue, mustBeInteger, required, +} from '~/components/forms/validator' +import Field from '~/components/forms/Field' import Hairline from '~/components/layout/Hairline' import Paragraph from '~/components/layout/Paragraph' import Button from '~/components/layout/Button' import Block from '~/components/layout/Block' import Row from '~/components/layout/Row' +import Col from '~/components/layout/Col' import type { Owner } from '~/routes/safe/store/models/owner' import { styles } from './style' @@ -32,9 +39,40 @@ const ChangeThreshold = ({ - + - Wanna change threshold? + + Every transaction outside any specified daily limits, needs to be confirmed by all specified owners. If no + daily limits are set, all owners will need to sign for transactions. + + + + Any transaction over any daily limit requires the confirmation of: + + + + + {[...Array(Number(owners.size))].map((x, index) => ( + + {index + 1} + + ))} + + + + + out of + {' '} + {owners.size} + {' '} + owner(s) + + diff --git a/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/style.js b/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/style.js index 27c327d6..9f7ff7ef 100644 --- a/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/style.js +++ b/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/style.js @@ -21,7 +21,7 @@ export const styles = () => ({ height: '35px', width: '35px', }, - container: { + modalContent: { padding: `${md} ${lg}`, }, amount: { diff --git a/yarn.lock b/yarn.lock index 4995e50c..6da0beb8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2409,10 +2409,10 @@ "@webassemblyjs/wast-parser" "1.8.5" "@xtuc/long" "4.2.2" -"@welldone-software/why-did-you-render@3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@welldone-software/why-did-you-render/-/why-did-you-render-3.2.0.tgz#cce1cdb6c20ba1c5f9e7d34f90e63cdcaa460347" - integrity sha512-88QQs6tmB6DhK3yeLiY3KYWVubIKH3GOhn7YQvzsX30AatZnKH/RTER/oLRlPgWGJmpXLTzcl5zEBetsXqmYUQ== +"@welldone-software/why-did-you-render@3.2.1": + version "3.2.1" + resolved "https://registry.yarnpkg.com/@welldone-software/why-did-you-render/-/why-did-you-render-3.2.1.tgz#9dc6fd8f8cb1640fbd386694290dbf9244a3a354" + integrity sha512-7rCVpFyE5Pnm0qyO8ByWfiFAKONvq6GAUUFuGjdJiOXnsAokdotu5EJ6VDBraV1I7UiVj9+TQRbwvrfsFKU0sw== dependencies: lodash "^4" @@ -3061,10 +3061,10 @@ babel-core@^7.0.0-bridge.0: resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== -babel-eslint@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.1.tgz#919681dc099614cd7d31d45c8908695092a1faed" - integrity sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ== +babel-eslint@10.0.2: + version "10.0.2" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.2.tgz#182d5ac204579ff0881684b040560fdcc1558456" + integrity sha512-UdsurWPtgiPgpJ06ryUnuaSXC2s0WoSZnQmEpbAH65XZSdwowgN5MvyP7e88nW07FYXv72erVtpBkxyDVKhH1Q== dependencies: "@babel/code-frame" "^7.0.0" "@babel/parser" "^7.0.0" @@ -10643,16 +10643,11 @@ loglevel-colored-level-prefix@^1.0.0: chalk "^1.1.3" loglevel "^1.4.1" -loglevel@^1.4.1: +loglevel@^1.4.1, loglevel@^1.6.3: version "1.6.3" resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.3.tgz#77f2eb64be55a404c9fd04ad16d57c1d6d6b1280" integrity sha512-LoEDv5pgpvWgPF4kNYuIp0qqSJVWak/dML0RY74xlzMZiT9w77teNAwKYKWBTYjlokMirg+o3jBwp+vlLrcfAA== -loglevel@^1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.2.tgz#668c77948a03dbd22502a3513ace1f62a80cc372" - integrity sha512-Jt2MHrCNdtIe1W6co3tF5KXGRkzF+TYffiQstfXa04mrss9IKXzAAXYWak8LbZseAQY03sH2GzMCMU0ZOUc9bg== - looper@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/looper/-/looper-2.0.0.tgz#66cd0c774af3d4fedac53794f742db56da8f09ec" @@ -17656,10 +17651,10 @@ webpack-dev-middleware@^3.7.0: range-parser "^1.2.1" webpack-log "^2.0.0" -webpack-dev-server@3.7.1: - version "3.7.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.7.1.tgz#ce10ca0ad6cf28b03e2ce9808684a8616039155d" - integrity sha512-GSBjjDMQ+uJI/Rcw/NfXDq5QpfE4HviafCy2SdbJ8Q22MwsnyoHd5TbWRfxgkbklsMx+ZNgWIKK+cB28ynjiDQ== +webpack-dev-server@3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.7.2.tgz#f79caa5974b7f8b63268ef5421222a8486d792f5" + integrity sha512-mjWtrKJW2T9SsjJ4/dxDC2fkFVUw8jlpemDERqV0ZJIkjjjamR2AbQlr3oz+j4JLhYCHImHnXZK5H06P2wvUew== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" @@ -17675,7 +17670,7 @@ webpack-dev-server@3.7.1: internal-ip "^4.3.0" ip "^1.1.5" killable "^1.0.1" - loglevel "^1.6.2" + loglevel "^1.6.3" opn "^5.5.0" p-retry "^3.0.1" portfinder "^1.0.20" From a6467c3c85a4dd2252c8c12b5029d98a96e22ff5 Mon Sep 17 00:00:00 2001 From: mmv Date: Tue, 18 Jun 2019 14:57:11 +0400 Subject: [PATCH 15/19] modal ui --- .../ChangeThreshold/index.jsx | 123 ++++++++++-------- .../Settings/ThresholdSettings/index.jsx | 2 + 2 files changed, 70 insertions(+), 55 deletions(-) diff --git a/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/index.jsx b/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/index.jsx index 7d8b1544..4660e621 100644 --- a/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/index.jsx +++ b/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/index.jsx @@ -10,6 +10,7 @@ import { composeValidators, minValue, mustBeInteger, required, } from '~/components/forms/validator' import Field from '~/components/forms/Field' +import GnoForm from '~/components/forms/GnoForm' import Hairline from '~/components/layout/Hairline' import Paragraph from '~/components/layout/Paragraph' import Button from '~/components/layout/Button' @@ -28,63 +29,75 @@ type Props = { const ChangeThreshold = ({ onClose, owners, threshold, classes, -}: Props) => ( - - - - Change required confirmations - - - - - - - - - - Every transaction outside any specified daily limits, needs to be confirmed by all specified owners. If no - daily limits are set, all owners will need to sign for transactions. +}: Props) => { + const handleSubmit = () => ({}) + + return ( + + + + Change required confirmations + + + - - Any transaction over any daily limit requires the confirmation of: + + + + {() => ( + + + + Every transaction outside any specified daily limits, needs to be confirmed by all specified owners. + If no daily limits are set, all owners will need to sign for transactions. + + + + + Any transaction over any daily limit requires the confirmation of: + + + + + + {[...Array(Number(owners.size))].map((x, index) => ( + + {index + 1} + + ))} + + + + + out of + {' '} + {owners.size} + {' '} +owner(s) + + + + + )} + + + + + + - - - - {[...Array(Number(owners.size))].map((x, index) => ( - - {index + 1} - - ))} - - - - - out of - {' '} - {owners.size} - {' '} - owner(s) - - - - - - - - - - -) + + ) +} export default withStyles(styles)(ChangeThreshold) diff --git a/src/routes/safe/components/Settings/ThresholdSettings/index.jsx b/src/routes/safe/components/Settings/ThresholdSettings/index.jsx index d6cd64a4..8077c616 100644 --- a/src/routes/safe/components/Settings/ThresholdSettings/index.jsx +++ b/src/routes/safe/components/Settings/ThresholdSettings/index.jsx @@ -64,6 +64,8 @@ owners > From 4b31e6130e50da51a56576c04d91cb3437c276e9 Mon Sep 17 00:00:00 2001 From: mmv Date: Tue, 18 Jun 2019 15:36:27 +0400 Subject: [PATCH 16/19] refactor createTRansaction method to accept safe settings txs wip --- src/routes/safe/components/Layout.jsx | 2 ++ .../ThresholdSettings/ChangeThreshold/index.jsx | 15 +++++++++++---- .../ThresholdSettings/ChangeThreshold/style.js | 2 +- .../Settings/ThresholdSettings/index.jsx | 16 +++++++++++++++- src/routes/safe/components/Settings/index.jsx | 12 ++++++++++-- .../safe/store/actions/createTransaction.js | 1 + 6 files changed, 40 insertions(+), 8 deletions(-) diff --git a/src/routes/safe/components/Layout.jsx b/src/routes/safe/components/Layout.jsx index 80e23b7e..d7c4ac96 100644 --- a/src/routes/safe/components/Layout.jsx +++ b/src/routes/safe/components/Layout.jsx @@ -18,6 +18,7 @@ import { sm, xs, secondary, smallFontSize, } from '~/theme/variables' import { copyToClipboard } from '~/utils/clipboard' +import type { Safe } from '~/routes/safe/store/models/safe' import Balances from './Balances' import Settings from './Settings' @@ -150,6 +151,7 @@ class Layout extends React.Component { etherScanLink={etherScanLink} threshold={safe.threshold} owners={safe.owners} + createTransaction={createTransaction} /> )} diff --git a/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/index.jsx b/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/index.jsx index 4660e621..5155cb37 100644 --- a/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/index.jsx +++ b/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/index.jsx @@ -25,12 +25,19 @@ type Props = { classes: Object, threshold: number, owners: List, + onChangeThreshold: Function, } +const THRESHOLD_FIELD_NAME = 'threshold' + const ChangeThreshold = ({ - onClose, owners, threshold, classes, + onClose, owners, threshold, classes, onChangeThreshold, }: Props) => { - const handleSubmit = () => ({}) + const handleSubmit = (values) => { + const newThreshold = values[THRESHOLD_FIELD_NAME] + + onChangeThreshold(newThreshold) + } return ( @@ -61,7 +68,7 @@ const ChangeThreshold = ({ - + out of {' '} {owners.size} diff --git a/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/style.js b/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/style.js index 9f7ff7ef..7486a68b 100644 --- a/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/style.js +++ b/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/style.js @@ -24,7 +24,7 @@ export const styles = () => ({ modalContent: { padding: `${md} ${lg}`, }, - amount: { + ownersText: { marginLeft: sm, }, buttonRow: { diff --git a/src/routes/safe/components/Settings/ThresholdSettings/index.jsx b/src/routes/safe/components/Settings/ThresholdSettings/index.jsx index 8077c616..3933ec2f 100644 --- a/src/routes/safe/components/Settings/ThresholdSettings/index.jsx +++ b/src/routes/safe/components/Settings/ThresholdSettings/index.jsx @@ -12,20 +12,33 @@ import Paragraph from '~/components/layout/Paragraph' import ChangeThreshold from './ChangeThreshold' import type { Owner } from '~/routes/safe/store/models/owner' import { styles } from './style' +import { getGnosisSafeInstanceAt } from '~/logic/contracts/safeContracts' +import { ZERO_ADDRESS } from '~/logic/wallets/ethAddresses' type Props = { owners: List, threshold: number, classes: Object, + createTransaction: Function, + safeAddress: string, } -const ThresholdSettings = ({ owners, threshold, classes }: Props) => { +const ThresholdSettings = ({ + owners, threshold, classes, createTransaction, safeAddress, +}: Props) => { const [isModalOpen, setModalOpen] = useState(false) const toggleModal = () => { setModalOpen(prevOpen => !prevOpen) } + const onChangeThreshold = async (newThreshold) => { + const safeInstance = await getGnosisSafeInstanceAt(safeAddress) + const data = safeInstance.contract.changeThreshold(newThreshold).encodeABI() + + createTransaction(safeInstance, safeAddress, 0, ZERO_ADDRESS) + } + return ( @@ -66,6 +79,7 @@ owners onClose={toggleModal} owners={owners} threshold={threshold} + onChangeThreshold={onChangeThreshold} /> diff --git a/src/routes/safe/components/Settings/index.jsx b/src/routes/safe/components/Settings/index.jsx index b8b7ca24..46583a51 100644 --- a/src/routes/safe/components/Settings/index.jsx +++ b/src/routes/safe/components/Settings/index.jsx @@ -26,6 +26,7 @@ type Props = { safeName: string, owners: List, threshold: number, + createTransaction: Function, } type Action = 'RemoveSafe' @@ -51,7 +52,7 @@ class Settings extends React.Component { render() { const { showRemoveSafe, menuOptionIndex } = this.state const { - classes, granted, etherScanLink, safeAddress, safeName, owners, threshold, + classes, granted, etherScanLink, safeAddress, safeName, owners, threshold, createTransaction, } = this.props return ( @@ -114,7 +115,14 @@ class Settings extends React.Component { {menuOptionIndex === 1 &&

To be done

} {granted && menuOptionIndex === 2 &&

To be done

} - {granted && menuOptionIndex === 3 && } + {granted && menuOptionIndex === 3 && ( + + )} {granted && menuOptionIndex === 4 &&

To be done

}
diff --git a/src/routes/safe/store/actions/createTransaction.js b/src/routes/safe/store/actions/createTransaction.js index 9471bcd0..ceec6e1a 100644 --- a/src/routes/safe/store/actions/createTransaction.js +++ b/src/routes/safe/store/actions/createTransaction.js @@ -20,6 +20,7 @@ const createTransaction = ( valueInEth: string, token: Token, openSnackbar: Function, + txData: string = EMPTY_DATA, ) => async (dispatch: ReduxDispatch, getState: GetState) => { const isSendingETH = isEther(token.symbol) const state: GlobalState = getState() From 8ec1d6f528a1ff26b9eb72129040ad175366c82d Mon Sep 17 00:00:00 2001 From: mmv Date: Tue, 18 Jun 2019 15:55:53 +0400 Subject: [PATCH 17/19] refactor createTRansaction method to accept safe settings txs --- src/logic/safe/transactions/send.js | 2 +- .../SendModal/screens/ReviewTx/index.jsx | 180 ++++++++++-------- src/routes/safe/components/Layout.jsx | 1 - src/routes/safe/container/index.jsx | 2 +- .../safe/store/actions/createTransaction.js | 27 +-- 5 files changed, 108 insertions(+), 104 deletions(-) diff --git a/src/logic/safe/transactions/send.js b/src/logic/safe/transactions/send.js index 9252e274..0dad49f7 100644 --- a/src/logic/safe/transactions/send.js +++ b/src/logic/safe/transactions/send.js @@ -12,7 +12,7 @@ const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000' export const executeTransaction = async ( safeInstance: any, to: string, - valueInWei: number, + valueInWei: number | string, data: string, operation: number | string, nonce: string | number, diff --git a/src/routes/safe/components/Balances/SendModal/screens/ReviewTx/index.jsx b/src/routes/safe/components/Balances/SendModal/screens/ReviewTx/index.jsx index 3d2ac30a..45c24258 100644 --- a/src/routes/safe/components/Balances/SendModal/screens/ReviewTx/index.jsx +++ b/src/routes/safe/components/Balances/SendModal/screens/ReviewTx/index.jsx @@ -17,8 +17,12 @@ import { copyToClipboard } from '~/utils/clipboard' import Hairline from '~/components/layout/Hairline' import SafeInfo from '~/routes/safe/components/Balances/SendModal/SafeInfo' import { setImageToPlaceholder } from '~/routes/safe/components/Balances/utils' +import { getStandardTokenContract } from '~/logic/tokens/store/actions/fetchTokens' +import { EMPTY_DATA } from '~/logic/wallets/ethTransactions' +import { getWeb3 } from '~/logic/wallets/getWeb3' import ArrowDown from '../assets/arrow-down.svg' import { secondary } from '~/theme/variables' +import { isEther } from '~/logic/tokens/utils/tokenHelpers' import { styles } from './style' type Props = { @@ -50,87 +54,109 @@ const ReviewTx = ({ createTransaction, }: Props) => ( - {({ openSnackbar }) => ( - - - - Send Funds - - 2 of 2 - - - - - - - - - - Arrow Down - - - - - - - - Recipient + {({ openSnackbar }) => { + const submitTx = async () => { + const web3 = getWeb3() + const isSendingETH = isEther(tx.token.symbol) + const txRecipient = isSendingETH ? tx.recipientAddress : tx.token.address + let txData = EMPTY_DATA + let txAmount = web3.utils.toWei(tx.amount, 'ether') + + + if (!isSendingETH) { + const StandardToken = await getStandardTokenContract() + const tokenInstance = await StandardToken.at(tx.token.address) + + txData = tokenInstance.contract.methods.transfer(tx.recipientAddress, txAmount).encodeABI() + // txAmount should be 0 if we send tokens + // the real value is encoded in txData and will be used by the contract + // if txAmount > 0 it would send ETH from the safe + txAmount = 0 + } + + createTransaction(safeAddress, txRecipient, txAmount, txData, openSnackbar) + onClose() + } + + return ( + + + + Send Funds + 2 of 2 + + + - - - - - - - {tx.recipientAddress} - - - + + + + + + Arrow Down + + + + + + + + Recipient - + + + + + + + + {tx.recipientAddress} + + + + + + + + + Amount + + + + {tx.token.name} + + {tx.amount} + {' '} + {tx.token.symbol} + + + + + + + - - - Amount - - - - {tx.token.name} - - {tx.amount} - {' '} - {tx.token.symbol} - - - - - - - - - - )} +
+ ) + }} ) diff --git a/src/routes/safe/components/Layout.jsx b/src/routes/safe/components/Layout.jsx index d7c4ac96..ee6cfc94 100644 --- a/src/routes/safe/components/Layout.jsx +++ b/src/routes/safe/components/Layout.jsx @@ -18,7 +18,6 @@ import { sm, xs, secondary, smallFontSize, } from '~/theme/variables' import { copyToClipboard } from '~/utils/clipboard' -import type { Safe } from '~/routes/safe/store/models/safe' import Balances from './Balances' import Settings from './Settings' diff --git a/src/routes/safe/container/index.jsx b/src/routes/safe/container/index.jsx index bd0a7b68..cf6c8378 100644 --- a/src/routes/safe/container/index.jsx +++ b/src/routes/safe/container/index.jsx @@ -11,7 +11,7 @@ export type Props = Actions & granted: boolean, } -const TIMEOUT = process.env.NODE_ENV === 'test' ? 1500 : 15000 +const TIMEOUT = process.env.NODE_ENV === 'test' ? 1500 : 5000 class SafeView extends React.Component { componentDidMount() { diff --git a/src/routes/safe/store/actions/createTransaction.js b/src/routes/safe/store/actions/createTransaction.js index ceec6e1a..6ab785fa 100644 --- a/src/routes/safe/store/actions/createTransaction.js +++ b/src/routes/safe/store/actions/createTransaction.js @@ -1,15 +1,11 @@ // @flow import type { Dispatch as ReduxDispatch, GetState } from 'redux' import { createAction } from 'redux-actions' -import { getWeb3 } from '~/logic/wallets/getWeb3' import { EMPTY_DATA } from '~/logic/wallets/ethTransactions' -import { type Token } from '~/logic/tokens/store/model/token' import { userAccountSelector } from '~/logic/wallets/store/selectors' import { type GlobalState } from '~/store' -import { isEther } from '~/logic/tokens/utils/tokenHelpers' import { getGnosisSafeInstanceAt } from '~/logic/contracts/safeContracts' import { executeTransaction, CALL } from '~/logic/safe/transactions' -import { getStandardTokenContract } from '~/logic/tokens/store/actions/fetchTokens' export const ADD_TRANSACTIONS = 'ADD_TRANSACTIONS' export const addTransactions = createAction(ADD_TRANSACTIONS) @@ -17,40 +13,23 @@ export const addTransactions = createAction(ADD_TRANSACTIONS) const createTransaction = ( safeAddress: string, to: string, - valueInEth: string, - token: Token, - openSnackbar: Function, + valueInWei: string, txData: string = EMPTY_DATA, + openSnackbar: Function, ) => async (dispatch: ReduxDispatch, getState: GetState) => { - const isSendingETH = isEther(token.symbol) const state: GlobalState = getState() const safeInstance = await getGnosisSafeInstanceAt(safeAddress) - const web3 = getWeb3() const from = userAccountSelector(state) const threshold = await safeInstance.getThreshold() const nonce = await safeInstance.nonce() - const txRecipient = isSendingETH ? to : token.address - const valueInWei = web3.utils.toWei(valueInEth, 'ether') - let txAmount = valueInWei const isExecution = threshold.toNumber() === 1 - let txData = EMPTY_DATA - if (!isSendingETH) { - const StandardToken = await getStandardTokenContract() - const sendToken = await StandardToken.at(token.address) - - txData = sendToken.contract.methods.transfer(to, valueInWei).encodeABI() - // txAmount should be 0 if we send tokens - // the real value is encoded in txData and will be used by the contract - // if txAmount > 0 it would send ETH from the safe - txAmount = 0 - } let txHash if (isExecution) { openSnackbar('Transaction has been submitted', 'success') - txHash = await executeTransaction(safeInstance, txRecipient, txAmount, txData, CALL, nonce, from) + txHash = await executeTransaction(safeInstance, to, valueInWei, txData, CALL, nonce, from) openSnackbar('Transaction has been confirmed', 'success') } else { // txHash = await approveTransaction(safeAddress, to, valueInWei, txData, CALL, nonce) From 72c8611cc5beb2dfd2a838ebdb4959362af45b13 Mon Sep 17 00:00:00 2001 From: mmv Date: Tue, 18 Jun 2019 16:25:55 +0400 Subject: [PATCH 18/19] send tx for changing threshold, validation wip --- package.json | 1 - src/components/forms/validator.js | 8 ++ .../ChangeThreshold/index.jsx | 43 +++---- .../Settings/ThresholdSettings/index.jsx | 106 ++++++++++-------- .../safe/store/actions/createTransaction.js | 1 - yarn.lock | 31 ++++- 6 files changed, 118 insertions(+), 72 deletions(-) diff --git a/package.json b/package.json index 724e9b3f..2fd18962 100644 --- a/package.json +++ b/package.json @@ -124,7 +124,6 @@ "postcss-simple-vars": "^5.0.2", "pre-commit": "^1.2.2", "prettier-eslint-cli": "5.0.0", - "react-testing-library": "8.0.1", "run-with-testrpc": "0.3.1", "storybook-host": "^5.0.3", "storybook-router": "^0.3.3", diff --git a/src/components/forms/validator.js b/src/components/forms/validator.js index 67fdc27f..d885bc59 100644 --- a/src/components/forms/validator.js +++ b/src/components/forms/validator.js @@ -70,4 +70,12 @@ export const inLimit = (limit: number, base: number, baseText: string, symbol: s return `Should not exceed ${max} ${symbol} (amount to reach ${baseText})` } +export const differentFrom = (diffValue: string) => (value: string) => { + if (value === diffValue.toString()) { + return `Value should be different than ${value}` + } + + return undefined +} + export const noErrorsOn = (name: string, errors: Object) => errors[name] === undefined diff --git a/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/index.jsx b/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/index.jsx index 5155cb37..df64e3e5 100644 --- a/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/index.jsx +++ b/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/index.jsx @@ -7,7 +7,7 @@ import IconButton from '@material-ui/core/IconButton' import SelectField from '~/components/forms/SelectField' import MenuItem from '@material-ui/core/MenuItem' import { - composeValidators, minValue, mustBeInteger, required, + composeValidators, minValue, mustBeInteger, required, differentFrom, } from '~/components/forms/validator' import Field from '~/components/forms/Field' import GnoForm from '~/components/forms/GnoForm' @@ -33,10 +33,11 @@ const THRESHOLD_FIELD_NAME = 'threshold' const ChangeThreshold = ({ onClose, owners, threshold, classes, onChangeThreshold, }: Props) => { - const handleSubmit = (values) => { + const handleSubmit = async (values) => { const newThreshold = values[THRESHOLD_FIELD_NAME] - onChangeThreshold(newThreshold) + await onChangeThreshold(newThreshold) + onClose() } return ( @@ -50,10 +51,10 @@ const ChangeThreshold = ({ - - - {() => ( - + + {() => ( + + Every transaction outside any specified daily limits, needs to be confirmed by all specified owners. @@ -70,7 +71,7 @@ const ChangeThreshold = ({ {[...Array(Number(owners.size))].map((x, index) => ( @@ -90,19 +91,19 @@ owner(s) - - )} - - - - - - - +
+ + + + + + + )} + ) } diff --git a/src/routes/safe/components/Settings/ThresholdSettings/index.jsx b/src/routes/safe/components/Settings/ThresholdSettings/index.jsx index 3933ec2f..cb7307a1 100644 --- a/src/routes/safe/components/Settings/ThresholdSettings/index.jsx +++ b/src/routes/safe/components/Settings/ThresholdSettings/index.jsx @@ -2,6 +2,7 @@ import React, { useState } from 'react' import { withStyles } from '@material-ui/core/styles' import { List } from 'immutable' +import { SharedSnackbarConsumer } from '~/components/SharedSnackBar' import Heading from '~/components/layout/Heading' import Button from '~/components/layout/Button' import Bold from '~/components/layout/Bold' @@ -32,56 +33,65 @@ const ThresholdSettings = ({ setModalOpen(prevOpen => !prevOpen) } - const onChangeThreshold = async (newThreshold) => { - const safeInstance = await getGnosisSafeInstanceAt(safeAddress) - const data = safeInstance.contract.changeThreshold(newThreshold).encodeABI() - - createTransaction(safeInstance, safeAddress, 0, ZERO_ADDRESS) - } - return ( - - Required confirmations - - Any transaction over any daily limit -
- {' '} -requires the confirmation of: -
- - {threshold} - {' '} -out of - {owners.size} - {' '} -owners - - - - -
- - - + + {({ openSnackbar }) => { + const onChangeThreshold = async (newThreshold) => { + const safeInstance = await getGnosisSafeInstanceAt(safeAddress) + const txData = safeInstance.contract.methods.changeThreshold(newThreshold).encodeABI() + + createTransaction(safeAddress, safeAddress, 0, txData, openSnackbar) + } + + return ( + <> + + Required confirmations + + Any transaction over any daily limit +
+ {' '} + requires the confirmation of: +
+ + {threshold} + {' '} + out of + {' '} + {owners.size} + {' '} + owners + + + + +
+ + + + + ) + }} +
) } diff --git a/src/routes/safe/store/actions/createTransaction.js b/src/routes/safe/store/actions/createTransaction.js index 6ab785fa..c4b6ff99 100644 --- a/src/routes/safe/store/actions/createTransaction.js +++ b/src/routes/safe/store/actions/createTransaction.js @@ -25,7 +25,6 @@ const createTransaction = ( const nonce = await safeInstance.nonce() const isExecution = threshold.toNumber() === 1 - let txHash if (isExecution) { openSnackbar('Transaction has been submitted', 'success') diff --git a/yarn.lock b/yarn.lock index 6da0beb8..7c295498 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1613,6 +1613,11 @@ dependencies: uuid "^3.1.0" +"@sheerun/mutationobserver-shim@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.2.tgz#8013f2af54a2b7d735f71560ff360d3a8176a87b" + integrity sha512-vTCdPp/T/Q3oSqwHmZ5Kpa9oI7iLtGl3RQaA/NyLHikvcrPxACkkKVr/XzkSPJWXHRhKGzVvb0urJsbMlRxi1Q== + "@storybook/addon-actions@5.1.8": version "5.1.8" resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-5.1.8.tgz#98d6aff42fb7fa7477b4db6cf21da3ede18ede0d" @@ -2081,6 +2086,25 @@ "@svgr/plugin-svgo" "^4.2.0" loader-utils "^1.2.3" +"@testing-library/dom@^5.0.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-5.2.0.tgz#450bd09f93ddd8865eec98fc5e81fceb2bccdf9c" + integrity sha512-nFaZes/bzDfMqwZpQXdiPyj3WXU16FYf5k5NCFu/qJM4JdRJLHEtSRYtrETmk7nCf+qLVoHCqRduGi/4KE83Gw== + dependencies: + "@babel/runtime" "^7.4.5" + "@sheerun/mutationobserver-shim" "^0.3.2" + aria-query "3.0.0" + pretty-format "^24.8.0" + wait-for-expect "^1.2.0" + +"@testing-library/react@^8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-8.0.1.tgz#91c254adf855b13de50020613cb5d3915f9f7875" + integrity sha512-N/1pJfhEnNYkGyxuw4xbp03evaS0z/CT8o0QgTfJqGlukAcU15xf9uU1w03NHKZJcU69nOCBAoAkXHtHzYwMbg== + dependencies: + "@babel/runtime" "^7.4.5" + "@testing-library/dom" "^5.0.0" + "@types/babel__core@^7.1.0": version "7.1.2" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.2.tgz#608c74f55928033fce18b99b213c16be4b3d114f" @@ -2729,7 +2753,7 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -aria-query@^3.0.0: +aria-query@3.0.0, aria-query@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc" integrity sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w= @@ -16760,6 +16784,11 @@ w3c-hr-time@^1.0.1: dependencies: browser-process-hrtime "^0.1.2" +wait-for-expect@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/wait-for-expect/-/wait-for-expect-1.2.0.tgz#fdab6a26e87d2039101db88bff3d8158e5c3e13f" + integrity sha512-EJhKpA+5UHixduMBEGhTFuLuVgQBKWxkFbefOdj2bbk2/OpA5Opsc4aUTGmF+qJ+v3kTGxDRNYwKaT4j6g5n8Q== + walker@^1.0.7, walker@~1.0.5: version "1.0.7" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" From f20a9602f44e4ea5982549c5edd0dd03e7354cae Mon Sep 17 00:00:00 2001 From: mmv Date: Tue, 18 Jun 2019 16:49:50 +0400 Subject: [PATCH 19/19] show validation error --- src/components/forms/SelectField/index.jsx | 3 +- .../ChangeThreshold/index.jsx | 29 ++++++++++++------- .../ChangeThreshold/style.js | 7 +++++ .../Settings/ThresholdSettings/index.jsx | 24 ++++++++------- 4 files changed, 41 insertions(+), 22 deletions(-) diff --git a/src/components/forms/SelectField/index.jsx b/src/components/forms/SelectField/index.jsx index 5f92a849..cce9b6b3 100644 --- a/src/components/forms/SelectField/index.jsx +++ b/src/components/forms/SelectField/index.jsx @@ -18,9 +18,10 @@ const SelectInput = ({ formControlProps, classes, renderValue, + disableError, ...rest }: SelectFieldProps) => { - const showError = ((meta.submitError && !meta.dirtySinceLastSubmit) || meta.error) && meta.touched + const showError = ((meta.submitError && !meta.dirtySinceLastSubmit) || meta.error) && meta.touched && !disableError const inputProps = { ...restInput, name, diff --git a/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/index.jsx b/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/index.jsx index df64e3e5..c1a841ec 100644 --- a/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/index.jsx +++ b/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/index.jsx @@ -66,20 +66,29 @@ const ChangeThreshold = ({ Any transaction over any daily limit requires the confirmation of: - + ( + <> + + {[...Array(Number(owners.size))].map((x, index) => ( + + {index + 1} + + ))} + + {props.meta.error && props.meta.touched && ( + + {props.meta.error} + + )} + + )} validate={composeValidators(required, mustBeInteger, minValue(1), differentFrom(threshold))} data-testid="threshold-select-input" - > - {[...Array(Number(owners.size))].map((x, index) => ( - - {index + 1} - - ))} - + /> @@ -87,7 +96,7 @@ const ChangeThreshold = ({ {' '} {owners.size} {' '} -owner(s) + owner(s) diff --git a/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/style.js b/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/style.js index 7486a68b..924c460f 100644 --- a/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/style.js +++ b/src/routes/safe/components/Settings/ThresholdSettings/ChangeThreshold/style.js @@ -34,4 +34,11 @@ export const styles = () => ({ bottom: 0, width: '100%', }, + inputRow: { + position: 'relative', + }, + errorText: { + position: 'absolute', + bottom: '-25px', + }, }) diff --git a/src/routes/safe/components/Settings/ThresholdSettings/index.jsx b/src/routes/safe/components/Settings/ThresholdSettings/index.jsx index cb7307a1..7bdd7672 100644 --- a/src/routes/safe/components/Settings/ThresholdSettings/index.jsx +++ b/src/routes/safe/components/Settings/ThresholdSettings/index.jsx @@ -63,17 +63,19 @@ const ThresholdSettings = ({ {' '} owners - - - + {owners.size > 1 && ( + + + + )}