๐Ÿ“ฆ hediet / node-reload

๐Ÿ“„ disposable.ts ยท 21 lines
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
export interface IDisposable {
    dispose(): void;
}

export class DisposableStore implements IDisposable {
    private readonly _toDispose = new Set<IDisposable>();

    add<T extends IDisposable>(disposable: T): T {
        this._toDispose.add(disposable);
        return disposable;
    }

    dispose(): void {
        for (const disposable of this._toDispose) {
            disposable.dispose();
        }
        this._toDispose.clear();
    }
}