diff --git a/package-lock.json b/package-lock.json index 848f900..325ab14 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "adapcon-utils-js", - "version": "1.3.4", + "version": "1.3.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "adapcon-utils-js", - "version": "1.3.3", + "version": "1.3.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 a367ff1..ecd3612 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "adapcon-utils-js", - "version": "1.3.4", + "version": "1.3.5", "description": "Utils library for Javascript", "keywords": [], "author": { diff --git a/src/lambda/interfaces.ts b/src/lambda/interfaces.ts index f73f5cc..17aaf49 100644 --- a/src/lambda/interfaces.ts +++ b/src/lambda/interfaces.ts @@ -58,10 +58,10 @@ export type DocfySettings = { export type Docfy = { type: 'screen' | 'integration' | 'public' | 'session' | 'hybrid' description: string - pathParameters?: { [key: string]: Omit } - queryStringParameters?: { [key: string]: DocfySettings } - headers?: { [key: string]: DocfySettings } - body?: { [key: string]: DocfySettings } - requestContext?: { [key: string]: DocfySettings } - fromEvent?: { [key: string]: DocfySettings } + pathParameters?: Record> + queryStringParameters?: Record + headers?: Record + body?: Record + requestContext?: Record + fromEvent?: Record } diff --git a/src/lambda/lambdaGetParameters.ts b/src/lambda/lambdaGetParameters.ts index 8eb6f1a..2121635 100644 --- a/src/lambda/lambdaGetParameters.ts +++ b/src/lambda/lambdaGetParameters.ts @@ -46,15 +46,19 @@ const extractParams = (docfy: Docfy, parameter: string, evt: APIGatewayEvent) => const params = {} const errs = {} - for (const [key, value] of Object.entries(docfy[parameter] ?? {}) as Array<[key: string, value: DocfySettings]>) { - const identity = value.translate ?? key + for (const [keyBase, value] of Object.entries(docfy[parameter] ?? {}) as Array<[key: string, value: DocfySettings]>) { + const key = parameter === 'headers' ? keyBase.toLowerCase() : keyBase + + const identity = value.translate ?? keyBase const param = get(evt, `${parameter}.${key}`) ?? value.default - const alreadyExist = value.translate && !params[value.translate] + const hasParamValue = params[identity] + const hasValue = param && param !== 'undefined' const isRequired = value.required ?? parameter === 'pathParameters' - if (isRequired && !param && alreadyExist) { - errs[key] = `Missing(${parameter}) ${value.label}` - } else if (param !== 'undefined' && !params[identity]) { + + if (isRequired && !hasValue && !hasParamValue) { + errs[keyBase] = `Missing(${parameter}) ${value.label}` + } else { params[identity] = param } } diff --git a/src/s3/formatters.ts b/src/s3/formatters.ts index 059207c..4f3e9b6 100644 --- a/src/s3/formatters.ts +++ b/src/s3/formatters.ts @@ -1,8 +1,9 @@ import { Readable } from 'stream'; -export const streamToString = async (stream: Readable | ReadableStream | Blob) => new Promise((resolve, reject) => { - const chunks = [] - stream.on('data', chunk => chunks.push(chunk)) +export const streamToString = async (stream: Readable) => new Promise((resolve, reject) => { + const chunks: any[] = [] + + stream.on('data', (chunk: any) => chunks.push(chunk)) stream.on('error', reject) stream.on('end', () => resolve(Buffer.concat(chunks).toString('utf8'))) })