npm's personal messenger
Unleash awesomeness. Private packages, team management tools, and powerful integrations. Get started with npm Orgs »

yeps

0.0.14 • Public • Published

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('okay');
});

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');

const server = http.createServer(app.resolve());

server.listen(process.env.PORT);

package.json

"scripts": {
  "start": "NODE_ENV=production PORT=3000 node --harmony 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(); // or return Promise.reject()
});

app.then(async () => {
  // it wont work
});

app.catch(async () => {
  // it wont work
});

Packages

install

npm i yeps

Downloadsweekly downloads

85

version

0.0.14

license

MIT

homepage

github.com

repository

Gitgithub

last publish

collaborators

  • avatar
Report a vulnerability