middleware-chain
Version:
Chain your node.js middleware / functions
103 lines (73 loc) • 2.14 kB
Markdown
# Middleware Chain
Chain your node.js functions.
Middleware Chain allows you to simply chain your syncronous / asyncronous middleware functions. It works in a very similar way to how express handles middleware.
Works really well using the [consign](https://www.npmjs.com/package/consign) module to autoload your scripts.
## Usage
```
chain([context], chain);
```
```js
var chain = require('middleware-chain');
chain([ one, two, three ]);
// Optionally pass in context
var app = { hello: 'world' };
chain(app, [ one, two, three ]);
```
Please check out the [examples](examples) or [test folder](test) for more!
## Installation
```bash
$ npm install middleware-chain
```
## Features
* Chain functions / middleware
* Works with both asyncronous and syncronous functions
* Brings structure to scripts with a lot of callbacks
* Allows modifiable flow
* Ability to pass in initial context
* Chains are nestable
* Ability for parrallel chains
* Test driven
* Fast, Light-weight with no external dependencies
## Context parameter
The optional context object is passed in as the first parameter, it can be an object containing anything you'd like to access throughout your middleware chain.
## Chain parameter
The chain parameter is required, it's an array containing functions to be called in order.
## Tests
To run the test suite, first install the dependencies, then run `npm test`:
```bash
$ npm install
$ npm test
```
## Full Example
```js
var chain = require('middleware-chain');
function one(context, next) {
setTimeout(function() {
context.one = 'Hello';
console.log('Hello from one', context);
return next();
}, 1000);
}
function two(context, next) {
setTimeout(function() {
context.two = 'Hello';
console.log('Hello from two', context);
return next();
}, 1000);
}
function three(context, next) {
setTimeout(function() {
context.three = 'Hello';
console.log('Hello from three', context);
}, 1000);
}
chain([ one, two, three ]);
```
### Output
```bash
Hello from one
Hello from two
Hello from three
```
## License
[MIT](LICENSE)