A utility to manage and execute disposal callbacks, supporting both synchronous and asynchronous disposal.
You can install this package using npm:
npm install dispose-with-controller
Here's an example of how to use the dispose-with-controller
:
import { disposeWithController } from "dispose-with-controller";
await using controller = disposeWithController();
// Adding a synchronous dispose callback
controller.add(() => {
console.log("Synchronous cleanup");
});
// Adding an asynchronous dispose callback
controller.add(async () => {
console.log("Asynchronous cleanup start");
await new Promise((resolve) => setTimeout(resolve, 1000));
console.log("Asynchronous cleanup end");
});
Class to manage and execute disposal callbacks, supporting both synchronous and asynchronous disposal.
Initializes a new instance of the DisposeWithController
class.
- Parameters:
init
(optional): An array of disposal callbacks (either synchronous or asynchronous) to initialize the controller with.
Returns a boolean indicating whether the controller has been disposed.
- Type:
boolean
- Description: True if the controller has been disposed; otherwise, false.
Adds a disposal callback or an object implementing dispose/asyncDispose methods to the controller.
-
Parameters:
disposableOrAdopt
: A disposal callback or an object withSymbol.dispose
orSymbol.asyncDispose
methods.
-
Description: Adds a disposal callback to the controller. If the provided argument is a function, it is added directly to the
disposes
set. If it is an object implementingSymbol.dispose
orSymbol.asyncDispose
, the respective method is added to thedisposes
set as a callback function.
Removes a disposal callback or an object implementing dispose/asyncDispose methods to the controller.
-
Parameters:
disposableOrAdopt
: A disposal callback or an object withSymbol.dispose
orSymbol.asyncDispose
methods.
-
Description: Removes a disposal callback to the controller. If the provided argument is a function, it is added directly to the
disposes
set. If it is an object implementingSymbol.dispose
orSymbol.asyncDispose
, the respective method is added to thedisposes
set as a callback function.
Synchronously executes all registered disposal callbacks. Alias for [Symbol.dispose]()
.
- Description: Calls the synchronous dispose method, executing all registered disposal callbacks.
Asynchronously executes all registered disposal callbacks. Alias for [Symbol.asyncDispose]()
.
- Description: Calls the asynchronous dispose method, executing all registered disposal callbacks and awaiting their completion.
Synchronously executes all registered disposal callbacks.
- Description: Iterates over the
disposes
set and calls each disposal callback. Sets the#disposed
property totrue
after all callbacks are executed.
Asynchronously executes all registered disposal callbacks, awaiting the completion of each.
- Description: Iterates over the
disposes
set and calls each disposal callback, awaiting their completion. Sets the#disposed
property totrue
after all callbacks are executed.
Creates a disposal controller that manages a set of disposal callbacks. These callbacks can be either synchronous or asynchronous. The controller provides methods to add disposal callbacks and to execute them synchronously or asynchronously.
Creates a new DisposeWithController
instance.
-
Parameters:
init
(optional): An array of disposal callbacks (either synchronous or asynchronous) to initialize the controller with.
-
Returns:
DisposeWithController
: A disposal controller instance.
This project is licensed under the MIT License - see the LICENSE file for details.
Jonathan Delgado hi@jon.soy (https://jon.soy)