@graphql-yoga/plugin-disable-introspection
Version:
Disable Introspection plugin for GraphQL Yoga.
21 lines (20 loc) • 808 B
JavaScript
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);
}
},
};
}