@graphql-tools/wrap
Version:
A set of utils for faster development of GraphQL tools
28 lines (27 loc) • 1.91 kB
text/typescript
import { SelectionSetNode, FragmentDefinitionNode } from 'graphql';
import { ExecutionRequest, ExecutionResult } from '@graphql-tools/utils';
import { Transform, DelegationContext } from '@graphql-tools/delegate';
export declare type QueryTransformer = <TContext>(selectionSet: SelectionSetNode | undefined, fragments: Record<string, FragmentDefinitionNode>, delegationContext: DelegationContext<TContext>, transformationContext: Record<string, any>) => SelectionSetNode;
export declare type ResultTransformer = <TContext>(result: any, delegationContext: DelegationContext<TContext>, transformationContext: Record<string, any>) => any;
export declare type ErrorPathTransformer = (path: ReadonlyArray<string | number>) => Array<string | number>;
interface TransformQueryTransformationContext extends Record<string, any> {
}
export default class TransformQuery<TContext = Record<string, any>> implements Transform<TransformQueryTransformationContext, TContext> {
private readonly path;
private readonly queryTransformer;
private readonly resultTransformer;
private readonly errorPathTransformer;
private readonly fragments;
constructor({ path, queryTransformer, resultTransformer, errorPathTransformer, fragments, }: {
path: Array<string>;
queryTransformer: QueryTransformer;
resultTransformer?: ResultTransformer;
errorPathTransformer?: ErrorPathTransformer;
fragments?: Record<string, FragmentDefinitionNode>;
});
transformRequest(originalRequest: ExecutionRequest, delegationContext: DelegationContext<TContext>, transformationContext: TransformQueryTransformationContext): ExecutionRequest;
transformResult(originalResult: ExecutionResult, delegationContext: DelegationContext<TContext>, transformationContext: TransformQueryTransformationContext): ExecutionResult;
private transformData;
private transformErrors;
}
export {};