UNPKG

@vtex/api

Version:
32 lines (31 loc) 1.05 kB
import { DocumentNode, execute, GraphQLSchema } from 'graphql'; import { IOClients } from '../../../../clients/IOClients'; import { ParamsContext, RecorderState, ServiceContext } from '../typings'; export interface Query { variables?: Record<string, any>; operationName?: string; document: DocumentNode; } type TypeFromPromise<T> = T extends Promise<infer U> ? U : T; export type GraphQLResponse = TypeFromPromise<ReturnType<typeof execute>>; export interface GraphQLCacheControl { maxAge: number; scope: 'private' | 'public' | 'segment'; noCache: boolean; noStore: boolean; } export interface GraphQLContext extends ParamsContext { graphql: { query?: Query; graphqlResponse?: GraphQLResponse; status: 'success' | 'error'; cacheControl: GraphQLCacheControl; }; } export type GraphQLServiceContext = ServiceContext<IOClients, RecorderState, GraphQLContext>; export interface ExecutableSchema { schema: GraphQLSchema; hasProvider: boolean; provider?: string; } export {};