diff --git a/packages/snaps-execution-environments/coverage.json b/packages/snaps-execution-environments/coverage.json index 9625ffb66a..7907537cbd 100644 --- a/packages/snaps-execution-environments/coverage.json +++ b/packages/snaps-execution-environments/coverage.json @@ -1,6 +1,6 @@ { - "branches": 81.08, - "functions": 89.54, - "lines": 90.92, - "statements": 89.95 + "branches": 80.53, + "functions": 88.96, + "lines": 90.69, + "statements": 89.74 } diff --git a/packages/snaps-execution-environments/lavamoat/browserify/iframe/policy.json b/packages/snaps-execution-environments/lavamoat/browserify/iframe/policy.json index e386897747..520b71350d 100644 --- a/packages/snaps-execution-environments/lavamoat/browserify/iframe/policy.json +++ b/packages/snaps-execution-environments/lavamoat/browserify/iframe/policy.json @@ -43,7 +43,6 @@ }, "packages": { "@metamask/json-rpc-engine": true, - "@metamask/object-multiplex": true, "@metamask/providers>@metamask/json-rpc-middleware-stream": true, "@metamask/providers>@metamask/safe-event-emitter": true, "@metamask/providers>is-stream": true, diff --git a/packages/snaps-execution-environments/lavamoat/browserify/node-process/policy.json b/packages/snaps-execution-environments/lavamoat/browserify/node-process/policy.json index 57d9fbbc20..803b8ed933 100644 --- a/packages/snaps-execution-environments/lavamoat/browserify/node-process/policy.json +++ b/packages/snaps-execution-environments/lavamoat/browserify/node-process/policy.json @@ -50,7 +50,6 @@ }, "packages": { "@metamask/json-rpc-engine": true, - "@metamask/object-multiplex": true, "@metamask/providers>@metamask/json-rpc-middleware-stream": true, "@metamask/providers>@metamask/safe-event-emitter": true, "@metamask/providers>is-stream": true, diff --git a/packages/snaps-execution-environments/lavamoat/browserify/node-thread/policy.json b/packages/snaps-execution-environments/lavamoat/browserify/node-thread/policy.json index 57d9fbbc20..803b8ed933 100644 --- a/packages/snaps-execution-environments/lavamoat/browserify/node-thread/policy.json +++ b/packages/snaps-execution-environments/lavamoat/browserify/node-thread/policy.json @@ -50,7 +50,6 @@ }, "packages": { "@metamask/json-rpc-engine": true, - "@metamask/object-multiplex": true, "@metamask/providers>@metamask/json-rpc-middleware-stream": true, "@metamask/providers>@metamask/safe-event-emitter": true, "@metamask/providers>is-stream": true, diff --git a/packages/snaps-execution-environments/lavamoat/browserify/worker-executor/policy.json b/packages/snaps-execution-environments/lavamoat/browserify/worker-executor/policy.json index e386897747..520b71350d 100644 --- a/packages/snaps-execution-environments/lavamoat/browserify/worker-executor/policy.json +++ b/packages/snaps-execution-environments/lavamoat/browserify/worker-executor/policy.json @@ -43,7 +43,6 @@ }, "packages": { "@metamask/json-rpc-engine": true, - "@metamask/object-multiplex": true, "@metamask/providers>@metamask/json-rpc-middleware-stream": true, "@metamask/providers>@metamask/safe-event-emitter": true, "@metamask/providers>is-stream": true, diff --git a/packages/snaps-execution-environments/package.json b/packages/snaps-execution-environments/package.json index 4b35e98b1b..a34c8b3b67 100644 --- a/packages/snaps-execution-environments/package.json +++ b/packages/snaps-execution-environments/package.json @@ -67,7 +67,7 @@ "@metamask/json-rpc-engine": "^10.0.2", "@metamask/object-multiplex": "^2.1.0", "@metamask/post-message-stream": "^9.0.0", - "@metamask/providers": "^18.3.1", + "@metamask/providers": "^20.0.0", "@metamask/rpc-errors": "^7.0.2", "@metamask/snaps-sdk": "workspace:^", "@metamask/snaps-utils": "workspace:^", diff --git a/packages/snaps-execution-environments/src/common/BaseSnapExecutor.ts b/packages/snaps-execution-environments/src/common/BaseSnapExecutor.ts index 8e7ae6d086..1fe420be1e 100644 --- a/packages/snaps-execution-environments/src/common/BaseSnapExecutor.ts +++ b/packages/snaps-execution-environments/src/common/BaseSnapExecutor.ts @@ -1,6 +1,7 @@ // eslint-disable-next-line @typescript-eslint/triple-slash-reference, spaced-comment /// import { createIdRemapMiddleware } from '@metamask/json-rpc-engine'; +import ObjectMultiplex from '@metamask/object-multiplex'; import type { RequestArguments, StreamProvider } from '@metamask/providers'; import { errorCodes, rpcErrors, serializeError } from '@metamask/rpc-errors'; import type { SnapsEthereumProvider, SnapsProvider } from '@metamask/snaps-sdk'; @@ -33,6 +34,7 @@ import { JsonRpcIdStruct, } from '@metamask/utils'; import type { Duplex } from 'readable-stream'; +import { pipeline } from 'readable-stream'; import { log } from '../logging'; import type { CommandMethodsMapping } from './commands'; @@ -369,11 +371,20 @@ export class BaseSnapExecutor { }); }; - const provider = new SnapProvider(this.rpcStream, { - jsonRpcStreamName: 'metamask-provider', - rpcMiddleware: [createIdRemapMiddleware()], + const multiplex = new ObjectMultiplex(); + pipeline(this.rpcStream, multiplex, this.rpcStream, (error) => { + if (error) { + logError(`Provider stream failure.`, error); + } }); + const provider = new SnapProvider( + multiplex.createStream('metamask-provider'), + { + rpcMiddleware: [createIdRemapMiddleware()], + }, + ); + provider.initializeSync(); const snap = this.createSnapGlobal(provider); diff --git a/packages/snaps-execution-environments/src/common/test-utils/endowments.ts b/packages/snaps-execution-environments/src/common/test-utils/endowments.ts index 8584ec2778..ba26f2433b 100644 --- a/packages/snaps-execution-environments/src/common/test-utils/endowments.ts +++ b/packages/snaps-execution-environments/src/common/test-utils/endowments.ts @@ -44,7 +44,6 @@ export function getMockedStreamProvider(): SnapsEthereumProvider { const rpcStream = mux.createStream(SNAP_STREAM_NAMES.JSON_RPC); const provider = new StreamProvider(rpcStream, { - jsonRpcStreamName: 'metamask-provider', rpcMiddleware: [createIdRemapMiddleware()], logger: SILENT_LOGGER, }); diff --git a/packages/snaps-sdk/package.json b/packages/snaps-sdk/package.json index 9bdd171e40..5396b27d56 100644 --- a/packages/snaps-sdk/package.json +++ b/packages/snaps-sdk/package.json @@ -92,7 +92,7 @@ }, "dependencies": { "@metamask/key-tree": "^10.0.2", - "@metamask/providers": "^18.3.1", + "@metamask/providers": "^20.0.0", "@metamask/rpc-errors": "^7.0.2", "@metamask/superstruct": "^3.1.0", "@metamask/utils": "^11.1.0" diff --git a/packages/test-snaps/package.json b/packages/test-snaps/package.json index 0e6d991a96..b06aaf2284 100644 --- a/packages/test-snaps/package.json +++ b/packages/test-snaps/package.json @@ -84,7 +84,7 @@ "@metamask/eslint-config-jest": "^12.1.0", "@metamask/eslint-config-nodejs": "^12.1.0", "@metamask/eslint-config-typescript": "^12.1.0", - "@metamask/providers": "^18.3.1", + "@metamask/providers": "^20.0.0", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.10", "@swc/core": "1.3.78", "@swc/jest": "^0.2.26", diff --git a/yarn.lock b/yarn.lock index 9f45d1c624..dac0223492 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5391,9 +5391,9 @@ __metadata: languageName: unknown linkType: soft -"@metamask/providers@npm:^18.3.1": - version: 18.3.1 - resolution: "@metamask/providers@npm:18.3.1" +"@metamask/providers@npm:^20.0.0": + version: 20.0.0 + resolution: "@metamask/providers@npm:20.0.0" dependencies: "@metamask/json-rpc-engine": "npm:^10.0.2" "@metamask/json-rpc-middleware-stream": "npm:^8.0.6" @@ -5408,7 +5408,7 @@ __metadata: readable-stream: "npm:^3.6.2" peerDependencies: webextension-polyfill: ^0.10.0 || ^0.11.0 || ^0.12.0 - checksum: 10/0e21ba9cce926a49dedbfe30fc964cd2349ee6bf9156f525fb894dcbc147a3ae480384884131a6b1a0a508989b547d8c8d2aeb3d10e11f67a8ee5230c45631a8 + checksum: 10/b958d03a9380d86e605db239109a3debcc1ffde90371abe5beb82a5bed46c7718303a2bb92ec269eae16eff145b9ebbfcb3445a2b6bad4f297a590ee725a5bad languageName: node linkType: hard @@ -5824,7 +5824,7 @@ __metadata: "@metamask/json-rpc-engine": "npm:^10.0.2" "@metamask/object-multiplex": "npm:^2.1.0" "@metamask/post-message-stream": "npm:^9.0.0" - "@metamask/providers": "npm:^18.3.1" + "@metamask/providers": "npm:^20.0.0" "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/snaps-sdk": "workspace:^" "@metamask/snaps-utils": "workspace:^" @@ -6045,7 +6045,7 @@ __metadata: "@metamask/eslint-config-nodejs": "npm:^12.1.0" "@metamask/eslint-config-typescript": "npm:^12.1.0" "@metamask/key-tree": "npm:^10.0.2" - "@metamask/providers": "npm:^18.3.1" + "@metamask/providers": "npm:^20.0.0" "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^11.1.0" @@ -6415,7 +6415,7 @@ __metadata: "@metamask/network-example-snap": "workspace:^" "@metamask/notification-example-snap": "workspace:^" "@metamask/preinstalled-example-snap": "workspace:^" - "@metamask/providers": "npm:^18.3.1" + "@metamask/providers": "npm:^20.0.0" "@metamask/send-flow-example-snap": "workspace:^" "@metamask/signature-insights-example-snap": "workspace:^" "@metamask/snaps-utils": "workspace:^"