Safe apps: Extract Iframe messenger to a hook (#1219)

* add useLegalConsent hook in apps

* useAppList hook wip

* fix selecting first app

* update persisting app logic

* update saveToStorage type

* fix crash on apps tab

* add appframe comp

* add handleIframeLoad func

* reuse selectedApp variable in hook

* remove initialAppSelected

* add types for apps component

* fix history types

* extract useIframeMessenger hook

* fix safe-react-components version

* useIframeMessageHandler

* update safe-apps-sdk

* Fix alignment between app list and app iframe

* send safe info on handshake

* fix naming/types for url utils

* fix types and code cleanup

* remove operations

* dep bump

Co-authored-by: Daniel Sanchez <daniel.sanchez@gnosis.pm>
This commit is contained in:
Mikhail Mikheev 2020-08-13 15:37:34 +04:00 committed by GitHub
parent 883111f9b9
commit 7a4773511c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 613 additions and 496 deletions

View File

@ -162,8 +162,9 @@
] ]
}, },
"dependencies": { "dependencies": {
"@gnosis.pm/safe-apps-sdk": "0.3.1",
"@gnosis.pm/safe-contracts": "1.1.1-dev.2", "@gnosis.pm/safe-contracts": "1.1.1-dev.2",
"@gnosis.pm/safe-react-components": "https://github.com/gnosis/safe-react-components.git#45c746a", "@gnosis.pm/safe-react-components": "https://github.com/gnosis/safe-react-components.git#45c746a12661b9c38e839e76022b6a0a92285db7",
"@gnosis.pm/util-contracts": "2.0.6", "@gnosis.pm/util-contracts": "2.0.6",
"@ledgerhq/hw-transport-node-hid": "5.19.1", "@ledgerhq/hw-transport-node-hid": "5.19.1",
"@material-ui/core": "4.11.0", "@material-ui/core": "4.11.0",
@ -173,7 +174,7 @@
"async-sema": "^3.1.0", "async-sema": "^3.1.0",
"axios": "0.19.2", "axios": "0.19.2",
"bignumber.js": "9.0.0", "bignumber.js": "9.0.0",
"bnc-onboard": "1.10.3", "bnc-onboard": "1.11.0",
"classnames": "^2.2.6", "classnames": "^2.2.6",
"concurrently": "^5.2.0", "concurrently": "^5.2.0",
"connected-react-router": "6.8.0", "connected-react-router": "6.8.0",
@ -229,21 +230,21 @@
}, },
"devDependencies": { "devDependencies": {
"@testing-library/jest-dom": "5.11.2", "@testing-library/jest-dom": "5.11.2",
"@testing-library/react": "10.4.7", "@testing-library/react": "10.4.8",
"@testing-library/user-event": "12.0.17", "@testing-library/user-event": "12.1.0",
"@typechain/web3-v1": "^1.0.0", "@typechain/web3-v1": "^1.0.0",
"@types/history": "4.6.2", "@types/history": "4.6.2",
"@types/jest": "^26.0.7", "@types/jest": "^26.0.9",
"@types/lodash.memoize": "^4.1.6", "@types/lodash.memoize": "^4.1.6",
"@types/node": "14.0.27", "@types/node": "14.0.27",
"@types/react": "^16.9.43", "@types/react": "^16.9.44",
"@types/react-dom": "^16.9.6", "@types/react-dom": "^16.9.6",
"@types/react-redux": "^7.1.9", "@types/react-redux": "^7.1.9",
"@types/react-router-dom": "^5.1.5", "@types/react-router-dom": "^5.1.5",
"@types/styled-components": "^5.1.1", "@types/styled-components": "^5.1.2",
"@typescript-eslint/eslint-plugin": "3.7.1", "@typescript-eslint/eslint-plugin": "3.8.0",
"@typescript-eslint/parser": "3.7.1", "@typescript-eslint/parser": "3.8.0",
"autoprefixer": "9.8.5", "autoprefixer": "9.8.6",
"cross-env": "^7.0.2", "cross-env": "^7.0.2",
"dotenv": "^8.2.0", "dotenv": "^8.2.0",
"dotenv-expand": "^5.1.0", "dotenv-expand": "^5.1.0",

View File

@ -11,6 +11,10 @@ const Wrapper = styled.div``
const Item = styled.div` const Item = styled.div`
border-bottom: solid 2px rgb(232, 231, 230); border-bottom: solid 2px rgb(232, 231, 230);
&:last-child {
border-bottom: none;
}
.container { .container {
display: flex; display: flex;
align-items: flex-end; align-items: flex-end;

View File

@ -7,17 +7,17 @@ import { SafeApp } from 'src/routes/safe/components/Apps/types.d'
import { getAppInfoFromUrl, getIpfsLinkFromEns, uniqueApp } from 'src/routes/safe/components/Apps/utils' import { getAppInfoFromUrl, getIpfsLinkFromEns, uniqueApp } from 'src/routes/safe/components/Apps/utils'
import { composeValidators, required } from 'src/components/forms/validator' import { composeValidators, required } from 'src/components/forms/validator'
import Field from 'src/components/forms/Field' import Field from 'src/components/forms/Field'
import { isValid as isURLValid } from 'src/utils/url' import { isValidURL } from 'src/utils/url'
import { isValidEnsName } from 'src/logic/wallets/ethAddresses' import { isValidEnsName } from 'src/logic/wallets/ethAddresses'
import { useDebounce } from 'src/routes/safe/container/hooks/useDebounce' import { useDebounce } from 'src/routes/safe/container/hooks/useDebounce'
const validateUrl = (url: string): string | undefined => (isURLValid(url) ? undefined : 'Invalid URL') const validateUrl = (url: string): string | undefined => (isValidURL(url) ? undefined : 'Invalid URL')
export const appUrlResolver = createDecorator({ export const appUrlResolver = createDecorator({
field: 'appUrl', field: 'appUrl',
updates: { updates: {
appUrl: async (appUrl: string): Promise<string | undefined> => { appUrl: async (appUrl: string): Promise<string | undefined> => {
const ensContent = !isURLValid(appUrl) && isValidEnsName(appUrl) && (await getIpfsLinkFromEns(appUrl)) const ensContent = !isValidURL(appUrl) && isValidEnsName(appUrl) && (await getIpfsLinkFromEns(appUrl))
if (ensContent) { if (ensContent) {
return ensContent return ensContent
@ -40,7 +40,7 @@ export const AppInfoUpdater = ({ onAppInfo }: { onAppInfo: (appInfo: SafeApp) =>
onAppInfo({ ...appInfo }) onAppInfo({ ...appInfo })
} }
if (isURLValid(debouncedValue)) { if (isValidURL(debouncedValue)) {
updateAppInfo() updateAppInfo()
} }
}, [debouncedValue, onAppInfo]) }, [debouncedValue, onAppInfo])

View File

@ -0,0 +1,92 @@
import React, { forwardRef } from 'react'
import styled from 'styled-components'
import { FixedIcon, Loader, Title } from '@gnosis.pm/safe-react-components'
import { useHistory } from 'react-router-dom'
import { SAFELIST_ADDRESS } from 'src/routes/routes'
import { useLegalConsent } from '../hooks/useLegalConsent'
import { SafeApp } from '../types'
import LegalDisclaimer from './LegalDisclaimer'
const StyledIframe = styled.iframe`
padding: 15px;
box-sizing: border-box;
width: 100%;
height: 100%;
`
const LoadingContainer = styled.div`
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
`
const IframeWrapper = styled.div`
position: relative;
height: 100%;
width: 100%;
overflow: hidden;
`
const Centered = styled.div`
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
`
type AppFrameProps = {
selectedApp: SafeApp | undefined
safeAddress: string
network: string
granted: boolean
appIsLoading: boolean
onIframeLoad: () => void
}
const AppFrame = forwardRef<HTMLIFrameElement, AppFrameProps>(function AppFrameComponent(
{ selectedApp, safeAddress, network, appIsLoading, granted, onIframeLoad },
iframeRef,
): React.ReactElement {
const history = useHistory()
const { consentReceived, onConsentReceipt } = useLegalConsent()
const redirectToBalance = () => history.push(`${SAFELIST_ADDRESS}/${safeAddress}/balances`)
if (!selectedApp) {
return null
}
if (!consentReceived) {
return <LegalDisclaimer onCancel={redirectToBalance} onConfirm={onConsentReceipt} />
}
if (network === 'UNKNOWN' || !granted) {
return (
<Centered style={{ height: '476px' }}>
<FixedIcon type="notOwner" />
<Title size="xs">To use apps, you must be an owner of this Safe</Title>
</Centered>
)
}
return (
<IframeWrapper>
{appIsLoading && (
<LoadingContainer>
<Loader size="md" />
</LoadingContainer>
)}
<StyledIframe
frameBorder="0"
id={`iframe-${selectedApp.name}`}
ref={iframeRef}
src={selectedApp.url}
title={selectedApp.name}
onLoad={onIframeLoad}
/>
</IframeWrapper>
)
})
export default AppFrame

View File

@ -1,5 +1,6 @@
import { Icon, ModalFooterConfirmation, Text, Title } from '@gnosis.pm/safe-react-components' import { Icon, ModalFooterConfirmation, Text, Title } from '@gnosis.pm/safe-react-components'
import React, { ReactElement } from 'react' import { Transaction } from '@gnosis.pm/safe-apps-sdk'
import React from 'react'
import styled from 'styled-components' import styled from 'styled-components'
import AddressInfo from 'src/components/AddressInfo' import AddressInfo from 'src/components/AddressInfo'
@ -12,22 +13,9 @@ import Bold from 'src/components/layout/Bold'
import Heading from 'src/components/layout/Heading' import Heading from 'src/components/layout/Heading'
import Img from 'src/components/layout/Img' import Img from 'src/components/layout/Img'
import { getEthAsToken } from 'src/logic/tokens/utils/tokenHelpers' import { getEthAsToken } from 'src/logic/tokens/utils/tokenHelpers'
import { OpenModalArgs } from 'src/routes/safe/components/Layout/interfaces'
import { humanReadableValue } from 'src/logic/tokens/utils/humanReadableValue' import { humanReadableValue } from 'src/logic/tokens/utils/humanReadableValue'
export type SafeAppTx = {
to: string
value: string | number
data: string
}
// TODO: This should be exported by safe-rect-components
type GenericModalProps = {
title: ReactElement
body: ReactElement
footer: ReactElement
onClose: () => void
}
const Wrapper = styled.div` const Wrapper = styled.div`
margin-bottom: 15px; margin-bottom: 15px;
` `
@ -56,7 +44,7 @@ const StyledTextBox = styled(TextBox)`
max-width: 444px; max-width: 444px;
` `
const isTxValid = (t: SafeAppTx): boolean => { const isTxValid = (t: Transaction): boolean => {
if (!['string', 'number'].includes(typeof t.value)) { if (!['string', 'number'].includes(typeof t.value)) {
return false return false
} }
@ -75,11 +63,11 @@ const confirmTransactions = (
ethBalance: string, ethBalance: string,
nameApp: string, nameApp: string,
iconApp: string, iconApp: string,
txs: SafeAppTx[], txs: Transaction[],
openModal: (modalInfo: GenericModalProps) => void, openModal: (modalInfo: OpenModalArgs) => void,
closeModal: () => void, closeModal: () => void,
onConfirm: () => void, onConfirm: () => void,
): any => { ): void => {
const areTxsMalformed = txs.some((t) => !isTxValid(t)) const areTxsMalformed = txs.some((t) => !isTxValid(t))
const title = <ModalTitle iconUrl={iconApp} title={nameApp} /> const title = <ModalTitle iconUrl={iconApp} title={nameApp} />

View File

@ -1,52 +1,131 @@
import { useEffect } from 'react' import { useSnackbar } from 'notistack'
import {
InterfaceMessages,
InterfaceMessageToPayload,
SDKMessages,
SDKMessageToPayload,
SDK_MESSAGES,
INTERFACE_MESSAGES,
} from '@gnosis.pm/safe-apps-sdk'
import { useDispatch, useSelector } from 'react-redux'
import { useEffect, useCallback, MutableRefObject } from 'react'
import { OpenModalArgs } from 'src/routes/safe/components/Layout/interfaces'
import {
safeEthBalanceSelector,
safeNameSelector,
safeParamAddressFromStateSelector,
} from 'src/routes/safe/store/selectors'
import { networkSelector } from 'src/logic/wallets/store/selectors'
import { SafeApp } from 'src/routes/safe/components/Apps/types'
import sendTransactions from '../sendTransactions'
import confirmTransactions from '../confirmTransactions'
type ReturnType = {
sendMessageToIframe: <T extends keyof InterfaceMessages>(messageId: T, data: InterfaceMessageToPayload[T]) => void
}
interface CustomMessageEvent extends MessageEvent {
data: {
messageId: keyof SDKMessages
data: SDKMessageToPayload[keyof SDKMessages]
}
}
const useIframeMessageHandler = (
selectedApp: SafeApp | undefined,
openModal: (modal: OpenModalArgs) => void,
closeModal: () => void,
iframeRef: MutableRefObject<HTMLIFrameElement>,
): ReturnType => {
const { enqueueSnackbar, closeSnackbar } = useSnackbar()
const safeName = useSelector(safeNameSelector)
const safeAddress = useSelector(safeParamAddressFromStateSelector)
const ethBalance = useSelector(safeEthBalanceSelector)
const network = useSelector(networkSelector)
const dispatch = useDispatch()
const sendMessageToIframe = useCallback(
function <T extends keyof InterfaceMessages>(messageId: T, data: InterfaceMessageToPayload[T]) {
if (iframeRef?.current && selectedApp) {
iframeRef.current.contentWindow.postMessage({ messageId, data }, selectedApp.url)
}
},
[iframeRef, selectedApp],
)
const useIframeMessageHandler = (): void => {
useEffect(() => { useEffect(() => {
// const handleIframeMessage = (data) => { const handleIframeMessage = (msg: CustomMessageEvent) => {
// if (!data || !data.messageId) { if (!msg?.data.messageId) {
// console.error('ThirdPartyApp: A message was received without message id.') console.error('ThirdPartyApp: A message was received without message id.')
// return return
// } }
// switch (data.messageId) { switch (msg.data.messageId) {
// case operations.SEND_TRANSACTIONS: { case SDK_MESSAGES.SEND_TRANSACTIONS: {
// const onConfirm = async () => { const onConfirm = async () => {
// closeModal() closeModal()
// await sendTransactions(dispatch, safeAddress, data.data, enqueueSnackbar, closeSnackbar, selectedApp.id) await sendTransactions(dispatch, safeAddress, msg.data.data, enqueueSnackbar, closeSnackbar, selectedApp.id)
// } }
// confirmTransactions( confirmTransactions(
// safeAddress, safeAddress,
// safeName, safeName,
// ethBalance, ethBalance,
// selectedApp.name, selectedApp.name,
// selectedApp.iconUrl, selectedApp.iconUrl,
// data.data, msg.data.data,
// openModal, openModal,
// closeModal, closeModal,
// onConfirm, onConfirm,
// ) )
// break break
// } }
// default: {
// console.error(`ThirdPartyApp: A message was received with an unknown message id ${data.messageId}.`) case SDK_MESSAGES.SAFE_APP_SDK_INITIALIZED: {
// break sendMessageToIframe(INTERFACE_MESSAGES.ON_SAFE_INFO, {
// } safeAddress,
// } network: network,
// } ethBalance,
// const onIframeMessage = async ({ data, origin }) => { })
// if (origin === window.origin) { break
// return }
// } default: {
// if (!selectedApp.url.includes(origin)) { console.error(`ThirdPartyApp: A message was received with an unknown message id ${msg.data.messageId}.`)
// console.error(`ThirdPartyApp: A message was received from an unknown origin ${origin}`) break
// return }
// } }
// handleIframeMessage(data) }
// } const onIframeMessage = async (message: CustomMessageEvent) => {
// window.addEventListener('message', onIframeMessage) if (message.origin === window.origin) {
// return () => { return
// window.removeEventListener('message', onIframeMessage) }
// } if (!selectedApp.url.includes(message.origin)) {
}, []) console.error(`ThirdPartyApp: A message was received from an unknown origin ${message.origin}`)
return
}
handleIframeMessage(message)
}
window.addEventListener('message', onIframeMessage)
return () => {
window.removeEventListener('message', onIframeMessage)
}
}, [
closeModal,
closeSnackbar,
dispatch,
enqueueSnackbar,
ethBalance,
network,
openModal,
safeAddress,
safeName,
selectedApp,
sendMessageToIframe,
])
return {
sendMessageToIframe,
}
} }
export { useIframeMessageHandler } export { useIframeMessageHandler }

View File

@ -1,85 +1,63 @@
import { Card, FixedIcon, IconText, Loader, Menu, Title } from '@gnosis.pm/safe-react-components' import React, { useCallback, useEffect, useRef, useState, useMemo } from 'react'
import { withSnackbar } from 'notistack' import { Networks, INTERFACE_MESSAGES } from '@gnosis.pm/safe-apps-sdk'
import React, { useCallback, useEffect, useState, useMemo } from 'react' import { Card, IconText, Loader, Menu, Title } from '@gnosis.pm/safe-react-components'
import { useDispatch, useSelector } from 'react-redux' import { useSelector } from 'react-redux'
import { useHistory } from 'react-router-dom' import styled, { css } from 'styled-components'
import styled from 'styled-components'
import ManageApps from './components/ManageApps' import ManageApps from './components/ManageApps'
import confirmTransactions from './confirmTransactions' import AppFrame from './components/AppFrame'
import sendTransactions from './sendTransactions'
import LegalDisclaimer from './components/LegalDisclaimer'
import { useLegalConsent } from './hooks/useLegalConsent'
import { useAppList } from './hooks/useAppList' import { useAppList } from './hooks/useAppList'
import { OpenModalArgs } from 'src/routes/safe/components/Layout/interfaces'
import LCL from 'src/components/ListContentLayout' import LCL from 'src/components/ListContentLayout'
import { networkSelector } from 'src/logic/wallets/store/selectors' import { networkSelector } from 'src/logic/wallets/store/selectors'
import { SAFELIST_ADDRESS } from 'src/routes/routes'
import { grantedSelector } from 'src/routes/safe/container/selector' import { grantedSelector } from 'src/routes/safe/container/selector'
import { import { safeEthBalanceSelector, safeParamAddressFromStateSelector } from 'src/routes/safe/store/selectors'
safeEthBalanceSelector, import { isSameURL } from 'src/utils/url'
safeNameSelector, import { useIframeMessageHandler } from './hooks/useIframeMessageHandler'
safeParamAddressFromStateSelector,
} from 'src/routes/safe/store/selectors'
import { isSameHref } from 'src/utils/url'
const StyledCard = styled(Card)` const centerCSS = css`
margin-bottom: 24px;
`
const StyledIframe = styled.iframe`
padding: 15px;
box-sizing: border-box;
width: 100%;
height: 100%;
`
const Centered = styled.div`
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
flex-direction: column;
` `
const LoadingContainer = styled.div` const LoadingContainer = styled.div`
width: 100%; width: 100%;
height: 100%; height: 100%;
display: flex; ${centerCSS};
align-items: center;
justify-content: center;
` `
const CenteredMT = styled(Centered)` const StyledCard = styled(Card)`
margin-bottom: 24px;
${centerCSS};
`
const CenteredMT = styled.div`
${centerCSS};
margin-top: 5px; margin-top: 5px;
` `
const IframeWrapper = styled.div` type AppsProps = {
position: relative; closeModal: () => void
height: 100%; openModal: (modal: OpenModalArgs) => void
width: 100%;
overflow: hidden;
`
const operations = {
ON_SAFE_INFO: 'ON_SAFE_INFO',
SAFE_APP_SDK_INITIALIZED: 'SAFE_APP_SDK_INITIALIZED',
SEND_TRANSACTIONS: 'SEND_TRANSACTIONS',
} }
function Apps({ closeModal, closeSnackbar, enqueueSnackbar, openModal }) { const Apps = ({ closeModal, openModal }: AppsProps): React.ReactElement => {
const { appList, loadingAppList, onAppToggle, onAppAdded } = useAppList() const { appList, loadingAppList, onAppToggle, onAppAdded } = useAppList()
const [appIsLoading, setAppIsLoading] = useState<boolean>(true) const [appIsLoading, setAppIsLoading] = useState<boolean>(true)
const [selectedAppId, setSelectedAppId] = useState<string>() const [selectedAppId, setSelectedAppId] = useState<string>()
const [iframeEl, setIframeEl] = useState<HTMLIFrameElement | null>(null) const iframeRef = useRef<HTMLIFrameElement>()
const history = useHistory()
const granted = useSelector(grantedSelector) const granted = useSelector(grantedSelector)
const safeName = useSelector(safeNameSelector)
const safeAddress = useSelector(safeParamAddressFromStateSelector) const safeAddress = useSelector(safeParamAddressFromStateSelector)
const network = useSelector(networkSelector) const network = useSelector(networkSelector)
const ethBalance = useSelector(safeEthBalanceSelector) const ethBalance = useSelector(safeEthBalanceSelector)
const dispatch = useDispatch()
const { consentReceived, onConsentReceipt } = useLegalConsent()
const selectedApp = useMemo(() => appList.find((app) => app.id === selectedAppId), [appList, selectedAppId]) const selectedApp = useMemo(() => appList.find((app) => app.id === selectedAppId), [appList, selectedAppId])
const enabledApps = useMemo(() => appList.filter((a) => !a.disabled), [appList])
const { sendMessageToIframe } = useIframeMessageHandler(selectedApp, openModal, closeModal, iframeRef)
const onSelectApp = useCallback( const onSelectApp = useCallback(
(appId) => { (appId) => {
@ -108,151 +86,19 @@ function Apps({ closeModal, closeSnackbar, enqueueSnackbar, openModal }) {
} }
}, [appList, selectedApp, selectedAppId]) }, [appList, selectedApp, selectedAppId])
const iframeRef = useCallback((node) => { const handleIframeLoad = useCallback(() => {
if (node !== null) { const iframe = iframeRef.current
setIframeEl(node) if (!iframe || !selectedApp || !isSameURL(iframe.src, selectedApp.url)) {
}
}, [])
const redirectToBalance = () => history.push(`${SAFELIST_ADDRESS}/${safeAddress}/balances`)
const getContent = () => {
if (!selectedApp) {
return null
}
if (!consentReceived) {
return <LegalDisclaimer onCancel={redirectToBalance} onConfirm={onConsentReceipt} />
}
if (network === 'UNKNOWN' || !granted) {
return (
<Centered style={{ height: '476px' }}>
<FixedIcon type="notOwner" />
<Title size="xs">To use apps, you must be an owner of this Safe</Title>
</Centered>
)
}
return (
<IframeWrapper>
{appIsLoading && (
<LoadingContainer>
<Loader size="md" />
</LoadingContainer>
)}
<StyledIframe
frameBorder="0"
id={`iframe-${selectedApp.name}`}
ref={iframeRef}
src={selectedApp.url}
title={selectedApp.name}
/>
</IframeWrapper>
)
}
const enabledApps = useMemo(() => appList.filter((a) => !a.disabled), [appList])
const sendMessageToIframe = useCallback(
(messageId, data) => {
if (iframeEl && selectedApp) {
iframeEl.contentWindow.postMessage({ messageId, data }, selectedApp.url)
}
},
[iframeEl, selectedApp],
)
// handle messages from iframe
useEffect(() => {
const handleIframeMessage = (data) => {
if (!data || !data.messageId) {
console.error('ThirdPartyApp: A message was received without message id.')
return return
} }
switch (data.messageId) {
case operations.SEND_TRANSACTIONS: {
const onConfirm = async () => {
closeModal()
await sendTransactions(dispatch, safeAddress, data.data, enqueueSnackbar, closeSnackbar, selectedApp.id)
}
confirmTransactions(
safeAddress,
safeName,
ethBalance,
selectedApp.name,
selectedApp.iconUrl,
data.data,
openModal,
closeModal,
onConfirm,
)
break
}
case operations.SAFE_APP_SDK_INITIALIZED: {
sendMessageToIframe(operations.ON_SAFE_INFO, {
safeAddress,
network,
ethBalance,
})
break
}
default: {
console.error(`ThirdPartyApp: A message was received with an unknown message id ${data.messageId}.`)
break
}
}
}
const onIframeMessage = async ({ data, origin }) => {
if (origin === window.origin) {
return
}
if (!selectedApp.url.includes(origin)) {
console.error(`ThirdPartyApp: A message was received from an unknown origin ${origin}`)
return
}
handleIframeMessage(data)
}
window.addEventListener('message', onIframeMessage)
return () => {
window.removeEventListener('message', onIframeMessage)
}
})
// on iframe change
useEffect(() => {
const sendMessageToIframe = (messageId, data) => {
iframeEl.contentWindow.postMessage({ messageId, data }, selectedApp.url)
}
const onIframeLoaded = () => {
setAppIsLoading(false) setAppIsLoading(false)
sendMessageToIframe(operations.ON_SAFE_INFO, { sendMessageToIframe(INTERFACE_MESSAGES.ON_SAFE_INFO, {
safeAddress, safeAddress,
network, network: network as Networks,
ethBalance, ethBalance,
}) })
} }, [ethBalance, network, safeAddress, selectedApp, sendMessageToIframe])
if (!iframeEl || !selectedApp || !isSameHref(iframeEl.src, selectedApp.url)) {
return
}
iframeEl.addEventListener('load', onIframeLoaded)
return () => {
iframeEl.removeEventListener('load', onIframeLoaded)
}
}, [ethBalance, iframeEl, network, safeAddress, selectedApp])
if (loadingAppList || !appList.length) { if (loadingAppList || !appList.length) {
return ( return (
@ -272,13 +118,21 @@ function Apps({ closeModal, closeSnackbar, enqueueSnackbar, openModal }) {
<LCL.Menu> <LCL.Menu>
<LCL.List activeItem={selectedAppId} items={enabledApps} onItemClick={onSelectApp} /> <LCL.List activeItem={selectedAppId} items={enabledApps} onItemClick={onSelectApp} />
</LCL.Menu> </LCL.Menu>
<LCL.Content>{getContent()}</LCL.Content> <LCL.Content>
<AppFrame
ref={iframeRef}
granted={granted}
selectedApp={selectedApp}
safeAddress={safeAddress}
network={network}
appIsLoading={appIsLoading}
onIframeLoad={handleIframeLoad}
/>
</LCL.Content>
</LCL.Wrapper> </LCL.Wrapper>
) : ( ) : (
<StyledCard> <StyledCard>
<Centered>
<Title size="xs">No Apps Enabled</Title> <Title size="xs">No Apps Enabled</Title>
</Centered>
</StyledCard> </StyledCard>
)} )}
<CenteredMT> <CenteredMT>
@ -294,4 +148,4 @@ function Apps({ closeModal, closeSnackbar, enqueueSnackbar, openModal }) {
) )
} }
export default withSnackbar(Apps) export default Apps

View File

@ -7,6 +7,7 @@ import { Redirect, Route, Switch, useRouteMatch } from 'react-router-dom'
import Receive from '../Balances/Receive' import Receive from '../Balances/Receive'
import { styles } from './style' import { styles } from './style'
import { ModalState, OpenModalArgs } from './interfaces'
import Modal from 'src/components/Modal' import Modal from 'src/components/Modal'
import NoSafe from 'src/components/NoSafe' import NoSafe from 'src/components/NoSafe'
@ -48,9 +49,9 @@ const Layout = (props: Props): React.ReactElement => {
const { hideSendFunds, onHide, onShow, sendFunds, showReceive, showSendFunds } = props const { hideSendFunds, onHide, onShow, sendFunds, showReceive, showSendFunds } = props
const match = useRouteMatch() const match = useRouteMatch()
const [modal, setModal] = useState({ const [modal, setModal] = useState<ModalState>({
isOpen: false, isOpen: false,
title: null, title: '',
body: null, body: null,
footer: null, footer: null,
onClose: null, onClose: null,
@ -62,14 +63,12 @@ const Layout = (props: Props): React.ReactElement => {
return <NoSafe provider={provider} text="Safe not found" /> return <NoSafe provider={provider} text="Safe not found" />
} }
const openGenericModal = (modalConfig) => { const openGenericModal = (modalConfig: OpenModalArgs): void => {
setModal({ ...modalConfig, isOpen: true }) setModal({ ...modalConfig, isOpen: true })
} }
const closeGenericModal = () => { const closeGenericModal = (): void => {
if (modal.onClose) { modal.onClose?.()
modal.onClose()
}
setModal({ setModal({
isOpen: false, isOpen: false,

View File

@ -0,0 +1,14 @@
export interface ModalState {
isOpen: boolean
title: string | React.ReactElement
body: React.ReactNode | null
footer: React.ReactNode | null
onClose: () => unknown
}
export interface OpenModalArgs {
title: string | React.ReactElement
body: React.ReactNode | null
footer: React.ReactNode | null
onClose: () => unknown
}

View File

@ -1,4 +1,4 @@
export const isValid = (url, protocolsAllowed = ['https:', 'http:']) => { export const isValidURL = (url: string, protocolsAllowed = ['https:', 'http:']): boolean => {
try { try {
const urlInfo = new URL(url) const urlInfo = new URL(url)
return protocolsAllowed.includes(urlInfo.protocol) return protocolsAllowed.includes(urlInfo.protocol)
@ -7,7 +7,7 @@ export const isValid = (url, protocolsAllowed = ['https:', 'http:']) => {
} }
} }
export const isSameHref = (url1, url2) => { export const isSameURL = (url1: string, url2: string): boolean => {
try { try {
const a = new URL(url1) const a = new URL(url1)
const b = new URL(url2) const b = new URL(url2)

508
yarn.lock
View File

@ -1075,13 +1075,6 @@
core-js-pure "^3.0.0" core-js-pure "^3.0.0"
regenerator-runtime "^0.13.4" regenerator-runtime "^0.13.4"
"@babel/runtime@7.3.4":
version "7.3.4"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.3.4.tgz#73d12ba819e365fcf7fd152aed56d6df97d21c83"
integrity sha512-IvfvnMdSaLBateu0jfsYIpZTxAc2cKEXEMiezGGN75QcBcecDUKd3PgLAncT0oOgxKy8dd8hrJKj9MfzgfZd6g==
dependencies:
regenerator-runtime "^0.12.0"
"@babel/runtime@7.9.0": "@babel/runtime@7.9.0":
version "7.9.0" version "7.9.0"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.0.tgz#337eda67401f5b066a6f205a3113d4ac18ba495b" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.0.tgz#337eda67401f5b066a6f205a3113d4ac18ba495b"
@ -1096,6 +1089,13 @@
dependencies: dependencies:
regenerator-runtime "^0.13.4" regenerator-runtime "^0.13.4"
"@babel/runtime@^7.11.0":
version "7.11.2"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736"
integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==
dependencies:
regenerator-runtime "^0.13.4"
"@babel/template@^7.10.4", "@babel/template@^7.4.0", "@babel/template@^7.8.6": "@babel/template@^7.10.4", "@babel/template@^7.4.0", "@babel/template@^7.8.6":
version "7.10.4" version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278"
@ -1325,6 +1325,11 @@
"@ethersproject/rlp" "^5.0.0" "@ethersproject/rlp" "^5.0.0"
"@ethersproject/signing-key" "^5.0.0" "@ethersproject/signing-key" "^5.0.0"
"@gnosis.pm/safe-apps-sdk@0.3.1":
version "0.3.1"
resolved "https://registry.yarnpkg.com/@gnosis.pm/safe-apps-sdk/-/safe-apps-sdk-0.3.1.tgz#ebec9ffecfd8a6dbe061ef85a2fc68a3b92ee398"
integrity sha512-2nsmoaPa/C3X+g6EThc4DD7ptSy9fV+RQ507Ly1y01uIzVMRCT0sFcOm0z8oNwCWc5qtY2X4hn00+oR6JdmhUw==
"@gnosis.pm/safe-contracts@1.1.1-dev.2": "@gnosis.pm/safe-contracts@1.1.1-dev.2":
version "1.1.1-dev.2" version "1.1.1-dev.2"
resolved "https://registry.yarnpkg.com/@gnosis.pm/safe-contracts/-/safe-contracts-1.1.1-dev.2.tgz#4a5b9a9befe66d15df87d2216237d4ea4f64118f" resolved "https://registry.yarnpkg.com/@gnosis.pm/safe-contracts/-/safe-contracts-1.1.1-dev.2.tgz#4a5b9a9befe66d15df87d2216237d4ea4f64118f"
@ -1337,7 +1342,7 @@
solc "0.5.14" solc "0.5.14"
truffle "^5.1.21" truffle "^5.1.21"
"@gnosis.pm/safe-react-components@https://github.com/gnosis/safe-react-components.git#45c746a": "@gnosis.pm/safe-react-components@https://github.com/gnosis/safe-react-components.git#45c746a12661b9c38e839e76022b6a0a92285db7":
version "0.2.0" version "0.2.0"
resolved "https://github.com/gnosis/safe-react-components.git#45c746a12661b9c38e839e76022b6a0a92285db7" resolved "https://github.com/gnosis/safe-react-components.git#45c746a12661b9c38e839e76022b6a0a92285db7"
dependencies: dependencies:
@ -1593,18 +1598,32 @@
"@ledgerhq/logs" "^5.19.1" "@ledgerhq/logs" "^5.19.1"
rxjs "^6.6.0" rxjs "^6.6.0"
"@ledgerhq/devices@^5.21.0":
version "5.21.0"
resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-5.21.0.tgz#b6dc274536e70513a3ae7df7a9f956ea87adcc49"
integrity sha512-65XZgD2ykK7AJkcJuNEP8WD43HDkudA7NfB34U1T6pmPC6AgWoRYDNpJ23XQ8eiAImETlxv7FaDGUXSEpIQMGQ==
dependencies:
"@ledgerhq/errors" "^5.21.0"
"@ledgerhq/logs" "^5.21.0"
rxjs "^6.6.0"
"@ledgerhq/errors@^5.19.1": "@ledgerhq/errors@^5.19.1":
version "5.19.1" version "5.19.1"
resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-5.19.1.tgz#3d25cc0ee92feee35415236c741ef668a106e275" resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-5.19.1.tgz#3d25cc0ee92feee35415236c741ef668a106e275"
integrity sha512-9v4ishxc2doiR06E/87uJdT7LjnSpnWPftDaBXBm/6KEgjPGtGBCcRW3fkmQTWNE115e6TG9JYRiVRPuqs6GHg== integrity sha512-9v4ishxc2doiR06E/87uJdT7LjnSpnWPftDaBXBm/6KEgjPGtGBCcRW3fkmQTWNE115e6TG9JYRiVRPuqs6GHg==
"@ledgerhq/hw-app-eth@^5.19.0": "@ledgerhq/errors@^5.21.0":
version "5.20.0" version "5.21.0"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-eth/-/hw-app-eth-5.20.0.tgz#59306601c1309e15a948c9b3d06e7dc85480f48e" resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-5.21.0.tgz#2a7bdea62fe7e0bd9ccc3b786d2c179f8f65bc02"
integrity sha512-kL+oEJGhkd0A6GahRiDTp8RbheHYV+CQv04O+enQqIPuT++IZvSRlv03lBQNyNziX8b64/ZM+kQHWGesN7w7xg== integrity sha512-sGfXoaVGfzrhnexu2TEdgL2FAjM7PUeobWdDBx3DJKE+ARje1y+i5+qg7gyvQL+9k4FV7mW2xMOcnUI3T2Zw0Q==
"@ledgerhq/hw-app-eth@^5.21.0":
version "5.21.0"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-eth/-/hw-app-eth-5.21.0.tgz#a6857df45cddf29b5e7623237171d7ffba42a44c"
integrity sha512-FKwwqp7IDgCq9ToL/JwO4S3HXr4LSI+Vr6KqeCtpCwRGNdvtiUHF3S9g2LtUroCcGXx9HTr2XL4hZzfrj+2jfg==
dependencies: dependencies:
"@ledgerhq/errors" "^5.19.1" "@ledgerhq/errors" "^5.21.0"
"@ledgerhq/hw-transport" "^5.19.1" "@ledgerhq/hw-transport" "^5.21.0"
bignumber.js "^9.0.0" bignumber.js "^9.0.0"
rlp "^2.2.6" rlp "^2.2.6"
@ -1633,14 +1652,14 @@
node-hid "^1.3.0" node-hid "^1.3.0"
usb "^1.6.3" usb "^1.6.3"
"@ledgerhq/hw-transport-u2f@^5.19.0": "@ledgerhq/hw-transport-u2f@^5.21.0":
version "5.19.1" version "5.21.0"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-u2f/-/hw-transport-u2f-5.19.1.tgz#327a98aa9a932114c3d530dabd77459e249b7091" resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-u2f/-/hw-transport-u2f-5.21.0.tgz#7bb14e6a334eccff0e51c3346702561cebc99941"
integrity sha512-jCDx+ZJdHhB+I/aoUZHhgE5aiZdrKkvUHfeUGScR/Ya3MfOHq7otIS+gEi4AIuxK08gXUOWAm1ygKzTCo+KPpw== integrity sha512-D9bbi0ubvNmHbqTAcaxtbgrXRRnoc6qW34m+IO/FRqdPrJTYw3o9y2f0udv8WQZkbNnBvXEksROEvADkr4dj+Q==
dependencies: dependencies:
"@ledgerhq/errors" "^5.19.1" "@ledgerhq/errors" "^5.21.0"
"@ledgerhq/hw-transport" "^5.19.1" "@ledgerhq/hw-transport" "^5.21.0"
"@ledgerhq/logs" "^5.19.1" "@ledgerhq/logs" "^5.21.0"
u2f-api "0.2.7" u2f-api "0.2.7"
"@ledgerhq/hw-transport@^5.19.1": "@ledgerhq/hw-transport@^5.19.1":
@ -1652,11 +1671,25 @@
"@ledgerhq/errors" "^5.19.1" "@ledgerhq/errors" "^5.19.1"
events "^3.1.0" events "^3.1.0"
"@ledgerhq/hw-transport@^5.21.0":
version "5.21.0"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-5.21.0.tgz#c94d13397a26e0755824e05613e2257a3d2b450b"
integrity sha512-emVoy+ZEA19z+g6CsDcliVRRYDn4RzdH+zW9F37Z22uoMWslx2VNa+KdcKijmS3V3mkSLjle1cjwprPh61G8hQ==
dependencies:
"@ledgerhq/devices" "^5.21.0"
"@ledgerhq/errors" "^5.21.0"
events "^3.2.0"
"@ledgerhq/logs@^5.19.1": "@ledgerhq/logs@^5.19.1":
version "5.19.1" version "5.19.1"
resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-5.19.1.tgz#c3df2b307331ccd373abc78b8ccea02377049256" resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-5.19.1.tgz#c3df2b307331ccd373abc78b8ccea02377049256"
integrity sha512-nz33IoR3dG3DtJ46AyfLfpdMjGMkwmi21H49wcqVfNAteEe74fzO4cw9fcGMb4ENspYYtmB4LWTSp4gVPRglcg== integrity sha512-nz33IoR3dG3DtJ46AyfLfpdMjGMkwmi21H49wcqVfNAteEe74fzO4cw9fcGMb4ENspYYtmB4LWTSp4gVPRglcg==
"@ledgerhq/logs@^5.21.0":
version "5.21.0"
resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-5.21.0.tgz#19629222e44b4d312e232c2dfbe0d067ecc12830"
integrity sha512-eyPXrKfQ+HSLcITB5MdSWhXlImE2qKWTLT2u6l+a9wiCZl5yimSqn0uC5evxaP0McKOW0wSntgfj+gOoKv+Paw==
"@material-ui/core@4.11.0": "@material-ui/core@4.11.0":
version "4.11.0" version "4.11.0"
resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-4.11.0.tgz#b69b26e4553c9e53f2bfaf1053e216a0af9be15a" resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-4.11.0.tgz#b69b26e4553c9e53f2bfaf1053e216a0af9be15a"
@ -1805,17 +1838,17 @@
xhr "^2.2.0" xhr "^2.2.0"
xtend "^4.0.1" xtend "^4.0.1"
"@portis/web3@^2.0.0-beta.55": "@portis/web3@^2.0.0-beta.57":
version "2.0.0-beta.56" version "2.0.0-beta.57"
resolved "https://registry.yarnpkg.com/@portis/web3/-/web3-2.0.0-beta.56.tgz#90ef7f0a63f68d80e10cb87aa08acbb92e433af6" resolved "https://registry.yarnpkg.com/@portis/web3/-/web3-2.0.0-beta.57.tgz#45692bffc07687d50fa5204d514590d438b759de"
integrity sha512-likffGhd9lKMOiI657rV62NM0ewxLBOQGPoUJPIX2rCx25P9FQ+4CiqEsqCUeofaNra6q+/4EPZgSscNWHa6BQ== integrity sha512-OYmt0a171AJECYT/vTkPb4uc1x7xFASMfn+MN3EAjo7DRhY8WfTAMNoMJDhuFARRLC7an2HrRIsT7D4q9GNrnQ==
dependencies: dependencies:
"@portis/web3-provider-engine" "1.1.0" "@portis/web3-provider-engine" "1.1.0"
ethereumjs-util "5.2.0" ethereumjs-util "5.2.0"
penpal "3.0.7" penpal "3.0.7"
pocket-js-core "0.0.3" pocket-js-core "0.0.3"
"@restless/sanitizers@^0.2.4": "@restless/sanitizers@^0.2.5":
version "0.2.5" version "0.2.5"
resolved "https://registry.yarnpkg.com/@restless/sanitizers/-/sanitizers-0.2.5.tgz#96a5cfa3edb52abd8fa14e77798738f3a067dbec" resolved "https://registry.yarnpkg.com/@restless/sanitizers/-/sanitizers-0.2.5.tgz#96a5cfa3edb52abd8fa14e77798738f3a067dbec"
integrity sha512-utsOFwv5owNnbj8HijF7uML/AURgUl5YvY4S2gpxQsrp2D1EP/4rQU/HSyYdIQaL89BoZ/5NHveRJrcFyuHo/w== integrity sha512-utsOFwv5owNnbj8HijF7uML/AURgUl5YvY4S2gpxQsrp2D1EP/4rQU/HSyYdIQaL89BoZ/5NHveRJrcFyuHo/w==
@ -1962,27 +1995,27 @@
lodash "^4.17.15" lodash "^4.17.15"
redent "^3.0.0" redent "^3.0.0"
"@testing-library/react@10.4.7": "@testing-library/react@10.4.8":
version "10.4.7" version "10.4.8"
resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-10.4.7.tgz#fc14847fb70a5e93576b8f7f0d1490ead02a9061" resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-10.4.8.tgz#5eb730291b8fd81cdb2d8877770d060b044ae4a4"
integrity sha512-hUYbum3X2f1ZKusKfPaooKNYqE/GtPiQ+D2HJaJ4pkxeNJQFVUEvAvEh9+3QuLdBeTWkDMNY5NSijc5+pGdM4Q== integrity sha512-clgpFR6QHiRRcdhFfAKDhH8UXpNASyfkkANhtCsCVBnai+O+mK1rGtMES+Apc7ql5Wyxu7j8dcLiC4pV5VblHA==
dependencies: dependencies:
"@babel/runtime" "^7.10.3" "@babel/runtime" "^7.10.3"
"@testing-library/dom" "^7.17.1" "@testing-library/dom" "^7.17.1"
"@testing-library/user-event@12.0.17": "@testing-library/user-event@12.1.0":
version "12.0.17" version "12.1.0"
resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-12.0.17.tgz#51f48905d62b3c6960fe5ea7a46152d8440f1586" resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-12.1.0.tgz#a2597419466a93e338c91baa7bb22d4da0309d1d"
integrity sha512-Et22bfgnLdowY0VSP8MQuCP9wdrqWMrm9OCXSi3q3rx7ctSvEsC/jYNbgK/MJdDSpVhNVnB+fqm1VhVlDDRN6A== integrity sha512-aH/XuNFpPD6dA+fh754EGqKeAzpH66HpLJYkv9vOAih2yGmTM8JiZ8uisQDGWRPkc6sxE2zCqDwLR4ZskhRCxw==
dependencies: dependencies:
"@babel/runtime" "^7.10.2" "@babel/runtime" "^7.10.2"
"@toruslabs/eccrypto@^1.1.3": "@toruslabs/eccrypto@^1.1.4":
version "1.1.3" version "1.1.4"
resolved "https://registry.yarnpkg.com/@toruslabs/eccrypto/-/eccrypto-1.1.3.tgz#6dcee86670149501efee4865d0acb25366f72237" resolved "https://registry.yarnpkg.com/@toruslabs/eccrypto/-/eccrypto-1.1.4.tgz#2b32e0da10b28a316d08984afcda303536954cd8"
integrity sha512-hoLACz9Z6RP/ZH41Ba0iImJpl1f4Zx7pi/d3R7UIrOyt4IOgnWrlkzh2IqQYw4ouae4WZQYSZlyeYv81EWkoxQ== integrity sha512-AQYcd7AM6ePb+V6CZTb6Lb/iaZ/BKpZ66AFdF1YLvMnyBeRY1JgdFOnjQfhtrUAYRMdcc8pBfvjFoWWK7EcggA==
dependencies: dependencies:
acorn "^7.3.1" acorn "^7.4.0"
elliptic "^6.5.3" elliptic "^6.5.3"
es6-promise "^4.2.8" es6-promise "^4.2.8"
nan "^2.14.1" nan "^2.14.1"
@ -1997,26 +2030,28 @@
web3-eth-contract "^1.2.9" web3-eth-contract "^1.2.9"
web3-utils "^1.2.9" web3-utils "^1.2.9"
"@toruslabs/http-helpers@^1.3.3": "@toruslabs/http-helpers@^1.3.4":
version "1.3.3" version "1.3.4"
resolved "https://registry.yarnpkg.com/@toruslabs/http-helpers/-/http-helpers-1.3.3.tgz#8564665a0cb9d4f868e5eaf814bbac71926623a2" resolved "https://registry.yarnpkg.com/@toruslabs/http-helpers/-/http-helpers-1.3.4.tgz#8811cff562fb792267f79ca5cb5c1bf1bc517e34"
integrity sha512-bM0NyFCA+K8DOlhciDLIUQ05/VzuM9lgdwnNSr/gociRhPWbUDc8PkSVKYT3MshXj/ZtLvN9UvcTvY1hddN5UQ== integrity sha512-2Hm34F3GOwg41jEaZs1rVF4b+SGwC2mPeR7WhkkkM1cQNlXyCtcgLNLqlCVrww9e6pfBCZ2h3aEQVw+p4cT4fw==
dependencies: dependencies:
deepmerge "^4.2.2" deepmerge "^4.2.2"
loglevel "^1.6.8" loglevel "^1.6.8"
"@toruslabs/torus-embed@^1.3.0": "@toruslabs/torus-embed@^1.8.2":
version "1.7.3" version "1.8.2"
resolved "https://registry.yarnpkg.com/@toruslabs/torus-embed/-/torus-embed-1.7.3.tgz#1be2f3404a59cb145b5dd11c82da80cec1d360eb" resolved "https://registry.yarnpkg.com/@toruslabs/torus-embed/-/torus-embed-1.8.2.tgz#6652b8f751c5f041749ccbfcaa0c08ced5f4f278"
integrity sha512-PMmksmG9mgRmFvliHccxV2LdDjrNKQfLojlYG3WMXB0OF3Bj3B7Y94ItSEvVf3XI+Q9xadq1cTAN+wLV3km/BA== integrity sha512-SlApK4BavoQYNenoQxjUs9/rrqrGDK5+Z9coABA6J7pLcbSL7QnBl8bKwTTYhI9Hri2GRbUM8XzNNpZfy5RiIQ==
dependencies: dependencies:
"@chaitanyapotti/random-id" "^1.0.3" "@chaitanyapotti/random-id" "^1.0.3"
"@toruslabs/fetch-node-details" "^2.3.0" "@toruslabs/fetch-node-details" "^2.3.0"
"@toruslabs/torus.js" "^2.2.2" "@toruslabs/http-helpers" "^1.3.4"
"@toruslabs/torus.js" "^2.2.4"
create-hash "^1.2.0" create-hash "^1.2.0"
deepmerge "^4.2.2" deepmerge "^4.2.2"
eth-json-rpc-errors "^2.0.2" eth-json-rpc-errors "^2.0.2"
fast-deep-equal "^3.1.3" fast-deep-equal "^3.1.3"
is-stream "^2.0.0"
json-rpc-engine "^5.1.8" json-rpc-engine "^5.1.8"
json-rpc-middleware-stream "^2.1.1" json-rpc-middleware-stream "^2.1.1"
loglevel "^1.6.8" loglevel "^1.6.8"
@ -2027,19 +2062,19 @@
safe-event-emitter "^1.0.1" safe-event-emitter "^1.0.1"
web3 "^0.20.7" web3 "^0.20.7"
"@toruslabs/torus.js@^2.2.2": "@toruslabs/torus.js@^2.2.4":
version "2.2.3" version "2.2.5"
resolved "https://registry.yarnpkg.com/@toruslabs/torus.js/-/torus.js-2.2.3.tgz#525456e01cddfecf29a7b70b640d0188ffbf819e" resolved "https://registry.yarnpkg.com/@toruslabs/torus.js/-/torus.js-2.2.5.tgz#8994ae7727d980e2c0600b1154d547260ea52ec4"
integrity sha512-GryzcqY5/iumfCy0LNUIdjo9iKYRHof6UQzHYK/u2oc4XtCWVKnwk+6OZfuYeurEoW/VDYU+b1MEa7qqOKV9RQ== integrity sha512-fxrIQmtNo4p3uEy5KdiIrZiB32KGPtaV70PoPg/vQB4IL/gjrQSYSIcC0VyP04yBfjHLccJe/HKOhlofpKcjAg==
dependencies: dependencies:
"@toruslabs/eccrypto" "^1.1.3" "@toruslabs/eccrypto" "^1.1.4"
"@toruslabs/http-helpers" "^1.3.3" "@toruslabs/http-helpers" "^1.3.4"
bn.js "^5.1.2" bn.js "^5.1.2"
elliptic "^6.5.3" elliptic "^6.5.3"
json-stable-stringify "^1.0.1" json-stable-stringify "^1.0.1"
loglevel "^1.6.8" loglevel "^1.6.8"
memory-cache "^0.2.0" memory-cache "^0.2.0"
web3-utils "^1.2.9" web3-utils "^1.2.11"
"@truffle/blockchain-utils@^0.0.11": "@truffle/blockchain-utils@^0.0.11":
version "0.0.11" version "0.0.11"
@ -2270,10 +2305,10 @@
jest-diff "^25.2.1" jest-diff "^25.2.1"
pretty-format "^25.2.1" pretty-format "^25.2.1"
"@types/jest@^26.0.7": "@types/jest@^26.0.9":
version "26.0.7" version "26.0.9"
resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.7.tgz#495cb1d1818c1699dbc3b8b046baf1c86ef5e324" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.9.tgz#0543b57da5f0cd949c5f423a00c56c492289c989"
integrity sha512-+x0077/LoN6MjqBcVOe1y9dpryWnfDZ+Xfo3EqGeBcfPRJlQp3Lw62RvNlWxuGv7kOEwlHriAa54updi3Jvvwg== integrity sha512-k4qFfJ5AUKrWok5KYXp2EPm89b0P/KZpl7Vg4XuOTVVQEhLDBDBU3iBFrjjdgd8fLw96aAtmnwhXHl63bWeBQQ==
dependencies: dependencies:
jest-diff "^25.2.1" jest-diff "^25.2.1"
pretty-format "^25.2.1" pretty-format "^25.2.1"
@ -2422,7 +2457,7 @@
dependencies: dependencies:
"@types/react" "*" "@types/react" "*"
"@types/react@*", "@types/react@^16.9.43": "@types/react@*":
version "16.9.43" version "16.9.43"
resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.43.tgz#c287f23f6189666ee3bebc2eb8d0f84bcb6cdb6b" resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.43.tgz#c287f23f6189666ee3bebc2eb8d0f84bcb6cdb6b"
integrity sha512-PxshAFcnJqIWYpJbLPriClH53Z2WlJcVZE+NP2etUtWQs2s7yIMj3/LDKZT/5CHJ/F62iyjVCDu2H3jHEXIxSg== integrity sha512-PxshAFcnJqIWYpJbLPriClH53Z2WlJcVZE+NP2etUtWQs2s7yIMj3/LDKZT/5CHJ/F62iyjVCDu2H3jHEXIxSg==
@ -2430,6 +2465,14 @@
"@types/prop-types" "*" "@types/prop-types" "*"
csstype "^2.2.0" csstype "^2.2.0"
"@types/react@^16.9.44":
version "16.9.44"
resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.44.tgz#da84b179c031aef67dc92c33bd3401f1da2fa3bc"
integrity sha512-BtLoJrXdW8DVZauKP+bY4Kmiq7ubcJq+H/aCpRfvPF7RAT3RwR73Sg8szdc2YasbAlWBDrQ6Q+AFM0KwtQY+WQ==
dependencies:
"@types/prop-types" "*"
csstype "^3.0.2"
"@types/resolve@^0.0.8": "@types/resolve@^0.0.8":
version "0.0.8" version "0.0.8"
resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194"
@ -2456,15 +2499,15 @@
resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e"
integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==
"@types/styled-components@^5.1.1": "@types/styled-components@^5.1.2":
version "5.1.1" version "5.1.2"
resolved "https://registry.yarnpkg.com/@types/styled-components/-/styled-components-5.1.1.tgz#17c3b3a299aa38254189e04a72a8ee009a22e42d" resolved "https://registry.yarnpkg.com/@types/styled-components/-/styled-components-5.1.2.tgz#652af475b4af917b355ea1c3068acae63d46455f"
integrity sha512-fIjKvDU1LJExBZWEQilHqzfpOK4KUwBsj5zC79lxa94ekz8oDQSBNcayMACBImxIuevF+NbBGL9O/2CQ67Zhig== integrity sha512-HNocYLfrsnNNm8NTS/W53OERSjRA8dx5Bn6wBd2rXXwt4Z3s+oqvY6/PbVt3e6sgtzI63GX//WiWiRhWur08qQ==
dependencies: dependencies:
"@types/hoist-non-react-statics" "*" "@types/hoist-non-react-statics" "*"
"@types/react" "*" "@types/react" "*"
"@types/react-native" "*" "@types/react-native" "*"
csstype "^2.2.0" csstype "^3.0.2"
"@types/testing-library__jest-dom@^5.9.1": "@types/testing-library__jest-dom@^5.9.1":
version "5.9.1" version "5.9.1"
@ -2492,12 +2535,12 @@
dependencies: dependencies:
"@types/yargs-parser" "*" "@types/yargs-parser" "*"
"@typescript-eslint/eslint-plugin@3.7.1": "@typescript-eslint/eslint-plugin@3.8.0":
version "3.7.1" version "3.8.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.7.1.tgz#d144c49a9a0ffe8dd704bb179c243df76c111bc9" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.8.0.tgz#f82947bcdd9a4e42be7ad80dfd61f1dc411dd1df"
integrity sha512-3DB9JDYkMrc8Au00rGFiJLK2Ja9CoMP6Ut0sHsXp3ZtSugjNxvSSHTnKLfo4o+QmjYBJqEznDqsG1zj4F2xnsg== integrity sha512-lFb4VCDleFSR+eo4Ew+HvrJ37ZH1Y9ZyE+qyP7EiwBpcCVxwmUc5PAqhShCQ8N8U5vqYydm74nss+a0wrrCErw==
dependencies: dependencies:
"@typescript-eslint/experimental-utils" "3.7.1" "@typescript-eslint/experimental-utils" "3.8.0"
debug "^4.1.1" debug "^4.1.1"
functional-red-black-tree "^1.0.1" functional-red-black-tree "^1.0.1"
regexpp "^3.0.0" regexpp "^3.0.0"
@ -2524,26 +2567,26 @@
eslint-scope "^5.0.0" eslint-scope "^5.0.0"
eslint-utils "^2.0.0" eslint-utils "^2.0.0"
"@typescript-eslint/experimental-utils@3.7.1": "@typescript-eslint/experimental-utils@3.8.0":
version "3.7.1" version "3.8.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.7.1.tgz#ab036caaed4c870d22531d41f9352f3147364d61" resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.8.0.tgz#ac1f7c88322dcfb7635ece6f0441516dd951099a"
integrity sha512-TqE97pv7HrqWcGJbLbZt1v59tcqsSVpWTOf1AqrWK7n8nok2sGgVtYRuGXeNeLw3wXlLEbY1MKP3saB2HsO/Ng== integrity sha512-o8T1blo1lAJE0QDsW7nSyvZHbiDzQDjINJKyB44Z3sSL39qBy5L10ScI/XwDtaiunoyKGLiY9bzRk4YjsUZl8w==
dependencies: dependencies:
"@types/json-schema" "^7.0.3" "@types/json-schema" "^7.0.3"
"@typescript-eslint/types" "3.7.1" "@typescript-eslint/types" "3.8.0"
"@typescript-eslint/typescript-estree" "3.7.1" "@typescript-eslint/typescript-estree" "3.8.0"
eslint-scope "^5.0.0" eslint-scope "^5.0.0"
eslint-utils "^2.0.0" eslint-utils "^2.0.0"
"@typescript-eslint/parser@3.7.1": "@typescript-eslint/parser@3.8.0":
version "3.7.1" version "3.8.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.7.1.tgz#5d9ccecb116d12d9c6073e9861c57c9b1aa88128" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.8.0.tgz#8e1dcd404299bf79492409c81c415fa95a7c622b"
integrity sha512-W4QV/gXvfIsccN8225784LNOorcm7ch68Fi3V4Wg7gmkWSQRKevO4RrRqWo6N/Z/myK1QAiGgeaXN57m+R/8iQ== integrity sha512-u5vjOBaCsnMVQOvkKCXAmmOhyyMmFFf5dbkM3TIbg3MZ2pyv5peE4gj81UAbTHwTOXEwf7eCQTUMKrDl/+qGnA==
dependencies: dependencies:
"@types/eslint-visitor-keys" "^1.0.0" "@types/eslint-visitor-keys" "^1.0.0"
"@typescript-eslint/experimental-utils" "3.7.1" "@typescript-eslint/experimental-utils" "3.8.0"
"@typescript-eslint/types" "3.7.1" "@typescript-eslint/types" "3.8.0"
"@typescript-eslint/typescript-estree" "3.7.1" "@typescript-eslint/typescript-estree" "3.8.0"
eslint-visitor-keys "^1.1.0" eslint-visitor-keys "^1.1.0"
"@typescript-eslint/parser@^2.10.0": "@typescript-eslint/parser@^2.10.0":
@ -2556,10 +2599,10 @@
"@typescript-eslint/typescript-estree" "2.34.0" "@typescript-eslint/typescript-estree" "2.34.0"
eslint-visitor-keys "^1.1.0" eslint-visitor-keys "^1.1.0"
"@typescript-eslint/types@3.7.1": "@typescript-eslint/types@3.8.0":
version "3.7.1" version "3.8.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.7.1.tgz#90375606b2fd73c1224fe9e397ee151e28fa1e0c" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.8.0.tgz#58581dd863f86e0cd23353d94362bb90b4bea796"
integrity sha512-PZe8twm5Z4b61jt7GAQDor6KiMhgPgf4XmUb9zdrwTbgtC/Sj29gXP1dws9yEn4+aJeyXrjsD9XN7AWFhmnUfg== integrity sha512-8kROmEQkv6ss9kdQ44vCN1dTrgu4Qxrd2kXr10kz2NP5T8/7JnEfYNxCpPkArbLIhhkGLZV3aVMplH1RXQRF7Q==
"@typescript-eslint/typescript-estree@2.34.0": "@typescript-eslint/typescript-estree@2.34.0":
version "2.34.0" version "2.34.0"
@ -2574,13 +2617,13 @@
semver "^7.3.2" semver "^7.3.2"
tsutils "^3.17.1" tsutils "^3.17.1"
"@typescript-eslint/typescript-estree@3.7.1": "@typescript-eslint/typescript-estree@3.8.0":
version "3.7.1" version "3.8.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.7.1.tgz#ce1ffbd0fa53f34d4ce851a7a364e392432f6eb3" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.8.0.tgz#0606d19f629f813dbdd5a34c7a1e895d6191cac6"
integrity sha512-m97vNZkI08dunYOr2lVZOHoyfpqRs0KDpd6qkGaIcLGhQ2WPtgHOd/eVbsJZ0VYCQvupKrObAGTOvk3tfpybYA== integrity sha512-MTv9nPDhlKfclwnplRNDL44mP2SY96YmPGxmMbMy6x12I+pERcxpIUht7DXZaj4mOKKtet53wYYXU0ABaiXrLw==
dependencies: dependencies:
"@typescript-eslint/types" "3.7.1" "@typescript-eslint/types" "3.8.0"
"@typescript-eslint/visitor-keys" "3.7.1" "@typescript-eslint/visitor-keys" "3.8.0"
debug "^4.1.1" debug "^4.1.1"
glob "^7.1.6" glob "^7.1.6"
is-glob "^4.0.1" is-glob "^4.0.1"
@ -2588,107 +2631,107 @@
semver "^7.3.2" semver "^7.3.2"
tsutils "^3.17.1" tsutils "^3.17.1"
"@typescript-eslint/visitor-keys@3.7.1": "@typescript-eslint/visitor-keys@3.8.0":
version "3.7.1" version "3.8.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.7.1.tgz#b90191e74efdee656be8c5a30f428ed16dda46d1" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.8.0.tgz#ad35110249fb3fc30a36bfcbfeea93e710cfaab1"
integrity sha512-xn22sQbEya+Utj2IqJHGLA3i1jDzR43RzWupxojbSWnj3nnPLavaQmWe5utw03CwYao3r00qzXfgJMGNkrzrAA== integrity sha512-gfqQWyVPpT9NpLREXNR820AYwgz+Kr1GuF3nf1wxpHD6hdxI62tq03ToomFnDxY0m3pUB39IF7sil7D5TQexLA==
dependencies: dependencies:
eslint-visitor-keys "^1.1.0" eslint-visitor-keys "^1.1.0"
"@unilogin/provider@^0.5.21": "@unilogin/provider@^0.6.1":
version "0.5.21" version "0.6.1"
resolved "https://registry.yarnpkg.com/@unilogin/provider/-/provider-0.5.21.tgz#bc3aa74750c3fcd2ddcb763279fb58d88f5bc8f5" resolved "https://registry.yarnpkg.com/@unilogin/provider/-/provider-0.6.1.tgz#427247f0cb0899d8b0d00c04a4b90ae2a3c2cb40"
integrity sha512-HVMrFIKc6ysxj5F1dz0UFaSIvSMtqw5JBYEzomvtthsw/fNwbT8/I/mA4OCaAJcpuaI1d66X9bZhOrP5GWcwVg== integrity sha512-S96uBfoh+/nk8L6Yr+YgEV+FwQgtRnozWhgJpOhmRz128ri5Qv2SXLx5Sac33NGbs8g27PgKOyHX3dKJCvcP3g==
dependencies: dependencies:
"@restless/sanitizers" "^0.2.4" "@restless/sanitizers" "^0.2.5"
reactive-properties "^0.1.11" reactive-properties "^0.1.11"
"@walletconnect/client@^1.0.18": "@walletconnect/client@^1.1.0":
version "1.0.18" version "1.1.0"
resolved "https://registry.yarnpkg.com/@walletconnect/client/-/client-1.0.18.tgz#e3316fc53c0218d69e03bcdbb3c4c9759579b151" resolved "https://registry.yarnpkg.com/@walletconnect/client/-/client-1.1.0.tgz#f2454cba82da3d8c7375b2a5d9d47f34ed7348ec"
integrity sha512-VgxS4mdsYfp6PQ/W4jVtWGhiQb2wf8hWM+kYMHV21N9UUkOuRBBjDay1Gxq2Tv99+BOF4VI+cpmvjTvsGaT/0A== integrity sha512-pHxvUDCkD4oP3AFxYLU7yeE+qDZtcHF20b2K8/HNvyuyu3eWFX4jpHgx6FdvcIcFcAXGs5nk24zBUEO8p+axWg==
dependencies: dependencies:
"@walletconnect/core" "^1.0.18" "@walletconnect/core" "^1.1.0"
"@walletconnect/iso-crypto" "^1.0.18" "@walletconnect/iso-crypto" "^1.1.0"
"@walletconnect/types" "^1.0.18" "@walletconnect/types" "^1.1.0"
"@walletconnect/utils" "^1.0.18" "@walletconnect/utils" "^1.1.0"
"@walletconnect/core@^1.0.18": "@walletconnect/core@^1.1.0":
version "1.0.18" version "1.1.0"
resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-1.0.18.tgz#3632998f8bb8280d64b40506cdbfef51df24d729" resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-1.1.0.tgz#053f08b0ccfdfb14ccd27b7fd425d9849cedba14"
integrity sha512-lpkD8P7l3EDLJswG0L8BrHMck70s+G/KncUnpr0r7eQ4t9Rh+waDBi4g2JBPj9LbRxFZYKiLEcW4r+Oh/85Yhw== integrity sha512-Bhe4gnR6Az11u7OAOw0UDZKM6emUjIQtQ2PVdPDWke6ryC0DWMg9vTYbVPf3lDHBv5hy5eAyDst30N5E91SuYw==
dependencies: dependencies:
"@walletconnect/socket-transport" "^1.0.18" "@walletconnect/socket-transport" "^1.1.0"
"@walletconnect/types" "^1.0.18" "@walletconnect/types" "^1.1.0"
"@walletconnect/utils" "^1.0.18" "@walletconnect/utils" "^1.1.0"
"@walletconnect/http-connection@^1.0.18": "@walletconnect/http-connection@^1.1.0":
version "1.0.18" version "1.1.0"
resolved "https://registry.yarnpkg.com/@walletconnect/http-connection/-/http-connection-1.0.18.tgz#eaad192e8262de2b23c4ac8c092d3816eefc7a83" resolved "https://registry.yarnpkg.com/@walletconnect/http-connection/-/http-connection-1.1.0.tgz#c6650c12a07244d30f20647420cdcd8c69c6daca"
integrity sha512-ifGNtNglOEU/EwehEFODUuYSV8yS8IW+uzIDVRQC0gK7FIaaQEVwkwmD0ksN8wrgj4z6/8V1JHi7lct+Eo4S0w== integrity sha512-ugxDW/NaSgn7rmdPZhrpJIS79gASLvzBnGHScMs8zpYDHwcFxh2DP3HTspC8o5FyMqjRlEGtNi4zSGKY6EOrkw==
dependencies: dependencies:
"@walletconnect/types" "^1.0.18" "@walletconnect/types" "^1.1.0"
"@walletconnect/utils" "^1.0.18" "@walletconnect/utils" "^1.1.0"
xhr2-cookies "1.1.0" xhr2-cookies "1.1.0"
"@walletconnect/iso-crypto@^1.0.18": "@walletconnect/iso-crypto@^1.1.0":
version "1.0.18" version "1.1.0"
resolved "https://registry.yarnpkg.com/@walletconnect/iso-crypto/-/iso-crypto-1.0.18.tgz#4aa5f4c9912048e9880fe945ff7ff7520a6ec347" resolved "https://registry.yarnpkg.com/@walletconnect/iso-crypto/-/iso-crypto-1.1.0.tgz#a8235049c1b239adcf9fc6a6c38b7e9ad13004a6"
integrity sha512-ABpN3Hcwv7AT9N55C/whTz/lWX2RnuhQf4timzbgaawqZ0vJlFlYI9fNdag0T54S8NcWvKXTiwDxRJ8hOiR+3A== integrity sha512-ttWLj4rTy2NGQnSAKnAar1LSrsJuCQ2JnQUl8hsgc9oTwXKgnRvtxGy2Kajoih/tNKnK959Ilj4WI2HaSJ9G1g==
dependencies: dependencies:
"@walletconnect/types" "^1.0.18" "@walletconnect/types" "^1.1.0"
"@walletconnect/utils" "^1.0.18" "@walletconnect/utils" "^1.1.0"
eccrypto-js "5.2.0" eccrypto-js "5.2.0"
"@walletconnect/mobile-registry@^1.0.18": "@walletconnect/mobile-registry@^1.1.0":
version "1.0.18" version "1.1.0"
resolved "https://registry.yarnpkg.com/@walletconnect/mobile-registry/-/mobile-registry-1.0.18.tgz#6ca311c8a1ad7f803682d3135f61635a8c6f98e1" resolved "https://registry.yarnpkg.com/@walletconnect/mobile-registry/-/mobile-registry-1.1.0.tgz#72173a4fcee61f4f8819f6d9fc7cfbf824ed3548"
integrity sha512-SmBg2t/ucrkXM3624Gn2/8DupsR8984JVscet1xyHTwr78hj69gpJc4yO8+gADpaHKgA2eCQCbKLupqruwqWdA== integrity sha512-OOHQa4NeK2lbfI9WD2d+hTHGwSDzBLoTCeofdLNO2ibaTltQ6S+WNDAVuho6U8CkUTzs5cHPFgLJ6nxYZ8sr/g==
"@walletconnect/qrcode-modal@^1.0.18": "@walletconnect/qrcode-modal@^1.1.0":
version "1.0.18" version "1.1.0"
resolved "https://registry.yarnpkg.com/@walletconnect/qrcode-modal/-/qrcode-modal-1.0.18.tgz#4461d31c92ba6b0ad3deb454f91d246c95c7a0c9" resolved "https://registry.yarnpkg.com/@walletconnect/qrcode-modal/-/qrcode-modal-1.1.0.tgz#4cd0c2c2c713be3f49ef00293a1b23a079d4c7b7"
integrity sha512-50XdgUiQPlx95VnBOs8afjLKvvGn4kBT9RrbsDLQ52m/Sn2/yzyoLoEEuk+Wv3t5VkZxTBZ5BeQNpCxTRfYR1Q== integrity sha512-vYsu1MBE0D+kx1+xdXmaCs7JqhhWPw8orKk9Br64YIPF5pv/48i+Yi/m28/0myJm54YPlVcgzTnuf8PzAH7jgA==
dependencies: dependencies:
"@walletconnect/mobile-registry" "^1.0.18" "@walletconnect/mobile-registry" "^1.1.0"
"@walletconnect/types" "^1.0.18" "@walletconnect/types" "^1.1.0"
"@walletconnect/utils" "^1.0.18" "@walletconnect/utils" "^1.1.0"
preact "10.4.1" preact "10.4.1"
qrcode "1.4.4" qrcode "1.4.4"
"@walletconnect/socket-transport@^1.0.18": "@walletconnect/socket-transport@^1.1.0":
version "1.0.18" version "1.1.0"
resolved "https://registry.yarnpkg.com/@walletconnect/socket-transport/-/socket-transport-1.0.18.tgz#49395772b17de9f2ee42312db5cd692b0eabe16b" resolved "https://registry.yarnpkg.com/@walletconnect/socket-transport/-/socket-transport-1.1.0.tgz#d80b5e6b3b904f131961259ca16de816ae2b003b"
integrity sha512-UQclrEM4uExqbF3snAxhZil0XMlxufmlMZUNgfFe+io9K3H/FH7kILIMqow0Y7EhxUL++bVsVGTEjurDz4sYzw== integrity sha512-plo5WHjL3RTDENH7MTgs7D/ePGHfSuc/HLzkVGvgZSOtoPlRR916nSZNeL4bStYF1ZRJCrds10x36C0DlZjpQg==
dependencies: dependencies:
"@walletconnect/types" "^1.0.18" "@walletconnect/types" "^1.1.0"
ws "7.3.0" ws "7.3.0"
"@walletconnect/types@^1.0.18": "@walletconnect/types@^1.1.0":
version "1.0.18" version "1.1.0"
resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-1.0.18.tgz#7b5b2bffe4451f3128f34d3c31bb99a6fd023152" resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-1.1.0.tgz#1e4efbf033ad89910cbb86f1f381cd5fe7e764fd"
integrity sha512-gGu3rAcmdeauLxOZo5X4KYzBhxoxpGCHzd7LEcgcsLIhx/4cUqk3lirElO4WozeUkQyy28yEBTLUA6bASFsFpQ== integrity sha512-cgDEuYHZZTiaXFRwQs3Zhhar+l2T58/YjhWrfZTMKWuc77geIbF7682i9lE9bNEQqQvQ76jjKxJfSLGjCu++sA==
"@walletconnect/utils@^1.0.18": "@walletconnect/utils@^1.1.0":
version "1.0.18" version "1.1.0"
resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-1.0.18.tgz#730a8dbccbce9582b74761cb3faa1cc1cc4328d7" resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-1.1.0.tgz#7b0bcf5c77e8079ac055013537a9620244db2da9"
integrity sha512-isq7brCnZJj82QEd/34TjM4qrZcTe2PjvFuvrkhtS0c3T+Qaq0sZ6HzJA2Mctu0Uv33vqI7VDgsIkuecD0KYWw== integrity sha512-y5v8PCmd/2kASOncYaz5QJiAzwBRT5MK398PmIkImX9tNEeBh00ifeQGZKkCGi6JYXbde0UC5jsGTGkH8hdxeg==
dependencies: dependencies:
"@walletconnect/types" "^1.0.18" "@walletconnect/types" "^1.1.0"
detect-browser "5.1.0" detect-browser "5.1.0"
enc-utils "2.1.0" enc-utils "2.1.0"
js-sha3 "0.8.0" js-sha3 "0.8.0"
"@walletconnect/web3-provider@^1.0.13": "@walletconnect/web3-provider@^1.1.0":
version "1.0.18" version "1.1.0"
resolved "https://registry.yarnpkg.com/@walletconnect/web3-provider/-/web3-provider-1.0.18.tgz#4ca86a3841dfdb1854681bd6da7b7466cf03ae20" resolved "https://registry.yarnpkg.com/@walletconnect/web3-provider/-/web3-provider-1.1.0.tgz#c8a30c4121d3ade159022b10d3a18ecd804c8993"
integrity sha512-XvbdvMJq8P977uYpCsibt2wpZgQ5qRPBMK22jO0kmUuHdxuctqVQI+zqrnpeFzjQQi5wRvBRb3x15aSFUCo+Lg== integrity sha512-1DaYG+aK2pjCBKXrB0c2JKeFk27ObUsu09LlZN1VvIi1+zvHftaubNsSGViLmrq25w72yPle/SDjhgmxvKVMQQ==
dependencies: dependencies:
"@walletconnect/client" "^1.0.18" "@walletconnect/client" "^1.1.0"
"@walletconnect/http-connection" "^1.0.18" "@walletconnect/http-connection" "^1.1.0"
"@walletconnect/qrcode-modal" "^1.0.18" "@walletconnect/qrcode-modal" "^1.1.0"
"@walletconnect/types" "^1.0.18" "@walletconnect/types" "^1.1.0"
"@walletconnect/utils" "^1.0.18" "@walletconnect/utils" "^1.1.0"
web3-provider-engine "15.0.12" web3-provider-engine "15.0.12"
"@webassemblyjs/ast@1.8.5": "@webassemblyjs/ast@1.8.5":
@ -2919,11 +2962,16 @@ acorn@^6.0.1, acorn@^6.0.4, acorn@^6.2.1:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474"
integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==
acorn@^7.1.1, acorn@^7.3.1: acorn@^7.1.1:
version "7.3.1" version "7.3.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd"
integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA== integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==
acorn@^7.4.0:
version "7.4.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c"
integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==
address@1.1.2, address@^1.0.1: address@1.1.2, address@^1.0.1:
version "1.1.2" version "1.1.2"
resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6"
@ -3419,7 +3467,20 @@ authereum@^0.0.4-beta.157:
web3-provider-engine "15.0.4" web3-provider-engine "15.0.4"
web3-utils "1.2.1" web3-utils "1.2.1"
autoprefixer@9.8.5, autoprefixer@^9.6.1: autoprefixer@9.8.6:
version "9.8.6"
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f"
integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==
dependencies:
browserslist "^4.12.0"
caniuse-lite "^1.0.30001109"
colorette "^1.2.1"
normalize-range "^0.1.2"
num2fraction "^1.2.2"
postcss "^7.0.32"
postcss-value-parser "^4.1.0"
autoprefixer@^9.6.1:
version "9.8.5" version "9.8.5"
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.5.tgz#2c225de229ddafe1d1424c02791d0c3e10ccccaa" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.5.tgz#2c225de229ddafe1d1424c02791d0c3e10ccccaa"
integrity sha512-C2p5KkumJlsTHoNv9w31NrBRgXhf6eCMteJuHZi2xhkgC+5Vm40MEtCKPhc0qdgAOhox0YPy1SQHTAky05UoKg== integrity sha512-C2p5KkumJlsTHoNv9w31NrBRgXhf6eCMteJuHZi2xhkgC+5Vm40MEtCKPhc0qdgAOhox0YPy1SQHTAky05UoKg==
@ -4285,29 +4346,28 @@ bn.js@^5.1.1, bn.js@^5.1.2:
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0"
integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA== integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==
bnc-onboard@1.10.3: bnc-onboard@1.11.0:
version "1.10.3" version "1.11.0"
resolved "https://registry.yarnpkg.com/bnc-onboard/-/bnc-onboard-1.10.3.tgz#c05ce2af4d5538f0be51a08eea30e2264f830fd2" resolved "https://registry.yarnpkg.com/bnc-onboard/-/bnc-onboard-1.11.0.tgz#cb3d79b702a15d12114aa649beddb2ec5ea83e70"
integrity sha512-4zH1CNaiyn6cYkAak4swaVa+1EpFzgJI8ZA8GL1A/SJqyig699h9gq60P+0R8Ga5xo2Pzr/WaVpy4jMUgcXPbQ== integrity sha512-hHB+xb6SULRxQh/Bm5DBEfg/4/QLI/B9q/h3AyMf+21FMmJ66DUODDsoIwbiq1fh3IrwHpoSmNLdb2nTeN0Wog==
dependencies: dependencies:
"@ledgerhq/hw-app-eth" "^5.19.0" "@ledgerhq/hw-app-eth" "^5.21.0"
"@ledgerhq/hw-transport-u2f" "^5.19.0" "@ledgerhq/hw-transport-u2f" "^5.21.0"
"@portis/web3" "^2.0.0-beta.55" "@portis/web3" "^2.0.0-beta.57"
"@toruslabs/torus-embed" "^1.3.0" "@toruslabs/torus-embed" "^1.8.2"
"@unilogin/provider" "^0.5.21" "@unilogin/provider" "^0.6.1"
"@walletconnect/web3-provider" "^1.0.13" "@walletconnect/web3-provider" "^1.1.0"
authereum "^0.0.4-beta.157" authereum "^0.0.4-beta.157"
bignumber.js "^9.0.0" bignumber.js "^9.0.0"
bnc-sdk "^2.1.4" bnc-sdk "^2.1.4"
bowser "^2.5.2" bowser "^2.10.0"
ethereumjs-tx "^2.1.2" ethereumjs-tx "^2.1.2"
ethereumjs-util "^6.2.0" ethereumjs-util "^7.0.3"
ethereumjs-wallet "^0.6.3" fortmatic "^2.2.1"
fortmatic "^0.8.2" hdkey "^2.0.1"
hdkey "^1.1.1" regenerator-runtime "^0.13.7"
regenerator-runtime "^0.13.3"
squarelink "^1.1.4" squarelink "^1.1.4"
trezor-connect "^8.1.2" trezor-connect "^8.1.9"
walletlink "^2.0.2" walletlink "^2.0.2"
web3-provider-engine "^15.0.4" web3-provider-engine "^15.0.4"
@ -4357,7 +4417,7 @@ boolean@^3.0.0, boolean@^3.0.1:
resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.0.1.tgz#35ecf2b4a2ee191b0b44986f14eb5f052a5cbb4f" resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.0.1.tgz#35ecf2b4a2ee191b0b44986f14eb5f052a5cbb4f"
integrity sha512-HRZPIjPcbwAVQvOTxR4YE3o8Xs98NqbbL1iEZDCz7CL8ql0Lt5iOyJFxfnAB0oFs8Oh02F/lLlg30Mexv46LjA== integrity sha512-HRZPIjPcbwAVQvOTxR4YE3o8Xs98NqbbL1iEZDCz7CL8ql0Lt5iOyJFxfnAB0oFs8Oh02F/lLlg30Mexv46LjA==
bowser@^2.5.2: bowser@^2.10.0:
version "2.10.0" version "2.10.0"
resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.10.0.tgz#be3736f161c4bb8b10958027ab99465d2a811198" resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.10.0.tgz#be3736f161c4bb8b10958027ab99465d2a811198"
integrity sha512-OCsqTQboTEWWsUjcp5jLSw2ZHsBiv2C105iFs61bOT0Hnwi9p7/uuXdd7mu8RYcarREfdjNN+8LitmEHATsLYg== integrity sha512-OCsqTQboTEWWsUjcp5jLSw2ZHsBiv2C105iFs61bOT0Hnwi9p7/uuXdd7mu8RYcarREfdjNN+8LitmEHATsLYg==
@ -4837,6 +4897,11 @@ caniuse-lite@^1.0.30001097:
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001104.tgz#4e3d5b3b1dd3c3529f10cb7f519c62ba3e579f5d" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001104.tgz#4e3d5b3b1dd3c3529f10cb7f519c62ba3e579f5d"
integrity sha512-pkpCg7dmI/a7WcqM2yfdOiT4Xx5tzyoHAXWsX5/HxZ3TemwDZs0QXdqbE0UPLPVy/7BeK7693YfzfRYfu1YVpg== integrity sha512-pkpCg7dmI/a7WcqM2yfdOiT4Xx5tzyoHAXWsX5/HxZ3TemwDZs0QXdqbE0UPLPVy/7BeK7693YfzfRYfu1YVpg==
caniuse-lite@^1.0.30001109:
version "1.0.30001111"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001111.tgz#dd0ce822c70eb6c7c068e4a55c22e19ec1501298"
integrity sha512-xnDje2wchd/8mlJu8sXvWxOGvMgv+uT3iZ3bkIAynKOzToCssWCmkz/ZIkQBs/2pUB4uwnJKVORWQ31UkbVjOg==
capture-exit@^2.0.0: capture-exit@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4"
@ -5190,7 +5255,7 @@ color@^3.0.0:
color-convert "^1.9.1" color-convert "^1.9.1"
color-string "^1.5.2" color-string "^1.5.2"
colorette@^1.2.0: colorette@^1.2.0, colorette@^1.2.1:
version "1.2.1" version "1.2.1"
resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b"
integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==
@ -5887,6 +5952,11 @@ csstype@^2.2.0, csstype@^2.5.2, csstype@^2.6.5, csstype@^2.6.7:
resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.11.tgz#452f4d024149ecf260a852b025e36562a253ffc5" resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.11.tgz#452f4d024149ecf260a852b025e36562a253ffc5"
integrity sha512-l8YyEC9NBkSm783PFTvh0FmJy7s5pFKrDp49ZL7zBGX3fWkO+N4EEyan1qqp8cwPLDcD0OSdyY6hAMoxp34JFw== integrity sha512-l8YyEC9NBkSm783PFTvh0FmJy7s5pFKrDp49ZL7zBGX3fWkO+N4EEyan1qqp8cwPLDcD0OSdyY6hAMoxp34JFw==
csstype@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.2.tgz#ee5ff8f208c8cd613b389f7b222c9801ca62b3f7"
integrity sha512-ofovWglpqoqbfLNOTBNZLSbMuGrblAf1efvvArGKOZMBrIoJeu5UsAipQolkijtyQx5MtAzT/J9IHj/CEY1mJw==
currency-flags@2.1.2: currency-flags@2.1.2:
version "2.1.2" version "2.1.2"
resolved "https://registry.yarnpkg.com/currency-flags/-/currency-flags-2.1.2.tgz#483bbc69fcc7f0de00ec3a781047767311feba9d" resolved "https://registry.yarnpkg.com/currency-flags/-/currency-flags-2.1.2.tgz#483bbc69fcc7f0de00ec3a781047767311feba9d"
@ -7529,7 +7599,7 @@ ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereum
rlp "^2.0.0" rlp "^2.0.0"
safe-buffer "^5.1.1" safe-buffer "^5.1.1"
ethereumjs-util@^6.0.0, ethereumjs-util@^6.1.0, ethereumjs-util@^6.2.0: ethereumjs-util@^6.0.0, ethereumjs-util@^6.1.0:
version "6.2.1" version "6.2.1"
resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69"
integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==
@ -7542,6 +7612,18 @@ ethereumjs-util@^6.0.0, ethereumjs-util@^6.1.0, ethereumjs-util@^6.2.0:
ethjs-util "0.1.6" ethjs-util "0.1.6"
rlp "^2.2.3" rlp "^2.2.3"
ethereumjs-util@^7.0.3:
version "7.0.4"
resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.0.4.tgz#f4b2022a91416bf421b35b0d5b81c21e8abd8b7f"
integrity sha512-isldtbCn9fdnhBPxedMNbFkNWVZ8ZdQvKRDSrdflame/AycAPKMer+vEpndpBxYIB3qxN6bd3Gh1YCQW9LDkCQ==
dependencies:
"@types/bn.js" "^4.11.3"
bn.js "^5.1.2"
create-hash "^1.1.2"
ethereum-cryptography "^0.1.3"
ethjs-util "0.1.6"
rlp "^2.2.4"
ethereumjs-vm@2.2.2: ethereumjs-vm@2.2.2:
version "2.2.2" version "2.2.2"
resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-2.2.2.tgz#786317d2c63e547d936c1a468607510e70b4c262" resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-2.2.2.tgz#786317d2c63e547d936c1a468607510e70b4c262"
@ -7652,7 +7734,7 @@ eventemitter3@4.0.4, eventemitter3@^4.0.0:
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384"
integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==
events@^3.0.0, events@^3.1.0: events@^3.0.0, events@^3.1.0, events@^3.2.0:
version "3.2.0" version "3.2.0"
resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379"
integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==
@ -8214,12 +8296,10 @@ form-data@~2.3.2:
combined-stream "^1.0.6" combined-stream "^1.0.6"
mime-types "^2.1.12" mime-types "^2.1.12"
fortmatic@^0.8.2: fortmatic@^2.2.1:
version "0.8.2" version "2.2.1"
resolved "https://registry.yarnpkg.com/fortmatic/-/fortmatic-0.8.2.tgz#a93fc97d1a1808faf82210d6554e1ebdcb6c5379" resolved "https://registry.yarnpkg.com/fortmatic/-/fortmatic-2.2.1.tgz#91ce9159c1fe539bd87e483125fca5c27a410a86"
integrity sha512-eIuoTpDzK0CN92yOQyEbKoFuaBgxqXjmNMmUbvTphirKPkufSyYkqgHHuAJzgFe3HC5JFuWb/IlrMvqWoe/gKQ== integrity sha512-PEfPoErJSErU2A8iYD2Mab2c8eJK5dCdCr1jR/8yc49aEAlyQ4UXnZXyeO6MU5zBGkDAZmg9brnRSPzc+8MKPQ==
dependencies:
"@babel/runtime" "7.3.4"
forwarded@~0.1.2: forwarded@~0.1.2:
version "0.1.2" version "0.1.2"
@ -8797,14 +8877,14 @@ hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7:
inherits "^2.0.3" inherits "^2.0.3"
minimalistic-assert "^1.0.1" minimalistic-assert "^1.0.1"
hdkey@^1.1.1: hdkey@^2.0.1:
version "1.1.2" version "2.0.1"
resolved "https://registry.yarnpkg.com/hdkey/-/hdkey-1.1.2.tgz#c60f9cf6f90fbf24a8a52ea06893f36a0108cd3e" resolved "https://registry.yarnpkg.com/hdkey/-/hdkey-2.0.1.tgz#0a211d0c510bfc44fa3ec9d44b13b634641cad74"
integrity sha512-PTQ4VKu0oRnCrYfLp04iQZ7T2Cxz0UsEXYauk2j8eh6PJXCpbXuCFhOmtIFtbET0i3PMWmHN9J11gU8LEgUljQ== integrity sha512-c+tl9PHG9/XkGgG0tD7CJpRVaE0jfZizDNmnErUAKQ4EjQSOcOUcV3EN9ZEZS8pZ4usaeiiK0H7stzuzna8feA==
dependencies: dependencies:
bs58check "^2.1.2" bs58check "^2.1.2"
safe-buffer "^5.1.1" safe-buffer "^5.1.1"
secp256k1 "^3.0.1" secp256k1 "^4.0.0"
he@1.2.0, he@^1.2.0: he@1.2.0, he@^1.2.0:
version "1.2.0" version "1.2.0"
@ -14481,16 +14561,16 @@ regenerator-runtime@^0.11.0:
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
regenerator-runtime@^0.12.0:
version "0.12.1"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de"
integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==
regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4: regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4:
version "0.13.6" version "0.13.6"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.6.tgz#d236043c46ffab2968c1ef651803d8acdea8ed65" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.6.tgz#d236043c46ffab2968c1ef651803d8acdea8ed65"
integrity sha512-GmwlGiazQEbOwQWDdbbaP10i15pGtScYWLbMZuu+RKRz0cZ+g8IUONazBnaZqe7j1670IV1HgE4/8iy7CQPf4Q== integrity sha512-GmwlGiazQEbOwQWDdbbaP10i15pGtScYWLbMZuu+RKRz0cZ+g8IUONazBnaZqe7j1670IV1HgE4/8iy7CQPf4Q==
regenerator-runtime@^0.13.7:
version "0.13.7"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55"
integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==
regenerator-transform@^0.10.0: regenerator-transform@^0.10.0:
version "0.10.1" version "0.10.1"
resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd"
@ -14846,7 +14926,7 @@ ripemd160@^2.0.0, ripemd160@^2.0.1:
hash-base "^3.0.0" hash-base "^3.0.0"
inherits "^2.0.1" inherits "^2.0.1"
rlp@^2.0.0, rlp@^2.2.3, rlp@^2.2.6: rlp@^2.0.0, rlp@^2.2.3, rlp@^2.2.4, rlp@^2.2.6:
version "2.2.6" version "2.2.6"
resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.6.tgz#c80ba6266ac7a483ef1e69e8e2f056656de2fb2c" resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.6.tgz#c80ba6266ac7a483ef1e69e8e2f056656de2fb2c"
integrity sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg== integrity sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg==
@ -15070,7 +15150,7 @@ secp256k1@3.8.0, secp256k1@^3.0.1, secp256k1@^3.7.1, secp256k1@^3.8.0:
nan "^2.14.0" nan "^2.14.0"
safe-buffer "^5.1.2" safe-buffer "^5.1.2"
secp256k1@^4.0.1: secp256k1@^4.0.0, secp256k1@^4.0.1:
version "4.0.2" version "4.0.2"
resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.2.tgz#15dd57d0f0b9fdb54ac1fa1694f40e5e9a54f4a1" resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.2.tgz#15dd57d0f0b9fdb54ac1fa1694f40e5e9a54f4a1"
integrity sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg== integrity sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg==
@ -16505,14 +16585,14 @@ tree-kill@^1.2.2:
resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc"
integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==
trezor-connect@^8.1.2: trezor-connect@^8.1.9:
version "8.1.8" version "8.1.10"
resolved "https://registry.yarnpkg.com/trezor-connect/-/trezor-connect-8.1.8.tgz#db46f2637047fa45fef3f5a7c6f16a792cc2067a" resolved "https://registry.yarnpkg.com/trezor-connect/-/trezor-connect-8.1.10.tgz#1f80525c91684e7dc062f2e5eb6d93502e61172b"
integrity sha512-ZTgKmSd5scbUAdHwz6DLwILVoNRe//6fQcuaVDL0tbWHvB5MNajGlLDzPG/TM7y156mzXmXF2Y4LJQqLDQhaIw== integrity sha512-q1Hscxjyr1PtZj02yRu9rKps9VrSZ4koXgE8DM1QES2Sc7buhNqHwvRZQLQopUDXSoZh2vgObQNBrJsNHbWBpg==
dependencies: dependencies:
"@babel/runtime" "^7.10.2" "@babel/runtime" "^7.11.0"
events "^3.1.0" events "^3.2.0"
whatwg-fetch "^3.0.0" whatwg-fetch "^3.3.1"
trim-newlines@^1.0.0: trim-newlines@^1.0.0:
version "1.0.0" version "1.0.0"
@ -18014,6 +18094,7 @@ websocket@^1.0.31:
dependencies: dependencies:
debug "^2.2.0" debug "^2.2.0"
es5-ext "^0.10.50" es5-ext "^0.10.50"
gulp "^4.0.2"
nan "^2.14.0" nan "^2.14.0"
typedarray-to-buffer "^3.1.5" typedarray-to-buffer "^3.1.5"
yaeti "^0.0.6" yaeti "^0.0.6"
@ -18035,6 +18116,11 @@ whatwg-fetch@>=0.10.0, whatwg-fetch@^3.0.0:
resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.2.0.tgz#8e134f701f0a4ab5fda82626f113e2b647fd16dc" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.2.0.tgz#8e134f701f0a4ab5fda82626f113e2b647fd16dc"
integrity sha512-SdGPoQMMnzVYThUbSrEvqTlkvC1Ux27NehaJ/GUHBfNrh5Mjg+1/uRyFMwVnxO2MrikMWvWAqUGgQOfVU4hT7w== integrity sha512-SdGPoQMMnzVYThUbSrEvqTlkvC1Ux27NehaJ/GUHBfNrh5Mjg+1/uRyFMwVnxO2MrikMWvWAqUGgQOfVU4hT7w==
whatwg-fetch@^3.3.1:
version "3.3.1"
resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.3.1.tgz#6c1acf37dec176b0fd6bc9a74b616bec2f612935"
integrity sha512-faXTmGDcLuEPBpJwb5LQfyxvubKiE+RlbmmweFGKjvIPFj4uHTTfdtTIkdTRhC6OSH9S9eyYbx8kZ0UEaQqYTA==
whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0:
version "2.3.0" version "2.3.0"
resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"