New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

exit-hook2

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

exit-hook2

Node.js cancellable exit-hooks

  • 1.0.8
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
6
increased by20%
Maintainers
1
Weekly downloads
 
Created
Source

Build Status node version npm version License

node-exit-hook

Node.js cancellable exit-hooks

Installation

npm install exit-hook2 --save

Usage

var exitHook = require('exit-hook2')

exitHook(function (canCancel, signal, code) {
    var allowShutdown = canCancel && false;
    
    return allowShutdown;
});
  • context An optional context for the 'callback' function. If undefined, the callback will have it's own context.
  • callback A function to execute when the application is exiting.
    • canCancel When true the exit can be cancelled by returning false.
    • signal Originating signal (if any).
    • code Exit code.

A full list of exit codes can be found here (new window).

Returning false terminates the shutdown sequence and stops the callback loop. If the shutdown cannot be cancelled ('canCancel' = false) the callback loop will not stop running.

If 'canCancel' is set to false then only synchronous code can execute. Any asynchronous operations WILL NOT RUN.

Graceful shutdown with asynchronous operations

exitHook(function (canCancel, signal, code) {
    if (canCancel) {
        exitHook.removeListener(this);
        
        server.close(function () {
            process.exit(code);
        });
        
        return false;
    }
});

exitHook.list

Returns an array with all the events currently listened to.

var list = exitHook.list(); // ['SIGINT', 'SIGTERM', 'SIGHUP', ...]

exitHook.bind

Binds a new event to treat as a shutdown signal.

exitHook.bind('CUSTOM1', true).list(); // ['SIGINT', 'SIGTERM', 'SIGHUP', 'CUSTOM1', ...]
  • signal Shutdown signal to listen for.
  • canCancel Boolean passed to the handlers signaling whether the shutdown can be cancelled.

exitHook.unbind

Unbinds a previously bound shutdown signal.

exitHook.unbind('CUSTOM1').list(); // ['SIGINT', 'SIGTERM', 'SIGHUP', ...]
exitHook.unbind('SIGTERM').list(); // ['SIGINT', 'SIGHUP', ...]
  • signal Shutdown signal to stop listening for. Pass "everything" to clear the module of all shutdown signals.

exitHook.removeListener

Removes a previously added shutdown listener.

exitHook(function () {
    performCleanup();
    
    // Make sure the cleanup script isn't executed multiple times
    exitHook.removeListener(this);
});

Custom events

// Let 'CUSTOM1' act as a cancellable shutdown signal
exitHook.bind('CUSTOM1', true);

exitHook(function (canCancel, signal, code) {
    canCancel; // true
    signal; // CUSTOM1
    code; // 128
    
    // Don't let the process terminate
    return false;
});

process.emit('CUSTOM1', 128);

License

MIT

Keywords

FAQs

Package last updated on 15 Dec 2015

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
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc