* Add Firehose to aws-lambda
* Add one more link for reference
* Change some interface names, remove irrelevant S3 interface, add special callback
* Fix tests
* Add: NotAction, NotResource, Principal, NotPrincipal
* Implement some of the conditional logic
- e.g., Action or NotAction is required
- however, mutual exclusivity is not implemented (hard to do in Typescript)
* Allow >1 statement per PolicyDocument
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 : Add more triggerSources according to spec
* aws-lambda: Add my info in the Definitions by - list
* aws-lambda: Cognito triggerSources list failed npm test due to extra semi colon