2.3.8 • Published 4 years ago

@serverless-guy/lambda v2.3.8

Weekly downloads
23
License
MIT
Repository
github
Last release
4 years ago

@serverless-guy/lambda

A small lambda wrapper that lets you write cleaner and maintainable lambda function

Status

Build Status codecov Bundle Size install size NPM Version Downloads Stats Snyk CodeFactor Debt Issues David David Libraries.io SourceRank License Donate

Installation

You can start by installing this library using the command below:

npm i --save @serverless-guy/lambda

Basic Usage

In the example below, the handler would log the event first, then context. Afterwards, it will return the event as response.

import { wrapper } from "@serverless-guy/lambda";

export const handler = wrapper(someHandler);

/**
 * Handler that is accepted by our lambda wrapper
 * @param request.event Lambda's event object
 * @param request.context Lambda's context object
 * @param response handy function to return a response
 * @return response
 */
function someHandler(request, response) {
  const { event, context } = request;

  console.log(event);
  console.log(context);

  return response(event);
}

Using middleware

import { wrapper } from "@serverless-guy/lambda";

export const handler = wrapper(someHandler);

handler.pushMiddleware(checkBody);

/**
 * Function that parse object string to object
 * @param body object string
 * @return parsed object
 */
function parse(body) {
  if (!body) {
    return {}
  }

  return JSON.parse(body);
}

/**
 * Middleware that is accepted by our lambda wrapper
 * @param request.event Lambda's event object
 * @param request.context Lambda's context object
 * @param next middleware/handler next to this middleware
 * @return next
 */
export function checkBody(request, next) {
  const { event } = request;

  const body = parse(event.body);

  if (!body.sampleValue1) {
    throw new Error("Validation Failed");
  }

  return next(request);
}


/**
 * Handler that is accepted by our lambda wrapper
 * @param request.event Lambda's event object
 * @param request.context Lambda's context object
 * @param response handy function to return a response
 * @return response
 */
function someHandler(request, response) {
  const { event, context } = request;

  const body = JSON.parse(event.body);
  console.log(context);

  return response({ message: body.sampleValue1 });
}

Using custom response function

import { wrapper } from "@serverless-guy/lambda";

export const handler = wrapper(someHandler);

handler.setResponseTemplate(customResponseTemplate);

/**
 * Custom response function that is accepted by our lambda wrapper
 * @param data object to be appended as response's body
 * @param statusCode HTTP status code
 * @param headers HTTP headers
 * @return APIGatewayProxyResult
 */
function customResponseTemplate(data, statusCode = 200, headers = {}) {
    // do something
    data.returnedOn = new Date();

    return {
    body: JSON.stringify(data),
    headers: {
      "Access-Control-Allow-Origin": "*",
      ...headers
    },
    statusCode
  };
}

/**
 * Handler that is accepted by our lambda wrapper
 * @param request.event Lambda's event object
 * @param request.context Lambda's context object
 * @param response handy function to return a response
 * @return response
 */
function someHandler(request, response) {
  const { event, context } = request;

  console.log(event);
  console.log(context);

  return response(event);
}

Using custom error response function

import { wrapper } from "@serverless-guy/lambda";
 
export const handler = wrapper(someHandler);

handler.setCatchTemplate(customCatchResponseTemplate);

/**
 * Custom error function that is accepted by our lambda wrapper
 * @param error Error object
 * @param request event and context
 * @param responseFunction Response function
 * @return APIGatewayProxyResult
 */
function customCatchResponseTemplate(error, request, responseFunction) {
  const errorResponseObject = {
    errorCode:    error.name,
    errorMessage: error.message
  };

  return response(errorResponseObject, 418); /** I'm a f***ing teapot */
}

/**
 * Handler that is accepted by our lambda wrapper
 * @param request.event Lambda's event object
 * @param request.context Lambda's context object
 * @param response handy function to return a response
 * @return response
 */
function someHandler(request, response) {
  const { event, context } = request;

  console.log(event);
  console.log(context);

  return response(event);
}

Check out our documentation page to see more examples.

2.3.8

4 years ago

2.3.7

4 years ago

2.3.6

4 years ago

2.3.5

4 years ago

2.3.3

4 years ago

2.3.2

4 years ago

2.3.1

4 years ago

2.3.0

4 years ago

2.2.17

4 years ago

2.2.16

4 years ago

2.2.15

4 years ago

2.2.14

4 years ago

2.2.13

4 years ago

2.2.12

4 years ago

2.2.11

4 years ago

2.2.10

4 years ago

2.2.9

4 years ago

2.2.8

4 years ago

2.2.7

4 years ago

2.2.6

4 years ago

2.2.5

4 years ago

2.2.4

4 years ago

2.2.0

4 years ago

2.1.5

4 years ago

2.1.4

4 years ago

2.1.3

4 years ago

2.1.2

4 years ago

2.1.1

4 years ago

2.1.0

4 years ago

2.0.1

4 years ago

2.0.0

4 years ago

2.0.0-alpha.0

5 years ago

1.3.3

5 years ago

1.3.2

5 years ago

1.3.1

5 years ago

1.3.0-beta.2

5 years ago

1.3.0-beta.1

5 years ago

1.3.0-beta.0

5 years ago

1.2.6

5 years ago

1.2.5

5 years ago

1.2.4

5 years ago

1.2.3

5 years ago

1.2.2

5 years ago

1.2.1

5 years ago

1.2.0

5 years ago

1.1.0

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

0.0.2

5 years ago

0.0.1

5 years ago