Natural Polyglot Machine

    TypeScript icon, indicating that this package has built-in type declarations

    0.4.0 • Public • Published


    pipeline coverage bundlesize version license downloads

    Async multi-producer, multi-consumer FIFO queue communication utilies. This is an experimental Typescript library for working with asynchronous streams of data with a similar API to Rust standard module mpsc.

    The core building block of this library is function onceChannel which returns a Promise with the resolve function.

    function onceChannel() {
      let resolve;
      const promise = new Promise((r) => (resolve = r));
      return [resolve, promise];

    On top of onceChannel is built function channel which returns a Sender and Receiver.

    channel<T>(): [Sender<T>, Receiver<T>]

    Sender and Receiver classes loosely follow the API of Rust Sender and Receiver.

    class Sender<T> {
      send(...arg: NonNullable<T>[]): boolean;
    class Receiver<T> {
      recv(): Promise<T | null>;
      close(): boolean;
      forEach(f: (arg: T) => unknown): Promise<void>;
      collect(): Promise<T[]>;

    Sender.send method takes non-nullable argument because null is used to denote that Receiver has been closed. Receiver also implements asyncIterator protocol to enable it being used in a for loop.

    for await (const msg of receiver) {
      // ...

    Related projects

    • RxJS ‒ Reactive Extensions Library for JavaScript
    • Svelte ‒ Cybernetically enhanced web apps
    • React ‒ A JavaScript library for building user interfaces


    npm i mpmc

    DownloadsWeekly Downloads






    Unpacked Size

    27.8 kB

    Total Files


    Last publish


    • rasmusmerzin