@graphql-tools/executor-yoga
Version:
A set of utils for faster development of GraphQL tools
29 lines (28 loc) • 1.01 kB
JavaScript
import { DisposableSymbols } from 'graphql-yoga';
import { useExecutor as useEnvelopExecutor, } from '@graphql-tools/executor-envelop';
export function useExecutor(executor, opts) {
const envelopPlugin = useEnvelopExecutor(executor, opts);
let disposableSymbol;
if (executor[DisposableSymbols.asyncDispose]) {
disposableSymbol = DisposableSymbols.asyncDispose;
}
else if (executor[DisposableSymbols.dispose]) {
disposableSymbol = DisposableSymbols.dispose;
}
return {
...envelopPlugin,
onRequestParse({ serverContext }) {
return {
onRequestParseDone() {
envelopPlugin.ensureSchema(serverContext);
if (envelopPlugin.pluginCtx.schemaSetPromise$) {
return envelopPlugin.pluginCtx.schemaSetPromise$;
}
},
};
},
[disposableSymbol]() {
return executor[disposableSymbol]();
},
};
}