1 | <div align="center">
|
2 | <h1>Middy do-not-wait-for-empty-event-loop middleware</h1>
|
3 | <img alt="Middy logo" src="https://raw.githubusercontent.com/middyjs/middy/main/docs/img/middy-logo.svg"/>
|
4 | <p><strong>"Do not wait for empty event loop" middleware for the middy framework, the stylish Node.js middleware engine for AWS Lambda</strong></p>
|
5 | <p>
|
6 | <a href="https://www.npmjs.com/package/@middy/do-not-wait-for-empty-event-loop?activeTab=versions">
|
7 | <img src="https://badge.fury.io/js/%40middy%2Fdo-not-wait-for-empty-event-loop.svg" alt="npm version" style="max-width:100%;">
|
8 | </a>
|
9 | <a href="https://packagephobia.com/result?p=@middy/do-not-wait-for-empty-event-loop">
|
10 | <img src="https://packagephobia.com/badge?p=@middy/do-not-wait-for-empty-event-loop" alt="npm install size" style="max-width:100%;">
|
11 | </a>
|
12 | <a href="https://github.com/middyjs/middy/actions/workflows/tests.yml">
|
13 | <img src="https://github.com/middyjs/middy/actions/workflows/tests.yml/badge.svg?branch=main&event=push" alt="GitHub Actions CI status badge" style="max-width:100%;">
|
14 | </a>
|
15 | <br/>
|
16 | <a href="https://standardjs.com/">
|
17 | <img src="https://img.shields.io/badge/code_style-standard-brightgreen.svg" alt="Standard Code Style" style="max-width:100%;">
|
18 | </a>
|
19 | <a href="https://snyk.io/test/github/middyjs/middy">
|
20 | <img src="https://snyk.io/test/github/middyjs/middy/badge.svg" alt="Known Vulnerabilities" data-canonical-src="https://snyk.io/test/github/middyjs/middy" style="max-width:100%;">
|
21 | </a>
|
22 | <a href="https://lgtm.com/projects/g/middyjs/middy/context:javascript">
|
23 | <img src="https://img.shields.io/lgtm/grade/javascript/g/middyjs/middy.svg?logo=lgtm&logoWidth=18" alt="Language grade: JavaScript" style="max-width:100%;">
|
24 | </a>
|
25 | <a href="https://bestpractices.coreinfrastructure.org/projects/5280">
|
26 | <img src="https://bestpractices.coreinfrastructure.org/projects/5280/badge" alt="Core Infrastructure Initiative (CII) Best Practices" style="max-width:100%;">
|
27 | </a>
|
28 | <br/>
|
29 | <a href="https://gitter.im/middyjs/Lobby">
|
30 | <img src="https://badges.gitter.im/gitterHQ/gitter.svg" alt="Chat on Gitter" style="max-width:100%;">
|
31 | </a>
|
32 | <a href="https://stackoverflow.com/questions/tagged/middy?sort=Newest&uqlId=35052">
|
33 | <img src="https://img.shields.io/badge/StackOverflow-[middy]-yellow" alt="Ask questions on StackOverflow" style="max-width:100%;">
|
34 | </a>
|
35 | </p>
|
36 | <p>You can read the documentation at: <a href="https://middy.js.org/docs/middlewares/do-not-wait-for-empty-event-loop">https://middy.js.org/docs/middlewares/do-not-wait-for-empty-event-loop</a></p>
|
37 | </div>
|
38 |
|
39 | This middleware sets `context.callbackWaitsForEmptyEventLoop` property to `false`.
|
40 | This will prevent Lambda from timing out because of open database connections, etc.
|
41 |
|
42 |
|
43 | ## Install
|
44 |
|
45 | To install this middleware you can use NPM:
|
46 |
|
47 | ```bash
|
48 | npm install --save @middy/do-not-wait-for-empty-event-loop
|
49 | ```
|
50 |
|
51 |
|
52 | ## Options
|
53 |
|
54 | By default the middleware sets the `callbackWaitsForEmptyEventLoop` property to `false` only in the `before` phase,
|
55 | meaning you can override it in handler to `true` if needed. You can set it in all steps with the options:
|
56 |
|
57 | - `runOnBefore` (boolean) (default `true`) - sets property before running your handler
|
58 | - `runOnAfter` (boolean) (default `false`)
|
59 | - `runOnError` (boolean) (default `false`)
|
60 |
|
61 |
|
62 | ## Sample usage
|
63 |
|
64 | ```javascript
|
65 | import middy from '@middy/core'
|
66 | import doNotWaitForEmptyEventLoop from '@middy/do-not-wait-for-empty-event-loop'
|
67 |
|
68 | const handler = middy((event, context) => {
|
69 | return {}
|
70 | })
|
71 |
|
72 | handler.use(doNotWaitForEmptyEventLoop({runOnError: true}))
|
73 |
|
74 | // When Lambda runs the handler it gets context with callbackWaitsForEmptyEventLoop property set to false
|
75 |
|
76 | handler(event, context, (_, response) => {
|
77 | t.is(context.callbackWaitsForEmptyEventLoop,false)
|
78 | })
|
79 | ```
|
80 |
|
81 |
|
82 | ## Middy documentation and examples
|
83 |
|
84 | For more documentation and examples, refers to the main [Middy monorepo on GitHub](https://github.com/middyjs/middy) or [Middy official website](https://middy.js.org).
|
85 |
|
86 |
|
87 | ## Contributing
|
88 |
|
89 | Everyone is very welcome to contribute to this repository. Feel free to [raise issues](https://github.com/middyjs/middy/issues) or to [submit Pull Requests](https://github.com/middyjs/middy/pulls).
|
90 |
|
91 |
|
92 | ## License
|
93 |
|
94 | Licensed under [MIT License](LICENSE). Copyright (c) 2017-2022 [Luciano Mammino](https://github.com/lmammino), [will Farrell](https://github.com/willfarrell), and the [Middy team](https://github.com/middyjs/middy/graphs/contributors).
|
95 |
|
96 | <a href="https://app.fossa.io/projects/git%2Bgithub.com%2Fmiddyjs%2Fmiddy?ref=badge_large">
|
97 | <img src="https://app.fossa.io/api/projects/git%2Bgithub.com%2Fmiddyjs%2Fmiddy.svg?type=large" alt="FOSSA Status" style="max-width:100%;">
|
98 | </a>
|