Neapolitan Pasta Maker

    @darkobits/adeiu

    0.2.15 • Public • Published

    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/adeiu
    

    Use

    Adeiu accepts an asynchronous or synchronous handler function and returns a function that can be invoked to unregister the handler. By default, the handler will be registered to respond to the following signals:

    • SIGINT
    • SIGQUIT
    • SIGTERM
    • SIGUSR2
    import adeiu from '@darkobits/adeiu';
    
    // Register a callback.
    const annuler = adeiu(async signal => {
      console.log(`Hey, we got ${signal}. Exiting...`);
    
      await someAsyncStuff();
    
      console.log('All done!');
    });
    
    // Un-register the callback.
    annuler();

    Customizing Signals

    Usually, responding to signals dynamically can be accomplished by inspecting the signal argument passed to your callback. However, if it is important that listeners are only installed on a particular signal, you may optionally provide a custom array of signals to assign a callback to.

    import adeiu from '@darkobits/adeiu';
    
    // Register callback that will _only_ be invoked on SIGINT.
    adeiu(() => {
      // SIGINT cleanup tasks.
    }, ['SIGINT']);
    import adeiu, { SIGNALS } from '@darkobits/adeiu';
    
    // Register callback with the default signals and SIGUSR1.
    adeiu(() => {
      // Custom cleanup tasks.
    }, [...SIGNALS, 'SIGUSR1']);

    Install

    npm i @darkobits/adeiu

    DownloadsWeekly Downloads

    155

    Version

    0.2.15

    License

    WTFPL

    Unpacked Size

    16.7 kB

    Total Files

    12

    Last publish

    Collaborators

    • darkobits