UNPKG

@typed/fp

Version:

Data Structures and Resources for fp-ts

57 lines 1.48 kB
/** * Disposable is an interface for representing resources which can be synchronously * disposed of. * @since 0.9.2 */ export * from '@most/disposable'; /** * Disposable is a synchronous interface, borrowed from most.js, to cancel requests or * otherwise clean up resources. */ import { disposeAll, disposeNone } from '@most/disposable'; const NONE = disposeNone(); /** * Construct a SettableDisposable * @since 0.9.2 * @category Constructor */ export 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; disposeAll(disposables).dispose(); } return { addDisposable, isDisposed, dispose, }; } /** * Wrap a non-Disposable function into a Disposable-returning function * @since 0.9.2 * @category Combinator */ export const undisposable = (fn) => (...args) => { fn(...args); return disposeNone(); }; //# sourceMappingURL=Disposable.js.map