Norwegian Parcel Mail

    comlink-loader-fork

    1.1.1 • Public • Published

    comlink-loader

    🛰 comlink-loader 📡

    Offload modules to Worker threads seamlessly using Comlink.

    THIS IS A FORKED VERSION OF comlink-loader

    The reason for this fork is to patch this bug in the original one.

    Features

    • Offload almost any module into a Worker with little or no usage change
    • Supports arbitrary classes, objects & functions (await new Foo())
    • Works beautifully with async/await
    • Built-in code-splitting: workers are lazy-loaded

    Installation

    npm install -D comlink-loader

    Usage

    The goal of comlink-loader is to make the fact that a module is running inside a Worker nearly transparent to the developer.

    In the example below, the sole difference between running MyClass on a Worker thread instead of the main thread is that instantiation and method calls must be prefixed with await. This is required because Worker interactions are inherently asynchronous.

    my-class.js: (gets moved into a worker)

    // Dependencies get bundled into the worker:
    import rnd from 'random-int';
     
    // Export as you would in a normal module:
    export class MyClass {
      constructor(value = rnd()) {
        this.value = value;
      }
      increment() {
        this.value++;
      }
      // Tip: async functions make the interface identical
      async getValue() {
        return this.value;
      }
    }

    main.js: (our demo, on the main thread)

    import { MyClass } from 'comlink-loader!./my-class';
     
    const inst = await new MyClass(42); // notice the await
     
    await inst.increment();
     
    await inst.getValue();  // 43

    License

    Apache-2.0

    Install

    npm i comlink-loader-fork

    DownloadsWeekly Downloads

    1

    Version

    1.1.1

    License

    Apache-2.0

    Unpacked Size

    21.8 kB

    Total Files

    9

    Last publish

    Collaborators

    • jackyef