UNPKG

@graphql-yoga/plugin-disable-introspection

Version:

Disable Introspection plugin for GraphQL Yoga.

21 lines (20 loc) 808 B
import { NoSchemaIntrospectionCustomRule } from 'graphql'; import { handleMaybePromise } from '@whatwg-node/promise-helpers'; export function useDisableIntrospection(props) { const disabledIntrospection = new WeakSet(); return { onRequestParse({ request, serverContext }) { return handleMaybePromise(() => (props?.isDisabled ? props.isDisabled(request, serverContext) : true), result => { if (result) { disabledIntrospection.add(request); } }); }, onValidate({ addValidationRule, context }) { const isDisabled = disabledIntrospection.has(context.request); if (isDisabled) { addValidationRule(NoSchemaIntrospectionCustomRule); } }, }; }