Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Provider emits warning: ObjectMultiplex - orphaned data for stream "publicConfig" #294

Open
h4l opened this issue Dec 29, 2023 · 0 comments

Comments

@h4l
Copy link

h4l commented Dec 29, 2023

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 ObjectMultiplex from @metamask/object-multiplex
  • The warning occurs when an ObjectMultiplex stream 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 publicConfig named substream
    • I can see such messages being received from the Port opened to communicate with MetaMask from my extension
    • It's not that some legacy thing in my extension is using the publicConfig stream.
  • MetaMask's own injected contentscript ignores messages for the publicConfig substream, 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 StreamProvider in this repo that creates the ObjectMultiplex doesn't ignore publicConfig messages:
    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant