0.0.5 • Published 7 years ago

lambda-promise-handler v0.0.5

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

Build Status Coverage Status Code Climate

lambda-promise-handler

write your lambda handlers as promises, use promises as middleware, last promise in chain resolves to response

example

'use strict';

// the following line is optional but recommended
global.Promise = require('bluebird'); // bluebird comes with lambda-promise-handler

const lambdaPromiseHandler = require('lambda-promise-handler');

const connector = lambdaPromiseHandler({
  before(event, context, payload) {
    // do something before the connector's promises are getting executed
    // eg. open mongoose connection
  },
  after(results, event, context, payload) {
    // do something after the connector's promises were executed
    // this happens before success/error
    // eg. close mongoose connection
  },
  success(results, event, context, payload) {
    // create a json response for the http/s clients response
    return results.pop();
  },
  error(err, event, context, payload) {
    // do something with the error object before its getting sent to the http/s clients response
    const errorResponse = err;
    const errorMessage = err.message;

    // if no error code found between brackets, use [500] as a default
    if (!errorMessage.match(/\[(.*?)\]/)) errorResponse.message = `[500] ${errorMessage}`;
    return errorResponse;
  },
});

module.exports.createUser = connector((event, context, payload) => {
  // logic to create a user in your database
  // you can add key/values to the event, context and payload, they will appear in the next promise this connector runs
  // but to keep the foundation clean, we recommend using the payload to move state to the next promise
  payload.a = 1;
}, (event, context, payload) => {
  // the payload contains the key a with value 1 already, so we now make the http/s client response containing just the number 2
  return payload.a + 1;
});

Contribute

npm scripts

$ npm test
# just runs the tests
$ npm run watch
# runs the tests in watch mode, changing tests or module code re-runs the tests
$ npm run coverage
# creats an instructed build of the modules script and runs it through mocha, generates a html report
$ npm run report
# opens the html report in your default browser
0.0.5

7 years ago

0.0.4

7 years ago

0.0.3

7 years ago

0.0.2

7 years ago

0.0.1

7 years ago