UNPKG

defer-close

Version:

A lightweight utility for adding JavaScript's Disposable and AsyncDisposable interfaces to any object

23 lines (22 loc) 548 B
export default function deferClose<T extends object>( obj: T, fn: (obj: T) => Promise<any> ): T & AsyncDisposable; export default function deferClose<T extends object>( obj: T, fn: (obj: T) => any ): T & Disposable; export default function deferClose<T extends object>( obj: T, fn: (obj: T) => any ): T & Disposable & AsyncDisposable { const r = Object.assign(obj, { [Symbol.dispose]() { fn(obj); }, async [Symbol.asyncDispose]() { await fn(obj); }, }); return r as T & Disposable & AsyncDisposable; }