dispose-with-controller
v0.1.4
Published
A utility to manage and execute disposal callbacks, supporting both synchronous and asynchronous disposal.
Downloads
3
Maintainers
Readme
dispose-with-controller
A utility to manage and execute disposal callbacks, supporting both synchronous and asynchronous disposal.
Installation
You can install this package using npm:
npm install dispose-with-controller
Usage
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");
});
API Documentation
DisposeWithController
Class to manage and execute disposal callbacks, supporting both synchronous and asynchronous disposal.
Constructor
new DisposeWithController(init?: (OnDispose | OnAsyncDispose)[])
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.
Properties
disposed
Returns a boolean indicating whether the controller has been disposed.
- Type:
boolean
- Description: True if the controller has been disposed; otherwise, false.
Methods
add(disposableOrAdopt: DisposableOrOnDispose): void
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.
remove(disposableOrAdopt: DisposableOrOnDispose): void
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.
dispose(): void
Synchronously executes all registered disposal callbacks. Alias for [Symbol.dispose]()
.
- Description: Calls the synchronous dispose method, executing all registered disposal callbacks.
asyncDispose(): Promise<void>
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.
[Symbol.dispose](): void
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.
[Symbol.asyncDispose](): Promise<void>
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.
disposeWithController
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.
Function
disposeWithController(init?: (OnDispose | OnAsyncDispose)[]): DisposeWithController
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.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Author
Jonathan Delgado [email protected] (https://jon.soy)