Package Exports
- @darkobits/adeiu
- @darkobits/adeiu/dist/adeiu.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@darkobits/adeiu) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Yet another POSIX signal handler.
Features
- Ensures provided functions are called before any other event listeners and are run concurrently, minimizing shutdown time.
- Works with any combination of synchronous and asynchronous functions.
- Ensures a clean exit if all functions resolve/return.
- Exits with an error if any functions reject/throw.
- Ensures processes exit cleanly, even when they have asynchronous shut-down functions and the Node debugger is in use. (See this issue)
Install
npm i @darkobits/adeiuUse
Adeiu accepts an asynchronous or synchronous handler function. By default, the handler will be registered to respond to the following signals:
SIGINTSIGQUITSIGTERMSIGUSR2
import adeiu from '@darkobits/adeiu';
adeiu(async signal => {
console.log(`Hey, we got ${signal}. Exiting...`);
await someAsyncStuff();
console.log('All done!');
});
// Un-register the callback.
annuler();Unregistering Handlers
Adeiu returns a function that can be invoked to unregister a handler.
import adeiu from '@darkobits/adeiu';
const unregister = adeiu(() => {
// Handler implementation here.
});
// Un-register the handler.
unregister();Customizing Signals
Usually, responding to signals dynamically can be accomplished by inspecting the signal argument
passed to your handler. However, if it is important that handlers are only installed on a particular
signal, or if you'd like to respond to signals other than the defaults, you may optionally provide a
custom array of signals as a second argument:
import adeiu from '@darkobits/adeiu';
// Register callback that will _only_ be invoked on SIGINT:
adeiu(() => {
// SIGINT cleanup tasks.
}, ['SIGINT']);import adeiu from '@darkobits/adeiu';
// Register callback with the default signals _and_ SIGUSR1:
adeiu(() => {
// Custom cleanup tasks.
}, [...adeiu.SIGNALS, 'SIGUSR1']);