From bc4f9c9f2e13da9d2b58867593efcc56dc08689b Mon Sep 17 00:00:00 2001 From: Jiexi Luan Date: Mon, 17 Mar 2025 11:40:50 -0700 Subject: [PATCH 1/2] add comment about createExternalExtensionProvider --- src/extension-provider/createExternalExtensionProvider.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/extension-provider/createExternalExtensionProvider.ts b/src/extension-provider/createExternalExtensionProvider.ts index b42e74c4..2bca8865 100644 --- a/src/extension-provider/createExternalExtensionProvider.ts +++ b/src/extension-provider/createExternalExtensionProvider.ts @@ -15,6 +15,7 @@ export type ExtensionType = 'stable' | 'flask' | 'beta' | string; /** * Creates an external extension provider for the given extension type or ID. + * This is intended for use by 3rd party extensions. * * @param typeOrId - The extension type or ID. * @returns The external extension provider. From f7acbb945c99abb14723db6d39cd5c0a27635538 Mon Sep 17 00:00:00 2001 From: Jiexi Luan Date: Mon, 17 Mar 2025 11:42:49 -0700 Subject: [PATCH 2/2] remove jsonRpCStreamName and substream instantiation from initializeProvider() --- jest.config.js | 8 ++++---- src/initializeInpageProvider.ts | 33 ++++++--------------------------- 2 files changed, 10 insertions(+), 31 deletions(-) diff --git a/jest.config.js b/jest.config.js index 0a20194d..b15d3618 100644 --- a/jest.config.js +++ b/jest.config.js @@ -45,10 +45,10 @@ const baseConfig = { // An object that configures minimum threshold enforcement for coverage results coverageThreshold: { global: { - branches: 69.63, - functions: 71.42, - lines: 70.27, - statements: 70.4, + branches: 70.2, + functions: 72.07, + lines: 71.03, + statements: 71.16, }, }, diff --git a/src/initializeInpageProvider.ts b/src/initializeInpageProvider.ts index 79e59b4e..b00906a0 100644 --- a/src/initializeInpageProvider.ts +++ b/src/initializeInpageProvider.ts @@ -1,15 +1,11 @@ -import ObjectMultiplex from '@metamask/object-multiplex'; -import { type Duplex, pipeline } from 'readable-stream'; +import { type Duplex } from 'readable-stream'; import type { CAIP294WalletData } from './CAIP294'; import { announceWallet } from './CAIP294'; import { announceProvider as announceEip6963Provider } from './EIP6963'; import { getBuildType } from './extension-provider/createExternalExtensionProvider'; import type { MetaMaskInpageProviderOptions } from './MetaMaskInpageProvider'; -import { - MetaMaskInpageProvider, - MetaMaskInpageProviderStreamName, -} from './MetaMaskInpageProvider'; +import { MetaMaskInpageProvider } from './MetaMaskInpageProvider'; import { shimWeb3 } from './shimWeb3'; import type { BaseProviderInfo } from './types'; @@ -33,10 +29,6 @@ type InitializeProviderOptions = { * Whether the window.web3 shim should be set. */ shouldShimWeb3?: boolean; - /** - * The name of the stream used to connect to the wallet. - */ - jsonRpcStreamName?: string; } & MetaMaskInpageProviderOptions; /** @@ -44,7 +36,6 @@ type InitializeProviderOptions = { * * @param options - An options bag. * @param options.connectionStream - A Node.js stream. - * @param options.jsonRpcStreamName - The name of the internal JSON-RPC stream. * @param options.maxEventListeners - The maximum number of event listeners. * @param options.providerInfo - The EIP-6963 provider info / CAIP-294 wallet data that should be announced if set. * @param options.shouldSendMetadata - Whether the provider should send page metadata. @@ -55,7 +46,6 @@ type InitializeProviderOptions = { */ export function initializeProvider({ connectionStream, - jsonRpcStreamName = MetaMaskInpageProviderStreamName, logger = console, maxEventListeners = 100, providerInfo, @@ -63,22 +53,11 @@ export function initializeProvider({ shouldSetOnWindow = true, shouldShimWeb3 = false, }: InitializeProviderOptions): MetaMaskInpageProvider { - const mux = new ObjectMultiplex(); - pipeline(connectionStream, mux, connectionStream, (error: Error | null) => { - let warningMsg = `Lost connection to "${jsonRpcStreamName}".`; - if (error?.stack) { - warningMsg += `\n${error.stack}`; - } - console.warn(warningMsg); + const provider = new MetaMaskInpageProvider(connectionStream, { + logger, + maxEventListeners, + shouldSendMetadata, }); - const provider = new MetaMaskInpageProvider( - mux.createStream(jsonRpcStreamName), - { - logger, - maxEventListeners, - shouldSendMetadata, - }, - ); const proxiedProvider = new Proxy(provider, { // some common libraries, e.g. web3@1.x, mess with our API