Socket
Socket
Sign inDemoInstall

close-with-grace

Package Overview
Dependencies
0
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

close-with-grace


Version published
Weekly downloads
150K
increased by1.9%
Maintainers
1
Install size
19.9 kB
Created
Weekly downloads
 

Package description

What is close-with-grace?

The 'close-with-grace' npm package helps manage graceful shutdowns in Node.js applications. It allows you to handle termination signals and perform cleanup tasks before the application exits, ensuring that resources are properly released and ongoing operations are completed.

What are close-with-grace's main functionalities?

Graceful Shutdown on SIGINT

This feature allows the application to handle the SIGINT signal (usually triggered by Ctrl+C) and perform cleanup tasks before shutting down. The provided code sample demonstrates how to set up a graceful shutdown with a delay and cleanup logic.

const closeWithGrace = require('close-with-grace');

const closeListeners = closeWithGrace({ delay: 500 }, async ({ err }) => {
  if (err) {
    console.error('Error during shutdown', err);
  }
  console.log('Cleaning up before shutdown...');
  await new Promise(resolve => setTimeout(resolve, 100));
  console.log('Cleanup complete.');
});

process.on('SIGINT', () => {
  console.log('Received SIGINT');
  closeListeners.uninstall();
});

Handling Multiple Signals

This feature allows the application to handle multiple termination signals (e.g., SIGTERM and SIGINT) and perform cleanup tasks before shutting down. The provided code sample demonstrates how to set up graceful shutdown handling for both SIGTERM and SIGINT signals.

const closeWithGrace = require('close-with-grace');

const closeListeners = closeWithGrace({ delay: 500 }, async ({ err }) => {
  if (err) {
    console.error('Error during shutdown', err);
  }
  console.log('Cleaning up before shutdown...');
  await new Promise(resolve => setTimeout(resolve, 100));
  console.log('Cleanup complete.');
});

process.on('SIGTERM', () => {
  console.log('Received SIGTERM');
  closeListeners.uninstall();
});

process.on('SIGINT', () => {
  console.log('Received SIGINT');
  closeListeners.uninstall();
});

Custom Cleanup Logic

This feature allows the application to define custom cleanup logic that will be executed before the application shuts down. The provided code sample demonstrates how to set up a graceful shutdown with custom cleanup logic and a delay.

const closeWithGrace = require('close-with-grace');

const closeListeners = closeWithGrace({ delay: 1000 }, async ({ err }) => {
  if (err) {
    console.error('Error during shutdown', err);
  }
  console.log('Performing custom cleanup...');
  // Custom cleanup logic here
  await new Promise(resolve => setTimeout(resolve, 500));
  console.log('Custom cleanup complete.');
});

Other packages similar to close-with-grace

Readme

Source

close-with-grace

Exit your process, gracefully (if possible) - for Node.js

Install

npm i close-with-grace

Usage

const closeWithGrace = require('close-with-grace')

// delay is the number of milliseconds for the graceful close to
// finish.
closeWithGrace({ delay: 500 }, async function ({ signal, err, manual }) {
  if (err) {
    console.error(err)
  }
  await closeYourServer()
})

Injecting custom logger

const closeWithGrace = require('close-with-grace')

// delay is the number of milliseconds for the graceful close to
// finish.
closeWithGrace(
  {
    delay: 500,
    logger: { error: (m) => console.error(`[close-with-grace] ${m}`) }
  },
  async function ({ signal, err, manual }) {
  if (err) {
    console.error(err)
  }
  await closeYourServer()
})

API

closeWithGrace([opts], fn({ err, signal, manual }))

closeWithGrace adds a global listeners to the events:

  • process.once('SIGTERM')
  • process.once('SIGINT')
  • process.once('uncaughtException')
  • process.once('unhandledRejection')

In case one of them is emitted, it will call the given function. If it is emitted again, it will terminate the process abruptly.

opts
  • delay: the numbers of milliseconds before abruptly close the process. Default: 10000.

  • logger: instance of logger which will be used internally. Default: 10000.

fn({ err, signal, manual } [, cb])

Execute the given function to perform a graceful close. The function can either return a Promise or call the callback. If this function does not error, the process will be closed with exit code 0. If the function rejects with an Error, or call the callback with an Error as first argument, the process will be closed with exit code 1.

return values

Calling closeWithGrace() will return an object as formed:

  • close(): close the process, the manual argument will be set to true.
  • uninstall(): remove all global listeners.

License

MIT

Keywords

FAQs

Last updated on 16 Feb 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc