- Notifications
You must be signed in to change notification settings - Fork1
🧹 Gracefully shutdown Node.js application: help you handle exit signals and cleanup
License
simonecorsi/fine
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
"Fine" [fì-ne] - means "End" in Italian.
The point in time when an action, event, or phenomenon ceases or is completed; the conclusion.
Zero dependency and opinionated package that gracefully shutdown Node.js applications.
It provides extendability by taking an array of callbacks that will be executed serially to allow closing user-defined resources, eg: a database connection, drain streams, etc; before timeout exits the main process.
This package now exports bothESM
andCommonJS
. If, for some reason, you really really need only the CommonJS version refer tov1.4.0
.
You can install locally
npm i @scdev/fine
// Exampleconsthttp=require("http");const{ promisify}=require("util");constfine=require("@scdev/fine");constserver=http.createServer(/* your handler */);fine([// Tip: you can wait that all connection are closedpromisify(server.close),// or you can just sto accepting new one and continue closing other callbacksserver.close,async()=>{// Throws will be NOOP-edawaitdb.disconnect();},],{timeout:2000,events:["SIGINT","SIGTERM","uncaughtException","unhandledRejection"],});// ...
fine(callbacks,options);
parameter | type | description | default |
---|---|---|---|
callbacks | function[] | Collection of callback for custom closing events, eg: db.disconnect() | [] |
options.timeout | Number | The time before exiting the process | 2000 |
options.events | string[] | The events the process will listen on | ["SIGINT", "SIGTERM", "uncaughtException", "unhandledRejection"] |
options.unref | boolean | Should the timeout keep the process alive or not | false |
Project is pretty simple and straight forward for what is my needs, but if you have any idea you're welcome!
This projects usescommitlint with Angular configuration so be sure to use standard commit format or PR won't be accepted
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'feat(scope): some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the MIT License. SeeLICENSE for more information.
Simone Corsi -@im_simonecorsi
About
🧹 Gracefully shutdown Node.js application: help you handle exit signals and cleanup