1
- import { expectType } from 'tsd'
1
+ import { expectType , expectAssignable } from 'tsd'
2
2
import middy from '.'
3
3
import {
4
4
APIGatewayProxyEvent ,
@@ -11,12 +11,17 @@ import {
11
11
type EnhanceHandlerType < T , NewReturn > = T extends (
12
12
event : infer TEvent ,
13
13
context : infer TContextType ,
14
- callback : infer TCallbackType
14
+ opts : infer TOptsType
15
15
) => infer R
16
- ? ( event : TEvent , context : TContextType , callback : TCallbackType ) => R | NewReturn
16
+ ? ( event : TEvent , context : TContextType , opts : TOptsType ) => R | NewReturn
17
17
: never
18
18
19
- type LambdaHandler < TEvent = any , TResult = any > = EnhanceHandlerType < AWSLambdaHandler < TEvent , TResult > , TResult >
19
+ type AWSLambdaHandlerWithoutCallback < TEvent = any , TResult = any > = (
20
+ event : TEvent ,
21
+ context : Context ,
22
+ ) => void | Promise < TResult > ;
23
+
24
+ type LambdaHandler < TEvent = any , TResult = any > = EnhanceHandlerType < AWSLambdaHandlerWithoutCallback < TEvent , TResult > , TResult >
20
25
21
26
const lambdaHandler : LambdaHandler < APIGatewayProxyEvent , APIGatewayProxyResult > = async ( event ) => {
22
27
return {
@@ -54,6 +59,12 @@ handler = middy(lambdaHandler, {
54
59
} )
55
60
expectType < Handler > ( handler )
56
61
62
+ // middy wrapped handler should be assignable to aws-lambda handler type.
63
+ expectAssignable < AWSLambdaHandler < APIGatewayProxyEvent , APIGatewayProxyResult > > ( handler )
64
+
65
+ // Middy handlers third argument is an object containing a abort signal
66
+ middy ( ( event , context , { signal } ) => expectType < AbortSignal > ( signal ) ) ;
67
+
57
68
// invokes the handler to test that it is callable
58
69
// eslint-disable-next-line @typescript-eslint/no-invalid-void-type
59
70
async function invokeHandler ( ) : Promise < void | APIGatewayProxyResult > {
@@ -127,7 +138,7 @@ async function invokeHandler (): Promise<void | APIGatewayProxyResult> {
127
138
fail : ( _ ) => { } ,
128
139
succeed : ( ) => { }
129
140
}
130
- return await handler ( sampleEvent , sampleContext , ( ) => { } )
141
+ return await handler ( sampleEvent , sampleContext )
131
142
}
132
143
invokeHandler ( ) . catch ( console . error )
133
144
@@ -315,7 +326,7 @@ async function invokSyncedHandler (): Promise<void | APIGatewayProxyResult> {
315
326
fail : ( _ ) => { } ,
316
327
succeed : ( ) => { }
317
328
}
318
- return await syncedHandler ( sampleEvent , sampleContext , ( ) => { } )
329
+ return await syncedHandler ( sampleEvent , sampleContext )
319
330
}
320
331
invokSyncedHandler ( ) . catch ( console . error )
321
332
0 commit comments