1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-23 09:52:26 +01:00

Merge pull request #8927 from MetaMask/Version-v8.0.3

Version v8.0.3 RC
This commit is contained in:
Mark Stacey 2020-07-06 17:12:14 -03:00 committed by GitHub
commit dd6dd9f284
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 281 additions and 54 deletions

View File

@ -2,6 +2,12 @@
## Current Develop Branch
## 8.0.3 Mon Jul 06 2020
- [#8921](https://github.com/MetaMask/metamask-extension/pull/8921): Restore missing 'data' provider event, and fix 'notification' event
- [#8923](https://github.com/MetaMask/metamask-extension/pull/8923): Normalize the 'from' parameter for `eth_sendTransaction`
- [#8924](https://github.com/MetaMask/metamask-extension/pull/8924): Fix handling of multiple `eth_requestAccount` messages from the same domain
- [#8917](https://github.com/MetaMask/metamask-extension/pull/8917): Update Italian translations
## 8.0.2 Fri Jul 03 2020
- [#8907](https://github.com/MetaMask/metamask-extension/pull/8907): Tolerate missing or falsey substitutions
- [#8908](https://github.com/MetaMask/metamask-extension/pull/8908): Fix activity log inline buttons

View File

@ -1,4 +1,69 @@
{
"acceptTermsOfUse": {
"message": "Ho letto e accetto i $1",
"description": "$1 is the `terms` message"
},
"eth_accounts": {
"message": "Accesso agli indirizzi dei tuoi account autorizzati (richiesto)",
"description": "The description for the `eth_accounts` permission"
},
"connectedSites": {
"message": "Siti connessi"
},
"connectedSitesDescription": {
"message": "$1 è connesso a questi siti che hanno accesso all'indirizzo del tuo account.",
"description": "$1 is the account name"
},
"connectedSitesEmptyDescription": {
"message": "$1 non è connesso ad alcun sito.",
"description": "$1 is the account name"
},
"connectedAccountsDescriptionSingular": {
"message": "Hai un account connesso a questo sito."
},
"connectedAccountsDescriptionPlural": {
"message": "Hai $1 account connessi a questo sito.",
"description": "$1 is the number of accounts"
},
"connectedAccountsEmptyDescription": {
"message": "MetaMask non è connesso a questo sito. Per connetterti ad un sito web3, trova il pulsante di connessione."
},
"currentAccountNotConnected": {
"message": "Il tuo account corrente non è connesso"
},
"switchToThisAccount": {
"message": " Passa a questo account"
},
"disconnectThisAccount": {
"message": "Disconnetti questo account"
},
"permissions": {
"message": "Permessi"
},
"showPermissions": {
"message": "Mostra permessi"
},
"authorizedPermissions": {
"message": "Hai autorizzato i seguenti permessi"
},
"connectManually": {
"message": "Connettiti al sito manualmente"
},
"disconnect": {
"message": "Disconnetti"
},
"disconnectAllAccounts": {
"message": "Disconnetti tutti gli account"
},
"disconnectPrompt": {
"message": "Disconnetti $1"
},
"disconnectAllAccountsConfirmationDescription": {
"message": "Sicuro di volerti disconnettere? Il sito potrebbe non funzionare correttamente."
},
"dismiss": {
"message": "Ignora"
},
"showIncomingTransactions": {
"message": "Mostra Transazioni in Ingresso"
},
@ -8,13 +73,32 @@
"chartOnlyAvailableEth": {
"message": "Grafico disponibile solo per le reti Ethereum."
},
"connectedSites": {
"message": "Siti connessi"
"connecting": {
"message": "Connessione..."
},
"connectWithMetaMask": {
"message": "Connetti con MetaMask"
},
"connectTo": {
"message": "Collegati a $1",
"message": "Connettiti a $1",
"description": "$1 is the name/origin of a site/dapp that the user can connect to metamask"
},
"connectToAll": {
"message": "Connettiti a tutti i tuoi $1",
"description": "$1 will be replaced by the translation of connectToAllAccounts"
},
"connectToAllAccounts": {
"message": "account",
"description": "will replace $1 in connectToAll, completing the sentence 'connect to all of your accounts', will be text that shows list of accounts on hover"
},
"connectToMultiple": {
"message": "Connettiti a $1",
"description": "$1 will be replaced by the translation of connectToMultipleNumberOfAccounts"
},
"connectToMultipleNumberOfAccounts": {
"message": "$1 account",
"description": "$1 is the number of accounts to which the web3 site/application is asking to connect; this will substitute $1 in connectToMultiple"
},
"contractInteraction": {
"message": "Interazione Contratto"
},
@ -52,6 +136,12 @@
"accountSelectionRequired": {
"message": "Devi selezionare un account!"
},
"active": {
"message": "Attivo"
},
"activity": {
"message": "Attività"
},
"activityLog": {
"message": "log attività"
},
@ -91,10 +181,28 @@
"addAcquiredTokens": {
"message": "Aggiungi i token che hai acquistato usando MetaMask"
},
"alerts": {
"message": "Avvisi"
},
"alertsSettingsDescription": {
"message": "Attiva o disattiva ogni avviso"
},
"alertSettingsUnconnectedAccount": {
"message": "Navigazione su un sito con un account non connesso"
},
"alertSettingsUnconnectedAccountDescription": {
"message": "Questo avviso è mostrato nel popup quando stai visitando un sito Web3, ma l'account selezionato non è connesso al sito."
},
"allowOriginSpendToken": {
"message": "Vuoi consentire a $1 di spendere $2?",
"description": "$1 is the url of the site and $2 is the symbol of the token they are requesting to spend"
},
"allowThisSiteTo": {
"message": "Permetti a questo sito di:"
},
"allowExternalExtensionTo": {
"message": "Permetti a questa estensione di:"
},
"allowWithdrawAndSpend": {
"message": "Consenti a $1 di ritirare e spendere fino a questo importo:",
"description": "The url of the site that requested permission to 'withdraw and spend'"
@ -122,6 +230,9 @@
"asset": {
"message": "Asset"
},
"assets": {
"message": "Patrimonio"
},
"attemptingConnect": {
"message": "Tentativo di connessione alla blockchain."
},
@ -258,6 +369,9 @@
"congratulations": {
"message": "Congratulazioni"
},
"connectAccountOrCreate": {
"message": "Connetti un account o creane uno nuovo"
},
"connectHardwareWallet": {
"message": "Connetti Portafoglio Hardware"
},
@ -333,6 +447,9 @@
"currencyConversion": {
"message": "Conversione Moneta"
},
"currentExtension": {
"message": "Pagina estensione corrente"
},
"currentLanguage": {
"message": "Lingua Corrente"
},
@ -387,6 +504,9 @@
"done": {
"message": "Finito"
},
"dontShowThisAgain": {
"message": "Non mostrare di nuovo"
},
"downloadGoogleChrome": {
"message": "Scarica Google Chrome"
},
@ -519,6 +639,9 @@
"failed": {
"message": "Fallita"
},
"failureMessage": {
"message": "Qualcosa è andato storto e non è possibile completare l'azione"
},
"fast": {
"message": "Veloce"
},
@ -542,6 +665,10 @@
"from": {
"message": "Da"
},
"fromAddress": {
"message": "Da: $1",
"description": "$1 is the address to include in the From label. It is typically shortened first using shortenAddress"
},
"functionApprove": {
"message": "Funzione: Approve"
},
@ -627,6 +754,10 @@
"hide": {
"message": "Nascondi"
},
"hideTokenSymbol": {
"message": "Nascondi $1",
"description": "$1 is the symbol for a token (e.g. 'DAI')"
},
"hideTokenPrompt": {
"message": "Nascondi Token?"
},
@ -777,6 +908,15 @@
"message": {
"message": "Messaggio"
},
"metaMaskConnectStatusParagraphOne": {
"message": "Ora hai piu controllo sulle connessioni del tuo account in MetaMask."
},
"metaMaskConnectStatusParagraphTwo": {
"message": "Il bottone di stato della connessione mostra se il sito che stai visitando è connesso all'account corrente"
},
"metaMaskConnectStatusParagraphThree": {
"message": "Clicca per gestire i tuo account connessi."
},
"metamaskDescription": {
"message": "MetaMask è una cassaforte sicura per identità su Ethereum."
},
@ -863,6 +1003,9 @@
"onlyConnectTrust": {
"message": "Connettiti solo con siti di cui ti fidi."
},
"onlyAddTrustedNetworks": {
"message": "Una rete Ethereum malevola può mentire sullo stato della blockchain e registrare le tue azioni. Aggiungi solo reti fidate."
},
"optionalChainId": {
"message": "ChainID (opzionale)"
},
@ -894,6 +1037,9 @@
"noThanks": {
"message": "No Grazie"
},
"notCurrentAccount": {
"message": "È questo l'account corretto? È diverso dall'account selezionato nel tuo portafoglio"
},
"notEnoughGas": {
"message": "Gas Non Sufficiente"
},
@ -937,9 +1083,19 @@
"pending": {
"message": "in corso"
},
"permissionCheckedIconDescription": {
"message": "Hai approvato questo permesso"
},
"permissionUncheckedIconDescription": {
"message": "Non hai approvato questo permesso"
},
"personalAddressDetected": {
"message": "Rilevato indirizzo personale. Inserisci l'indirizzo del contratto del token."
},
"plusXMore": {
"message": "+ $1 elementi",
"description": "$1 is a number of additional but unshown items in a list- this message will be shown in place of those items"
},
"prev": {
"message": "Precedente"
},
@ -968,12 +1124,18 @@
"queue": {
"message": "Coda"
},
"queued": {
"message": "In coda"
},
"readdToken": {
"message": "Puoi aggiungere nuovamente questo token in futuro andando in “Aggiungi token” nel menu delle opzioni del tuo account."
},
"recents": {
"message": "Recenti"
},
"receive": {
"message": "Ricevi"
},
"recipientAddress": {
"message": "Indirizzo Destinatario"
},
@ -1110,9 +1272,24 @@
"seedPhrasePlaceholder": {
"message": "Separa ogni parola con un singolo spazio"
},
"seedPhrasePlaceholderPaste": {
"message": "Incolla frase seed dagli appunti"
},
"showSeedPhrase": {
"message": "Mostra frase seed"
},
"seedPhraseReq": {
"message": "le frasi seed sono lunghe 12 parole"
},
"selectingAllWillAllow": {
"message": "Selezionare tutto consentirà al sito di avere accesso a tutti i tuoi account. Assicurati di fidarti del sito."
},
"selectAccounts": {
"message": "Seleziona account"
},
"selectAll": {
"message": "Seleziona tutti"
},
"selectCurrency": {
"message": "Seleziona Moneta"
},
@ -1125,6 +1302,9 @@
"selectType": {
"message": "Seleziona Tipo"
},
"buy": {
"message": "Compra"
},
"send": {
"message": "Invia"
},
@ -1143,6 +1323,10 @@
"sentTokens": {
"message": "tokens inviati"
},
"sendSpecifiedTokens": {
"message": "Invia $1",
"description": "Symbol of the specified token"
},
"separateEachWord": {
"message": "Separa ogni parola con un solo spazio"
},
@ -1252,6 +1436,12 @@
"stateLogError": {
"message": "Errore nel recupero dei log di stato."
},
"statusConnected": {
"message": "Connesso"
},
"statusNotConnected": {
"message": "Non connesso"
},
"step1HardwareWallet": {
"message": "1. Connetti Portafoglio Hardware"
},
@ -1333,6 +1523,10 @@
"to": {
"message": "A"
},
"toAddress": {
"message": "A: $1",
"description": "$1 is the address to include in the To label. It is typically shortened first using shortenAddress"
},
"toWithColon": {
"message": "To:"
},
@ -1345,6 +1539,9 @@
"tokenContractAddress": {
"message": "Indirizzo Contratto Token"
},
"tokenOptions": {
"message": "Opzioni token"
},
"tokenSymbol": {
"message": "Simbolo Token"
},
@ -1393,6 +1590,9 @@
"transactionTime": {
"message": "Tempo Conferma Transazione"
},
"showTransactionTimeDescription": {
"message": "Seleziona per mostrare nella scheda attività una stima dei tempi di transazione per le transazioni in corso sulla rete Ethereum principale. Nota: la stima è approssimativa basata sulle condizioni della rete."
},
"transfer": {
"message": "Trasferisci"
},
@ -1419,6 +1619,9 @@
"unapproved": {
"message": "Non approvata"
},
"alertDisableTooltip": {
"message": "Può essere cambiato in \"Impostazioni > Avvisi\""
},
"units": {
"message": "unità"
},
@ -1497,9 +1700,16 @@
"welcome": {
"message": "Benvenuto nella Beta di MetaMask"
},
"whatsThis": {
"message": "Cos'è?"
},
"writePhrase": {
"message": "Scrivi questa frase su un foglio di carta e conservala in un posto sicuro. Se vuoi ancora più sicurezza, scrivila su più fogli e conserva ognuno in 2 o 3 posti diversi. "
},
"xOfY": {
"message": "$1 di $2",
"description": "$1 and $2 are intended to be two numbers, where $2 is a total, and $1 is a count towards that total"
},
"yesLetsTry": {
"message": "Si, proviamo"
},

View File

@ -1,7 +1,7 @@
{
"name": "__MSG_appName__",
"short_name": "__MSG_appName__",
"version": "8.0.2",
"version": "8.0.3",
"manifest_version": 2,
"author": "https://metamask.io",
"description": "__MSG_appDescription__",

View File

@ -8,6 +8,7 @@ import createBlockTrackerInspectorMiddleware from 'eth-json-rpc-middleware/block
import providerFromMiddleware from 'eth-json-rpc-middleware/providerFromMiddleware'
import createInfuraMiddleware from 'eth-json-rpc-infura'
import BlockTracker from 'eth-block-tracker'
import * as networkEnums from './enums'
export default function createInfuraClient ({ network }) {
const infuraMiddleware = createInfuraMiddleware({ network, maxAttempts: 5, source: 'metamask' })
@ -32,23 +33,23 @@ function createNetworkAndChainIdMiddleware ({ network }) {
switch (network) {
case 'mainnet':
netId = '1'
netId = networkEnums.MAINNET_NETWORK_ID.toString()
chainId = '0x01'
break
case 'ropsten':
netId = '3'
netId = networkEnums.ROPSTEN_NETWORK_ID.toString()
chainId = '0x03'
break
case 'rinkeby':
netId = '4'
netId = networkEnums.RINKEBY_NETWORK_ID.toString()
chainId = '0x04'
break
case 'kovan':
netId = '42'
chainId = '0x2a'
netId = networkEnums.KOVAN_NETWORK_ID.toString()
chainId = networkEnums.KOVAN_CHAIN_ID
break
case 'goerli':
netId = '5'
netId = networkEnums.GOERLI_NETWORK_ID.toString()
chainId = '0x05'
break
default:

View File

@ -110,12 +110,12 @@ export class PermissionsController {
/**
* Request {@code eth_accounts} permissions
* @param {string} origin - The origin
* @returns {Promise<string>} the request ID
* @param {string} origin - The requesting origin
* @returns {Promise<string>} The permissions request ID
*/
async requestAccountsPermission (origin) {
async requestAccountsPermissionWithId (origin) {
const id = nanoid()
this._requestPermissions({ origin, id }, { eth_accounts: {} })
this._requestPermissions({ origin }, { eth_accounts: {} }, id)
return id
}
@ -168,18 +168,26 @@ export class PermissionsController {
/**
* Submits a permissions request to rpc-cap. Internal, background use only.
*
* @param {IOriginMetadata} metadata - The origin metadata.
* @param {IOriginMetadata} domain - The external domain metadata.
* @param {IRequestedPermissions} permissions - The requested permissions.
* @param {string} [id] - The desired id of the permissions request, if any.
* @returns {Promise<IOcapLdCapability[]>} A Promise that resolves with the
* approved permissions, or rejects with an error.
*/
_requestPermissions (metadata, permissions) {
_requestPermissions (domain, permissions, id) {
return new Promise((resolve, reject) => {
// rpc-cap assigns an id to the request if there is none, as expected by
// requestUserApproval below
const req = { method: 'wallet_requestPermissions', params: [permissions] }
const req = {
id,
method: 'wallet_requestPermissions',
params: [permissions],
}
const res = {}
this.permissions.providerMiddlewareFunction(
metadata, req, res, () => {}, _end
domain, req, res, () => {}, _end
)
function _end (_err) {
@ -716,7 +724,7 @@ export class PermissionsController {
* @param {string} req - The internal rpc-cap user request object.
*/
requestUserApproval: async (req) => {
const { origin, metadata: { id } } = req
const { metadata: { id, origin } } = req
if (this.pendingApprovalOrigins.has(origin)) {
throw ethErrors.rpc.resourceUnavailable(

View File

@ -563,7 +563,7 @@ export default class MetamaskController extends EventEmitter {
removePermissionsFor: permissionsController.removePermissionsFor.bind(permissionsController),
addPermittedAccount: nodeify(permissionsController.addPermittedAccount, permissionsController),
removePermittedAccount: nodeify(permissionsController.removePermittedAccount, permissionsController),
requestAccountsPermission: nodeify(permissionsController.requestAccountsPermission, permissionsController),
requestAccountsPermissionWithId: nodeify(permissionsController.requestAccountsPermissionWithId, permissionsController),
}
}

View File

@ -78,7 +78,7 @@
"@metamask/eth-ledger-bridge-keyring": "^0.2.6",
"@metamask/eth-token-tracker": "^2.0.0",
"@metamask/etherscan-link": "^1.1.0",
"@metamask/inpage-provider": "^5.2.1",
"@metamask/inpage-provider": "^6.0.0",
"@popperjs/core": "^2.4.0",
"@reduxjs/toolkit": "^1.3.2",
"@sentry/browser": "^5.11.1",
@ -106,7 +106,7 @@
"eth-json-rpc-errors": "^2.0.2",
"eth-json-rpc-filters": "^4.1.1",
"eth-json-rpc-infura": "^4.0.2",
"eth-json-rpc-middleware": "^5.0.1",
"eth-json-rpc-middleware": "^5.0.2",
"eth-keyring-controller": "^6.0.1",
"eth-method-registry": "^1.2.0",
"eth-phishing-detect": "^1.1.4",
@ -168,7 +168,7 @@
"redux": "^4.0.5",
"redux-thunk": "^2.3.0",
"reselect": "^3.0.1",
"rpc-cap": "^2.1.0",
"rpc-cap": "^3.0.1",
"safe-event-emitter": "^1.0.1",
"safe-json-stringify": "^1.2.0",
"single-call-balance-checker-abi": "^1.0.0",
@ -189,7 +189,7 @@
"@babel/register": "^7.5.5",
"@metamask/eslint-config": "^1.1.0",
"@metamask/forwarder": "^1.1.0",
"@metamask/test-dapp": "^2.2.0",
"@metamask/test-dapp": "3.0.0",
"@sentry/cli": "^1.49.0",
"@storybook/addon-actions": "^5.3.14",
"@storybook/addon-backgrounds": "^5.3.14",

View File

@ -1526,12 +1526,13 @@ describe('permissions controller', function () {
permController = initPermController()
})
it('requestAccountsPermission calls _requestAccountsPermission with an explicit request ID', async function () {
it('requestAccountsPermissionWithId calls _requestAccountsPermission with an explicit request ID', async function () {
const _requestPermissions = sinon.stub(permController, '_requestPermissions').resolves()
await permController.requestAccountsPermission('example.com')
await permController.requestAccountsPermissionWithId('example.com')
assert.ok(_requestPermissions.calledOnceWithExactly(
sinon.match.object.and(sinon.match.has('origin')).and(sinon.match.has('id')),
sinon.match.object.and(sinon.match.has('origin')),
{ eth_accounts: {} },
sinon.match.string.and(sinon.match.truthy),
))
_requestPermissions.restore()
})

View File

@ -2,7 +2,7 @@ import { connect } from 'react-redux'
import ConnectedSites from './connected-sites.component'
import {
getOpenMetamaskTabsIds,
requestAccountsPermission,
requestAccountsPermissionWithId,
removePermissionsFor,
removePermittedAccount,
} from '../../store/actions'
@ -61,7 +61,7 @@ const mapDispatchToProps = (dispatch) => {
[domainKey]: permissionMethodNames,
}))
},
requestAccountsPermission: (origin) => dispatch(requestAccountsPermission(origin)),
requestAccountsPermissionWithId: (origin) => dispatch(requestAccountsPermissionWithId(origin)),
}
}
@ -76,7 +76,7 @@ const mergeProps = (stateProps, dispatchProps, ownProps) => {
const {
disconnectAccount,
disconnectAllAccounts,
requestAccountsPermission: dispatchRequestAccountsPermission,
requestAccountsPermissionWithId,
} = dispatchProps
const { history } = ownProps
@ -100,7 +100,7 @@ const mergeProps = (stateProps, dispatchProps, ownProps) => {
}
},
requestAccountsPermission: async () => {
const id = await dispatchRequestAccountsPermission(tabToConnect.origin)
const id = await requestAccountsPermissionWithId(tabToConnect.origin)
history.push(`${CONNECT_ROUTE}/${id}`)
},
}

View File

@ -26,7 +26,7 @@ export default class PermissionConnect extends Component {
addressLastConnectedMap: PropTypes.object.isRequired,
lastConnectedInfo: PropTypes.object.isRequired,
permissionsRequestId: PropTypes.string,
hasPendingPermissionsRequests: PropTypes.bool.isRequired,
hasAdditionalPermissionsRequests: PropTypes.bool.isRequired,
history: PropTypes.object.isRequired,
connectPath: PropTypes.string.isRequired,
confirmPermissionPath: PropTypes.string.isRequired,
@ -143,10 +143,10 @@ export default class PermissionConnect extends Component {
}
_doRedirect () {
const { history, hasPendingPermissionsRequests } = this.props
const { history, hasAdditionalPermissionsRequests } = this.props
if (
!hasPendingPermissionsRequests &&
!hasAdditionalPermissionsRequests &&
getEnvironmentType() === ENVIRONMENT_TYPE_NOTIFICATION
) {
global.platform.closeCurrentWindow()

View File

@ -34,7 +34,8 @@ const mapStateToProps = (state, ownProps) => {
const permissionsRequest = permissionsRequests
.find((permissionsRequest) => permissionsRequest.metadata.id === permissionsRequestId)
const hasPendingPermissionsRequests = permissionsRequest
// used to determine whether to redirect or show the next permissions request
const hasAdditionalPermissionsRequests = permissionsRequest
? permissionsRequests.length > 1
: permissionsRequests.length > 0
@ -82,7 +83,7 @@ const mapStateToProps = (state, ownProps) => {
return {
permissionsRequest,
permissionsRequestId,
hasPendingPermissionsRequests,
hasAdditionalPermissionsRequests,
accounts: accountsWithLabels,
currentAddress,
origin,

View File

@ -2056,9 +2056,9 @@ export function setPendingTokens (pendingTokens) {
// Permissions
export function requestAccountsPermission (origin) {
export function requestAccountsPermissionWithId (origin) {
return async (dispatch) => {
const id = await promisifiedBackground.requestAccountsPermission(origin)
const id = await promisifiedBackground.requestAccountsPermissionWithId(origin)
await forceUpdateMetamaskState(dispatch)
return id
}

View File

@ -1696,10 +1696,10 @@
resolved "https://registry.yarnpkg.com/@metamask/forwarder/-/forwarder-1.1.0.tgz#13829d8244bbf19ea658c0b20d21a77b67de0bdd"
integrity sha512-Hggj4y0QIjDzKGTXzarhEPIQyFSB2bi2y6YLJNwaT4JmP30UB5Cj6gqoY0M4pj3QT57fzp0BUuGp7F/AUe28tw==
"@metamask/inpage-provider@^5.2.1":
version "5.2.1"
resolved "https://registry.yarnpkg.com/@metamask/inpage-provider/-/inpage-provider-5.2.1.tgz#526352fae3541da0952dbf7caa97763558e2d20c"
integrity sha512-GP0XuPCxtkAJ+mtOj5CEaSTncXDsMS79pyTiIbIC5RcZ2AMKGCyKcEovQlFm5fkbO6fE5uFnco4fpgMmY7XsTQ==
"@metamask/inpage-provider@^6.0.0":
version "6.0.0"
resolved "https://registry.yarnpkg.com/@metamask/inpage-provider/-/inpage-provider-6.0.0.tgz#84a95d30cad77ac1d70507915f6bea04a72e6c4f"
integrity sha512-487gjVIdIKEgqNXu5Q7dtVvv48nwZCLSBxDVoL8NUeQOIw1HARzG5kPusWnOhcOfKdpUCZLl+Mp/c+XhEtZM6Q==
dependencies:
eth-json-rpc-errors "^2.0.2"
fast-deep-equal "^2.0.1"
@ -1711,10 +1711,10 @@
pump "^3.0.0"
safe-event-emitter "^1.0.1"
"@metamask/test-dapp@^2.2.0":
version "2.2.0"
resolved "https://registry.yarnpkg.com/@metamask/test-dapp/-/test-dapp-2.2.0.tgz#e48ea589db7ab028ea222ae47ee814c4687e02c6"
integrity sha512-KX8ZhR/yLBO6yzx/9/BDxHdrTV6nNoOb8LvpUGm8GiLu6jOXETKZj0qfgvL5quWnQ/LRJMEXeuOZWjtXgcVofg==
"@metamask/test-dapp@3.0.0":
version "3.0.0"
resolved "https://registry.yarnpkg.com/@metamask/test-dapp/-/test-dapp-3.0.0.tgz#4e9678c872e0f379b4178032a6c4bfac6131a360"
integrity sha512-aXiN68DDjrMpHYIx3uE47HUzLIO327zsqMPFlv/SVEmYiuZgt7Ypndb25llPBJsLQ5cWPwiln6MoTb9DbxaSeA==
"@mrmlnc/readdir-enhanced@^2.2.1":
version "2.2.1"
@ -10180,10 +10180,10 @@ eth-json-rpc-middleware@^4.1.4, eth-json-rpc-middleware@^4.1.5:
pify "^3.0.0"
safe-event-emitter "^1.0.1"
eth-json-rpc-middleware@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/eth-json-rpc-middleware/-/eth-json-rpc-middleware-5.0.1.tgz#0fdebb873337f01dc839ff3d8a5858ecc2c87e6f"
integrity sha512-8vIhggej+B331jZG96Qql0GAJBy0HVSHnSCvnzlX7lhVoWcoBfOjt5vnJp07gVoz2QQlpedG+aiGPZwL1PbihA==
eth-json-rpc-middleware@^5.0.2:
version "5.0.2"
resolved "https://registry.yarnpkg.com/eth-json-rpc-middleware/-/eth-json-rpc-middleware-5.0.2.tgz#f8c2c3478e1b28bf85ed48209e543d6335420de2"
integrity sha512-Ezx+wphVQJbrkRSx3Z2EPQZa4JgzA0o0ZCPOdoGtYTTT0SpdzC4BnvafxMS7H2o+QsRcvOvOJmzu7hbf2eVR7w==
dependencies:
btoa "^1.2.1"
clone "^2.1.1"
@ -23895,10 +23895,10 @@ rn-host-detect@^1.1.5:
resolved "https://registry.yarnpkg.com/rn-host-detect/-/rn-host-detect-1.1.5.tgz#fbecb982b73932f34529e97932b9a63e58d8deb6"
integrity sha512-ufk2dFT3QeP9HyZ/xTuMtW27KnFy815CYitJMqQm+pgG3ZAtHBsrU8nXizNKkqXGy3bQmhEoloVbrfbvMJMqkg==
rpc-cap@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/rpc-cap/-/rpc-cap-2.1.0.tgz#c53e9bd925cb23c86b1591d621a68692c58070c0"
integrity sha512-k4GLWk3IT6r5zETyhiH9tjHqX2sEJ8MdGWv5C4v7wL32hCsx+AnEykbkeVG+EfMox+Vf32C9ieTQPNLKzKwS7A==
rpc-cap@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/rpc-cap/-/rpc-cap-3.0.1.tgz#127fdc37563736f3e15c4550af31f6866490dd85"
integrity sha512-egeRnp+QVennA3obsOhVi/XhNSR4qQk8LHu0YFBiEpUHcm+68FqBkjvx0U/3CSXBmrRc8WRLo6kE3T64gWW02w==
dependencies:
clone "^2.1.2"
eth-json-rpc-errors "^2.0.2"