UNPKG

ts-raii-scope

Version:
34 lines (33 loc) 1.05 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const utils_1 = require("./utils"); class DisposableResource { constructor(innerResource, disposeCallback) { this._innerResource = innerResource; this._disposeCallback = disposeCallback; this._isDisposed = false; } // noinspection JSUnusedGlobalSymbols dispose() { if (this._isDisposed === false) { this._isDisposed = undefined; const disposeResult = this._disposeCallback(this._innerResource); if (utils_1.isPromise(disposeResult)) { return disposeResult.then(this.finishDisposing.bind(this)); } this.finishDisposing(); } } // noinspection JSUnusedGlobalSymbols /** * Returns undefined if dispose in progress */ isDisposed() { return this._isDisposed; } finishDisposing() { delete this._innerResource; this._isDisposed = true; } } exports.DisposableResource = DisposableResource;