diff --git a/lavamoat/browserify/beta/policy.json b/lavamoat/browserify/beta/policy.json index 18d9c596e2e..c162827be33 100644 --- a/lavamoat/browserify/beta/policy.json +++ b/lavamoat/browserify/beta/policy.json @@ -909,9 +909,10 @@ "@metamask/controller-utils": true, "@metamask/keyring-api": true, "@metamask/metamask-eth-abis": true, - "@metamask/multichain-network-controller": true, + "@metamask/bridge-controller>@metamask/multichain-network-controller": true, "@metamask/bridge-controller>@metamask/polling-controller": true, "@metamask/superstruct": true, + "@metamask/transaction-controller": true, "@metamask/utils": true, "@metamask/bridge-controller>bignumber.js": true, "browserify>buffer": true, @@ -929,7 +930,7 @@ "packages": { "@metamask/bridge-controller": true, "@metamask/controller-utils": true, - "@metamask/bridge-controller>@metamask/polling-controller": true, + "@metamask/bridge-status-controller>@metamask/polling-controller": true, "@metamask/superstruct": true, "@metamask/transaction-controller": true, "@metamask/utils": true, @@ -1039,7 +1040,7 @@ "@metamask/keyring-controller": true, "@metamask/rpc-errors": true, "@metamask/superstruct": true, - "@metamask/transaction-controller": true, + "@metamask/eip-5792-middleware>@metamask/transaction-controller": true, "@metamask/utils": true, "lodash": true, "uuid": true @@ -1134,7 +1135,21 @@ "@metamask/rpc-errors": true, "@metamask/superstruct": true, "@metamask/utils": true, - "@metamask/eth-json-rpc-middleware>klona": true, + "@metamask/json-rpc-engine>klona": true, + "@metamask/eth-json-rpc-middleware>safe-stable-stringify": true + } + }, + "@metamask/network-controller>@metamask/eth-json-rpc-middleware": { + "globals": { + "setTimeout": true + }, + "packages": { + "@metamask/eth-sig-util": true, + "@metamask/json-rpc-engine": true, + "@metamask/rpc-errors": true, + "@metamask/superstruct": true, + "@metamask/utils": true, + "@metamask/json-rpc-engine>klona": true, "@metamask/eth-json-rpc-middleware>safe-stable-stringify": true } }, @@ -1146,6 +1161,12 @@ "uuid": true } }, + "@metamask/network-controller>@metamask/eth-json-rpc-provider": { + "packages": { + "@metamask/json-rpc-engine": true, + "nanoid": true + } + }, "@metamask/eth-ledger-bridge-keyring": { "globals": { "addEventListener": true, @@ -1326,7 +1347,7 @@ "packages": { "@metamask/controller-utils": true, "@metamask/controller-utils>@metamask/eth-query": true, - "@metamask/bridge-controller>@metamask/polling-controller": true, + "@metamask/gas-fee-controller>@metamask/polling-controller": true, "bn.js": true, "uuid": true } @@ -1358,7 +1379,9 @@ "packages": { "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, - "@metamask/utils": true + "@metamask/utils": true, + "deep-freeze-strict": true, + "@metamask/json-rpc-engine>klona": true } }, "@metamask/json-rpc-middleware-stream": { @@ -1535,6 +1558,19 @@ "lodash": true } }, + "@metamask/bridge-controller>@metamask/multichain-network-controller": { + "globals": { + "URL": true + }, + "packages": { + "@metamask/base-controller": true, + "@metamask/keyring-api": true, + "@metamask/network-controller": true, + "@metamask/superstruct": true, + "@metamask/utils": true, + "lodash": true + } + }, "@metamask/multichain-transactions-controller": { "globals": { "console.error": true @@ -1568,8 +1604,8 @@ "@metamask/controller-utils": true, "@metamask/network-controller>@metamask/eth-block-tracker": true, "@metamask/network-controller>@metamask/eth-json-rpc-infura": true, - "@metamask/eth-json-rpc-middleware": true, - "@metamask/eth-json-rpc-provider": true, + "@metamask/network-controller>@metamask/eth-json-rpc-middleware": true, + "@metamask/network-controller>@metamask/eth-json-rpc-provider": true, "@metamask/controller-utils>@metamask/eth-query": true, "@metamask/json-rpc-engine": true, "@metamask/rpc-errors": true, @@ -1706,6 +1742,30 @@ "uuid": true } }, + "@metamask/bridge-status-controller>@metamask/polling-controller": { + "globals": { + "clearTimeout": true, + "console.error": true, + "setTimeout": true + }, + "packages": { + "@metamask/base-controller": true, + "@metamask/snaps-utils>fast-json-stable-stringify": true, + "uuid": true + } + }, + "@metamask/gas-fee-controller>@metamask/polling-controller": { + "globals": { + "clearTimeout": true, + "console.error": true, + "setTimeout": true + }, + "packages": { + "@metamask/base-controller": true, + "@metamask/snaps-utils>fast-json-stable-stringify": true, + "uuid": true + } + }, "@metamask/post-message-stream": { "globals": { "MessageEvent.prototype": true, @@ -1896,7 +1956,7 @@ "ethers>@ethersproject/transactions": true, "@metamask/controller-utils": true, "@metamask/controller-utils>@metamask/eth-query": true, - "@metamask/bridge-controller>@metamask/polling-controller": true, + "@metamask/assets-controllers>@metamask/polling-controller": true, "@metamask/transaction-controller": true, "@metamask/smart-transactions-controller>bignumber.js": true, "fast-json-patch": true, @@ -2027,8 +2087,8 @@ }, "packages": { "@metamask/controller-utils": true, - "@metamask/bridge-controller>@metamask/polling-controller": true, - "@metamask/transaction-controller": true, + "@metamask/assets-controllers>@metamask/polling-controller": true, + "@metamask/subscription-controller>@metamask/transaction-controller": true, "@metamask/subscription-controller>bignumber.js": true } }, @@ -2051,6 +2111,73 @@ } }, "@metamask/transaction-controller": { + "globals": { + "clearTimeout": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@ethereumjs/tx>@ethereumjs/common": true, + "@ethereumjs/tx": true, + "@ethersproject/abi": true, + "@ethersproject/contracts": true, + "@ethersproject/providers": true, + "ethers>@ethersproject/wallet": true, + "@metamask/base-controller": true, + "@metamask/controller-utils": true, + "@metamask/controller-utils>@metamask/eth-query": true, + "@metamask/gas-fee-controller": true, + "@metamask/metamask-eth-abis": true, + "@metamask/network-controller": true, + "@metamask/transaction-controller>@metamask/nonce-tracker": true, + "@metamask/rpc-errors": true, + "@metamask/utils": true, + "@metamask/eth-qr-keyring>async-mutex": true, + "@metamask/transaction-controller>bignumber.js": true, + "bn.js": true, + "browserify>buffer": true, + "eth-method-registry": true, + "webpack>events": true, + "fast-json-patch": true, + "lodash": true, + "uuid": true + } + }, + "@metamask/eip-5792-middleware>@metamask/transaction-controller": { + "globals": { + "clearTimeout": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@ethereumjs/tx>@ethereumjs/common": true, + "@ethereumjs/tx": true, + "@ethersproject/abi": true, + "@ethersproject/contracts": true, + "@ethersproject/providers": true, + "ethers>@ethersproject/wallet": true, + "@metamask/base-controller": true, + "@metamask/controller-utils": true, + "@metamask/controller-utils>@metamask/eth-query": true, + "@metamask/gas-fee-controller": true, + "@metamask/metamask-eth-abis": true, + "@metamask/network-controller": true, + "@metamask/transaction-controller>@metamask/nonce-tracker": true, + "@metamask/rpc-errors": true, + "@metamask/utils": true, + "@metamask/eth-qr-keyring>async-mutex": true, + "bn.js": true, + "browserify>buffer": true, + "eth-method-registry": true, + "webpack>events": true, + "fast-json-patch": true, + "lodash": true, + "uuid": true + } + }, + "@metamask/subscription-controller>@metamask/transaction-controller": { "globals": { "clearTimeout": true, "console.error": true, @@ -2092,7 +2219,7 @@ "@metamask/controller-utils": true, "@metamask/controller-utils>@metamask/eth-query": true, "@metamask/gas-fee-controller": true, - "@metamask/bridge-controller>@metamask/polling-controller": true, + "@metamask/assets-controllers>@metamask/polling-controller": true, "@metamask/rpc-errors": true, "@metamask/superstruct": true, "@metamask/transaction-controller": true, @@ -2896,6 +3023,12 @@ "define": true } }, + "@metamask/transaction-controller>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, "@ngraveio/bc-ur>bignumber.js": { "globals": { "crypto": true, diff --git a/lavamoat/browserify/experimental/policy.json b/lavamoat/browserify/experimental/policy.json index 18d9c596e2e..c162827be33 100644 --- a/lavamoat/browserify/experimental/policy.json +++ b/lavamoat/browserify/experimental/policy.json @@ -909,9 +909,10 @@ "@metamask/controller-utils": true, "@metamask/keyring-api": true, "@metamask/metamask-eth-abis": true, - "@metamask/multichain-network-controller": true, + "@metamask/bridge-controller>@metamask/multichain-network-controller": true, "@metamask/bridge-controller>@metamask/polling-controller": true, "@metamask/superstruct": true, + "@metamask/transaction-controller": true, "@metamask/utils": true, "@metamask/bridge-controller>bignumber.js": true, "browserify>buffer": true, @@ -929,7 +930,7 @@ "packages": { "@metamask/bridge-controller": true, "@metamask/controller-utils": true, - "@metamask/bridge-controller>@metamask/polling-controller": true, + "@metamask/bridge-status-controller>@metamask/polling-controller": true, "@metamask/superstruct": true, "@metamask/transaction-controller": true, "@metamask/utils": true, @@ -1039,7 +1040,7 @@ "@metamask/keyring-controller": true, "@metamask/rpc-errors": true, "@metamask/superstruct": true, - "@metamask/transaction-controller": true, + "@metamask/eip-5792-middleware>@metamask/transaction-controller": true, "@metamask/utils": true, "lodash": true, "uuid": true @@ -1134,7 +1135,21 @@ "@metamask/rpc-errors": true, "@metamask/superstruct": true, "@metamask/utils": true, - "@metamask/eth-json-rpc-middleware>klona": true, + "@metamask/json-rpc-engine>klona": true, + "@metamask/eth-json-rpc-middleware>safe-stable-stringify": true + } + }, + "@metamask/network-controller>@metamask/eth-json-rpc-middleware": { + "globals": { + "setTimeout": true + }, + "packages": { + "@metamask/eth-sig-util": true, + "@metamask/json-rpc-engine": true, + "@metamask/rpc-errors": true, + "@metamask/superstruct": true, + "@metamask/utils": true, + "@metamask/json-rpc-engine>klona": true, "@metamask/eth-json-rpc-middleware>safe-stable-stringify": true } }, @@ -1146,6 +1161,12 @@ "uuid": true } }, + "@metamask/network-controller>@metamask/eth-json-rpc-provider": { + "packages": { + "@metamask/json-rpc-engine": true, + "nanoid": true + } + }, "@metamask/eth-ledger-bridge-keyring": { "globals": { "addEventListener": true, @@ -1326,7 +1347,7 @@ "packages": { "@metamask/controller-utils": true, "@metamask/controller-utils>@metamask/eth-query": true, - "@metamask/bridge-controller>@metamask/polling-controller": true, + "@metamask/gas-fee-controller>@metamask/polling-controller": true, "bn.js": true, "uuid": true } @@ -1358,7 +1379,9 @@ "packages": { "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, - "@metamask/utils": true + "@metamask/utils": true, + "deep-freeze-strict": true, + "@metamask/json-rpc-engine>klona": true } }, "@metamask/json-rpc-middleware-stream": { @@ -1535,6 +1558,19 @@ "lodash": true } }, + "@metamask/bridge-controller>@metamask/multichain-network-controller": { + "globals": { + "URL": true + }, + "packages": { + "@metamask/base-controller": true, + "@metamask/keyring-api": true, + "@metamask/network-controller": true, + "@metamask/superstruct": true, + "@metamask/utils": true, + "lodash": true + } + }, "@metamask/multichain-transactions-controller": { "globals": { "console.error": true @@ -1568,8 +1604,8 @@ "@metamask/controller-utils": true, "@metamask/network-controller>@metamask/eth-block-tracker": true, "@metamask/network-controller>@metamask/eth-json-rpc-infura": true, - "@metamask/eth-json-rpc-middleware": true, - "@metamask/eth-json-rpc-provider": true, + "@metamask/network-controller>@metamask/eth-json-rpc-middleware": true, + "@metamask/network-controller>@metamask/eth-json-rpc-provider": true, "@metamask/controller-utils>@metamask/eth-query": true, "@metamask/json-rpc-engine": true, "@metamask/rpc-errors": true, @@ -1706,6 +1742,30 @@ "uuid": true } }, + "@metamask/bridge-status-controller>@metamask/polling-controller": { + "globals": { + "clearTimeout": true, + "console.error": true, + "setTimeout": true + }, + "packages": { + "@metamask/base-controller": true, + "@metamask/snaps-utils>fast-json-stable-stringify": true, + "uuid": true + } + }, + "@metamask/gas-fee-controller>@metamask/polling-controller": { + "globals": { + "clearTimeout": true, + "console.error": true, + "setTimeout": true + }, + "packages": { + "@metamask/base-controller": true, + "@metamask/snaps-utils>fast-json-stable-stringify": true, + "uuid": true + } + }, "@metamask/post-message-stream": { "globals": { "MessageEvent.prototype": true, @@ -1896,7 +1956,7 @@ "ethers>@ethersproject/transactions": true, "@metamask/controller-utils": true, "@metamask/controller-utils>@metamask/eth-query": true, - "@metamask/bridge-controller>@metamask/polling-controller": true, + "@metamask/assets-controllers>@metamask/polling-controller": true, "@metamask/transaction-controller": true, "@metamask/smart-transactions-controller>bignumber.js": true, "fast-json-patch": true, @@ -2027,8 +2087,8 @@ }, "packages": { "@metamask/controller-utils": true, - "@metamask/bridge-controller>@metamask/polling-controller": true, - "@metamask/transaction-controller": true, + "@metamask/assets-controllers>@metamask/polling-controller": true, + "@metamask/subscription-controller>@metamask/transaction-controller": true, "@metamask/subscription-controller>bignumber.js": true } }, @@ -2051,6 +2111,73 @@ } }, "@metamask/transaction-controller": { + "globals": { + "clearTimeout": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@ethereumjs/tx>@ethereumjs/common": true, + "@ethereumjs/tx": true, + "@ethersproject/abi": true, + "@ethersproject/contracts": true, + "@ethersproject/providers": true, + "ethers>@ethersproject/wallet": true, + "@metamask/base-controller": true, + "@metamask/controller-utils": true, + "@metamask/controller-utils>@metamask/eth-query": true, + "@metamask/gas-fee-controller": true, + "@metamask/metamask-eth-abis": true, + "@metamask/network-controller": true, + "@metamask/transaction-controller>@metamask/nonce-tracker": true, + "@metamask/rpc-errors": true, + "@metamask/utils": true, + "@metamask/eth-qr-keyring>async-mutex": true, + "@metamask/transaction-controller>bignumber.js": true, + "bn.js": true, + "browserify>buffer": true, + "eth-method-registry": true, + "webpack>events": true, + "fast-json-patch": true, + "lodash": true, + "uuid": true + } + }, + "@metamask/eip-5792-middleware>@metamask/transaction-controller": { + "globals": { + "clearTimeout": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@ethereumjs/tx>@ethereumjs/common": true, + "@ethereumjs/tx": true, + "@ethersproject/abi": true, + "@ethersproject/contracts": true, + "@ethersproject/providers": true, + "ethers>@ethersproject/wallet": true, + "@metamask/base-controller": true, + "@metamask/controller-utils": true, + "@metamask/controller-utils>@metamask/eth-query": true, + "@metamask/gas-fee-controller": true, + "@metamask/metamask-eth-abis": true, + "@metamask/network-controller": true, + "@metamask/transaction-controller>@metamask/nonce-tracker": true, + "@metamask/rpc-errors": true, + "@metamask/utils": true, + "@metamask/eth-qr-keyring>async-mutex": true, + "bn.js": true, + "browserify>buffer": true, + "eth-method-registry": true, + "webpack>events": true, + "fast-json-patch": true, + "lodash": true, + "uuid": true + } + }, + "@metamask/subscription-controller>@metamask/transaction-controller": { "globals": { "clearTimeout": true, "console.error": true, @@ -2092,7 +2219,7 @@ "@metamask/controller-utils": true, "@metamask/controller-utils>@metamask/eth-query": true, "@metamask/gas-fee-controller": true, - "@metamask/bridge-controller>@metamask/polling-controller": true, + "@metamask/assets-controllers>@metamask/polling-controller": true, "@metamask/rpc-errors": true, "@metamask/superstruct": true, "@metamask/transaction-controller": true, @@ -2896,6 +3023,12 @@ "define": true } }, + "@metamask/transaction-controller>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, "@ngraveio/bc-ur>bignumber.js": { "globals": { "crypto": true, diff --git a/lavamoat/browserify/flask/policy.json b/lavamoat/browserify/flask/policy.json index 18d9c596e2e..c162827be33 100644 --- a/lavamoat/browserify/flask/policy.json +++ b/lavamoat/browserify/flask/policy.json @@ -909,9 +909,10 @@ "@metamask/controller-utils": true, "@metamask/keyring-api": true, "@metamask/metamask-eth-abis": true, - "@metamask/multichain-network-controller": true, + "@metamask/bridge-controller>@metamask/multichain-network-controller": true, "@metamask/bridge-controller>@metamask/polling-controller": true, "@metamask/superstruct": true, + "@metamask/transaction-controller": true, "@metamask/utils": true, "@metamask/bridge-controller>bignumber.js": true, "browserify>buffer": true, @@ -929,7 +930,7 @@ "packages": { "@metamask/bridge-controller": true, "@metamask/controller-utils": true, - "@metamask/bridge-controller>@metamask/polling-controller": true, + "@metamask/bridge-status-controller>@metamask/polling-controller": true, "@metamask/superstruct": true, "@metamask/transaction-controller": true, "@metamask/utils": true, @@ -1039,7 +1040,7 @@ "@metamask/keyring-controller": true, "@metamask/rpc-errors": true, "@metamask/superstruct": true, - "@metamask/transaction-controller": true, + "@metamask/eip-5792-middleware>@metamask/transaction-controller": true, "@metamask/utils": true, "lodash": true, "uuid": true @@ -1134,7 +1135,21 @@ "@metamask/rpc-errors": true, "@metamask/superstruct": true, "@metamask/utils": true, - "@metamask/eth-json-rpc-middleware>klona": true, + "@metamask/json-rpc-engine>klona": true, + "@metamask/eth-json-rpc-middleware>safe-stable-stringify": true + } + }, + "@metamask/network-controller>@metamask/eth-json-rpc-middleware": { + "globals": { + "setTimeout": true + }, + "packages": { + "@metamask/eth-sig-util": true, + "@metamask/json-rpc-engine": true, + "@metamask/rpc-errors": true, + "@metamask/superstruct": true, + "@metamask/utils": true, + "@metamask/json-rpc-engine>klona": true, "@metamask/eth-json-rpc-middleware>safe-stable-stringify": true } }, @@ -1146,6 +1161,12 @@ "uuid": true } }, + "@metamask/network-controller>@metamask/eth-json-rpc-provider": { + "packages": { + "@metamask/json-rpc-engine": true, + "nanoid": true + } + }, "@metamask/eth-ledger-bridge-keyring": { "globals": { "addEventListener": true, @@ -1326,7 +1347,7 @@ "packages": { "@metamask/controller-utils": true, "@metamask/controller-utils>@metamask/eth-query": true, - "@metamask/bridge-controller>@metamask/polling-controller": true, + "@metamask/gas-fee-controller>@metamask/polling-controller": true, "bn.js": true, "uuid": true } @@ -1358,7 +1379,9 @@ "packages": { "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, - "@metamask/utils": true + "@metamask/utils": true, + "deep-freeze-strict": true, + "@metamask/json-rpc-engine>klona": true } }, "@metamask/json-rpc-middleware-stream": { @@ -1535,6 +1558,19 @@ "lodash": true } }, + "@metamask/bridge-controller>@metamask/multichain-network-controller": { + "globals": { + "URL": true + }, + "packages": { + "@metamask/base-controller": true, + "@metamask/keyring-api": true, + "@metamask/network-controller": true, + "@metamask/superstruct": true, + "@metamask/utils": true, + "lodash": true + } + }, "@metamask/multichain-transactions-controller": { "globals": { "console.error": true @@ -1568,8 +1604,8 @@ "@metamask/controller-utils": true, "@metamask/network-controller>@metamask/eth-block-tracker": true, "@metamask/network-controller>@metamask/eth-json-rpc-infura": true, - "@metamask/eth-json-rpc-middleware": true, - "@metamask/eth-json-rpc-provider": true, + "@metamask/network-controller>@metamask/eth-json-rpc-middleware": true, + "@metamask/network-controller>@metamask/eth-json-rpc-provider": true, "@metamask/controller-utils>@metamask/eth-query": true, "@metamask/json-rpc-engine": true, "@metamask/rpc-errors": true, @@ -1706,6 +1742,30 @@ "uuid": true } }, + "@metamask/bridge-status-controller>@metamask/polling-controller": { + "globals": { + "clearTimeout": true, + "console.error": true, + "setTimeout": true + }, + "packages": { + "@metamask/base-controller": true, + "@metamask/snaps-utils>fast-json-stable-stringify": true, + "uuid": true + } + }, + "@metamask/gas-fee-controller>@metamask/polling-controller": { + "globals": { + "clearTimeout": true, + "console.error": true, + "setTimeout": true + }, + "packages": { + "@metamask/base-controller": true, + "@metamask/snaps-utils>fast-json-stable-stringify": true, + "uuid": true + } + }, "@metamask/post-message-stream": { "globals": { "MessageEvent.prototype": true, @@ -1896,7 +1956,7 @@ "ethers>@ethersproject/transactions": true, "@metamask/controller-utils": true, "@metamask/controller-utils>@metamask/eth-query": true, - "@metamask/bridge-controller>@metamask/polling-controller": true, + "@metamask/assets-controllers>@metamask/polling-controller": true, "@metamask/transaction-controller": true, "@metamask/smart-transactions-controller>bignumber.js": true, "fast-json-patch": true, @@ -2027,8 +2087,8 @@ }, "packages": { "@metamask/controller-utils": true, - "@metamask/bridge-controller>@metamask/polling-controller": true, - "@metamask/transaction-controller": true, + "@metamask/assets-controllers>@metamask/polling-controller": true, + "@metamask/subscription-controller>@metamask/transaction-controller": true, "@metamask/subscription-controller>bignumber.js": true } }, @@ -2051,6 +2111,73 @@ } }, "@metamask/transaction-controller": { + "globals": { + "clearTimeout": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@ethereumjs/tx>@ethereumjs/common": true, + "@ethereumjs/tx": true, + "@ethersproject/abi": true, + "@ethersproject/contracts": true, + "@ethersproject/providers": true, + "ethers>@ethersproject/wallet": true, + "@metamask/base-controller": true, + "@metamask/controller-utils": true, + "@metamask/controller-utils>@metamask/eth-query": true, + "@metamask/gas-fee-controller": true, + "@metamask/metamask-eth-abis": true, + "@metamask/network-controller": true, + "@metamask/transaction-controller>@metamask/nonce-tracker": true, + "@metamask/rpc-errors": true, + "@metamask/utils": true, + "@metamask/eth-qr-keyring>async-mutex": true, + "@metamask/transaction-controller>bignumber.js": true, + "bn.js": true, + "browserify>buffer": true, + "eth-method-registry": true, + "webpack>events": true, + "fast-json-patch": true, + "lodash": true, + "uuid": true + } + }, + "@metamask/eip-5792-middleware>@metamask/transaction-controller": { + "globals": { + "clearTimeout": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@ethereumjs/tx>@ethereumjs/common": true, + "@ethereumjs/tx": true, + "@ethersproject/abi": true, + "@ethersproject/contracts": true, + "@ethersproject/providers": true, + "ethers>@ethersproject/wallet": true, + "@metamask/base-controller": true, + "@metamask/controller-utils": true, + "@metamask/controller-utils>@metamask/eth-query": true, + "@metamask/gas-fee-controller": true, + "@metamask/metamask-eth-abis": true, + "@metamask/network-controller": true, + "@metamask/transaction-controller>@metamask/nonce-tracker": true, + "@metamask/rpc-errors": true, + "@metamask/utils": true, + "@metamask/eth-qr-keyring>async-mutex": true, + "bn.js": true, + "browserify>buffer": true, + "eth-method-registry": true, + "webpack>events": true, + "fast-json-patch": true, + "lodash": true, + "uuid": true + } + }, + "@metamask/subscription-controller>@metamask/transaction-controller": { "globals": { "clearTimeout": true, "console.error": true, @@ -2092,7 +2219,7 @@ "@metamask/controller-utils": true, "@metamask/controller-utils>@metamask/eth-query": true, "@metamask/gas-fee-controller": true, - "@metamask/bridge-controller>@metamask/polling-controller": true, + "@metamask/assets-controllers>@metamask/polling-controller": true, "@metamask/rpc-errors": true, "@metamask/superstruct": true, "@metamask/transaction-controller": true, @@ -2896,6 +3023,12 @@ "define": true } }, + "@metamask/transaction-controller>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, "@ngraveio/bc-ur>bignumber.js": { "globals": { "crypto": true, diff --git a/lavamoat/browserify/main/policy.json b/lavamoat/browserify/main/policy.json index 18d9c596e2e..c162827be33 100644 --- a/lavamoat/browserify/main/policy.json +++ b/lavamoat/browserify/main/policy.json @@ -909,9 +909,10 @@ "@metamask/controller-utils": true, "@metamask/keyring-api": true, "@metamask/metamask-eth-abis": true, - "@metamask/multichain-network-controller": true, + "@metamask/bridge-controller>@metamask/multichain-network-controller": true, "@metamask/bridge-controller>@metamask/polling-controller": true, "@metamask/superstruct": true, + "@metamask/transaction-controller": true, "@metamask/utils": true, "@metamask/bridge-controller>bignumber.js": true, "browserify>buffer": true, @@ -929,7 +930,7 @@ "packages": { "@metamask/bridge-controller": true, "@metamask/controller-utils": true, - "@metamask/bridge-controller>@metamask/polling-controller": true, + "@metamask/bridge-status-controller>@metamask/polling-controller": true, "@metamask/superstruct": true, "@metamask/transaction-controller": true, "@metamask/utils": true, @@ -1039,7 +1040,7 @@ "@metamask/keyring-controller": true, "@metamask/rpc-errors": true, "@metamask/superstruct": true, - "@metamask/transaction-controller": true, + "@metamask/eip-5792-middleware>@metamask/transaction-controller": true, "@metamask/utils": true, "lodash": true, "uuid": true @@ -1134,7 +1135,21 @@ "@metamask/rpc-errors": true, "@metamask/superstruct": true, "@metamask/utils": true, - "@metamask/eth-json-rpc-middleware>klona": true, + "@metamask/json-rpc-engine>klona": true, + "@metamask/eth-json-rpc-middleware>safe-stable-stringify": true + } + }, + "@metamask/network-controller>@metamask/eth-json-rpc-middleware": { + "globals": { + "setTimeout": true + }, + "packages": { + "@metamask/eth-sig-util": true, + "@metamask/json-rpc-engine": true, + "@metamask/rpc-errors": true, + "@metamask/superstruct": true, + "@metamask/utils": true, + "@metamask/json-rpc-engine>klona": true, "@metamask/eth-json-rpc-middleware>safe-stable-stringify": true } }, @@ -1146,6 +1161,12 @@ "uuid": true } }, + "@metamask/network-controller>@metamask/eth-json-rpc-provider": { + "packages": { + "@metamask/json-rpc-engine": true, + "nanoid": true + } + }, "@metamask/eth-ledger-bridge-keyring": { "globals": { "addEventListener": true, @@ -1326,7 +1347,7 @@ "packages": { "@metamask/controller-utils": true, "@metamask/controller-utils>@metamask/eth-query": true, - "@metamask/bridge-controller>@metamask/polling-controller": true, + "@metamask/gas-fee-controller>@metamask/polling-controller": true, "bn.js": true, "uuid": true } @@ -1358,7 +1379,9 @@ "packages": { "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, - "@metamask/utils": true + "@metamask/utils": true, + "deep-freeze-strict": true, + "@metamask/json-rpc-engine>klona": true } }, "@metamask/json-rpc-middleware-stream": { @@ -1535,6 +1558,19 @@ "lodash": true } }, + "@metamask/bridge-controller>@metamask/multichain-network-controller": { + "globals": { + "URL": true + }, + "packages": { + "@metamask/base-controller": true, + "@metamask/keyring-api": true, + "@metamask/network-controller": true, + "@metamask/superstruct": true, + "@metamask/utils": true, + "lodash": true + } + }, "@metamask/multichain-transactions-controller": { "globals": { "console.error": true @@ -1568,8 +1604,8 @@ "@metamask/controller-utils": true, "@metamask/network-controller>@metamask/eth-block-tracker": true, "@metamask/network-controller>@metamask/eth-json-rpc-infura": true, - "@metamask/eth-json-rpc-middleware": true, - "@metamask/eth-json-rpc-provider": true, + "@metamask/network-controller>@metamask/eth-json-rpc-middleware": true, + "@metamask/network-controller>@metamask/eth-json-rpc-provider": true, "@metamask/controller-utils>@metamask/eth-query": true, "@metamask/json-rpc-engine": true, "@metamask/rpc-errors": true, @@ -1706,6 +1742,30 @@ "uuid": true } }, + "@metamask/bridge-status-controller>@metamask/polling-controller": { + "globals": { + "clearTimeout": true, + "console.error": true, + "setTimeout": true + }, + "packages": { + "@metamask/base-controller": true, + "@metamask/snaps-utils>fast-json-stable-stringify": true, + "uuid": true + } + }, + "@metamask/gas-fee-controller>@metamask/polling-controller": { + "globals": { + "clearTimeout": true, + "console.error": true, + "setTimeout": true + }, + "packages": { + "@metamask/base-controller": true, + "@metamask/snaps-utils>fast-json-stable-stringify": true, + "uuid": true + } + }, "@metamask/post-message-stream": { "globals": { "MessageEvent.prototype": true, @@ -1896,7 +1956,7 @@ "ethers>@ethersproject/transactions": true, "@metamask/controller-utils": true, "@metamask/controller-utils>@metamask/eth-query": true, - "@metamask/bridge-controller>@metamask/polling-controller": true, + "@metamask/assets-controllers>@metamask/polling-controller": true, "@metamask/transaction-controller": true, "@metamask/smart-transactions-controller>bignumber.js": true, "fast-json-patch": true, @@ -2027,8 +2087,8 @@ }, "packages": { "@metamask/controller-utils": true, - "@metamask/bridge-controller>@metamask/polling-controller": true, - "@metamask/transaction-controller": true, + "@metamask/assets-controllers>@metamask/polling-controller": true, + "@metamask/subscription-controller>@metamask/transaction-controller": true, "@metamask/subscription-controller>bignumber.js": true } }, @@ -2051,6 +2111,73 @@ } }, "@metamask/transaction-controller": { + "globals": { + "clearTimeout": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@ethereumjs/tx>@ethereumjs/common": true, + "@ethereumjs/tx": true, + "@ethersproject/abi": true, + "@ethersproject/contracts": true, + "@ethersproject/providers": true, + "ethers>@ethersproject/wallet": true, + "@metamask/base-controller": true, + "@metamask/controller-utils": true, + "@metamask/controller-utils>@metamask/eth-query": true, + "@metamask/gas-fee-controller": true, + "@metamask/metamask-eth-abis": true, + "@metamask/network-controller": true, + "@metamask/transaction-controller>@metamask/nonce-tracker": true, + "@metamask/rpc-errors": true, + "@metamask/utils": true, + "@metamask/eth-qr-keyring>async-mutex": true, + "@metamask/transaction-controller>bignumber.js": true, + "bn.js": true, + "browserify>buffer": true, + "eth-method-registry": true, + "webpack>events": true, + "fast-json-patch": true, + "lodash": true, + "uuid": true + } + }, + "@metamask/eip-5792-middleware>@metamask/transaction-controller": { + "globals": { + "clearTimeout": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@ethereumjs/tx>@ethereumjs/common": true, + "@ethereumjs/tx": true, + "@ethersproject/abi": true, + "@ethersproject/contracts": true, + "@ethersproject/providers": true, + "ethers>@ethersproject/wallet": true, + "@metamask/base-controller": true, + "@metamask/controller-utils": true, + "@metamask/controller-utils>@metamask/eth-query": true, + "@metamask/gas-fee-controller": true, + "@metamask/metamask-eth-abis": true, + "@metamask/network-controller": true, + "@metamask/transaction-controller>@metamask/nonce-tracker": true, + "@metamask/rpc-errors": true, + "@metamask/utils": true, + "@metamask/eth-qr-keyring>async-mutex": true, + "bn.js": true, + "browserify>buffer": true, + "eth-method-registry": true, + "webpack>events": true, + "fast-json-patch": true, + "lodash": true, + "uuid": true + } + }, + "@metamask/subscription-controller>@metamask/transaction-controller": { "globals": { "clearTimeout": true, "console.error": true, @@ -2092,7 +2219,7 @@ "@metamask/controller-utils": true, "@metamask/controller-utils>@metamask/eth-query": true, "@metamask/gas-fee-controller": true, - "@metamask/bridge-controller>@metamask/polling-controller": true, + "@metamask/assets-controllers>@metamask/polling-controller": true, "@metamask/rpc-errors": true, "@metamask/superstruct": true, "@metamask/transaction-controller": true, @@ -2896,6 +3023,12 @@ "define": true } }, + "@metamask/transaction-controller>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, "@ngraveio/bc-ur>bignumber.js": { "globals": { "crypto": true, diff --git a/lavamoat/webpack/mv2/policy.json b/lavamoat/webpack/mv2/policy.json index fb0112365e1..e6c7603aa92 100644 --- a/lavamoat/webpack/mv2/policy.json +++ b/lavamoat/webpack/mv2/policy.json @@ -934,7 +934,7 @@ "@metamask/controller-utils": true, "@metamask/keyring-api": true, "@metamask/metamask-eth-abis": true, - "@metamask/multichain-network-controller": true, + "@metamask/bridge-controller>@metamask/multichain-network-controller": true, "@metamask/bridge-controller>@metamask/polling-controller": true, "@metamask/superstruct": true, "@metamask/utils": true, @@ -954,7 +954,7 @@ "packages": { "@metamask/bridge-controller": true, "@metamask/controller-utils": true, - "@metamask/bridge-controller>@metamask/polling-controller": true, + "@metamask/bridge-status-controller>@metamask/polling-controller": true, "@metamask/superstruct": true, "@metamask/transaction-controller": true, "@metamask/utils": true, @@ -1072,7 +1072,7 @@ "@metamask/keyring-controller": true, "@metamask/rpc-errors": true, "@metamask/superstruct": true, - "@metamask/transaction-controller": true, + "@metamask/eip-5792-middleware>@metamask/transaction-controller": true, "@metamask/utils": true, "lodash": true, "uuid": true @@ -1166,17 +1166,22 @@ } }, "@metamask/eth-json-rpc-middleware": { - "globals": { - "console.error": true, - "setTimeout": true - }, "packages": { "@metamask/eth-sig-util": true, "@metamask/json-rpc-engine": true, "@metamask/rpc-errors": true, "@metamask/superstruct": true, + "@metamask/utils": true + } + }, + "@metamask/network-controller>@metamask/eth-json-rpc-middleware": { + "globals": { + "setTimeout": true + }, + "packages": { + "@metamask/rpc-errors": true, "@metamask/utils": true, - "@metamask/eth-json-rpc-middleware>klona": true, + "@metamask/json-rpc-engine>klona": true, "@metamask/eth-json-rpc-middleware>safe-stable-stringify": true } }, @@ -1188,6 +1193,12 @@ "uuid": true } }, + "@metamask/network-controller>@metamask/eth-json-rpc-provider": { + "packages": { + "@metamask/json-rpc-engine": true, + "nanoid": true + } + }, "@metamask/eth-ledger-bridge-keyring": { "globals": { "addEventListener": true, @@ -1386,7 +1397,7 @@ "packages": { "@metamask/controller-utils": true, "@metamask/controller-utils>@metamask/eth-query": true, - "@metamask/bridge-controller>@metamask/polling-controller": true, + "@metamask/gas-fee-controller>@metamask/polling-controller": true, "bn.js": true, "uuid": true } @@ -1418,7 +1429,9 @@ "packages": { "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, - "@metamask/utils": true + "@metamask/utils": true, + "deep-freeze-strict": true, + "@metamask/json-rpc-engine>klona": true } }, "@metamask/json-rpc-middleware-stream": { @@ -1601,6 +1614,11 @@ "lodash": true } }, + "@metamask/bridge-controller>@metamask/multichain-network-controller": { + "packages": { + "@metamask/utils": true + } + }, "@metamask/multichain-transactions-controller": { "globals": { "console.error": true @@ -1639,8 +1657,8 @@ "@metamask/controller-utils": true, "@metamask/network-controller>@metamask/eth-block-tracker": true, "@metamask/network-controller>@metamask/eth-json-rpc-infura": true, - "@metamask/eth-json-rpc-middleware": true, - "@metamask/eth-json-rpc-provider": true, + "@metamask/network-controller>@metamask/eth-json-rpc-middleware": true, + "@metamask/network-controller>@metamask/eth-json-rpc-provider": true, "@metamask/controller-utils>@metamask/eth-query": true, "@metamask/json-rpc-engine": true, "@metamask/rpc-errors": true, @@ -1777,6 +1795,30 @@ "uuid": true } }, + "@metamask/bridge-status-controller>@metamask/polling-controller": { + "globals": { + "clearTimeout": true, + "console.error": true, + "setTimeout": true + }, + "packages": { + "@metamask/base-controller": true, + "@metamask/snaps-utils>fast-json-stable-stringify": true, + "uuid": true + } + }, + "@metamask/gas-fee-controller>@metamask/polling-controller": { + "globals": { + "clearTimeout": true, + "console.error": true, + "setTimeout": true + }, + "packages": { + "@metamask/base-controller": true, + "@metamask/snaps-utils>fast-json-stable-stringify": true, + "uuid": true + } + }, "@metamask/post-message-stream": { "globals": { "MessageEvent.prototype": true, @@ -1960,7 +2002,7 @@ "ethers>@ethersproject/transactions": true, "@metamask/controller-utils": true, "@metamask/controller-utils>@metamask/eth-query": true, - "@metamask/bridge-controller>@metamask/polling-controller": true, + "@metamask/assets-controllers>@metamask/polling-controller": true, "@metamask/transaction-controller": true, "@metamask/smart-transactions-controller>bignumber.js": true, "fast-json-patch": true, @@ -2089,8 +2131,8 @@ }, "packages": { "@metamask/controller-utils": true, - "@metamask/bridge-controller>@metamask/polling-controller": true, - "@metamask/transaction-controller": true, + "@metamask/assets-controllers>@metamask/polling-controller": true, + "@metamask/subscription-controller>@metamask/transaction-controller": true, "@metamask/subscription-controller>bignumber.js": true } }, @@ -2138,6 +2180,7 @@ "@metamask/rpc-errors": true, "@metamask/utils": true, "@metamask/eth-qr-keyring>async-mutex": true, + "@metamask/transaction-controller>bignumber.js": true, "bn.js": true, "buffer": true, "eth-method-registry": true, @@ -2156,7 +2199,7 @@ "@metamask/controller-utils": true, "@metamask/controller-utils>@metamask/eth-query": true, "@metamask/gas-fee-controller": true, - "@metamask/bridge-controller>@metamask/polling-controller": true, + "@metamask/assets-controllers>@metamask/polling-controller": true, "@metamask/rpc-errors": true, "@metamask/superstruct": true, "@metamask/transaction-controller": true, @@ -3149,6 +3192,11 @@ "crypto": true } }, + "@metamask/transaction-controller>bignumber.js": { + "globals": { + "crypto": true + } + }, "@ngraveio/bc-ur>bignumber.js": { "globals": { "crypto": true, diff --git a/lavamoat/webpack/mv3/policy.json b/lavamoat/webpack/mv3/policy.json index e0773b136e2..557f8b43ea0 100644 --- a/lavamoat/webpack/mv3/policy.json +++ b/lavamoat/webpack/mv3/policy.json @@ -568,7 +568,7 @@ "@metamask/controller-utils": true, "@metamask/keyring-api": true, "@metamask/metamask-eth-abis": true, - "@metamask/multichain-network-controller": true, + "@metamask/bridge-controller>@metamask/multichain-network-controller": true, "@metamask/superstruct": true, "@metamask/utils": true, "@metamask/bridge-controller>bignumber.js": true, @@ -711,16 +711,14 @@ "@metamask/utils": true } }, - "@metamask/eth-json-rpc-middleware": { + "@metamask/network-controller>@metamask/eth-json-rpc-middleware": { "globals": { - "console.error": true, "setTimeout": true }, "packages": { - "@metamask/json-rpc-engine": true, "@metamask/rpc-errors": true, "@metamask/utils": true, - "@metamask/eth-json-rpc-middleware>klona": true, + "@metamask/json-rpc-engine>klona": true, "@metamask/eth-json-rpc-middleware>safe-stable-stringify": true } }, @@ -732,6 +730,12 @@ "uuid": true } }, + "@metamask/network-controller>@metamask/eth-json-rpc-provider": { + "packages": { + "@metamask/json-rpc-engine": true, + "nanoid": true + } + }, "@metamask/eth-qr-keyring": { "globals": { "Buffer.concat": true, @@ -882,7 +886,9 @@ "packages": { "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, - "@metamask/utils": true + "@metamask/utils": true, + "deep-freeze-strict": true, + "@metamask/json-rpc-engine>klona": true } }, "@metamask/json-rpc-middleware-stream": { @@ -991,6 +997,11 @@ "@metamask/utils": true } }, + "@metamask/bridge-controller>@metamask/multichain-network-controller": { + "packages": { + "@metamask/utils": true + } + }, "@metamask/name-controller": { "packages": { "@metamask/base-controller": true, @@ -1013,8 +1024,8 @@ "@metamask/controller-utils": true, "@metamask/network-controller>@metamask/eth-block-tracker": true, "@metamask/network-controller>@metamask/eth-json-rpc-infura": true, - "@metamask/eth-json-rpc-middleware": true, - "@metamask/eth-json-rpc-provider": true, + "@metamask/network-controller>@metamask/eth-json-rpc-middleware": true, + "@metamask/network-controller>@metamask/eth-json-rpc-provider": true, "@metamask/controller-utils>@metamask/eth-query": true, "@metamask/json-rpc-engine": true, "@metamask/rpc-errors": true, diff --git a/package.json b/package.json index 4547675a38c..a7cca679764 100644 --- a/package.json +++ b/package.json @@ -270,15 +270,15 @@ "@metamask/account-api": "^0.12.0", "@metamask/account-tree-controller": "^3.0.0", "@metamask/account-watcher": "^4.1.3", - "@metamask/accounts-controller": "^34.0.0", + "@metamask/accounts-controller": "^35.0.0", "@metamask/address-book-controller": "^7.0.0", "@metamask/announcement-controller": "^8.0.0", "@metamask/approval-controller": "^8.0.0", "@metamask/assets-controllers": "patch:@metamask/assets-controllers@npm%3A91.0.0#~/.yarn/patches/@metamask-assets-controllers-npm-91.0.0-ea998cb0bd.patch", "@metamask/base-controller": "^9.0.0", "@metamask/bitcoin-wallet-snap": "^1.7.0", - "@metamask/bridge-controller": "patch:@metamask/bridge-controller@npm%3A61.0.0#~/.yarn/patches/@metamask-bridge-controller-npm-61.0.0-8c413c463f.patch", - "@metamask/bridge-status-controller": "^61.0.0", + "@metamask/bridge-controller": "^63.2.0", + "@metamask/bridge-status-controller": "^63.1.0", "@metamask/browser-passworder": "^4.3.0", "@metamask/chain-agnostic-permission": "^1.2.2", "@metamask/claims-controller": "^0.2.0", @@ -305,7 +305,7 @@ "@metamask/eth-token-tracker": "^10.0.2", "@metamask/eth-trezor-keyring": "^9.0.0", "@metamask/etherscan-link": "^3.0.0", - "@metamask/gas-fee-controller": "^25.0.0", + "@metamask/gas-fee-controller": "^26.0.0", "@metamask/gator-permissions-controller": "^0.5.0", "@metamask/gator-permissions-snap": "^0.7.0", "@metamask/institutional-wallet-snap": "1.3.4", @@ -332,10 +332,10 @@ "@metamask/multichain-account-service": "^3.0.0", "@metamask/multichain-api-client": "^0.7.0", "@metamask/multichain-api-middleware": "^1.2.4", - "@metamask/multichain-network-controller": "^2.0.0", + "@metamask/multichain-network-controller": "^3.0.0", "@metamask/multichain-transactions-controller": "^6.0.0", "@metamask/name-controller": "^9.0.0", - "@metamask/network-controller": "^25.0.0", + "@metamask/network-controller": "^26.0.0", "@metamask/network-enablement-controller": "^3.1.0", "@metamask/notification-services-controller": "^20.0.0", "@metamask/object-multiplex": "^2.0.0", @@ -368,7 +368,7 @@ "@metamask/solana-wallet-standard": "^0.6.0", "@metamask/streams": "^0.4.0", "@metamask/subscription-controller": "^4.2.2", - "@metamask/transaction-controller": "^61.2.0", + "@metamask/transaction-controller": "^62.3.0", "@metamask/tron-wallet-snap": "^1.13.0", "@metamask/user-operation-controller": "^40.0.0", "@metamask/utils": "^11.4.2", diff --git a/test/e2e/tests/bridge/bridge-test-utils.ts b/test/e2e/tests/bridge/bridge-test-utils.ts index ae2a7d43018..e774c9028ff 100644 --- a/test/e2e/tests/bridge/bridge-test-utils.ts +++ b/test/e2e/tests/bridge/bridge-test-utils.ts @@ -383,6 +383,7 @@ async function mockFeatureFlags( async function mockSwapETHtoMUSD(mockServer: Mockttp) { return await mockServer .forGet(/getQuoteStream/u) + .once() .withQuery({ srcTokenAddress: '0x0000000000000000000000000000000000000000', destTokenAddress: '0xacA92E438df0B2401fF60dA7E4337B687a2435DA', @@ -398,6 +399,7 @@ async function mockUSDCtoDAI(mockServer: Mockttp, sseEnabled?: boolean) { if (sseEnabled) { return await mockServer .forGet(/getQuoteStream/u) + .once() .withQuery({ srcTokenAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', destTokenAddress: '0x4AF15ec2A0BD43Db75dd04E62FAA3B8EF36b00d5', @@ -849,10 +851,6 @@ export const getBridgeFixtures = ( await mockETHtoUSDC(mockServer), await mockDAItoETH(mockServer), await mockSwapETHtoMUSD(mockServer), - await mockSwapETHtoMUSD(mockServer), - await mockSwapETHtoMUSD(mockServer), - await mockSwapETHtoMUSD(mockServer), - await mockSwapETHtoMUSD(mockServer), await mockUSDCtoDAI(mockServer, featureFlags.sse?.enabled), await mockFeatureFlags(mockServer, featureFlags), await mockAccountsTransactions(mockServer), diff --git a/test/e2e/tests/bridge/swap-positive-cases.spec.ts b/test/e2e/tests/bridge/swap-positive-cases.spec.ts index e153b5632b7..8f42bc4cb3f 100644 --- a/test/e2e/tests/bridge/swap-positive-cases.spec.ts +++ b/test/e2e/tests/bridge/swap-positive-cases.spec.ts @@ -1,5 +1,6 @@ +import { strict as assert } from 'assert'; import { Suite } from 'mocha'; -import { unlockWallet, withFixtures } from '../../helpers'; +import { getEventPayloads, unlockWallet, withFixtures } from '../../helpers'; import HomePage from '../../page-objects/pages/home/homepage'; import { BRIDGE_FEATURE_FLAGS_WITH_SSE_ENABLED } from './constants'; import { bridgeTransaction, getBridgeFixtures } from './bridge-test-utils'; @@ -12,8 +13,9 @@ describe('Swap tests', function (this: Suite) { this.test?.fullTitle(), BRIDGE_FEATURE_FLAGS_WITH_SSE_ENABLED, false, + true, ), - async ({ driver }) => { + async ({ driver, mockedEndpoint: mockedEndpoints }) => { await unlockWallet(driver); const homePage = new HomePage(driver); @@ -31,9 +33,105 @@ describe('Swap tests', function (this: Suite) { tokenFrom: 'ETH', tokenTo: 'MUSD', }, - submitDelay: 5000, + submitDelay: 10000, expectedDestAmount: '3,839', }); + + const events = (await getEventPayloads(driver, mockedEndpoints)).filter( + (e) => e?.event?.includes('Unified SwapBridge'), + ); + const requestedToCompletedEvents = events.slice(6); + const expectedEvents = [ + 'Unified SwapBridge Quotes Requested', + 'Unified SwapBridge Quotes Received', + 'Unified SwapBridge Submitted', + 'Unified SwapBridge Completed', + ]; + requestedToCompletedEvents.forEach((e, idx) => { + assert.ok( + e.event === expectedEvents[idx], + `${e.event} event validation failed`, + ); + }); + + const quotesReceivedEvent = requestedToCompletedEvents[1]; + assert.ok( + quotesReceivedEvent.properties.quotes_count === 4, + `Quote count validation failed. Actual value: ${quotesReceivedEvent.properties.quotes_count}`, + ); + assert.ok( + quotesReceivedEvent.properties.usd_quoted_gas === 28.371668300803776, + `Quoted gas validation failed. Actual value: ${quotesReceivedEvent.properties.usd_quoted_gas}`, + ); + assert.ok( + quotesReceivedEvent.properties.provider === '1inch_1inch', + `Quoted gas validation failed. Actual value: ${quotesReceivedEvent.properties.provider}`, + ); + }, + ); + }); + + it('submits trade before streaming is finished', async function () { + await withFixtures( + getBridgeFixtures( + this.test?.fullTitle(), + BRIDGE_FEATURE_FLAGS_WITH_SSE_ENABLED, + false, + true, + ), + async ({ driver, mockedEndpoint: mockedEndpoints }) => { + await unlockWallet(driver); + + const homePage = new HomePage(driver); + await homePage.checkPageIsLoaded(); + await homePage.goToTokensTab(); + await homePage.goToActivityList(); + + await bridgeTransaction({ + driver, + quote: { + amount: '1', + }, + expectedTransactionsCount: 1, + expectedSwapTokens: { + tokenFrom: 'ETH', + tokenTo: 'MUSD', + }, + expectedDestAmount: '3.011', + }); + + const events = (await getEventPayloads(driver, mockedEndpoints)).filter( + (e) => e?.event?.includes('Unified SwapBridge'), + ); + const requestedToCompletedEvents = events.slice(6); + + const expectedEvents = [ + 'Unified SwapBridge Quotes Requested', + 'Unified SwapBridge Quotes Received', + 'Unified SwapBridge Submitted', + 'Unified SwapBridge Completed', + ]; + requestedToCompletedEvents.forEach((e, idx) => { + assert.ok( + e.event === expectedEvents[idx], + `${e.event} event validation failed`, + ); + }); + + const quotesReceivedEvent = requestedToCompletedEvents[1]; + + assert.ok( + quotesReceivedEvent.properties.quotes_count === 2, + `Quote count validation failed. Actual value: ${quotesReceivedEvent.properties.quotes_count}`, + ); + assert.ok( + quotesReceivedEvent.properties.usd_quoted_gas === 18.796416654764112, + `Quoted gas validation failed. Actual value: ${quotesReceivedEvent.properties.usd_quoted_gas}`, + ); + assert.ok( + quotesReceivedEvent.properties.provider === 'openocean_openocean', + `Quoted gas validation failed. Actual value: ${quotesReceivedEvent.properties.provider}`, + ); }, ); }); diff --git a/ui/ducks/bridge-status/actions.ts b/ui/ducks/bridge-status/actions.ts index a81349902d3..fbde188fb37 100644 --- a/ui/ducks/bridge-status/actions.ts +++ b/ui/ducks/bridge-status/actions.ts @@ -1,4 +1,9 @@ -import { QuoteMetadata, QuoteResponse } from '@metamask/bridge-controller'; +import { + type QuoteMetadata, + type QuoteResponse, + UnifiedSwapBridgeEventName, + type RequiredEventContextFromClient, +} from '@metamask/bridge-controller'; import { BridgeStatusAction } from '@metamask/bridge-status-controller'; import { forceUpdateMetamaskState } from '../../store/actions'; import { submitRequestToBackground } from '../../store/background-connection'; @@ -23,21 +28,29 @@ const callBridgeStatusControllerMethod = ( * @param accountAddress * @param quote * @param isStxSupportedInClient + * @param context * @returns */ export const submitBridgeTx = ( accountAddress: string, quote: QuoteResponse & QuoteMetadata, isStxSupportedInClient: boolean, + context: RequiredEventContextFromClient[UnifiedSwapBridgeEventName.QuotesReceived], ) => { return async (dispatch: MetaMaskReduxDispatch) => { return dispatch( callBridgeStatusControllerMethod< - [string, QuoteResponse & QuoteMetadata, boolean] + [ + string, + QuoteResponse & QuoteMetadata, + boolean, + RequiredEventContextFromClient[UnifiedSwapBridgeEventName.QuotesReceived], + ] >(BridgeStatusAction.SUBMIT_TX, [ accountAddress, quote, isStxSupportedInClient, + context, ]), ); }; diff --git a/ui/ducks/bridge/selectors.ts b/ui/ducks/bridge/selectors.ts index c649f7bdf93..fde019b4931 100644 --- a/ui/ducks/bridge/selectors.ts +++ b/ui/ducks/bridge/selectors.ts @@ -17,6 +17,7 @@ import { selectMinimumBalanceForRentExemptionInSOL, isValidQuoteRequest, isCrossChain, + type QuoteWarning, } from '@metamask/bridge-controller'; import type { RemoteFeatureFlagControllerState } from '@metamask/remote-feature-flag-controller'; import { @@ -956,6 +957,26 @@ export const getValidationErrors = createDeepEqualSelector( }, ); +export const getWarningLabels = createSelector( + [getValidationErrors], + ({ + isEstimatedReturnLow, + isNoQuotesAvailable, + isInsufficientGasBalance, + isInsufficientGasForQuote, + isInsufficientBalance, + }) => { + const warnings: QuoteWarning[] = []; + isEstimatedReturnLow && warnings.push('low_return'); + isNoQuotesAvailable && warnings.push('no_quotes'); + isInsufficientGasBalance && warnings.push('insufficient_gas_balance'); + isInsufficientGasForQuote && + warnings.push('insufficient_gas_for_selected_quote'); + isInsufficientBalance && warnings.push('insufficient_balance'); + return warnings; + }, +); + export const getWasTxDeclined = (state: BridgeAppState): boolean => { return state.bridge.wasTxDeclined; }; diff --git a/ui/hooks/bridge/useQuoteFetchEvents.ts b/ui/hooks/bridge/useQuoteFetchEvents.ts index c4f4d36e9ca..57b7e28ef10 100644 --- a/ui/hooks/bridge/useQuoteFetchEvents.ts +++ b/ui/hooks/bridge/useQuoteFetchEvents.ts @@ -1,13 +1,13 @@ /* eslint-disable camelcase */ -import { useEffect, useMemo } from 'react'; +import { useEffect } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { - formatProviderLabel, + getQuotesReceivedProperties, UnifiedSwapBridgeEventName, } from '@metamask/bridge-controller'; import { getBridgeQuotes, - getValidationErrors, + getWarningLabels, } from '../../ducks/bridge/selectors'; import { trackUnifiedSwapBridgeEvent } from '../../ducks/bridge/actions'; import { useIsTxSubmittable } from './useIsTxSubmittable'; @@ -23,65 +23,21 @@ export const useQuoteFetchEvents = () => { recommendedQuote, } = useSelector(getBridgeQuotes); const isTxSubmittable = useIsTxSubmittable(); - const validationErrors = useSelector(getValidationErrors); - - const warnings = useMemo(() => { - const { - isEstimatedReturnLow, - isNoQuotesAvailable, - isInsufficientGasBalance, - isInsufficientGasForQuote, - isInsufficientBalance, - } = validationErrors; - - const latestWarnings = []; - - isEstimatedReturnLow && latestWarnings.push('low_return'); - isNoQuotesAvailable && latestWarnings.push('no_quotes'); - isInsufficientGasBalance && latestWarnings.push('insufficient_gas_balance'); - isInsufficientGasForQuote && - latestWarnings.push('insufficient_gas_for_selected_quote'); - isInsufficientBalance && latestWarnings.push('insufficient_balance'); - - return latestWarnings; - }, [validationErrors]); + const warnings = useSelector(getWarningLabels); // Emitted each time quotes are fetched successfully useEffect(() => { if (!isLoading && quotesRefreshCount > 0 && !quoteFetchError) { dispatch( - trackUnifiedSwapBridgeEvent(UnifiedSwapBridgeEventName.QuotesReceived, { - // TODO: Fix in https://github.com/MetaMask/metamask-extension/issues/31860 - // eslint-disable-next-line @typescript-eslint/naming-convention - can_submit: isTxSubmittable, - // TODO: Fix in https://github.com/MetaMask/metamask-extension/issues/31860 - // eslint-disable-next-line @typescript-eslint/naming-convention - gas_included: Boolean(activeQuote?.quote?.gasIncluded), - // TODO: Fix in https://github.com/MetaMask/metamask-extension/issues/31860 - // eslint-disable-next-line @typescript-eslint/naming-convention - gas_included_7702: Boolean(activeQuote?.quote?.gasIncluded7702), - // TODO: Fix in https://github.com/MetaMask/metamask-extension/issues/31860 - // eslint-disable-next-line @typescript-eslint/naming-convention - quoted_time_minutes: activeQuote?.estimatedProcessingTimeInSeconds - ? activeQuote.estimatedProcessingTimeInSeconds / 60 - : 0, - // TODO: Fix in https://github.com/MetaMask/metamask-extension/issues/31860 - // eslint-disable-next-line @typescript-eslint/naming-convention - usd_quoted_gas: Number(activeQuote?.gasFee?.effective?.usd ?? 0), - // TODO: Fix in https://github.com/MetaMask/metamask-extension/issues/31860 - // eslint-disable-next-line @typescript-eslint/naming-convention - usd_quoted_return: Number(activeQuote?.toTokenAmount?.usd ?? 0), - // TODO: Fix in https://github.com/MetaMask/metamask-extension/issues/31860 - // eslint-disable-next-line @typescript-eslint/naming-convention - best_quote_provider: recommendedQuote - ? formatProviderLabel(recommendedQuote.quote) - : undefined, - provider: activeQuote ? formatProviderLabel(activeQuote.quote) : '_', - warnings, - // TODO: Fix in https://github.com/MetaMask/metamask-extension/issues/31860 - // eslint-disable-next-line @typescript-eslint/naming-convention - price_impact: Number(activeQuote?.quote.priceData?.priceImpact ?? 0), - }), + trackUnifiedSwapBridgeEvent( + UnifiedSwapBridgeEventName.QuotesReceived, + getQuotesReceivedProperties( + activeQuote, + warnings, + isTxSubmittable, + recommendedQuote, + ), + ), ); } }, [quotesRefreshCount]); diff --git a/ui/pages/bridge/hooks/__snapshots__/useSubmitBridgeTransaction.test.tsx.snap b/ui/pages/bridge/hooks/__snapshots__/useSubmitBridgeTransaction.test.tsx.snap index 0fd36bc8c33..e601e09fc3c 100644 --- a/ui/pages/bridge/hooks/__snapshots__/useSubmitBridgeTransaction.test.tsx.snap +++ b/ui/pages/bridge/hooks/__snapshots__/useSubmitBridgeTransaction.test.tsx.snap @@ -143,6 +143,18 @@ exports[`ui/pages/bridge/hooks/useSubmitBridgeTransaction submitBridgeTransactio }, }, true, + { + "best_quote_provider": "lifi_across", + "can_submit": true, + "gas_included": false, + "gas_included_7702": false, + "price_impact": 0, + "provider": "lifi_across", + "quoted_time_minutes": 0.25, + "usd_quoted_gas": 0, + "usd_quoted_return": 12, + "warnings": [], + }, ], ] `; @@ -282,6 +294,18 @@ exports[`ui/pages/bridge/hooks/useSubmitBridgeTransaction submitBridgeTransactio }, }, true, + { + "best_quote_provider": "lifi_across", + "can_submit": true, + "gas_included": false, + "gas_included_7702": false, + "price_impact": 0, + "provider": "lifi_across", + "quoted_time_minutes": 0.25, + "usd_quoted_gas": 0, + "usd_quoted_return": 12, + "warnings": [], + }, ], ] `; diff --git a/ui/pages/bridge/hooks/useSubmitBridgeTransaction.ts b/ui/pages/bridge/hooks/useSubmitBridgeTransaction.ts index 5f061e300e4..aff8c0f54b2 100644 --- a/ui/pages/bridge/hooks/useSubmitBridgeTransaction.ts +++ b/ui/pages/bridge/hooks/useSubmitBridgeTransaction.ts @@ -1,5 +1,8 @@ import { useDispatch, useSelector } from 'react-redux'; -import { isNonEvmChainId } from '@metamask/bridge-controller'; +import { + getQuotesReceivedProperties, + isNonEvmChainId, +} from '@metamask/bridge-controller'; import type { QuoteMetadata, QuoteResponse } from '@metamask/bridge-controller'; import { AWAITING_SIGNATURES_ROUTE, @@ -12,8 +15,10 @@ import { submitBridgeTx } from '../../../ducks/bridge-status/actions'; import { setWasTxDeclined } from '../../../ducks/bridge/actions'; import { isHardwareWallet } from '../../../../shared/modules/selectors'; import { + getBridgeQuotes, getFromAccount, getIsStxEnabled, + getWarningLabels, } from '../../../ducks/bridge/selectors'; import { captureException } from '../../../../shared/lib/sentry'; import { useSafeNavigation } from '../../../hooks/useSafeNavigation'; @@ -59,6 +64,8 @@ export default function useSubmitBridgeTransaction() { const smartTransactionsEnabled = useSelector(getIsStxEnabled); const fromAccount = useSelector(getFromAccount); + const { recommendedQuote } = useSelector(getBridgeQuotes); + const warnings = useSelector(getWarningLabels); const submitBridgeTransaction = async ( quoteResponse: QuoteResponse & QuoteMetadata, @@ -80,7 +87,18 @@ export default function useSubmitBridgeTransaction() { if (isNonEvmSource) { // Submit the transaction first, THEN navigate await dispatch( - submitBridgeTx(fromAccount.address, quoteResponse, false), + // await submitBridgeTx( + submitBridgeTx( + fromAccount.address, + quoteResponse, + false, + getQuotesReceivedProperties( + quoteResponse, + warnings, + true, + recommendedQuote, + ), + ), ); await dispatch(setDefaultHomeActiveTabName('activity')); navigate(DEFAULT_ROUTE, { state: { stayOnHomePage: true } }); @@ -88,10 +106,17 @@ export default function useSubmitBridgeTransaction() { } await dispatch( + // await submitBridgeTx( submitBridgeTx( fromAccount.address, quoteResponse, smartTransactionsEnabled, + getQuotesReceivedProperties( + quoteResponse, + warnings, + true, + recommendedQuote, + ), ), ); } catch (e) { diff --git a/ui/pages/bridge/prepare/bridge-cta-button.test.tsx b/ui/pages/bridge/prepare/bridge-cta-button.test.tsx index f42b909948d..41912fec3d2 100644 --- a/ui/pages/bridge/prepare/bridge-cta-button.test.tsx +++ b/ui/pages/bridge/prepare/bridge-cta-button.test.tsx @@ -214,8 +214,8 @@ describe('BridgeCTAButton', () => { { isInsufficientGasForQuote: true }, 'Insufficient funds', ], - ['disable', 'the estimated return is low', { isEstimatedReturnLow: true }], - ['disable', 'there are no validation errors', {}, 'Swap'], + ['enable', 'the estimated return is low', { isEstimatedReturnLow: true }], + ['enable', 'there are no validation errors', {}, 'Swap'], ])( 'should %s the component when quotes are loading and %s', async ( @@ -278,7 +278,7 @@ describe('BridgeCTAButton', () => { }, ); - it('should disable the component when quotes are loading and there are existing quotes', () => { + it('should not disable the component when quotes are loading and there are existing quotes', () => { const mockStore = createBridgeMockStore({ featureFlagOverrides: { extensionConfig: { @@ -316,12 +316,11 @@ describe('BridgeCTAButton', () => { ); expect(getByText('Swap')).toBeInTheDocument(); - expect(getByRole('button')).toBeDisabled(); + expect(getByRole('button')).not.toBeDisabled(); expect(getByRole('button')).toMatchInlineSnapshot(`