Skip to content

πŸ›‘ Gracefully handle process termination in Node.js with custom exit hooks.

License

Notifications You must be signed in to change notification settings

shahradelahi/node-exit-signal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

13 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

exit-signal

CI NPM Version MIT License Install Size

exit-signal is a Node.js utility for handling process termination gracefully. Register custom exit handlers for signals like SIGINT and SIGTERM to ensure proper cleanup and resource management.


πŸ“¦ Installation

npm install exit-signal

πŸ“– Usage

import { gracefullyExit, onExit, onExitSignal } from 'exit-signal';

// Example 1: Register a simple exit handler
onExit(() => {
  console.log('Process is exiting... Cleaning up resources.');
});

// Example 2: Register an exit handler for specific signals
const unsubscribe = onExitSignal(['SIGINT', 'SIGTERM'], async (signal) => {
  console.log(`Received ${signal}. Performing async cleanup...`);
  await new Promise((resolve) => setTimeout(resolve, 1000));
  console.log('Cleanup completed.');
});

// Unsubscribe example (optional)
setTimeout(() => {
  unsubscribe();
  console.log('Exit handler removed.');
}, 5000);

// Example 3: Trigger a graceful exit manually
gracefullyExit();

πŸ“š Documentation

For all configuration options, please see the API docs.

API
/**
 * Registers an exit handler that will be called on process termination.
 *
 * @param {SignalHandler} handler - The function to execute on exit.
 * @param {ExitOptions} [options={}] - Optional configurations for the exit hook.
 * @returns {UnsubscribeFn} - A function to remove the exit hook.
 */
function onExit(handler: SignalHandler, options?: ExitOptions): UnsubscribeFn;

/**
 * Registers an exit handler for a specific signal or multiple signals.
 *
 * @param {Signal | Signal[]} signal - The signal(s) to listen for.
 * @param {SignalHandler} handler - The function to execute when the signal is received.
 * @param {ExitOptions} [options={}] - Optional configurations for the exit hook.
 * @returns {UnsubscribeFn} - A function to remove the exit hook.
 */
function onExitSignal(signal: Signal | Signal[], handler: SignalHandler, options?: ExitOptions): UnsubscribeFn;

/**
 * Initiates a graceful exit by triggering the SIGINT signal.
 */
function gracefullyExit(): void;

🀝 Contributing

Want to contribute? Awesome! To show your support is to star the project, or to raise issues on GitHub

Thanks again for your support, it is much appreciated! πŸ™

License

MIT Β© Shahrad Elahi and contributors.

About

πŸ›‘ Gracefully handle process termination in Node.js with custom exit hooks.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published