From 090adb6e08122cecc1235860a9078ef1a24b47d0 Mon Sep 17 00:00:00 2001 From: Jiexi Luan Date: Wed, 16 Apr 2025 10:55:58 -0700 Subject: [PATCH 1/3] replace caip-x with caip-348 --- app/scripts/metamask-controller.test.js | 10 +++++----- shared/modules/caip-stream.test.ts | 8 ++++---- shared/modules/caip-stream.ts | 4 ++-- test/e2e/api-specs/helpers.ts | 8 ++++---- .../flask/multichain-api/wallet_revokeSession.spec.ts | 4 ++-- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/app/scripts/metamask-controller.test.js b/app/scripts/metamask-controller.test.js index d2b871f20d8c..7204f92435ab 100644 --- a/app/scripts/metamask-controller.test.js +++ b/app/scripts/metamask-controller.test.js @@ -2611,7 +2611,7 @@ describe('MetaMaskController', () => { await new Promise((resolve) => { streamTest.write( { - type: 'caip-x', + type: 'caip-348', data: { method: 'wallet_invokeMethod', params: { @@ -2706,7 +2706,7 @@ describe('MetaMaskController', () => { await new Promise((resolve) => { streamTest.write( { - type: 'caip-x', + type: 'caip-348', data: { method: 'wallet_invokeMethod', params: { @@ -2758,7 +2758,7 @@ describe('MetaMaskController', () => { await new Promise((resolve) => { streamTest.write( { - type: 'caip-x', + type: 'caip-348', data: { method: 'wallet_invokeMethod', params: { @@ -2785,7 +2785,7 @@ describe('MetaMaskController', () => { streamTest.end(); }); - it('should only process `caip-x` CAIP formatted messages', async () => { + it('should only process `caip-348` CAIP formatted messages', async () => { const messageSender = { url: 'http://mycrypto.com', tab: { id: 456 }, @@ -2825,7 +2825,7 @@ describe('MetaMaskController', () => { await new Promise((resolve) => { streamTest.write( { - type: 'caip-x', + type: 'caip-348', data: { method: 'wallet_invokeMethod', params: { diff --git a/shared/modules/caip-stream.test.ts b/shared/modules/caip-stream.test.ts index 37fed9d693d5..a9c737959db1 100644 --- a/shared/modules/caip-stream.test.ts +++ b/shared/modules/caip-stream.test.ts @@ -42,7 +42,7 @@ class MockStream extends Duplex { describe('CAIP Stream', () => { describe('createCaipStream', () => { - it('pipes and unwraps a caip-x message from source stream to the substream', async () => { + it('pipes and unwraps a caip-348 message from source stream to the substream', async () => { const sourceStream = new PassThrough({ objectMode: true }); const sourceStreamChunks = readFromStream(sourceStream); @@ -50,12 +50,12 @@ describe('CAIP Stream', () => { const providerStreamChunks = readFromStream(providerStream); await writeToStream(sourceStream, { - type: 'caip-x', + type: 'caip-348', data: { foo: 'bar' }, }); expect(sourceStreamChunks).toStrictEqual([ - { type: 'caip-x', data: { foo: 'bar' } }, + { type: 'caip-348', data: { foo: 'bar' } }, ]); expect(providerStreamChunks).toStrictEqual([{ foo: 'bar' }]); }); @@ -74,7 +74,7 @@ describe('CAIP Stream', () => { // Note that it's not possible to verify the output side of the internal SplitStream // instantiated inside createCaipStream as only the substream is actually exported expect(sourceStream.chunks).toStrictEqual([ - { type: 'caip-x', data: { foo: 'bar' } }, + { type: 'caip-348', data: { foo: 'bar' } }, ]); }); diff --git a/shared/modules/caip-stream.ts b/shared/modules/caip-stream.ts index 09e0891bc3d6..7bc8f902625d 100644 --- a/shared/modules/caip-stream.ts +++ b/shared/modules/caip-stream.ts @@ -21,7 +21,7 @@ class Substream extends Duplex { callback: (error?: Error | null) => void, ) { this.parent.push({ - type: 'caip-x', + type: 'caip-348', data: value, }); callback(); @@ -45,7 +45,7 @@ export class CaipStream extends Duplex { _encoding: BufferEncoding, callback: (error?: Error | null) => void, ) { - if (isObject(value) && value.type === 'caip-x') { + if (isObject(value) && value.type === 'caip-348') { this.substream.push(value.data); } callback(); diff --git a/test/e2e/api-specs/helpers.ts b/test/e2e/api-specs/helpers.ts index dbb75dcb4d0b..9f08a8244b40 100644 --- a/test/e2e/api-specs/helpers.ts +++ b/test/e2e/api-specs/helpers.ts @@ -119,7 +119,7 @@ export const createCaip27DriverTransport = ( type: string; data: JsonRpcResponse; }) => { - if (type !== 'caip-x') { + if (type !== 'caip-348') { return; } if (data?.id !== g) { @@ -134,7 +134,7 @@ export const createCaip27DriverTransport = ( extensionPort.onMessage.addListener(listener); const msg = { - type: 'caip-x', + type: 'caip-348', data: { jsonrpc: '2.0', method: 'wallet_invokeMethod', @@ -203,7 +203,7 @@ export const createMultichainDriverTransport = ( type: string; data: JsonRpcResponse; }) => { - if (type !== 'caip-x') { + if (type !== 'caip-348') { return; } if (data?.id !== g) { @@ -218,7 +218,7 @@ export const createMultichainDriverTransport = ( extensionPort.onMessage.addListener(listener); const msg = { - type: 'caip-x', + type: 'caip-348', data: { jsonrpc: '2.0', method: m, diff --git a/test/e2e/flask/multichain-api/wallet_revokeSession.spec.ts b/test/e2e/flask/multichain-api/wallet_revokeSession.spec.ts index cc32568ad17a..cf537967982a 100644 --- a/test/e2e/flask/multichain-api/wallet_revokeSession.spec.ts +++ b/test/e2e/flask/multichain-api/wallet_revokeSession.spec.ts @@ -127,7 +127,7 @@ describeBrowserOnly( const data = ${data}; const result = new Promise((resolve) => { port.onMessage.addListener((msg) => { - if (msg.type !== 'caip-x') { + if (msg.type !== 'caip-348') { return; } if (msg.data?.id !== ${id}) { @@ -139,7 +139,7 @@ describeBrowserOnly( } }) }) - port.postMessage({ type: 'caip-x', data }); + port.postMessage({ type: 'caip-348', data }); return result;`; /** From 0cf0987a9215e6e9c9fe19b9f3a01de9a20f1490 Mon Sep 17 00:00:00 2001 From: Jiexi Luan Date: Thu, 17 Apr 2025 14:29:44 -0700 Subject: [PATCH 2/3] bump relevant packages --- package.json | 6 +++--- yarn.lock | 38 +++++++++++++++++++------------------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/package.json b/package.json index 565b1aa894b4..9cd00e1b039c 100644 --- a/package.json +++ b/package.json @@ -293,7 +293,7 @@ "@metamask/message-manager": "^12.0.1", "@metamask/message-signing-snap": "^1.1.1", "@metamask/metamask-eth-abis": "^3.1.1", - "@metamask/multichain-api-client": "^0.1.1", + "@metamask/multichain-api-client": "^0.3.0", "@metamask/multichain-api-middleware": "^0.1.1", "@metamask/multichain-network-controller": "^0.3.0", "@metamask/multichain-transactions-controller": "^0.9.0", @@ -310,7 +310,7 @@ "@metamask/ppom-validator": "0.36.0", "@metamask/preinstalled-example-snap": "^0.3.0", "@metamask/profile-sync-controller": "^12.0.0", - "@metamask/providers": "^20.0.0", + "@metamask/providers": "^22.0.0", "@metamask/rate-limit-controller": "^6.0.3", "@metamask/remote-feature-flag-controller": "^1.6.0", "@metamask/rpc-errors": "^7.0.0", @@ -449,7 +449,7 @@ "@metamask/preferences-controller": "^17.0.0", "@metamask/test-bundler": "^1.0.0", "@metamask/test-dapp": "9.3.0", - "@metamask/test-dapp-multichain": "^0.6.0", + "@metamask/test-dapp-multichain": "^0.10.0", "@octokit/core": "^3.6.0", "@open-rpc/meta-schema": "^1.14.6", "@open-rpc/mock-server": "^1.7.5", diff --git a/yarn.lock b/yarn.lock index cd770cec8171..dc5bbd2bf00a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5775,10 +5775,10 @@ __metadata: languageName: node linkType: hard -"@metamask/multichain-api-client@npm:^0.1.1": - version: 0.1.1 - resolution: "@metamask/multichain-api-client@npm:0.1.1" - checksum: 10/85d8e7d20389460269ddd07388dcbfdbceb532df0e21d5184f810f90d4e8817318e717b0f6f716fce6ad7c457d54c476c1e7ac209cbb6b0757cbebd747917568 +"@metamask/multichain-api-client@npm:^0.3.0": + version: 0.3.0 + resolution: "@metamask/multichain-api-client@npm:0.3.0" + checksum: 10/3a82a36dbdad88f16464e7655d77a5562d636a387b93d69438421c1fd25f4767eb28ed4c423647b6b06fb0c85cf7dcbe7e4bca474cddd022c78652d631de23fe languageName: node linkType: hard @@ -6137,9 +6137,9 @@ __metadata: languageName: node linkType: hard -"@metamask/providers@npm:^20.0.0": - version: 20.0.0 - resolution: "@metamask/providers@npm:20.0.0" +"@metamask/providers@npm:^21.0.0": + version: 21.0.0 + resolution: "@metamask/providers@npm:21.0.0" dependencies: "@metamask/json-rpc-engine": "npm:^10.0.2" "@metamask/json-rpc-middleware-stream": "npm:^8.0.6" @@ -6154,13 +6154,13 @@ __metadata: readable-stream: "npm:^3.6.2" peerDependencies: webextension-polyfill: ^0.10.0 || ^0.11.0 || ^0.12.0 - checksum: 10/b958d03a9380d86e605db239109a3debcc1ffde90371abe5beb82a5bed46c7718303a2bb92ec269eae16eff145b9ebbfcb3445a2b6bad4f297a590ee725a5bad + checksum: 10/4bd649cf2541b6da9257583496b906c00eef316df64db38008a864b1d27beeb9f579ed9b8f5a1ba11c0403d88b32a93c674d622dc24dc2b026d68a49692a1b73 languageName: node linkType: hard -"@metamask/providers@npm:^21.0.0": - version: 21.0.0 - resolution: "@metamask/providers@npm:21.0.0" +"@metamask/providers@npm:^22.0.0": + version: 22.0.0 + resolution: "@metamask/providers@npm:22.0.0" dependencies: "@metamask/json-rpc-engine": "npm:^10.0.2" "@metamask/json-rpc-middleware-stream": "npm:^8.0.6" @@ -6175,7 +6175,7 @@ __metadata: readable-stream: "npm:^3.6.2" peerDependencies: webextension-polyfill: ^0.10.0 || ^0.11.0 || ^0.12.0 - checksum: 10/4bd649cf2541b6da9257583496b906c00eef316df64db38008a864b1d27beeb9f579ed9b8f5a1ba11c0403d88b32a93c674d622dc24dc2b026d68a49692a1b73 + checksum: 10/b9bd381e5669e07ecee0a98f8748993fed4e02bc855e2ad342db9b9bb8b2d453a01c0e4c9f1e2c7b80929c5ce15d7aafa88c0a6a78651737efdb16f707a84017 languageName: node linkType: hard @@ -6523,10 +6523,10 @@ __metadata: languageName: node linkType: hard -"@metamask/test-dapp-multichain@npm:^0.6.0": - version: 0.6.0 - resolution: "@metamask/test-dapp-multichain@npm:0.6.0" - checksum: 10/23bb60422fa3986a648e487562697e7ca57dc97ac9ff693eeac391e673e5ebd838ad3a54160af8dbb195ab3eba497bf2a3767d76693bbbf6044ab6cdbd59b254 +"@metamask/test-dapp-multichain@npm:^0.10.0": + version: 0.10.0 + resolution: "@metamask/test-dapp-multichain@npm:0.10.0" + checksum: 10/9840f9dbbfe289de159dc9d950aea923a4154980e5e31fd68a67bc21437f23c35d85ce8a4fc36e7f51234353a5d2ec83af04e56ad95ded93f624ee63050e55bb languageName: node linkType: hard @@ -27330,7 +27330,7 @@ __metadata: "@metamask/message-manager": "npm:^12.0.1" "@metamask/message-signing-snap": "npm:^1.1.1" "@metamask/metamask-eth-abis": "npm:^3.1.1" - "@metamask/multichain-api-client": "npm:^0.1.1" + "@metamask/multichain-api-client": "npm:^0.3.0" "@metamask/multichain-api-middleware": "npm:^0.1.1" "@metamask/multichain-network-controller": "npm:^0.3.0" "@metamask/multichain-transactions-controller": "npm:^0.9.0" @@ -27349,7 +27349,7 @@ __metadata: "@metamask/preferences-controller": "npm:^17.0.0" "@metamask/preinstalled-example-snap": "npm:^0.3.0" "@metamask/profile-sync-controller": "npm:^12.0.0" - "@metamask/providers": "npm:^20.0.0" + "@metamask/providers": "npm:^22.0.0" "@metamask/rate-limit-controller": "npm:^6.0.3" "@metamask/remote-feature-flag-controller": "npm:^1.6.0" "@metamask/rpc-errors": "npm:^7.0.0" @@ -27367,7 +27367,7 @@ __metadata: "@metamask/solana-wallet-standard": "npm:^0.1.1" "@metamask/test-bundler": "npm:^1.0.0" "@metamask/test-dapp": "npm:9.3.0" - "@metamask/test-dapp-multichain": "npm:^0.6.0" + "@metamask/test-dapp-multichain": "npm:^0.10.0" "@metamask/transaction-controller": "npm:^54.1.0" "@metamask/user-operation-controller": "npm:^31.0.0" "@metamask/utils": "npm:^11.1.0" From 0106f2b298280c8bcf61461e17fb0ed323c2d391 Mon Sep 17 00:00:00 2001 From: Jiexi Luan Date: Fri, 18 Apr 2025 09:31:07 -0700 Subject: [PATCH 3/3] update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c20189b839f2..1f4e3e076279 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Support for Solana Devnet ([#31702](https://github.com/MetaMask/metamask-extension/pull/31702)) - [Beta] Create Solana account automatically on wallet creation or SRP import [#32038](https://github.com/MetaMask/metamask-extension/pull/32038) - Support for Solana on Firefox ([#32104](https://github.com/MetaMask/metamask-extension/pull/32104)) +- Update CAIP-294 wallet announcement event to include `targets` property and new `caip-348` target object ([#32070](https://github.com/MetaMask/metamask-extension/pull/32070)) +- Replace `caip-x` with `caip-348` in Multichain API over externally_connectable ([#32070](https://github.com/MetaMask/metamask-extension/pull/32070)) ### Fixed - Fix NFT removal on different networks ([#32102](https://github.com/MetaMask/metamask-extension/pull/32102))