From 88abb1af4e422a661a4721194521b3272a84803f Mon Sep 17 00:00:00 2001 From: Jeferson Alves Date: Tue, 9 Apr 2024 19:28:50 -0300 Subject: [PATCH] fix(lambda): :sparkles: Update DocfySettings interface and extractParams function (#247) --- package-lock.json | 4 ++-- package.json | 2 +- src/lambda/interfaces.ts | 7 +++++-- src/lambda/lambdaGetParameters.ts | 16 +++++++++++++--- 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2dec94c..cda0c3e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "adapcon-utils-js", - "version": "1.3.2", + "version": "1.3.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "adapcon-utils-js", - "version": "1.3.2", + "version": "1.3.3", "dependencies": { "@aws-sdk/client-dynamodb": "^3.496.0", "@aws-sdk/client-lambda": "^3.496.0", diff --git a/package.json b/package.json index eafe919..f5e5ca6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "adapcon-utils-js", - "version": "1.3.2", + "version": "1.3.3", "description": "Utils library for Javascript", "keywords": [], "author": { diff --git a/src/lambda/interfaces.ts b/src/lambda/interfaces.ts index 865a2d3..f73f5cc 100644 --- a/src/lambda/interfaces.ts +++ b/src/lambda/interfaces.ts @@ -49,16 +49,19 @@ export type CrudInputParams = { } export type DocfySettings = { label: string + description?: string required?: boolean translate?: string + default?: any } export type Docfy = { type: 'screen' | 'integration' | 'public' | 'session' | 'hybrid' description: string - pathParameters?: { [key: string]: DocfySettings } - queryStringParameters: { [key: string]: DocfySettings } + pathParameters?: { [key: string]: Omit } + queryStringParameters?: { [key: string]: DocfySettings } headers?: { [key: string]: DocfySettings } body?: { [key: string]: DocfySettings } requestContext?: { [key: string]: DocfySettings } + fromEvent?: { [key: string]: DocfySettings } } diff --git a/src/lambda/lambdaGetParameters.ts b/src/lambda/lambdaGetParameters.ts index 429aa00..8eb6f1a 100644 --- a/src/lambda/lambdaGetParameters.ts +++ b/src/lambda/lambdaGetParameters.ts @@ -48,9 +48,15 @@ const extractParams = (docfy: Docfy, parameter: string, evt: APIGatewayEvent) => for (const [key, value] of Object.entries(docfy[parameter] ?? {}) as Array<[key: string, value: DocfySettings]>) { const identity = value.translate ?? key - const param = get(evt, `${parameter}.${key}`) - - if (value.required && !param) { errs[key] = `Missing(${parameter}) ${value.label}` } else if (param !== 'undefined') params[identity] = param + const param = get(evt, `${parameter}.${key}`) ?? value.default + + const alreadyExist = value.translate && !params[value.translate] + const isRequired = value.required ?? parameter === 'pathParameters' + if (isRequired && !param && alreadyExist) { + errs[key] = `Missing(${parameter}) ${value.label}` + } else if (param !== 'undefined' && !params[identity]) { + params[identity] = param + } } return { params, errs } } @@ -90,6 +96,10 @@ export const lambdaSettingsGetParameters = (docfy: Docfy, evt: APIGatewayEven Object.assign(parameters, requestContext.params) Object.assign(errs, requestContext.errs) + const fromEvent = extractParams(docfy, 'fromEvent', { ...evt }) + Object.assign(parameters, fromEvent.params) + Object.assign(errs, fromEvent.errs) + if (docfy.body) { try { const evtObj = {