@graphql-mesh/utils
Version:
47 lines (46 loc) • 1.62 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.isDisposable = isDisposable;
exports.dispose = dispose;
exports.createDisposable = createDisposable;
exports.createAsyncDisposable = createAsyncDisposable;
exports.makeDisposable = makeDisposable;
exports.makeAsyncDisposable = makeAsyncDisposable;
const disposablestack_1 = require("@whatwg-node/disposablestack");
function isDisposable(obj) {
return obj?.[disposablestack_1.DisposableSymbols.dispose] || obj?.[disposablestack_1.DisposableSymbols.asyncDispose];
}
function dispose(disposable) {
if (disposablestack_1.DisposableSymbols.dispose in disposable) {
return disposable[disposablestack_1.DisposableSymbols.dispose]();
}
if (disposablestack_1.DisposableSymbols.asyncDispose in disposable) {
return disposable[disposablestack_1.DisposableSymbols.asyncDispose]();
}
}
function createDisposable(disposeFn) {
return {
[disposablestack_1.DisposableSymbols.dispose]: disposeFn,
};
}
function createAsyncDisposable(disposeFn) {
return {
[disposablestack_1.DisposableSymbols.asyncDispose]: disposeFn,
};
}
function makeDisposable(obj, disposeFn) {
Object.defineProperty(obj, disposablestack_1.DisposableSymbols.dispose, {
value: disposeFn,
configurable: true,
writable: true,
});
return obj;
}
function makeAsyncDisposable(obj, disposeFn) {
Object.defineProperty(obj, disposablestack_1.DisposableSymbols.asyncDispose, {
value: disposeFn,
configurable: true,
writable: true,
});
return obj;
}
;