diff --git a/package-lock.json b/package-lock.json index 8035b5b..91a0b97 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "adapcon-utils-js", - "version": "1.4.4", + "version": "1.4.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "adapcon-utils-js", - "version": "1.4.4", + "version": "1.4.5", "dependencies": { "@aws-sdk/client-dynamodb": "^3.496.0", "@aws-sdk/client-lambda": "^3.496.0", diff --git a/package.json b/package.json index 92952be..f18c019 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "adapcon-utils-js", - "version": "1.4.4", + "version": "1.4.5", "description": "Utils library for Javascript", "keywords": [], "author": { diff --git a/src/error/customErrors.ts b/src/error/customErrors.ts index 96f2561..7ea85d5 100644 --- a/src/error/customErrors.ts +++ b/src/error/customErrors.ts @@ -77,6 +77,11 @@ class PreconditionFailedError extends CustomError { kind = 'Precondition Failed Error' } +class tooManyRequestsError extends CustomError { + statusCode = HttpStatuses.tooManyRequests + kind = 'Too Many Requests Error' +} + export { BadRequestError, CustomError, @@ -84,5 +89,6 @@ export { InternalError, NotFoundError, UnauthorizedError, - PreconditionFailedError + PreconditionFailedError, + tooManyRequestsError } diff --git a/src/http/enums.ts b/src/http/enums.ts index bc05872..688433d 100644 --- a/src/http/enums.ts +++ b/src/http/enums.ts @@ -31,6 +31,7 @@ export enum HttpStatuses { preconditionFailed = 412, teaPot = 418, unprocessableEntity = 422, + tooManyRequests = 429, internalError = 500, notImplemented = 501 } diff --git a/src/lambda/interfaces.ts b/src/lambda/interfaces.ts index 17aaf49..c83c317 100644 --- a/src/lambda/interfaces.ts +++ b/src/lambda/interfaces.ts @@ -55,8 +55,10 @@ export type DocfySettings = { default?: any } +export type LambdaFunctionTypes = 'screen' | 'integration' | 'public' | 'session' | 'hybrid' + export type Docfy = { - type: 'screen' | 'integration' | 'public' | 'session' | 'hybrid' + type: LambdaFunctionTypes description: string pathParameters?: Record> queryStringParameters?: Record diff --git a/src/lambda/lambdaResponses.ts b/src/lambda/lambdaResponses.ts index dade34f..9e414f2 100644 --- a/src/lambda/lambdaResponses.ts +++ b/src/lambda/lambdaResponses.ts @@ -1,6 +1,7 @@ +import { Context } from 'aws-lambda' import { isNumber } from '../number' import { objToStr } from '../object' -import type { Error, Headers } from './interfaces' +import type { Error, Headers, LambdaFunctionTypes } from './interfaces' export const lambdaResp = (statusCode: number, body?: object | string, headers?: Headers) => ({ statusCode, @@ -17,11 +18,16 @@ export const lambdaRespError = (err: Error) => { return lambdaResp(500, (err.message) ? { error: err.message } : undefined) } +type LambdaProcessErrorParams = { + type?: LambdaFunctionTypes + context: Context + err: Error +} export const lambdaProcessError = ({ - type = 'session', functionName, context, err -}) => { - console.error(`${type} ${functionName as string} - ERROR: `, err) - const metadata = { logStreamName: context?.logStreamName, functionName } + type = 'session', context, err +}: LambdaProcessErrorParams) => { + console.error(`${type} ${context.functionName} - ERROR: `, err) + const metadata = { logStreamName: context?.logStreamName, functionName: context.functionName } if (err.statusCode) { const errorResponse: {