on-exit-leak-free

    2.1.0 • Public • Published

    on-exit-leak-free

    This module helps dispose of an object gracefully when the Node.js process exits. It executes a function with a given parameter on 'exit' without leaking memory, cleaning things up appropriately if the object is garbage collected.

    Requires WeakRef and FinalizationRegistry, i.e. use Node v14+.

    Install

    npm i on-exit-leak-free

    Example

    'use strict'
    
    const { register, unregister } = require('on-exit-leak-free')
    const assert = require('assert')
    
    function setup () {
      // This object can be safely garbage collected,
      // and the resulting shutdown function will not be called.
      // There are no leaks.
      const obj = { foo: 'bar' }
      register(obj, shutdown)
      // use registerBeforeExit(obj, shutdown) to execute the function only
      // on beforeExit
      // call unregister(obj) to remove
    }
    
    let shutdownCalled = false
    
    // Please make sure that the function passed to register()
    // does not create a closure around unnecessary objects.
    function shutdown (obj, eventName) {
      console.log(eventName) // beforeExit
      shutdownCalled = true
      assert.strictEqual(obj.foo, 'bar')
    }
    
    setup()
    
    process.on('exit', function () {
      assert.strictEqual(shutdownCalled, true)
    })

    License

    MIT

    Install

    npm i on-exit-leak-free

    DownloadsWeekly Downloads

    1,041,361

    Version

    2.1.0

    License

    MIT

    Unpacked Size

    8.88 kB

    Total Files

    12

    Last publish

    Collaborators

    • matteo.collina