diff --git a/packages/boba/gateway/.env.example b/packages/boba/gateway/.env.example index 137a89312a..054cbaac61 100644 --- a/packages/boba/gateway/.env.example +++ b/packages/boba/gateway/.env.example @@ -16,3 +16,9 @@ REACT_APP_ZENDESK_KEY= ## KEY for the zendesk widget. ################ # to disable the veDoa set below flat to 1. REACT_APP_DISABLE_VE_DAO=1 + +##################### +##### WebWallet ##### +##################### +# to disable the walletConnect set below flat to 1. +REACT_APP_DISABLE_WALLETCONNECT=1 diff --git a/packages/boba/gateway/package.json b/packages/boba/gateway/package.json index 62c0104971..64479b6826 100644 --- a/packages/boba/gateway/package.json +++ b/packages/boba/gateway/package.json @@ -30,6 +30,7 @@ "@sentry/tracing": "^7.30.0", "@typescript-eslint/eslint-plugin": "^5.10.2", "@typescript-eslint/parser": "^5.10.2", + "@walletconnect/web3-provider": "^1.8.0", "axios": "^0.21.1", "bignumber.js": "^9.0.1", "bn.js": "^5.1.3", @@ -63,23 +64,17 @@ "serve": "^11.3.2", "truncate-middle": "^1.0.6", "ts-md5": "^1.2.11", - "typescript": "^4.3.5" + "typescript": "^4.3.5", + "web3": "^1.8.2" }, "eslintConfig": { "extends": "react-app" }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - }, + "browserslist": [ + ">0.2%", + "not dead", + "not op_mini all" + ], "devDependencies": { "@beam-australia/react-env": "2.1.2", "audit-ci": "^3.1.1" diff --git a/packages/boba/gateway/src/actions/setupAction.js b/packages/boba/gateway/src/actions/setupAction.js index eebeb9c777..6fe1bb1b55 100644 --- a/packages/boba/gateway/src/actions/setupAction.js +++ b/packages/boba/gateway/src/actions/setupAction.js @@ -75,3 +75,21 @@ export function setConnect( state ) { return dispatch({ type: 'SETUP/CONNECT', payload: state }) } } + +export function setWalletConnected( state ) { + return function (dispatch) { + return dispatch({ type: 'SETUP/WALLET_CONNECTED', payload: state }) + } +} + +export function setChainIdChanged(state) { + return function (dispatch) { + return dispatch({ type: 'SETUP/CHAINIDCHANGED/SET', payload: state }) + } +} + +export function resetChainIdChanged() { + return function (dispatch) { + return dispatch({ type: 'SETUP/CHAINIDCHANGED/RESET' }) + } +} diff --git a/packages/boba/gateway/src/actions/tokenAction.js b/packages/boba/gateway/src/actions/tokenAction.js index e3627aec26..4154462e34 100644 --- a/packages/boba/gateway/src/actions/tokenAction.js +++ b/packages/boba/gateway/src/actions/tokenAction.js @@ -225,3 +225,9 @@ export async function addToken ( tokenContractAddressL1 ) { return {currency: _tokenContractAddressL1, L1address: _tokenContractAddressL1, L2address: '', symbol: 'Not found', error: 'Not found'}; } } + +export function restTokenList () { + return function (dispatch) { + return dispatch({ type: 'TOKEN/GET/RESET' }); + } +} diff --git a/packages/boba/gateway/src/components/disconnect/Disconnect.js b/packages/boba/gateway/src/components/disconnect/Disconnect.js new file mode 100644 index 0000000000..d98b11b429 --- /dev/null +++ b/packages/boba/gateway/src/components/disconnect/Disconnect.js @@ -0,0 +1,57 @@ +/* +Copyright 2021-present Boba Network. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. */ + +import React from 'react'; +import { useDispatch } from 'react-redux'; +import { LoginOutlined } from '@mui/icons-material'; +import { IconButton, Tooltip } from '@mui/material'; + +import { + setLayer, + setConnect, + setConnectBOBA, + setConnectETH, + setEnableAccount, + setWalletConnected + } from 'actions/setupAction'; + +import networkService from 'services/networkService'; + +function Disconnect () { + + const dispatch = useDispatch(); + + const disconnect = async () => { + await networkService.walletService.disconnectWallet() + dispatch(setLayer(null)) + dispatch(setConnect(false)) + dispatch(setConnectBOBA(false)) + dispatch(setConnectETH(false)) + dispatch(setWalletConnected(false)) + dispatch(setEnableAccount(false)) + } + + return ( + <> + + + + + + + ); +} + +export default React.memo(Disconnect); diff --git a/packages/boba/gateway/src/components/mainMenu/layerSwitcher/LayerSwitcher.js b/packages/boba/gateway/src/components/mainMenu/layerSwitcher/LayerSwitcher.js index 9c7ea59ed0..a535d35768 100644 --- a/packages/boba/gateway/src/components/mainMenu/layerSwitcher/LayerSwitcher.js +++ b/packages/boba/gateway/src/components/mainMenu/layerSwitcher/LayerSwitcher.js @@ -22,7 +22,7 @@ import { IconButton, } from '@mui/material' import { useTheme } from '@mui/styles' -import { setConnect, setConnectBOBA, setConnectETH, setLayer } from 'actions/setupAction.js' +import { setConnect, setWalletConnected, setConnectBOBA, setConnectETH, setLayer } from 'actions/setupAction.js' import BobaIcon from 'components/icons/BobaIcon.js' import EthereumIcon from 'components/icons/EthereumIcon.js' import React, { useCallback, useEffect } from 'react' @@ -35,6 +35,8 @@ import { selectConnectETH, selectConnectBOBA, selectConnect, + selectWalletConnected, + selectChainIdChanged, } from 'selectors/setupSelector' import { @@ -52,10 +54,10 @@ import { setEnableAccount, setWalletAddress } from 'actions/setupAction' import { fetchTransactions, fetchBalances } from 'actions/networkAction' -import { openModal } from 'actions/uiAction' +import { closeModal, openModal } from 'actions/uiAction' import Button from 'components/button/Button.js' import { L1_ICONS, L2_ICONS } from 'util/network/network.util.js' -import { LAYER } from 'util/constant.js' +import { LAYER, DISABLE_WALLETCONNECT } from 'util/constant.js' function LayerSwitcher({ visisble = true, isButton = false }) { const dispatch = useDispatch() @@ -74,6 +76,8 @@ function LayerSwitcher({ visisble = true, isButton = false }) { const connectETHRequest = useSelector(selectConnectETH()) const connectBOBARequest = useSelector(selectConnectBOBA()) const connectRequest = useSelector(selectConnect()) + const walletConnected = useSelector(selectWalletConnected()) + const chainIdChanged = useSelector(selectChainIdChanged()) const theme = useTheme() const isMobile = useMediaQuery(theme.breakpoints.down('md')) @@ -82,21 +86,15 @@ function LayerSwitcher({ visisble = true, isButton = false }) { ? truncate(networkService.account, 6, 4, '...') : '' - const chainChangedFromMM = JSON.parse( - localStorage.getItem('chainChangedFromMM') - ) - const wantChain = JSON.parse(localStorage.getItem('wantChain')) - const chainChangedInit = JSON.parse(localStorage.getItem('chainChangedInit')) - const dispatchBootAccount = useCallback(() => { - - if (!accountEnabled && baseEnabled) initializeAccount() + if ((!accountEnabled && baseEnabled) || chainIdChanged) initializeAccount() async function initializeAccount() { const initialized = await networkService.initializeAccount({ networkGateway: network, networkType, + chainIdChanged, }) if (initialized === 'nometamask') { dispatch(openModal('noMetaMaskModal')); @@ -110,6 +108,7 @@ function LayerSwitcher({ visisble = true, isButton = false }) { return false } else if (initialized === LAYER.L1 || initialized === LAYER.L2) { + dispatch(closeModal('wrongNetworkModal')) dispatch(setLayer(initialized)) dispatch(setEnableAccount(true)) dispatch(setWalletAddress(networkService.account)) @@ -120,49 +119,60 @@ function LayerSwitcher({ visisble = true, isButton = false }) { return false } } - }, [dispatch, accountEnabled, network, networkType, baseEnabled]) + }, [dispatch, accountEnabled, network, networkType, baseEnabled, chainIdChanged]) const doConnectToLayer = useCallback((layer) => { + function resetConnectChain() { + dispatch(setConnect(false)) + dispatch(setConnectETH(false)) + } + async function doConnect() { try { - localStorage.setItem('wantChain', JSON.stringify(layer)) - await networkService.switchChain(layer) - dispatchBootAccount() + if (networkService.walletService.provider) { + if (await networkService.switchChain(layer)) { + if (layer === 'L1') { + dispatch(setConnectBOBA(false)) + } else { + dispatch(setConnectETH(false)) + } + dispatchBootAccount() + } else { + resetConnectChain() + } + } else { + // bypass walletSelectorModal + if (DISABLE_WALLETCONNECT) { + if (await networkService.walletService.connectWallet('metamask')) { + dispatch(setWalletConnected(true)) + } else { + resetConnectChain() + } + } else { + resetConnectChain() + dispatch(openModal('walletSelectorModal')) + } + } } catch (err) { console.log('ERROR', err) - dispatch(setConnectETH(false)); - dispatch(setConnectBOBA(false)); + resetConnectChain() } } doConnect(); }, [dispatch, dispatchBootAccount]) useEffect(() => { - // detect mismatch and correct the mismatch - if (wantChain === 'L1' && layer === 'L2') { - dispatchBootAccount() - } else if (wantChain === 'L2' && layer === 'L1') { + if (walletConnected) { dispatchBootAccount() } - }, [wantChain, layer, dispatchBootAccount]) + }, [walletConnected, dispatchBootAccount]) useEffect(() => { - // auto reconnect to MM if we just switched chains from - // with the chain switcher, and then unset the flag. - if (chainChangedInit) { - dispatchBootAccount() - localStorage.setItem('chainChangedInit', false) - } - }, [chainChangedInit, dispatchBootAccount]) - - useEffect(() => { - // auto reconnect to MM if we just switched chains from - // inside MM, and then unset the flag. - if (chainChangedFromMM) { + // detect mismatch and correct the mismatch + if (layer === 'L1' || layer === 'L2') { dispatchBootAccount() - localStorage.setItem('chainChangedFromMM', false) } - }, [chainChangedFromMM, dispatchBootAccount]) + }, [layer, dispatchBootAccount]) // listening for l1 connection request useEffect(() => { @@ -179,10 +189,15 @@ function LayerSwitcher({ visisble = true, isButton = false }) { }, [ connectBOBARequest, doConnectToLayer ]) useEffect(() => { - if (connectRequest) { - dispatchBootAccount() + if (connectRequest && !networkService.walletService.provider) { + // bypass walletSelectorModal + if (DISABLE_WALLETCONNECT) { + dispatchBootAccount() + } else { + dispatch(openModal('walletSelectorModal')) + } } - }, [connectRequest, dispatchBootAccount]) + }, [dispatch, connectRequest, dispatchBootAccount]) if (!visisble) { return null diff --git a/packages/boba/gateway/src/components/modal/Modal.js b/packages/boba/gateway/src/components/modal/Modal.js index b842fcbea8..29be52615d 100644 --- a/packages/boba/gateway/src/components/modal/Modal.js +++ b/packages/boba/gateway/src/components/modal/Modal.js @@ -61,7 +61,7 @@ function _Modal({ { !!newStyle ? - + diff --git a/packages/boba/gateway/src/components/modal/Modal.styles.js b/packages/boba/gateway/src/components/modal/Modal.styles.js index 90107ac8a0..1dcc3fb897 100644 --- a/packages/boba/gateway/src/components/modal/Modal.styles.js +++ b/packages/boba/gateway/src/components/modal/Modal.styles.js @@ -77,3 +77,10 @@ export const Content = styled(Box)(({ theme }) => ({ flexDirection: 'column', gap:'10px', })); + +export const BoxCenter = styled(Box)(({ theme }) => ({ + display: 'flex', + justifyContent: 'space-around', + alignItems: 'center', + cursor: 'pointer', +})) diff --git a/packages/boba/gateway/src/components/pageHeader/PageHeader.js b/packages/boba/gateway/src/components/pageHeader/PageHeader.js index c36227d05c..83ba1e7b0a 100644 --- a/packages/boba/gateway/src/components/pageHeader/PageHeader.js +++ b/packages/boba/gateway/src/components/pageHeader/PageHeader.js @@ -22,6 +22,7 @@ import CloseIcon from 'components/icons/CloseIcon' import networkService from 'services/networkService' import { makeStyles } from '@mui/styles' import Copy from 'components/copy/Copy' +import Disconnect from 'components/disconnect/Disconnect' import { useSelector } from 'react-redux' import { selectAccountEnabled, @@ -169,7 +170,10 @@ const PageHeader = ({ maintenance }) => { {!!accountEnabled ? ( - + <> + + + ) : null} diff --git a/packages/boba/gateway/src/containers/home/Home.js b/packages/boba/gateway/src/containers/home/Home.js index 667eaace0e..5762738e3b 100644 --- a/packages/boba/gateway/src/containers/home/Home.js +++ b/packages/boba/gateway/src/containers/home/Home.js @@ -74,6 +74,7 @@ import TransferPendingModal from 'containers/modals/transferPending/TransferPend import WrongNetworkModal from 'containers/modals/wrongNetwork/WrongNetworkModal'; import ManageLockModal from 'containers/modals/veBoba/ManageLockModal'; import NoMetaMaskModal from 'containers/modals/noMetaMask/NoMetaMaskModal' +import WalletSelectorModal from 'containers/modals/walletSelector/WalletSelectorModal' import CDMCompletionModal from 'containers/modals/CDMCompletion/CDMCompletionModal' /******** COMPONENTS ********/ @@ -118,6 +119,7 @@ function Home() { const noMetaMaskModalState = useSelector(selectModalState('noMetaMaskModal')); const installMetaMaskModalState = useSelector(selectModalState('installMetaMaskModal')); const manageLockModalState = useSelector(selectModalState('manageLock')); + const walletSelectorModalState = useSelector(selectModalState('walletSelectorModal')); const CDMCompletionModalState = useSelector(selectModalState('CDMCompletionModal')); const fast = useSelector(selectModalState('fast')) @@ -247,6 +249,7 @@ function Home() { {!!noMetaMaskModalState && } {!!installMetaMaskModalState && } {!!manageLockModalState && } + {!!walletSelectorModalState && } {!!CDMCompletionModalState && } { + function resetConnectChain() { + dispatch(setConnectETH(false)) + dispatch(setConnectBOBA(false)) + } + + try { + if (await networkService.walletService.connectWallet(type)) { + dispatch(closeModal('walletSelectorModal')) + dispatch(setWalletConnected(true)) + } else { + resetConnectChain() + } + } catch (error) { + console.log(`Error connecting wallet: ${error}`) + resetConnectChain() + } + } + + function handleClose () { + dispatch(closeModal('walletSelectorModal')) + dispatch(setConnectETH(false)) + dispatch(setConnectBOBA(false)) + } + + return ( + + + + connectToWallet('metamask')}> + metamask + + MetaMask + + + connectToWallet('walletconnect')}> + walletconnect + + WalletConnect + + + + + + ) +} + +export default React.memo(WalletSelectorModal) diff --git a/packages/boba/gateway/src/containers/modals/wrongNetwork/WrongNetworkModal.js b/packages/boba/gateway/src/containers/modals/wrongNetwork/WrongNetworkModal.js index a124b69872..9738834722 100644 --- a/packages/boba/gateway/src/containers/modals/wrongNetwork/WrongNetworkModal.js +++ b/packages/boba/gateway/src/containers/modals/wrongNetwork/WrongNetworkModal.js @@ -4,15 +4,23 @@ import { closeModal } from 'actions/uiAction'; import Button from 'components/button/Button'; import Modal from 'components/modal/Modal'; -import React from 'react'; +import React, { useEffect } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { selectNetwork } from 'selectors/networkSelector'; +import { restTokenList } from 'actions/tokenAction'; function WrongNetworkModal({open}) { const dispatch = useDispatch(); const network = useSelector(selectNetwork()); + useEffect(() => { + if (open){ + dispatch(restTokenList()) + } + }, [dispatch, open]) + + function handleClose() { dispatch(setConnect(false)); dispatch(closeModal('wrongNetworkModal')); diff --git a/packages/boba/gateway/src/images/metamask.svg b/packages/boba/gateway/src/images/metamask.svg new file mode 100644 index 0000000000..47ccb58a16 --- /dev/null +++ b/packages/boba/gateway/src/images/metamask.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/boba/gateway/src/images/walletconnect.png b/packages/boba/gateway/src/images/walletconnect.png deleted file mode 100644 index 4977c99599..0000000000 Binary files a/packages/boba/gateway/src/images/walletconnect.png and /dev/null differ diff --git a/packages/boba/gateway/src/images/walletconnect.svg b/packages/boba/gateway/src/images/walletconnect.svg new file mode 100644 index 0000000000..a03a5d6726 --- /dev/null +++ b/packages/boba/gateway/src/images/walletconnect.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/boba/gateway/src/reducers/setupReducer.js b/packages/boba/gateway/src/reducers/setupReducer.js index e8781023ff..745f5e3151 100644 --- a/packages/boba/gateway/src/reducers/setupReducer.js +++ b/packages/boba/gateway/src/reducers/setupReducer.js @@ -29,7 +29,9 @@ const initialState = { bobaFeeChoice: null, connectETH: false, connectBOBA: false, - connect: false + connect: false, + walletConnected: false, + chainIdChanged: false, } function setupReducer(state = initialState, action) { @@ -71,6 +73,11 @@ function setupReducer(state = initialState, action) { ...state, connect: action.payload } + case 'SETUP/WALLET_CONNECTED': + return { + ...state, + walletConnected: action.payload + } case 'SETUP/SWITCH/REQUEST': localStorage.setItem("justSwitchedChain", JSON.stringify(true)) return { @@ -95,6 +102,16 @@ function setupReducer(state = initialState, action) { appChain: action.payload, network: action.payload } + case 'SETUP/CHAINIDCHANGED/SET': + return { + ...state, + chainIdChanged: action.payload + } + case 'SETUP/CHAINIDCHANGED/RESET': + return { + ...state, + chainIdChanged: false + } default: return state } diff --git a/packages/boba/gateway/src/reducers/tokenReducer.js b/packages/boba/gateway/src/reducers/tokenReducer.js index a3b6b40ee7..04a473a370 100644 --- a/packages/boba/gateway/src/reducers/tokenReducer.js +++ b/packages/boba/gateway/src/reducers/tokenReducer.js @@ -31,6 +31,9 @@ const initialState = { function tokenReducer(state = initialState, action) { switch (action.type) { + case 'TOKEN/GET/RESET': + state = initialState + return state case 'TOKEN/GET/SUCCESS': return { ...state, diff --git a/packages/boba/gateway/src/reducers/uiReducer.js b/packages/boba/gateway/src/reducers/uiReducer.js index e5d529b749..9dff1a64cc 100644 --- a/packages/boba/gateway/src/reducers/uiReducer.js +++ b/packages/boba/gateway/src/reducers/uiReducer.js @@ -34,6 +34,7 @@ const initialState = { delegateDaoModal: false, delegateDaoXModal: false, newProposalModal: false, + walletSelectorModal: false, CDMCompletionModal: false, ledger: false, alert: null, diff --git a/packages/boba/gateway/src/selectors/setupSelector.js b/packages/boba/gateway/src/selectors/setupSelector.js index e365fa0f5e..47b36934f9 100644 --- a/packages/boba/gateway/src/selectors/setupSelector.js +++ b/packages/boba/gateway/src/selectors/setupSelector.js @@ -87,3 +87,14 @@ export function selectMonsterInfo () { } } +export function selectWalletConnected () { + return function (state) { + return state.setup['walletConnected'] + } +} + +export function selectChainIdChanged () { + return function (state) { + return state.setup['chainIdChanged'] + } +} diff --git a/packages/boba/gateway/src/services/networkService.js b/packages/boba/gateway/src/services/networkService.js index 8f8103dcc5..2f5f6c762a 100644 --- a/packages/boba/gateway/src/services/networkService.js +++ b/packages/boba/gateway/src/services/networkService.js @@ -96,6 +96,8 @@ import { MIN_NATIVE_L1_BALANCE } from 'util/constant' import { getPoolDetail } from 'util/poolDetails' import { pingRpcUrl, getNetworkDetail, NETWORK, NETWORK_TYPE } from 'util/network/network.util' import appService from './app.service' +import walletService from './wallet.service' + import BobaGasPriceOracleABI from './abi/BobaGasPriceOracle.abi' import L1StandardBridgeABI from './abi/L1StandardBridge.abi' @@ -109,15 +111,6 @@ const L2_SECONDARYFEETOKEN_ADDRESS = '0x4200000000000000000000000000000000000023 let allTokens = {} -function handleChangeChainOnce(chainID_hex_string) { - - localStorage.setItem('chainChangedInit', true) - - localStorage.setItem('newChain', Number(chainID_hex_string)) - // and remove the listner - window.ethereum.removeListener('chainChanged', handleChangeChainOnce) -} - class NetworkService { constructor() { @@ -156,10 +149,6 @@ class NetworkService { this.tokenAddresses = null - // chain ID - this.chainID = null - this.networkName = null - // gas this.L1GasLimit = 9999999 // setting of this value not important since it's not connected to anything in the contracts @@ -197,28 +186,11 @@ class NetworkService { this.addresses = {} this.network = null; this.networkConfig = null - } - bindProviderListeners() { - window.ethereum.on('accountsChanged', () => { - window.location.reload() - }) - window.ethereum.on('chainChanged', () => { - const chainChangedInit = JSON.parse(localStorage.getItem('chainChangedInit')) - // do not reload window in the special case where the user - // changed chains AND conncted at the same time - // otherwise the user gets confused about why they are going through - // two window reloads - if(chainChangedInit) { - localStorage.setItem('chainChangedInit', false) - } else { - localStorage.setItem('chainChangedFromMM', true) - window.location.reload() - } - }) + // wallet service + this.walletService = walletService } - async getBobaFeeChoice() { const bobaFeeContract = new ethers.Contract( @@ -238,12 +210,8 @@ class NetworkService { feeChoice = await bobaFeeContract.secondaryFeeTokenUsers(this.account) // if it's false which means boba is getting used as tokenfee which is default value. feeChoice = !feeChoice; - } - - console.log( - 'Fee used as boba', feeChoice - ) + console.log('Fee used as boba', feeChoice) const bobaFee = { priceRatio: priceRatio.toString(), feeChoice @@ -620,8 +588,12 @@ class NetworkService { fastRelayer: true, }) + let l2SecondaryFeeTokenAddress = L2_SECONDARYFEETOKEN_ADDRESS + if (NETWORK.ETHEREUM === network && chainId === 1) { + l2SecondaryFeeTokenAddress = allTokens.BOBA.L2 + } this.BobaContract = new ethers.Contract( - L2_SECONDARYFEETOKEN_ADDRESS, + l2SecondaryFeeTokenAddress, Boba.abi, this.L2Provider ) @@ -669,7 +641,7 @@ class NetworkService { } } - async initializeAccount({ networkGateway: network, networkType }) { + async initializeAccount({ networkGateway: network, networkType, chainIdChanged }) { try { @@ -677,14 +649,16 @@ class NetworkService { return 'nometamask' } + this.walletService.bindProviderListeners() + // connect to the wallet - await window.ethereum.request({method: 'eth_requestAccounts'}) - this.provider = new ethers.providers.Web3Provider(window.ethereum) + this.provider = this.walletService.provider this.account = await this.provider.getSigner().getAddress() - const networkMM = await this.provider.getNetwork() - this.chainID = networkMM.chainId - this.networkName = networkMM.name + let chainId = chainIdChanged + if (!chainId) { + chainId = await this.provider.getNetwork().then(network => network.chainId) + } this.networkGateway = network this.networkType = networkType @@ -693,23 +667,20 @@ class NetworkService { network, networkType }) - const L1ChainId = networkDetail['L1']['chainId'] const L2ChainId = networkDetail['L2']['chainId'] // there are numerous possible chains we could be on also, either L1 or L2 // at this point, we only know whether we want to be on which network etc - if (!!NETWORK[ network ] && networkMM.chainId === L2ChainId) { + if (!!NETWORK[ network ] && chainId === L2ChainId) { this.L1orL2 = 'L2'; - } else if(!!NETWORK[ network ] && networkMM.chainId === L1ChainId) { + } else if(!!NETWORK[ network ] && chainId === L1ChainId) { this.L1orL2 = 'L1'; } else { - this.bindProviderListeners() return 'wrongnetwork' } - this.bindProviderListeners() // this should not do anything unless we changed chains if (this.L1orL2 === 'L2') { await this.getBobaFeeChoice() @@ -725,6 +696,8 @@ class NetworkService { async switchChain(targetLayer) { + // ignore request if we are already on the target layer + if (!targetLayer) { return false } const networkDetail = getNetworkDetail({ network: this.networkGateway, @@ -732,46 +705,20 @@ class NetworkService { }) const targetIDHex = networkDetail[targetLayer].chainIdHex - - try { - - this.provider = new ethers.providers.Web3Provider(window.ethereum) - - await this.provider.send('wallet_switchEthereumChain', [{ chainId: targetIDHex }]) - window.ethereum.on('chainChanged', handleChangeChainOnce) - - return true - } catch (error) { - // 4902 = the chain has not been added to MetaMask. - // So, lets add it - if (error.code === 4902) { - const rpcURL = targetLayer === 'L1' ? this.L1Provider.connection.url : networkDetail[targetLayer].rpcURL - try { - //the chainParams are only needed for the L2s - const chainParam = { - chainId: '0x' + networkDetail[targetLayer].chainId.toString(16), - chainName: networkDetail[targetLayer].name, - rpcUrls: rpcURL, - nativeCurrency: { - name: networkDetail[targetLayer].tokenName, - symbol: networkDetail[targetLayer].symbol, - decimals: 18, - }, - blockExplorerUrls: [networkDetail[targetLayer]?.blockExplorer?.slice(0, -1)] - } - - await this.provider.send('wallet_addEthereumChain', [chainParam, this.account]) - window.ethereum.on('chainChanged', handleChangeChainOnce) - return true - } catch (addError) { - console.log("MetaMask - Error adding new RPC: ", addError) - throw new Error(addError.code) - } - } else { //some other error code - console.log("MetaMask - Switch Error: ", error.code) - throw new Error(error.code) - } - } + const rpcURL = targetLayer === 'L1' ? this.L1Provider.connection.url : networkDetail[targetLayer].rpcUrl + const chainParam = { + chainId: '0x' + networkDetail[targetLayer].chainId.toString(16), + chainName: networkDetail[targetLayer].name, + rpcUrls: [rpcURL], + nativeCurrency: { + name: networkDetail[targetLayer].tokenName, + symbol: networkDetail[targetLayer].symbol, + decimals: 18, + }, + blockExplorerUrls: [networkDetail[targetLayer]?.blockExplorerUrl?.slice(0, -1)] + } + + return await this.walletService.switchChain(targetIDHex, chainParam) } async getSevens() { @@ -4079,9 +4026,13 @@ class NetworkService { /***** L2 Fee *****/ /***********************************************/ async estimateL2Fee(payload=this.payloadForL1SecurityFee) { - const l2GasPrice = await this.L2Provider.getGasPrice() - const l2GasEstimate = await this.L2Provider.estimateGas(payload) - return l2GasPrice.mul(l2GasEstimate).toNumber() + try { + const l2GasPrice = await this.L2Provider.getGasPrice() + const l2GasEstimate = await this.L2Provider.estimateGas(payload) + return l2GasPrice.mul(l2GasEstimate).toNumber() + } catch { + return 0 + } } /***********************************************/ diff --git a/packages/boba/gateway/src/services/wallet.service.js b/packages/boba/gateway/src/services/wallet.service.js index 556e783318..2f9faa3e1b 100644 --- a/packages/boba/gateway/src/services/wallet.service.js +++ b/packages/boba/gateway/src/services/wallet.service.js @@ -14,57 +14,164 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -import { providers } from "ethers" +import { providers, utils } from "ethers" +import WalletConnectProvider from "@walletconnect/web3-provider" +import { rpcUrls } from 'util/network/network.util' +import store from 'store' class WalletService { constructor() { this.provider = null this.account = null + + this.walletConnectProvider = null + this.walletType = null } - async connectWallet() { + async connectMetaMask() { try { await window.ethereum.request({ method: 'eth_requestAccounts' }) - this.provider = new providers.Web3Provider(window.ethereum) + this.provider = new providers.Web3Provider(window.ethereum, 'any') this.account = await this.provider.getSigner().getAddress() + this.walletType = 'metamask' + return true } catch (e) { console.log(`Error connecting wallet: ${e}`) + return false } } - async disconnectWallet() { + async disconnectMetaMask() { try { await window.ethereum.request({ method: "eth_requestAccounts", params: [{ eth_accounts: {} }] }) - this.provider = null - this.account = null + return true } catch (e) { console.log(`Error disconnecting wallet: ${e}`) + return false } } + async listenMetaMask() { + window.ethereum.on('accountsChanged', () => { + window.location.reload() + }) + + window.ethereum.on('chainChanged', (chainId) => { + console.log(`MetaMask chain changed to ${Number(chainId)}`) + store.dispatch({ type: 'SETUP/CHAINIDCHANGED/SET', payload: Number(chainId) }) + }) + } + + async connectWalletConnect() { + try { + this.walletConnectProvider = new WalletConnectProvider({ + rpc: rpcUrls + }) + await this.walletConnectProvider.enable() + this.provider = new providers.Web3Provider(this.walletConnectProvider, 'any') + this.account = await this.provider.getSigner().getAddress() + this.walletType = 'walletconnect' + return true + } catch (e) { + console.log(`Error connecting WalletConnect: ${e}`) + return false + } + } + + async disconnectWalletConnect() { + try { + await this.walletConnectProvider.disconnect() + return true + } catch (e) { + console.log(`Error disconnecting WalletConnect: ${e}`) + return false + } + } + + async listenWalletConnect() { + this.walletConnectProvider.on("accountsChanged", (accounts) => { + if (utils.getAddress(this.account) !== utils.getAddress(accounts[0])) { + window.location.reload() + } + }); + + this.walletConnectProvider.on("chainChanged", (chainId) => { + console.log(`WalletConnect chain changed to: ${chainId}`) + store.dispatch({ type: 'SETUP/CHAINIDCHANGED/SET', payload: chainId }) + }); + } + async switchChain(chainId, chainInfo) { + const provider = this.walletType === 'metamask' ? window.ethereum : this.walletConnectProvider try { - await window.ethereum.request({ + await provider.request({ method: "wallet_switchEthereumChain", params: [{ chainId }], }) + return true } catch (error) { - if (error.code === 4902) { + if (error.code === 4902 || this.walletType === 'walletconnect') { try { - await window.ethereum.request({ + await provider.request({ method: "wallet_addEthereumChain", params: [chainInfo, this.account], }) + // After adding the chain, we need to call switchEthereumChain again to finish the process for WalletConnect + if (this.walletType === 'walletconnect') { + await provider.request({ + method: "wallet_switchEthereumChain", + params: [{ chainId }], + }) + } + return true } catch (addError) { console.log(`Error adding chain: ${addError}`) - throw new Error(addError.code) + return false } } else { - console.log(`Error switching chain: ${error}`) - throw new Error(error.code) + console.log(`Error switching chain: ${error?.message}`) + return false } } } + + async connectWallet(type) { + if (type === 'metamask') { + return await this.connectMetaMask() + } + if (type === 'walletconnect') { + return await this.connectWalletConnect() + } + } + + async disconnectWallet() { + let result = false + if (this.walletType === 'metamask') { + result = await this.disconnectMetaMask() + } + if (this.walletType === 'walletconnect') { + result = await this.disconnectWalletConnect() + } + this.resetValues() + return result + } + + bindProviderListeners() { + if (this.walletType === 'metamask') { + this.listenMetaMask() + } + if (this.walletType === 'walletconnect') { + this.listenWalletConnect() + } + } + + resetValues() { + this.walletConnectProvider = null + this.provider = null + this.account = null + this.walletType = null + store.dispatch({ type: 'SETUP/CHAINIDCHANGED/RESET' }) + } } const walletService = new WalletService(); diff --git a/packages/boba/gateway/src/util/constant.js b/packages/boba/gateway/src/util/constant.js index 02f51fb942..f0d6e9547e 100644 --- a/packages/boba/gateway/src/util/constant.js +++ b/packages/boba/gateway/src/util/constant.js @@ -20,6 +20,8 @@ export const SPEED_CHECK = process.env.REACT_APP_SPEED_CHECK export const TARGET_CHAIN_URL = process.env.REACT_APP_TARGET_CHAIN_URL // VE DAO FLAG export const DISABLE_VE_DAO = process.env.REACT_APP_DISABLE_VE_DAO +// WalletConnect FLAG +export const DISABLE_WALLETCONNECT = process.env.REACT_APP_DISABLE_WALLETCONNECT export const BRIDGE_TYPE = { FAST_BRIDGE: "FAST_BRIDGE", diff --git a/packages/boba/gateway/src/util/network/network.util.js b/packages/boba/gateway/src/util/network/network.util.js index 333dc63d3e..457a2fa364 100644 --- a/packages/boba/gateway/src/util/network/network.util.js +++ b/packages/boba/gateway/src/util/network/network.util.js @@ -272,6 +272,14 @@ const networkConfig = { [NETWORK.MOONBEAM] : moonbeamConfig } +export const rpcUrls = Object.values(networkConfig).reduce((networkConfigs, networkConfig) => { + networkConfigs[networkConfig.Mainnet.L1.chainId] = networkConfig.Mainnet.L1.rpcUrl[0] + networkConfigs[networkConfig.Mainnet.L2.chainId] = networkConfig.Mainnet.L2.rpcUrl + networkConfigs[networkConfig.Testnet.L1.chainId] = networkConfig.Testnet.L1.rpcUrl[0] + networkConfigs[networkConfig.Testnet.L2.chainId] = networkConfig.Testnet.L2.rpcUrl + return networkConfigs +}, {}) + export const getNetworkDetail = ({ network, networkType diff --git a/yarn.lock b/yarn.lock index fa45298686..dc45f83d9c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -968,6 +968,18 @@ babel-plugin-polyfill-regenerator "^0.4.1" semver "^6.3.0" +"@babel/plugin-transform-runtime@^7.5.5": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.0.tgz#2a884f29556d0a68cd3d152dcc9e6c71dfb6eee8" + integrity sha512-ReY6pxwSzEU0b3r2/T/VhqMKg/AkceBT19X0UptA3/tYi5Pe2eXgEUH+NNMC5nok6c6XQz5tyVTUpuezRfSMSg== + dependencies: + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + babel-plugin-polyfill-corejs2 "^0.3.3" + babel-plugin-polyfill-corejs3 "^0.6.0" + babel-plugin-polyfill-regenerator "^0.4.1" + semver "^6.3.0" + "@babel/plugin-transform-shorthand-properties@^7.18.6", "@babel/plugin-transform-shorthand-properties@^7.8.3": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" @@ -3331,6 +3343,11 @@ tweetnacl "^1.0.3" tweetnacl-util "^0.15.1" +"@metamask/safe-event-emitter@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz#af577b477c683fad17c619a78208cede06f9605c" + integrity sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q== + "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" @@ -5578,6 +5595,190 @@ resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.45.tgz#a3fffa7489eafff38d984e23d0236e230c818bc2" integrity sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg== +"@walletconnect/browser-utils@^1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@walletconnect/browser-utils/-/browser-utils-1.8.0.tgz#33c10e777aa6be86c713095b5206d63d32df0951" + integrity sha512-Wcqqx+wjxIo9fv6eBUFHPsW1y/bGWWRboni5dfD8PtOmrihrEpOCmvRJe4rfl7xgJW8Ea9UqKEaq0bIRLHlK4A== + dependencies: + "@walletconnect/safe-json" "1.0.0" + "@walletconnect/types" "^1.8.0" + "@walletconnect/window-getters" "1.0.0" + "@walletconnect/window-metadata" "1.0.0" + detect-browser "5.2.0" + +"@walletconnect/client@^1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@walletconnect/client/-/client-1.8.0.tgz#6f46b5499c7c861c651ff1ebe5da5b66225ca696" + integrity sha512-svyBQ14NHx6Cs2j4TpkQaBI/2AF4+LXz64FojTjMtV4VMMhl81jSO1vNeg+yYhQzvjcGH/GpSwixjyCW0xFBOQ== + dependencies: + "@walletconnect/core" "^1.8.0" + "@walletconnect/iso-crypto" "^1.8.0" + "@walletconnect/types" "^1.8.0" + "@walletconnect/utils" "^1.8.0" + +"@walletconnect/core@^1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-1.8.0.tgz#6b2748b90c999d9d6a70e52e26a8d5e8bfeaa81e" + integrity sha512-aFTHvEEbXcZ8XdWBw6rpQDte41Rxwnuk3SgTD8/iKGSRTni50gI9S3YEzMj05jozSiOBxQci4pJDMVhIUMtarw== + dependencies: + "@walletconnect/socket-transport" "^1.8.0" + "@walletconnect/types" "^1.8.0" + "@walletconnect/utils" "^1.8.0" + +"@walletconnect/crypto@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@walletconnect/crypto/-/crypto-1.0.3.tgz#7b8dd4d7e2884fe3543c7c07aea425eef5ef9dd4" + integrity sha512-+2jdORD7XQs76I2Odgr3wwrtyuLUXD/kprNVsjWRhhhdO9Mt6WqVzOPu0/t7OHSmgal8k7SoBQzUc5hu/8zL/g== + dependencies: + "@walletconnect/encoding" "^1.0.2" + "@walletconnect/environment" "^1.0.1" + "@walletconnect/randombytes" "^1.0.3" + aes-js "^3.1.2" + hash.js "^1.1.7" + tslib "1.14.1" + +"@walletconnect/encoding@^1.0.1", "@walletconnect/encoding@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@walletconnect/encoding/-/encoding-1.0.2.tgz#cb3942ad038d6a6bf01158f66773062dd25724da" + integrity sha512-CrwSBrjqJ7rpGQcTL3kU+Ief+Bcuu9PH6JLOb+wM6NITX1GTxR/MfNwnQfhLKK6xpRAyj2/nM04OOH6wS8Imag== + dependencies: + is-typedarray "1.0.0" + tslib "1.14.1" + typedarray-to-buffer "3.1.5" + +"@walletconnect/environment@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@walletconnect/environment/-/environment-1.0.1.tgz#1d7f82f0009ab821a2ba5ad5e5a7b8ae3b214cd7" + integrity sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg== + dependencies: + tslib "1.14.1" + +"@walletconnect/http-connection@^1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@walletconnect/http-connection/-/http-connection-1.8.0.tgz#c19fff5c179d5180d8b974faef2621bd012adb4e" + integrity sha512-IziEr3c53qsMromK7jz0EkbKDHlryRbxXdFR+xaG+S5nfxtUdAfjzlZabvczXdDCgmTij6KbNsZAjBMqCBzACw== + dependencies: + "@walletconnect/types" "^1.8.0" + "@walletconnect/utils" "^1.8.0" + eventemitter3 "4.0.7" + xhr2-cookies "1.1.0" + +"@walletconnect/iso-crypto@^1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@walletconnect/iso-crypto/-/iso-crypto-1.8.0.tgz#44ddf337c4f02837c062dbe33fa7ab36789df451" + integrity sha512-pWy19KCyitpfXb70hA73r9FcvklS+FvO9QUIttp3c2mfW8frxgYeRXfxLRCIQTkaYueRKvdqPjbyhPLam508XQ== + dependencies: + "@walletconnect/crypto" "^1.0.2" + "@walletconnect/types" "^1.8.0" + "@walletconnect/utils" "^1.8.0" + +"@walletconnect/jsonrpc-types@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.2.tgz#b79519f679cd6a5fa4a1bea888f27c1916689a20" + integrity sha512-CZe8tjJX73OWdHjrBHy7HtAapJ2tT0Q3TYhPBhRxi3643lwPIQWC9En45ldY14TZwgSewkbZ0FtGBZK0G7Bbyg== + dependencies: + keyvaluestorage-interface "^1.0.0" + tslib "1.14.1" + +"@walletconnect/jsonrpc-utils@^1.0.3": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.6.tgz#7fa58e6671247e64e189828103282e6258f5330f" + integrity sha512-snp0tfkjPiDLQp/jrBewI+9SM33GPV4+Gjgldod6XQ7rFyQ5FZjnBxUkY4xWH0+arNxzQSi6v5iDXjCjSaorpg== + dependencies: + "@walletconnect/environment" "^1.0.1" + "@walletconnect/jsonrpc-types" "^1.0.2" + tslib "1.14.1" + +"@walletconnect/mobile-registry@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@walletconnect/mobile-registry/-/mobile-registry-1.4.0.tgz#502cf8ab87330841d794819081e748ebdef7aee5" + integrity sha512-ZtKRio4uCZ1JUF7LIdecmZt7FOLnX72RPSY7aUVu7mj7CSfxDwUn6gBuK6WGtH+NZCldBqDl5DenI5fFSvkKYw== + +"@walletconnect/qrcode-modal@^1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@walletconnect/qrcode-modal/-/qrcode-modal-1.8.0.tgz#ddd6f5c9b7ee52c16adf9aacec2a3eac4994caea" + integrity sha512-BueaFefaAi8mawE45eUtztg3ZFbsAH4DDXh1UNwdUlsvFMjqcYzLUG0xZvDd6z2eOpbgDg2N3bl6gF0KONj1dg== + dependencies: + "@walletconnect/browser-utils" "^1.8.0" + "@walletconnect/mobile-registry" "^1.4.0" + "@walletconnect/types" "^1.8.0" + copy-to-clipboard "^3.3.1" + preact "10.4.1" + qrcode "1.4.4" + +"@walletconnect/randombytes@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@walletconnect/randombytes/-/randombytes-1.0.3.tgz#e795e4918367fd1e6a2215e075e64ab93e23985b" + integrity sha512-35lpzxcHFbTN3ABefC9W+uBpNZl1GC4Wpx0ed30gibfO/y9oLdy1NznbV96HARQKSBV9J9M/rrtIvf6a23jfYw== + dependencies: + "@walletconnect/encoding" "^1.0.2" + "@walletconnect/environment" "^1.0.1" + randombytes "^2.1.0" + tslib "1.14.1" + +"@walletconnect/safe-json@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/safe-json/-/safe-json-1.0.0.tgz#12eeb11d43795199c045fafde97e3c91646683b2" + integrity sha512-QJzp/S/86sUAgWY6eh5MKYmSfZaRpIlmCJdi5uG4DJlKkZrHEF7ye7gA+VtbVzvTtpM/gRwO2plQuiooIeXjfg== + +"@walletconnect/socket-transport@^1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@walletconnect/socket-transport/-/socket-transport-1.8.0.tgz#9a1128a249628a0be11a0979b522fe82b44afa1b" + integrity sha512-5DyIyWrzHXTcVp0Vd93zJ5XMW61iDM6bcWT4p8DTRfFsOtW46JquruMhxOLeCOieM4D73kcr3U7WtyR4JUsGuQ== + dependencies: + "@walletconnect/types" "^1.8.0" + "@walletconnect/utils" "^1.8.0" + ws "7.5.3" + +"@walletconnect/types@^1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-1.8.0.tgz#3f5e85b2d6b149337f727ab8a71b8471d8d9a195" + integrity sha512-Cn+3I0V0vT9ghMuzh1KzZvCkiAxTq+1TR2eSqw5E5AVWfmCtECFkVZBP6uUJZ8YjwLqXheI+rnjqPy7sVM4Fyg== + +"@walletconnect/utils@^1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-1.8.0.tgz#2591a197c1fa7429941fe428876088fda6632060" + integrity sha512-zExzp8Mj1YiAIBfKNm5u622oNw44WOESzo6hj+Q3apSMIb0Jph9X3GDIdbZmvVZsNPxWDL7uodKgZcCInZv2vA== + dependencies: + "@walletconnect/browser-utils" "^1.8.0" + "@walletconnect/encoding" "^1.0.1" + "@walletconnect/jsonrpc-utils" "^1.0.3" + "@walletconnect/types" "^1.8.0" + bn.js "4.11.8" + js-sha3 "0.8.0" + query-string "6.13.5" + +"@walletconnect/web3-provider@^1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@walletconnect/web3-provider/-/web3-provider-1.8.0.tgz#e90d903f4c609b7158ecb5f0f41df121e93b56b5" + integrity sha512-lqqEO0oRmCehH+c8ZPk3iH7I7YtbzmkWd58/Or2AgWAl869JamzndKCD3sTlNsPRQLxxPpraHQqzur7uclLWvg== + dependencies: + "@walletconnect/client" "^1.8.0" + "@walletconnect/http-connection" "^1.8.0" + "@walletconnect/qrcode-modal" "^1.8.0" + "@walletconnect/types" "^1.8.0" + "@walletconnect/utils" "^1.8.0" + web3-provider-engine "16.0.1" + +"@walletconnect/window-getters@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/window-getters/-/window-getters-1.0.0.tgz#1053224f77e725dfd611c83931b5f6c98c32bfc8" + integrity sha512-xB0SQsLaleIYIkSsl43vm8EwETpBzJ2gnzk7e0wMF3ktqiTGS6TFHxcprMl5R44KKh4tCcHCJwolMCaDSwtAaA== + +"@walletconnect/window-getters@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@walletconnect/window-getters/-/window-getters-1.0.1.tgz#f36d1c72558a7f6b87ecc4451fc8bd44f63cbbdc" + integrity sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q== + dependencies: + tslib "1.14.1" + +"@walletconnect/window-metadata@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/window-metadata/-/window-metadata-1.0.0.tgz#93b1cc685e6b9b202f29c26be550fde97800c4e5" + integrity sha512-9eFvmJxIKCC3YWOL97SgRkKhlyGXkrHwamfechmqszbypFspaSk+t2jQXAEU7YClHF6Qjw5eYOmy1//zFi9/GA== + dependencies: + "@walletconnect/window-getters" "^1.0.0" + "@webassemblyjs/ast@1.11.1": version "1.11.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" @@ -6617,6 +6818,13 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== +async-mutex@^0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.2.6.tgz#0d7a3deb978bc2b984d5908a2038e1ae2e54ff40" + integrity sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw== + dependencies: + tslib "^2.0.0" + async-mutex@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.3.2.tgz#1485eda5bda1b0ec7c8df1ac2e815757ad1831df" @@ -7614,6 +7822,11 @@ bn.js@4.11.6: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== +bn.js@4.11.8: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== + bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.10.0, bn.js@^4.11.0, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9, bn.js@^4.8.0: version "4.12.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" @@ -7881,7 +8094,30 @@ bsert@~0.0.10: resolved "https://registry.yarnpkg.com/bsert/-/bsert-0.0.10.tgz#231ac82873a1418c6ade301ab5cd9ae385895597" integrity sha512-NHNwlac+WPy4t2LoNh8pXk8uaIGH3NSaIUbTTRXGpE2WEbq0te/tDykYHkFK57YKLPjv/aGHmbqvnGeVWDz57Q== -buffer-from@^1.0.0, buffer-from@^1.1.0: +btoa@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" + integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== + +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ== + +buffer-from@^1.0.0, buffer-from@^1.1.0, buffer-from@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== @@ -7930,7 +8166,7 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" -buffer@^5.0.5, buffer@^5.2.1, buffer@^5.5.0, buffer@^5.6.0: +buffer@^5.0.5, buffer@^5.2.1, buffer@^5.4.3, buffer@^5.5.0, buffer@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -8752,7 +8988,7 @@ clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" -clone@2.1.2, clone@^2.0.0: +clone@2.1.2, clone@^2.0.0, clone@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== @@ -10156,6 +10392,11 @@ destroy@1.2.0: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== +detect-browser@5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.2.0.tgz#c9cd5afa96a6a19fda0bbe9e9be48a6b6e1e9c97" + integrity sha512-tr7XntDAu50BVENgQfajMLzacmSe34D+qZc4zjnniz0ZVuw/TZcLcyxHQjYpJTM36sGEkZZlYLnIM1hH7alTMA== + detect-indent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" @@ -10246,6 +10487,11 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" +dijkstrajs@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.2.tgz#2e48c0d3b825462afe75ab4ad5e829c8ece36257" + integrity sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg== + dir-glob@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" @@ -11568,6 +11814,18 @@ eth-block-tracker@^3.0.0: pify "^2.3.0" tape "^4.6.3" +eth-block-tracker@^4.4.2: + version "4.4.3" + resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-4.4.3.tgz#766a0a0eb4a52c867a28328e9ae21353812cf626" + integrity sha512-A8tG4Z4iNg4mw5tP1Vung9N9IjgMNqpiMoJ/FouSFwNCGHv2X0mmOYwtQOJzki6XN7r7Tyo01S29p7b224I4jw== + dependencies: + "@babel/plugin-transform-runtime" "^7.5.5" + "@babel/runtime" "^7.5.5" + eth-query "^2.1.0" + json-rpc-random-id "^1.0.1" + pify "^3.0.0" + safe-event-emitter "^1.0.1" + eth-ens-namehash@2.0.8, eth-ens-namehash@^2.0.8: version "2.0.8" resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" @@ -11597,6 +11855,18 @@ eth-gas-reporter@^0.2.25: sha1 "^1.1.1" sync-request "^6.0.0" +eth-json-rpc-filters@^4.2.1: + version "4.2.2" + resolved "https://registry.yarnpkg.com/eth-json-rpc-filters/-/eth-json-rpc-filters-4.2.2.tgz#eb35e1dfe9357ace8a8908e7daee80b2cd60a10d" + integrity sha512-DGtqpLU7bBg63wPMWg1sCpkKCf57dJ+hj/k3zF26anXMzkmtSBDExL8IhUu7LUd34f0Zsce3PYNO2vV2GaTzaw== + dependencies: + "@metamask/safe-event-emitter" "^2.0.0" + async-mutex "^0.2.6" + eth-json-rpc-middleware "^6.0.0" + eth-query "^2.1.2" + json-rpc-engine "^6.1.0" + pify "^5.0.0" + eth-json-rpc-infura@^3.1.0: version "3.2.1" resolved "https://registry.yarnpkg.com/eth-json-rpc-infura/-/eth-json-rpc-infura-3.2.1.tgz#26702a821067862b72d979c016fd611502c6057f" @@ -11607,6 +11877,16 @@ eth-json-rpc-infura@^3.1.0: json-rpc-engine "^3.4.0" json-rpc-error "^2.0.0" +eth-json-rpc-infura@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/eth-json-rpc-infura/-/eth-json-rpc-infura-5.1.0.tgz#e6da7dc47402ce64c54e7018170d89433c4e8fb6" + integrity sha512-THzLye3PHUSGn1EXMhg6WTLW9uim7LQZKeKaeYsS9+wOBcamRiCQVGHa6D2/4P0oS0vSaxsBnU/J6qvn0MPdow== + dependencies: + eth-json-rpc-middleware "^6.0.0" + eth-rpc-errors "^3.0.0" + json-rpc-engine "^5.3.0" + node-fetch "^2.6.0" + eth-json-rpc-middleware@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/eth-json-rpc-middleware/-/eth-json-rpc-middleware-1.6.0.tgz#5c9d4c28f745ccb01630f0300ba945f4bef9593f" @@ -11626,6 +11906,23 @@ eth-json-rpc-middleware@^1.5.0: promise-to-callback "^1.0.0" tape "^4.6.3" +eth-json-rpc-middleware@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/eth-json-rpc-middleware/-/eth-json-rpc-middleware-6.0.0.tgz#4fe16928b34231a2537856f08a5ebbc3d0c31175" + integrity sha512-qqBfLU2Uq1Ou15Wox1s+NX05S9OcAEL4JZ04VZox2NS0U+RtCMjSxzXhLFWekdShUPZ+P8ax3zCO2xcPrp6XJQ== + dependencies: + btoa "^1.2.1" + clone "^2.1.1" + eth-query "^2.1.2" + eth-rpc-errors "^3.0.0" + eth-sig-util "^1.4.2" + ethereumjs-util "^5.1.2" + json-rpc-engine "^5.3.0" + json-stable-stringify "^1.0.1" + node-fetch "^2.6.1" + pify "^3.0.0" + safe-event-emitter "^1.0.1" + eth-lib@0.2.8: version "0.2.8" resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.8.tgz#b194058bef4b220ad12ea497431d6cb6aa0623c8" @@ -11655,6 +11952,20 @@ eth-query@^2.0.2, eth-query@^2.1.0, eth-query@^2.1.2: json-rpc-random-id "^1.0.0" xtend "^4.0.1" +eth-rpc-errors@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-3.0.0.tgz#d7b22653c70dbf9defd4ef490fd08fe70608ca10" + integrity sha512-iPPNHPrLwUlR9xCSYm7HHQjWBasor3+KZfRvwEWxMz3ca0yqnlBeJrnyphkGIXZ4J7AMAaOLmwy4AWhnxOiLxg== + dependencies: + fast-safe-stringify "^2.0.6" + +eth-rpc-errors@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-4.0.3.tgz#6ddb6190a4bf360afda82790bb7d9d5e724f423a" + integrity sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg== + dependencies: + fast-safe-stringify "^2.0.6" + eth-sig-util@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-3.0.0.tgz#75133b3d7c20a5731af0690c385e184ab942b97e" @@ -12099,7 +12410,7 @@ eventemitter3@4.0.4: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== -eventemitter3@^4.0.0, eventemitter3@^4.0.1, eventemitter3@^4.0.4: +eventemitter3@4.0.7, eventemitter3@^4.0.0, eventemitter3@^4.0.1, eventemitter3@^4.0.4: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== @@ -12403,7 +12714,7 @@ fast-redact@^3.0.0: resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.1.2.tgz#d58e69e9084ce9fa4c1a6fa98a3e1ecf5d7839aa" integrity sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw== -fast-safe-stringify@^2.0.7, fast-safe-stringify@^2.0.8, fast-safe-stringify@^2.1.1: +fast-safe-stringify@^2.0.6, fast-safe-stringify@^2.0.7, fast-safe-stringify@^2.0.8, fast-safe-stringify@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== @@ -15067,7 +15378,7 @@ is-typed-array@^1.1.10, is-typed-array@^1.1.3, is-typed-array@^1.1.9: gopd "^1.0.1" has-tostringtag "^1.0.0" -is-typedarray@^1.0.0, is-typedarray@~1.0.0: +is-typedarray@1.0.0, is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== @@ -15128,6 +15439,11 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== +isarray@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -15872,6 +16188,22 @@ json-rpc-engine@^3.4.0, json-rpc-engine@^3.6.0: promise-to-callback "^1.0.0" safe-event-emitter "^1.0.1" +json-rpc-engine@^5.3.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-5.4.0.tgz#75758609d849e1dba1e09021ae473f3ab63161e5" + integrity sha512-rAffKbPoNDjuRnXkecTjnsE3xLLrb00rEkdgalINhaYVYIxDwWtvYBr9UFbhTvPB1B2qUOLoFd/cV6f4Q7mh7g== + dependencies: + eth-rpc-errors "^3.0.0" + safe-event-emitter "^1.0.1" + +json-rpc-engine@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-6.1.0.tgz#bf5ff7d029e1c1bf20cb6c0e9f348dcd8be5a393" + integrity sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ== + dependencies: + "@metamask/safe-event-emitter" "^2.0.0" + eth-rpc-errors "^4.0.2" + json-rpc-error@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/json-rpc-error/-/json-rpc-error-2.0.0.tgz#a7af9c202838b5e905c7250e547f1aff77258a02" @@ -15879,7 +16211,7 @@ json-rpc-error@^2.0.0: dependencies: inherits "^2.0.1" -json-rpc-random-id@^1.0.0: +json-rpc-random-id@^1.0.0, json-rpc-random-id@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz#ba49d96aded1444dbb8da3d203748acbbcdec8c8" integrity sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA== @@ -16113,6 +16445,11 @@ keyv@^4.0.0: dependencies: json-buffer "3.0.1" +keyvaluestorage-interface@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz#13ebdf71f5284ad54be94bd1ad9ed79adad515ff" + integrity sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g== + killable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" @@ -18350,6 +18687,13 @@ node-fetch@2.6.7, node-fetch@^2.6.1, node-fetch@^2.6.7: dependencies: whatwg-url "^5.0.0" +node-fetch@^2.6.0: + version "2.6.9" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" + integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg== + dependencies: + whatwg-url "^5.0.0" + node-fetch@~1.7.1: version "1.7.3" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" @@ -19807,6 +20151,11 @@ pn@^1.1.0: resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== +pngjs@^3.3.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" + integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== + pnp-webpack-plugin@1.6.4: version "1.6.4" resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" @@ -20499,6 +20848,11 @@ postinstall-postinstall@^2.1.0: resolved "https://registry.yarnpkg.com/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz#4f7f77441ef539d1512c40bd04c71b06a4704ca3" integrity sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ== +preact@10.4.1: + version "10.4.1" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.4.1.tgz#9b3ba020547673a231c6cf16f0fbaef0e8863431" + integrity sha512-WKrRpCSwL2t3tpOOGhf2WfTpcmbpxaWtDbdJdKdjd0aEiTkvOmS4NBkG6kzlaAHI9AkQ3iVqbFWM3Ei7mZ4o1Q== + prebuild-install@^5.3.4: version "5.3.6" resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-5.3.6.tgz#7c225568d864c71d89d07f8796042733a3f54291" @@ -20883,6 +21237,19 @@ q@^1.1.2, q@^1.5.1: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== +qrcode@1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.4.4.tgz#f0c43568a7e7510a55efc3b88d9602f71963ea83" + integrity sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q== + dependencies: + buffer "^5.4.3" + buffer-alloc "^1.2.0" + buffer-from "^1.1.1" + dijkstrajs "^1.0.1" + isarray "^2.0.1" + pngjs "^3.3.0" + yargs "^13.2.4" + qs@6.11.0, qs@^6.10.5, qs@^6.11.0, qs@^6.4.0, qs@^6.7.0, qs@^6.9.4: version "6.11.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" @@ -20903,6 +21270,15 @@ query-ast@^1.0.3: invariant "2.2.4" lodash "^4.17.21" +query-string@6.13.5: + version "6.13.5" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.13.5.tgz#99e95e2fb7021db90a6f373f990c0c814b3812d8" + integrity sha512-svk3xg9qHR39P3JlHuD7g3nRnyay5mHbrPctEBDUxUkHRifPHXJDhBUycdCC0NBjXoDf44Gb+IsOZL1Uwn8M/Q== + dependencies: + decode-uri-component "^0.2.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" + query-string@^4.1.0: version "4.3.4" resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" @@ -24519,15 +24895,20 @@ tsconfig-paths@^3.14.1, tsconfig-paths@^3.5.0: minimist "^1.2.6" strip-bom "^3.0.0" +tslib@1.14.1, tslib@^1.13.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + tslib@2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== -tslib@^1.13.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@^2.0.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1: version "2.4.1" @@ -24727,7 +25108,7 @@ typed-array-length@^1.0.4: for-each "^0.3.3" is-typed-array "^1.1.9" -typedarray-to-buffer@^3.1.5: +typedarray-to-buffer@3.1.5, typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== @@ -25175,7 +25556,7 @@ util@^0.11.0: dependencies: inherits "2.0.3" -util@^0.12.0: +util@^0.12.0, util@^0.12.5: version "0.12.5" resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== @@ -25406,6 +25787,15 @@ web3-bzz@1.8.1: got "12.1.0" swarm-js "^0.1.40" +web3-bzz@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.8.2.tgz#67ea1c775874056250eece551ded22905ed08784" + integrity sha512-1EEnxjPnFnvNWw3XeeKuTR8PBxYd0+XWzvaLK7OJC/Go9O8llLGxrxICbKV+8cgIE0sDRBxiYx02X+6OhoAQ9w== + dependencies: + "@types/node" "^12.12.6" + got "12.1.0" + swarm-js "^0.1.40" + web3-core-helpers@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.11.tgz#84c681ed0b942c0203f3b324a245a127e8c67a99" @@ -25431,6 +25821,14 @@ web3-core-helpers@1.8.1: web3-eth-iban "1.8.1" web3-utils "1.8.1" +web3-core-helpers@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz#82066560f8085e6c7b93bcc8e88b441289ea9f9f" + integrity sha512-6B1eLlq9JFrfealZBomd1fmlq1o4A09vrCVQSa51ANoib/jllT3atZrRDr0zt1rfI7TSZTZBXdN/aTdeN99DWw== + dependencies: + web3-eth-iban "1.8.2" + web3-utils "1.8.2" + web3-core-method@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.11.tgz#f880137d1507a0124912bf052534f168b8d8fbb6" @@ -25465,6 +25863,17 @@ web3-core-method@1.8.1: web3-core-subscriptions "1.8.1" web3-utils "1.8.1" +web3-core-method@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.8.2.tgz#ba5ec68084e903f0516415010477618be017eac2" + integrity sha512-1qnr5mw5wVyULzLOrk4B+ryO3gfGjGd/fx8NR+J2xCGLf1e6OSjxT9vbfuQ3fErk/NjSTWWreieYWLMhaogcRA== + dependencies: + "@ethersproject/transactions" "^5.6.2" + web3-core-helpers "1.8.2" + web3-core-promievent "1.8.2" + web3-core-subscriptions "1.8.2" + web3-utils "1.8.2" + web3-core-promievent@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.11.tgz#51fe97ca0ddec2f99bf8c3306a7a8e4b094ea3cf" @@ -25486,6 +25895,13 @@ web3-core-promievent@1.8.1: dependencies: eventemitter3 "4.0.4" +web3-core-promievent@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.8.2.tgz#e670d6b4453632e6ecfd9ad82da44f77ac1585c9" + integrity sha512-nvkJWDVgoOSsolJldN33tKW6bKKRJX3MCPDYMwP5SUFOA/mCzDEoI88N0JFofDTXkh1k7gOqp1pvwi9heuaxGg== + dependencies: + eventemitter3 "4.0.4" + web3-core-requestmanager@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.11.tgz#fe6eb603fbaee18530293a91f8cf26d8ae28c45a" @@ -25519,6 +25935,17 @@ web3-core-requestmanager@1.8.1: web3-providers-ipc "1.8.1" web3-providers-ws "1.8.1" +web3-core-requestmanager@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.8.2.tgz#dda95e83ca4808949612a41e54ecea557f78ef26" + integrity sha512-p1d090RYs5Mu7DK1yyc3GCBVZB/03rBtFhYFoS2EruGzOWs/5Q0grgtpwS/DScdRAm8wB8mYEBhY/RKJWF6B2g== + dependencies: + util "^0.12.5" + web3-core-helpers "1.8.2" + web3-providers-http "1.8.2" + web3-providers-ipc "1.8.2" + web3-providers-ws "1.8.2" + web3-core-subscriptions@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.11.tgz#beca908fbfcb050c16f45f3f0f4c205e8505accd" @@ -25544,6 +25971,14 @@ web3-core-subscriptions@1.8.1: eventemitter3 "4.0.4" web3-core-helpers "1.8.1" +web3-core-subscriptions@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.8.2.tgz#0c8bd49439d83c6f0a03c70f00b24a915a70a5ed" + integrity sha512-vXQogHDmAIQcKpXvGiMddBUeP9lnKgYF64+yQJhPNE5PnWr1sAibXuIPV7mIPihpFr/n/DORRj6Wh1pUv9zaTw== + dependencies: + eventemitter3 "4.0.4" + web3-core-helpers "1.8.2" + web3-core@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.11.tgz#1043cacc1becb80638453cc5b2a14be9050288a7" @@ -25583,6 +26018,19 @@ web3-core@1.8.1: web3-core-requestmanager "1.8.1" web3-utils "1.8.1" +web3-core@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.8.2.tgz#333e93d7872b1a36efe758ed8b89a7acbdd962c2" + integrity sha512-DJTVEAYcNqxkqruJE+Rxp3CIv0y5AZMwPHQmOkz/cz+MM75SIzMTc0AUdXzGyTS8xMF8h3YWMQGgGEy8SBf1PQ== + dependencies: + "@types/bn.js" "^5.1.0" + "@types/node" "^12.12.6" + bignumber.js "^9.0.0" + web3-core-helpers "1.8.2" + web3-core-method "1.8.2" + web3-core-requestmanager "1.8.2" + web3-utils "1.8.2" + web3-eth-abi@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.11.tgz#a887494e5d447c2926d557a3834edd66e17af9b0" @@ -25608,6 +26056,14 @@ web3-eth-abi@1.8.1, web3-eth-abi@^1.6.1: "@ethersproject/abi" "^5.6.3" web3-utils "1.8.1" +web3-eth-abi@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.8.2.tgz#16e1e9be40e2527404f041a4745111211488f31a" + integrity sha512-Om9g3kaRNjqiNPAgKwGT16y+ZwtBzRe4ZJFGjLiSs6v5I7TPNF+rRMWuKnR6jq0azQZDj6rblvKFMA49/k48Og== + dependencies: + "@ethersproject/abi" "^5.6.3" + web3-utils "1.8.2" + web3-eth-accounts@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.11.tgz#a9e3044da442d31903a7ce035a86d8fa33f90520" @@ -25659,6 +26115,22 @@ web3-eth-accounts@1.8.1: web3-core-method "1.8.1" web3-utils "1.8.1" +web3-eth-accounts@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.8.2.tgz#b894f5d5158fcae429da42de75d96520d0712971" + integrity sha512-c367Ij63VCz9YdyjiHHWLFtN85l6QghgwMQH2B1eM/p9Y5lTlTX7t/Eg/8+f1yoIStXbk2w/PYM2lk+IkbqdLA== + dependencies: + "@ethereumjs/common" "2.5.0" + "@ethereumjs/tx" "3.3.2" + eth-lib "0.2.8" + ethereumjs-util "^7.1.5" + scrypt-js "^3.0.1" + uuid "^9.0.0" + web3-core "1.8.2" + web3-core-helpers "1.8.2" + web3-core-method "1.8.2" + web3-utils "1.8.2" + web3-eth-contract@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.11.tgz#917065902bc27ce89da9a1da26e62ef663663b90" @@ -25702,6 +26174,20 @@ web3-eth-contract@1.8.1: web3-eth-abi "1.8.1" web3-utils "1.8.1" +web3-eth-contract@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.8.2.tgz#5388b7130923d2b790c09a420391a81312a867fb" + integrity sha512-ID5A25tHTSBNwOPjiXSVzxruz006ULRIDbzWTYIFTp7NJ7vXu/kynKK2ag/ObuTqBpMbobP8nXcA9b5EDkIdQA== + dependencies: + "@types/bn.js" "^5.1.0" + web3-core "1.8.2" + web3-core-helpers "1.8.2" + web3-core-method "1.8.2" + web3-core-promievent "1.8.2" + web3-core-subscriptions "1.8.2" + web3-eth-abi "1.8.2" + web3-utils "1.8.2" + web3-eth-ens@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.11.tgz#26d4d7f16d6cbcfff918e39832b939edc3162532" @@ -25745,6 +26231,20 @@ web3-eth-ens@1.8.1: web3-eth-contract "1.8.1" web3-utils "1.8.1" +web3-eth-ens@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.8.2.tgz#0a086ad4d919102e28b9fd3036df246add9df22a" + integrity sha512-PWph7C/CnqdWuu1+SH4U4zdrK4t2HNt0I4XzPYFdv9ugE8EuojselioPQXsVGvjql+Nt3jDLvQvggPqlMbvwRw== + dependencies: + content-hash "^2.5.2" + eth-ens-namehash "2.0.8" + web3-core "1.8.2" + web3-core-helpers "1.8.2" + web3-core-promievent "1.8.2" + web3-eth-abi "1.8.2" + web3-eth-contract "1.8.2" + web3-utils "1.8.2" + web3-eth-iban@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.11.tgz#f5f73298305bc7392e2f188bf38a7362b42144ef" @@ -25769,6 +26269,14 @@ web3-eth-iban@1.8.1: bn.js "^5.2.1" web3-utils "1.8.1" +web3-eth-iban@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz#5cb3022234b13986f086353b53f0379a881feeaf" + integrity sha512-h3vNblDWkWMuYx93Q27TAJz6lhzpP93EiC3+45D6xoz983p6si773vntoQ+H+5aZhwglBtoiBzdh7PSSOnP/xQ== + dependencies: + bn.js "^5.2.1" + web3-utils "1.8.2" + web3-eth-personal@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.11.tgz#a38b3942a1d87a62070ce0622a941553c3d5aa70" @@ -25805,6 +26313,18 @@ web3-eth-personal@1.8.1: web3-net "1.8.1" web3-utils "1.8.1" +web3-eth-personal@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.8.2.tgz#3526c1ebaa4e7bf3a0a8ec77e34f067cc9a750b2" + integrity sha512-Vg4HfwCr7doiUF/RC+Jz0wT4+cYaXcOWMAW2AHIjHX6Z7Xwa8nrURIeQgeEE62qcEHAzajyAdB1u6bJyTfuCXw== + dependencies: + "@types/node" "^12.12.6" + web3-core "1.8.2" + web3-core-helpers "1.8.2" + web3-core-method "1.8.2" + web3-net "1.8.2" + web3-utils "1.8.2" + web3-eth@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.11.tgz#4c81fcb6285b8caf544058fba3ae802968fdc793" @@ -25860,6 +26380,24 @@ web3-eth@1.8.1: web3-net "1.8.1" web3-utils "1.8.1" +web3-eth@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.8.2.tgz#8562287ae1803c30eb54dc7d832092e5739ce06a" + integrity sha512-JoTiWWc4F4TInpbvDUGb0WgDYJsFhuIjJlinc5ByjWD88Gvh+GKLsRjjFdbqe5YtwIGT4NymwoC5LQd1K6u/QQ== + dependencies: + web3-core "1.8.2" + web3-core-helpers "1.8.2" + web3-core-method "1.8.2" + web3-core-subscriptions "1.8.2" + web3-eth-abi "1.8.2" + web3-eth-accounts "1.8.2" + web3-eth-contract "1.8.2" + web3-eth-ens "1.8.2" + web3-eth-iban "1.8.2" + web3-eth-personal "1.8.2" + web3-net "1.8.2" + web3-utils "1.8.2" + web3-net@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.11.tgz#eda68ef25e5cdb64c96c39085cdb74669aabbe1b" @@ -25887,6 +26425,15 @@ web3-net@1.8.1: web3-core-method "1.8.1" web3-utils "1.8.1" +web3-net@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.8.2.tgz#97e1e0015fabc4cda31017813e98d0b5468dd04f" + integrity sha512-1itkDMGmbgb83Dg9nporFes9/fxsU7smJ3oRXlFkg4ZHn8YJyP1MSQFPJWWwSc+GrcCFt4O5IrUTvEkHqE3xag== + dependencies: + web3-core "1.8.2" + web3-core-method "1.8.2" + web3-utils "1.8.2" + web3-provider-engine@14.2.1: version "14.2.1" resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-14.2.1.tgz#ef351578797bf170e08d529cb5b02f8751329b95" @@ -25913,6 +26460,34 @@ web3-provider-engine@14.2.1: xhr "^2.2.0" xtend "^4.0.1" +web3-provider-engine@16.0.1: + version "16.0.1" + resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-16.0.1.tgz#2600a39ede364cdc0a1fc773bf40a94f2177e605" + integrity sha512-/Eglt2aocXMBiDj7Se/lyZnNDaHBaoJlaUfbP5HkLJQC/HlGbR+3/W+dINirlJDhh7b54DzgykqY7ksaU5QgTg== + dependencies: + async "^2.5.0" + backoff "^2.5.0" + clone "^2.0.0" + cross-fetch "^2.1.0" + eth-block-tracker "^4.4.2" + eth-json-rpc-filters "^4.2.1" + eth-json-rpc-infura "^5.1.0" + eth-json-rpc-middleware "^6.0.0" + eth-rpc-errors "^3.0.0" + eth-sig-util "^1.4.2" + ethereumjs-block "^1.2.2" + ethereumjs-tx "^1.2.0" + ethereumjs-util "^5.1.5" + ethereumjs-vm "^2.3.4" + json-stable-stringify "^1.0.1" + promise-to-callback "^1.0.0" + readable-stream "^2.2.9" + request "^2.85.0" + semaphore "^1.0.3" + ws "^5.1.1" + xhr "^2.2.0" + xtend "^4.0.1" + web3-providers-http@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.11.tgz#1cd03442c61670572d40e4dcdf1faff8bd91e7c6" @@ -25939,6 +26514,16 @@ web3-providers-http@1.8.1: es6-promise "^4.2.8" web3-core-helpers "1.8.1" +web3-providers-http@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.8.2.tgz#fbda3a3bbc8db004af36e91bec35f80273b37885" + integrity sha512-2xY94IIEQd16+b+vIBF4IC1p7GVaz9q4EUFscvMUjtEq4ru4Atdzjs9GP+jmcoo49p70II0UV3bqQcz0TQfVyQ== + dependencies: + abortcontroller-polyfill "^1.7.3" + cross-fetch "^3.1.4" + es6-promise "^4.2.8" + web3-core-helpers "1.8.2" + web3-providers-ipc@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.11.tgz#d16d6c9be1be6e0b4f4536c4acc16b0f4f27ef21" @@ -25964,6 +26549,14 @@ web3-providers-ipc@1.8.1: oboe "2.1.5" web3-core-helpers "1.8.1" +web3-providers-ipc@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.8.2.tgz#e52a7250f40c83b99a2482ec5b4cf2728377ae5c" + integrity sha512-p6fqKVGFg+WiXGHWnB1hu43PbvPkDHTz4RgoEzbXugv5rtv5zfYLqm8Ba6lrJOS5ks9kGKR21a0y3NzE3u7V4w== + dependencies: + oboe "2.1.5" + web3-core-helpers "1.8.2" + web3-providers-ws@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.11.tgz#a1dfd6d9778d840561d9ec13dd453046451a96bb" @@ -25992,6 +26585,15 @@ web3-providers-ws@1.8.1: web3-core-helpers "1.8.1" websocket "^1.0.32" +web3-providers-ws@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.8.2.tgz#56a2b701387011aca9154ca4bc06ea4b5f27e4ef" + integrity sha512-3s/4K+wHgbiN+Zrp9YjMq2eqAF6QGABw7wFftPdx+m5hWImV27/MoIx57c6HffNRqZXmCHnfWWFCNHHsi7wXnA== + dependencies: + eventemitter3 "4.0.4" + web3-core-helpers "1.8.2" + websocket "^1.0.32" + web3-shh@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.11.tgz#f5d086f9621c9a47e98d438010385b5f059fd88f" @@ -26022,6 +26624,16 @@ web3-shh@1.8.1: web3-core-subscriptions "1.8.1" web3-net "1.8.1" +web3-shh@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.8.2.tgz#217a417f0d6e243dd4d441848ffc2bd164cea8a0" + integrity sha512-uZ+3MAoNcaJsXXNCDnizKJ5viBNeHOFYsCbFhV755Uu52FswzTOw6DtE7yK9nYXMtIhiSgi7nwl1RYzP8pystw== + dependencies: + web3-core "1.8.2" + web3-core-method "1.8.2" + web3-core-subscriptions "1.8.2" + web3-net "1.8.2" + web3-utils@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.11.tgz#af1942aead3fb166ae851a985bed8ef2c2d95a82" @@ -26062,6 +26674,19 @@ web3-utils@1.8.1, web3-utils@^1.0.0-beta.31, web3-utils@^1.2.5, web3-utils@^1.3. randombytes "^2.1.0" utf8 "3.0.0" +web3-utils@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.8.2.tgz#c32dec5e9b955acbab220eefd7715bc540b75cc9" + integrity sha512-v7j6xhfLQfY7xQDrUP0BKbaNrmZ2/+egbqP9q3KYmOiPpnvAfol+32slgL0WX/5n8VPvKCK5EZ1HGrAVICSToA== + dependencies: + bn.js "^5.2.1" + ethereum-bloom-filters "^1.0.6" + ethereumjs-util "^7.1.0" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + utf8 "3.0.0" + web3@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.11.tgz#50f458b2e8b11aa37302071c170ed61cff332975" @@ -26101,6 +26726,19 @@ web3@1.8.1, web3@^1.2.5, web3@^1.6.1: web3-shh "1.8.1" web3-utils "1.8.1" +web3@^1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.8.2.tgz#95a4e5398fd0f01325264bf8e5e8cdc69a7afe86" + integrity sha512-92h0GdEHW9wqDICQQKyG4foZBYi0OQkyg4CRml2F7XBl/NG+fu9o6J19kzfFXzSBoA4DnJXbyRgj/RHZv5LRiw== + dependencies: + web3-bzz "1.8.2" + web3-core "1.8.2" + web3-eth "1.8.2" + web3-eth-personal "1.8.2" + web3-net "1.8.2" + web3-shh "1.8.2" + web3-utils "1.8.2" + webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" @@ -26766,6 +27404,11 @@ ws@7.4.6: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== +ws@7.5.3: + version "7.5.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74" + integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg== + ws@^3.0.0: version "3.3.3" resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" @@ -26968,7 +27611,7 @@ yargs-unparser@2.0.0: flat "^5.0.2" is-plain-obj "^2.1.0" -yargs@13.3.2, yargs@^13.3.0, yargs@^13.3.2: +yargs@13.3.2, yargs@^13.2.4, yargs@^13.3.0, yargs@^13.3.2: version "13.3.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==