Skip to content

Commit d496fff

Browse files
committed
Work with void-returning async handlers
1 parent 40bc582 commit d496fff

File tree

5 files changed

+36
-35
lines changed

5 files changed

+36
-35
lines changed

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,12 @@ it.('should work', async (done) => {
4141

4242
## The Solution
4343

44-
This module exports 2 utility types, `SyncHandler` and `AsyncHandler`, that transform the handlers from [@types/aws-lambda](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/aws-lambda) into the types that are intended to be implemented. It also reexports everything from [@types/aws-lambda](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/aws-lambda) for convenience.
44+
This module exports 2 utility types, - `SyncHandler` and `AsyncHandler` - that transform the handlers from [@types/aws-lambda](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/aws-lambda) into the types that are intended to be implemented.
4545

4646
### Example
4747
```typescript
48-
import {AsyncHandler, SyncHandler, APIGatewayProxyHandler} from "aws-lambda-consumer"
48+
import { AsyncHandler, SyncHandler } from "aws-lambda-consumer"
49+
import { APIGatewayProxyHandler } from "aws-lambda"
4950

5051
// (event: APIGatewayProxyEvent, context: Context, callback: Callback<APIGatewayProxyResult>) => void
5152
type SyncAPIGatewayProxyHandler = SyncHandler<APIGatewayProxyHandler>

index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@ export type SyncHandler<T extends Handler> = (
99
export type AsyncHandler<T extends Handler> = (
1010
event: Parameters<T>[0],
1111
context: Parameters<T>[1],
12-
) => Promise<NonNullable<Parameters<Parameters<T>[2]>[1]>>;
12+
) => Promise<Parameters<Parameters<T>[2]>[1] extends void ? void : NonNullable<Parameters<Parameters<T>[2]>[1]>>;

package-lock.json

Lines changed: 25 additions & 29 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "aws-lambda-consumer",
3-
"version": "2.0.0",
3+
"version": "2.1.0",
44
"description": "Typescript types that transform the handler function types from @types/aws-lambda into the stricter synchronous and asynchronous signatures that are intended to be implemented",
55
"publishConfig": {
66
"registry": "https://registry.npmjs.org"
@@ -29,8 +29,8 @@
2929
"@types/aws-lambda": "^8.10"
3030
},
3131
"devDependencies": {
32-
"tsd": "^0.22",
33-
"typescript": "^4.7.4"
32+
"tsd": "^0.25",
33+
"typescript": "^4.9.5"
3434
},
3535
"tsd": {
3636
"directory": "test"

test/index-tests.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,11 @@ type Event = "Event";
1313
type Result = "Result";
1414

1515
let SH!: SyncHandler<Handler<Event, Result>>;
16+
let SHV!: SyncHandler<Handler<Event, void>>;
1617
let AH!: AsyncHandler<Handler<Event, Result>>;
18+
let AHV!: AsyncHandler<Handler<Event, void>>;
1719

1820
expectType<(event: Event, context: Context, callback: Callback<Result>) => void>(SH);
21+
expectType<(event: Event, context: Context, callback: Callback<void>) => void>(SHV);
1922
expectType<(event: Event, context: Context) => Promise<Result>>(AH);
23+
expectType<(event: Event, context: Context) => Promise<void>>(AHV);

0 commit comments

Comments
 (0)