Extremely Simple Hooks
Asynchronous hooks for NodeJS and browsers. Works with promise-based architectures.
Installing
npm install eshooks
Using
Hooks registered using the on()
method and return Promises.
If it returns a Promise, the hook finishes executing before the next hook starts.
const hooks = hookshooks hooks
Output:
Pre-start check - stage 0: ["test"]
Pre-start check - stage 1: ["test"]
Starting...
Priorities
Priorities can be specified as a second argument to .on()
. Lower priorities execute first.
If no priority is specified, it defaults to 0. If multiple hooks are registered with the same priority, they are
executed in the order they are registered.
const hooks = hookshookshookshooks hooks
Output:
Pre-start check - stage 0: ["test"]
Pre-start check - stage 1: ["test"]
Pre-start check - stage 2: ["test"]
Pre-start check - stage 3: ["test"]
Starting...
Errors
You can also register an error cleanup function with registering a hook. This function should undo any effects of the hook that need to be undone on error. If an error occurs in the chain of hooks, the error cleanup function of any previous hooks (not including the hook that generated the error) are called in reverse order.
const hooks = hooks hooks hooks hooks hooks
Output:
Pre-start check - stage 0
Pre-start check - stage 1
Reverting stage 1
Reverting stage 0
Aborting... Error 'test'