@valbo/workers

Run code in the background with a configurable frequency.

Usage no npm install needed!

<script type="module">
  import valboWorkers from 'https://cdn.skypack.dev/@valbo/workers';
</script>

README

@valbo/workers

Run code in the background with a configurable frequency.

npm (scoped) semantic-release Build Status Coverage Status Known Vulnerabilities

Install

npm install @valbo/workers

Usage

First you need to create an object of type WorkerProcess with the code to run:

import { WorkerProcess } from '@valbo/workers';

const process: WorkerProcess = {
  async onStart(): Promise<void> {
    console.log('onStart() called');
  },
  
  async onStop(): Promise<void> {
    console.log('onStop() called');
  },
  
  async onProcess(): Promise<number> {
    console.log('onProcess() called, calling it again in 1s');
    return 1000;
  },
};

The WorkerProcess type has 3 methods:

  • An optional onStart() method the worker will call when it starts. If it resolves the worker will start and if it rejects the worker will fail.
  • An optional onStop() method the worker will call when it stops. If it resolves the worker will stop and if it rejects the worker will fail.
  • A onProcess() method the worker will call repeatedly while started. The worker will wait its resolved value (in ms) to call it again, or a configurable delay (default 30s) if it rejects.

Once you have a WorkerProcess object you need to create a Worker with it and call start() on the worker:

import { Worker } from '@valbo/workers';

const worker = new Worker({ name: 'example', process, delayOnError: 15000 });
await worker.start();

The Worker class has:

  • A status property which can be stopped, starting, started, stopping or failed.
  • A start() and stop() methods to start and stop the worker.
  • A addStatusListener() and removeStatusListener() to report changes in its status to whoever is interested.

Example

See the example file for a full example.