-
-
Notifications
You must be signed in to change notification settings - Fork 130
Description
I'm using createExternalExtensionProvider() to create a Provider to interact with MetaMask from another browser extension. This works well, but a side-effect is that a lot of warnings are logged to the console:
ObjectMultiplex - orphaned data for stream "publicConfig"
I looked into this, and my understanding is as follows:
- The communication streams between the in page/extension provider and MetaMask itself multiplex multiple named streams over a single connection using
ObjectMultiplexfrom @metamask/object-multiplex - The warning occurs when an
ObjectMultiplexstream receives a message for a named substream that has not been created, so such messages will be ignored. - The MetaMask extension itself is sending messages to the Provider I create for the
publicConfignamed substream- I can see such messages being received from the
Portopened to communicate with MetaMask from my extension - It's not that some legacy thing in my extension is using the
publicConfigstream.
- I can see such messages being received from the
- MetaMask's own injected contentscript ignores messages for the
publicConfigsubstream, so web pages using MetaMask's provider don't show these warnings: https://github.com/MetaMask/metamask-extension/blob/c40dbb1ec72b91827debb2fffba4097a838f21c7/app/scripts/contentscript.js#L254 - The
StreamProviderin this repo that creates the ObjectMultiplex doesn't ignorepublicConfigmessages:providers/src/StreamProvider.ts
Line 70 in 126a8c8
const mux = new ObjectMultiplex();
Should StreamProvider ignore these messages itself, like MetaMask's contentscript does? I was tempted to open a PR to do this, but I don't have enough understanding of the legacy context around these messages to know if that makes sense.
It's not currently possible to customise the stream created by createExternalExtensionProvider() to filter these messages before they get to StreamProvider.