DisposableStack
class exported by @mwillbanks/tuil-core.
class
Public class exported by @mwillbanks/tuil-core.
export class DisposableStack implements Disposable {
readonly #resources: Disposable[];
#disposed: boolean;
constructor() {
this.#resources = [];
this.#disposed = false;
}
get disposed(): boolean {
return this.#disposed;
}
use<T extends Disposable>(value: T): T {
if (this.#disposed) {
throw new Error("Cannot add a resource to a disposed stack");
}
this.#resources.push(value);
return value;
}
defer(dispose: Disposer): void {
if (this.#disposed) {
throw new Error("Cannot add a resource to a disposed stack");
}
this.#resources.push(toDisposable(dispose));
}
async dispose(): Promise<void> {
if (this.#disposed) {
return;
}
this.#disposed = true;
const errors: unknown[] = [];
for (const resource of this.#resources.reverse()) {
try {
await resource.dispose();
} catch (error) {
errors.push(error);
}
}
this.#resources.length = 0;
if (errors.length > 0) {
throw new AggregateError(
errors,
"One or more resources failed to dispose",
);
}
}
}Members
| Member | Type | Required | Description | Related types |
|---|---|---|---|---|
#resources | Disposable[] | Yes | The #resources member uses the Disposable[] contract. | Disposable |
#disposed | boolean | Yes | The #disposed member uses the boolean contract. | — |
__constructor | any | Yes | The __constructor member uses the any contract. | — |
disposed | boolean | Yes | The disposed member uses the boolean contract. | — |
use | <T extends Disposable>(value: T) => T | Yes | The use member uses the <T extends Disposable>(value: T) => T contract. | Disposable |
defer | (dispose: Disposer) => void | Yes | The defer member uses the (dispose: Disposer) => void contract. | Disposer |
dispose | () => Promise<void> | Yes | The dispose member uses the () => Promise<void> contract. | — |
Parameters
This declaration has no public members.
Returns
This declaration does not return a value.
Throws
No thrown errors are documented for this declaration.
Related types
Source
View the secondary source reference