@scdev/fine
TypeScript icon, indicating that this package has built-in type declarations

2.0.0 • Public • Published

fine

"Fine" means "End" in Italian, [fì-ne] Cessazione definitiva, punto estremo, nello spazio e nel tempo di qualcosa.

About

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.

Table of contents

Installation

You can install locally

npm i @scdev/fine

Usage

// Example
const http = require("http");
const { promisify } = require("util");
const fine = require("@scdev/fine");

const server = http.createServer(/* your handler */);

fine(
  [
    // Tip: you can wait that all connection are closed
    promisify(server.close),
    // or you can just sto accepting new one and continue closing other callbacks
    server.close,

    async () => {
      // Throws will be NOOP-ed
      await db.disconnect();
    },
  ],
  {
    timeout: 2000,
    events: ["SIGINT", "SIGTERM", "uncaughtException", "unhandledRejection"],
  }
);

// ...

Arguments

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

Contributing

Project is pretty simple and straight forward for what is my needs, but if you have any idea you're welcome!

This projects uses commitlint with Angular configuration so be sure to use standard commit format or PR won't be accepted

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'feat(scope): some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the MIT License. See LICENSE for more information.

Contact

Simone Corsi - @im_simonecorsi

Package Sidebar

Install

npm i @scdev/fine

Weekly Downloads

0

Version

2.0.0

License

MIT

Unpacked Size

11.9 kB

Total Files

10

Last publish

Collaborators

  • simonecorsi