Skip to content

Commit 51f8592

Browse files
committed
Additional types to make it more readable
1 parent ff81b57 commit 51f8592

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

src/lambda.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,19 @@ declare namespace handler {
1313
type APIGatewayEventHandler = (event: handler.APIGatewayEvent, context?: handler.LambdaContext) => Promise<handler.LambdaResponse>
1414
};
1515

16+
type F<A, B> = (a: A) => B;
17+
type Nullable<T> = T | null;
18+
type PromiseFactory<A> = () => Promise<A>;
19+
1620
const eventHasMultiValueHeaders = (event: handler.APIGatewayEvent): boolean => {
1721
return event.multiValueHeaders !== null && typeof event.multiValueHeaders === 'object';
1822
}
1923

20-
const processRequest = (app: Promise<RequestListener>): handler.APIGatewayEventHandler => {
21-
let appHandler: ((r: MockRequestOptions) => Promise<MockResponse>) | null = null;
24+
const handlerBuilder = (appFn: PromiseFactory<RequestListener>): handler.APIGatewayEventHandler => {
25+
let appHandler: Nullable<F<MockRequestOptions, Promise<MockResponse>>>;
2226
return async (event, ctx) => {
2327
if (!appHandler) {
24-
const resolvedApp = await app;
28+
const resolvedApp = await appFn();
2529
appHandler = inProcessRequestHandler(resolvedApp);
2630
}
2731
try {
@@ -35,10 +39,7 @@ const processRequest = (app: Promise<RequestListener>): handler.APIGatewayEventH
3539
}
3640
};
3741

38-
const handlerPromise = (appPromiseFn: () => Promise<RequestListener>): handler.APIGatewayEventHandler => processRequest(appPromiseFn());
39-
40-
const handler = (app: RequestListener): handler.APIGatewayEventHandler => processRequest(Promise.resolve(app));
41-
42-
handler.deferred = handlerPromise;
42+
const handler = (app: RequestListener) => handlerBuilder(() => Promise.resolve(app));
43+
handler.deferred = handlerBuilder;
4344

4445
export = handler;

0 commit comments

Comments
 (0)