@serverless-guy/lambda
v2.3.8
Published
A small lambda wrapper that lets you write cleaner and maintainable lambda function
Downloads
200
Maintainers
Readme
@serverless-guy/lambda
A small lambda wrapper that lets you write cleaner and maintainable lambda function
Status
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.