import type { KeyValueCache } from '@apollo/utils.keyvaluecache'; import type { Logger } from '@apollo/utils.logger'; import type { GraphQLError, GraphQLResolveInfo, GraphQLSchema } from 'graphql'; import type { ApolloConfig } from './constructor.js'; import type { BaseContext } from './context.js'; import type { GraphQLResponse } from './graphql.js'; import type { GraphQLExperimentalFormattedSubsequentIncrementalExecutionResultAlpha2 } from './incrementalDeliveryPolyfillAlpha2.js'; import type { GraphQLRequestContext, GraphQLRequestContextDidEncounterErrors, GraphQLRequestContextDidEncounterSubsequentErrors, GraphQLRequestContextDidResolveOperation, GraphQLRequestContextDidResolveSource, GraphQLRequestContextExecutionDidStart, GraphQLRequestContextParsingDidStart, GraphQLRequestContextResponseForOperation, GraphQLRequestContextValidationDidStart, GraphQLRequestContextWillSendResponse, GraphQLRequestContextWillSendSubsequentPayload } from './requestPipeline.js'; import type { GraphQLExperimentalFormattedSubsequentIncrementalExecutionResultAlpha9 } from './incrementalDeliveryPolyfillAlpha9.js'; export interface GraphQLServerContext { readonly logger: Logger; readonly cache: KeyValueCache; schema: GraphQLSchema; apollo: ApolloConfig; startedInBackground: boolean; } export interface GraphQLSchemaContext { apiSchema: GraphQLSchema; coreSupergraphSdl?: string; } export interface ApolloServerPlugin { serverWillStart?(service: GraphQLServerContext): Promise; requestDidStart?(requestContext: GraphQLRequestContext): Promise | void>; unexpectedErrorProcessingRequest?({ requestContext, error, }: { requestContext: GraphQLRequestContext; error: Error; }): Promise; contextCreationDidFail?({ error }: { error: Error; }): Promise; invalidRequestWasReceived?({ error }: { error: Error; }): Promise; startupDidFail?({ error }: { error: Error; }): Promise; } export interface GraphQLServerListener { schemaDidLoadOrUpdate?(schemaContext: GraphQLSchemaContext): void; drainServer?(): Promise; serverWillStop?(): Promise; renderLandingPage?(): Promise; } export interface LandingPage { html: string | (() => Promise); } export type GraphQLRequestListenerParsingDidEnd = (err?: Error) => Promise; export type GraphQLRequestListenerValidationDidEnd = (err?: ReadonlyArray) => Promise; export type GraphQLRequestListenerExecutionDidEnd = (err?: Error) => Promise; export type GraphQLRequestListenerDidResolveField = (error: Error | null, result?: any) => void; export interface GraphQLRequestListener { didResolveSource?(requestContext: GraphQLRequestContextDidResolveSource): Promise; parsingDidStart?(requestContext: GraphQLRequestContextParsingDidStart): Promise; validationDidStart?(requestContext: GraphQLRequestContextValidationDidStart): Promise; didResolveOperation?(requestContext: GraphQLRequestContextDidResolveOperation): Promise; didEncounterErrors?(requestContext: GraphQLRequestContextDidEncounterErrors): Promise; responseForOperation?(requestContext: GraphQLRequestContextResponseForOperation): Promise; executionDidStart?(requestContext: GraphQLRequestContextExecutionDidStart): Promise | void>; willSendResponse?(requestContext: GraphQLRequestContextWillSendResponse): Promise; didEncounterSubsequentErrors?(requestContext: GraphQLRequestContextDidEncounterSubsequentErrors, errors: ReadonlyArray): Promise; willSendSubsequentPayload?(requestContext: GraphQLRequestContextWillSendSubsequentPayload, payload: GraphQLExperimentalFormattedSubsequentIncrementalExecutionResultAlpha2 | GraphQLExperimentalFormattedSubsequentIncrementalExecutionResultAlpha9): Promise; } export type GraphQLFieldResolverParams = { source: TSource; args: TArgs; contextValue: TContext; info: GraphQLResolveInfo; }; export interface GraphQLRequestExecutionListener { executionDidEnd?: GraphQLRequestListenerExecutionDidEnd; willResolveField?(fieldResolverParams: GraphQLFieldResolverParams): GraphQLRequestListenerDidResolveField | void; } //# sourceMappingURL=plugins.d.ts.map