wrap-ware

A middleware wrapper which works with promises

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
wrap-ware
011.0.116 years ago6 years agoMinified + gzip package size for wrap-ware in KB

Readme

Wrap Ware
A middleware wrapper which works with promises / async.
Wrap the main function using wrap(main), then add middlewares using use(middleware).
const wrappedMain = wrap(main).use(middleware2).use(middleware1)
wrappedMain('some data')

The middlewares will execute the before function from right to left. Then the main will execute. Then the middlewares will execute the after function from left to right.
This will result in this execution order:
middleware1 before
middleware2 before
main
middleware2 after
middleware1 after

Example

An example can be found here: router example
Usage of this example: router usage example

Install

npm install wrap-ware

API / Usage

const wrap = require('wrap-ware);
const wrappedMain = wrap(main).use(middleware);

main = callback
Will be passed the arguments that you call wrappedMain with.
middleware = object with some of these functions: before, after, onError.
wrap also exposes the functions .before(fn), .after(fn) and .onError(fn).
returns an instance of wrap which allows further .use(fn) to be added.
before / after = callback ({ input, output, error, resolve, reject }) => ['arg1', 'arg2']
input = of the args that wrappedMain was called with.
output = the return value of the wrappedMain function.
error = the return value of the wrappedMain function when an error has been thrown.
resolve = callback which accepts an of args. This will be used to call the next middleware.
reject = callback to trigger the onError method of the next middleware.
The controller object can be modified to affect the subsequent middlewares. The before / after function can also simply return an array rather than calling the resolve callback.
onError = callback ({ input, output, error, input, response }) =>
error = the return value of the wrappedMain function when an error has been thrown.
resolve = callback which accepts an of args. This will be used to call the next middleware.
reject = callback to skip the remaining onError methods of the middlewares and throws to where wrap(core)() was executed