middleware-decorator
Decorates functions with middleware super-powers.
Table of contents
- Features
- Installation
- Sample usage
- API
- Contributing
Features
- Synchronous, asynchronous and promised middleware support
- Zero dependencies
- UMD Module
- Tiny(5KB)
Installation
npm
npm install middleware-decorator
bower
bower install middleware-decorator
Sample usage
Prerequisites
The module has been imported with your favorite loader as middlewareDecorator
and the following function is available
{ return 10;}
Decorate with a synchronous middleware runner
getPrice = ; { return price / 2;} getPrice; console; // 5
Decorate with an asynchronous middleware runner
getPrice = middlewareDecorator; { ;} getPrice; ;
Decorate with a promised middleware runner
getPrice = middlewareDecorator; // Can return any value, if it's a promise, next middleware won't get executed till resolved{ return ;} getPrice; ;
API
Module
(anyFunction) : SynchronousMiddlewareRunner
Takes a function as argument and returns a synchronous middleware runner
synchronousMiddlewareRunner = ;
promised(anyFunction) : PromisedMiddlewareRunner
Takes a function as argument and returns a promised middleware runner
promisedMiddlewareRunner = ;
async(anyFunction) : AsynchronousMiddlewareRunner
Takes a function as argument and returns an asynchronous middleware runner
asynchronousMiddlewareRunner = ;
SynchronousMiddlewareRunner
synchronousMiddlewareRunner.use(synchronousMiddleware: Function)
Adds a synchronous middleware
synchronousMiddlewareRunner;
synchronousMiddlewareRunner.has(synchronousMiddleware: Function):boolean
Checks if has the given middleware
synchronousMiddlewareRunner; // true || false
synchronousMiddlewareRunner(...args);
Calls the original function with the given arguments and runs it's output through the registered synchronous middleware
;
AsynchronousMiddlewareRunner
asynchronousMiddlewareRunner.use(asynchronousMiddleware: Function)
Adds an asynchronous middleware
asynchronousMiddlewareRunner;
asynchronousMiddlewareRunner.has(asynchronousMiddleware: Function):boolean
Checks if has the given middleware
asynchronousMiddlewareRunner; // true || false
asynchronousMiddlewareRunner(...args).cb(callback: Function);
Calls the original function with the given arguments and runs it's output through the registered middleware, when done, calls the provided callback
;
PromisedMiddlewareRunner
promisedMiddlewareRunner.use(promisedMiddleware: Function)
Adds a promised middleware
promisedMiddlewareRunner;
promisedMiddlewareRunner.has(promisedMiddleware: Function):boolean
Checks if has the given middleware
promisedMiddlewareRunner; // true || false
promisedMiddlewareRunner(...args).then(promiseHandler: Function);
Calls the original function with the given arguments and runs it's output through the registered middleware, when done, calls the provided callback
;
Contributing
Clone the repository
git clone git@github.com:thefabulousdev/middleware-decorator.git
Install dependencies
npm install
Use npm scripts
npm test
- Lint the library and tests, then run the unit testsnpm run lint
- Lint the source and unit testsnpm run watch
- Continuously run the unit tests as you make changes to the source and test files themselvesnpm run test-browser
- Build the library for use with the browser spec runner. Changes to the source will cause the runner to automatically refresh.npm run build
- Lint then build the librarynpm run coverage
- Generate a coverage report