Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/extensions/mermaid-chat-features/src/util/dispose.ts
5263 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import * as vscode from 'vscode';
7
8
export function disposeAll(disposables: vscode.Disposable[]) {
9
while (disposables.length) {
10
const item = disposables.pop();
11
item?.dispose();
12
}
13
}
14
15
export abstract class Disposable {
16
private _isDisposed = false;
17
18
protected _disposables: vscode.Disposable[] = [];
19
20
public dispose(): any {
21
if (this._isDisposed) {
22
return;
23
}
24
this._isDisposed = true;
25
disposeAll(this._disposables);
26
}
27
28
protected _register<T extends vscode.Disposable>(value: T): T {
29
if (this._isDisposed) {
30
value.dispose();
31
} else {
32
this._disposables.push(value);
33
}
34
return value;
35
}
36
37
protected get isDisposed() {
38
return this._isDisposed;
39
}
40
}
41
42