middleware-flow
Advanced tools
Comparing version 0.2.0 to 0.2.1
28
index.js
@@ -9,12 +9,21 @@ var createCount = require('callback-count'); | ||
step(middlewares.shift()); | ||
var error; | ||
function step (mw) { | ||
if (mw) { | ||
mw(req, res, nextStep); | ||
if (error) { | ||
mw(error, req, res, nextStep); | ||
} | ||
else { | ||
mw(req, res, nextStep); | ||
} | ||
} | ||
else { | ||
next(); // done | ||
next(error); // done | ||
} | ||
} | ||
function nextStep (err) { | ||
if (err) return next(err); | ||
if (err) { | ||
error = err; | ||
middlewares = middlewares.filter(lengthOf(4)); | ||
} | ||
step(middlewares.shift()); // continue | ||
@@ -96,2 +105,5 @@ } | ||
if (err || !result) { | ||
if (exists(err)) { | ||
req.lastError = err; | ||
} | ||
flow.series.apply(null, conditional.else)(req, res, next); | ||
@@ -137,2 +149,12 @@ } | ||
return exec; | ||
} | ||
function exists (v) { | ||
return v !== null && v !== undefined; | ||
} | ||
function lengthOf (i) { | ||
return function (foo) { | ||
return foo.length === i; | ||
}; | ||
} |
{ | ||
"name": "middleware-flow", | ||
"version": "0.2.0", | ||
"version": "0.2.1", | ||
"description": "Middleware control flow library: series, parallel, or, and", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -24,3 +24,3 @@ # middleware-flow [![Build Status](https://travis-ci.org/tjmehta/middleware-flow.png?branch=master)](https://travis-ci.org/tjmehta/middleware-flow) | ||
```js | ||
var flow = require('middleware-flow'); | ||
var parallel = require('middleware-flow').parallel; | ||
var app = require('express')(); | ||
@@ -34,3 +34,3 @@ // runs the middlewares in 'parallel' | ||
```js | ||
var parallel = require('middleware-flow').parallel; | ||
var or = require('middleware-flow').or; | ||
var app = require('express')(); | ||
@@ -45,3 +45,77 @@ // runs the middlewares in series, until one passes (no next(err)); | ||
## if(value).then(middlewares...).else(middlewares...) | ||
```js | ||
var if = require('middleware-flow').if; | ||
var app = require('express')(); | ||
app.use( | ||
if(true) | ||
.then(one, two, three) | ||
.else(error) | ||
); | ||
``` | ||
## syncIf(fn).then(middlewares...).else(middlewares...) | ||
```js | ||
var syncIf = require('middleware-flow').syncIf; | ||
var app = require('express')(); | ||
app.use( | ||
syncIf(nameQueryExists) // accepts a sync function that returns a boolean | ||
.then(one, two, three) // true -> then, false -> else | ||
.else(error) | ||
); | ||
function nameQueryExists (req, res) { | ||
return exists(req.query.name); | ||
} | ||
function exists (val) { | ||
return val !== null && val !== undefined; | ||
} | ||
``` | ||
## asyncIf(fn).then(middlewares...).else(middlewares...) | ||
```js | ||
var asyncIf = require('middleware-flow').asyncIf; | ||
var or = require('middleware-flow').or; | ||
var fs = require('fs'); | ||
var app = require('express')(); | ||
app.use( | ||
asyncIf(bodyFileExists) // expects boolean as the result argument | ||
.then(one, two, three) // true -> then, false -> else, error -> else | ||
.else(other) | ||
); | ||
function logExists (req, res, cb) { | ||
fs.exists(req.body.file, function (exists) { | ||
cb(null, exists); | ||
}); | ||
} | ||
``` | ||
## mwIf(middleware).then(middlewares...).else(middlewares...) | ||
```js | ||
var mwIf = require('middleware-flow').mwIf; | ||
var or = require('middleware-flow').or; | ||
var app = require('express')(); | ||
app.use( | ||
mwIf(userIsModerator) // error here, just runs the else middlewares | ||
.then(one, two, three) // no error -> then, error -> else | ||
.else(other) | ||
); | ||
function userIsModerator (req, res, next) { | ||
if (!req.user.isModerator) { | ||
next(new Error('access denied')); | ||
} | ||
else { | ||
next(); | ||
} | ||
} | ||
``` | ||
# License | ||
### MIT |
@@ -77,3 +77,11 @@ var createCount = require('callback-count'); | ||
) | ||
.else(nextError(err)) | ||
.else(nextError(err)), | ||
function (err, req, res, next) { | ||
if (test === mwFailErr || test === asyncFail) { | ||
if (!req.lastError) { | ||
throw new Error('lastError was not set'); | ||
} | ||
} | ||
next(); | ||
} | ||
); | ||
@@ -80,0 +88,0 @@ }); |
var express = require('express'); | ||
var mw = require('../../index'); | ||
module.exports = function createAppWithMiddlewares (middleware) { | ||
module.exports = function createAppWithMiddlewares (/* middlewares */) { | ||
var middlewares = Array.prototype.slice.call(arguments); | ||
console.log(middlewares.length); | ||
var app = express(); | ||
app.use(express.json()); | ||
app.use(express.urlencoded()); | ||
app.use(middleware); | ||
app.use(mw.series.apply(mw, middlewares)); | ||
app.use(app.router); | ||
@@ -10,0 +12,0 @@ // app.use(express.errorHandler()); |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
15524
438
118
0