node package manager

yeps

Yet Another Event Promised Server

Simple promised node http request-response handler

NPM

npm version Build Status Coverage Status Linux Build Windows Build

Dependency Status devDependency Status NSP Status

License GitHub stars GitHub forks GitHub issues Twitter

Node http server is simple and fast. But it works with callbacks:

const http = require('http');

const server = http.createServer( (req, res) => {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('okay');
});

If we want to use promise (and async await):

const http = require('http');
    
const server = http.createServer( (req, res) => {
  Promise.resolve({ req, res })
    .then(ctx => {
      
        ctx.res.writeHead(200, {'Content-Type': 'text/plain'});
        ctx.res.end('okay');
      
        return ctx;
    });
});

And the same with yeps:

npm i -S yeps

app.js

const App = require('yeps');

const app = module.exports = new App();

app.then(async ctx => {
  ctx.res.writeHead(200, {'Content-Type': 'text/plain'});
  ctx.res.end('Ok');
});

app.catch(async (err, ctx) => {
  ctx.res.writeHead(500);
  ctx.res.end(err.message);
});

bin/www

#!/usr/bin/env node

const http = require('http');
const app = require('../app');

http
    .createServer(app.resolve())
    .listen(parseInt(process.env.PORT || '3000', 10));

package.json

"scripts": {
  "start": "node bin/www"
}

Promise like middleware

By default all app steps will be finished. Except one of them has rejected promise:

app.then(async ctx => {
  
  ctx.res.writeHead(200);
  ctx.res.end('test');
  
  return app.reject();
  
}).then(async () => {
  
  // it wont work

}).catch(async () => {

  // it wont work

});

Packages