co-middleware
co-powered middleware mixin for objects
Installation
npm install co-middleware
API
Middleware(obj)
The Middleware
may be used as a mixin or a standalone object.
Standalone:
var Middleware = ;var middleware = ; middleware; ;// result == true, and console.logs "I say: hello""
Mixin:
var user = name: 'Tobi' ;;user;
Prototype mixin:
var { thisname = 'Tobi';}; ; var user = ;user;
Middleware#middleware(name, fn*, [...moreFns*])
Registers generator as a middleware for name
.
fn*
can be:
- a generator function
- an array of multiple generator functions (will be run in the order passed in)
var middleware = ;var {} {} {}; // All of these would be equal middleware;middleware;middleware; // or middleware; // or middleware;
Middleware#run(name, ...args)
Runs the registered middlewares for name
. Passes in optional args
to the middlewares.
args
can be an array, or multiple arguments.
Returns a thunk.
var result = middleware;console // 4
Middleware chaining
As is implied by the middleware pattern, results from one middleware can be piped into the next. For example:
var middleware = ; var { return str;}; var { return str}; middleware; var result = middleware;// result == 'H'
If you do not return a value, it will use the initial arguments passed in.
Middleware#removeMiddleware([name], [middleware])
Removes a given middleware for a specific name.
- If no
name
is provided, all middleware will be removed. - If no
middleware
is provided, all middleware for givenname
will be removed. - If
name
andmiddleware
provided, removesmiddleware
fromname
Middleware#hasMiddlewares(name)
Returns whether or not any middleware exist for name
.
Middleware#middlewares(name)
Returns an array of all middleware for a given name. If no middlewares exist, returns an empty array.