Nine Pedestrians Mesmerized
    Wondering what’s next for npm?Check out our public roadmap! »

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

    1.2.4 • Public • Published

    Magic Handler

    A WebWorker linker extension. For creating links between WebWorkers and MainThreads

    Example

    // master.ts
    import MagicWorker from 'magic-handler/src';
     
    export interface ISlave extends FunctionsMap {
      test(a: string): Promise<string>;
    }
     
    class Master extends MagicWorker<ISlave> {
      constructor() { super('./slave.js') }
     
      // .log functio will be available for Slave and also for Master.
      async log(msg: string) {
        console.log('Slave said: ' + msg);
      }
    }
     
    const master = new Master()               // Creates a worker instance.
    master.call('goodBoy')                    // Calls the function Slave.goodBoy( ).
      .then(() => master.call('test', 'foo')) // Calls the function Slave.test('foo').
      .then(str => console.log(str));         // Logs "a: foo" after 1 second.
     
    export default master;
    // slave.ts
    import MagicWorker from 'magic-handler/src';
     
    const timeout = (time: number) => new Promise<void>(res => setTimeout(res, time))
     
    class Slave extends MagicWorker {
      public async test(a: string) {
        await timeout(1000); // Remove after a while and commit performance upgrade!
        return `a: ${a}`;
      }
     
      public async goodBoy() {
        console.log('Yay!')
        await this.call('log', 'I am a good boy'); // Call a function from master.
        return 'boy';
      }
    }
     
    const slave = new Slave(); // Create the MagicHandler instance.

    Install

    npm i magic-handler

    DownloadsWeekly Downloads

    1

    Version

    1.2.4

    License

    MIT

    Unpacked Size

    97.5 kB

    Total Files

    27

    Last publish

    Collaborators

    • avatar