@connectedyard/restify-await-promise

Restify Plugin to support promises and async/await

Usage no npm install needed!

<script type="module">
  import connectedyardRestifyAwaitPromise from 'https://cdn.skypack.dev/@connectedyard/restify-await-promise';
</script>

README

restify-await-promise

Build Status dependency Status peerDependency Status devDependency Status

Converts restify routes to support async/await and returned promises. Works with Restify 4.x through 6.x. May work with Restify 7+.

Supported Restify Versions

  • Fully Supported
    • 4.x to 5.x
  • Probably Works
    • 6.x
  • Partially Compatible
    • 7.x+

Usage

const restify = require('restify');
const restifyPromise = require('restify-await-promise');

const server = restify.createServer({
  name: 'myapp',
  version: '1.0.0'
});

//Allows you to manipulate the errors before restify does its work
const alwaysBlameTheUserErrorTransformer = {
    transform: function( exceptionThrownByRoute ){
        //Always blame the user
        exceptionThrownByRoute.statusCode = 400; 
        return exceptionThrownByRoute;
    }
}

const options = {
    logger: yourLogger,                                  //Optional: Will automatically log exceptions	
    errorTransformer: alwaysBlameTheUserErrorTransformer //Optional: Lets you add status codes 
};

restifyPromise.install( server, options ); // Options is not required

// Async function, automatically calls send with the returned object and next
server.get('/lookup/:name', async function (req) {
    return await SomePromise.work( req.parms.name );
});

// Promise function
server.get('/echo/:name', function (req) {
    const params = req.params; 
    return Promise.resolve( { params } );
});

// Existing restify method
server.get('/echo2/:name', function (req, res, next) {
      res.send(req.params);
      next();
});

// Versioned Route with Restify 7+
server.get('/seek/:enlightenment', restifyPromise.asyncConditionalHandler([	
    {
        version: "1.0.0",
        handler: async function (req) {
            const result = await searchFor( req.parms.enlightenment );
            return result;
        }
    }
]));

server.listen(8080, function () {
      console.log('%s listening at %s', server.name, server.url);
});

Installation

$ npm install --save restify-await-promise

Bugs

See https://github.com/PhinCo/restify-await-promise/issues.