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