@expo/mux

1.0.7 • Public • Published

mux CircleCI codecov

A simple and convenient function that resolves promises in data structures like arrays, objects, Maps, and Sets

What is mux?

Mux is a function that multiplexes promises in nested data structures and resolves them like this:

await mux({
  a: asyncFunction1(),
  b: asyncFunction2(),
});

// Result:
{
  a: result1,
  b: result2,
}

Installing mux

yarn add @expo/mux

And import it like this:

import mux from '@expo/mux';

More examples

You can also pass in deeply nested data structures like this:

await mux({
  a: {
    b: asyncFunction1(),
  },
});

// Result:
{
  a: {
    b: result1,
  },
}

Mux supports several standard JavaScript data structures:

await mux(new Set([
  asyncFunction1(),
  asyncFunction2(),
]));

// Result:
new Set([
  result1,
  result2,
])

And if your promises themselves result in data structures, mux will recurse into them and resolve the nested promises.

await mux([
  Promise.resolve({
    a: asyncFunction1(),
  }),
]);

// Result:
[
  {
    a: result1,
  },
]

Check out the test suite for even more examples.

Interesting use cases

If you've discovered a particularly interesting way to use mux, add it here and send a PR to share it.

Package Sidebar

Install

npm i @expo/mux

Weekly Downloads

2,099

Version

1.0.7

License

MIT

Last publish

Collaborators

  • schestakov
  • janicduplessis
  • wkozyra
  • barthec
  • quinlanj
  • sjchmiela
  • tsapeta
  • dsokal
  • esamelson
  • expoadmin
  • ide
  • brentvatne
  • nikki93
  • ccheever
  • terribleben
  • jesseruder
  • fson
  • evanbacon