UNPKG

@typed/fp

Version:

Data Structures and Resources for fp-ts

63 lines 1.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.undisposable = exports.settable = void 0; const tslib_1 = require("tslib"); /** * Disposable is an interface for representing resources which can be synchronously * disposed of. * @since 0.9.2 */ (0, tslib_1.__exportStar)(require("@most/disposable"), exports); /** * Disposable is a synchronous interface, borrowed from most.js, to cancel requests or * otherwise clean up resources. */ const disposable_1 = require("@most/disposable"); const NONE = (0, disposable_1.disposeNone)(); /** * Construct a SettableDisposable * @since 0.9.2 * @category Constructor */ function settable() { let disposed = false; const disposables = []; function addDisposable(disposable) { if (NONE === disposable || disposed) { disposable.dispose(); return NONE; } disposables.push(disposable); const dispose = () => { const index = disposables.indexOf(disposable); if (index > -1) { disposables.splice(index, 1).forEach((d) => d.dispose()); } }; return { dispose }; } function isDisposed() { return disposed; } function dispose() { disposed = true; (0, disposable_1.disposeAll)(disposables).dispose(); } return { addDisposable, isDisposed, dispose, }; } exports.settable = settable; /** * Wrap a non-Disposable function into a Disposable-returning function * @since 0.9.2 * @category Combinator */ const undisposable = (fn) => (...args) => { fn(...args); return (0, disposable_1.disposeNone)(); }; exports.undisposable = undisposable; //# sourceMappingURL=Disposable.js.map