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.
* Merge union into a unique value definition
* Fix lint error: prefer interface over type literal
* Update the tests to cover the destructuring use case
The search function assigns a noop call inside the function body if the async parameter is omitted (bloodhound.js line 137), so it's safe to make this optional in the type signature.
The type of the second parameter of Store#get should be SessionData,
not Session. It's bit confusing because parameter name "session" is
used for both Session and SessionData on their documentation.
* Preparing removal of types/yfiles - adding notice in index.d.ts
* Removing types/yfiles to resolve#23310
* Fixed version number to use semver versioning
2.1 -> 2.1.0
* Adding typings for redux-little-router
* Fixing config and typings
* Fixing linting and updating Typescript Version
* Set strict function types to true
* Change dependency from @types/redux to redux