Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@serverless-guy/lambda

Package Overview
Dependencies
Maintainers
1
Versions
49
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@serverless-guy/lambda

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

  • 2.3.8
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

@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.

Keywords

FAQs

Package last updated on 03 Aug 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc