UNPKG

softkave-js-utils

Version:

JavaScript & Typescript utility functions, types, and classes

31 lines (30 loc) 1.32 kB
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; }