import type { GraphQLSchema } from 'graphql'; import type { Config, FileLoader, PaginateConfig, RouteConfig, RoutesMap } from '../config.ts'; import type { Data, GraphQLConnector, RenderedPage, RenderTemplate, Stats } from '../types.ts'; export type GenerateResult = { pages: RenderedPage[]; stats: Stats; }; export type GenerateContext = { config: Config; pathPrefix: string; clientSchema: GraphQLSchema; srcPath: string; stats: Stats; renderTemplate: RenderTemplate; connector: GraphQLConnector; fileLoader: FileLoader; }; export type RenderContext = { globalContext: Data; } & GenerateContext; export type RouteContext = { pathPrefix: string; totalPages: number; renderTemplate: RenderTemplate; route: RouteConfig; context: Data; }; export type PathItem = { item: Data; path: string; }; export type PathItemContext = { previous?: PathItem; current: PathItem; next?: PathItem; }; export type ItemBuffer = { push(item: Data, path: string): void; done(): Promise; }; export type ListPageBuffer = { push(item: Data): void; done(): Promise; }; export type ResolveRoutesContextParams = { routes: RoutesMap; srcPath: string; connector: GraphQLConnector; stats: Stats; }; export type GetPaginatedData = (generateContext: GenerateContext, paginate: PaginateConfig, context: Data) => Promise<{ iterable: Iterable; total: number; } | null>;