import { GraphQLResolveInfo } from "graphql"; import { IPhantomReporter } from "gatsby-cli/lib/reporter/reporter-phantom"; import { IGraphQLRunnerStats } from "../query/types"; import { Path } from "graphql/jsutils/Path"; export interface IGatsbyResolverContext { defaultFieldResolver: GatsbyResolver; nodeModel: any; stats: IGraphQLRunnerStats | null; tracer: IGraphQLSpanTracer | null; telemetryResolverTimings?: Array; [key: string]: any; } export type GatsbyGraphQLResolveInfo = GraphQLResolveInfo & { from?: string; fromNode?: boolean; }; export type GatsbyResolver = (source: TSource, args: TArgs, context: IGatsbyResolverContext, info: GatsbyGraphQLResolveInfo) => any; export interface IGatsbyConnection { totalCount: () => Promise; edges: Array>; nodes: Array; pageInfo: IGatsbyPageInfo; } export interface IGatsbyEdge { node: NodeType; next: NodeType | undefined; previous: NodeType | undefined; } export interface IGatsbyPageInfo { currentPage: number; hasPreviousPage: boolean; hasNextPage: boolean; itemCount: number; pageCount: () => Promise; perPage: number | undefined; totalCount: () => Promise; } export interface IGraphQLSpanTracer { getParentActivity(): IPhantomReporter; createResolverActivity(path: Path, name: string): IPhantomReporter; } export interface IGraphQLTelemetryRecord { name: string; duration: number; }