UNPKG

@graphql-tools/executor-yoga

Version:

A set of utils for faster development of GraphQL tools

29 lines (28 loc) 1.01 kB
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](); }, }; }