UNPKG

@envelop/extended-validation

Version:

Extended validation plugin adds support for writing GraphQL validation rules, that has access to all `execute` parameters, including variables.

36 lines (35 loc) 1.19 kB
import { ExtendedValidationRule } from "./common.cjs"; import { DocumentNode, ExecutionArgs, ExecutionResult } from "graphql"; import { Plugin } from "@envelop/core"; //#region src/plugin.d.ts declare const symbolExtendedValidationRules: unique symbol; type ExtendedValidationContext = { rules: Array<ExtendedValidationRule>; didRun: boolean; }; type OnValidationFailedCallback = (params: { args: ExecutionArgs; result: ExecutionResult; setResult: (result: ExecutionResult) => void; }) => void; declare const useExtendedValidation: <PluginContext extends Record<string, any> = {}>(options: { rules: Array<ExtendedValidationRule>; /** * Callback that is invoked when the document is assembled by the visitor. */ onDocument?: (document: DocumentNode) => DocumentNode; /** * Callback that is invoked if the extended validation yields any errors. */ onValidationFailed?: OnValidationFailedCallback; /** * Reject the execution if the validation fails. * * @default true */ rejectOnErrors?: boolean; }) => Plugin<PluginContext & { [symbolExtendedValidationRules]?: ExtendedValidationContext; }>; //#endregion export { useExtendedValidation };