softkave-js-utils
Version:
JavaScript & Typescript utility functions, types, and classes
31 lines (30 loc) • 1.32 kB
TypeScript
import { ReadonlyDeep } from 'type-fest';
import { PromiseStore } from '../promise/PromiseStore.js';
import { OrPromise } from '../types.js';
export interface DisposableResource {
dispose?: () => OrPromise<void>;
}
export declare class DisposablesStore {
protected promises: PromiseStore;
protected disposablesMap: Map<unknown, DisposableResource>;
constructor(promises: PromiseStore);
add(disposable: DisposableResource | DisposableResource[]): void;
add(key: unknown, disposable: DisposableResource): void;
get: (key: unknown) => DisposableResource | undefined;
has: (key: unknown) => boolean;
getMap: () => ReadonlyDeep<Map<unknown, DisposableResource>>;
getList: () => ReadonlyDeep<DisposableResource[]>;
forgetDisposeAll: () => void;
awaitDisposeAll: () => Promise<void>;
/**
* if an individual key is an array, i.e. you called `add` with an array as
* the key, e.g. `add([1, 2, 3], disposable)`, then use `removeOne` instead of
* `remove`
*/
remove: (key: unknown | unknown[]) => void;
removeOne: (key: unknown) => void;
awaitDisposeOne: (key: unknown) => Promise<void>;
forgetDisposeOne: (key: unknown) => void;
awaitDisposeMany: (keys: unknown[]) => Promise<void>;
forgetDisposeMany: (keys: unknown[]) => void;
}