npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

death

v1.1.0

Published

Gracefully cleanup when termination signals are sent to your process.

Downloads

542,549

Readme

Node.js - death

Gracefully cleanup when termination signals are sent to your process.

Why?

Because adding clean up callbacks for uncaughtException, SIGINT, and SIGTERM is annoying. Ideally, you can use this package to put your cleanup code in one place and exit gracefully if you need to.

Operating System Compatibility

It's only been tested on POSIX compatible systems. Here's a nice discussion on Windows signals, apparently, this has been fixed/mapped.

Installation

npm install death

Example

var ON_DEATH = require('death'); //this is intentionally ugly

ON_DEATH(function(signal, err) {
  //clean up code here
})

Usage

By default, it sets the callback on SIGINT, SIGQUIT, and SIGTERM.

Signals

  • SIGINT: Sent from CTRL-C
  • SIGQUIT: Sent from keyboard quit action.
  • SIGTERM: Sent from operating system kill.

More discussion and detail: http://www.gnu.org/software/libc/manual/html_node/Termination-Signals.html and http://pubs.opengroup.org/onlinepubs/009695399/basedefs/signal.h.html and http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap11.html.

AS they pertain to Node.js: http://dailyjs.com/2012/03/15/unix-node-signals/

Want to catch uncaughtException?

No problem, do this:

var ON_DEATH = require('death')({uncaughtException: true}) 

Want to know which signals are being caught?

Do this:

var ON_DEATH = require('death')({debug: true})

Your process will then log anytime it catches these signals.

Want to catch SIGHUP?

Be careful with this one though. Typically this is fired if your SSH connection dies, but can also be fired if the program is made a daemon.

Do this:

var ON_DEATH = require('death')({SIGHUP: true})

Why choose the ugly "ON_DEATH"?

Name it whatever you want. I like ON_DEATH because it stands out like a sore thumb in my code.

Want to remove event handlers?

If you want to remove event handlers ON_DEATH returns a function for cleaning up after itself:

var ON_DEATH = require('death')
var OFF_DEATH = ON_DEATH(function(signal, err) {
  //clean up code here
})

// later on...
OFF_DEATH();

License

(MIT License)

Copyright 2012, JP Richardson [email protected]