🚀 Top-level await in AWS Lamba with TypeScript
On version 14.8.0 release, almost two years ago, Node.js closed the issue#34558, called module: unflag Top-Level Await. From version 14.8 we can use
await outside an async function inside an ES module.
After almost two years, we still find Node.js code not taking advantage of it. Furthermore, the complexity of configuring it increases when we consider the usage of bundlers and compilers, like esbuild or TypeScript.
In ephemeral environments like AWS Lambda, any millisecond we can shave is a flawless victory. Earlier this year, the AWS Lambda runtime added full support for Node.js 14+ features.
Transpiling TypeScript to ES Modules
With a combination of AWS Lambda Serverless development tools, we can easily take advantage of these improvements.
My example uses:
The secret sauce is to configure esbuild to output Node.js ES modules files with
.mjs extension with the following esbuild options:
With that in place, you can have a fully typed AWS Lambda code in TypeScript and take advantage of executing
await outside the handler function, improving the response time for the service consumers.
You can check the entire demo on my GitHub:
GitHub - oieduardorabelo/top-level-await-in-aws-lamba-with-typescript: 🚀 Using top-level await in…
This repository demonstrates Node.js ES modules and top-level await in AWS Lambda while developing your code in…
- Twitter: @oieduardorabelo