pinion

0.0.0 • Public • Published

Pinion

Connect like middleware framework for handling generic req, rep pairs. When I say generic, I mean literally anything can go as req and rep. Unlike connect, this framework doesn't have any concept of http, or routing built into it. Might add some configurable routing later.

Why? Pretty much just an experiment at the moment and to scratch an itch I have. Lots of room for improvements here. If it proves useful I might do something koa like with generators etc etc.

Usage

Create a pinion app

var pinion = require('pinion');
var app = pinion();

Add some middleware

Like connect, middleware should either take 3 args (req, res, next) in which case it will be standard handler, or 4 args (err, req, res, next) in which case it will be an error handler.

 
//normal middleware
app.use(function(req, res, next){
    if(req.id === undefined) {
        return next(new Error('id missing'));
    }
    console.log('message id:', req.id);
    console.log('message length:', req.message.length);
})
 
//error handler
app.use(function(err, req, res, next){
    console.error("something bad happened", err);
    //If we want to hand off to the next error handling middleware
    //next(err);
})

Sending a message into the app

This should work ok:

var req = {
    id: 1284,
    message: "here is some stuff"
};
 
var res = console.log;
 
app(req, res);

You should end up with some output like this:

message id: 1284
message length: 18

and this one should give us an error:

var req = {
        message: "watch me fail"
};
 
var res = console.log;
 
app(req, res);

and the output

[Error: id missing]

Todo

  • What to do about unhandled messages/errors
  • Sort out emitters usage
  • tidy up debug usage
  • TESTS!
  • More examples

License

BSD 2 clause

Contributing

Open issues, send PRs, ask me questions on twitter (@sandfoxuk)

Readme

Keywords

none

Package Sidebar

Install

npm i pinion

Weekly Downloads

0

Version

0.0.0

License

BSD-2-Clause

Last publish

Collaborators

  • sandfox