import type { GraphQLFormattedError } from 'graphql'; type ArrayType = T extends Array ? U : never; export type WritableProps = { -readonly [P in keyof T]: T[P] extends any[] ? Array>> : WritableProps; }; export type TemplateLocation = { file: string; line: number; column: number; }; export type JsonPrimitive = string | boolean | number | null; export interface JsonMap extends Record { } export type Json = JsonPrimitive | Json[] | JsonMap; export type Data = Record; export type Warning = { source: string; message: string; }; export type ContentUsage = Record>; export type Stats = { warnings: Warning[]; pagesGenerated: number; contentUsage?: ContentUsage; }; export type TemplateContext = Record; export type RenderedPage = { path: string; contents: string | Buffer; }; export type RenderedRoute = { pages: RenderedPage[]; order: number; }; export type RenderTemplate = (path: string, template: string, context: TemplateContext) => Promise; export type RenderTemplateDecorator = (renderTemplate: RenderTemplate) => RenderTemplate; export type GraphQLConnectorParams = { query: string; variables?: Data; operationName?: string; }; export type GraphQLConnectorContext = { source?: string; stats?: Stats; applyMigrations?: boolean; isPaginated?: boolean; }; export type GraphQLResult = { errors?: GraphQLFormattedError[]; data?: Record | null; }; export type GraphQLConnector = (params: GraphQLConnectorParams, context?: GraphQLConnectorContext) => Promise; export {};