UNPKG

vscode-helpers

Version:

Helper functions and classes for own VS Code (extensions)

122 lines (121 loc) 4.5 kB
/** * This file is part of the vscode-helpers distribution. * Copyright (c) Marcel Joachim Kloubert. * * vscode-helpers is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation, version 3. * * vscode-helpers is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ /// <reference types="node" /> import * as Events from 'events'; import * as vscode from 'vscode'; /** * Name of the event, when an object has been disposed. */ export declare const EVENT_DISPOSED = "disposed"; /** * Name of an event, when an object is going to be disposed. */ export declare const EVENT_DISPOSING = "disposing"; /** * A disposable object. */ export declare abstract class DisposableBase extends Events.EventEmitter implements vscode.Disposable { /** * Stores disposable sub objects. */ protected readonly _DISPOSABLES: vscode.Disposable[]; /** * Stores intervals. */ protected readonly _INTERVALS: NodeJS.Timer[]; private _isDisposed; private _isDisposing; /** * Stores timeouts. */ protected readonly _TIMEOUTS: NodeJS.Timer[]; /** * Cleansup all timeouts. */ protected cleanupIntervals(): void; /** * Cleansup all timeouts. */ protected cleanupTimeouts(): void; /** @inheritdoc */ dispose(): void; /** * Gets if object has been disposed or not. */ readonly isDisposed: boolean; /** * Gets if the 'dispose()' method is currently executed or not. */ readonly isDisposing: boolean; /** * Gets if the object is disposed or currently disposing. */ readonly isInFinalizeState: boolean; /** * Additional logic for the 'dispose()' method. */ protected onDispose(): void; } /** * Clones an object and makes it non disposable. * * @param {TObj} obj The object to clone. * @param {boolean} [throwOnDispose] Throw error when coll 'dispose()' method or not. * * @return {TObj} The cloned object. */ export declare function makeNonDisposable<TObj extends vscode.Disposable>(obj: TObj, throwOnDispose?: boolean): TObj; /** * Tries to dispose an object. * * @param {object} obj The object to dispose. * * @return {boolean} Operation was successful or not. */ export declare function tryDispose(obj: vscode.Disposable): boolean; /** * Tries to dispose an object inside another, parent object and deletes it there. * * @param {any} obj The "other" / parent object. * @param {PropertyKey} key The key inside 'obj', where the disposable object is stored and should be removed. * @param {boolean} [alwaysDelete] Delete even if operation failed or not. * * @return {vscode.Disposable|false} The disposed and removed object or (false) if failed. */ export declare function tryDisposeAndDelete(obj: any, key: PropertyKey, alwaysDelete?: boolean): false | vscode.Disposable; /** * Invokes a function for a disposable object and keeps sure, that this object will be disposed, * even on error. * * @param {TObj} obj The object. * @param {Function} func The function to invoke. * @param {any[]} [args] One or more additional arguments for the function. * * @return Promise<TResult> The promise with the result of the function. */ export declare function using<TObj extends vscode.Disposable = vscode.Disposable, TResult = any>(obj: TObj, func: (o: TObj, ...args: any[]) => TResult | PromiseLike<TResult>, ...args: any[]): Promise<TResult>; /** * Invokes a function for a disposable object sync and keeps sure, that this object will be disposed, * even on error. * * @param {TObj} obj The object. * @param {Function} func The function to invoke. * @param {any[]} [args] One or more additional arguments for the function. * * @return TResult The result of the function. */ export declare function usingSync<TObj extends vscode.Disposable = vscode.Disposable, TResult = any>(obj: TObj, func: (o: TObj, ...args: any[]) => TResult, ...args: any[]): TResult;