@vtex/api
Version:
VTEX I/O API client
32 lines (31 loc) • 1.05 kB
TypeScript
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 {};