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:
parent
883111f9b9
commit
7a4773511c
21
package.json
21
package.json
|
@ -162,8 +162,9 @@
|
|||
]
|
||||
},
|
||||
"dependencies": {
|
||||
"@gnosis.pm/safe-apps-sdk": "0.3.1",
|
||||
"@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",
|
||||
"@ledgerhq/hw-transport-node-hid": "5.19.1",
|
||||
"@material-ui/core": "4.11.0",
|
||||
|
@ -173,7 +174,7 @@
|
|||
"async-sema": "^3.1.0",
|
||||
"axios": "0.19.2",
|
||||
"bignumber.js": "9.0.0",
|
||||
"bnc-onboard": "1.10.3",
|
||||
"bnc-onboard": "1.11.0",
|
||||
"classnames": "^2.2.6",
|
||||
"concurrently": "^5.2.0",
|
||||
"connected-react-router": "6.8.0",
|
||||
|
@ -229,21 +230,21 @@
|
|||
},
|
||||
"devDependencies": {
|
||||
"@testing-library/jest-dom": "5.11.2",
|
||||
"@testing-library/react": "10.4.7",
|
||||
"@testing-library/user-event": "12.0.17",
|
||||
"@testing-library/react": "10.4.8",
|
||||
"@testing-library/user-event": "12.1.0",
|
||||
"@typechain/web3-v1": "^1.0.0",
|
||||
"@types/history": "4.6.2",
|
||||
"@types/jest": "^26.0.7",
|
||||
"@types/jest": "^26.0.9",
|
||||
"@types/lodash.memoize": "^4.1.6",
|
||||
"@types/node": "14.0.27",
|
||||
"@types/react": "^16.9.43",
|
||||
"@types/react": "^16.9.44",
|
||||
"@types/react-dom": "^16.9.6",
|
||||
"@types/react-redux": "^7.1.9",
|
||||
"@types/react-router-dom": "^5.1.5",
|
||||
"@types/styled-components": "^5.1.1",
|
||||
"@typescript-eslint/eslint-plugin": "3.7.1",
|
||||
"@typescript-eslint/parser": "3.7.1",
|
||||
"autoprefixer": "9.8.5",
|
||||
"@types/styled-components": "^5.1.2",
|
||||
"@typescript-eslint/eslint-plugin": "3.8.0",
|
||||
"@typescript-eslint/parser": "3.8.0",
|
||||
"autoprefixer": "9.8.6",
|
||||
"cross-env": "^7.0.2",
|
||||
"dotenv": "^8.2.0",
|
||||
"dotenv-expand": "^5.1.0",
|
||||
|
|
|
@ -11,6 +11,10 @@ const Wrapper = styled.div``
|
|||
const Item = styled.div`
|
||||
border-bottom: solid 2px rgb(232, 231, 230);
|
||||
|
||||
&:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.container {
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
|
|
|
@ -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 { composeValidators, required } from 'src/components/forms/validator'
|
||||
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 { 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({
|
||||
field: 'appUrl',
|
||||
updates: {
|
||||
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) {
|
||||
return ensContent
|
||||
|
@ -40,7 +40,7 @@ export const AppInfoUpdater = ({ onAppInfo }: { onAppInfo: (appInfo: SafeApp) =>
|
|||
onAppInfo({ ...appInfo })
|
||||
}
|
||||
|
||||
if (isURLValid(debouncedValue)) {
|
||||
if (isValidURL(debouncedValue)) {
|
||||
updateAppInfo()
|
||||
}
|
||||
}, [debouncedValue, onAppInfo])
|
||||
|
|
|
@ -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
|
|
@ -1,5 +1,6 @@
|
|||
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 AddressInfo from 'src/components/AddressInfo'
|
||||
|
@ -12,22 +13,9 @@ import Bold from 'src/components/layout/Bold'
|
|||
import Heading from 'src/components/layout/Heading'
|
||||
import Img from 'src/components/layout/Img'
|
||||
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'
|
||||
|
||||
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`
|
||||
margin-bottom: 15px;
|
||||
`
|
||||
|
@ -56,7 +44,7 @@ const StyledTextBox = styled(TextBox)`
|
|||
max-width: 444px;
|
||||
`
|
||||
|
||||
const isTxValid = (t: SafeAppTx): boolean => {
|
||||
const isTxValid = (t: Transaction): boolean => {
|
||||
if (!['string', 'number'].includes(typeof t.value)) {
|
||||
return false
|
||||
}
|
||||
|
@ -75,11 +63,11 @@ const confirmTransactions = (
|
|||
ethBalance: string,
|
||||
nameApp: string,
|
||||
iconApp: string,
|
||||
txs: SafeAppTx[],
|
||||
openModal: (modalInfo: GenericModalProps) => void,
|
||||
txs: Transaction[],
|
||||
openModal: (modalInfo: OpenModalArgs) => void,
|
||||
closeModal: () => void,
|
||||
onConfirm: () => void,
|
||||
): any => {
|
||||
): void => {
|
||||
const areTxsMalformed = txs.some((t) => !isTxValid(t))
|
||||
|
||||
const title = <ModalTitle iconUrl={iconApp} title={nameApp} />
|
||||
|
|
|
@ -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(() => {
|
||||
// const handleIframeMessage = (data) => {
|
||||
// if (!data || !data.messageId) {
|
||||
// console.error('ThirdPartyApp: A message was received without message id.')
|
||||
// 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
|
||||
// }
|
||||
// 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)
|
||||
// }
|
||||
}, [])
|
||||
const handleIframeMessage = (msg: CustomMessageEvent) => {
|
||||
if (!msg?.data.messageId) {
|
||||
console.error('ThirdPartyApp: A message was received without message id.')
|
||||
return
|
||||
}
|
||||
switch (msg.data.messageId) {
|
||||
case SDK_MESSAGES.SEND_TRANSACTIONS: {
|
||||
const onConfirm = async () => {
|
||||
closeModal()
|
||||
await sendTransactions(dispatch, safeAddress, msg.data.data, enqueueSnackbar, closeSnackbar, selectedApp.id)
|
||||
}
|
||||
confirmTransactions(
|
||||
safeAddress,
|
||||
safeName,
|
||||
ethBalance,
|
||||
selectedApp.name,
|
||||
selectedApp.iconUrl,
|
||||
msg.data.data,
|
||||
openModal,
|
||||
closeModal,
|
||||
onConfirm,
|
||||
)
|
||||
break
|
||||
}
|
||||
|
||||
case SDK_MESSAGES.SAFE_APP_SDK_INITIALIZED: {
|
||||
sendMessageToIframe(INTERFACE_MESSAGES.ON_SAFE_INFO, {
|
||||
safeAddress,
|
||||
network: network,
|
||||
ethBalance,
|
||||
})
|
||||
break
|
||||
}
|
||||
default: {
|
||||
console.error(`ThirdPartyApp: A message was received with an unknown message id ${msg.data.messageId}.`)
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
const onIframeMessage = async (message: CustomMessageEvent) => {
|
||||
if (message.origin === window.origin) {
|
||||
return
|
||||
}
|
||||
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 }
|
||||
|
|
|
@ -1,85 +1,63 @@
|
|||
import { Card, FixedIcon, IconText, Loader, Menu, Title } from '@gnosis.pm/safe-react-components'
|
||||
import { withSnackbar } from 'notistack'
|
||||
import React, { useCallback, useEffect, useState, useMemo } from 'react'
|
||||
import { useDispatch, useSelector } from 'react-redux'
|
||||
import { useHistory } from 'react-router-dom'
|
||||
import styled from 'styled-components'
|
||||
import React, { useCallback, useEffect, useRef, useState, useMemo } from 'react'
|
||||
import { Networks, INTERFACE_MESSAGES } from '@gnosis.pm/safe-apps-sdk'
|
||||
import { Card, IconText, Loader, Menu, Title } from '@gnosis.pm/safe-react-components'
|
||||
import { useSelector } from 'react-redux'
|
||||
import styled, { css } from 'styled-components'
|
||||
|
||||
import ManageApps from './components/ManageApps'
|
||||
import confirmTransactions from './confirmTransactions'
|
||||
import sendTransactions from './sendTransactions'
|
||||
import LegalDisclaimer from './components/LegalDisclaimer'
|
||||
import { useLegalConsent } from './hooks/useLegalConsent'
|
||||
import AppFrame from './components/AppFrame'
|
||||
import { useAppList } from './hooks/useAppList'
|
||||
import { OpenModalArgs } from 'src/routes/safe/components/Layout/interfaces'
|
||||
|
||||
import LCL from 'src/components/ListContentLayout'
|
||||
import { networkSelector } from 'src/logic/wallets/store/selectors'
|
||||
import { SAFELIST_ADDRESS } from 'src/routes/routes'
|
||||
import { grantedSelector } from 'src/routes/safe/container/selector'
|
||||
import {
|
||||
safeEthBalanceSelector,
|
||||
safeNameSelector,
|
||||
safeParamAddressFromStateSelector,
|
||||
} from 'src/routes/safe/store/selectors'
|
||||
import { isSameHref } from 'src/utils/url'
|
||||
import { safeEthBalanceSelector, safeParamAddressFromStateSelector } from 'src/routes/safe/store/selectors'
|
||||
import { isSameURL } from 'src/utils/url'
|
||||
import { useIframeMessageHandler } from './hooks/useIframeMessageHandler'
|
||||
|
||||
const StyledCard = styled(Card)`
|
||||
margin-bottom: 24px;
|
||||
`
|
||||
const StyledIframe = styled.iframe`
|
||||
padding: 15px;
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
`
|
||||
const Centered = styled.div`
|
||||
const centerCSS = css`
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
`
|
||||
|
||||
const LoadingContainer = styled.div`
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
${centerCSS};
|
||||
`
|
||||
|
||||
const CenteredMT = styled(Centered)`
|
||||
const StyledCard = styled(Card)`
|
||||
margin-bottom: 24px;
|
||||
${centerCSS};
|
||||
`
|
||||
|
||||
const CenteredMT = styled.div`
|
||||
${centerCSS};
|
||||
margin-top: 5px;
|
||||
`
|
||||
|
||||
const IframeWrapper = styled.div`
|
||||
position: relative;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
`
|
||||
const operations = {
|
||||
ON_SAFE_INFO: 'ON_SAFE_INFO',
|
||||
SAFE_APP_SDK_INITIALIZED: 'SAFE_APP_SDK_INITIALIZED',
|
||||
SEND_TRANSACTIONS: 'SEND_TRANSACTIONS',
|
||||
type AppsProps = {
|
||||
closeModal: () => void
|
||||
openModal: (modal: OpenModalArgs) => void
|
||||
}
|
||||
|
||||
function Apps({ closeModal, closeSnackbar, enqueueSnackbar, openModal }) {
|
||||
const Apps = ({ closeModal, openModal }: AppsProps): React.ReactElement => {
|
||||
const { appList, loadingAppList, onAppToggle, onAppAdded } = useAppList()
|
||||
|
||||
const [appIsLoading, setAppIsLoading] = useState<boolean>(true)
|
||||
const [selectedAppId, setSelectedAppId] = useState<string>()
|
||||
const [iframeEl, setIframeEl] = useState<HTMLIFrameElement | null>(null)
|
||||
const iframeRef = useRef<HTMLIFrameElement>()
|
||||
|
||||
const history = useHistory()
|
||||
const granted = useSelector(grantedSelector)
|
||||
const safeName = useSelector(safeNameSelector)
|
||||
const safeAddress = useSelector(safeParamAddressFromStateSelector)
|
||||
const network = useSelector(networkSelector)
|
||||
const ethBalance = useSelector(safeEthBalanceSelector)
|
||||
const dispatch = useDispatch()
|
||||
const { consentReceived, onConsentReceipt } = useLegalConsent()
|
||||
|
||||
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(
|
||||
(appId) => {
|
||||
|
@ -108,151 +86,19 @@ function Apps({ closeModal, closeSnackbar, enqueueSnackbar, openModal }) {
|
|||
}
|
||||
}, [appList, selectedApp, selectedAppId])
|
||||
|
||||
const iframeRef = useCallback((node) => {
|
||||
if (node !== null) {
|
||||
setIframeEl(node)
|
||||
}
|
||||
}, [])
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
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)
|
||||
sendMessageToIframe(operations.ON_SAFE_INFO, {
|
||||
safeAddress,
|
||||
network,
|
||||
ethBalance,
|
||||
})
|
||||
}
|
||||
|
||||
if (!iframeEl || !selectedApp || !isSameHref(iframeEl.src, selectedApp.url)) {
|
||||
const handleIframeLoad = useCallback(() => {
|
||||
const iframe = iframeRef.current
|
||||
if (!iframe || !selectedApp || !isSameURL(iframe.src, selectedApp.url)) {
|
||||
return
|
||||
}
|
||||
|
||||
iframeEl.addEventListener('load', onIframeLoaded)
|
||||
|
||||
return () => {
|
||||
iframeEl.removeEventListener('load', onIframeLoaded)
|
||||
}
|
||||
}, [ethBalance, iframeEl, network, safeAddress, selectedApp])
|
||||
setAppIsLoading(false)
|
||||
sendMessageToIframe(INTERFACE_MESSAGES.ON_SAFE_INFO, {
|
||||
safeAddress,
|
||||
network: network as Networks,
|
||||
ethBalance,
|
||||
})
|
||||
}, [ethBalance, network, safeAddress, selectedApp, sendMessageToIframe])
|
||||
|
||||
if (loadingAppList || !appList.length) {
|
||||
return (
|
||||
|
@ -272,13 +118,21 @@ function Apps({ closeModal, closeSnackbar, enqueueSnackbar, openModal }) {
|
|||
<LCL.Menu>
|
||||
<LCL.List activeItem={selectedAppId} items={enabledApps} onItemClick={onSelectApp} />
|
||||
</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>
|
||||
) : (
|
||||
<StyledCard>
|
||||
<Centered>
|
||||
<Title size="xs">No Apps Enabled</Title>
|
||||
</Centered>
|
||||
<Title size="xs">No Apps Enabled</Title>
|
||||
</StyledCard>
|
||||
)}
|
||||
<CenteredMT>
|
||||
|
@ -294,4 +148,4 @@ function Apps({ closeModal, closeSnackbar, enqueueSnackbar, openModal }) {
|
|||
)
|
||||
}
|
||||
|
||||
export default withSnackbar(Apps)
|
||||
export default Apps
|
||||
|
|
|
@ -7,6 +7,7 @@ import { Redirect, Route, Switch, useRouteMatch } from 'react-router-dom'
|
|||
import Receive from '../Balances/Receive'
|
||||
|
||||
import { styles } from './style'
|
||||
import { ModalState, OpenModalArgs } from './interfaces'
|
||||
|
||||
import Modal from 'src/components/Modal'
|
||||
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 match = useRouteMatch()
|
||||
|
||||
const [modal, setModal] = useState({
|
||||
const [modal, setModal] = useState<ModalState>({
|
||||
isOpen: false,
|
||||
title: null,
|
||||
title: '',
|
||||
body: null,
|
||||
footer: null,
|
||||
onClose: null,
|
||||
|
@ -62,14 +63,12 @@ const Layout = (props: Props): React.ReactElement => {
|
|||
return <NoSafe provider={provider} text="Safe not found" />
|
||||
}
|
||||
|
||||
const openGenericModal = (modalConfig) => {
|
||||
const openGenericModal = (modalConfig: OpenModalArgs): void => {
|
||||
setModal({ ...modalConfig, isOpen: true })
|
||||
}
|
||||
|
||||
const closeGenericModal = () => {
|
||||
if (modal.onClose) {
|
||||
modal.onClose()
|
||||
}
|
||||
const closeGenericModal = (): void => {
|
||||
modal.onClose?.()
|
||||
|
||||
setModal({
|
||||
isOpen: false,
|
||||
|
|
|
@ -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
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
export const isValid = (url, protocolsAllowed = ['https:', 'http:']) => {
|
||||
export const isValidURL = (url: string, protocolsAllowed = ['https:', 'http:']): boolean => {
|
||||
try {
|
||||
const urlInfo = new URL(url)
|
||||
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 {
|
||||
const a = new URL(url1)
|
||||
const b = new URL(url2)
|
||||
|
|
508
yarn.lock
508
yarn.lock
|
@ -1075,13 +1075,6 @@
|
|||
core-js-pure "^3.0.0"
|
||||
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":
|
||||
version "7.9.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.0.tgz#337eda67401f5b066a6f205a3113d4ac18ba495b"
|
||||
|
@ -1096,6 +1089,13 @@
|
|||
dependencies:
|
||||
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":
|
||||
version "7.10.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278"
|
||||
|
@ -1325,6 +1325,11 @@
|
|||
"@ethersproject/rlp" "^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":
|
||||
version "1.1.1-dev.2"
|
||||
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"
|
||||
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"
|
||||
resolved "https://github.com/gnosis/safe-react-components.git#45c746a12661b9c38e839e76022b6a0a92285db7"
|
||||
dependencies:
|
||||
|
@ -1593,18 +1598,32 @@
|
|||
"@ledgerhq/logs" "^5.19.1"
|
||||
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":
|
||||
version "5.19.1"
|
||||
resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-5.19.1.tgz#3d25cc0ee92feee35415236c741ef668a106e275"
|
||||
integrity sha512-9v4ishxc2doiR06E/87uJdT7LjnSpnWPftDaBXBm/6KEgjPGtGBCcRW3fkmQTWNE115e6TG9JYRiVRPuqs6GHg==
|
||||
|
||||
"@ledgerhq/hw-app-eth@^5.19.0":
|
||||
version "5.20.0"
|
||||
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-eth/-/hw-app-eth-5.20.0.tgz#59306601c1309e15a948c9b3d06e7dc85480f48e"
|
||||
integrity sha512-kL+oEJGhkd0A6GahRiDTp8RbheHYV+CQv04O+enQqIPuT++IZvSRlv03lBQNyNziX8b64/ZM+kQHWGesN7w7xg==
|
||||
"@ledgerhq/errors@^5.21.0":
|
||||
version "5.21.0"
|
||||
resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-5.21.0.tgz#2a7bdea62fe7e0bd9ccc3b786d2c179f8f65bc02"
|
||||
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:
|
||||
"@ledgerhq/errors" "^5.19.1"
|
||||
"@ledgerhq/hw-transport" "^5.19.1"
|
||||
"@ledgerhq/errors" "^5.21.0"
|
||||
"@ledgerhq/hw-transport" "^5.21.0"
|
||||
bignumber.js "^9.0.0"
|
||||
rlp "^2.2.6"
|
||||
|
||||
|
@ -1633,14 +1652,14 @@
|
|||
node-hid "^1.3.0"
|
||||
usb "^1.6.3"
|
||||
|
||||
"@ledgerhq/hw-transport-u2f@^5.19.0":
|
||||
version "5.19.1"
|
||||
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-u2f/-/hw-transport-u2f-5.19.1.tgz#327a98aa9a932114c3d530dabd77459e249b7091"
|
||||
integrity sha512-jCDx+ZJdHhB+I/aoUZHhgE5aiZdrKkvUHfeUGScR/Ya3MfOHq7otIS+gEi4AIuxK08gXUOWAm1ygKzTCo+KPpw==
|
||||
"@ledgerhq/hw-transport-u2f@^5.21.0":
|
||||
version "5.21.0"
|
||||
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-u2f/-/hw-transport-u2f-5.21.0.tgz#7bb14e6a334eccff0e51c3346702561cebc99941"
|
||||
integrity sha512-D9bbi0ubvNmHbqTAcaxtbgrXRRnoc6qW34m+IO/FRqdPrJTYw3o9y2f0udv8WQZkbNnBvXEksROEvADkr4dj+Q==
|
||||
dependencies:
|
||||
"@ledgerhq/errors" "^5.19.1"
|
||||
"@ledgerhq/hw-transport" "^5.19.1"
|
||||
"@ledgerhq/logs" "^5.19.1"
|
||||
"@ledgerhq/errors" "^5.21.0"
|
||||
"@ledgerhq/hw-transport" "^5.21.0"
|
||||
"@ledgerhq/logs" "^5.21.0"
|
||||
u2f-api "0.2.7"
|
||||
|
||||
"@ledgerhq/hw-transport@^5.19.1":
|
||||
|
@ -1652,11 +1671,25 @@
|
|||
"@ledgerhq/errors" "^5.19.1"
|
||||
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":
|
||||
version "5.19.1"
|
||||
resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-5.19.1.tgz#c3df2b307331ccd373abc78b8ccea02377049256"
|
||||
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":
|
||||
version "4.11.0"
|
||||
resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-4.11.0.tgz#b69b26e4553c9e53f2bfaf1053e216a0af9be15a"
|
||||
|
@ -1805,17 +1838,17 @@
|
|||
xhr "^2.2.0"
|
||||
xtend "^4.0.1"
|
||||
|
||||
"@portis/web3@^2.0.0-beta.55":
|
||||
version "2.0.0-beta.56"
|
||||
resolved "https://registry.yarnpkg.com/@portis/web3/-/web3-2.0.0-beta.56.tgz#90ef7f0a63f68d80e10cb87aa08acbb92e433af6"
|
||||
integrity sha512-likffGhd9lKMOiI657rV62NM0ewxLBOQGPoUJPIX2rCx25P9FQ+4CiqEsqCUeofaNra6q+/4EPZgSscNWHa6BQ==
|
||||
"@portis/web3@^2.0.0-beta.57":
|
||||
version "2.0.0-beta.57"
|
||||
resolved "https://registry.yarnpkg.com/@portis/web3/-/web3-2.0.0-beta.57.tgz#45692bffc07687d50fa5204d514590d438b759de"
|
||||
integrity sha512-OYmt0a171AJECYT/vTkPb4uc1x7xFASMfn+MN3EAjo7DRhY8WfTAMNoMJDhuFARRLC7an2HrRIsT7D4q9GNrnQ==
|
||||
dependencies:
|
||||
"@portis/web3-provider-engine" "1.1.0"
|
||||
ethereumjs-util "5.2.0"
|
||||
penpal "3.0.7"
|
||||
pocket-js-core "0.0.3"
|
||||
|
||||
"@restless/sanitizers@^0.2.4":
|
||||
"@restless/sanitizers@^0.2.5":
|
||||
version "0.2.5"
|
||||
resolved "https://registry.yarnpkg.com/@restless/sanitizers/-/sanitizers-0.2.5.tgz#96a5cfa3edb52abd8fa14e77798738f3a067dbec"
|
||||
integrity sha512-utsOFwv5owNnbj8HijF7uML/AURgUl5YvY4S2gpxQsrp2D1EP/4rQU/HSyYdIQaL89BoZ/5NHveRJrcFyuHo/w==
|
||||
|
@ -1962,27 +1995,27 @@
|
|||
lodash "^4.17.15"
|
||||
redent "^3.0.0"
|
||||
|
||||
"@testing-library/react@10.4.7":
|
||||
version "10.4.7"
|
||||
resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-10.4.7.tgz#fc14847fb70a5e93576b8f7f0d1490ead02a9061"
|
||||
integrity sha512-hUYbum3X2f1ZKusKfPaooKNYqE/GtPiQ+D2HJaJ4pkxeNJQFVUEvAvEh9+3QuLdBeTWkDMNY5NSijc5+pGdM4Q==
|
||||
"@testing-library/react@10.4.8":
|
||||
version "10.4.8"
|
||||
resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-10.4.8.tgz#5eb730291b8fd81cdb2d8877770d060b044ae4a4"
|
||||
integrity sha512-clgpFR6QHiRRcdhFfAKDhH8UXpNASyfkkANhtCsCVBnai+O+mK1rGtMES+Apc7ql5Wyxu7j8dcLiC4pV5VblHA==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.10.3"
|
||||
"@testing-library/dom" "^7.17.1"
|
||||
|
||||
"@testing-library/user-event@12.0.17":
|
||||
version "12.0.17"
|
||||
resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-12.0.17.tgz#51f48905d62b3c6960fe5ea7a46152d8440f1586"
|
||||
integrity sha512-Et22bfgnLdowY0VSP8MQuCP9wdrqWMrm9OCXSi3q3rx7ctSvEsC/jYNbgK/MJdDSpVhNVnB+fqm1VhVlDDRN6A==
|
||||
"@testing-library/user-event@12.1.0":
|
||||
version "12.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-12.1.0.tgz#a2597419466a93e338c91baa7bb22d4da0309d1d"
|
||||
integrity sha512-aH/XuNFpPD6dA+fh754EGqKeAzpH66HpLJYkv9vOAih2yGmTM8JiZ8uisQDGWRPkc6sxE2zCqDwLR4ZskhRCxw==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.10.2"
|
||||
|
||||
"@toruslabs/eccrypto@^1.1.3":
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@toruslabs/eccrypto/-/eccrypto-1.1.3.tgz#6dcee86670149501efee4865d0acb25366f72237"
|
||||
integrity sha512-hoLACz9Z6RP/ZH41Ba0iImJpl1f4Zx7pi/d3R7UIrOyt4IOgnWrlkzh2IqQYw4ouae4WZQYSZlyeYv81EWkoxQ==
|
||||
"@toruslabs/eccrypto@^1.1.4":
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/@toruslabs/eccrypto/-/eccrypto-1.1.4.tgz#2b32e0da10b28a316d08984afcda303536954cd8"
|
||||
integrity sha512-AQYcd7AM6ePb+V6CZTb6Lb/iaZ/BKpZ66AFdF1YLvMnyBeRY1JgdFOnjQfhtrUAYRMdcc8pBfvjFoWWK7EcggA==
|
||||
dependencies:
|
||||
acorn "^7.3.1"
|
||||
acorn "^7.4.0"
|
||||
elliptic "^6.5.3"
|
||||
es6-promise "^4.2.8"
|
||||
nan "^2.14.1"
|
||||
|
@ -1997,26 +2030,28 @@
|
|||
web3-eth-contract "^1.2.9"
|
||||
web3-utils "^1.2.9"
|
||||
|
||||
"@toruslabs/http-helpers@^1.3.3":
|
||||
version "1.3.3"
|
||||
resolved "https://registry.yarnpkg.com/@toruslabs/http-helpers/-/http-helpers-1.3.3.tgz#8564665a0cb9d4f868e5eaf814bbac71926623a2"
|
||||
integrity sha512-bM0NyFCA+K8DOlhciDLIUQ05/VzuM9lgdwnNSr/gociRhPWbUDc8PkSVKYT3MshXj/ZtLvN9UvcTvY1hddN5UQ==
|
||||
"@toruslabs/http-helpers@^1.3.4":
|
||||
version "1.3.4"
|
||||
resolved "https://registry.yarnpkg.com/@toruslabs/http-helpers/-/http-helpers-1.3.4.tgz#8811cff562fb792267f79ca5cb5c1bf1bc517e34"
|
||||
integrity sha512-2Hm34F3GOwg41jEaZs1rVF4b+SGwC2mPeR7WhkkkM1cQNlXyCtcgLNLqlCVrww9e6pfBCZ2h3aEQVw+p4cT4fw==
|
||||
dependencies:
|
||||
deepmerge "^4.2.2"
|
||||
loglevel "^1.6.8"
|
||||
|
||||
"@toruslabs/torus-embed@^1.3.0":
|
||||
version "1.7.3"
|
||||
resolved "https://registry.yarnpkg.com/@toruslabs/torus-embed/-/torus-embed-1.7.3.tgz#1be2f3404a59cb145b5dd11c82da80cec1d360eb"
|
||||
integrity sha512-PMmksmG9mgRmFvliHccxV2LdDjrNKQfLojlYG3WMXB0OF3Bj3B7Y94ItSEvVf3XI+Q9xadq1cTAN+wLV3km/BA==
|
||||
"@toruslabs/torus-embed@^1.8.2":
|
||||
version "1.8.2"
|
||||
resolved "https://registry.yarnpkg.com/@toruslabs/torus-embed/-/torus-embed-1.8.2.tgz#6652b8f751c5f041749ccbfcaa0c08ced5f4f278"
|
||||
integrity sha512-SlApK4BavoQYNenoQxjUs9/rrqrGDK5+Z9coABA6J7pLcbSL7QnBl8bKwTTYhI9Hri2GRbUM8XzNNpZfy5RiIQ==
|
||||
dependencies:
|
||||
"@chaitanyapotti/random-id" "^1.0.3"
|
||||
"@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"
|
||||
deepmerge "^4.2.2"
|
||||
eth-json-rpc-errors "^2.0.2"
|
||||
fast-deep-equal "^3.1.3"
|
||||
is-stream "^2.0.0"
|
||||
json-rpc-engine "^5.1.8"
|
||||
json-rpc-middleware-stream "^2.1.1"
|
||||
loglevel "^1.6.8"
|
||||
|
@ -2027,19 +2062,19 @@
|
|||
safe-event-emitter "^1.0.1"
|
||||
web3 "^0.20.7"
|
||||
|
||||
"@toruslabs/torus.js@^2.2.2":
|
||||
version "2.2.3"
|
||||
resolved "https://registry.yarnpkg.com/@toruslabs/torus.js/-/torus.js-2.2.3.tgz#525456e01cddfecf29a7b70b640d0188ffbf819e"
|
||||
integrity sha512-GryzcqY5/iumfCy0LNUIdjo9iKYRHof6UQzHYK/u2oc4XtCWVKnwk+6OZfuYeurEoW/VDYU+b1MEa7qqOKV9RQ==
|
||||
"@toruslabs/torus.js@^2.2.4":
|
||||
version "2.2.5"
|
||||
resolved "https://registry.yarnpkg.com/@toruslabs/torus.js/-/torus.js-2.2.5.tgz#8994ae7727d980e2c0600b1154d547260ea52ec4"
|
||||
integrity sha512-fxrIQmtNo4p3uEy5KdiIrZiB32KGPtaV70PoPg/vQB4IL/gjrQSYSIcC0VyP04yBfjHLccJe/HKOhlofpKcjAg==
|
||||
dependencies:
|
||||
"@toruslabs/eccrypto" "^1.1.3"
|
||||
"@toruslabs/http-helpers" "^1.3.3"
|
||||
"@toruslabs/eccrypto" "^1.1.4"
|
||||
"@toruslabs/http-helpers" "^1.3.4"
|
||||
bn.js "^5.1.2"
|
||||
elliptic "^6.5.3"
|
||||
json-stable-stringify "^1.0.1"
|
||||
loglevel "^1.6.8"
|
||||
memory-cache "^0.2.0"
|
||||
web3-utils "^1.2.9"
|
||||
web3-utils "^1.2.11"
|
||||
|
||||
"@truffle/blockchain-utils@^0.0.11":
|
||||
version "0.0.11"
|
||||
|
@ -2270,10 +2305,10 @@
|
|||
jest-diff "^25.2.1"
|
||||
pretty-format "^25.2.1"
|
||||
|
||||
"@types/jest@^26.0.7":
|
||||
version "26.0.7"
|
||||
resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.7.tgz#495cb1d1818c1699dbc3b8b046baf1c86ef5e324"
|
||||
integrity sha512-+x0077/LoN6MjqBcVOe1y9dpryWnfDZ+Xfo3EqGeBcfPRJlQp3Lw62RvNlWxuGv7kOEwlHriAa54updi3Jvvwg==
|
||||
"@types/jest@^26.0.9":
|
||||
version "26.0.9"
|
||||
resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.9.tgz#0543b57da5f0cd949c5f423a00c56c492289c989"
|
||||
integrity sha512-k4qFfJ5AUKrWok5KYXp2EPm89b0P/KZpl7Vg4XuOTVVQEhLDBDBU3iBFrjjdgd8fLw96aAtmnwhXHl63bWeBQQ==
|
||||
dependencies:
|
||||
jest-diff "^25.2.1"
|
||||
pretty-format "^25.2.1"
|
||||
|
@ -2422,7 +2457,7 @@
|
|||
dependencies:
|
||||
"@types/react" "*"
|
||||
|
||||
"@types/react@*", "@types/react@^16.9.43":
|
||||
"@types/react@*":
|
||||
version "16.9.43"
|
||||
resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.43.tgz#c287f23f6189666ee3bebc2eb8d0f84bcb6cdb6b"
|
||||
integrity sha512-PxshAFcnJqIWYpJbLPriClH53Z2WlJcVZE+NP2etUtWQs2s7yIMj3/LDKZT/5CHJ/F62iyjVCDu2H3jHEXIxSg==
|
||||
|
@ -2430,6 +2465,14 @@
|
|||
"@types/prop-types" "*"
|
||||
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":
|
||||
version "0.0.8"
|
||||
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"
|
||||
integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==
|
||||
|
||||
"@types/styled-components@^5.1.1":
|
||||
version "5.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/styled-components/-/styled-components-5.1.1.tgz#17c3b3a299aa38254189e04a72a8ee009a22e42d"
|
||||
integrity sha512-fIjKvDU1LJExBZWEQilHqzfpOK4KUwBsj5zC79lxa94ekz8oDQSBNcayMACBImxIuevF+NbBGL9O/2CQ67Zhig==
|
||||
"@types/styled-components@^5.1.2":
|
||||
version "5.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@types/styled-components/-/styled-components-5.1.2.tgz#652af475b4af917b355ea1c3068acae63d46455f"
|
||||
integrity sha512-HNocYLfrsnNNm8NTS/W53OERSjRA8dx5Bn6wBd2rXXwt4Z3s+oqvY6/PbVt3e6sgtzI63GX//WiWiRhWur08qQ==
|
||||
dependencies:
|
||||
"@types/hoist-non-react-statics" "*"
|
||||
"@types/react" "*"
|
||||
"@types/react-native" "*"
|
||||
csstype "^2.2.0"
|
||||
csstype "^3.0.2"
|
||||
|
||||
"@types/testing-library__jest-dom@^5.9.1":
|
||||
version "5.9.1"
|
||||
|
@ -2492,12 +2535,12 @@
|
|||
dependencies:
|
||||
"@types/yargs-parser" "*"
|
||||
|
||||
"@typescript-eslint/eslint-plugin@3.7.1":
|
||||
version "3.7.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.7.1.tgz#d144c49a9a0ffe8dd704bb179c243df76c111bc9"
|
||||
integrity sha512-3DB9JDYkMrc8Au00rGFiJLK2Ja9CoMP6Ut0sHsXp3ZtSugjNxvSSHTnKLfo4o+QmjYBJqEznDqsG1zj4F2xnsg==
|
||||
"@typescript-eslint/eslint-plugin@3.8.0":
|
||||
version "3.8.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.8.0.tgz#f82947bcdd9a4e42be7ad80dfd61f1dc411dd1df"
|
||||
integrity sha512-lFb4VCDleFSR+eo4Ew+HvrJ37ZH1Y9ZyE+qyP7EiwBpcCVxwmUc5PAqhShCQ8N8U5vqYydm74nss+a0wrrCErw==
|
||||
dependencies:
|
||||
"@typescript-eslint/experimental-utils" "3.7.1"
|
||||
"@typescript-eslint/experimental-utils" "3.8.0"
|
||||
debug "^4.1.1"
|
||||
functional-red-black-tree "^1.0.1"
|
||||
regexpp "^3.0.0"
|
||||
|
@ -2524,26 +2567,26 @@
|
|||
eslint-scope "^5.0.0"
|
||||
eslint-utils "^2.0.0"
|
||||
|
||||
"@typescript-eslint/experimental-utils@3.7.1":
|
||||
version "3.7.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.7.1.tgz#ab036caaed4c870d22531d41f9352f3147364d61"
|
||||
integrity sha512-TqE97pv7HrqWcGJbLbZt1v59tcqsSVpWTOf1AqrWK7n8nok2sGgVtYRuGXeNeLw3wXlLEbY1MKP3saB2HsO/Ng==
|
||||
"@typescript-eslint/experimental-utils@3.8.0":
|
||||
version "3.8.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.8.0.tgz#ac1f7c88322dcfb7635ece6f0441516dd951099a"
|
||||
integrity sha512-o8T1blo1lAJE0QDsW7nSyvZHbiDzQDjINJKyB44Z3sSL39qBy5L10ScI/XwDtaiunoyKGLiY9bzRk4YjsUZl8w==
|
||||
dependencies:
|
||||
"@types/json-schema" "^7.0.3"
|
||||
"@typescript-eslint/types" "3.7.1"
|
||||
"@typescript-eslint/typescript-estree" "3.7.1"
|
||||
"@typescript-eslint/types" "3.8.0"
|
||||
"@typescript-eslint/typescript-estree" "3.8.0"
|
||||
eslint-scope "^5.0.0"
|
||||
eslint-utils "^2.0.0"
|
||||
|
||||
"@typescript-eslint/parser@3.7.1":
|
||||
version "3.7.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.7.1.tgz#5d9ccecb116d12d9c6073e9861c57c9b1aa88128"
|
||||
integrity sha512-W4QV/gXvfIsccN8225784LNOorcm7ch68Fi3V4Wg7gmkWSQRKevO4RrRqWo6N/Z/myK1QAiGgeaXN57m+R/8iQ==
|
||||
"@typescript-eslint/parser@3.8.0":
|
||||
version "3.8.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.8.0.tgz#8e1dcd404299bf79492409c81c415fa95a7c622b"
|
||||
integrity sha512-u5vjOBaCsnMVQOvkKCXAmmOhyyMmFFf5dbkM3TIbg3MZ2pyv5peE4gj81UAbTHwTOXEwf7eCQTUMKrDl/+qGnA==
|
||||
dependencies:
|
||||
"@types/eslint-visitor-keys" "^1.0.0"
|
||||
"@typescript-eslint/experimental-utils" "3.7.1"
|
||||
"@typescript-eslint/types" "3.7.1"
|
||||
"@typescript-eslint/typescript-estree" "3.7.1"
|
||||
"@typescript-eslint/experimental-utils" "3.8.0"
|
||||
"@typescript-eslint/types" "3.8.0"
|
||||
"@typescript-eslint/typescript-estree" "3.8.0"
|
||||
eslint-visitor-keys "^1.1.0"
|
||||
|
||||
"@typescript-eslint/parser@^2.10.0":
|
||||
|
@ -2556,10 +2599,10 @@
|
|||
"@typescript-eslint/typescript-estree" "2.34.0"
|
||||
eslint-visitor-keys "^1.1.0"
|
||||
|
||||
"@typescript-eslint/types@3.7.1":
|
||||
version "3.7.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.7.1.tgz#90375606b2fd73c1224fe9e397ee151e28fa1e0c"
|
||||
integrity sha512-PZe8twm5Z4b61jt7GAQDor6KiMhgPgf4XmUb9zdrwTbgtC/Sj29gXP1dws9yEn4+aJeyXrjsD9XN7AWFhmnUfg==
|
||||
"@typescript-eslint/types@3.8.0":
|
||||
version "3.8.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.8.0.tgz#58581dd863f86e0cd23353d94362bb90b4bea796"
|
||||
integrity sha512-8kROmEQkv6ss9kdQ44vCN1dTrgu4Qxrd2kXr10kz2NP5T8/7JnEfYNxCpPkArbLIhhkGLZV3aVMplH1RXQRF7Q==
|
||||
|
||||
"@typescript-eslint/typescript-estree@2.34.0":
|
||||
version "2.34.0"
|
||||
|
@ -2574,13 +2617,13 @@
|
|||
semver "^7.3.2"
|
||||
tsutils "^3.17.1"
|
||||
|
||||
"@typescript-eslint/typescript-estree@3.7.1":
|
||||
version "3.7.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.7.1.tgz#ce1ffbd0fa53f34d4ce851a7a364e392432f6eb3"
|
||||
integrity sha512-m97vNZkI08dunYOr2lVZOHoyfpqRs0KDpd6qkGaIcLGhQ2WPtgHOd/eVbsJZ0VYCQvupKrObAGTOvk3tfpybYA==
|
||||
"@typescript-eslint/typescript-estree@3.8.0":
|
||||
version "3.8.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.8.0.tgz#0606d19f629f813dbdd5a34c7a1e895d6191cac6"
|
||||
integrity sha512-MTv9nPDhlKfclwnplRNDL44mP2SY96YmPGxmMbMy6x12I+pERcxpIUht7DXZaj4mOKKtet53wYYXU0ABaiXrLw==
|
||||
dependencies:
|
||||
"@typescript-eslint/types" "3.7.1"
|
||||
"@typescript-eslint/visitor-keys" "3.7.1"
|
||||
"@typescript-eslint/types" "3.8.0"
|
||||
"@typescript-eslint/visitor-keys" "3.8.0"
|
||||
debug "^4.1.1"
|
||||
glob "^7.1.6"
|
||||
is-glob "^4.0.1"
|
||||
|
@ -2588,107 +2631,107 @@
|
|||
semver "^7.3.2"
|
||||
tsutils "^3.17.1"
|
||||
|
||||
"@typescript-eslint/visitor-keys@3.7.1":
|
||||
version "3.7.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.7.1.tgz#b90191e74efdee656be8c5a30f428ed16dda46d1"
|
||||
integrity sha512-xn22sQbEya+Utj2IqJHGLA3i1jDzR43RzWupxojbSWnj3nnPLavaQmWe5utw03CwYao3r00qzXfgJMGNkrzrAA==
|
||||
"@typescript-eslint/visitor-keys@3.8.0":
|
||||
version "3.8.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.8.0.tgz#ad35110249fb3fc30a36bfcbfeea93e710cfaab1"
|
||||
integrity sha512-gfqQWyVPpT9NpLREXNR820AYwgz+Kr1GuF3nf1wxpHD6hdxI62tq03ToomFnDxY0m3pUB39IF7sil7D5TQexLA==
|
||||
dependencies:
|
||||
eslint-visitor-keys "^1.1.0"
|
||||
|
||||
"@unilogin/provider@^0.5.21":
|
||||
version "0.5.21"
|
||||
resolved "https://registry.yarnpkg.com/@unilogin/provider/-/provider-0.5.21.tgz#bc3aa74750c3fcd2ddcb763279fb58d88f5bc8f5"
|
||||
integrity sha512-HVMrFIKc6ysxj5F1dz0UFaSIvSMtqw5JBYEzomvtthsw/fNwbT8/I/mA4OCaAJcpuaI1d66X9bZhOrP5GWcwVg==
|
||||
"@unilogin/provider@^0.6.1":
|
||||
version "0.6.1"
|
||||
resolved "https://registry.yarnpkg.com/@unilogin/provider/-/provider-0.6.1.tgz#427247f0cb0899d8b0d00c04a4b90ae2a3c2cb40"
|
||||
integrity sha512-S96uBfoh+/nk8L6Yr+YgEV+FwQgtRnozWhgJpOhmRz128ri5Qv2SXLx5Sac33NGbs8g27PgKOyHX3dKJCvcP3g==
|
||||
dependencies:
|
||||
"@restless/sanitizers" "^0.2.4"
|
||||
"@restless/sanitizers" "^0.2.5"
|
||||
reactive-properties "^0.1.11"
|
||||
|
||||
"@walletconnect/client@^1.0.18":
|
||||
version "1.0.18"
|
||||
resolved "https://registry.yarnpkg.com/@walletconnect/client/-/client-1.0.18.tgz#e3316fc53c0218d69e03bcdbb3c4c9759579b151"
|
||||
integrity sha512-VgxS4mdsYfp6PQ/W4jVtWGhiQb2wf8hWM+kYMHV21N9UUkOuRBBjDay1Gxq2Tv99+BOF4VI+cpmvjTvsGaT/0A==
|
||||
"@walletconnect/client@^1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@walletconnect/client/-/client-1.1.0.tgz#f2454cba82da3d8c7375b2a5d9d47f34ed7348ec"
|
||||
integrity sha512-pHxvUDCkD4oP3AFxYLU7yeE+qDZtcHF20b2K8/HNvyuyu3eWFX4jpHgx6FdvcIcFcAXGs5nk24zBUEO8p+axWg==
|
||||
dependencies:
|
||||
"@walletconnect/core" "^1.0.18"
|
||||
"@walletconnect/iso-crypto" "^1.0.18"
|
||||
"@walletconnect/types" "^1.0.18"
|
||||
"@walletconnect/utils" "^1.0.18"
|
||||
"@walletconnect/core" "^1.1.0"
|
||||
"@walletconnect/iso-crypto" "^1.1.0"
|
||||
"@walletconnect/types" "^1.1.0"
|
||||
"@walletconnect/utils" "^1.1.0"
|
||||
|
||||
"@walletconnect/core@^1.0.18":
|
||||
version "1.0.18"
|
||||
resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-1.0.18.tgz#3632998f8bb8280d64b40506cdbfef51df24d729"
|
||||
integrity sha512-lpkD8P7l3EDLJswG0L8BrHMck70s+G/KncUnpr0r7eQ4t9Rh+waDBi4g2JBPj9LbRxFZYKiLEcW4r+Oh/85Yhw==
|
||||
"@walletconnect/core@^1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-1.1.0.tgz#053f08b0ccfdfb14ccd27b7fd425d9849cedba14"
|
||||
integrity sha512-Bhe4gnR6Az11u7OAOw0UDZKM6emUjIQtQ2PVdPDWke6ryC0DWMg9vTYbVPf3lDHBv5hy5eAyDst30N5E91SuYw==
|
||||
dependencies:
|
||||
"@walletconnect/socket-transport" "^1.0.18"
|
||||
"@walletconnect/types" "^1.0.18"
|
||||
"@walletconnect/utils" "^1.0.18"
|
||||
"@walletconnect/socket-transport" "^1.1.0"
|
||||
"@walletconnect/types" "^1.1.0"
|
||||
"@walletconnect/utils" "^1.1.0"
|
||||
|
||||
"@walletconnect/http-connection@^1.0.18":
|
||||
version "1.0.18"
|
||||
resolved "https://registry.yarnpkg.com/@walletconnect/http-connection/-/http-connection-1.0.18.tgz#eaad192e8262de2b23c4ac8c092d3816eefc7a83"
|
||||
integrity sha512-ifGNtNglOEU/EwehEFODUuYSV8yS8IW+uzIDVRQC0gK7FIaaQEVwkwmD0ksN8wrgj4z6/8V1JHi7lct+Eo4S0w==
|
||||
"@walletconnect/http-connection@^1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@walletconnect/http-connection/-/http-connection-1.1.0.tgz#c6650c12a07244d30f20647420cdcd8c69c6daca"
|
||||
integrity sha512-ugxDW/NaSgn7rmdPZhrpJIS79gASLvzBnGHScMs8zpYDHwcFxh2DP3HTspC8o5FyMqjRlEGtNi4zSGKY6EOrkw==
|
||||
dependencies:
|
||||
"@walletconnect/types" "^1.0.18"
|
||||
"@walletconnect/utils" "^1.0.18"
|
||||
"@walletconnect/types" "^1.1.0"
|
||||
"@walletconnect/utils" "^1.1.0"
|
||||
xhr2-cookies "1.1.0"
|
||||
|
||||
"@walletconnect/iso-crypto@^1.0.18":
|
||||
version "1.0.18"
|
||||
resolved "https://registry.yarnpkg.com/@walletconnect/iso-crypto/-/iso-crypto-1.0.18.tgz#4aa5f4c9912048e9880fe945ff7ff7520a6ec347"
|
||||
integrity sha512-ABpN3Hcwv7AT9N55C/whTz/lWX2RnuhQf4timzbgaawqZ0vJlFlYI9fNdag0T54S8NcWvKXTiwDxRJ8hOiR+3A==
|
||||
"@walletconnect/iso-crypto@^1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@walletconnect/iso-crypto/-/iso-crypto-1.1.0.tgz#a8235049c1b239adcf9fc6a6c38b7e9ad13004a6"
|
||||
integrity sha512-ttWLj4rTy2NGQnSAKnAar1LSrsJuCQ2JnQUl8hsgc9oTwXKgnRvtxGy2Kajoih/tNKnK959Ilj4WI2HaSJ9G1g==
|
||||
dependencies:
|
||||
"@walletconnect/types" "^1.0.18"
|
||||
"@walletconnect/utils" "^1.0.18"
|
||||
"@walletconnect/types" "^1.1.0"
|
||||
"@walletconnect/utils" "^1.1.0"
|
||||
eccrypto-js "5.2.0"
|
||||
|
||||
"@walletconnect/mobile-registry@^1.0.18":
|
||||
version "1.0.18"
|
||||
resolved "https://registry.yarnpkg.com/@walletconnect/mobile-registry/-/mobile-registry-1.0.18.tgz#6ca311c8a1ad7f803682d3135f61635a8c6f98e1"
|
||||
integrity sha512-SmBg2t/ucrkXM3624Gn2/8DupsR8984JVscet1xyHTwr78hj69gpJc4yO8+gADpaHKgA2eCQCbKLupqruwqWdA==
|
||||
"@walletconnect/mobile-registry@^1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@walletconnect/mobile-registry/-/mobile-registry-1.1.0.tgz#72173a4fcee61f4f8819f6d9fc7cfbf824ed3548"
|
||||
integrity sha512-OOHQa4NeK2lbfI9WD2d+hTHGwSDzBLoTCeofdLNO2ibaTltQ6S+WNDAVuho6U8CkUTzs5cHPFgLJ6nxYZ8sr/g==
|
||||
|
||||
"@walletconnect/qrcode-modal@^1.0.18":
|
||||
version "1.0.18"
|
||||
resolved "https://registry.yarnpkg.com/@walletconnect/qrcode-modal/-/qrcode-modal-1.0.18.tgz#4461d31c92ba6b0ad3deb454f91d246c95c7a0c9"
|
||||
integrity sha512-50XdgUiQPlx95VnBOs8afjLKvvGn4kBT9RrbsDLQ52m/Sn2/yzyoLoEEuk+Wv3t5VkZxTBZ5BeQNpCxTRfYR1Q==
|
||||
"@walletconnect/qrcode-modal@^1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@walletconnect/qrcode-modal/-/qrcode-modal-1.1.0.tgz#4cd0c2c2c713be3f49ef00293a1b23a079d4c7b7"
|
||||
integrity sha512-vYsu1MBE0D+kx1+xdXmaCs7JqhhWPw8orKk9Br64YIPF5pv/48i+Yi/m28/0myJm54YPlVcgzTnuf8PzAH7jgA==
|
||||
dependencies:
|
||||
"@walletconnect/mobile-registry" "^1.0.18"
|
||||
"@walletconnect/types" "^1.0.18"
|
||||
"@walletconnect/utils" "^1.0.18"
|
||||
"@walletconnect/mobile-registry" "^1.1.0"
|
||||
"@walletconnect/types" "^1.1.0"
|
||||
"@walletconnect/utils" "^1.1.0"
|
||||
preact "10.4.1"
|
||||
qrcode "1.4.4"
|
||||
|
||||
"@walletconnect/socket-transport@^1.0.18":
|
||||
version "1.0.18"
|
||||
resolved "https://registry.yarnpkg.com/@walletconnect/socket-transport/-/socket-transport-1.0.18.tgz#49395772b17de9f2ee42312db5cd692b0eabe16b"
|
||||
integrity sha512-UQclrEM4uExqbF3snAxhZil0XMlxufmlMZUNgfFe+io9K3H/FH7kILIMqow0Y7EhxUL++bVsVGTEjurDz4sYzw==
|
||||
"@walletconnect/socket-transport@^1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@walletconnect/socket-transport/-/socket-transport-1.1.0.tgz#d80b5e6b3b904f131961259ca16de816ae2b003b"
|
||||
integrity sha512-plo5WHjL3RTDENH7MTgs7D/ePGHfSuc/HLzkVGvgZSOtoPlRR916nSZNeL4bStYF1ZRJCrds10x36C0DlZjpQg==
|
||||
dependencies:
|
||||
"@walletconnect/types" "^1.0.18"
|
||||
"@walletconnect/types" "^1.1.0"
|
||||
ws "7.3.0"
|
||||
|
||||
"@walletconnect/types@^1.0.18":
|
||||
version "1.0.18"
|
||||
resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-1.0.18.tgz#7b5b2bffe4451f3128f34d3c31bb99a6fd023152"
|
||||
integrity sha512-gGu3rAcmdeauLxOZo5X4KYzBhxoxpGCHzd7LEcgcsLIhx/4cUqk3lirElO4WozeUkQyy28yEBTLUA6bASFsFpQ==
|
||||
"@walletconnect/types@^1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-1.1.0.tgz#1e4efbf033ad89910cbb86f1f381cd5fe7e764fd"
|
||||
integrity sha512-cgDEuYHZZTiaXFRwQs3Zhhar+l2T58/YjhWrfZTMKWuc77geIbF7682i9lE9bNEQqQvQ76jjKxJfSLGjCu++sA==
|
||||
|
||||
"@walletconnect/utils@^1.0.18":
|
||||
version "1.0.18"
|
||||
resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-1.0.18.tgz#730a8dbccbce9582b74761cb3faa1cc1cc4328d7"
|
||||
integrity sha512-isq7brCnZJj82QEd/34TjM4qrZcTe2PjvFuvrkhtS0c3T+Qaq0sZ6HzJA2Mctu0Uv33vqI7VDgsIkuecD0KYWw==
|
||||
"@walletconnect/utils@^1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-1.1.0.tgz#7b0bcf5c77e8079ac055013537a9620244db2da9"
|
||||
integrity sha512-y5v8PCmd/2kASOncYaz5QJiAzwBRT5MK398PmIkImX9tNEeBh00ifeQGZKkCGi6JYXbde0UC5jsGTGkH8hdxeg==
|
||||
dependencies:
|
||||
"@walletconnect/types" "^1.0.18"
|
||||
"@walletconnect/types" "^1.1.0"
|
||||
detect-browser "5.1.0"
|
||||
enc-utils "2.1.0"
|
||||
js-sha3 "0.8.0"
|
||||
|
||||
"@walletconnect/web3-provider@^1.0.13":
|
||||
version "1.0.18"
|
||||
resolved "https://registry.yarnpkg.com/@walletconnect/web3-provider/-/web3-provider-1.0.18.tgz#4ca86a3841dfdb1854681bd6da7b7466cf03ae20"
|
||||
integrity sha512-XvbdvMJq8P977uYpCsibt2wpZgQ5qRPBMK22jO0kmUuHdxuctqVQI+zqrnpeFzjQQi5wRvBRb3x15aSFUCo+Lg==
|
||||
"@walletconnect/web3-provider@^1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@walletconnect/web3-provider/-/web3-provider-1.1.0.tgz#c8a30c4121d3ade159022b10d3a18ecd804c8993"
|
||||
integrity sha512-1DaYG+aK2pjCBKXrB0c2JKeFk27ObUsu09LlZN1VvIi1+zvHftaubNsSGViLmrq25w72yPle/SDjhgmxvKVMQQ==
|
||||
dependencies:
|
||||
"@walletconnect/client" "^1.0.18"
|
||||
"@walletconnect/http-connection" "^1.0.18"
|
||||
"@walletconnect/qrcode-modal" "^1.0.18"
|
||||
"@walletconnect/types" "^1.0.18"
|
||||
"@walletconnect/utils" "^1.0.18"
|
||||
"@walletconnect/client" "^1.1.0"
|
||||
"@walletconnect/http-connection" "^1.1.0"
|
||||
"@walletconnect/qrcode-modal" "^1.1.0"
|
||||
"@walletconnect/types" "^1.1.0"
|
||||
"@walletconnect/utils" "^1.1.0"
|
||||
web3-provider-engine "15.0.12"
|
||||
|
||||
"@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"
|
||||
integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==
|
||||
|
||||
acorn@^7.1.1, acorn@^7.3.1:
|
||||
acorn@^7.1.1:
|
||||
version "7.3.1"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd"
|
||||
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:
|
||||
version "1.1.2"
|
||||
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-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"
|
||||
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.5.tgz#2c225de229ddafe1d1424c02791d0c3e10ccccaa"
|
||||
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"
|
||||
integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==
|
||||
|
||||
bnc-onboard@1.10.3:
|
||||
version "1.10.3"
|
||||
resolved "https://registry.yarnpkg.com/bnc-onboard/-/bnc-onboard-1.10.3.tgz#c05ce2af4d5538f0be51a08eea30e2264f830fd2"
|
||||
integrity sha512-4zH1CNaiyn6cYkAak4swaVa+1EpFzgJI8ZA8GL1A/SJqyig699h9gq60P+0R8Ga5xo2Pzr/WaVpy4jMUgcXPbQ==
|
||||
bnc-onboard@1.11.0:
|
||||
version "1.11.0"
|
||||
resolved "https://registry.yarnpkg.com/bnc-onboard/-/bnc-onboard-1.11.0.tgz#cb3d79b702a15d12114aa649beddb2ec5ea83e70"
|
||||
integrity sha512-hHB+xb6SULRxQh/Bm5DBEfg/4/QLI/B9q/h3AyMf+21FMmJ66DUODDsoIwbiq1fh3IrwHpoSmNLdb2nTeN0Wog==
|
||||
dependencies:
|
||||
"@ledgerhq/hw-app-eth" "^5.19.0"
|
||||
"@ledgerhq/hw-transport-u2f" "^5.19.0"
|
||||
"@portis/web3" "^2.0.0-beta.55"
|
||||
"@toruslabs/torus-embed" "^1.3.0"
|
||||
"@unilogin/provider" "^0.5.21"
|
||||
"@walletconnect/web3-provider" "^1.0.13"
|
||||
"@ledgerhq/hw-app-eth" "^5.21.0"
|
||||
"@ledgerhq/hw-transport-u2f" "^5.21.0"
|
||||
"@portis/web3" "^2.0.0-beta.57"
|
||||
"@toruslabs/torus-embed" "^1.8.2"
|
||||
"@unilogin/provider" "^0.6.1"
|
||||
"@walletconnect/web3-provider" "^1.1.0"
|
||||
authereum "^0.0.4-beta.157"
|
||||
bignumber.js "^9.0.0"
|
||||
bnc-sdk "^2.1.4"
|
||||
bowser "^2.5.2"
|
||||
bowser "^2.10.0"
|
||||
ethereumjs-tx "^2.1.2"
|
||||
ethereumjs-util "^6.2.0"
|
||||
ethereumjs-wallet "^0.6.3"
|
||||
fortmatic "^0.8.2"
|
||||
hdkey "^1.1.1"
|
||||
regenerator-runtime "^0.13.3"
|
||||
ethereumjs-util "^7.0.3"
|
||||
fortmatic "^2.2.1"
|
||||
hdkey "^2.0.1"
|
||||
regenerator-runtime "^0.13.7"
|
||||
squarelink "^1.1.4"
|
||||
trezor-connect "^8.1.2"
|
||||
trezor-connect "^8.1.9"
|
||||
walletlink "^2.0.2"
|
||||
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"
|
||||
integrity sha512-HRZPIjPcbwAVQvOTxR4YE3o8Xs98NqbbL1iEZDCz7CL8ql0Lt5iOyJFxfnAB0oFs8Oh02F/lLlg30Mexv46LjA==
|
||||
|
||||
bowser@^2.5.2:
|
||||
bowser@^2.10.0:
|
||||
version "2.10.0"
|
||||
resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.10.0.tgz#be3736f161c4bb8b10958027ab99465d2a811198"
|
||||
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"
|
||||
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:
|
||||
version "2.0.0"
|
||||
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-string "^1.5.2"
|
||||
|
||||
colorette@^1.2.0:
|
||||
colorette@^1.2.0, colorette@^1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b"
|
||||
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"
|
||||
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:
|
||||
version "2.1.2"
|
||||
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"
|
||||
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"
|
||||
resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69"
|
||||
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"
|
||||
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:
|
||||
version "2.2.2"
|
||||
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"
|
||||
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"
|
||||
resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379"
|
||||
integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==
|
||||
|
@ -8214,12 +8296,10 @@ form-data@~2.3.2:
|
|||
combined-stream "^1.0.6"
|
||||
mime-types "^2.1.12"
|
||||
|
||||
fortmatic@^0.8.2:
|
||||
version "0.8.2"
|
||||
resolved "https://registry.yarnpkg.com/fortmatic/-/fortmatic-0.8.2.tgz#a93fc97d1a1808faf82210d6554e1ebdcb6c5379"
|
||||
integrity sha512-eIuoTpDzK0CN92yOQyEbKoFuaBgxqXjmNMmUbvTphirKPkufSyYkqgHHuAJzgFe3HC5JFuWb/IlrMvqWoe/gKQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "7.3.4"
|
||||
fortmatic@^2.2.1:
|
||||
version "2.2.1"
|
||||
resolved "https://registry.yarnpkg.com/fortmatic/-/fortmatic-2.2.1.tgz#91ce9159c1fe539bd87e483125fca5c27a410a86"
|
||||
integrity sha512-PEfPoErJSErU2A8iYD2Mab2c8eJK5dCdCr1jR/8yc49aEAlyQ4UXnZXyeO6MU5zBGkDAZmg9brnRSPzc+8MKPQ==
|
||||
|
||||
forwarded@~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"
|
||||
minimalistic-assert "^1.0.1"
|
||||
|
||||
hdkey@^1.1.1:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/hdkey/-/hdkey-1.1.2.tgz#c60f9cf6f90fbf24a8a52ea06893f36a0108cd3e"
|
||||
integrity sha512-PTQ4VKu0oRnCrYfLp04iQZ7T2Cxz0UsEXYauk2j8eh6PJXCpbXuCFhOmtIFtbET0i3PMWmHN9J11gU8LEgUljQ==
|
||||
hdkey@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/hdkey/-/hdkey-2.0.1.tgz#0a211d0c510bfc44fa3ec9d44b13b634641cad74"
|
||||
integrity sha512-c+tl9PHG9/XkGgG0tD7CJpRVaE0jfZizDNmnErUAKQ4EjQSOcOUcV3EN9ZEZS8pZ4usaeiiK0H7stzuzna8feA==
|
||||
dependencies:
|
||||
bs58check "^2.1.2"
|
||||
safe-buffer "^5.1.1"
|
||||
secp256k1 "^3.0.1"
|
||||
secp256k1 "^4.0.0"
|
||||
|
||||
he@1.2.0, he@^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"
|
||||
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:
|
||||
version "0.13.6"
|
||||
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.6.tgz#d236043c46ffab2968c1ef651803d8acdea8ed65"
|
||||
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:
|
||||
version "0.10.1"
|
||||
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"
|
||||
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"
|
||||
resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.6.tgz#c80ba6266ac7a483ef1e69e8e2f056656de2fb2c"
|
||||
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"
|
||||
safe-buffer "^5.1.2"
|
||||
|
||||
secp256k1@^4.0.1:
|
||||
secp256k1@^4.0.0, secp256k1@^4.0.1:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.2.tgz#15dd57d0f0b9fdb54ac1fa1694f40e5e9a54f4a1"
|
||||
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"
|
||||
integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==
|
||||
|
||||
trezor-connect@^8.1.2:
|
||||
version "8.1.8"
|
||||
resolved "https://registry.yarnpkg.com/trezor-connect/-/trezor-connect-8.1.8.tgz#db46f2637047fa45fef3f5a7c6f16a792cc2067a"
|
||||
integrity sha512-ZTgKmSd5scbUAdHwz6DLwILVoNRe//6fQcuaVDL0tbWHvB5MNajGlLDzPG/TM7y156mzXmXF2Y4LJQqLDQhaIw==
|
||||
trezor-connect@^8.1.9:
|
||||
version "8.1.10"
|
||||
resolved "https://registry.yarnpkg.com/trezor-connect/-/trezor-connect-8.1.10.tgz#1f80525c91684e7dc062f2e5eb6d93502e61172b"
|
||||
integrity sha512-q1Hscxjyr1PtZj02yRu9rKps9VrSZ4koXgE8DM1QES2Sc7buhNqHwvRZQLQopUDXSoZh2vgObQNBrJsNHbWBpg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.10.2"
|
||||
events "^3.1.0"
|
||||
whatwg-fetch "^3.0.0"
|
||||
"@babel/runtime" "^7.11.0"
|
||||
events "^3.2.0"
|
||||
whatwg-fetch "^3.3.1"
|
||||
|
||||
trim-newlines@^1.0.0:
|
||||
version "1.0.0"
|
||||
|
@ -18014,6 +18094,7 @@ websocket@^1.0.31:
|
|||
dependencies:
|
||||
debug "^2.2.0"
|
||||
es5-ext "^0.10.50"
|
||||
gulp "^4.0.2"
|
||||
nan "^2.14.0"
|
||||
typedarray-to-buffer "^3.1.5"
|
||||
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"
|
||||
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:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"
|
||||
|
|
Loading…
Reference in New Issue