diff --git a/types/aws-serverless-express/aws-serverless-express-tests.ts b/types/aws-serverless-express/aws-serverless-express-tests.ts index 30b6cd354c..1b04f5a0f1 100644 --- a/types/aws-serverless-express/aws-serverless-express-tests.ts +++ b/types/aws-serverless-express/aws-serverless-express-tests.ts @@ -2,14 +2,7 @@ import * as awsServerlessExpress from 'aws-serverless-express'; import express = require('express'); import { eventContext } from 'aws-serverless-express/middleware'; -const app = express(); -app.use(eventContext()); - -const server = awsServerlessExpress.createServer(app, () => {}, []); - -const mockEvent = { - key: 'value' -}; +declare let mockEvent: AWSLambda.APIGatewayEvent; const mockContext = { callbackWaitsForEmptyEventLoop: true, @@ -26,6 +19,17 @@ const mockContext = { succeed: (message: string) => false }; +const app = express(); +app.use(eventContext()); +app.get('/', (req, res) => { + if (req.apiGateway) { + req.apiGateway.event; + req.apiGateway.context; + } +}); + +const server = awsServerlessExpress.createServer(app, () => {}, []); + awsServerlessExpress.proxy(server, mockEvent, mockContext); awsServerlessExpress.proxy(server, mockEvent, mockContext, 'CALLBACK', () => {}); awsServerlessExpress.proxy(server, mockEvent, mockContext, 'CONTEXT_SUCCEED'); diff --git a/types/aws-serverless-express/index.d.ts b/types/aws-serverless-express/index.d.ts index 4fa301d2d5..68253f6b16 100644 --- a/types/aws-serverless-express/index.d.ts +++ b/types/aws-serverless-express/index.d.ts @@ -5,7 +5,7 @@ // Matthias Meyer // Alberto Vasquez // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.8 +// TypeScript Version: 3.5 /// import * as http from 'http'; @@ -29,20 +29,20 @@ export function createServer( export function proxy( server: http.Server, - event: any, + event: lambda.APIGatewayProxyEvent, context: lambda.Context, ): http.Server; export function proxy( server: http.Server, - event: any, + event: lambda.APIGatewayProxyEvent, context: lambda.Context, resolutionMode: 'CONTEXT_SUCCEED' | 'PROMISE', ): ProxyResult; export function proxy( server: http.Server, - event: any, + event: lambda.APIGatewayProxyEvent, context: lambda.Context, resolutionMode: 'CALLBACK', callback?: (error: any, response: Response) => void diff --git a/types/aws-serverless-express/middleware.d.ts b/types/aws-serverless-express/middleware.d.ts index ff33b4c6ea..f5b5bb924a 100644 --- a/types/aws-serverless-express/middleware.d.ts +++ b/types/aws-serverless-express/middleware.d.ts @@ -1,8 +1,24 @@ +import { IncomingMessage } from 'http'; +import { APIGatewayProxyEvent, Context } from 'aws-lambda'; import { RequestHandler } from 'express'; +type NonFunctionPropertyNames = { [K in keyof T]: T[K] extends Function ? never : K }[keyof T]; // tslint:disable-line:ban-types +type NonFunctionProperties = Pick>; + +declare module 'http' { + interface IncomingMessage { + apiGateway?: { + event: Omit; + context: NonFunctionProperties; + }; + } +} + export interface Options { reqPropKey?: string; deleteHeaders?: boolean; } export function eventContext(options?: Options): RequestHandler; + +export {};