@graphql-mesh/utils
Version:
39 lines (38 loc) • 1.14 kB
JavaScript
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;
}