From b0304f3ebfca6875d865fe20319031c643b2a3aa Mon Sep 17 00:00:00 2001 From: Jiexi Luan Date: Fri, 15 Sep 2023 10:37:58 -0700 Subject: [PATCH 01/17] Use assets controller preview --- package.json | 1 + yarn.lock | 63 +++++++++++++++++++++++++++++++--------------------- 2 files changed, 39 insertions(+), 25 deletions(-) diff --git a/package.json b/package.json index 63bd13ec55a4..21d07510231d 100644 --- a/package.json +++ b/package.json @@ -103,6 +103,7 @@ "audit": "yarn npm audit --recursive --environment production --severity moderate" }, "resolutions": { + "@metamask/assets-controllers@^9.2.0": "npm:@metamask-previews/assets-controllers@11.1.0-preview.82c2888", "simple-update-notifier@^1.0.0": "^2.0.0", "@babel/core": "patch:@babel/core@npm%3A7.21.5#./.yarn/patches/@babel-core-npm-7.21.5-c72c337956.patch", "@babel/runtime": "patch:@babel/runtime@npm%3A7.18.9#./.yarn/patches/@babel-runtime-npm-7.18.9-28ca6b5f61.patch", diff --git a/yarn.lock b/yarn.lock index 701f81bc2f04..3e27039e9074 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3752,13 +3752,13 @@ __metadata: languageName: node linkType: hard -"@metamask/abi-utils@npm:^1.2.0": - version: 1.2.0 - resolution: "@metamask/abi-utils@npm:1.2.0" +"@metamask/abi-utils@npm:^2.0.1": + version: 2.0.2 + resolution: "@metamask/abi-utils@npm:2.0.2" dependencies: - "@metamask/utils": "npm:^3.4.1" + "@metamask/utils": "npm:^8.0.0" superstruct: "npm:^1.0.3" - checksum: 94ef4c368adf9e062b90f2851c865ecfc0a8580a774cd5b4e29a382d31f97e51e4d2baf035b5f9f786031b0c1a4536fe2fdd2b7a1d01359a1e24c319debc4eb2 + checksum: 150218e81d4e494196ce967f203a4fa6c03c07dc4e319cf72429cb37586e851adf9b0b89e341faeab38c5f03f6f8dff175486653e9a6da6c7fa9e4c9f96430e9 languageName: node linkType: hard @@ -3795,39 +3795,38 @@ __metadata: languageName: node linkType: hard -"@metamask/assets-controllers@npm:^9.2.0": - version: 9.2.0 - resolution: "@metamask/assets-controllers@npm:9.2.0" +"@metamask/assets-controllers@npm:@metamask-previews/assets-controllers@11.1.0-preview.82c2888": + version: 11.1.0-preview.82c2888 + resolution: "@metamask-previews/assets-controllers@npm:11.1.0-preview.82c2888" dependencies: "@ethersproject/address": "npm:^5.7.0" "@ethersproject/bignumber": "npm:^5.7.0" "@ethersproject/contracts": "npm:^5.7.0" "@ethersproject/providers": "npm:^5.7.0" - "@metamask/abi-utils": "npm:^1.2.0" - "@metamask/approval-controller": "npm:^3.3.0" - "@metamask/base-controller": "npm:^3.0.0" + "@metamask/abi-utils": "npm:^2.0.1" + "@metamask/approval-controller": "npm:^3.5.1" + "@metamask/base-controller": "npm:^3.2.1" "@metamask/contract-metadata": "npm:^2.3.1" - "@metamask/controller-utils": "npm:^4.0.1" + "@metamask/controller-utils": "npm:^4.3.2" + "@metamask/eth-query": "npm:^3.0.1" "@metamask/metamask-eth-abis": "npm:3.0.0" - "@metamask/network-controller": "npm:^10.2.0" - "@metamask/preferences-controller": "npm:^4.1.0" + "@metamask/network-controller": "npm:^12.1.2" + "@metamask/preferences-controller": "npm:^4.4.0" "@metamask/rpc-errors": "npm:^5.1.1" - "@metamask/utils": "npm:^5.0.2" + "@metamask/utils": "npm:^6.2.0" "@types/uuid": "npm:^8.3.0" abort-controller: "npm:^3.0.0" async-mutex: "npm:^0.2.6" - babel-runtime: "npm:^6.26.0" - eth-query: "npm:^2.1.2" ethereumjs-util: "npm:^7.0.10" immer: "npm:^9.0.6" multiformats: "npm:^9.5.2" single-call-balance-checker-abi: "npm:^1.0.0" uuid: "npm:^8.3.2" peerDependencies: - "@metamask/approval-controller": ^3.3.0 - "@metamask/network-controller": ^10.2.0 - "@metamask/preferences-controller": ^4.1.0 - checksum: e95ff62b2287fad7969db43ae720c91c4ae7be42f939f54a47365cf2f052ae3a9333e8868fe74df57d10e67afc55bfc7ba10f8a31869a4940b2e542c6fd44710 + "@metamask/approval-controller": ^3.5.1 + "@metamask/network-controller": ^12.1.2 + "@metamask/preferences-controller": ^4.4.0 + checksum: 975bc5e99120d9f86a49d884ee8a89eb2a912b2ef93a587f8959191406595f1cf813b35428077d7a54188f54027e97fe84c523e6628302040ac51e3d8df2bb42 languageName: node linkType: hard @@ -3894,7 +3893,7 @@ __metadata: languageName: node linkType: hard -"@metamask/controller-utils@npm:^4.0.0, @metamask/controller-utils@npm:^4.0.1, @metamask/controller-utils@npm:^4.1.0, @metamask/controller-utils@npm:^4.2.0, @metamask/controller-utils@npm:^4.3.0, @metamask/controller-utils@npm:^4.3.2": +"@metamask/controller-utils@npm:^4.0.0, @metamask/controller-utils@npm:^4.1.0, @metamask/controller-utils@npm:^4.2.0, @metamask/controller-utils@npm:^4.3.0, @metamask/controller-utils@npm:^4.3.2": version: 4.3.2 resolution: "@metamask/controller-utils@npm:4.3.2" dependencies: @@ -4358,7 +4357,7 @@ __metadata: languageName: node linkType: hard -"@metamask/network-controller@npm:^10.2.0, @metamask/network-controller@npm:^10.3.0": +"@metamask/network-controller@npm:^10.3.0": version: 10.3.1 resolution: "@metamask/network-controller@npm:10.3.1" dependencies: @@ -4560,7 +4559,7 @@ __metadata: languageName: node linkType: hard -"@metamask/preferences-controller@npm:^4.1.0, @metamask/preferences-controller@npm:^4.4.0": +"@metamask/preferences-controller@npm:^4.4.0": version: 4.4.0 resolution: "@metamask/preferences-controller@npm:4.4.0" dependencies: @@ -5092,7 +5091,7 @@ __metadata: languageName: node linkType: hard -"@metamask/utils@npm:^3.0.3, @metamask/utils@npm:^3.4.1": +"@metamask/utils@npm:^3.0.3": version: 3.6.0 resolution: "@metamask/utils@npm:3.6.0" dependencies: @@ -5157,6 +5156,20 @@ __metadata: languageName: node linkType: hard +"@metamask/utils@npm:^8.0.0": + version: 8.1.0 + resolution: "@metamask/utils@npm:8.1.0" + dependencies: + "@ethereumjs/tx": "npm:^4.1.2" + "@noble/hashes": "npm:^1.3.1" + "@types/debug": "npm:^4.1.7" + debug: "npm:^4.3.4" + semver: "npm:^7.5.4" + superstruct: "npm:^1.0.3" + checksum: 00400538ce635841ee97db6ad27ef9bb1e71a047899aa748789da9cbb21926eac37a91d366fbfaf1d3138b7a8d4bb2b5c23edf532f7896af3e377429d9ae577e + languageName: node + linkType: hard + "@multiformats/base-x@npm:^4.0.1": version: 4.0.1 resolution: "@multiformats/base-x@npm:4.0.1" From 2e0d43359d54fd2b351f4b72565684ff312f5bea Mon Sep 17 00:00:00 2001 From: Jiexi Luan Date: Fri, 15 Sep 2023 11:52:59 -0700 Subject: [PATCH 02/17] Updated asset-controllers preview build --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 21d07510231d..b6a72433cc7b 100644 --- a/package.json +++ b/package.json @@ -103,7 +103,7 @@ "audit": "yarn npm audit --recursive --environment production --severity moderate" }, "resolutions": { - "@metamask/assets-controllers@^9.2.0": "npm:@metamask-previews/assets-controllers@11.1.0-preview.82c2888", + "@metamask/assets-controllers@^9.2.0": "npm:@metamask-previews/assets-controllers@11.1.0-preview.2f7e793", "simple-update-notifier@^1.0.0": "^2.0.0", "@babel/core": "patch:@babel/core@npm%3A7.21.5#./.yarn/patches/@babel-core-npm-7.21.5-c72c337956.patch", "@babel/runtime": "patch:@babel/runtime@npm%3A7.18.9#./.yarn/patches/@babel-runtime-npm-7.18.9-28ca6b5f61.patch", diff --git a/yarn.lock b/yarn.lock index 3e27039e9074..4cbfcd95294a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3795,9 +3795,9 @@ __metadata: languageName: node linkType: hard -"@metamask/assets-controllers@npm:@metamask-previews/assets-controllers@11.1.0-preview.82c2888": - version: 11.1.0-preview.82c2888 - resolution: "@metamask-previews/assets-controllers@npm:11.1.0-preview.82c2888" +"@metamask/assets-controllers@npm:@metamask-previews/assets-controllers@11.1.0-preview.2f7e793": + version: 11.1.0-preview.2f7e793 + resolution: "@metamask-previews/assets-controllers@npm:11.1.0-preview.2f7e793" dependencies: "@ethersproject/address": "npm:^5.7.0" "@ethersproject/bignumber": "npm:^5.7.0" @@ -3826,7 +3826,7 @@ __metadata: "@metamask/approval-controller": ^3.5.1 "@metamask/network-controller": ^12.1.2 "@metamask/preferences-controller": ^4.4.0 - checksum: 975bc5e99120d9f86a49d884ee8a89eb2a912b2ef93a587f8959191406595f1cf813b35428077d7a54188f54027e97fe84c523e6628302040ac51e3d8df2bb42 + checksum: b14c73f397c89aaf44c444be54f3a3b8847376a546d453d16437740ee8f49cd5832cb40b86f072615c5c2ba016b81f89bfe7dfb031a38b59ceb7d047e06df351 languageName: node linkType: hard From 366f0f34f42017dba0ee6c1ba1ea0cee9a9d573d Mon Sep 17 00:00:00 2001 From: Jiexi Luan Date: Fri, 15 Sep 2023 11:53:49 -0700 Subject: [PATCH 03/17] Update asset controller usage in MMC --- .../rpc-method-middleware/handlers/watch-asset.js | 3 ++- app/scripts/metamask-controller.js | 13 +++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/app/scripts/lib/rpc-method-middleware/handlers/watch-asset.js b/app/scripts/lib/rpc-method-middleware/handlers/watch-asset.js index 2f7fb5d7ab5b..6bce7d7dca18 100644 --- a/app/scripts/lib/rpc-method-middleware/handlers/watch-asset.js +++ b/app/scripts/lib/rpc-method-middleware/handlers/watch-asset.js @@ -40,6 +40,7 @@ async function watchAssetHandler( const { params: { options: asset, type }, origin, + networkClientId, } = req; const { tokenId } = asset; @@ -56,7 +57,7 @@ async function watchAssetHandler( ); } - await handleWatchAssetRequest(asset, type, origin); + await handleWatchAssetRequest({ asset, type, origin, networkClientId }); res.result = true; return end(); } catch (error) { diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index ee08fe92682b..80aeae6a240c 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -456,6 +456,12 @@ export default class MetamaskController extends EventEmitter { networkControllerMessenger, 'NetworkController:stateChange', ), + onTokenListStateChange: (listener) => + this.controllerMessenger.subscribe( + `${this.tokenListController.name}:stateChange`, + listener, + ), + getNetworkClientById: this.networkController.getNetworkClientById.bind(this.networkController), config: { provider: this.provider }, state: initState.TokensController, }); @@ -725,6 +731,9 @@ export default class MetamaskController extends EventEmitter { networkControllerMessenger, 'NetworkController:stateChange', ), + onPreferencesStateChange: this.preferencesController.store.subscribe.bind( + this.preferencesController.store, + ), }, { disabled: @@ -3755,10 +3764,10 @@ export default class MetamaskController extends EventEmitter { }); } - handleWatchAssetRequest = (asset, type, origin) => { + handleWatchAssetRequest = ({ asset, type, origin, networkClientId }) => { switch (type) { case ERC20: - return this.tokensController.watchAsset(asset, type); + return this.tokensController.watchAsset({asset, type, networkClientId}); case ERC721: case ERC1155: return this.nftController.watchNft(asset, type, origin); From 634de7621f1395f6dd61ba0d8c44732c7393cb53 Mon Sep 17 00:00:00 2001 From: Jiexi Luan Date: Fri, 15 Sep 2023 12:02:23 -0700 Subject: [PATCH 04/17] lint --- app/scripts/metamask-controller.js | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 80aeae6a240c..d00706151207 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -460,8 +460,10 @@ export default class MetamaskController extends EventEmitter { this.controllerMessenger.subscribe( `${this.tokenListController.name}:stateChange`, listener, + ), + getNetworkClientById: this.networkController.getNetworkClientById.bind( + this.networkController, ), - getNetworkClientById: this.networkController.getNetworkClientById.bind(this.networkController), config: { provider: this.provider }, state: initState.TokensController, }); @@ -731,9 +733,10 @@ export default class MetamaskController extends EventEmitter { networkControllerMessenger, 'NetworkController:stateChange', ), - onPreferencesStateChange: this.preferencesController.store.subscribe.bind( - this.preferencesController.store, - ), + onPreferencesStateChange: + this.preferencesController.store.subscribe.bind( + this.preferencesController.store, + ), }, { disabled: @@ -3767,7 +3770,11 @@ export default class MetamaskController extends EventEmitter { handleWatchAssetRequest = ({ asset, type, origin, networkClientId }) => { switch (type) { case ERC20: - return this.tokensController.watchAsset({asset, type, networkClientId}); + return this.tokensController.watchAsset({ + asset, + type, + networkClientId, + }); case ERC721: case ERC1155: return this.nftController.watchNft(asset, type, origin); From 5818256d765906baed1669ff93480e7dfc87d4a1 Mon Sep 17 00:00:00 2001 From: Jiexi Luan Date: Fri, 15 Sep 2023 12:52:02 -0700 Subject: [PATCH 05/17] lavamoat --- lavamoat/browserify/beta/policy.json | 18 +++- lavamoat/browserify/desktop/policy.json | 18 +++- lavamoat/browserify/flask/policy.json | 18 +++- lavamoat/browserify/main/policy.json | 18 +++- lavamoat/browserify/mmi/policy.json | 18 +++- lavamoat/build-system/policy.json | 132 ++++++++++++++++++++++-- 6 files changed, 204 insertions(+), 18 deletions(-) diff --git a/lavamoat/browserify/beta/policy.json b/lavamoat/browserify/beta/policy.json index 0530d84fa850..0955e0ae3fe6 100644 --- a/lavamoat/browserify/beta/policy.json +++ b/lavamoat/browserify/beta/policy.json @@ -773,16 +773,16 @@ "@ethersproject/providers": true, "@metamask/assets-controllers>@metamask/abi-utils": true, "@metamask/assets-controllers>@metamask/rpc-errors": true, + "@metamask/assets-controllers>@metamask/utils": true, "@metamask/assets-controllers>abort-controller": true, "@metamask/assets-controllers>multiformats": true, "@metamask/base-controller": true, "@metamask/contract-metadata": true, "@metamask/controller-utils": true, + "@metamask/controller-utils>@metamask/eth-query": true, "@metamask/metamask-eth-abis": true, - "@metamask/utils": true, "browserify>events": true, "eth-json-rpc-filters>async-mutex": true, - "eth-query": true, "ethereumjs-util": true, "single-call-balance-checker-abi": true, "uuid": true @@ -800,6 +800,7 @@ "TextEncoder": true }, "packages": { + "@metamask/key-tree>@noble/hashes": true, "browserify>buffer": true, "nock>debug": true, "semver": true, @@ -812,6 +813,19 @@ "eth-rpc-errors>fast-safe-stringify": true } }, + "@metamask/assets-controllers>@metamask/utils": { + "globals": { + "TextDecoder": true, + "TextEncoder": true + }, + "packages": { + "@metamask/key-tree>@noble/hashes": true, + "browserify>buffer": true, + "nock>debug": true, + "semver": true, + "superstruct": true + } + }, "@metamask/assets-controllers>abort-controller": { "globals": { "AbortController": true diff --git a/lavamoat/browserify/desktop/policy.json b/lavamoat/browserify/desktop/policy.json index bdd2ba925bb9..d9b11c043e27 100644 --- a/lavamoat/browserify/desktop/policy.json +++ b/lavamoat/browserify/desktop/policy.json @@ -773,16 +773,16 @@ "@ethersproject/providers": true, "@metamask/assets-controllers>@metamask/abi-utils": true, "@metamask/assets-controllers>@metamask/rpc-errors": true, + "@metamask/assets-controllers>@metamask/utils": true, "@metamask/assets-controllers>abort-controller": true, "@metamask/assets-controllers>multiformats": true, "@metamask/base-controller": true, "@metamask/contract-metadata": true, "@metamask/controller-utils": true, + "@metamask/controller-utils>@metamask/eth-query": true, "@metamask/metamask-eth-abis": true, - "@metamask/utils": true, "browserify>events": true, "eth-json-rpc-filters>async-mutex": true, - "eth-query": true, "ethereumjs-util": true, "single-call-balance-checker-abi": true, "uuid": true @@ -800,6 +800,7 @@ "TextEncoder": true }, "packages": { + "@metamask/key-tree>@noble/hashes": true, "browserify>buffer": true, "nock>debug": true, "semver": true, @@ -812,6 +813,19 @@ "eth-rpc-errors>fast-safe-stringify": true } }, + "@metamask/assets-controllers>@metamask/utils": { + "globals": { + "TextDecoder": true, + "TextEncoder": true + }, + "packages": { + "@metamask/key-tree>@noble/hashes": true, + "browserify>buffer": true, + "nock>debug": true, + "semver": true, + "superstruct": true + } + }, "@metamask/assets-controllers>abort-controller": { "globals": { "AbortController": true diff --git a/lavamoat/browserify/flask/policy.json b/lavamoat/browserify/flask/policy.json index 2f97fd964747..612b7b7f34cf 100644 --- a/lavamoat/browserify/flask/policy.json +++ b/lavamoat/browserify/flask/policy.json @@ -773,16 +773,16 @@ "@ethersproject/providers": true, "@metamask/assets-controllers>@metamask/abi-utils": true, "@metamask/assets-controllers>@metamask/rpc-errors": true, + "@metamask/assets-controllers>@metamask/utils": true, "@metamask/assets-controllers>abort-controller": true, "@metamask/assets-controllers>multiformats": true, "@metamask/base-controller": true, "@metamask/contract-metadata": true, "@metamask/controller-utils": true, + "@metamask/controller-utils>@metamask/eth-query": true, "@metamask/metamask-eth-abis": true, - "@metamask/utils": true, "browserify>events": true, "eth-json-rpc-filters>async-mutex": true, - "eth-query": true, "ethereumjs-util": true, "single-call-balance-checker-abi": true, "uuid": true @@ -800,6 +800,7 @@ "TextEncoder": true }, "packages": { + "@metamask/key-tree>@noble/hashes": true, "browserify>buffer": true, "nock>debug": true, "semver": true, @@ -812,6 +813,19 @@ "eth-rpc-errors>fast-safe-stringify": true } }, + "@metamask/assets-controllers>@metamask/utils": { + "globals": { + "TextDecoder": true, + "TextEncoder": true + }, + "packages": { + "@metamask/key-tree>@noble/hashes": true, + "browserify>buffer": true, + "nock>debug": true, + "semver": true, + "superstruct": true + } + }, "@metamask/assets-controllers>abort-controller": { "globals": { "AbortController": true diff --git a/lavamoat/browserify/main/policy.json b/lavamoat/browserify/main/policy.json index 8f1f171aa469..24cc82c219b8 100644 --- a/lavamoat/browserify/main/policy.json +++ b/lavamoat/browserify/main/policy.json @@ -773,16 +773,16 @@ "@ethersproject/providers": true, "@metamask/assets-controllers>@metamask/abi-utils": true, "@metamask/assets-controllers>@metamask/rpc-errors": true, + "@metamask/assets-controllers>@metamask/utils": true, "@metamask/assets-controllers>abort-controller": true, "@metamask/assets-controllers>multiformats": true, "@metamask/base-controller": true, "@metamask/contract-metadata": true, "@metamask/controller-utils": true, + "@metamask/controller-utils>@metamask/eth-query": true, "@metamask/metamask-eth-abis": true, - "@metamask/utils": true, "browserify>events": true, "eth-json-rpc-filters>async-mutex": true, - "eth-query": true, "ethereumjs-util": true, "single-call-balance-checker-abi": true, "uuid": true @@ -800,6 +800,7 @@ "TextEncoder": true }, "packages": { + "@metamask/key-tree>@noble/hashes": true, "browserify>buffer": true, "nock>debug": true, "semver": true, @@ -812,6 +813,19 @@ "eth-rpc-errors>fast-safe-stringify": true } }, + "@metamask/assets-controllers>@metamask/utils": { + "globals": { + "TextDecoder": true, + "TextEncoder": true + }, + "packages": { + "@metamask/key-tree>@noble/hashes": true, + "browserify>buffer": true, + "nock>debug": true, + "semver": true, + "superstruct": true + } + }, "@metamask/assets-controllers>abort-controller": { "globals": { "AbortController": true diff --git a/lavamoat/browserify/mmi/policy.json b/lavamoat/browserify/mmi/policy.json index 578f541b1d3e..7a7ae4b84c56 100644 --- a/lavamoat/browserify/mmi/policy.json +++ b/lavamoat/browserify/mmi/policy.json @@ -914,16 +914,16 @@ "@ethersproject/providers": true, "@metamask/assets-controllers>@metamask/abi-utils": true, "@metamask/assets-controllers>@metamask/rpc-errors": true, + "@metamask/assets-controllers>@metamask/utils": true, "@metamask/assets-controllers>abort-controller": true, "@metamask/assets-controllers>multiformats": true, "@metamask/base-controller": true, "@metamask/contract-metadata": true, "@metamask/controller-utils": true, + "@metamask/controller-utils>@metamask/eth-query": true, "@metamask/metamask-eth-abis": true, - "@metamask/utils": true, "browserify>events": true, "eth-json-rpc-filters>async-mutex": true, - "eth-query": true, "ethereumjs-util": true, "single-call-balance-checker-abi": true, "uuid": true @@ -941,6 +941,7 @@ "TextEncoder": true }, "packages": { + "@metamask/key-tree>@noble/hashes": true, "browserify>buffer": true, "nock>debug": true, "semver": true, @@ -953,6 +954,19 @@ "eth-rpc-errors>fast-safe-stringify": true } }, + "@metamask/assets-controllers>@metamask/utils": { + "globals": { + "TextDecoder": true, + "TextEncoder": true + }, + "packages": { + "@metamask/key-tree>@noble/hashes": true, + "browserify>buffer": true, + "nock>debug": true, + "semver": true, + "superstruct": true + } + }, "@metamask/assets-controllers>abort-controller": { "globals": { "AbortController": true diff --git a/lavamoat/build-system/policy.json b/lavamoat/build-system/policy.json index 4ab9521cfbeb..96fef5e24515 100644 --- a/lavamoat/build-system/policy.json +++ b/lavamoat/build-system/policy.json @@ -1134,6 +1134,21 @@ "string.prototype.matchall>side-channel": true } }, + "@storybook/addon-mdx-gfm>@storybook/node-logger>npmlog>gauge>has-unicode": { + "builtin": { + "os.type": true + }, + "globals": { + "process.env.LANG": true, + "process.env.LC_ALL": true, + "process.env.LC_CTYPE": true + } + }, + "@storybook/addon-mdx-gfm>@storybook/node-logger>npmlog>gauge>wide-align": { + "packages": { + "yargs>string-width": true + } + }, "@storybook/core>@storybook/core-server>x-default-browser>default-browser-id>untildify>os-homedir": { "builtin": { "os.homedir": true @@ -4999,6 +5014,7 @@ "@lavamoat/allow-scripts>@npmcli/run-script>node-gyp>npmlog": true, "gulp-watch>chokidar>fsevents>node-pre-gyp>detect-libc": true, "gulp-watch>chokidar>fsevents>node-pre-gyp>nopt": true, + "gulp-watch>chokidar>fsevents>node-pre-gyp>npmlog": true, "gulp-watch>chokidar>fsevents>node-pre-gyp>rimraf": true, "gulp-watch>chokidar>fsevents>node-pre-gyp>semver": true } @@ -5056,9 +5072,20 @@ }, "packages": { "@storybook/core>@storybook/core-server>x-default-browser>default-browser-id>untildify>os-homedir": true, + "gulp-watch>chokidar>fsevents>node-pre-gyp>nopt>osenv>os-homedir": true, "gulp-watch>chokidar>fsevents>node-pre-gyp>nopt>osenv>os-tmpdir": true } }, + "gulp-watch>chokidar>fsevents>node-pre-gyp>nopt>osenv>os-homedir": { + "builtin": { + "os.homedir": true + }, + "globals": { + "process.env": true, + "process.getuid": true, + "process.platform": true + } + }, "gulp-watch>chokidar>fsevents>node-pre-gyp>nopt>osenv>os-tmpdir": { "globals": { "process.env.SystemRoot": true, @@ -5069,6 +5096,70 @@ "process.platform": true } }, + "gulp-watch>chokidar>fsevents>node-pre-gyp>npmlog": { + "builtin": { + "events.EventEmitter": true, + "util": true + }, + "globals": { + "process.nextTick": true, + "process.stderr": true + }, + "packages": { + "@storybook/addon-mdx-gfm>@storybook/node-logger>npmlog>console-control-strings": true, + "gulp-watch>chokidar>fsevents>node-pre-gyp>npmlog>are-we-there-yet": true, + "gulp-watch>chokidar>fsevents>node-pre-gyp>npmlog>gauge": true, + "nyc>yargs>set-blocking": true + } + }, + "gulp-watch>chokidar>fsevents>node-pre-gyp>npmlog>are-we-there-yet": { + "builtin": { + "events.EventEmitter": true, + "util.inherits": true + }, + "packages": { + "koa>delegates": true, + "readable-stream": true + } + }, + "gulp-watch>chokidar>fsevents>node-pre-gyp>npmlog>gauge": { + "builtin": { + "util.format": true + }, + "globals": { + "clearInterval": true, + "process": true, + "setImmediate": true, + "setInterval": true + }, + "packages": { + "@storybook/addon-mdx-gfm>@storybook/node-logger>npmlog>console-control-strings": true, + "@storybook/addon-mdx-gfm>@storybook/node-logger>npmlog>gauge>has-unicode": true, + "@storybook/addon-mdx-gfm>@storybook/node-logger>npmlog>gauge>wide-align": true, + "gulp-watch>chokidar>fsevents>node-pre-gyp>npmlog>gauge>aproba": true, + "gulp-watch>chokidar>fsevents>node-pre-gyp>npmlog>gauge>string-width": true, + "gulp-watch>chokidar>fsevents>node-pre-gyp>npmlog>gauge>strip-ansi": true, + "nyc>signal-exit": true, + "react>object-assign": true + } + }, + "gulp-watch>chokidar>fsevents>node-pre-gyp>npmlog>gauge>string-width": { + "packages": { + "gulp-watch>chokidar>fsevents>node-pre-gyp>npmlog>gauge>string-width>is-fullwidth-code-point": true, + "gulp-watch>chokidar>fsevents>node-pre-gyp>npmlog>gauge>strip-ansi": true, + "gulp>gulp-cli>yargs>string-width>code-point-at": true + } + }, + "gulp-watch>chokidar>fsevents>node-pre-gyp>npmlog>gauge>string-width>is-fullwidth-code-point": { + "packages": { + "gulp>gulp-cli>yargs>string-width>is-fullwidth-code-point>number-is-nan": true + } + }, + "gulp-watch>chokidar>fsevents>node-pre-gyp>npmlog>gauge>strip-ansi": { + "packages": { + "gulp-watch>chokidar>fsevents>node-pre-gyp>npmlog>gauge>strip-ansi>ansi-regex": true + } + }, "gulp-watch>chokidar>fsevents>node-pre-gyp>rimraf": { "builtin": { "assert": true, @@ -5080,9 +5171,34 @@ "setTimeout": true }, "packages": { + "gulp-watch>chokidar>fsevents>node-pre-gyp>rimraf>glob": true, "nyc>glob": true } }, + "gulp-watch>chokidar>fsevents>node-pre-gyp>rimraf>glob": { + "builtin": { + "assert": true, + "events.EventEmitter": true, + "fs": true, + "path.join": true, + "path.resolve": true, + "util": true + }, + "globals": { + "console.error": true, + "process.cwd": true, + "process.nextTick": true, + "process.platform": true + }, + "packages": { + "eslint>minimatch": true, + "gulp-watch>path-is-absolute": true, + "nyc>glob>fs.realpath": true, + "nyc>glob>inflight": true, + "pump>once": true, + "pumpify>inherits": true + } + }, "gulp-watch>chokidar>fsevents>node-pre-gyp>semver": { "globals": { "console": true, @@ -6530,6 +6646,13 @@ "process.platform": true } }, + "mockttp>portfinder>mkdirp": { + "builtin": { + "fs": true, + "path.dirname": true, + "path.resolve": true + } + }, "nock>debug": { "builtin": { "tty.isatty": true, @@ -8137,14 +8260,7 @@ "path.dirname": true }, "packages": { - "stylelint>file-entry-cache>flat-cache>write>mkdirp": true - } - }, - "stylelint>file-entry-cache>flat-cache>write>mkdirp": { - "builtin": { - "fs": true, - "path.dirname": true, - "path.resolve": true + "mockttp>portfinder>mkdirp": true } }, "stylelint>global-modules": { From 70be99ae802fee8dd2f0c652d2117a6e7e89dff8 Mon Sep 17 00:00:00 2001 From: Jiexi Luan Date: Fri, 15 Sep 2023 13:14:08 -0700 Subject: [PATCH 06/17] fix specs --- app/scripts/controllers/detect-tokens.test.js | 11 +++++++++++ app/scripts/metamask-controller.actions.test.js | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/app/scripts/controllers/detect-tokens.test.js b/app/scripts/controllers/detect-tokens.test.js index 8d1c182c249e..91a932535aa0 100644 --- a/app/scripts/controllers/detect-tokens.test.js +++ b/app/scripts/controllers/detect-tokens.test.js @@ -209,6 +209,7 @@ describe('DetectTokensController', function () { const tokenListMessenger = new ControllerMessenger().getRestricted({ name: 'TokenListController', + allowedEvents: ['TokenListController:stateChange'], }); tokenListController = new TokenListController({ chainId: toHex(1), @@ -243,6 +244,11 @@ describe('DetectTokensController', function () { networkControllerMessenger, 'NetworkController:stateChange', ), + onTokenListStateChange: (listener) => + tokenListMessenger.subscribe( + `${tokenListController.name}:stateChange`, + listener, + ), }); assetsContractController = new AssetsContractController({ @@ -356,6 +362,7 @@ describe('DetectTokensController', function () { aggregators: undefined, image: undefined, isERC721: undefined, + name: undefined, }, ]); @@ -377,6 +384,7 @@ describe('DetectTokensController', function () { aggregators: undefined, image: undefined, isERC721: undefined, + name: undefined, }, ]); }); @@ -411,6 +419,7 @@ describe('DetectTokensController', function () { aggregators: undefined, image: undefined, isERC721: undefined, + name: undefined, }, ]); const tokenAddressToAdd = erc20ContractAddresses[1]; @@ -429,6 +438,7 @@ describe('DetectTokensController', function () { aggregators: undefined, image: undefined, isERC721: undefined, + name: undefined, }, { address: toChecksumHexAddress(tokenAddressToAdd), @@ -437,6 +447,7 @@ describe('DetectTokensController', function () { aggregators: undefined, image: undefined, isERC721: undefined, + name: undefined, }, ]); }); diff --git a/app/scripts/metamask-controller.actions.test.js b/app/scripts/metamask-controller.actions.test.js index a0dba444b2df..d00c9d7b5028 100644 --- a/app/scripts/metamask-controller.actions.test.js +++ b/app/scripts/metamask-controller.actions.test.js @@ -244,8 +244,8 @@ describe('MetaMaskController', function () { ); const [token1, token2] = await Promise.all([ - metamaskController.getApi().addToken(address, symbol, decimals), - metamaskController.getApi().addToken(address, symbol, decimals), + metamaskController.getApi().addToken({ address, symbol, decimals }), + metamaskController.getApi().addToken({ address, symbol, decimals }), ]); assert.deepEqual(token1, token2); }); From cf25215d46948c5248861245714601987ee37869 Mon Sep 17 00:00:00 2001 From: Jiexi Luan Date: Thu, 21 Sep 2023 14:41:21 -0700 Subject: [PATCH 07/17] Use new preview build --- lavamoat/browserify/beta/policy.json | 30 +++++++++---- lavamoat/browserify/desktop/policy.json | 30 +++++++++---- lavamoat/browserify/flask/policy.json | 30 +++++++++---- lavamoat/browserify/main/policy.json | 30 +++++++++---- lavamoat/browserify/mmi/policy.json | 30 +++++++++---- package.json | 2 +- yarn.lock | 56 ++++++++++--------------- 7 files changed, 133 insertions(+), 75 deletions(-) diff --git a/lavamoat/browserify/beta/policy.json b/lavamoat/browserify/beta/policy.json index 0955e0ae3fe6..e91c0b7b39ad 100644 --- a/lavamoat/browserify/beta/policy.json +++ b/lavamoat/browserify/beta/policy.json @@ -936,25 +936,39 @@ "setTimeout": true }, "packages": { - "@metamask/eth-json-rpc-middleware>@metamask/utils": true, + "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util": true, "@metamask/eth-json-rpc-middleware>clone": true, "@metamask/eth-json-rpc-middleware>pify": true, "@metamask/eth-json-rpc-middleware>safe-stable-stringify": true, - "@metamask/eth-snap-keyring>@metamask/eth-sig-util": true, + "@metamask/utils": true, "eth-rpc-errors": true, "json-rpc-engine": true } }, - "@metamask/eth-json-rpc-middleware>@metamask/utils": { + "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util": { + "packages": { + "@ethereumjs/tx>@ethereumjs/util": true, + "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>ethereum-cryptography": true, + "bn.js": true, + "browserify>buffer": true, + "eth-sig-util>ethereumjs-util>ethjs-util": true, + "eth-sig-util>tweetnacl": true, + "eth-sig-util>tweetnacl-util": true + } + }, + "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>ethereum-cryptography": { "globals": { "TextDecoder": true, - "TextEncoder": true + "crypto": true }, "packages": { - "browserify>buffer": true, - "nock>debug": true, - "semver": true, - "superstruct": true + "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>ethereum-cryptography>@noble/hashes": true + } + }, + "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true } }, "@metamask/eth-json-rpc-middleware>clone": { diff --git a/lavamoat/browserify/desktop/policy.json b/lavamoat/browserify/desktop/policy.json index d9b11c043e27..36296f62c863 100644 --- a/lavamoat/browserify/desktop/policy.json +++ b/lavamoat/browserify/desktop/policy.json @@ -1007,25 +1007,39 @@ "setTimeout": true }, "packages": { - "@metamask/eth-json-rpc-middleware>@metamask/utils": true, + "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util": true, "@metamask/eth-json-rpc-middleware>clone": true, "@metamask/eth-json-rpc-middleware>pify": true, "@metamask/eth-json-rpc-middleware>safe-stable-stringify": true, - "@metamask/eth-snap-keyring>@metamask/eth-sig-util": true, + "@metamask/utils": true, "eth-rpc-errors": true, "json-rpc-engine": true } }, - "@metamask/eth-json-rpc-middleware>@metamask/utils": { + "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util": { + "packages": { + "@ethereumjs/tx>@ethereumjs/util": true, + "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>ethereum-cryptography": true, + "bn.js": true, + "browserify>buffer": true, + "eth-sig-util>ethereumjs-util>ethjs-util": true, + "eth-sig-util>tweetnacl": true, + "eth-sig-util>tweetnacl-util": true + } + }, + "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>ethereum-cryptography": { "globals": { "TextDecoder": true, - "TextEncoder": true + "crypto": true }, "packages": { - "browserify>buffer": true, - "nock>debug": true, - "semver": true, - "superstruct": true + "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>ethereum-cryptography>@noble/hashes": true + } + }, + "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true } }, "@metamask/eth-json-rpc-middleware>clone": { diff --git a/lavamoat/browserify/flask/policy.json b/lavamoat/browserify/flask/policy.json index 612b7b7f34cf..a1808b666c78 100644 --- a/lavamoat/browserify/flask/policy.json +++ b/lavamoat/browserify/flask/policy.json @@ -1007,25 +1007,39 @@ "setTimeout": true }, "packages": { - "@metamask/eth-json-rpc-middleware>@metamask/utils": true, + "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util": true, "@metamask/eth-json-rpc-middleware>clone": true, "@metamask/eth-json-rpc-middleware>pify": true, "@metamask/eth-json-rpc-middleware>safe-stable-stringify": true, - "@metamask/eth-snap-keyring>@metamask/eth-sig-util": true, + "@metamask/utils": true, "eth-rpc-errors": true, "json-rpc-engine": true } }, - "@metamask/eth-json-rpc-middleware>@metamask/utils": { + "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util": { + "packages": { + "@ethereumjs/tx>@ethereumjs/util": true, + "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>ethereum-cryptography": true, + "bn.js": true, + "browserify>buffer": true, + "eth-sig-util>ethereumjs-util>ethjs-util": true, + "eth-sig-util>tweetnacl": true, + "eth-sig-util>tweetnacl-util": true + } + }, + "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>ethereum-cryptography": { "globals": { "TextDecoder": true, - "TextEncoder": true + "crypto": true }, "packages": { - "browserify>buffer": true, - "nock>debug": true, - "semver": true, - "superstruct": true + "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>ethereum-cryptography>@noble/hashes": true + } + }, + "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true } }, "@metamask/eth-json-rpc-middleware>clone": { diff --git a/lavamoat/browserify/main/policy.json b/lavamoat/browserify/main/policy.json index 24cc82c219b8..40622abafc2c 100644 --- a/lavamoat/browserify/main/policy.json +++ b/lavamoat/browserify/main/policy.json @@ -936,25 +936,39 @@ "setTimeout": true }, "packages": { - "@metamask/eth-json-rpc-middleware>@metamask/utils": true, + "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util": true, "@metamask/eth-json-rpc-middleware>clone": true, "@metamask/eth-json-rpc-middleware>pify": true, "@metamask/eth-json-rpc-middleware>safe-stable-stringify": true, - "@metamask/eth-snap-keyring>@metamask/eth-sig-util": true, + "@metamask/utils": true, "eth-rpc-errors": true, "json-rpc-engine": true } }, - "@metamask/eth-json-rpc-middleware>@metamask/utils": { + "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util": { + "packages": { + "@ethereumjs/tx>@ethereumjs/util": true, + "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>ethereum-cryptography": true, + "bn.js": true, + "browserify>buffer": true, + "eth-sig-util>ethereumjs-util>ethjs-util": true, + "eth-sig-util>tweetnacl": true, + "eth-sig-util>tweetnacl-util": true + } + }, + "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>ethereum-cryptography": { "globals": { "TextDecoder": true, - "TextEncoder": true + "crypto": true }, "packages": { - "browserify>buffer": true, - "nock>debug": true, - "semver": true, - "superstruct": true + "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>ethereum-cryptography>@noble/hashes": true + } + }, + "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true } }, "@metamask/eth-json-rpc-middleware>clone": { diff --git a/lavamoat/browserify/mmi/policy.json b/lavamoat/browserify/mmi/policy.json index 7a7ae4b84c56..42efa43a6526 100644 --- a/lavamoat/browserify/mmi/policy.json +++ b/lavamoat/browserify/mmi/policy.json @@ -1077,25 +1077,39 @@ "setTimeout": true }, "packages": { - "@metamask/eth-json-rpc-middleware>@metamask/utils": true, + "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util": true, "@metamask/eth-json-rpc-middleware>clone": true, "@metamask/eth-json-rpc-middleware>pify": true, "@metamask/eth-json-rpc-middleware>safe-stable-stringify": true, - "@metamask/eth-snap-keyring>@metamask/eth-sig-util": true, + "@metamask/utils": true, "eth-rpc-errors": true, "json-rpc-engine": true } }, - "@metamask/eth-json-rpc-middleware>@metamask/utils": { + "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util": { + "packages": { + "@ethereumjs/tx>@ethereumjs/util": true, + "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>ethereum-cryptography": true, + "bn.js": true, + "browserify>buffer": true, + "eth-sig-util>ethereumjs-util>ethjs-util": true, + "eth-sig-util>tweetnacl": true, + "eth-sig-util>tweetnacl-util": true + } + }, + "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>ethereum-cryptography": { "globals": { "TextDecoder": true, - "TextEncoder": true + "crypto": true }, "packages": { - "browserify>buffer": true, - "nock>debug": true, - "semver": true, - "superstruct": true + "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>ethereum-cryptography>@noble/hashes": true + } + }, + "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true } }, "@metamask/eth-json-rpc-middleware>clone": { diff --git a/package.json b/package.json index b6a72433cc7b..d42d6d6dd570 100644 --- a/package.json +++ b/package.json @@ -103,7 +103,7 @@ "audit": "yarn npm audit --recursive --environment production --severity moderate" }, "resolutions": { - "@metamask/assets-controllers@^9.2.0": "npm:@metamask-previews/assets-controllers@11.1.0-preview.2f7e793", + "@metamask/assets-controllers@^9.2.0": "npm:@metamask-previews/assets-controllers@12.0.0-preview.56ca173", "simple-update-notifier@^1.0.0": "^2.0.0", "@babel/core": "patch:@babel/core@npm%3A7.21.5#./.yarn/patches/@babel-core-npm-7.21.5-c72c337956.patch", "@babel/runtime": "patch:@babel/runtime@npm%3A7.18.9#./.yarn/patches/@babel-runtime-npm-7.18.9-28ca6b5f61.patch", diff --git a/yarn.lock b/yarn.lock index 4cbfcd95294a..181dde5d7738 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3752,7 +3752,7 @@ __metadata: languageName: node linkType: hard -"@metamask/abi-utils@npm:^2.0.1": +"@metamask/abi-utils@npm:^2.0.2": version: 2.0.2 resolution: "@metamask/abi-utils@npm:2.0.2" dependencies: @@ -3795,22 +3795,22 @@ __metadata: languageName: node linkType: hard -"@metamask/assets-controllers@npm:@metamask-previews/assets-controllers@11.1.0-preview.2f7e793": - version: 11.1.0-preview.2f7e793 - resolution: "@metamask-previews/assets-controllers@npm:11.1.0-preview.2f7e793" +"@metamask/assets-controllers@npm:@metamask-previews/assets-controllers@12.0.0-preview.56ca173": + version: 12.0.0-preview.56ca173 + resolution: "@metamask-previews/assets-controllers@npm:12.0.0-preview.56ca173" dependencies: "@ethersproject/address": "npm:^5.7.0" "@ethersproject/bignumber": "npm:^5.7.0" "@ethersproject/contracts": "npm:^5.7.0" "@ethersproject/providers": "npm:^5.7.0" - "@metamask/abi-utils": "npm:^2.0.1" + "@metamask/abi-utils": "npm:^2.0.2" "@metamask/approval-controller": "npm:^3.5.1" "@metamask/base-controller": "npm:^3.2.1" "@metamask/contract-metadata": "npm:^2.3.1" "@metamask/controller-utils": "npm:^4.3.2" "@metamask/eth-query": "npm:^3.0.1" "@metamask/metamask-eth-abis": "npm:3.0.0" - "@metamask/network-controller": "npm:^12.1.2" + "@metamask/network-controller": "npm:^12.2.0" "@metamask/preferences-controller": "npm:^4.4.0" "@metamask/rpc-errors": "npm:^5.1.1" "@metamask/utils": "npm:^6.2.0" @@ -3824,9 +3824,9 @@ __metadata: uuid: "npm:^8.3.2" peerDependencies: "@metamask/approval-controller": ^3.5.1 - "@metamask/network-controller": ^12.1.2 + "@metamask/network-controller": ^12.2.0 "@metamask/preferences-controller": ^4.4.0 - checksum: b14c73f397c89aaf44c444be54f3a3b8847376a546d453d16437740ee8f49cd5832cb40b86f072615c5c2ba016b81f89bfe7dfb031a38b59ceb7d047e06df351 + checksum: 375af17f1f0b58994df12f5c7c185eea589f32bd5d7168c2657c4f1e9fe4f51fc92b7685b4797df83e47d9fbe4cfb125d63ab0cc3f7646bc8e6e901cc95febe7 languageName: node linkType: hard @@ -4019,20 +4019,20 @@ __metadata: languageName: node linkType: hard -"@metamask/eth-json-rpc-middleware@npm:^11.0.0": - version: 11.0.0 - resolution: "@metamask/eth-json-rpc-middleware@npm:11.0.0" +"@metamask/eth-json-rpc-middleware@npm:^11.0.0, @metamask/eth-json-rpc-middleware@npm:^11.0.2": + version: 11.0.2 + resolution: "@metamask/eth-json-rpc-middleware@npm:11.0.2" dependencies: "@metamask/eth-json-rpc-provider": "npm:^1.0.0" - "@metamask/eth-sig-util": "npm:^5.0.0" - "@metamask/utils": "npm:^3.0.3" + "@metamask/eth-sig-util": "npm:^6.0.0" + "@metamask/utils": "npm:^5.0.1" clone: "npm:^2.1.1" - eth-block-tracker: "npm:^7.0.0" + eth-block-tracker: "npm:^7.0.1" eth-rpc-errors: "npm:^4.0.3" json-rpc-engine: "npm:^6.1.0" pify: "npm:^3.0.0" safe-stable-stringify: "npm:^2.3.2" - checksum: c1bcf11d6e0fc2299e1c807c76a0a2002e18ed9a6d229cd05169d076d2292dcd38f70963676acd29c2797e1960f41effea4f105fb354119a06d3237afcc4eb32 + checksum: 188d98dce78f85fc6364ea78b6f7e14a95cdcf0791a187177a1da8e79b8588d1b08141110b570239d92afeb021c08432d5f10948f4bba983acd1665a013b8a2c languageName: node linkType: hard @@ -4110,7 +4110,7 @@ __metadata: languageName: node linkType: hard -"@metamask/eth-sig-util@npm:^5.0.0, @metamask/eth-sig-util@npm:^5.0.1, @metamask/eth-sig-util@npm:^5.0.2, @metamask/eth-sig-util@npm:^5.1.0": +"@metamask/eth-sig-util@npm:^5.0.1, @metamask/eth-sig-util@npm:^5.0.2, @metamask/eth-sig-util@npm:^5.1.0": version: 5.1.0 resolution: "@metamask/eth-sig-util@npm:5.1.0" dependencies: @@ -4380,14 +4380,14 @@ __metadata: languageName: node linkType: hard -"@metamask/network-controller@npm:^12.1.1, @metamask/network-controller@npm:^12.1.2": - version: 12.1.2 - resolution: "@metamask/network-controller@npm:12.1.2" +"@metamask/network-controller@npm:^12.1.1, @metamask/network-controller@npm:^12.1.2, @metamask/network-controller@npm:^12.2.0": + version: 12.2.0 + resolution: "@metamask/network-controller@npm:12.2.0" dependencies: "@metamask/base-controller": "npm:^3.2.1" "@metamask/controller-utils": "npm:^4.3.2" "@metamask/eth-json-rpc-infura": "npm:^8.1.1" - "@metamask/eth-json-rpc-middleware": "npm:^11.0.0" + "@metamask/eth-json-rpc-middleware": "npm:^11.0.2" "@metamask/eth-json-rpc-provider": "npm:^1.0.0" "@metamask/eth-query": "npm:^3.0.1" "@metamask/swappable-obj-proxy": "npm:^2.1.0" @@ -4398,7 +4398,7 @@ __metadata: immer: "npm:^9.0.6" json-rpc-engine: "npm:^6.1.0" uuid: "npm:^8.3.2" - checksum: ec0cd25ac7851ed4b08cc6fb10bc66a83200b2d25efbf4de5a89fc5d9c845e403a59a5f226008460177cc7e2d26a35f38ca139b22e46083c5472bd86239638e5 + checksum: e5497f00c8a6ed5f00a9a5dccc6ff98cc15cc83ec31493e1387f654e038e244dff6b7954422f753d07461e2d4ef9c9dde2337a6cc4c013e3fae045592278da04 languageName: node linkType: hard @@ -5091,18 +5091,6 @@ __metadata: languageName: node linkType: hard -"@metamask/utils@npm:^3.0.3": - version: 3.6.0 - resolution: "@metamask/utils@npm:3.6.0" - dependencies: - "@types/debug": "npm:^4.1.7" - debug: "npm:^4.3.4" - semver: "npm:^7.3.8" - superstruct: "npm:^1.0.3" - checksum: f6a1cf9a2ddbdb9840ed3d93d961d3f7c3feb532361c84a3e54c88034d9a3149a11773948631a25c2b0355712848a6e0b226ad432844703e1f498e9602920879 - languageName: node - linkType: hard - "@metamask/utils@npm:^4.0.0": version: 4.0.0 resolution: "@metamask/utils@npm:4.0.0" @@ -15972,7 +15960,7 @@ __metadata: languageName: node linkType: hard -"eth-block-tracker@npm:^7.0.0, eth-block-tracker@npm:^7.0.1": +"eth-block-tracker@npm:^7.0.1": version: 7.0.1 resolution: "eth-block-tracker@npm:7.0.1" dependencies: From 2b09b233b8f577be47089a075a4af1955919de0a Mon Sep 17 00:00:00 2001 From: Jiexi Luan Date: Thu, 21 Sep 2023 15:00:28 -0700 Subject: [PATCH 08/17] Update addTokens usage --- ui/components/app/detected-token/detected-token.js | 4 +++- .../multichain/import-tokens-modal/import-tokens-modal.js | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ui/components/app/detected-token/detected-token.js b/ui/components/app/detected-token/detected-token.js index 582befda8e9e..3d9038cc52b9 100644 --- a/ui/components/app/detected-token/detected-token.js +++ b/ui/components/app/detected-token/detected-token.js @@ -11,6 +11,7 @@ import { import { getCurrentChainId, getDetectedTokensInCurrentNetwork, + getSelectedNetworkClientId, } from '../../../selectors'; import { MetaMetricsContext } from '../../../contexts/metametrics'; @@ -52,6 +53,7 @@ const DetectedToken = ({ setShowDetectedTokens }) => { const chainId = useSelector(getCurrentChainId); const detectedTokens = useSelector(getDetectedTokensInCurrentNetwork); + const networkClientId = useSelector(getSelectedNetworkClientId); const [tokensListDetected, setTokensListDetected] = useState(() => detectedTokens.reduce((tokenObj, token) => { @@ -81,7 +83,7 @@ const DetectedToken = ({ setShowDetectedTokens }) => { }, }); }); - await dispatch(addImportedTokens(selectedTokens)); + await dispatch(addImportedTokens(selectedTokens, networkClientId)); const tokenSymbols = selectedTokens.map(({ symbol }) => symbol); dispatch(setNewTokensImported(tokenSymbols.join(', '))); }; diff --git a/ui/components/multichain/import-tokens-modal/import-tokens-modal.js b/ui/components/multichain/import-tokens-modal/import-tokens-modal.js index 3bc95be4636f..3239b2cf76f6 100644 --- a/ui/components/multichain/import-tokens-modal/import-tokens-modal.js +++ b/ui/components/multichain/import-tokens-modal/import-tokens-modal.js @@ -21,6 +21,7 @@ import { getMetaMaskIdentities, getRpcPrefsForCurrentProvider, getSelectedAddress, + getSelectedNetworkClientId, getTokenDetectionSupportNetworkByChainId, getTokenList, } from '../../../selectors'; @@ -152,10 +153,11 @@ export const ImportTokensModal = ({ onClose }) => { // CONFIRMATION MODE const trackEvent = useContext(MetaMetricsContext); const pendingTokens = useSelector(getPendingTokens); + const networkClientId = useSelector(getSelectedNetworkClientId); const handleAddTokens = useCallback(async () => { const addedTokenValues = Object.values(pendingTokens); - await dispatch(addImportedTokens(addedTokenValues)); + await dispatch(addImportedTokens(addedTokenValues, networkClientId)); const firstTokenAddress = addedTokenValues?.[0].address?.toLowerCase(); From 19cd4ae1345de4d7d765f717925bd1672e4f6f1c Mon Sep 17 00:00:00 2001 From: Jiexi Luan Date: Tue, 26 Sep 2023 10:28:21 -0700 Subject: [PATCH 09/17] Use new asset-controllers --- lavamoat/browserify/beta/policy.json | 54 ++++++++++++++---------- lavamoat/browserify/desktop/policy.json | 56 +++++++++++++++---------- lavamoat/browserify/flask/policy.json | 56 +++++++++++++++---------- lavamoat/browserify/main/policy.json | 54 ++++++++++++++---------- lavamoat/browserify/mmi/policy.json | 54 ++++++++++++++---------- package.json | 3 +- yarn.lock | 52 ++++++++++++++--------- 7 files changed, 195 insertions(+), 134 deletions(-) diff --git a/lavamoat/browserify/beta/policy.json b/lavamoat/browserify/beta/policy.json index b3be9a5cf5f3..63d18964d11e 100644 --- a/lavamoat/browserify/beta/policy.json +++ b/lavamoat/browserify/beta/policy.json @@ -757,13 +757,13 @@ "@ethersproject/contracts": true, "@ethersproject/providers": true, "@metamask/assets-controllers>@metamask/abi-utils": true, + "@metamask/assets-controllers>@metamask/controller-utils": true, "@metamask/assets-controllers>@metamask/rpc-errors": true, "@metamask/assets-controllers>@metamask/utils": true, "@metamask/assets-controllers>abort-controller": true, "@metamask/assets-controllers>multiformats": true, "@metamask/base-controller": true, "@metamask/contract-metadata": true, - "@metamask/controller-utils": true, "@metamask/controller-utils>@metamask/eth-query": true, "@metamask/metamask-eth-abis": true, "eth-json-rpc-filters>async-mutex": true, @@ -792,12 +792,41 @@ "superstruct": true } }, + "@metamask/assets-controllers>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/assets-controllers>@metamask/utils": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/assets-controllers>@metamask/rpc-errors": { "packages": { - "@metamask/utils": true, + "@metamask/assets-controllers>@metamask/rpc-errors>@metamask/utils": true, "eth-rpc-errors>fast-safe-stringify": true } }, + "@metamask/assets-controllers>@metamask/rpc-errors>@metamask/utils": { + "globals": { + "TextDecoder": true, + "TextEncoder": true + }, + "packages": { + "browserify>buffer": true, + "nock>debug": true, + "semver": true, + "superstruct": true + } + }, "@metamask/assets-controllers>@metamask/utils": { "globals": { "TextDecoder": true, @@ -1722,7 +1751,7 @@ "packages": { "@ethereumjs/tx>@ethereumjs/util": true, "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/message-manager>@metamask/eth-sig-util>@metamask/abi-utils": true, + "@metamask/assets-controllers>@metamask/abi-utils": true, "@metamask/message-manager>@metamask/eth-sig-util>@metamask/utils": true, "browserify>buffer": true, "eth-sig-util>ethereumjs-util>ethjs-util": true, @@ -1730,25 +1759,6 @@ "eth-sig-util>tweetnacl-util": true } }, - "@metamask/message-manager>@metamask/eth-sig-util>@metamask/abi-utils": { - "packages": { - "@metamask/message-manager>@metamask/eth-sig-util>@metamask/abi-utils>@metamask/utils": true, - "superstruct": true - } - }, - "@metamask/message-manager>@metamask/eth-sig-util>@metamask/abi-utils>@metamask/utils": { - "globals": { - "TextDecoder": true, - "TextEncoder": true - }, - "packages": { - "@metamask/key-tree>@noble/hashes": true, - "browserify>buffer": true, - "nock>debug": true, - "semver": true, - "superstruct": true - } - }, "@metamask/message-manager>@metamask/eth-sig-util>@metamask/utils": { "globals": { "TextDecoder": true, diff --git a/lavamoat/browserify/desktop/policy.json b/lavamoat/browserify/desktop/policy.json index ef056fae43d2..256ed4efa59f 100644 --- a/lavamoat/browserify/desktop/policy.json +++ b/lavamoat/browserify/desktop/policy.json @@ -757,13 +757,13 @@ "@ethersproject/contracts": true, "@ethersproject/providers": true, "@metamask/assets-controllers>@metamask/abi-utils": true, + "@metamask/assets-controllers>@metamask/controller-utils": true, "@metamask/assets-controllers>@metamask/rpc-errors": true, "@metamask/assets-controllers>@metamask/utils": true, "@metamask/assets-controllers>abort-controller": true, "@metamask/assets-controllers>multiformats": true, "@metamask/base-controller": true, "@metamask/contract-metadata": true, - "@metamask/controller-utils": true, "@metamask/controller-utils>@metamask/eth-query": true, "@metamask/metamask-eth-abis": true, "eth-json-rpc-filters>async-mutex": true, @@ -792,12 +792,41 @@ "superstruct": true } }, + "@metamask/assets-controllers>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/assets-controllers>@metamask/utils": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/assets-controllers>@metamask/rpc-errors": { "packages": { - "@metamask/utils": true, + "@metamask/assets-controllers>@metamask/rpc-errors>@metamask/utils": true, "eth-rpc-errors>fast-safe-stringify": true } }, + "@metamask/assets-controllers>@metamask/rpc-errors>@metamask/utils": { + "globals": { + "TextDecoder": true, + "TextEncoder": true + }, + "packages": { + "browserify>buffer": true, + "nock>debug": true, + "semver": true, + "superstruct": true + } + }, "@metamask/assets-controllers>@metamask/utils": { "globals": { "TextDecoder": true, @@ -1218,8 +1247,8 @@ "packages": { "@ethereumjs/tx>@ethereumjs/util": true, "@ethereumjs/tx>ethereum-cryptography": true, + "@metamask/assets-controllers>@metamask/abi-utils": true, "@metamask/eth-snap-keyring>@metamask/utils": true, - "@metamask/message-manager>@metamask/eth-sig-util>@metamask/abi-utils": true, "browserify>buffer": true, "eth-sig-util>ethereumjs-util>ethjs-util": true, "eth-sig-util>tweetnacl": true, @@ -1862,7 +1891,7 @@ "packages": { "@ethereumjs/tx>@ethereumjs/util": true, "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/message-manager>@metamask/eth-sig-util>@metamask/abi-utils": true, + "@metamask/assets-controllers>@metamask/abi-utils": true, "@metamask/message-manager>@metamask/eth-sig-util>@metamask/utils": true, "browserify>buffer": true, "eth-sig-util>ethereumjs-util>ethjs-util": true, @@ -1870,25 +1899,6 @@ "eth-sig-util>tweetnacl-util": true } }, - "@metamask/message-manager>@metamask/eth-sig-util>@metamask/abi-utils": { - "packages": { - "@metamask/message-manager>@metamask/eth-sig-util>@metamask/abi-utils>@metamask/utils": true, - "superstruct": true - } - }, - "@metamask/message-manager>@metamask/eth-sig-util>@metamask/abi-utils>@metamask/utils": { - "globals": { - "TextDecoder": true, - "TextEncoder": true - }, - "packages": { - "@metamask/key-tree>@noble/hashes": true, - "browserify>buffer": true, - "nock>debug": true, - "semver": true, - "superstruct": true - } - }, "@metamask/message-manager>@metamask/eth-sig-util>@metamask/utils": { "globals": { "TextDecoder": true, diff --git a/lavamoat/browserify/flask/policy.json b/lavamoat/browserify/flask/policy.json index b9c3312a9222..8becb285956e 100644 --- a/lavamoat/browserify/flask/policy.json +++ b/lavamoat/browserify/flask/policy.json @@ -757,13 +757,13 @@ "@ethersproject/contracts": true, "@ethersproject/providers": true, "@metamask/assets-controllers>@metamask/abi-utils": true, + "@metamask/assets-controllers>@metamask/controller-utils": true, "@metamask/assets-controllers>@metamask/rpc-errors": true, "@metamask/assets-controllers>@metamask/utils": true, "@metamask/assets-controllers>abort-controller": true, "@metamask/assets-controllers>multiformats": true, "@metamask/base-controller": true, "@metamask/contract-metadata": true, - "@metamask/controller-utils": true, "@metamask/controller-utils>@metamask/eth-query": true, "@metamask/metamask-eth-abis": true, "eth-json-rpc-filters>async-mutex": true, @@ -792,12 +792,41 @@ "superstruct": true } }, + "@metamask/assets-controllers>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/assets-controllers>@metamask/utils": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/assets-controllers>@metamask/rpc-errors": { "packages": { - "@metamask/utils": true, + "@metamask/assets-controllers>@metamask/rpc-errors>@metamask/utils": true, "eth-rpc-errors>fast-safe-stringify": true } }, + "@metamask/assets-controllers>@metamask/rpc-errors>@metamask/utils": { + "globals": { + "TextDecoder": true, + "TextEncoder": true + }, + "packages": { + "browserify>buffer": true, + "nock>debug": true, + "semver": true, + "superstruct": true + } + }, "@metamask/assets-controllers>@metamask/utils": { "globals": { "TextDecoder": true, @@ -1218,8 +1247,8 @@ "packages": { "@ethereumjs/tx>@ethereumjs/util": true, "@ethereumjs/tx>ethereum-cryptography": true, + "@metamask/assets-controllers>@metamask/abi-utils": true, "@metamask/eth-snap-keyring>@metamask/utils": true, - "@metamask/message-manager>@metamask/eth-sig-util>@metamask/abi-utils": true, "browserify>buffer": true, "eth-sig-util>ethereumjs-util>ethjs-util": true, "eth-sig-util>tweetnacl": true, @@ -1862,7 +1891,7 @@ "packages": { "@ethereumjs/tx>@ethereumjs/util": true, "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/message-manager>@metamask/eth-sig-util>@metamask/abi-utils": true, + "@metamask/assets-controllers>@metamask/abi-utils": true, "@metamask/message-manager>@metamask/eth-sig-util>@metamask/utils": true, "browserify>buffer": true, "eth-sig-util>ethereumjs-util>ethjs-util": true, @@ -1870,25 +1899,6 @@ "eth-sig-util>tweetnacl-util": true } }, - "@metamask/message-manager>@metamask/eth-sig-util>@metamask/abi-utils": { - "packages": { - "@metamask/message-manager>@metamask/eth-sig-util>@metamask/abi-utils>@metamask/utils": true, - "superstruct": true - } - }, - "@metamask/message-manager>@metamask/eth-sig-util>@metamask/abi-utils>@metamask/utils": { - "globals": { - "TextDecoder": true, - "TextEncoder": true - }, - "packages": { - "@metamask/key-tree>@noble/hashes": true, - "browserify>buffer": true, - "nock>debug": true, - "semver": true, - "superstruct": true - } - }, "@metamask/message-manager>@metamask/eth-sig-util>@metamask/utils": { "globals": { "TextDecoder": true, diff --git a/lavamoat/browserify/main/policy.json b/lavamoat/browserify/main/policy.json index 609ca0838569..786324a2b7f5 100644 --- a/lavamoat/browserify/main/policy.json +++ b/lavamoat/browserify/main/policy.json @@ -757,13 +757,13 @@ "@ethersproject/contracts": true, "@ethersproject/providers": true, "@metamask/assets-controllers>@metamask/abi-utils": true, + "@metamask/assets-controllers>@metamask/controller-utils": true, "@metamask/assets-controllers>@metamask/rpc-errors": true, "@metamask/assets-controllers>@metamask/utils": true, "@metamask/assets-controllers>abort-controller": true, "@metamask/assets-controllers>multiformats": true, "@metamask/base-controller": true, "@metamask/contract-metadata": true, - "@metamask/controller-utils": true, "@metamask/controller-utils>@metamask/eth-query": true, "@metamask/metamask-eth-abis": true, "eth-json-rpc-filters>async-mutex": true, @@ -792,12 +792,41 @@ "superstruct": true } }, + "@metamask/assets-controllers>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/assets-controllers>@metamask/utils": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/assets-controllers>@metamask/rpc-errors": { "packages": { - "@metamask/utils": true, + "@metamask/assets-controllers>@metamask/rpc-errors>@metamask/utils": true, "eth-rpc-errors>fast-safe-stringify": true } }, + "@metamask/assets-controllers>@metamask/rpc-errors>@metamask/utils": { + "globals": { + "TextDecoder": true, + "TextEncoder": true + }, + "packages": { + "browserify>buffer": true, + "nock>debug": true, + "semver": true, + "superstruct": true + } + }, "@metamask/assets-controllers>@metamask/utils": { "globals": { "TextDecoder": true, @@ -1722,7 +1751,7 @@ "packages": { "@ethereumjs/tx>@ethereumjs/util": true, "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/message-manager>@metamask/eth-sig-util>@metamask/abi-utils": true, + "@metamask/assets-controllers>@metamask/abi-utils": true, "@metamask/message-manager>@metamask/eth-sig-util>@metamask/utils": true, "browserify>buffer": true, "eth-sig-util>ethereumjs-util>ethjs-util": true, @@ -1730,25 +1759,6 @@ "eth-sig-util>tweetnacl-util": true } }, - "@metamask/message-manager>@metamask/eth-sig-util>@metamask/abi-utils": { - "packages": { - "@metamask/message-manager>@metamask/eth-sig-util>@metamask/abi-utils>@metamask/utils": true, - "superstruct": true - } - }, - "@metamask/message-manager>@metamask/eth-sig-util>@metamask/abi-utils>@metamask/utils": { - "globals": { - "TextDecoder": true, - "TextEncoder": true - }, - "packages": { - "@metamask/key-tree>@noble/hashes": true, - "browserify>buffer": true, - "nock>debug": true, - "semver": true, - "superstruct": true - } - }, "@metamask/message-manager>@metamask/eth-sig-util>@metamask/utils": { "globals": { "TextDecoder": true, diff --git a/lavamoat/browserify/mmi/policy.json b/lavamoat/browserify/mmi/policy.json index b4ac8f2ab350..3ae34d5614cc 100644 --- a/lavamoat/browserify/mmi/policy.json +++ b/lavamoat/browserify/mmi/policy.json @@ -897,13 +897,13 @@ "@ethersproject/contracts": true, "@ethersproject/providers": true, "@metamask/assets-controllers>@metamask/abi-utils": true, + "@metamask/assets-controllers>@metamask/controller-utils": true, "@metamask/assets-controllers>@metamask/rpc-errors": true, "@metamask/assets-controllers>@metamask/utils": true, "@metamask/assets-controllers>abort-controller": true, "@metamask/assets-controllers>multiformats": true, "@metamask/base-controller": true, "@metamask/contract-metadata": true, - "@metamask/controller-utils": true, "@metamask/controller-utils>@metamask/eth-query": true, "@metamask/metamask-eth-abis": true, "eth-json-rpc-filters>async-mutex": true, @@ -932,12 +932,41 @@ "superstruct": true } }, + "@metamask/assets-controllers>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/assets-controllers>@metamask/utils": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/assets-controllers>@metamask/rpc-errors": { "packages": { - "@metamask/utils": true, + "@metamask/assets-controllers>@metamask/rpc-errors>@metamask/utils": true, "eth-rpc-errors>fast-safe-stringify": true } }, + "@metamask/assets-controllers>@metamask/rpc-errors>@metamask/utils": { + "globals": { + "TextDecoder": true, + "TextEncoder": true + }, + "packages": { + "browserify>buffer": true, + "nock>debug": true, + "semver": true, + "superstruct": true + } + }, "@metamask/assets-controllers>@metamask/utils": { "globals": { "TextDecoder": true, @@ -1862,7 +1891,7 @@ "packages": { "@ethereumjs/tx>@ethereumjs/util": true, "@ethereumjs/tx>ethereum-cryptography": true, - "@metamask/message-manager>@metamask/eth-sig-util>@metamask/abi-utils": true, + "@metamask/assets-controllers>@metamask/abi-utils": true, "@metamask/message-manager>@metamask/eth-sig-util>@metamask/utils": true, "browserify>buffer": true, "eth-sig-util>ethereumjs-util>ethjs-util": true, @@ -1870,25 +1899,6 @@ "eth-sig-util>tweetnacl-util": true } }, - "@metamask/message-manager>@metamask/eth-sig-util>@metamask/abi-utils": { - "packages": { - "@metamask/message-manager>@metamask/eth-sig-util>@metamask/abi-utils>@metamask/utils": true, - "superstruct": true - } - }, - "@metamask/message-manager>@metamask/eth-sig-util>@metamask/abi-utils>@metamask/utils": { - "globals": { - "TextDecoder": true, - "TextEncoder": true - }, - "packages": { - "@metamask/key-tree>@noble/hashes": true, - "browserify>buffer": true, - "nock>debug": true, - "semver": true, - "superstruct": true - } - }, "@metamask/message-manager>@metamask/eth-sig-util>@metamask/utils": { "globals": { "TextDecoder": true, diff --git a/package.json b/package.json index 93db3fbdfe34..f586f682ba7a 100644 --- a/package.json +++ b/package.json @@ -105,7 +105,6 @@ "audit": "yarn npm audit --recursive --environment production --severity moderate" }, "resolutions": { - "@metamask/assets-controllers@^9.2.0": "npm:@metamask-previews/assets-controllers@12.0.0-preview.56ca173", "simple-update-notifier@^1.0.0": "^2.0.0", "@babel/core": "patch:@babel/core@npm%3A7.21.5#./.yarn/patches/@babel-core-npm-7.21.5-c72c337956.patch", "@babel/runtime": "patch:@babel/runtime@npm%3A7.18.9#./.yarn/patches/@babel-runtime-npm-7.18.9-28ca6b5f61.patch", @@ -238,7 +237,7 @@ "@metamask/address-book-controller": "^3.0.0", "@metamask/announcement-controller": "^4.0.0", "@metamask/approval-controller": "^3.4.0", - "@metamask/assets-controllers": "^9.2.0", + "@metamask/assets-controllers": "^13.0.0", "@metamask/base-controller": "^3.2.0", "@metamask/browser-passworder": "^4.1.0", "@metamask/contract-metadata": "^2.3.1", diff --git a/yarn.lock b/yarn.lock index 260d8165fbe6..b7d3d326998c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3795,9 +3795,9 @@ __metadata: languageName: node linkType: hard -"@metamask/assets-controllers@npm:@metamask-previews/assets-controllers@12.0.0-preview.56ca173": - version: 12.0.0-preview.56ca173 - resolution: "@metamask-previews/assets-controllers@npm:12.0.0-preview.56ca173" +"@metamask/assets-controllers@npm:^13.0.0": + version: 13.0.0 + resolution: "@metamask/assets-controllers@npm:13.0.0" dependencies: "@ethersproject/address": "npm:^5.7.0" "@ethersproject/bignumber": "npm:^5.7.0" @@ -3807,11 +3807,11 @@ __metadata: "@metamask/approval-controller": "npm:^3.5.1" "@metamask/base-controller": "npm:^3.2.1" "@metamask/contract-metadata": "npm:^2.3.1" - "@metamask/controller-utils": "npm:^4.3.2" + "@metamask/controller-utils": "npm:^5.0.0" "@metamask/eth-query": "npm:^3.0.1" "@metamask/metamask-eth-abis": "npm:3.0.0" - "@metamask/network-controller": "npm:^12.2.0" - "@metamask/preferences-controller": "npm:^4.4.0" + "@metamask/network-controller": "npm:^13.0.0" + "@metamask/preferences-controller": "npm:^4.4.1" "@metamask/rpc-errors": "npm:^5.1.1" "@metamask/utils": "npm:^6.2.0" "@types/uuid": "npm:^8.3.0" @@ -3824,9 +3824,9 @@ __metadata: uuid: "npm:^8.3.2" peerDependencies: "@metamask/approval-controller": ^3.5.1 - "@metamask/network-controller": ^12.2.0 - "@metamask/preferences-controller": ^4.4.0 - checksum: 375af17f1f0b58994df12f5c7c185eea589f32bd5d7168c2657c4f1e9fe4f51fc92b7685b4797df83e47d9fbe4cfb125d63ab0cc3f7646bc8e6e901cc95febe7 + "@metamask/network-controller": ^13.0.0 + "@metamask/preferences-controller": ^4.4.1 + checksum: cfb770ac88fa31d2435fe22c58046fc0356884c8981202d8b0b55a3e13387c4f807878941873be204a61a5777fc298ae013382e4948113628d232fbd68c31237 languageName: node linkType: hard @@ -4464,6 +4464,28 @@ __metadata: languageName: node linkType: hard +"@metamask/network-controller@npm:^13.0.0": + version: 13.0.0 + resolution: "@metamask/network-controller@npm:13.0.0" + dependencies: + "@metamask/base-controller": "npm:^3.2.1" + "@metamask/controller-utils": "npm:^5.0.0" + "@metamask/eth-json-rpc-infura": "npm:^8.1.1" + "@metamask/eth-json-rpc-middleware": "npm:^11.0.2" + "@metamask/eth-json-rpc-provider": "npm:^1.0.0" + "@metamask/eth-query": "npm:^3.0.1" + "@metamask/swappable-obj-proxy": "npm:^2.1.0" + "@metamask/utils": "npm:^6.2.0" + async-mutex: "npm:^0.2.6" + eth-block-tracker: "npm:^7.0.1" + eth-rpc-errors: "npm:^4.0.2" + immer: "npm:^9.0.6" + json-rpc-engine: "npm:^6.1.0" + uuid: "npm:^8.3.2" + checksum: 42a5fb970ece23219f4a70fb999baacce356a469062f694474b25dd9ce69ec64c88d2c32effc88b915efacfd91bc7b04f0682af6bf4127e504d43caa873b751d + languageName: node + linkType: hard + "@metamask/notification-controller@npm:^3.0.0": version: 3.0.0 resolution: "@metamask/notification-controller@npm:3.0.0" @@ -4621,16 +4643,6 @@ __metadata: languageName: node linkType: hard -"@metamask/preferences-controller@npm:^4.4.0": - version: 4.4.0 - resolution: "@metamask/preferences-controller@npm:4.4.0" - dependencies: - "@metamask/base-controller": "npm:^3.2.1" - "@metamask/controller-utils": "npm:^4.3.2" - checksum: b22372f85e672f3843427a76aca8b675273136f01e68739e81cb2eb391e6d960ccc79473af23b63b22237b5093fcaca41224c1ca4a98582606f4b14b0a9ccd54 - languageName: node - linkType: hard - "@metamask/preferences-controller@npm:^4.4.1": version: 4.4.1 resolution: "@metamask/preferences-controller@npm:4.4.1" @@ -24011,7 +24023,7 @@ __metadata: "@metamask/address-book-controller": "npm:^3.0.0" "@metamask/announcement-controller": "npm:^4.0.0" "@metamask/approval-controller": "npm:^3.4.0" - "@metamask/assets-controllers": "npm:^9.2.0" + "@metamask/assets-controllers": "npm:^13.0.0" "@metamask/auto-changelog": "npm:^2.1.0" "@metamask/base-controller": "npm:^3.2.0" "@metamask/browser-passworder": "npm:^4.1.0" From 5c3806b6a13c0ea36f1f0ed26ac38b02601fa9b1 Mon Sep 17 00:00:00 2001 From: Jiexi Luan Date: Tue, 26 Sep 2023 10:48:39 -0700 Subject: [PATCH 10/17] Update tokenController usage --- ui/ducks/swaps/swaps.js | 23 +++++++++++++++-------- ui/store/actions.ts | 27 ++++++++++++++++++--------- 2 files changed, 33 insertions(+), 17 deletions(-) diff --git a/ui/ducks/swaps/swaps.js b/ui/ducks/swaps/swaps.js index 2c50c80253ca..fffd985ed802 100644 --- a/ui/ducks/swaps/swaps.js +++ b/ui/ducks/swaps/swaps.js @@ -659,6 +659,7 @@ export const fetchQuotesAndSetQuoteState = ( const fetchParams = getFetchParams(state); const selectedAccount = getSelectedAccount(state); + const networkClientId = getSelectedNetworkClientId(state); const balanceError = getBalanceError(state); const swapsDefaultToken = getSwapsDefaultToken(state); const fetchParamsFromToken = @@ -700,10 +701,13 @@ export const fetchQuotesAndSetQuoteState = ( ) { await dispatch( addToken( - toTokenAddress, - toTokenSymbol, - toTokenDecimals, - toTokenIconUrl, + { + address: toTokenAddress, + symbol: toTokenSymbol, + decimals: toTokenDecimals, + image: toTokenIconUrl, + networkClientId, + }, true, ), ); @@ -725,10 +729,13 @@ export const fetchQuotesAndSetQuoteState = ( ) { dispatch( addToken( - fromTokenAddress, - fromTokenSymbol, - fromTokenDecimals, - fromTokenIconUrl, + { + address: fromTokenAddress, + symbol: fromTokenSymbol, + decimals: fromTokenDecimals, + image: fromTokenIconUrl, + networkClientId, + }, true, ), ); diff --git a/ui/store/actions.ts b/ui/store/actions.ts index 4dfefa608109..e4017c93cf09 100644 --- a/ui/store/actions.ts +++ b/ui/store/actions.ts @@ -118,6 +118,7 @@ import { MetaMaskReduxState, TemporaryMessageDataType, } from './store'; +import { NetworkClientId } from '@metamask/network-controller'; export function goHome() { return { @@ -1789,10 +1790,14 @@ export function showConfTxPage({ id }: Partial = {}) { } export function addToken( - address?: string, - symbol?: string, - decimals?: number, - image?: string, + {address, symbol, decimals, image, networkClientId} + : { + address?: string, + symbol?: string, + decimals?: number, + image?: string, + networkClientId?: NetworkClientId + }, dontShowLoadingIndicator?: boolean, ): ThunkAction { return async (dispatch: MetaMaskReduxDispatch) => { @@ -1804,10 +1809,13 @@ export function addToken( } try { await submitRequestToBackground('addToken', [ - address, - symbol, - decimals, - image, + { + address, + symbol, + decimals, + image, + networkClientId + } ]); } catch (error) { logErrorWithMessage(error); @@ -1826,10 +1834,11 @@ export function addToken( */ export function addImportedTokens( tokensToImport: Token[], + networkClientId?: NetworkClientId, ): ThunkAction { return async (dispatch: MetaMaskReduxDispatch) => { try { - await submitRequestToBackground('addImportedTokens', [tokensToImport]); + await submitRequestToBackground('addImportedTokens', [tokensToImport, networkClientId]); } catch (error) { logErrorWithMessage(error); } finally { From e3e8cda76aab973cc23e057bbb4a4bcb1a582d47 Mon Sep 17 00:00:00 2001 From: Jiexi Luan Date: Tue, 26 Sep 2023 10:56:34 -0700 Subject: [PATCH 11/17] WIP --- .../metamask-controller.actions.test.js | 4 +-- ui/ducks/swaps/swaps.js | 1 + ui/store/actions.test.js | 2 ++ ui/store/actions.ts | 31 ++++++++++++------- 4 files changed, 25 insertions(+), 13 deletions(-) diff --git a/app/scripts/metamask-controller.actions.test.js b/app/scripts/metamask-controller.actions.test.js index d00c9d7b5028..e83e38540411 100644 --- a/app/scripts/metamask-controller.actions.test.js +++ b/app/scripts/metamask-controller.actions.test.js @@ -244,8 +244,8 @@ describe('MetaMaskController', function () { ); const [token1, token2] = await Promise.all([ - metamaskController.getApi().addToken({ address, symbol, decimals }), - metamaskController.getApi().addToken({ address, symbol, decimals }), + metamaskController.getApi().addToken({ address, symbol, decimals }), // + metamaskController.getApi().addToken({ address, symbol, decimals }), // ]); assert.deepEqual(token1, token2); }); diff --git a/ui/ducks/swaps/swaps.js b/ui/ducks/swaps/swaps.js index fffd985ed802..1a055c34e2c7 100644 --- a/ui/ducks/swaps/swaps.js +++ b/ui/ducks/swaps/swaps.js @@ -61,6 +61,7 @@ import { isHardwareWallet, getHardwareWalletType, checkNetworkAndAccountSupports1559, + getSelectedNetworkClientId, } from '../../selectors'; import { diff --git a/ui/store/actions.test.js b/ui/store/actions.test.js index 86973d737dae..828d57f4844f 100644 --- a/ui/store/actions.test.js +++ b/ui/store/actions.test.js @@ -895,6 +895,7 @@ describe('Actions', () => { await store.dispatch( actions.addToken({ + // address: '0x514910771af9ca656af840dff83e8264ecf986ca', symbol: 'LINK', decimals: 18, @@ -934,6 +935,7 @@ describe('Actions', () => { await store.dispatch( actions.addToken({ + // address: '0x514910771af9ca656af840dff83e8264ecf986ca', symbol: 'LINK', decimals: 18, diff --git a/ui/store/actions.ts b/ui/store/actions.ts index e4017c93cf09..79f1b3b48ae7 100644 --- a/ui/store/actions.ts +++ b/ui/store/actions.ts @@ -27,6 +27,7 @@ import { UpdateProposedNamesRequest, UpdateProposedNamesResult, } from '@metamask/name-controller'; +import { NetworkClientId } from '@metamask/network-controller'; import { getMethodDataAsync } from '../helpers/utils/transactions.util'; import switchDirection from '../../shared/lib/switch-direction'; import { @@ -118,7 +119,6 @@ import { MetaMaskReduxState, TemporaryMessageDataType, } from './store'; -import { NetworkClientId } from '@metamask/network-controller'; export function goHome() { return { @@ -1790,13 +1790,18 @@ export function showConfTxPage({ id }: Partial = {}) { } export function addToken( - {address, symbol, decimals, image, networkClientId} - : { - address?: string, - symbol?: string, - decimals?: number, - image?: string, - networkClientId?: NetworkClientId + { + address, + symbol, + decimals, + image, + networkClientId, + }: { + address?: string; + symbol?: string; + decimals?: number; + image?: string; + networkClientId?: NetworkClientId; }, dontShowLoadingIndicator?: boolean, ): ThunkAction { @@ -1814,8 +1819,8 @@ export function addToken( symbol, decimals, image, - networkClientId - } + networkClientId, + }, ]); } catch (error) { logErrorWithMessage(error); @@ -1831,6 +1836,7 @@ export function addToken( * To add the tokens user selected to state * * @param tokensToImport + * @param networkClientId */ export function addImportedTokens( tokensToImport: Token[], @@ -1838,7 +1844,10 @@ export function addImportedTokens( ): ThunkAction { return async (dispatch: MetaMaskReduxDispatch) => { try { - await submitRequestToBackground('addImportedTokens', [tokensToImport, networkClientId]); + await submitRequestToBackground('addImportedTokens', [ + tokensToImport, + networkClientId, + ]); } catch (error) { logErrorWithMessage(error); } finally { From 051a8d3975783aac837e2209da9a69919ae60a28 Mon Sep 17 00:00:00 2001 From: Jiexi Luan Date: Tue, 26 Sep 2023 13:37:44 -0700 Subject: [PATCH 12/17] fix spec --- .../metamask-controller.actions.test.js | 34 +++++++++++++++++-- ui/store/actions.test.js | 6 ++-- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/app/scripts/metamask-controller.actions.test.js b/app/scripts/metamask-controller.actions.test.js index e83e38540411..4cd4ad125148 100644 --- a/app/scripts/metamask-controller.actions.test.js +++ b/app/scripts/metamask-controller.actions.test.js @@ -244,11 +244,41 @@ describe('MetaMaskController', function () { ); const [token1, token2] = await Promise.all([ - metamaskController.getApi().addToken({ address, symbol, decimals }), // - metamaskController.getApi().addToken({ address, symbol, decimals }), // + metamaskController.getApi().addToken({ address, symbol, decimals }), + metamaskController.getApi().addToken({ address, symbol, decimals }), ]); assert.deepEqual(token1, token2); }); + + it('networkClientId is used when provided', async function () { + const supportsInterfaceStub = sinon + .stub() + .returns(Promise.resolve(false)); + sinon + .stub(metamaskController.tokensController, '_createEthersContract') + .callsFake(() => + Promise.resolve({ supportsInterface: supportsInterfaceStub }), + ); + sinon + .stub(metamaskController.tokensController, 'getNetworkClientById') + .callsFake(() => ({ + configuration: { + chainId: '0xa', + }, + })); + + await metamaskController.getApi().addToken({ + address, + symbol, + decimals, + networkClientId: 'networkClientId1', + }); + assert.strictEqual( + metamaskController.tokensController.getNetworkClientById.getCall(0) + .args[0], + 'networkClientId1', + ); + }); }); describe('#removePermissionsFor', function () { diff --git a/ui/store/actions.test.js b/ui/store/actions.test.js index 828d57f4844f..cf4462c1a000 100644 --- a/ui/store/actions.test.js +++ b/ui/store/actions.test.js @@ -895,10 +895,10 @@ describe('Actions', () => { await store.dispatch( actions.addToken({ - // address: '0x514910771af9ca656af840dff83e8264ecf986ca', symbol: 'LINK', decimals: 18, + networkClientId: 'networkClientId1', }), ); expect(addTokenStub.callCount).toStrictEqual(1); @@ -915,7 +915,7 @@ describe('Actions', () => { const addTokenStub = sinon .stub() - .callsFake((_, __, ___, ____, cb) => cb(null, tokenDetails)); + .callsFake((_, cb) => cb(null, tokenDetails)); background.getApi.returns({ addToken: addTokenStub, @@ -935,10 +935,10 @@ describe('Actions', () => { await store.dispatch( actions.addToken({ - // address: '0x514910771af9ca656af840dff83e8264ecf986ca', symbol: 'LINK', decimals: 18, + networkClientId: 'networkClientId1', }), ); From 7c341ab54e530bdb0ec69d5b62d3bc38e1a3b35f Mon Sep 17 00:00:00 2001 From: MetaMask Bot Date: Tue, 26 Sep 2023 20:59:53 +0000 Subject: [PATCH 13/17] Update LavaMoat policies --- lavamoat/build-system/policy.json | 132 ++---------------------------- 1 file changed, 8 insertions(+), 124 deletions(-) diff --git a/lavamoat/build-system/policy.json b/lavamoat/build-system/policy.json index 10789620ddab..baacaffa92fa 100644 --- a/lavamoat/build-system/policy.json +++ b/lavamoat/build-system/policy.json @@ -1136,21 +1136,6 @@ "string.prototype.matchall>side-channel": true } }, - "@storybook/addon-mdx-gfm>@storybook/node-logger>npmlog>gauge>has-unicode": { - "builtin": { - "os.type": true - }, - "globals": { - "process.env.LANG": true, - "process.env.LC_ALL": true, - "process.env.LC_CTYPE": true - } - }, - "@storybook/addon-mdx-gfm>@storybook/node-logger>npmlog>gauge>wide-align": { - "packages": { - "yargs>string-width": true - } - }, "@storybook/core>@storybook/core-server>x-default-browser>default-browser-id>untildify>os-homedir": { "builtin": { "os.homedir": true @@ -4897,7 +4882,6 @@ "@lavamoat/allow-scripts>@npmcli/run-script>node-gyp>npmlog": true, "gulp-watch>chokidar>fsevents>node-pre-gyp>detect-libc": true, "gulp-watch>chokidar>fsevents>node-pre-gyp>nopt": true, - "gulp-watch>chokidar>fsevents>node-pre-gyp>npmlog": true, "gulp-watch>chokidar>fsevents>node-pre-gyp>rimraf": true, "gulp-watch>chokidar>fsevents>node-pre-gyp>semver": true } @@ -4955,20 +4939,9 @@ }, "packages": { "@storybook/core>@storybook/core-server>x-default-browser>default-browser-id>untildify>os-homedir": true, - "gulp-watch>chokidar>fsevents>node-pre-gyp>nopt>osenv>os-homedir": true, "gulp-watch>chokidar>fsevents>node-pre-gyp>nopt>osenv>os-tmpdir": true } }, - "gulp-watch>chokidar>fsevents>node-pre-gyp>nopt>osenv>os-homedir": { - "builtin": { - "os.homedir": true - }, - "globals": { - "process.env": true, - "process.getuid": true, - "process.platform": true - } - }, "gulp-watch>chokidar>fsevents>node-pre-gyp>nopt>osenv>os-tmpdir": { "globals": { "process.env.SystemRoot": true, @@ -4979,70 +4952,6 @@ "process.platform": true } }, - "gulp-watch>chokidar>fsevents>node-pre-gyp>npmlog": { - "builtin": { - "events.EventEmitter": true, - "util": true - }, - "globals": { - "process.nextTick": true, - "process.stderr": true - }, - "packages": { - "@storybook/addon-mdx-gfm>@storybook/node-logger>npmlog>console-control-strings": true, - "gulp-watch>chokidar>fsevents>node-pre-gyp>npmlog>are-we-there-yet": true, - "gulp-watch>chokidar>fsevents>node-pre-gyp>npmlog>gauge": true, - "nyc>yargs>set-blocking": true - } - }, - "gulp-watch>chokidar>fsevents>node-pre-gyp>npmlog>are-we-there-yet": { - "builtin": { - "events.EventEmitter": true, - "util.inherits": true - }, - "packages": { - "koa>delegates": true, - "readable-stream": true - } - }, - "gulp-watch>chokidar>fsevents>node-pre-gyp>npmlog>gauge": { - "builtin": { - "util.format": true - }, - "globals": { - "clearInterval": true, - "process": true, - "setImmediate": true, - "setInterval": true - }, - "packages": { - "@storybook/addon-mdx-gfm>@storybook/node-logger>npmlog>console-control-strings": true, - "@storybook/addon-mdx-gfm>@storybook/node-logger>npmlog>gauge>has-unicode": true, - "@storybook/addon-mdx-gfm>@storybook/node-logger>npmlog>gauge>wide-align": true, - "gulp-watch>chokidar>fsevents>node-pre-gyp>npmlog>gauge>aproba": true, - "gulp-watch>chokidar>fsevents>node-pre-gyp>npmlog>gauge>string-width": true, - "gulp-watch>chokidar>fsevents>node-pre-gyp>npmlog>gauge>strip-ansi": true, - "nyc>signal-exit": true, - "react>object-assign": true - } - }, - "gulp-watch>chokidar>fsevents>node-pre-gyp>npmlog>gauge>string-width": { - "packages": { - "gulp-watch>chokidar>fsevents>node-pre-gyp>npmlog>gauge>string-width>is-fullwidth-code-point": true, - "gulp-watch>chokidar>fsevents>node-pre-gyp>npmlog>gauge>strip-ansi": true, - "gulp>gulp-cli>yargs>string-width>code-point-at": true - } - }, - "gulp-watch>chokidar>fsevents>node-pre-gyp>npmlog>gauge>string-width>is-fullwidth-code-point": { - "packages": { - "gulp>gulp-cli>yargs>string-width>is-fullwidth-code-point>number-is-nan": true - } - }, - "gulp-watch>chokidar>fsevents>node-pre-gyp>npmlog>gauge>strip-ansi": { - "packages": { - "gulp-watch>chokidar>fsevents>node-pre-gyp>npmlog>gauge>strip-ansi>ansi-regex": true - } - }, "gulp-watch>chokidar>fsevents>node-pre-gyp>rimraf": { "builtin": { "assert": true, @@ -5054,34 +4963,9 @@ "setTimeout": true }, "packages": { - "gulp-watch>chokidar>fsevents>node-pre-gyp>rimraf>glob": true, "nyc>glob": true } }, - "gulp-watch>chokidar>fsevents>node-pre-gyp>rimraf>glob": { - "builtin": { - "assert": true, - "events.EventEmitter": true, - "fs": true, - "path.join": true, - "path.resolve": true, - "util": true - }, - "globals": { - "console.error": true, - "process.cwd": true, - "process.nextTick": true, - "process.platform": true - }, - "packages": { - "eslint>minimatch": true, - "gulp-watch>path-is-absolute": true, - "nyc>glob>fs.realpath": true, - "nyc>glob>inflight": true, - "pump>once": true, - "pumpify>inherits": true - } - }, "gulp-watch>chokidar>fsevents>node-pre-gyp>semver": { "globals": { "console": true, @@ -6525,13 +6409,6 @@ "process.platform": true } }, - "mockttp>portfinder>mkdirp": { - "builtin": { - "fs": true, - "path.dirname": true, - "path.resolve": true - } - }, "nock>debug": { "builtin": { "tty.isatty": true, @@ -8139,7 +8016,14 @@ "path.dirname": true }, "packages": { - "mockttp>portfinder>mkdirp": true + "stylelint>file-entry-cache>flat-cache>write>mkdirp": true + } + }, + "stylelint>file-entry-cache>flat-cache>write>mkdirp": { + "builtin": { + "fs": true, + "path.dirname": true, + "path.resolve": true } }, "stylelint>global-modules": { From b3a58caa1c91f55c3c39c6d91288995db2babd4d Mon Sep 17 00:00:00 2001 From: Jiexi Luan Date: Tue, 26 Sep 2023 14:39:45 -0700 Subject: [PATCH 14/17] Fix watch-asset rpc spec --- .../handlers/watch-asset.test.js | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/app/scripts/lib/rpc-method-middleware/handlers/watch-asset.test.js b/app/scripts/lib/rpc-method-middleware/handlers/watch-asset.test.js index 5af3ad1bd937..eebe8a470ead 100644 --- a/app/scripts/lib/rpc-method-middleware/handlers/watch-asset.test.js +++ b/app/scripts/lib/rpc-method-middleware/handlers/watch-asset.test.js @@ -21,6 +21,7 @@ describe('watchAssetHandler', () => { type: ERC721, }, origin: 'testOrigin', + networkClientId: 'networkClientId1', }; const res = { @@ -31,11 +32,12 @@ describe('watchAssetHandler', () => { handleWatchAssetRequest: mockHandleWatchAssetRequest, }); - expect(mockHandleWatchAssetRequest).toHaveBeenCalledWith( - req.params.options, - req.params.type, - req.origin, - ); + expect(mockHandleWatchAssetRequest).toHaveBeenCalledWith({ + asset: req.params.options, + type: req.params.type, + origin: req.origin, + networkClientId: req.networkClientId, + }); expect(res.result).toStrictEqual(true); expect(mockEnd).toHaveBeenCalledWith(); }); @@ -51,6 +53,7 @@ describe('watchAssetHandler', () => { type: ERC20, }, origin: 'testOrigin', + networkClientId: 'networkClientId1', }; const res = { @@ -61,11 +64,12 @@ describe('watchAssetHandler', () => { handleWatchAssetRequest: mockHandleWatchAssetRequest, }); - expect(mockHandleWatchAssetRequest).toHaveBeenCalledWith( - req.params.options, - req.params.type, - req.origin, - ); + expect(mockHandleWatchAssetRequest).toHaveBeenCalledWith({ + asset: req.params.options, + type: req.params.type, + origin: req.origin, + networkClientId: req.networkClientId, + }); expect(res.result).toStrictEqual(true); expect(mockEnd).toHaveBeenCalledWith(); }); From 0d1f80c7be0c114ea968e3c99cf7d3e02add1d38 Mon Sep 17 00:00:00 2001 From: Jiexi Luan Date: Tue, 26 Sep 2023 15:10:25 -0700 Subject: [PATCH 15/17] Update AssetsController usages --- app/scripts/metamask-controller.js | 67 ++++++++++++++++-------------- 1 file changed, 35 insertions(+), 32 deletions(-) diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 6e9405724158..3a86e107978a 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -449,33 +449,6 @@ export default class MetamaskController extends EventEmitter { networkConfigurations: this.networkController.state.networkConfigurations, }); - const tokensControllerMessenger = this.controllerMessenger.getRestricted({ - name: 'TokensController', - allowedActions: ['ApprovalController:addRequest'], - allowedEvents: ['NetworkController:stateChange'], - }); - this.tokensController = new TokensController({ - messenger: tokensControllerMessenger, - chainId: this.networkController.state.providerConfig.chainId, - onPreferencesStateChange: this.preferencesController.store.subscribe.bind( - this.preferencesController.store, - ), - onNetworkStateChange: networkControllerMessenger.subscribe.bind( - networkControllerMessenger, - 'NetworkController:stateChange', - ), - onTokenListStateChange: (listener) => - this.controllerMessenger.subscribe( - `${this.tokenListController.name}:stateChange`, - listener, - ), - getNetworkClientById: this.networkController.getNetworkClientById.bind( - this.networkController, - ), - config: { provider: this.provider }, - state: initState.TokensController, - }); - this.assetsContractController = new AssetsContractController( { chainId: this.networkController.state.providerConfig.chainId, @@ -497,6 +470,9 @@ export default class MetamaskController extends EventEmitter { return cb(networkState); }, ), + getNetworkClientById: this.networkController.getNetworkClientById.bind( + this.networkController, + ), }, { provider: this.provider, @@ -504,6 +480,36 @@ export default class MetamaskController extends EventEmitter { initState.AssetsContractController, ); + const tokensControllerMessenger = this.controllerMessenger.getRestricted({ + name: 'TokensController', + allowedActions: ['ApprovalController:addRequest'], + allowedEvents: ['NetworkController:stateChange'], + }); + this.tokensController = new TokensController({ + messenger: tokensControllerMessenger, + chainId: this.networkController.state.providerConfig.chainId, + onPreferencesStateChange: this.preferencesController.store.subscribe.bind( + this.preferencesController.store, + ), + onNetworkStateChange: networkControllerMessenger.subscribe.bind( + networkControllerMessenger, + 'NetworkController:stateChange', + ), + onTokenListStateChange: (listener) => + this.controllerMessenger.subscribe( + `${this.tokenListController.name}:stateChange`, + listener, + ), + getNetworkClientById: this.networkController.getNetworkClientById.bind( + this.networkController, + ), + getERC20TokenName: this.assetsContractController.getERC20TokenName.bind( + this.assetsContractController, + ), + config: { provider: this.provider }, + state: initState.TokensController, + }); + const nftControllerMessenger = this.controllerMessenger.getRestricted({ name: 'NftController', allowedActions: [`${this.approvalController.name}:addRequest`], @@ -728,13 +734,10 @@ export default class MetamaskController extends EventEmitter { this.tokenRatesController = new TokenRatesController( { chainId: this.networkController.state.providerConfig.chainId, + ticker: this.networkController.state.providerConfig.ticker, + selectedAddress: this.preferencesController.getSelectedAddress(), onTokensStateChange: (listener) => this.tokensController.subscribe(listener), - onCurrencyRateStateChange: (listener) => - this.controllerMessenger.subscribe( - `${this.currencyRateController.name}:stateChange`, - listener, - ), onNetworkStateChange: networkControllerMessenger.subscribe.bind( networkControllerMessenger, 'NetworkController:stateChange', From 267007442516f29d3a0bc42adc75d884d3d368ed Mon Sep 17 00:00:00 2001 From: Jiexi Luan Date: Tue, 26 Sep 2023 15:46:20 -0700 Subject: [PATCH 16/17] Fix null image derefence --- ui/components/app/nfts-items/nfts-items.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/components/app/nfts-items/nfts-items.js b/ui/components/app/nfts-items/nfts-items.js index d2e5eeb6630d..ced4c8f5a897 100644 --- a/ui/components/app/nfts-items/nfts-items.js +++ b/ui/components/app/nfts-items/nfts-items.js @@ -192,7 +192,7 @@ export default function NftsItems({ ipfsGateway, ); const nftImageAlt = getNftImageAlt(nft); - const isImageHosted = image.startsWith('https:'); + const isImageHosted = image?.startsWith('https:'); const nftImageURL = imageOriginal?.startsWith('ipfs') ? nftImage : image; From 4d8694035b23ca90823ad2ea563068727508c43d Mon Sep 17 00:00:00 2001 From: Jiexi Luan Date: Mon, 2 Oct 2023 10:40:25 -0700 Subject: [PATCH 17/17] yarn dedupe --- yarn.lock | 30 ++---------------------------- 1 file changed, 2 insertions(+), 28 deletions(-) diff --git a/yarn.lock b/yarn.lock index c9382a1c80ab..839aa9311a61 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3909,23 +3909,7 @@ __metadata: languageName: node linkType: hard -"@metamask/controller-utils@npm:^5.0.0": - version: 5.0.0 - resolution: "@metamask/controller-utils@npm:5.0.0" - dependencies: - "@metamask/eth-query": "npm:^3.0.1" - "@metamask/utils": "npm:^6.2.0" - "@spruceid/siwe-parser": "npm:1.1.3" - eth-ens-namehash: "npm:^2.0.8" - eth-rpc-errors: "npm:^4.0.2" - ethereumjs-util: "npm:^7.0.10" - ethjs-unit: "npm:^0.1.6" - fast-deep-equal: "npm:^3.1.3" - checksum: 4fbefc1affa9aee110fcb1b7fc95a96f29fc6d41d6fa6b92bd691d541833cf8531a282d7866daeb7585741533b50a5d9e8d0564071fc1abf09769c9fe039845b - languageName: node - linkType: hard - -"@metamask/controller-utils@npm:^5.0.1": +"@metamask/controller-utils@npm:^5.0.0, @metamask/controller-utils@npm:^5.0.1": version: 5.0.1 resolution: "@metamask/controller-utils@npm:5.0.1" dependencies: @@ -4614,17 +4598,7 @@ __metadata: languageName: node linkType: hard -"@metamask/preferences-controller@npm:^4.4.1": - version: 4.4.1 - resolution: "@metamask/preferences-controller@npm:4.4.1" - dependencies: - "@metamask/base-controller": "npm:^3.2.1" - "@metamask/controller-utils": "npm:^5.0.0" - checksum: 2404cf4c6f207316af7fd8cf9a7ae2ff3f38766bedde67103143d964ad4e253c8cf228da692a80644e65f072306bfaa807895771e45e93797ab879b9645744a7 - languageName: node - linkType: hard - -"@metamask/preferences-controller@npm:^4.4.2": +"@metamask/preferences-controller@npm:^4.4.1, @metamask/preferences-controller@npm:^4.4.2": version: 4.4.2 resolution: "@metamask/preferences-controller@npm:4.4.2" dependencies: