UNPKG

@graphql-mesh/utils

Version:
39 lines (38 loc) 1.14 kB
import { DisposableSymbols } from '@whatwg-node/disposablestack'; export function isDisposable(obj) { return obj?.[DisposableSymbols.dispose] || obj?.[DisposableSymbols.asyncDispose]; } export function dispose(disposable) { if (DisposableSymbols.dispose in disposable) { return disposable[DisposableSymbols.dispose](); } if (DisposableSymbols.asyncDispose in disposable) { return disposable[DisposableSymbols.asyncDispose](); } } export function createDisposable(disposeFn) { return { [DisposableSymbols.dispose]: disposeFn, }; } export function createAsyncDisposable(disposeFn) { return { [DisposableSymbols.asyncDispose]: disposeFn, }; } export function makeDisposable(obj, disposeFn) { Object.defineProperty(obj, DisposableSymbols.dispose, { value: disposeFn, configurable: true, writable: true, }); return obj; } export function makeAsyncDisposable(obj, disposeFn) { Object.defineProperty(obj, DisposableSymbols.asyncDispose, { value: disposeFn, configurable: true, writable: true, }); return obj; }