mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2025-10-16 12:05:41 +00:00
No tests added for the new types yet, I'll get on that tomorrow. Motivation --- The connection between the trigger event and the result types can be confusing sometimes - for example `CloudFormationCustomResourceResponse` is *not* returned from the lambda, but instead should be sent to the *Request `ResponseUrl`. This PR tries to help by providing pre-baked `Handler` types for each of the triggers (that have types already). There's also a few niggles with naming and the handler signature that have been bothering me for a while. Changes --- This PR: - Adds defaulted generic parameters to the existing `Handler` and `Callback` types. This increases the minimum TS version to 2.3. - Makes the `callback` parameter to `Handler`s "required" - this probably originally was meant to represent the Node 0.10 runtime, which did not pass a callback parameter, but that is no longer selectable when creating or editing a Lambda and makes the normal, recommended usage harder. In case anyone is confused, this doesn't break any code: it is required to be provided when being called, your handlers don't need to declare it. I'm not removing the legacy node 0.10 runtime methods `context.done()` etc., since they still work. - In the spirit of #21874, make the default result type for `Handler`, `Callback` `any`, since the only requirement is that it be `JSON.stringify()`able, and there are things like `.toJSON()`, etc. so there is no meaningful type restriction here. - Revert the definition changes of #22588, which changed the `Handler` result types to `void | Promise<void>`, which is misleading: Lambda will not accept or wait for a promise result (it by default waits for the node event loop to empty). This is not a breaking change for code that does return promises, since a `void` result type is compatible with any result type, even with strict function types. (Which is why the tests still pass.) - Adds `FooHandler` and `FooCallback` types for all `FooEvent`s and `FooResult`s, where possible - sometimes these don't match up. - Renamed, with aliases to the old name, various types to align them: in particular `ProxyResult` -> `APIGatewayProxyResult`. - `CloudFrontResult` (not the same type as `CloudFrontResponse`!) was missing for some reason. |
||
|---|---|---|
| .. | ||
| aws-lambda-tests.ts | ||
| index.d.ts | ||
| tsconfig.json | ||
| tslint.json | ||