UNPKG

apollo-schema-extend

Version:

Extends your Apollo Server Express based graphql server with an external graphql source

34 lines (33 loc) 1.37 kB
import { DataSource as ApolloDataSource } from 'apollo-datasource'; import { FetchResult, GraphQLRequest } from 'apollo-link'; import { DocumentNode, FieldNode, GraphQLResolveInfo } from 'graphql'; export type PostOperationFn<TData = unknown, TContext = unknown> = (fetchResult: FetchResult<Record<string, TData>>, info: { context: TContext; info: GraphQLResolveInfo; field: string; }) => TData; export type RemapRule = (node: FieldNode, info: { unfilteredNode: FieldNode; resolveInfo: GraphQLResolveInfo; }) => FieldNode; export type DataSource<TContext> = ApolloDataSource<TContext> & { query: (query: DocumentNode, options?: Omit<GraphQLRequest, 'query'>) => Promise<FetchResult>; mutation: (mutation: DocumentNode, options?: Omit<GraphQLRequest, 'query'>) => Promise<FetchResult>; }; export interface Options<TContext = any> { dataSource: { name: string; factory: (dataSources: { [name: string]: ApolloDataSource; }) => DataSource<TContext>; }; postQuery?: { [field: string]: PostOperationFn<unknown, TContext>; }; postMutation?: { [field: string]: PostOperationFn<unknown, TContext>; }; defaultPostQuery?: PostOperationFn<unknown, TContext>; defaultPostMutation?: PostOperationFn<unknown, TContext>; remapRules?: Partial<Record<string, RemapRule>>; }