# middleware-handler

> Manager for custom middlewares

Latest version **0.2.0** (published 2013-03-17) · 0 weekly downloads

## Install

```sh
npm install middleware-handler
pnpm add middleware-handler
yarn add middleware-handler
bun add middleware-handler
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.2.0 |
| Published | 2013-03-17 |
| First published | 2013-03-03 |
| Weekly downloads | 0 |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 2 |
| Author | Naoyuki Kanezawa |
| Maintainers | nkzawa |
| Keywords | middleware, express, connect, handler, manager |

## Links

- npm: https://www.npmjs.com/package/middleware-handler
- Repository: https://github.com/nkzawa/middleware-handler
- npm.io page: https://npm.io/package/middleware-handler

## Alternatives

- [@sindresorhus/slugify](https://npm.io/package/@sindresorhus/slugify.md) — 3.7M weekly downloads
- [solid-js](https://npm.io/package/solid-js.md) — 2.7M weekly downloads
- [expo-glass-effect](https://npm.io/package/expo-glass-effect.md) — 2.5M weekly downloads
- [nanoassert](https://npm.io/package/nanoassert.md) — 780.8K weekly downloads
- [@ffmpeg/ffmpeg](https://npm.io/package/@ffmpeg/ffmpeg.md) — 529.5K weekly downloads

## Recent versions

- 0.2.0 (latest) — 2013-03-17
- 0.1.1 — 2013-03-03
- 0.1.0 — 2013-03-03

## README

# MiddlewareHandler
[![Build Status](https://travis-ci.org/nkzawa/middleware-handler.png?branch=master)](https://travis-ci.org/nkzawa/middleware-handler)

MiddlewareHandler manages custom middlewares in the same way as how Express/Connect does.

```js
var MiddlewareHandler = require('middleware-handler');

var handler = new MiddlewareHandler();
handler.use(function(a, b, next) {
  console.log(a, b); // foo bar
  next();
});
handler.handle(['foo', 'bar']);
```

## Installation
    $ npm install middleware-handler

## Example

### Integration with Socket.io
Parsing cookie from handshake's data with the authorization.

```js
var cookieParser = require('express').cookieParser('secret');
var handler = new MiddlewareHandler();
handler.use(function(handshakeData, next) {
  // handshakeData has almost the same attributes with request object.
  cookieParser(handshakeData, {}, next);
});

var io = require('socket.io').listen(8080);
io.set('authorization', function(handshakeData, callback) {
  handler.handle([handshakeData], function(err) {
    console.log(handshakeData.cookies);
    callback(err, !err);
  });
});
```

## Documentation

### #use(middleware)
```middleware``` accepts variable arguments and a callback.

```js
var handler = new MiddlewareHandler();
handler.use(function(arg, next) {
  var err;
  // do some stuff
  next(err);  // optionally accepts an error object
});
```

```js
handler.use(function(arg, next) {
  next(null, 'foo'); // arguments will be passed to a next middleware
});
handler.use(function(arg, next) {
  console.log(arg);  // 'foo'
  next();
});
```

### #handle([args], [callback])
Invokes middlewares.

```js
var handler = new MiddlewareHandler();
handler.use(function(a, b, next) {
  console.log(a, b);  // 'foo bar'
  next();
});
handler.handle(['foo', 'bar'], function(err) {
  // after calling all middlewares
});
```

### #compose([callback])
Creates a function which invokes middlewares.

```js
var handler = new MiddlewareHandler();
handler.use(function(a, b, next) {
  console.log(a, b);  // 'foo bar'
  next();
});

var fn = handler.compose(function(err) {
    // after calling all middlewares
  });
fn('foo', 'bar');
```

### #clear()
Clear all middlewares from the stack.

```js
var handler = new MiddlewareHandler();
handler.use(function() {});
console.log(handler.stack.length);  // 1

handler.clear();
console.log(handler.stack.length);  // 0
```

### compose(middlewares...)
Creates a function which invokes the passed middlewares.

```js
function middleware(a, b, next) {
  console.log(a, b);  // 'foo bar'
  next();
}

var fn = MiddlewareHandler.compose(middleware, function(a, b) {
    console.log(a, b);  // 'foo bar'
  });
fn('foo', 'bar');
```

## License
MIT

---
_Source: https://npm.io/package/middleware-handler · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
