comlink
comlink copied to clipboard
Fixes issue #466
The fix is conceptually really simple: use a dynamic import
(or require
under cjs) to import MessageChannel
from node's worker_threads
module if we detect that the browser's instance of MessageChannel
is undefined.
Nevertheless, this turned out to be more complicated that it should due to the lack of widespread support for TLA (top-level await). So, unfortunately, the fix is only available for the umd
bundle, otherwise the esm
bundle would just work on node and would break when running on browsers.
I've put comments on the code explaining that when TLA are widely available this can be fix for both module systems.
Overall, I'm not super thrilled with how this turned out. Open to feedback and ideas on how to improve it.
Thanks for your pull request. It looks like this may be your first contribution to a Google open source project (if not, look below for help). Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).
:memo: Please visit https://cla.developers.google.com/ to sign.
Once you've signed (or fixed any issues), please reply here with @googlebot I signed it!
and we'll verify it.
What to do if you already signed the CLA
Individual signers
- It's possible we don't have your GitHub username or you're using a different email address on your commit. Check your existing CLA data and verify that your email is set on your git commits.
Corporate signers
- Your company has a Point of Contact who decides which employees are authorized to participate. Ask your POC to be added to the group of authorized contributors. If you don't know who your Point of Contact is, direct the Google project maintainer to go/cla#troubleshoot (Public version).
- The email used to register you as an authorized contributor must be the email used for the Git commit. Check your existing CLA data and verify that your email is set on your git commits.
- The email used to register you as an authorized contributor must also be attached to your GitHub account.
ℹ️ Googlers: Go here for more info.
@googlebot I signed it!
Would love to see this land!
I'm beginning to do a scrub of PRs for merge candidates for the next version. State of feature support for Top Level Await has changed since this PR was initially posted, would someone be willing to take a second look at it now that we have TLA in node and all browsers?