Path: blob/main/extensions/mermaid-chat-features/src/util/dispose.ts
5263 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import * as vscode from 'vscode';67export function disposeAll(disposables: vscode.Disposable[]) {8while (disposables.length) {9const item = disposables.pop();10item?.dispose();11}12}1314export abstract class Disposable {15private _isDisposed = false;1617protected _disposables: vscode.Disposable[] = [];1819public dispose(): any {20if (this._isDisposed) {21return;22}23this._isDisposed = true;24disposeAll(this._disposables);25}2627protected _register<T extends vscode.Disposable>(value: T): T {28if (this._isDisposed) {29value.dispose();30} else {31this._disposables.push(value);32}33return value;34}3536protected get isDisposed() {37return this._isDisposed;38}39}404142