mirror of
https://github.com/status-im/safe-react.git
synced 2025-01-12 02:54:09 +00:00
Pull from dev
This commit is contained in:
commit
7a9e9a039b
22
package.json
22
package.json
@ -82,9 +82,9 @@
|
||||
"qrcode.react": "^0.9.3",
|
||||
"react": "^16.8.6",
|
||||
"react-dom": "^16.8.6",
|
||||
"react-final-form": "5.1.0",
|
||||
"react-final-form": "6.0.0",
|
||||
"react-final-form-listeners": "^1.0.2",
|
||||
"react-hot-loader": "4.8.7",
|
||||
"react-hot-loader": "4.8.8",
|
||||
"react-infinite-scroll-component": "^4.5.2",
|
||||
"react-redux": "7.0.3",
|
||||
"react-router-dom": "^4.3.1",
|
||||
@ -97,7 +97,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/cli": "7.4.4",
|
||||
"@babel/core": "7.4.4",
|
||||
"@babel/core": "7.4.5",
|
||||
"@babel/plugin-proposal-class-properties": "7.4.4",
|
||||
"@babel/plugin-proposal-decorators": "7.4.4",
|
||||
"@babel/plugin-proposal-do-expressions": "^7.0.0",
|
||||
@ -117,7 +117,7 @@
|
||||
"@babel/plugin-transform-member-expression-literals": "^7.2.0",
|
||||
"@babel/plugin-transform-property-literals": "^7.2.0",
|
||||
"@babel/polyfill": "7.4.4",
|
||||
"@babel/preset-env": "7.4.4",
|
||||
"@babel/preset-env": "7.4.5",
|
||||
"@babel/preset-flow": "^7.0.0-beta.40",
|
||||
"@babel/preset-react": "^7.0.0-beta.40",
|
||||
"@sambego/storybook-state": "^1.0.7",
|
||||
@ -138,9 +138,9 @@
|
||||
"detect-port": "^1.2.2",
|
||||
"eslint": "^5.16.0",
|
||||
"eslint-config-airbnb": "^17.1.0",
|
||||
"eslint-plugin-flowtype": "3.9.0",
|
||||
"eslint-plugin-import": "2.17.2",
|
||||
"eslint-plugin-jest": "22.5.1",
|
||||
"eslint-plugin-flowtype": "3.9.1",
|
||||
"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",
|
||||
@ -162,11 +162,11 @@
|
||||
"storybook-host": "^5.0.3",
|
||||
"storybook-router": "^0.3.3",
|
||||
"style-loader": "^0.23.1",
|
||||
"truffle": "5.0.18",
|
||||
"truffle-contract": "4.0.16",
|
||||
"truffle-solidity-loader": "0.1.17",
|
||||
"truffle": "5.0.19",
|
||||
"truffle-contract": "4.0.17",
|
||||
"truffle-solidity-loader": "0.1.18",
|
||||
"uglifyjs-webpack-plugin": "2.1.3",
|
||||
"webpack": "4.32.0",
|
||||
"webpack": "4.32.2",
|
||||
"webpack-bundle-analyzer": "3.3.2",
|
||||
"webpack-cli": "3.3.2",
|
||||
"webpack-dev-server": "3.4.1",
|
||||
|
@ -55,16 +55,13 @@ class Provider extends React.Component<Props> {
|
||||
<React.Fragment>
|
||||
<div ref={this.myRef} className={classes.root}>
|
||||
<Col end="sm" middle="xs" className={classes.provider} onClick={toggle}>
|
||||
{ info }
|
||||
<IconButton
|
||||
disableRipple
|
||||
className={classes.expand}
|
||||
>
|
||||
{ open ? <ExpandLess /> : <ExpandMore />}
|
||||
{info}
|
||||
<IconButton disableRipple className={classes.expand}>
|
||||
{open ? <ExpandLess /> : <ExpandMore />}
|
||||
</IconButton>
|
||||
</Col>
|
||||
</div>
|
||||
{ children(this.myRef) }
|
||||
{children(this.myRef)}
|
||||
</React.Fragment>
|
||||
)
|
||||
}
|
||||
|
@ -12,9 +12,10 @@ import Layout from './component/Layout'
|
||||
import actions, { type Actions } from './actions'
|
||||
import selector, { type SelectorProps } from './selector'
|
||||
|
||||
type Props = Actions & SelectorProps & {
|
||||
openSnackbar: (message: string, variant: Variant) => void,
|
||||
}
|
||||
type Props = Actions &
|
||||
SelectorProps & {
|
||||
openSnackbar: (message: string, variant: Variant) => void,
|
||||
}
|
||||
|
||||
type State = {
|
||||
hasError: boolean,
|
||||
@ -67,13 +68,15 @@ class HeaderComponent extends React.PureComponent<Props, State> {
|
||||
return <ConnectDetails onConnect={this.onConnect} />
|
||||
}
|
||||
|
||||
return (<UserDetails
|
||||
provider={provider}
|
||||
network={network}
|
||||
userAddress={userAddress}
|
||||
connected={available}
|
||||
onDisconnect={this.onDisconnect}
|
||||
/>)
|
||||
return (
|
||||
<UserDetails
|
||||
provider={provider}
|
||||
network={network}
|
||||
userAddress={userAddress}
|
||||
connected={available}
|
||||
onDisconnect={this.onDisconnect}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
render() {
|
||||
@ -84,14 +87,13 @@ class HeaderComponent extends React.PureComponent<Props, State> {
|
||||
}
|
||||
}
|
||||
|
||||
const Header = connect(selector, actions)(HeaderComponent)
|
||||
const Header = connect(
|
||||
selector,
|
||||
actions,
|
||||
)(HeaderComponent)
|
||||
|
||||
const HeaderSnack = () => (
|
||||
<SharedSnackbarConsumer>
|
||||
{({ openSnackbar }) => (
|
||||
<Header openSnackbar={openSnackbar} />
|
||||
)}
|
||||
</SharedSnackbarConsumer>
|
||||
<SharedSnackbarConsumer>{({ openSnackbar }) => <Header openSnackbar={openSnackbar} />}</SharedSnackbarConsumer>
|
||||
)
|
||||
|
||||
export default HeaderSnack
|
||||
|
@ -64,7 +64,7 @@ const styles = theme => ({
|
||||
},
|
||||
iconVariant: {
|
||||
opacity: 0.9,
|
||||
marginRight: theme.spacing.unit,
|
||||
marginRight: theme.spacing(1),
|
||||
},
|
||||
message: {
|
||||
display: 'flex',
|
||||
|
@ -15,7 +15,7 @@ type Props = {
|
||||
padding?: number,
|
||||
validation?: (values: Object) => Object | Promise<Object>,
|
||||
initialValues?: Object,
|
||||
formMutators: Object,
|
||||
formMutators?: Object,
|
||||
}
|
||||
|
||||
const stylesBasedOn = (padding: number): $Shape<CSSStyleDeclaration> => ({
|
||||
|
@ -1,6 +1,6 @@
|
||||
// @flow
|
||||
import * as React from 'react'
|
||||
import classNames from 'classnames/bind'
|
||||
import React from 'react'
|
||||
import { Link } from 'react-router-dom'
|
||||
import { capitalize } from '~/utils/css'
|
||||
import styles from './index.scss'
|
||||
@ -13,20 +13,35 @@ type Props = {
|
||||
children: React$Node,
|
||||
color?: 'regular' | 'white',
|
||||
className?: string,
|
||||
innerRef: React.ElementRef<any>,
|
||||
}
|
||||
|
||||
const GnosisLink = ({
|
||||
to, children, color, className, padding, ...props
|
||||
to, children, color, className, padding, innerRef, ...props
|
||||
}: Props) => {
|
||||
const internal = /^\/(?!\/)/.test(to)
|
||||
const classes = cx(styles.link, color || 'regular', padding ? capitalize(padding, 'padding') : undefined, className)
|
||||
const LinkElement = internal ? Link : 'a'
|
||||
const refs = {}
|
||||
if (internal) {
|
||||
// To avoid warning about React not recognizing the prop innerRef on native element (a) if the link is external
|
||||
refs.innerRef = innerRef
|
||||
}
|
||||
|
||||
return (
|
||||
<LinkElement className={classes} href={internal ? null : to} to={internal ? to : null} {...props}>
|
||||
<LinkElement
|
||||
className={classes}
|
||||
href={internal ? null : to}
|
||||
to={internal ? to : null}
|
||||
{...refs}
|
||||
{...props}
|
||||
>
|
||||
{children}
|
||||
</LinkElement>
|
||||
)
|
||||
}
|
||||
|
||||
export default GnosisLink
|
||||
// https://material-ui.com/guides/composition/#caveat-with-refs
|
||||
const LinkWithRef = React.forwardRef<Props, typeof GnosisLink>((props, ref) => <GnosisLink {...props} innerRef={ref} />)
|
||||
|
||||
export default LinkWithRef
|
||||
|
@ -1,4 +1,5 @@
|
||||
// @flow
|
||||
export * from './gas'
|
||||
export * from './send'
|
||||
export * from './safeBlockchainOperations'
|
||||
export * from './safeTxSignerEIP712'
|
||||
|
@ -54,89 +54,89 @@ export const approveTransaction = async (
|
||||
return txHash
|
||||
}
|
||||
|
||||
export const executeTransaction = async (
|
||||
safeAddress: string,
|
||||
to: string,
|
||||
valueInWei: number,
|
||||
data: string,
|
||||
operation: Operation,
|
||||
nonce: number,
|
||||
sender: string,
|
||||
ownersWhoHasSigned: List<string>,
|
||||
) => {
|
||||
const gasPrice = await calculateGasPrice()
|
||||
// export const executeTransaction = async (
|
||||
// safeAddress: string,
|
||||
// to: string,
|
||||
// valueInWei: number,
|
||||
// data: string,
|
||||
// operation: Operation,
|
||||
// nonce: number,
|
||||
// sender: string,
|
||||
// ownersWhoHasSigned: List<string>,
|
||||
// ) => {
|
||||
// const gasPrice = await calculateGasPrice()
|
||||
|
||||
if (signaturesViaMetamask()) {
|
||||
const safe = await getGnosisSafeInstanceAt(safeAddress)
|
||||
const txGasEstimate = await generateTxGasEstimateFrom(safe, safeAddress, data, to, valueInWei, operation)
|
||||
const signature = await generateMetamaskSignature(
|
||||
safe,
|
||||
safeAddress,
|
||||
sender,
|
||||
to,
|
||||
valueInWei,
|
||||
nonce,
|
||||
data,
|
||||
operation,
|
||||
txGasEstimate,
|
||||
)
|
||||
storeSignature(safeAddress, nonce, signature)
|
||||
// if (signaturesViaMetamask()) {
|
||||
// const safe = await getSafeEthereumInstance(safeAddress)
|
||||
// const txGasEstimate = await generateTxGasEstimateFrom(safe, safeAddress, data, to, valueInWei, operation)
|
||||
// const signature = await generateMetamaskSignature(
|
||||
// safe,
|
||||
// safeAddress,
|
||||
// sender,
|
||||
// to,
|
||||
// valueInWei,
|
||||
// nonce,
|
||||
// data,
|
||||
// operation,
|
||||
// txGasEstimate,
|
||||
// )
|
||||
// storeSignature(safeAddress, nonce, signature)
|
||||
|
||||
const sigs = getSignaturesFrom(safeAddress, nonce)
|
||||
const threshold = await safe.getThreshold()
|
||||
const gas = await estimateDataGas(
|
||||
safe,
|
||||
to,
|
||||
valueInWei,
|
||||
data,
|
||||
operation,
|
||||
txGasEstimate,
|
||||
0,
|
||||
nonce,
|
||||
Number(threshold),
|
||||
0,
|
||||
)
|
||||
const numOwners = await safe.getOwners()
|
||||
const gasIncludingRemovingStoreUpfront = gas + txGasEstimate + numOwners.length * 15000
|
||||
// const sigs = getSignaturesFrom(safeAddress, nonce)
|
||||
// const threshold = await safe.getThreshold()
|
||||
// const gas = await estimateDataGas(
|
||||
// safe,
|
||||
// to,
|
||||
// valueInWei,
|
||||
// data,
|
||||
// operation,
|
||||
// txGasEstimate,
|
||||
// 0,
|
||||
// nonce,
|
||||
// Number(threshold),
|
||||
// 0,
|
||||
// )
|
||||
// const numOwners = await safe.getOwners()
|
||||
// const gasIncludingRemovingStoreUpfront = gas + txGasEstimate + numOwners.length * 15000
|
||||
|
||||
const txReceipt = await safe.execTransaction(
|
||||
to,
|
||||
valueInWei,
|
||||
data,
|
||||
operation,
|
||||
txGasEstimate,
|
||||
0, // dataGasEstimate
|
||||
0, // gasPrice
|
||||
0, // txGasToken
|
||||
0, // refundReceiver
|
||||
sigs,
|
||||
{ from: sender, gas: gasIncludingRemovingStoreUpfront, gasPrice },
|
||||
)
|
||||
// const txReceipt = await safe.execTransaction(
|
||||
// to,
|
||||
// valueInWei,
|
||||
// data,
|
||||
// operation,
|
||||
// txGasEstimate,
|
||||
// 0, // dataGasEstimate
|
||||
// 0, // gasPrice
|
||||
// 0, // txGasToken
|
||||
// 0, // refundReceiver
|
||||
// sigs,
|
||||
// { from: sender, gas: gasIncludingRemovingStoreUpfront, gasPrice },
|
||||
// )
|
||||
|
||||
const txHash = txReceipt.tx
|
||||
await checkReceiptStatus(txHash)
|
||||
// await submitOperation(safeAddress, to, valueInWei, data, operation, nonce, txHash, sender, 'execution')
|
||||
// const txHash = txReceipt.tx
|
||||
// await checkReceiptStatus(txHash)
|
||||
// // await submitOperation(safeAddress, to, valueInWei, data, operation, nonce, txHash, sender, 'execution')
|
||||
|
||||
return txHash
|
||||
}
|
||||
// return txHash
|
||||
// }
|
||||
|
||||
const gnosisSafe = await getGnosisSafeInstanceAt(safeAddress)
|
||||
const signatures = buildSignaturesFrom(ownersWhoHasSigned, sender)
|
||||
const txExecutionData = gnosisSafe.contract.methods
|
||||
.execTransaction(to, valueInWei, data, operation, 0, 0, 0, 0, 0, signatures)
|
||||
.encodeABI()
|
||||
const gas = await calculateGasOf(txExecutionData, sender, safeAddress)
|
||||
const numOwners = await gnosisSafe.getOwners()
|
||||
const gasIncludingRemovingStoreUpfront = gas + numOwners.length * 15000
|
||||
const txReceipt = await gnosisSafe.execTransaction(to, valueInWei, data, operation, 0, 0, 0, 0, 0, signatures, {
|
||||
from: sender,
|
||||
gas: gasIncludingRemovingStoreUpfront,
|
||||
gasPrice,
|
||||
})
|
||||
const txHash = txReceipt.tx
|
||||
await checkReceiptStatus(txHash)
|
||||
// const gnosisSafe = await getSafeEthereumInstance(safeAddress)
|
||||
// const signatures = buildSignaturesFrom(ownersWhoHasSigned, sender)
|
||||
// const txExecutionData = gnosisSafe.contract.methods
|
||||
// .execTransaction(to, valueInWei, data, operation, 0, 0, 0, 0, 0, signatures)
|
||||
// .encodeABI()
|
||||
// const gas = await calculateGasOf(txExecutionData, sender, safeAddress)
|
||||
// const numOwners = await gnosisSafe.getOwners()
|
||||
// const gasIncludingRemovingStoreUpfront = gas + numOwners.length * 15000
|
||||
// const txReceipt = await gnosisSafe.execTransaction(to, valueInWei, data, operation, 0, 0, 0, 0, 0, signatures, {
|
||||
// from: sender,
|
||||
// gas: gasIncludingRemovingStoreUpfront,
|
||||
// gasPrice,
|
||||
// })
|
||||
// const txHash = txReceipt.tx
|
||||
// await checkReceiptStatus(txHash)
|
||||
|
||||
await submitOperation(safeAddress, to, valueInWei, data, operation, nonce, txHash, sender, 'execution')
|
||||
// await submitOperation(safeAddress, to, valueInWei, data, operation, nonce, txHash, sender, 'execution')
|
||||
|
||||
return txHash
|
||||
}
|
||||
// return txHash
|
||||
// }
|
||||
|
@ -82,7 +82,7 @@ export const generateMetamaskSignature = async (
|
||||
operation,
|
||||
txGasEstimate,
|
||||
)
|
||||
console.log({sender})
|
||||
|
||||
const jsonTypedData = JSON.stringify(typedData)
|
||||
const signedTypedData = {
|
||||
method: 'eth_signTypedData_v3',
|
||||
|
75
src/logic/safe/transactions/send.js
Normal file
75
src/logic/safe/transactions/send.js
Normal file
@ -0,0 +1,75 @@
|
||||
// @flow
|
||||
import { getWeb3 } from '~/logic/wallets/getWeb3'
|
||||
import { getStandardTokenContract } from '~/logic/tokens/store/actions/fetchTokens'
|
||||
import { EMPTY_DATA } from '~/logic/wallets/ethTransactions'
|
||||
import { isEther } from '~/logic/tokens/utils/tokenHelpers'
|
||||
import { type Token } from '~/logic/tokens/store/model/token'
|
||||
import { getSafeEthereumInstance } from '../safeFrontendOperations'
|
||||
|
||||
export const CALL = 0
|
||||
const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'
|
||||
|
||||
export const executeTransaction = async (
|
||||
safeInstance: any,
|
||||
to: string,
|
||||
valueInWei: number,
|
||||
data: string,
|
||||
operation: number | string,
|
||||
nonce: string | number,
|
||||
sender: string,
|
||||
) => {
|
||||
try {
|
||||
// https://gnosis-safe.readthedocs.io/en/latest/contracts/signatures.html#pre-validated-signatures
|
||||
const sigs = `0x000000000000000000000000${sender.replace(
|
||||
'0x',
|
||||
'',
|
||||
)}000000000000000000000000000000000000000000000000000000000000000001`
|
||||
|
||||
const tx = await safeInstance.execTransaction(
|
||||
to,
|
||||
valueInWei,
|
||||
data,
|
||||
CALL,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
ZERO_ADDRESS,
|
||||
ZERO_ADDRESS,
|
||||
sigs,
|
||||
{ from: sender },
|
||||
)
|
||||
|
||||
return tx
|
||||
} catch (error) {
|
||||
// eslint-disable-next-line
|
||||
console.log('Error calculating tx gas estimation ' + error)
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
export const createTransaction = async (safeAddress: string, to: string, valueInEth: string, token: Token) => {
|
||||
const safeInstance = await getSafeEthereumInstance(safeAddress)
|
||||
const web3 = getWeb3()
|
||||
const from = web3.currentProvider.selectedAddress
|
||||
const threshold = await safeInstance.getThreshold()
|
||||
const nonce = await safeInstance.nonce()
|
||||
const valueInWei = web3.utils.toWei(valueInEth, 'ether')
|
||||
const isExecution = threshold.toNumber() === 1
|
||||
|
||||
let txData = EMPTY_DATA
|
||||
if (!isEther(token.symbol)) {
|
||||
const StandardToken = await getStandardTokenContract()
|
||||
const sendToken = await StandardToken.at(token.address)
|
||||
|
||||
txData = sendToken.contract.transfer(to, valueInWei).encodeABI()
|
||||
}
|
||||
|
||||
let txHash
|
||||
if (isExecution) {
|
||||
txHash = await executeTransaction(safeInstance, to, valueInWei, txData, CALL, nonce, from)
|
||||
} else {
|
||||
// txHash = await approveTransaction(safeAddress, to, valueInWei, txData, CALL, nonce)
|
||||
}
|
||||
|
||||
return txHash
|
||||
}
|
@ -43,10 +43,7 @@ const styles = {
|
||||
}
|
||||
|
||||
const Opening = ({
|
||||
classes,
|
||||
name = 'Safe creation process',
|
||||
tx,
|
||||
network,
|
||||
classes, name = 'Safe creation process', tx, network,
|
||||
}: Props) => (
|
||||
<Page align="center">
|
||||
<Paragraph className={classes.page} color="secondary" size="xxl" weight="bolder" align="center">
|
||||
@ -68,13 +65,25 @@ const Opening = ({
|
||||
</Block>
|
||||
<Block margin="md">
|
||||
<Paragraph size="md" align="center" weight="light" noMargin>
|
||||
This process should take a couple of minutes. <br />
|
||||
This process should take a couple of minutes.
|
||||
{' '}
|
||||
<br />
|
||||
</Paragraph>
|
||||
{ tx &&
|
||||
{tx && (
|
||||
<Paragraph className={classes.follow} size="md" align="center" weight="light" noMargin>
|
||||
Follow progress on <a href={openTxInEtherScan(tx, network)} target="_blank" rel="noopener noreferrer" className={classes.etherscan}>Etherscan.io<OpenInNew className={classes.icon} /></a>
|
||||
Follow progress on
|
||||
{' '}
|
||||
<a
|
||||
href={openTxInEtherScan(tx, network)}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className={classes.etherscan}
|
||||
>
|
||||
Etherscan.io
|
||||
<OpenInNew className={classes.icon} />
|
||||
</a>
|
||||
</Paragraph>
|
||||
}
|
||||
)}
|
||||
</Block>
|
||||
</Page>
|
||||
)
|
||||
|
@ -94,7 +94,14 @@ const Receive = ({
|
||||
</Block>
|
||||
<Block align="center" className={classes.addressContainer}>
|
||||
<Identicon address={safeAddress} diameter={32} />
|
||||
<Paragraph onClick={copyToClipboard} className={classes.address}>{safeAddress}</Paragraph>
|
||||
<Paragraph
|
||||
onClick={() => {
|
||||
copyToClipboard(safeAddress)
|
||||
}}
|
||||
className={classes.address}
|
||||
>
|
||||
{safeAddress}
|
||||
</Paragraph>
|
||||
<Link className={classes.open} to={etherScanLink} target="_blank">
|
||||
<OpenInNew style={openIconStyle} />
|
||||
</Link>
|
||||
|
@ -19,6 +19,7 @@ type Props = {
|
||||
ethBalance: string,
|
||||
tokens: List<Token>,
|
||||
selectedToken: string,
|
||||
createTransaction: Function,
|
||||
}
|
||||
type ActiveScreen = 'chooseTxType' | 'sendFunds' | 'reviewTx'
|
||||
|
||||
@ -47,6 +48,7 @@ const Send = ({
|
||||
ethBalance,
|
||||
tokens,
|
||||
selectedToken,
|
||||
createTransaction,
|
||||
}: Props) => {
|
||||
const [activeScreen, setActiveScreen] = useState<ActiveScreen>('sendFunds')
|
||||
const [tx, setTx] = useState<TxStateType>({})
|
||||
@ -98,6 +100,7 @@ const Send = ({
|
||||
safeName={safeName}
|
||||
ethBalance={ethBalance}
|
||||
onClickBack={onClickBack}
|
||||
createTransaction={createTransaction}
|
||||
/>
|
||||
)}
|
||||
</React.Fragment>
|
||||
|
@ -2,6 +2,7 @@
|
||||
import React from 'react'
|
||||
import OpenInNew from '@material-ui/icons/OpenInNew'
|
||||
import { withStyles } from '@material-ui/core/styles'
|
||||
import { SharedSnackbarConsumer } from '~/components/SharedSnackBar/Context'
|
||||
import Close from '@material-ui/icons/Close'
|
||||
import IconButton from '@material-ui/core/IconButton'
|
||||
import Paragraph from '~/components/layout/Paragraph'
|
||||
@ -29,6 +30,7 @@ type Props = {
|
||||
onClickBack: Function,
|
||||
ethBalance: string,
|
||||
tx: Object,
|
||||
createTransaction: Function,
|
||||
}
|
||||
|
||||
const openIconStyle = {
|
||||
@ -37,71 +39,98 @@ const openIconStyle = {
|
||||
}
|
||||
|
||||
const ReviewTx = ({
|
||||
onClose, classes, safeAddress, etherScanLink, safeName, ethBalance, tx, onClickBack,
|
||||
onClose,
|
||||
classes,
|
||||
safeAddress,
|
||||
etherScanLink,
|
||||
safeName,
|
||||
ethBalance,
|
||||
tx,
|
||||
onClickBack,
|
||||
createTransaction,
|
||||
}: Props) => (
|
||||
<React.Fragment>
|
||||
<Row align="center" grow className={classes.heading}>
|
||||
<Paragraph weight="bolder" className={classes.headingText} noMargin>
|
||||
Send Funds
|
||||
</Paragraph>
|
||||
<Paragraph className={classes.annotation}>2 of 2</Paragraph>
|
||||
<IconButton onClick={onClose} disableRipple>
|
||||
<Close className={classes.closeIcon} />
|
||||
</IconButton>
|
||||
</Row>
|
||||
<Hairline />
|
||||
<Block className={classes.container}>
|
||||
<SafeInfo safeAddress={safeAddress} etherScanLink={etherScanLink} safeName={safeName} ethBalance={ethBalance} />
|
||||
<Row margin="md">
|
||||
<Col xs={1}>
|
||||
<img src={ArrowDown} alt="Arrow Down" style={{ marginLeft: '8px' }} />
|
||||
</Col>
|
||||
<Col xs={11} center="xs" layout="column">
|
||||
<Hairline />
|
||||
</Col>
|
||||
</Row>
|
||||
<Row margin="xs">
|
||||
<Paragraph size="md" color="disabled" style={{ letterSpacing: '-0.5px' }} noMargin>
|
||||
Recipient
|
||||
</Paragraph>
|
||||
</Row>
|
||||
<Row margin="md" align="center">
|
||||
<Col xs={1}>
|
||||
<Identicon address={tx.recipientAddress} diameter={32} />
|
||||
</Col>
|
||||
<Col xs={11} layout="column">
|
||||
<Paragraph weight="bolder" onClick={copyToClipboard} noMargin>
|
||||
{tx.recipientAddress}
|
||||
<Link to={etherScanLink} target="_blank">
|
||||
<OpenInNew style={openIconStyle} />
|
||||
</Link>
|
||||
<SharedSnackbarConsumer>
|
||||
{({ openSnackbar }) => (
|
||||
<React.Fragment>
|
||||
<Row align="center" grow className={classes.heading}>
|
||||
<Paragraph weight="bolder" className={classes.headingText} noMargin>
|
||||
Send Funds
|
||||
</Paragraph>
|
||||
</Col>
|
||||
</Row>
|
||||
<Row margin="xs">
|
||||
<Paragraph size="md" color="disabled" style={{ letterSpacing: '-0.5px' }} noMargin>
|
||||
Amount
|
||||
</Paragraph>
|
||||
</Row>
|
||||
<Row margin="md" align="center">
|
||||
<Img src={tx.token.logoUri} height={28} alt={tx.token.name} onError={setImageToPlaceholder} />
|
||||
<Paragraph size="md" noMargin>
|
||||
{tx.amount}
|
||||
{' '}
|
||||
{tx.token.symbol}
|
||||
</Paragraph>
|
||||
</Row>
|
||||
</Block>
|
||||
<Hairline style={{ position: 'absolute', bottom: 85 }} />
|
||||
<Row align="center" className={classes.buttonRow}>
|
||||
<Button className={classes.button} minWidth={140} onClick={onClickBack}>
|
||||
Back
|
||||
</Button>
|
||||
<Button type="submit" className={classes.button} variant="contained" minWidth={140} color="primary">
|
||||
Review
|
||||
</Button>
|
||||
</Row>
|
||||
</React.Fragment>
|
||||
<Paragraph className={classes.annotation}>2 of 2</Paragraph>
|
||||
<IconButton onClick={onClose} disableRipple>
|
||||
<Close className={classes.closeIcon} />
|
||||
</IconButton>
|
||||
</Row>
|
||||
<Hairline />
|
||||
<Block className={classes.container}>
|
||||
<SafeInfo
|
||||
safeAddress={safeAddress}
|
||||
etherScanLink={etherScanLink}
|
||||
safeName={safeName}
|
||||
ethBalance={ethBalance}
|
||||
/>
|
||||
<Row margin="md">
|
||||
<Col xs={1}>
|
||||
<img src={ArrowDown} alt="Arrow Down" style={{ marginLeft: '8px' }} />
|
||||
</Col>
|
||||
<Col xs={11} center="xs" layout="column">
|
||||
<Hairline />
|
||||
</Col>
|
||||
</Row>
|
||||
<Row margin="xs">
|
||||
<Paragraph size="md" color="disabled" style={{ letterSpacing: '-0.5px' }} noMargin>
|
||||
Recipient
|
||||
</Paragraph>
|
||||
</Row>
|
||||
<Row margin="md" align="center">
|
||||
<Col xs={1}>
|
||||
<Identicon address={tx.recipientAddress} diameter={32} />
|
||||
</Col>
|
||||
<Col xs={11} layout="column">
|
||||
<Paragraph weight="bolder" onClick={copyToClipboard} noMargin>
|
||||
{tx.recipientAddress}
|
||||
<Link to={etherScanLink} target="_blank">
|
||||
<OpenInNew style={openIconStyle} />
|
||||
</Link>
|
||||
</Paragraph>
|
||||
</Col>
|
||||
</Row>
|
||||
<Row margin="xs">
|
||||
<Paragraph size="md" color="disabled" style={{ letterSpacing: '-0.5px' }} noMargin>
|
||||
Amount
|
||||
</Paragraph>
|
||||
</Row>
|
||||
<Row margin="md" align="center">
|
||||
<Img src={tx.token.logoUri} height={28} alt={tx.token.name} onError={setImageToPlaceholder} />
|
||||
<Paragraph size="md" noMargin className={classes.amount}>
|
||||
{tx.amount}
|
||||
{' '}
|
||||
{tx.token.symbol}
|
||||
</Paragraph>
|
||||
</Row>
|
||||
</Block>
|
||||
<Hairline style={{ position: 'absolute', bottom: 85 }} />
|
||||
<Row align="center" className={classes.buttonRow}>
|
||||
<Button className={classes.button} minWidth={140} onClick={onClickBack}>
|
||||
Back
|
||||
</Button>
|
||||
<Button
|
||||
type="submit"
|
||||
className={classes.button}
|
||||
onClick={() => {
|
||||
createTransaction(safeAddress, tx.recipientAddress, tx.amount, tx.token, openSnackbar)
|
||||
onClose()
|
||||
}}
|
||||
variant="contained"
|
||||
minWidth={140}
|
||||
color="primary"
|
||||
>
|
||||
SUBMIT
|
||||
</Button>
|
||||
</Row>
|
||||
</React.Fragment>
|
||||
)}
|
||||
</SharedSnackbarConsumer>
|
||||
)
|
||||
|
||||
export default withStyles(styles)(ReviewTx)
|
||||
|
@ -24,6 +24,9 @@ export const styles = () => ({
|
||||
container: {
|
||||
padding: `${md} ${lg}`,
|
||||
},
|
||||
amount: {
|
||||
marginLeft: sm,
|
||||
},
|
||||
buttonRow: {
|
||||
height: '84px',
|
||||
justifyContent: 'center',
|
||||
|
@ -9,6 +9,8 @@ export const selectedTokenStyles = () => ({
|
||||
},
|
||||
tokenData: {
|
||||
padding: 0,
|
||||
margin: 0,
|
||||
lineHeight: '14px',
|
||||
},
|
||||
tokenImage: {
|
||||
marginRight: sm,
|
||||
|
@ -158,7 +158,7 @@ class Tokens extends React.Component<Props, State> {
|
||||
|
||||
return (
|
||||
<ListItem key={token.address} className={classes.token}>
|
||||
<ListItemIcon>
|
||||
<ListItemIcon className={classes.tokenIcon}>
|
||||
<Img src={token.logoUri} height={28} alt={token.name} onError={setImageToPlaceholder} />
|
||||
</ListItemIcon>
|
||||
<ListItemText primary={token.symbol} secondary={token.name} />
|
||||
|
@ -47,6 +47,9 @@ export const styles = () => ({
|
||||
letterSpacing: '-0.5px',
|
||||
},
|
||||
},
|
||||
tokenIcon: {
|
||||
marginRight: md,
|
||||
},
|
||||
progressContainer: {
|
||||
width: '100%',
|
||||
height: '100%',
|
||||
|
@ -41,6 +41,7 @@ type Props = {
|
||||
safeName: string,
|
||||
etherScanLink: string,
|
||||
ethBalance: string,
|
||||
createTransaction: Function,
|
||||
}
|
||||
|
||||
type Action = 'Token' | 'Send' | 'Receive'
|
||||
@ -93,7 +94,15 @@ class Balances extends React.Component<Props, State> {
|
||||
hideZero, showToken, showReceive, sendFunds,
|
||||
} = this.state
|
||||
const {
|
||||
classes, granted, tokens, safeAddress, activeTokens, safeName, etherScanLink, ethBalance,
|
||||
classes,
|
||||
granted,
|
||||
tokens,
|
||||
safeAddress,
|
||||
activeTokens,
|
||||
safeName,
|
||||
etherScanLink,
|
||||
ethBalance,
|
||||
createTransaction,
|
||||
} = this.props
|
||||
|
||||
const columns = generateColumns()
|
||||
@ -190,6 +199,7 @@ class Balances extends React.Component<Props, State> {
|
||||
ethBalance={ethBalance}
|
||||
tokens={activeTokens}
|
||||
selectedToken={sendFunds.selectedToken}
|
||||
createTransaction={createTransaction}
|
||||
/>
|
||||
<Modal
|
||||
title="Receive Tokens"
|
||||
|
@ -13,7 +13,7 @@ export const styles = (theme: Object) => ({
|
||||
margin: `${sm} 0`,
|
||||
},
|
||||
actionIcon: {
|
||||
marginRight: theme.spacing.unit,
|
||||
marginRight: theme.spacing(1),
|
||||
},
|
||||
iconSmall: {
|
||||
fontSize: 16,
|
||||
|
@ -23,6 +23,7 @@ import Balances from './Balances'
|
||||
type Props = SelectorProps & {
|
||||
classes: Object,
|
||||
granted: boolean,
|
||||
createTransaction: Function,
|
||||
}
|
||||
|
||||
type State = {
|
||||
@ -88,7 +89,7 @@ class Layout extends React.Component<Props, State> {
|
||||
|
||||
render() {
|
||||
const {
|
||||
safe, provider, network, classes, granted, tokens, activeTokens,
|
||||
safe, provider, network, classes, granted, tokens, activeTokens, createTransaction,
|
||||
} = this.props
|
||||
const { tabIndex } = this.state
|
||||
|
||||
@ -137,6 +138,7 @@ class Layout extends React.Component<Props, State> {
|
||||
safeAddress={address}
|
||||
safeName={name}
|
||||
etherScanLink={etherScanLink}
|
||||
createTransaction={createTransaction}
|
||||
/>
|
||||
)}
|
||||
</React.Fragment>
|
||||
|
@ -14,7 +14,7 @@ type FormProps = {
|
||||
}
|
||||
|
||||
type Props = {
|
||||
symbol: string
|
||||
symbol: string,
|
||||
}
|
||||
|
||||
const spinnerStyle = {
|
||||
@ -25,14 +25,14 @@ const ReviewTx = ({ symbol }: Props) => (controls: React$Node, { values, submitt
|
||||
<OpenPaper controls={controls}>
|
||||
<Heading tag="h2">Review the move token funds</Heading>
|
||||
<Paragraph align="left">
|
||||
<Bold>Destination: </Bold> {values[TKN_DESTINATION_PARAM]}
|
||||
<Bold>Destination: </Bold>
|
||||
{' '}
|
||||
{values[TKN_DESTINATION_PARAM]}
|
||||
</Paragraph>
|
||||
<Paragraph align="left">
|
||||
<Bold>{`Amount to transfer: ${values[TKN_VALUE_PARAM]} ${symbol}`}</Bold>
|
||||
</Paragraph>
|
||||
<Block style={spinnerStyle}>
|
||||
{ submitting && <CircularProgress size={50} /> }
|
||||
</Block>
|
||||
<Block style={spinnerStyle}>{submitting && <CircularProgress size={50} />}</Block>
|
||||
</OpenPaper>
|
||||
)
|
||||
|
||||
|
@ -1,13 +1,16 @@
|
||||
// @flow
|
||||
import fetchSafe from '~/routes/safe/store/actions/fetchSafe'
|
||||
import fetchTokenBalances from '~/routes/safe/store/actions/fetchTokenBalances'
|
||||
import createTransaction from '~/routes/safe/store/actions/createTransaction'
|
||||
|
||||
export type Actions = {
|
||||
fetchSafe: typeof fetchSafe,
|
||||
fetchTokenBalances: typeof fetchTokenBalances,
|
||||
createTransaction: typeof createTransaction,
|
||||
}
|
||||
|
||||
export default {
|
||||
fetchSafe,
|
||||
fetchTokenBalances,
|
||||
createTransaction,
|
||||
}
|
||||
|
@ -52,7 +52,7 @@ class SafeView extends React.Component<Props> {
|
||||
|
||||
render() {
|
||||
const {
|
||||
safe, provider, activeTokens, granted, userAddress, network, tokens,
|
||||
safe, provider, activeTokens, granted, userAddress, network, tokens, createTransaction,
|
||||
} = this.props
|
||||
|
||||
return (
|
||||
@ -65,6 +65,7 @@ class SafeView extends React.Component<Props> {
|
||||
userAddress={userAddress}
|
||||
network={network}
|
||||
granted={granted}
|
||||
createTransaction={createTransaction}
|
||||
/>
|
||||
</Page>
|
||||
)
|
||||
|
@ -31,7 +31,7 @@ const saveSafe = (
|
||||
threshold: number,
|
||||
ownersName: string[],
|
||||
ownersAddress: string[],
|
||||
) => async (dispatch: ReduxDispatch<GlobalState>) => {
|
||||
) => (dispatch: ReduxDispatch<GlobalState>) => {
|
||||
const owners: List<Owner> = buildOwnersFrom(ownersName, ownersAddress)
|
||||
|
||||
const safe: Safe = SafeRecord({
|
||||
|
@ -1,6 +0,0 @@
|
||||
// @flow
|
||||
import { createAction } from 'redux-actions'
|
||||
|
||||
export const ADD_TRANSACTIONS = 'ADD_TRANSACTIONS'
|
||||
|
||||
export default createAction<string, *>(ADD_TRANSACTIONS)
|
60
src/routes/safe/store/actions/createTransaction.js
Normal file
60
src/routes/safe/store/actions/createTransaction.js
Normal file
@ -0,0 +1,60 @@
|
||||
// @flow
|
||||
import type { Dispatch as ReduxDispatch } 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 { type GlobalState } from '~/store'
|
||||
import { isEther } from '~/logic/tokens/utils/tokenHelpers'
|
||||
import { getSafeEthereumInstance } from '~/logic/safe/safeFrontendOperations'
|
||||
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<string, *>(ADD_TRANSACTIONS)
|
||||
|
||||
const createTransaction = (
|
||||
safeAddress: string,
|
||||
to: string,
|
||||
valueInEth: string,
|
||||
token: Token,
|
||||
openSnackbar: Function,
|
||||
) => async (dispatch: ReduxDispatch<GlobalState>) => {
|
||||
const isSendingETH = isEther(token.symbol)
|
||||
|
||||
const safeInstance = await getSafeEthereumInstance(safeAddress)
|
||||
const web3 = getWeb3()
|
||||
const from = web3.currentProvider.selectedAddress
|
||||
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)
|
||||
openSnackbar('Transaction has been confirmed', 'success')
|
||||
} else {
|
||||
// txHash = await approveTransaction(safeAddress, to, valueInWei, txData, CALL, nonce)
|
||||
}
|
||||
// dispatch(addTransactions(txHash))
|
||||
|
||||
return txHash
|
||||
}
|
||||
|
||||
export default createTransaction
|
@ -1,7 +1,7 @@
|
||||
// @flow
|
||||
import { List, Map } from 'immutable'
|
||||
import { handleActions, type ActionType } from 'redux-actions'
|
||||
import addTransactions, { ADD_TRANSACTIONS } from '~/routes/safe/store/actions/addTransactions'
|
||||
import { ADD_TRANSACTIONS } from '~/routes/safe/store/actions/createTransaction'
|
||||
import { type Transaction } from '~/routes/safe/store/models/transaction'
|
||||
|
||||
export const TRANSACTIONS_REDUCER_ID = 'transactions'
|
||||
@ -10,7 +10,7 @@ export type State = Map<string, List<Transaction>>
|
||||
|
||||
export default handleActions<State, *>(
|
||||
{
|
||||
[ADD_TRANSACTIONS]: (state: State, action: ActionType<typeof addTransactions>): State => action.payload,
|
||||
[ADD_TRANSACTIONS]: (state: State, action: ActionType<Function>): State => action.payload,
|
||||
},
|
||||
Map(),
|
||||
)
|
||||
|
@ -12,6 +12,7 @@ import {
|
||||
bolderFont,
|
||||
boldFont,
|
||||
buttonLargeFontSize,
|
||||
xs,
|
||||
} from './variables'
|
||||
|
||||
export type WithStyles = {
|
||||
@ -135,6 +136,7 @@ export default createMuiTheme({
|
||||
padding: 0,
|
||||
letterSpacing: '0.5px',
|
||||
color: primary,
|
||||
height: 'auto',
|
||||
textOverflow: 'ellipsis',
|
||||
display: 'flex',
|
||||
'&::-webkit-input-placeholder': {
|
||||
@ -217,6 +219,8 @@ export default createMuiTheme({
|
||||
color: primary,
|
||||
letterSpacing: '-0.5px',
|
||||
fontWeight: 'normal',
|
||||
paddingTop: xs,
|
||||
paddingBottom: xs,
|
||||
},
|
||||
},
|
||||
MuiBackdrop: {
|
||||
@ -230,6 +234,11 @@ export default createMuiTheme({
|
||||
fontFamily: 'Roboto Mono, monospace',
|
||||
},
|
||||
},
|
||||
MuiListItemIcon: {
|
||||
root: {
|
||||
minWidth: 'auto',
|
||||
},
|
||||
},
|
||||
MuiListItemText: {
|
||||
primary: {
|
||||
fontFamily: 'Roboto Mono, monospace',
|
||||
|
347
yarn.lock
347
yarn.lock
@ -46,17 +46,17 @@
|
||||
semver "^5.4.1"
|
||||
source-map "^0.5.0"
|
||||
|
||||
"@babel/core@7.4.4":
|
||||
version "7.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.4.tgz#84055750b05fcd50f9915a826b44fa347a825250"
|
||||
integrity sha512-lQgGX3FPRgbz2SKmhMtYgJvVzGZrmjaF4apZ2bLwofAKiSjxU0drPh4S/VasyYXwaTs+A1gvQ45BN8SQJzHsQQ==
|
||||
"@babel/core@7.4.5":
|
||||
version "7.4.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.5.tgz#081f97e8ffca65a9b4b0fdc7e274e703f000c06a"
|
||||
integrity sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.0.0"
|
||||
"@babel/generator" "^7.4.4"
|
||||
"@babel/helpers" "^7.4.4"
|
||||
"@babel/parser" "^7.4.4"
|
||||
"@babel/parser" "^7.4.5"
|
||||
"@babel/template" "^7.4.4"
|
||||
"@babel/traverse" "^7.4.4"
|
||||
"@babel/traverse" "^7.4.5"
|
||||
"@babel/types" "^7.4.4"
|
||||
convert-source-map "^1.1.0"
|
||||
debug "^4.1.0"
|
||||
@ -393,6 +393,11 @@
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.4.tgz#5977129431b8fe33471730d255ce8654ae1250b6"
|
||||
integrity sha512-5pCS4mOsL+ANsFZGdvNLybx4wtqAZJ0MJjMHxvzI3bvIsz6sQvzW8XX92EYIkiPtIvcfG3Aj+Ir5VNyjnZhP7w==
|
||||
|
||||
"@babel/parser@^7.4.5":
|
||||
version "7.4.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.5.tgz#04af8d5d5a2b044a2a1bffacc1e5e6673544e872"
|
||||
integrity sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew==
|
||||
|
||||
"@babel/plugin-proposal-async-generator-functions@^7.2.0":
|
||||
version "7.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e"
|
||||
@ -1006,12 +1011,12 @@
|
||||
dependencies:
|
||||
regexp-tree "^0.1.0"
|
||||
|
||||
"@babel/plugin-transform-named-capturing-groups-regex@^7.4.4":
|
||||
version "7.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.4.tgz#5611d96d987dfc4a3a81c4383bb173361037d68d"
|
||||
integrity sha512-Ki+Y9nXBlKfhD+LXaRS7v95TtTGYRAf9Y1rTDiE75zf8YQz4GDaWRXosMfJBXxnk88mGFjWdCRIeqDbon7spYA==
|
||||
"@babel/plugin-transform-named-capturing-groups-regex@^7.4.5":
|
||||
version "7.4.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz#9d269fd28a370258199b4294736813a60bbdd106"
|
||||
integrity sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg==
|
||||
dependencies:
|
||||
regexp-tree "^0.1.0"
|
||||
regexp-tree "^0.1.6"
|
||||
|
||||
"@babel/plugin-transform-new-target@^7.0.0", "@babel/plugin-transform-new-target@^7.4.0":
|
||||
version "7.4.0"
|
||||
@ -1107,12 +1112,12 @@
|
||||
dependencies:
|
||||
regenerator-transform "^0.13.4"
|
||||
|
||||
"@babel/plugin-transform-regenerator@^7.4.4":
|
||||
version "7.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.4.tgz#5b4da4df79391895fca9e28f99e87e22cfc02072"
|
||||
integrity sha512-Zz3w+pX1SI0KMIiqshFZkwnVGUhDZzpX2vtPzfJBKQQq8WsP/Xy9DNdELWivxcKOCX/Pywge4SiEaPaLtoDT4g==
|
||||
"@babel/plugin-transform-regenerator@^7.4.5":
|
||||
version "7.4.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz#629dc82512c55cee01341fb27bdfcb210354680f"
|
||||
integrity sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA==
|
||||
dependencies:
|
||||
regenerator-transform "^0.13.4"
|
||||
regenerator-transform "^0.14.0"
|
||||
|
||||
"@babel/plugin-transform-reserved-words@^7.2.0":
|
||||
version "7.2.0"
|
||||
@ -1259,10 +1264,10 @@
|
||||
js-levenshtein "^1.1.3"
|
||||
semver "^5.3.0"
|
||||
|
||||
"@babel/preset-env@7.4.4":
|
||||
version "7.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.4.4.tgz#b6f6825bfb27b3e1394ca3de4f926482722c1d6f"
|
||||
integrity sha512-FU1H+ACWqZZqfw1x2G1tgtSSYSfxJLkpaUQL37CenULFARDo+h4xJoVHzRoHbK+85ViLciuI7ME4WTIhFRBBlw==
|
||||
"@babel/preset-env@7.4.5":
|
||||
version "7.4.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.4.5.tgz#2fad7f62983d5af563b5f3139242755884998a58"
|
||||
integrity sha512-f2yNVXM+FsR5V8UwcFeIHzHWgnhXg3NpRmy0ADvALpnhB0SLbCvrCRr4BLOUYbQNLS+Z0Yer46x9dJXpXewI7w==
|
||||
dependencies:
|
||||
"@babel/helper-module-imports" "^7.0.0"
|
||||
"@babel/helper-plugin-utils" "^7.0.0"
|
||||
@ -1293,12 +1298,12 @@
|
||||
"@babel/plugin-transform-modules-commonjs" "^7.4.4"
|
||||
"@babel/plugin-transform-modules-systemjs" "^7.4.4"
|
||||
"@babel/plugin-transform-modules-umd" "^7.2.0"
|
||||
"@babel/plugin-transform-named-capturing-groups-regex" "^7.4.4"
|
||||
"@babel/plugin-transform-named-capturing-groups-regex" "^7.4.5"
|
||||
"@babel/plugin-transform-new-target" "^7.4.4"
|
||||
"@babel/plugin-transform-object-super" "^7.2.0"
|
||||
"@babel/plugin-transform-parameters" "^7.4.4"
|
||||
"@babel/plugin-transform-property-literals" "^7.2.0"
|
||||
"@babel/plugin-transform-regenerator" "^7.4.4"
|
||||
"@babel/plugin-transform-regenerator" "^7.4.5"
|
||||
"@babel/plugin-transform-reserved-words" "^7.2.0"
|
||||
"@babel/plugin-transform-shorthand-properties" "^7.2.0"
|
||||
"@babel/plugin-transform-spread" "^7.2.0"
|
||||
@ -1307,8 +1312,8 @@
|
||||
"@babel/plugin-transform-typeof-symbol" "^7.2.0"
|
||||
"@babel/plugin-transform-unicode-regex" "^7.4.4"
|
||||
"@babel/types" "^7.4.4"
|
||||
browserslist "^4.5.2"
|
||||
core-js-compat "^3.0.0"
|
||||
browserslist "^4.6.0"
|
||||
core-js-compat "^3.1.1"
|
||||
invariant "^2.2.2"
|
||||
js-levenshtein "^1.1.3"
|
||||
semver "^5.5.0"
|
||||
@ -1416,13 +1421,20 @@
|
||||
dependencies:
|
||||
regenerator-runtime "^0.13.2"
|
||||
|
||||
"@babel/runtime@^7.1.5", "@babel/runtime@^7.4.4":
|
||||
"@babel/runtime@^7.1.5":
|
||||
version "7.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.4.tgz#dc2e34982eb236803aa27a07fea6857af1b9171d"
|
||||
integrity sha512-w0+uT71b6Yi7i5SE0co4NioIpSYS6lLiXvCzWzGSKvpK5vdQtCbICHMj+gbAKAOtxiV6HsVh/MBdaF9EQ6faSg==
|
||||
dependencies:
|
||||
regenerator-runtime "^0.13.2"
|
||||
|
||||
"@babel/runtime@^7.4.5":
|
||||
version "7.4.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.5.tgz#582bb531f5f9dc67d2fcb682979894f75e253f12"
|
||||
integrity sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ==
|
||||
dependencies:
|
||||
regenerator-runtime "^0.13.2"
|
||||
|
||||
"@babel/template@^7.0.0", "@babel/template@^7.1.0", "@babel/template@^7.2.2", "@babel/template@^7.4.0":
|
||||
version "7.4.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.0.tgz#12474e9c077bae585c5d835a95c0b0b790c25c8b"
|
||||
@ -1471,6 +1483,21 @@
|
||||
globals "^11.1.0"
|
||||
lodash "^4.17.11"
|
||||
|
||||
"@babel/traverse@^7.4.5":
|
||||
version "7.4.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.4.5.tgz#4e92d1728fd2f1897dafdd321efbff92156c3216"
|
||||
integrity sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.0.0"
|
||||
"@babel/generator" "^7.4.4"
|
||||
"@babel/helper-function-name" "^7.1.0"
|
||||
"@babel/helper-split-export-declaration" "^7.4.4"
|
||||
"@babel/parser" "^7.4.5"
|
||||
"@babel/types" "^7.4.4"
|
||||
debug "^4.1.0"
|
||||
globals "^11.1.0"
|
||||
lodash "^4.17.11"
|
||||
|
||||
"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.2.2", "@babel/types@^7.3.0", "@babel/types@^7.4.0":
|
||||
version "7.4.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.4.0.tgz#670724f77d24cce6cc7d8cf64599d511d164894c"
|
||||
@ -1843,14 +1870,14 @@
|
||||
"@babel/runtime" "^7.2.0"
|
||||
|
||||
"@material-ui/styles@^4.0.0":
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@material-ui/styles/-/styles-4.0.1.tgz#67e880d490f010c9f2956c572b07d218bfa255d7"
|
||||
integrity sha512-SywkWzBzXvm9dUY2rtmzTc/FTlKGctVYGb8hzPZyHU3OI4X9jQH4YnR/OiqTwg4jNpFnASJX5rW1rEUJM+ZnhA==
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@material-ui/styles/-/styles-4.0.0.tgz#789461e3e2b484a26206db7656c78b3248904f3b"
|
||||
integrity sha512-TUpmXlyZDVOl6E2//+UzsZxgi2E+2L753QY02nNkbAC6PPx8FUBqvnjYSGqX0V/BjTJ/fD4CkoS6ZpY3lHf+Gg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.2.0"
|
||||
"@emotion/hash" "^0.7.1"
|
||||
"@material-ui/types" "^4.0.1"
|
||||
"@material-ui/utils" "^4.0.1"
|
||||
"@material-ui/types" "^4.0.0"
|
||||
"@material-ui/utils" "^4.0.0"
|
||||
clsx "^1.0.2"
|
||||
deepmerge "^3.0.0"
|
||||
hoist-non-react-statics "^3.2.1"
|
||||
@ -1866,24 +1893,24 @@
|
||||
warning "^4.0.1"
|
||||
|
||||
"@material-ui/system@^4.0.0":
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@material-ui/system/-/system-4.0.1.tgz#d78969f3dd9eb6baf82ded0ef183368d8befb00b"
|
||||
integrity sha512-NlMF4jZk1xx7taUOT+QhrJw7v7uUi9Ae+G8C8fowGgP5x04whxOuSuSmN9a8u2j7dc8XqahR0OJeA6Xch8ymog==
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@material-ui/system/-/system-4.0.0.tgz#bb9a03aa3cf0405c2159c2408b7b8b20b959b119"
|
||||
integrity sha512-SIsqIwjix98Mqw9LVAmRqTs10E4S/SP5n5mlBlhHVHI+2XG2c+MaCPzOF2Zxq0KdqOMgTb7/aevR3mG9UmODxg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.2.0"
|
||||
deepmerge "^3.0.0"
|
||||
prop-types "^15.7.2"
|
||||
warning "^4.0.1"
|
||||
|
||||
"@material-ui/types@^4.0.0", "@material-ui/types@^4.0.1":
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@material-ui/types/-/types-4.0.1.tgz#a05fe801a10604d99e593303df9e843868008d4f"
|
||||
integrity sha512-FGhogU9l4s+ycMcC3hhOAvu5hcWa5TVSCCGUf4NOUF904ythroWSAvcCHn92NjftXZ8WZqmtPjL1K/d90Pq/3Q==
|
||||
"@material-ui/types@^4.0.0":
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@material-ui/types/-/types-4.0.0.tgz#6804123b1c5d56db232fc54fe745c5b1c3ef7306"
|
||||
integrity sha512-wuiQMo8nSljZR1oWh57UQYssdtFqaU+Cbhr16uLohzzTllpCAK4LkH0slnH3n+5vCa2dgOdNlZTrmsIDDwvRJQ==
|
||||
|
||||
"@material-ui/utils@^4.0.0", "@material-ui/utils@^4.0.1":
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@material-ui/utils/-/utils-4.0.1.tgz#ea3ab6fe4eea9588713813cff6eca33bda3519f6"
|
||||
integrity sha512-mWRcMQIrqsXGze73tx3hNfB1NUu+BL/oIQI7TImyuhsia1EQXw3bPVBjgwTzqM6MqfXw6eh1fR45Di+WN5hASA==
|
||||
"@material-ui/utils@^4.0.0":
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@material-ui/utils/-/utils-4.0.0.tgz#cfe8da2328afea8fbc5599d8e7abd64e25828bc3"
|
||||
integrity sha512-gjz52hO1hkIbKPMng1diQybVgtfgCptOCrulUs4emSCHHKUoR1zfT+IUrjgOaKIpYZNOgS/CI7KDMp689+FzeQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.2.0"
|
||||
prop-types "^15.7.2"
|
||||
@ -4703,6 +4730,15 @@ browserslist@^4.0.0, browserslist@^4.3.4, browserslist@^4.5.2, browserslist@^4.5
|
||||
electron-to-chromium "^1.3.122"
|
||||
node-releases "^1.1.13"
|
||||
|
||||
browserslist@^4.6.0:
|
||||
version "4.6.0"
|
||||
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.0.tgz#5274028c26f4d933d5b1323307c1d1da5084c9ff"
|
||||
integrity sha512-Jk0YFwXBuMOOol8n6FhgkDzn3mY9PYLYGk29zybF05SbRTsMgPqmTNeQQhOghCxq5oFqAXE3u4sYddr4C0uRhg==
|
||||
dependencies:
|
||||
caniuse-lite "^1.0.30000967"
|
||||
electron-to-chromium "^1.3.133"
|
||||
node-releases "^1.1.19"
|
||||
|
||||
bs58@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/bs58/-/bs58-2.0.1.tgz#55908d58f1982aba2008fa1bed8f91998a29bf8d"
|
||||
@ -4967,6 +5003,11 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000929, can
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000959.tgz#215d3455866da874179c6170202f0cc64f961cfd"
|
||||
integrity sha512-6BvqmS0VLmY4sJCz6AbIJRQfcns8McDxi424y+3kmtisJeA9/5qslP+K8sqremDau7UU4WSsqdRP032JrqZY8Q==
|
||||
|
||||
caniuse-lite@^1.0.30000967:
|
||||
version "1.0.30000971"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000971.tgz#d1000e4546486a6977756547352bc96a4cfd2b13"
|
||||
integrity sha512-TQFYFhRS0O5rdsmSbF1Wn+16latXYsQJat66f7S7lizXW1PVpWJeZw9wqqVLIjuxDRz7s7xRUj13QCfd8hKn6g==
|
||||
|
||||
capture-exit@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4"
|
||||
@ -5643,11 +5684,25 @@ core-js-compat@^3.0.0:
|
||||
core-js-pure "3.0.1"
|
||||
semver "^6.0.0"
|
||||
|
||||
core-js-compat@^3.1.1:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.1.2.tgz#c29ab9722517094b98622175e2218c3b7398176d"
|
||||
integrity sha512-X0Ch5f6itrHxhg5HSJucX6nNLNAGr+jq+biBh6nPGc3YAWz2a8p/ZIZY8cUkDzSRNG54omAuu3hoEF8qZbu/6Q==
|
||||
dependencies:
|
||||
browserslist "^4.6.0"
|
||||
core-js-pure "3.1.2"
|
||||
semver "^6.0.0"
|
||||
|
||||
core-js-pure@3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.0.1.tgz#37358fb0d024e6b86d443d794f4e37e949098cbe"
|
||||
integrity sha512-mSxeQ6IghKW3MoyF4cz19GJ1cMm7761ON+WObSyLfTu/Jn3x7w4NwNFnrZxgl4MTSvYYepVLNuRtlB4loMwJ5g==
|
||||
|
||||
core-js-pure@3.1.2:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.1.2.tgz#62fc435f35b7374b9b782013cdcb2f97e9f6dffa"
|
||||
integrity sha512-5ckIdBF26B3ldK9PM177y2ZcATP2oweam9RskHSoqfZCrJ2As6wVg8zJ1zTriFsZf6clj/N1ThDFRGaomMsh9w==
|
||||
|
||||
core-js@3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.0.1.tgz#1343182634298f7f38622f95e73f54e48ddf4738"
|
||||
@ -6649,6 +6704,11 @@ electron-to-chromium@^1.3.103, electron-to-chromium@^1.3.122, electron-to-chromi
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.124.tgz#861fc0148748a11b3e5ccebdf8b795ff513fa11f"
|
||||
integrity sha512-glecGr/kFdfeXUHOHAWvGcXrxNU+1wSO/t5B23tT1dtlvYB26GY8aHzZSWD7HqhqC800Lr+w/hQul6C5AF542w==
|
||||
|
||||
electron-to-chromium@^1.3.133:
|
||||
version "1.3.137"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.137.tgz#ba7c88024984c038a5c5c434529aabcea7b42944"
|
||||
integrity sha512-kGi32g42a8vS/WnYE7ELJyejRT7hbr3UeOOu0WeuYuQ29gCpg9Lrf6RdcTQVXSt/v0bjCfnlb/EWOOsiKpTmkw==
|
||||
|
||||
elliptic@6.3.3:
|
||||
version "6.3.3"
|
||||
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.3.3.tgz#5482d9646d54bcb89fd7d994fc9e2e9568876e3f"
|
||||
@ -6879,17 +6939,17 @@ eslint-module-utils@^2.4.0:
|
||||
debug "^2.6.8"
|
||||
pkg-dir "^2.0.0"
|
||||
|
||||
eslint-plugin-flowtype@3.9.0:
|
||||
version "3.9.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-3.9.0.tgz#031949e2685e9e8658a1166e1cac3163313c3e0d"
|
||||
integrity sha512-g5CMBJx0dagvOOYLo0ws5Y4+Ma8BBDtgQU+AkjL3W0z8LJUsGL2avY2/bsTZS69qzEA+G7qWKleI1aZp6QNBBw==
|
||||
eslint-plugin-flowtype@3.9.1:
|
||||
version "3.9.1"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-3.9.1.tgz#6491d930e1f96d53c510e0393e635fddd4a4cac5"
|
||||
integrity sha512-ZlV6SbIXqz2ysvG0F64ZH07dqzLrwMdM1s0UNfoxdXjr4kMKuPPoLViwK+gFC952QIf341AmP4BKtKOhcB96Ug==
|
||||
dependencies:
|
||||
lodash "^4.17.11"
|
||||
|
||||
eslint-plugin-import@2.17.2:
|
||||
version "2.17.2"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.17.2.tgz#d227d5c6dc67eca71eb590d2bb62fb38d86e9fcb"
|
||||
integrity sha512-m+cSVxM7oLsIpmwNn2WXTJoReOF9f/CtLMo7qOVmKd1KntBy0hEcuNZ3erTmWjx+DxRO0Zcrm5KwAvI9wHcV5g==
|
||||
eslint-plugin-import@2.17.3:
|
||||
version "2.17.3"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.17.3.tgz#00548b4434c18faebaba04b24ae6198f280de189"
|
||||
integrity sha512-qeVf/UwXFJbeyLbxuY8RgqDyEKCkqV7YC+E5S5uOjAp4tOc8zj01JP3ucoBM8JcEqd1qRasJSg6LLlisirfy0Q==
|
||||
dependencies:
|
||||
array-includes "^3.0.3"
|
||||
contains-path "^0.1.0"
|
||||
@ -6901,12 +6961,12 @@ eslint-plugin-import@2.17.2:
|
||||
lodash "^4.17.11"
|
||||
minimatch "^3.0.4"
|
||||
read-pkg-up "^2.0.0"
|
||||
resolve "^1.10.0"
|
||||
resolve "^1.11.0"
|
||||
|
||||
eslint-plugin-jest@22.5.1:
|
||||
version "22.5.1"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-22.5.1.tgz#a31dfe9f9513c6af7c17ece4c65535a1370f060b"
|
||||
integrity sha512-c3WjZR/HBoi4GedJRwo2OGHa8Pzo1EbSVwQ2HFzJ+4t2OoYM7Alx646EH/aaxZ+9eGcPiq0FT0UGkRuFFx2FHg==
|
||||
eslint-plugin-jest@22.6.4:
|
||||
version "22.6.4"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-22.6.4.tgz#2895b047dd82f90f43a58a25cf136220a21c9104"
|
||||
integrity sha512-36OqnZR/uMCDxXGmTsqU4RwllR0IiB/XF8GW3ODmhsjiITKuI0GpgultWFt193ipN3HARkaIcKowpE6HBvRHNg==
|
||||
|
||||
eslint-plugin-jsx-a11y@^6.0.3:
|
||||
version "6.2.1"
|
||||
@ -11969,6 +12029,13 @@ node-releases@^1.1.13, node-releases@^1.1.3:
|
||||
dependencies:
|
||||
semver "^5.3.0"
|
||||
|
||||
node-releases@^1.1.19:
|
||||
version "1.1.21"
|
||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.21.tgz#46c86f9adaceae4d63c75d3c2f2e6eee618e55f3"
|
||||
integrity sha512-TwnURTCjc8a+ElJUjmDqU6+12jhli1Q61xOQmdZ7ECZVBZuQpN/1UnembiIHDM1wCcfLvh5wrWXUF5H6ufX64Q==
|
||||
dependencies:
|
||||
semver "^5.3.0"
|
||||
|
||||
node-version@^1.0.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/node-version/-/node-version-1.2.0.tgz#34fde3ffa8e1149bd323983479dda620e1b5060d"
|
||||
@ -13786,12 +13853,13 @@ react-final-form-listeners@^1.0.2:
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.1.5"
|
||||
|
||||
react-final-form@5.1.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/react-final-form/-/react-final-form-5.1.0.tgz#f9402dfdf9325e5605cd8c9c7f4ef3e9ecf0702c"
|
||||
integrity sha512-Gxqp5DVklAgSe/4l57S0BrjbsTSwXBll0J0FHk9y+Fcoz3Aau43jvonYIHCesnzfd0zlh7lxdXiyOWqinjIwiQ==
|
||||
react-final-form@6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/react-final-form/-/react-final-form-6.0.0.tgz#5c574f519e12a6edea96f62c84e884f565caa7b9"
|
||||
integrity sha512-xrVFg7ZPGyeUjH9B2E+TjUihcFopucl7NJbaq/FeUCk0NR9hAqM1gIilHXgShm3tPFDW7SJUgL9CB3A/PH2bWg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.4.4"
|
||||
"@babel/runtime" "^7.4.5"
|
||||
ts-essentials "^2.0.2"
|
||||
|
||||
react-focus-lock@^1.17.7:
|
||||
version "1.18.3"
|
||||
@ -13813,10 +13881,10 @@ react-helmet-async@^0.2.0:
|
||||
react-fast-compare "^2.0.2"
|
||||
shallowequal "^1.0.2"
|
||||
|
||||
react-hot-loader@4.8.7:
|
||||
version "4.8.7"
|
||||
resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.8.7.tgz#8bcec3105d4e0e3cba52aa59800568fc9fb3322d"
|
||||
integrity sha512-ctWAu8iwp37qd4w1qhjN6neDA1e5bSmAUY46L2l5SeK+i8AfzX+7lrpaLW4TJVaiBv5MlqIzA1ClNnvlvsy5Lg==
|
||||
react-hot-loader@4.8.8:
|
||||
version "4.8.8"
|
||||
resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.8.8.tgz#71e3c7ba301556aa24c52cef2f6ed0af82395eea"
|
||||
integrity sha512-58bgeS7So8V93MhhnKogbraor8xdrTncil+b6IoIXkTIr3blJNAE7bU4tn/iJvy2J7rjxQmKFRaxKrWdKUZpqg==
|
||||
dependencies:
|
||||
fast-levenshtein "^2.0.6"
|
||||
global "^4.3.0"
|
||||
@ -14321,6 +14389,13 @@ regenerator-transform@^0.13.4:
|
||||
dependencies:
|
||||
private "^0.1.6"
|
||||
|
||||
regenerator-transform@^0.14.0:
|
||||
version "0.14.0"
|
||||
resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.0.tgz#2ca9aaf7a2c239dd32e4761218425b8c7a86ecaf"
|
||||
integrity sha512-rtOelq4Cawlbmq9xuMR5gdFmv7ku/sFoB7sRiywx7aq53bc52b4j6zvH7Te1Vt/X2YveDKnCGUbioieU7FEL3w==
|
||||
dependencies:
|
||||
private "^0.1.6"
|
||||
|
||||
regex-cache@^0.4.2:
|
||||
version "0.4.4"
|
||||
resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd"
|
||||
@ -14341,6 +14416,11 @@ regexp-tree@^0.1.0:
|
||||
resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.5.tgz#7cd71fca17198d04b4176efd79713f2998009397"
|
||||
integrity sha512-nUmxvfJyAODw+0B13hj8CFVAxhe7fDEAgJgaotBu3nnR+IgGgZq59YedJP5VYTlkEfqjuK6TuRpnymKdatLZfQ==
|
||||
|
||||
regexp-tree@^0.1.6:
|
||||
version "0.1.10"
|
||||
resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.10.tgz#d837816a039c7af8a8d64d7a7c3cf6a1d93450bc"
|
||||
integrity sha512-K1qVSbcedffwuIslMwpe6vGlj+ZXRnGkvjAtFHfDZZZuEdA/h0dxljAPu9vhUo6Rrx2U2AwJ+nSQ6hK+lrP5MQ==
|
||||
|
||||
regexp.prototype.flags@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz#6b30724e306a27833eeb171b66ac8890ba37e41c"
|
||||
@ -14642,7 +14722,7 @@ resolve@^1.1.6, resolve@^1.10.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1,
|
||||
dependencies:
|
||||
path-parse "^1.0.6"
|
||||
|
||||
resolve@^1.10.1:
|
||||
resolve@^1.10.1, resolve@^1.11.0:
|
||||
version "1.11.0"
|
||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.0.tgz#4014870ba296176b86343d50b60f3b50609ce232"
|
||||
integrity sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==
|
||||
@ -16359,10 +16439,10 @@ truffle-artifactor@^2.1.2:
|
||||
truffle-contract "^2.0.3"
|
||||
truffle-contract-schema "^0.0.5"
|
||||
|
||||
truffle-artifactor@^4.0.15:
|
||||
version "4.0.15"
|
||||
resolved "https://registry.yarnpkg.com/truffle-artifactor/-/truffle-artifactor-4.0.15.tgz#00a0defbb2a321cacaa5c08475a17ba3e6d29ad8"
|
||||
integrity sha512-7aVIpA9LoDXAxbpq7jNwIH2UYnfs5w19PHZqGMgU+f4YPZ+1jDTbVP1KlxWy9wnLbEhTDsF0LNle9Ofxnj3f7w==
|
||||
truffle-artifactor@^4.0.16:
|
||||
version "4.0.16"
|
||||
resolved "https://registry.yarnpkg.com/truffle-artifactor/-/truffle-artifactor-4.0.16.tgz#68ce8a552fb7d9cd7a5a67da08ea478c2d3093d7"
|
||||
integrity sha512-ebz0Suj8nB86WmfY9o6s/oCJ6rqyJcPdZbr5U1kO5g2BYpDFt02zfDwvNNYBQq8ewwxPua/jguyC4zJ9O7fPWw==
|
||||
dependencies:
|
||||
fs-extra "6.0.1"
|
||||
lodash "4.17.11"
|
||||
@ -16402,21 +16482,21 @@ truffle-code-utils@^1.2.3:
|
||||
resolved "https://registry.yarnpkg.com/truffle-code-utils/-/truffle-code-utils-1.2.3.tgz#85e90078c27546e0e2fbb301d91c64b0e8bf186c"
|
||||
integrity sha512-3GkhmuRq38TewsZm0cgLx9xqTbA4avHXjb8xChYl46b6v86P/DmpCesVM8eh6z/y5uxWGyAak0xwxWb3GmXuiA==
|
||||
|
||||
truffle-compile-vyper@^1.0.15:
|
||||
version "1.0.15"
|
||||
resolved "https://registry.yarnpkg.com/truffle-compile-vyper/-/truffle-compile-vyper-1.0.15.tgz#15219b318a51c40600f736a0a27f3086b3b5c1e0"
|
||||
integrity sha512-2fMSSk+nUUkxVLQ8yKXJ8gFrjUVsdPPeangNXF/JHgIH3Nm9OcjkNWw83FAs5iQNufxV3Um8mG49NvjXbhFWKg==
|
||||
truffle-compile-vyper@^1.0.16:
|
||||
version "1.0.16"
|
||||
resolved "https://registry.yarnpkg.com/truffle-compile-vyper/-/truffle-compile-vyper-1.0.16.tgz#146cba5d0fa450b28bc5cfdb250bbc3a247cf923"
|
||||
integrity sha512-ENYz+GkJ4S/KLO2OWHnve4cCskCKsh7rZpwj83RDnx6a+YyZtEVchC78AkZf61UvzwpQdQLK3gOpWMNbftiaag==
|
||||
dependencies:
|
||||
async "2.6.1"
|
||||
colors "^1.1.2"
|
||||
eslint "^5.5.0"
|
||||
minimatch "^3.0.4"
|
||||
truffle-compile "^4.0.15"
|
||||
truffle-compile "^4.0.16"
|
||||
|
||||
truffle-compile@^4.0.15:
|
||||
version "4.0.15"
|
||||
resolved "https://registry.yarnpkg.com/truffle-compile/-/truffle-compile-4.0.15.tgz#f28168e3c8b771f79123f860b4c76bb693dcfe15"
|
||||
integrity sha512-HXWI2tiq+Os0VN8hkHggKzEEbMSlZz86kejoRMMeaSTnw8YzxlqmarjEcaOpdm2MtjXSPfQcXiPic2FvIVN6FQ==
|
||||
truffle-compile@^4.0.16:
|
||||
version "4.0.16"
|
||||
resolved "https://registry.yarnpkg.com/truffle-compile/-/truffle-compile-4.0.16.tgz#b524f3492545d1b5f32a03bfd0e697be72d94702"
|
||||
integrity sha512-MioDkKKxUalw611mAujkPSq+16E3vKkQ2OlUcJ5T8zjdVRKSdg53bR3zy9WsP1V5p5cx4LUVA0dJvhKHwpvalA==
|
||||
dependencies:
|
||||
async "2.6.1"
|
||||
colors "^1.1.2"
|
||||
@ -16506,10 +16586,10 @@ 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.16, truffle-contract@^4.0.16:
|
||||
version "4.0.16"
|
||||
resolved "https://registry.yarnpkg.com/truffle-contract/-/truffle-contract-4.0.16.tgz#5175683a2ab20f361d19ed7caaf579b7d3912b42"
|
||||
integrity sha512-Ooe0GR4Wbub2Dl5tsl09dWfyZEinPPijcneFHJWPDsa1bkp/6PYpX7NWd0wZrt9pI8VJ1EceDhg4rBTo4slcxA==
|
||||
truffle-contract@4.0.17, truffle-contract@^4.0.17:
|
||||
version "4.0.17"
|
||||
resolved "https://registry.yarnpkg.com/truffle-contract/-/truffle-contract-4.0.17.tgz#2b4dce1e140c34f3c0309c4e403927e3092b6786"
|
||||
integrity sha512-LV9Ws/RaHReSf6gTmrka92I4jXRPy59t3bsiF0655gAXe7Pz4DYCTmNti2bR7/vZIU8qtLlDSUmImuyFpO8p5g==
|
||||
dependencies:
|
||||
bignumber.js "^7.2.1"
|
||||
ethers "^4.0.0-beta.1"
|
||||
@ -16532,10 +16612,10 @@ truffle-contract@^2.0.3:
|
||||
truffle-contract-schema "^0.0.5"
|
||||
web3 "^0.20.1"
|
||||
|
||||
truffle-core@^5.0.18:
|
||||
version "5.0.18"
|
||||
resolved "https://registry.yarnpkg.com/truffle-core/-/truffle-core-5.0.18.tgz#b47a001909f2471ebe71ddae3fd28b6bef47ce7b"
|
||||
integrity sha512-JyN7cwkA6oHh1Dg3L7PTirsCjJN+DTnA3JnRVhMexxYb/omWs2kp+5QxqokZK7Y8zpz9c0U+EREP/egHoo4DoA==
|
||||
truffle-core@^5.0.19:
|
||||
version "5.0.19"
|
||||
resolved "https://registry.yarnpkg.com/truffle-core/-/truffle-core-5.0.19.tgz#dc357d7364c12f70341e58ac9578cb087b775be1"
|
||||
integrity sha512-AnKehAu4bS+MQxAMmyIhVlAmmhPROTmv8LmEqJzGcHhrcI/yOINe4iFcZiIXKzrrx/7k4DQf/UR4EsI/ZUFW9A==
|
||||
dependencies:
|
||||
app-module-path "^2.2.0"
|
||||
async "2.6.1"
|
||||
@ -16566,44 +16646,44 @@ truffle-core@^5.0.18:
|
||||
source-map-support "^0.5.3"
|
||||
spawn-args "^0.1.0"
|
||||
temp "^0.8.3"
|
||||
truffle-artifactor "^4.0.15"
|
||||
truffle-artifactor "^4.0.16"
|
||||
truffle-box "^1.0.26"
|
||||
truffle-compile "^4.0.15"
|
||||
truffle-compile "^4.0.16"
|
||||
truffle-config "^1.1.12"
|
||||
truffle-contract "^4.0.16"
|
||||
truffle-contract "^4.0.17"
|
||||
truffle-contract-sources "^0.1.3"
|
||||
truffle-debug-utils "^1.0.16"
|
||||
truffle-debugger "^5.0.11"
|
||||
truffle-deployer "^3.0.17"
|
||||
truffle-debug-utils "^1.0.17"
|
||||
truffle-debugger "^5.0.12"
|
||||
truffle-deployer "^3.0.18"
|
||||
truffle-error "^0.0.4"
|
||||
truffle-expect "^0.0.8"
|
||||
truffle-init "^1.0.7"
|
||||
truffle-interface-adapter "^0.1.5"
|
||||
truffle-migrate "^3.0.17"
|
||||
truffle-migrate "^3.0.18"
|
||||
truffle-provider "^0.1.9"
|
||||
truffle-provisioner "^0.1.4"
|
||||
truffle-require "^2.0.12"
|
||||
truffle-resolver "^5.0.13"
|
||||
truffle-solidity-utils "^1.2.2"
|
||||
truffle-workflow-compile "^2.0.15"
|
||||
truffle-workflow-compile "^2.0.16"
|
||||
universal-analytics "^0.4.17"
|
||||
web3 "1.0.0-beta.37"
|
||||
xregexp "^4.2.4"
|
||||
yargs "^8.0.2"
|
||||
|
||||
truffle-debug-utils@^1.0.16:
|
||||
version "1.0.16"
|
||||
resolved "https://registry.yarnpkg.com/truffle-debug-utils/-/truffle-debug-utils-1.0.16.tgz#1b1b166a9a7a8f56c152cd76616ff43255ebfbdc"
|
||||
integrity sha512-oBM9ljrsm25W8oG3lJ6jx/wMNLND2HkNHw2ecqZWozVYvDOdxKfZdW4Ppbj2I10MXwvNUxGw4hcTlVE5neut4w==
|
||||
truffle-debug-utils@^1.0.17:
|
||||
version "1.0.17"
|
||||
resolved "https://registry.yarnpkg.com/truffle-debug-utils/-/truffle-debug-utils-1.0.17.tgz#d044fdd516898a6a9faa0b240707df0f8f1f9d58"
|
||||
integrity sha512-M+FgovTF0HSnPqLfl8NoEM0r3H/7VI4VTGQA6EKYui0kP0TlauFXrp+FKp9250cj4qLkhyMUIsKDouv9eV4vkg==
|
||||
dependencies:
|
||||
async "2.6.1"
|
||||
debug "^4.1.0"
|
||||
node-dir "0.1.17"
|
||||
|
||||
truffle-debugger@^5.0.11:
|
||||
version "5.0.11"
|
||||
resolved "https://registry.yarnpkg.com/truffle-debugger/-/truffle-debugger-5.0.11.tgz#2778ec7220e8926853d0d8dbf76868643551fa75"
|
||||
integrity sha512-4cVtVE8kVXczJdjHJvpasymsuFR8ORpfJJgN8A0QvI9yEv4TePajmh5muD7yLowJySXaho/HOGfzmQLKhDTslQ==
|
||||
truffle-debugger@^5.0.12:
|
||||
version "5.0.12"
|
||||
resolved "https://registry.yarnpkg.com/truffle-debugger/-/truffle-debugger-5.0.12.tgz#573e4bbd8fd2afbe8d57abf2e1fe2be9598b8112"
|
||||
integrity sha512-sqlAvSNCm5K/qci2eEhJyvJNbZAapVloDrmaZe1e/s3sLR8trmFVrXiuDlpMNVcPSI5Ul0G8zqiNqdqsR79PiQ==
|
||||
dependencies:
|
||||
bn.js "^4.11.8"
|
||||
debug "^4.1.0"
|
||||
@ -16648,13 +16728,13 @@ truffle-decoder@^3.0.3:
|
||||
truffle-decode-utils "^1.0.12"
|
||||
web3 "1.0.0-beta.37"
|
||||
|
||||
truffle-deployer@^3.0.17:
|
||||
version "3.0.17"
|
||||
resolved "https://registry.yarnpkg.com/truffle-deployer/-/truffle-deployer-3.0.17.tgz#b420b45a1549dd1bd0b0d44536c908fca95cb7c3"
|
||||
integrity sha512-3dsqy1tk3yn1BK5/wbE5zWYsd92UoDuiElp2Rnpx1v4bepb5KrpVKJJsrQnbrKmdzB6Izcd1OtX5cZ+c2F3WYg==
|
||||
truffle-deployer@^3.0.18:
|
||||
version "3.0.18"
|
||||
resolved "https://registry.yarnpkg.com/truffle-deployer/-/truffle-deployer-3.0.18.tgz#e82605895ac6eb4f413f66ce82b3d09ab1e42f6d"
|
||||
integrity sha512-NWIn/Q/LF34stGqapQtTLhmhJYhmO/QAaygpD1rKJLBUNUjJoynGHf68DpovacoPpZBxfAvRDWhrsNNpY8S3+A==
|
||||
dependencies:
|
||||
emittery "^0.4.0"
|
||||
truffle-contract "^4.0.16"
|
||||
truffle-contract "^4.0.17"
|
||||
truffle-expect "^0.0.8"
|
||||
|
||||
truffle-error@^0.0.3:
|
||||
@ -16721,16 +16801,16 @@ truffle-interface-adapter@^0.1.5:
|
||||
bn.js "^4.11.8"
|
||||
web3 "1.0.0-beta.37"
|
||||
|
||||
truffle-migrate@^3.0.17:
|
||||
version "3.0.17"
|
||||
resolved "https://registry.yarnpkg.com/truffle-migrate/-/truffle-migrate-3.0.17.tgz#b8b5103b9879d9366e206598d90abadd9a9017f7"
|
||||
integrity sha512-5lGFxYdWilJSJncK95Q1I1/EnGVSjJKNjoDxG22nY5s54cMtr8lEyK6GN5+8DYdzhbI+VKob12vB/b/Jhb2l4w==
|
||||
truffle-migrate@^3.0.18:
|
||||
version "3.0.18"
|
||||
resolved "https://registry.yarnpkg.com/truffle-migrate/-/truffle-migrate-3.0.18.tgz#b3ee225168a726b1d757817d094e5db8de73bf67"
|
||||
integrity sha512-36SiTqvKdTTCQrTAMome0jg1zDf6NNA6ssmAifubgzNHk1dFQk1V5A2FKVy/JP+jnwlFHA3kr6yfVxy0dA6LAA==
|
||||
dependencies:
|
||||
async "2.6.1"
|
||||
emittery "^0.4.0"
|
||||
node-dir "0.1.17"
|
||||
truffle-config "^1.1.12"
|
||||
truffle-deployer "^3.0.17"
|
||||
truffle-deployer "^3.0.18"
|
||||
truffle-expect "^0.0.8"
|
||||
truffle-interface-adapter "^0.1.5"
|
||||
truffle-reporters "^1.0.9"
|
||||
@ -16791,41 +16871,41 @@ truffle-resolver@^5.0.13:
|
||||
truffle-expect "^0.0.8"
|
||||
truffle-provisioner "^0.1.4"
|
||||
|
||||
truffle-solidity-loader@0.1.17:
|
||||
version "0.1.17"
|
||||
resolved "https://registry.yarnpkg.com/truffle-solidity-loader/-/truffle-solidity-loader-0.1.17.tgz#ad925032d7e42045df8de969d9161343b956eddc"
|
||||
integrity sha512-1pVZs1qO3hitVSHOInwXqty1e1ns7F+kHlXpt0rhFxwVrCHcp3/TH53/QWWdUgiORmPVYnT7Cb6EfVIiIKS7ow==
|
||||
truffle-solidity-loader@0.1.18:
|
||||
version "0.1.18"
|
||||
resolved "https://registry.yarnpkg.com/truffle-solidity-loader/-/truffle-solidity-loader-0.1.18.tgz#d5ccb08892cd53e4fa0fa1b97ecfd46c8d8eb3e3"
|
||||
integrity sha512-Q+M41sZfll+hfhyvac7JNkakXz8d3PKw1c3xmMOvch+8QZHxh1zxWNKYiuATJNmBs8Q9uYcP14dRMt4CIIzBXA==
|
||||
dependencies:
|
||||
chalk "^1.1.3"
|
||||
find-up "^1.1.2"
|
||||
loader-utils "^1.1.0"
|
||||
schema-utils "^1.0.0"
|
||||
truffle-config "^1.1.12"
|
||||
truffle-core "^5.0.18"
|
||||
truffle-core "^5.0.19"
|
||||
|
||||
truffle-solidity-utils@^1.2.2:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/truffle-solidity-utils/-/truffle-solidity-utils-1.2.2.tgz#72100f12317a94cb8e784bc84d8f8832292e5fc0"
|
||||
integrity sha512-27Eos1o33x+tdRogeR8WwWuhRXatHwbp9AHANGSCm46ZhRzSWcObW8Ctm2kKdAP0jZehDLT2e7l5oZ4NJofLMg==
|
||||
|
||||
truffle-workflow-compile@^2.0.15:
|
||||
version "2.0.15"
|
||||
resolved "https://registry.yarnpkg.com/truffle-workflow-compile/-/truffle-workflow-compile-2.0.15.tgz#68402d9573367d1718e2a589c9a0697083c2f81a"
|
||||
integrity sha512-fT5johrcXgDJ4YK8QbLo/XTlfRrg3pc3bV5PNjwhKufmIS5yCNE+moyqbcndbkUxdSu89aDYc/XuCAX/hoivsQ==
|
||||
truffle-workflow-compile@^2.0.16:
|
||||
version "2.0.16"
|
||||
resolved "https://registry.yarnpkg.com/truffle-workflow-compile/-/truffle-workflow-compile-2.0.16.tgz#8a4911d0b4a6c0a31392a12a0a009951a645ec7e"
|
||||
integrity sha512-CTlMeb8P4tdTEYLMAco6TlJDAQsmmD49npIpbe6z5oAU+YIpL0h9vGmAZp9HI9LjwX8gxCjPEsEeuTNdqoy04A==
|
||||
dependencies:
|
||||
mkdirp "^0.5.1"
|
||||
truffle-artifactor "^4.0.15"
|
||||
truffle-compile "^4.0.15"
|
||||
truffle-compile-vyper "^1.0.15"
|
||||
truffle-artifactor "^4.0.16"
|
||||
truffle-compile "^4.0.16"
|
||||
truffle-compile-vyper "^1.0.16"
|
||||
truffle-config "^1.1.12"
|
||||
truffle-expect "^0.0.8"
|
||||
truffle-external-compile "^1.0.9"
|
||||
truffle-resolver "^5.0.13"
|
||||
|
||||
truffle@5.0.18:
|
||||
version "5.0.18"
|
||||
resolved "https://registry.yarnpkg.com/truffle/-/truffle-5.0.18.tgz#2cf309dbf0671bfb5c0994ea8f59b45abb5b7636"
|
||||
integrity sha512-aQPbWSskotSmylj4kiq73Di5X+tHl5ChlvlBAo5brHmsCzvMGIH29UA+t/rK8TRo7i7Kut0HxAgVR5i+bJteAQ==
|
||||
truffle@5.0.19:
|
||||
version "5.0.19"
|
||||
resolved "https://registry.yarnpkg.com/truffle/-/truffle-5.0.19.tgz#3187f11168ed526ffa17cfa6a0d9735208569381"
|
||||
integrity sha512-d4fxChHYCjccW33IO/4KLcGqjTDn+mw7vqdGvGi307CMo+KTtns+5c91+1iOKDQcSKiv8SHYgvtyF7cn/+FPAg==
|
||||
dependencies:
|
||||
app-module-path "^2.2.0"
|
||||
mocha "^4.1.0"
|
||||
@ -16837,6 +16917,11 @@ 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==
|
||||
|
||||
tslib@^1.9.0:
|
||||
version "1.9.3"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
|
||||
@ -18372,10 +18457,10 @@ webpack-sources@^1.1.0, webpack-sources@^1.3.0:
|
||||
source-list-map "^2.0.0"
|
||||
source-map "~0.6.1"
|
||||
|
||||
webpack@4.32.0:
|
||||
version "4.32.0"
|
||||
resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.32.0.tgz#d8726fe73bb362e0e48171990f362df5e747747b"
|
||||
integrity sha512-ofFq9jjAn4HRzlmkcZZrjijbRZcqDw+mM9KrjKd0r6lS0qxyZ7jzICzhphGafXL62dGdjP7TgMK9mZeMLUgZgw==
|
||||
webpack@4.32.2:
|
||||
version "4.32.2"
|
||||
resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.32.2.tgz#3639375364a617e84b914ddb2c770aed511e5bc8"
|
||||
integrity sha512-F+H2Aa1TprTQrpodRAWUMJn7A8MgDx82yQiNvYMaj3d1nv3HetKU0oqEulL9huj8enirKi8KvEXQ3QtuHF89Zg==
|
||||
dependencies:
|
||||
"@webassemblyjs/ast" "1.8.5"
|
||||
"@webassemblyjs/helper-module-context" "1.8.5"
|
||||
|
Loading…
x
Reference in New Issue
Block a user