UNPKG

vscode-ws-jsonrpc

Version:
30 lines (25 loc) 1 kB
/* -------------------------------------------------------------------------------------------- * Copyright (c) 2024 TypeFox and others. * Licensed under the MIT License. See LICENSE in the package root for license information. * ------------------------------------------------------------------------------------------ */ import { Disposable } from 'vscode-jsonrpc'; export class DisposableCollection implements Disposable { protected readonly disposables: Disposable[] = []; dispose(): void { while (this.disposables.length !== 0) { this.disposables.pop()!.dispose(); } } push(disposable: Disposable): Disposable { const disposables = this.disposables; disposables.push(disposable); return { dispose(): void { const index = disposables.indexOf(disposable); if (index !== -1) { disposables.splice(index, 1); } } }; } }