0.1.1 • Published 8 years ago

pype-stack v0.1.1

Weekly downloads
2
License
MIT
Repository
github
Last release
8 years ago

npm version

pype

Middleware-style piping for server or browser. No dependencies. Works with async. WIP - not suitable for production.

use cases

  • Clean control flow
  • Centralized error handling
  • Testing a middleware stack without a server running
  • or when you just don't feel like using express but you reeally like piping stuff

install

$ npm install pype-stack

usage

// in browser or node w/o server
var pype = require('pype-stack'),
    one = function(req, res, next){
      req.foo = 1;
      return next();
    },
    two = function(){
      req.foo++;
      return next();
    },
    errorHandler = function(err, req, res){
      console.error(err);
    },
    finalHandler = function(req, res){
      console.log(req);
    },
    stack = [one, two, finalHandler];
// run
pype(null, stack, errorHandler)(); // logs {foo: 2}

// in node w server
var http = require('http'),
    server = http.createServer();
server.on('request', function(req, res){
  // run
  pype(null, stack, errorHandler, finalHandler)(req, res);
});
server.listen(3000);

// curried in browser w subsequent multiple calls - assume valid functions
var login = pype(token, [getUserdata, post, display], errorHandler);
$('.login-btn').click(login);

arguments

pype(context, stack, errorHandler, finalHandler)(req, res);

context any value for this for each fn

stack array of middleware

errorHandler function if called stops execution of the stack. Is passed the error.

finalHandler function last fn to run. Useful in test settings.

req, res objects

Note: All middleware use express-style args req, res, next. The exceptions are errorHandler and finalHandler. errorHandler is unlike express a separate arg from the stack and only called w err, req, res. finalHandler is called w req, res. Empty objects are passed to return fn as default.

test

$ npm test

todos

  • more tests

licence

MIT