@evokegroup/aws
TypeScript icon, indicating that this package has built-in type declarations

3.0.3 • Public • Published

@evokegroup/aws

AWS utilities

Requires NodeJS 18+

Class: LambdaEvent

Properties

Property Type Description
event object The event data from Lambda

Class: ApiGatewayEvent

extends LambdaEvent

Properties

Property Type Description
headers object The event headers
stageVariables object The stage variables sent into the event by API Gateway

Methods

getBody()

Returns the event request body.

setBody(value)

Overwrite the event request body.

Parameter Type Default Description
value * The body value. Will be stringified.

getBodyJSON()

Returns the event request body as JSON or Error if the data cannot be parsed.

isJsonRequest()

Returns true if the Content-Type header is set to application/json

getHeader(name)

Gets a header by a case-insensitive name.

Parameter Type Default Description
name string The case-insensitive header name

setHeader(name, value)

Sets a header.

Parameter Type Default Description
name string The case-insensitive header name
value string The header value

getStage()

Gets the stage sent by API Gateway

getStageVariable(name)

Gets a stage variable by name. Returns null if not found.

Parameter Type Default Description
name string The stage variable name

setStageVariable(name, value)

Overrides a stage variable.

Parameter Type Default Description
name string The stage variable name
value string The stage variable value

Class: Config

Base class for configurations classes that can pass their configuration values via an object

Methods

init(config = this)

Initializes the configuration properties.

set(config = {})

Sets properties.

initProperty(name, value)

Initializes a single property

Parameter Type Description
name string The property name
value * The default property value

getTypedEnvValueOrDefault(value, defaultValue)

Attempts to convert value to the defaultValue type. If defaultValue is a function, value will be passed as the argument and the result will be returned.

Parameter Type Description
value * The value
defaultValue * The default typed value to fallback on

Class: EnvironmentConfig

extends Config

Base class for configurations classes using environment variables (process.env)

Class: LambdaConfig

extends EnvironmentConfig

Base class for configurations classes within a Lambda function

constructor(event)

Parameters Type Default Description
event EvokeAws.LambdaEvent, object The event data passed to the Lambda function
const { LambdaConfig, SuccessResponse } = require('@evokegroup/aws');

class MyConfig extends LambdaConfig {
  site = null;
  environment = null;

  constructor(event) {
    super(event); 
    this.init();
  }
}

export const handler = async (event) => {
  return new Promise((resolve, reject) => {
    const config = new MyConfig(event);
    // do stuff
    resolve(SuccessResponse.json());
  });
};

Properties

event

The EvokeAws.LambdaEvent created from the event data passed to the function

Class: ApiGatewayConfig

extends EnvironmentConfig

Base class for configurations classes within a Lambda function being exexuted via API Gateway and using stage variables

Class: LambdaResponse

A basic Lambda response object.

{
  statusCode: 200,
  headers: {
    "Access-Control-Allow-Origin": "*"
  },
  body: "Hello world",
  isBase64Encoded: false
}

constructor(object)

Parameter Type Default Description
statusCode number 200 The HTTP status code
headers object { "Access-Control-Allow-Origin": "*" } The response headers. These headers will be merged with the default headers.
body string The response body
isBase64Encoded boolean false The body is base64 encoded
// Return a base64 encoded Buffer
import { LambdaResponse } from '@evokegroup/aws';
export const handler = async (event) => {
  return new Promise((resolve, reject) => {
    resolve(LambdaResponse.json({ body: Buffer.from('data', 'ascii'), isBase64Encoded: true }));
  });
}

Methods

serialize()

Serializes the response.

toJSON()

See serialize.

Class: JsonResponse

extends LambdaResponse

Base class for JSON-based responses.

{
  statusCode: 200,
  headers: {
    "Access-Control-Allow-Origin": "*",
    "Content-Type": "application/json"
  },
  body: "{\"success\":true,\"message\":\"OK\",\"data\":{}}",
  isBase64Encoded: false
}

constructor(object)

Parameter Type Default Description
statusCode number 200 The HTTP status code
headers object { "Access-Control-Allow-Origin": "*" } The response headers. These headers will be merged with the default headers.
message string ""
data object null

Class: SuccessResponse

extends JsonResponse

Creates a JsonResponse with a default statusCode = 200 and body success = true.

constructor(object)

Parameter Type Default Description
statusCode number 400 The HTTP status code
headers object { "Content-Type": "application/json" } See EvokeAws.LambdaResponse
message string "" The response message
data object null An object to send back in the response
const { SuccessResponse } = require('@evokegroup/aws');

export const handler = async (event) => {
  return new Promise((resolve, reject) => {
    resolve(SuccessResponse.json());
  });
};

Class: ErrorResponse

extends JsonResponse

Creates a JsonResponse with a default statusCode = 400 and body success = false.

{
  statusCode: 400,
  headers: {
    "Access-Control-Allow-Origin": "*",
    "Content-Type": "application/json"
  },
  body: "{\"success\":false,\"message\":\"An error has occurred.\",\"data\":null}",
  isBase64Encoded: false
}

constructor(object)

Parameter Type Default Description
statusCode number 400 The HTTP status code
headers object { "Content-Type": "application/json" } See EvokeAws.LambdaResponse
message string "" The response message
data object null An object to send back in the response
err object null Any error information
const { ErrorResponse } = require('@evokegroup/aws');

export const handler = async (event) => {
  return new Promise((resolve, reject) => {
    resolve(ErrorResponse.json({ statusCode: 403, message: 'Unauthorized' }));
  });
};

Readme

Keywords

none

Package Sidebar

Install

npm i @evokegroup/aws

Weekly Downloads

0

Version

3.0.3

License

ISC

Unpacked Size

47.4 kB

Total Files

14

Last publish

Collaborators

  • ybevoke
  • jtsuyuki
  • evokejames
  • evoke-cjamodeo