From 122069cb271ab27bed0bd825df3049bc72e0c0d6 Mon Sep 17 00:00:00 2001 From: Matthew Warman Date: Sun, 14 Apr 2024 07:55:45 -0400 Subject: [PATCH 1/4] SLSCMN-21 api gateway types --- src/utils/middyfy.ts | 57 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 53 insertions(+), 4 deletions(-) diff --git a/src/utils/middyfy.ts b/src/utils/middyfy.ts index 14ba0f0..a2e79eb 100644 --- a/src/utils/middyfy.ts +++ b/src/utils/middyfy.ts @@ -3,6 +3,9 @@ import httpEventNormalizer from '@middy/http-event-normalizer'; import jsonBodyParser from '@middy/http-json-body-parser'; import { APIGatewayProxyEvent, + APIGatewayProxyEventBase, + APIGatewayProxyEventPathParameters, + APIGatewayProxyEventQueryStringParameters, APIGatewayProxyResult, Context, ScheduledEvent, @@ -16,13 +19,59 @@ import { loggerInitializer } from '../middlewares/logger-initializer'; import { validator } from '../middlewares/validator-joi'; import { httpErrorHandler } from '../middlewares/error-handler-http'; +/** + * An API Gateway authorizer context for requests authorized with the + * LeanStacks client token. + */ +export type LSAPIClientAuthorizerContext = { + preferred_username: string; +}; + +/** + * An API Gateway authorizer context for requests authorized with a + * Cognito token. + */ +export type LSCognitoAuthorizerContext = { + email: string; + family_name: string; + given_name: string; + permissions: { + [teamId: string]: string[]; + }; + preferred_username: string; + user_id: string; +}; + +/** + * An API Gateway event which has been normalized by middleware. + * @template TAuthorizerContext - The authorizer context type. + * @template TBody - Optional. The body type. Default: `null`. + * @template TPathParameters - Optional. The path parameters type. Default: `APIGatewayProxyEventPathParameters`. + * @template TQueryString - Optional. The query string parameters type. Default: `APIGatewayProxyEventQueryStringParameters`. + * @see {@link APIGatewayProxyEventBase} + * @see {@link APIGatewayProxyEventPathParameters} + * @see {@link APIGatewayProxyEventQueryStringParameters} + */ +export type NormalizedAPIGatewayProxyEvent< + TAuthorizerContext, + TBody = null, + TPathParameters = APIGatewayProxyEventPathParameters, + TQueryString = APIGatewayProxyEventQueryStringParameters, +> = Omit< + APIGatewayProxyEventBase, + 'body' | 'pathParameters' | 'queryStringParameters' +> & { + body: TBody; + pathParameters: TPathParameters; + queryStringParameters: TQueryString; +}; + /** * The AWS Lambda handler function signature for API Gateway proxy events. */ -export type APIGatewayHandlerFn = ( - event: APIGatewayProxyEvent, - context: Context, -) => Promise; +export type APIGatewayHandlerFn< + TEvent extends APIGatewayProxyEventBase = APIGatewayProxyEvent, +> = (event: TEvent, context: Context) => Promise; /** * The AWS Lambda handler function signature for Scheduled events From 9889a588ba8843eb78b6d0387bfcd0a877261f7a Mon Sep 17 00:00:00 2001 From: Matthew Warman Date: Sun, 14 Apr 2024 08:11:01 -0400 Subject: [PATCH 2/4] SLSCMN-21 package version --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 980038a..2878221 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@leanstacks/serverless-common", - "version": "1.2.0", + "version": "1.3.0-alpha.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@leanstacks/serverless-common", - "version": "1.2.0", + "version": "1.3.0-alpha.1", "license": "MIT", "devDependencies": { "@aws-sdk/client-cognito-identity-provider": "^3.523.0", diff --git a/package.json b/package.json index 6ff4f5c..96a6df8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@leanstacks/serverless-common", - "version": "1.2.0", + "version": "1.3.0-alpha.1", "description": "LeanStacks organization common serverless components.", "main": "dist/cjs/index.js", "module": "dist/esm/index.js", From 71623be5336a3839b30154c4960ed085a5e62b39 Mon Sep 17 00:00:00 2001 From: Matthew Warman Date: Sun, 14 Apr 2024 09:01:50 -0400 Subject: [PATCH 3/4] SLSCMN-21 api gateway types --- src/utils/middyfy.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/utils/middyfy.ts b/src/utils/middyfy.ts index a2e79eb..91f8ae9 100644 --- a/src/utils/middyfy.ts +++ b/src/utils/middyfy.ts @@ -69,9 +69,10 @@ export type NormalizedAPIGatewayProxyEvent< /** * The AWS Lambda handler function signature for API Gateway proxy events. */ -export type APIGatewayHandlerFn< - TEvent extends APIGatewayProxyEventBase = APIGatewayProxyEvent, -> = (event: TEvent, context: Context) => Promise; +export type APIGatewayHandlerFn = ( + event: TEvent, + context: Context, +) => Promise; /** * The AWS Lambda handler function signature for Scheduled events From d37bb841f42e3fe101ed2f98c02b7debf8a9f54a Mon Sep 17 00:00:00 2001 From: Matthew Warman Date: Sun, 14 Apr 2024 09:02:51 -0400 Subject: [PATCH 4/4] SLSCMN-21 package version --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2878221..4e7518c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@leanstacks/serverless-common", - "version": "1.3.0-alpha.1", + "version": "1.3.0-alpha.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@leanstacks/serverless-common", - "version": "1.3.0-alpha.1", + "version": "1.3.0-alpha.2", "license": "MIT", "devDependencies": { "@aws-sdk/client-cognito-identity-provider": "^3.523.0", diff --git a/package.json b/package.json index 96a6df8..2801e33 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@leanstacks/serverless-common", - "version": "1.3.0-alpha.1", + "version": "1.3.0-alpha.2", "description": "LeanStacks organization common serverless components.", "main": "dist/cjs/index.js", "module": "dist/esm/index.js",