@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
text/typescript
import { ExtendedValidationRule } from "./common.mjs";
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 };