diff --git a/packages/server/src/externalTypes/incrementalDeliveryPolyfill.ts b/packages/server/src/externalTypes/incrementalDeliveryPolyfill.ts index 7052408c0fc..6b1cd0df619 100644 --- a/packages/server/src/externalTypes/incrementalDeliveryPolyfill.ts +++ b/packages/server/src/externalTypes/incrementalDeliveryPolyfill.ts @@ -19,9 +19,18 @@ export interface GraphQLExperimentalFormattedInitialIncrementalExecutionResult< incremental?: ReadonlyArray< GraphQLExperimentalFormattedIncrementalResult >; + pending?: ReadonlyArray; extensions?: TExtensions; } +// This was introduced in a revision of the incremental delivery format: +// https://github.com/graphql/defer-stream-wg/discussions/69 +export interface GraphQLExperimentalFormattedPendingIncrementalResult { + path?: ReadonlyArray; + id?: string; + label?: string; +} + export interface GraphQLExperimentalFormattedSubsequentIncrementalExecutionResult< TData = ObjMap, TExtensions = ObjMap, @@ -31,6 +40,7 @@ export interface GraphQLExperimentalFormattedSubsequentIncrementalExecutionResul GraphQLExperimentalFormattedIncrementalResult >; extensions?: TExtensions; + completed?: ReadonlyArray<{ id: string }>; } export type GraphQLExperimentalFormattedIncrementalResult< @@ -45,6 +55,8 @@ export interface GraphQLExperimentalFormattedIncrementalDeferResult< TExtensions = ObjMap, > extends FormattedExecutionResult { path?: ReadonlyArray; + subPath?: ReadonlyArray; + id?: string; label?: string; } @@ -55,6 +67,7 @@ export interface GraphQLExperimentalFormattedIncrementalStreamResult< errors?: ReadonlyArray; items?: TData | null; path?: ReadonlyArray; + id?: string; label?: string; extensions?: TExtensions; } diff --git a/packages/server/src/runHttpQuery.ts b/packages/server/src/runHttpQuery.ts index a22df8aa2b2..894c595d2f5 100644 --- a/packages/server/src/runHttpQuery.ts +++ b/packages/server/src/runHttpQuery.ts @@ -357,6 +357,7 @@ function orderInitialIncrementalExecutionResultFields( hasNext: result.hasNext, errors: result.errors, data: result.data, + pending: result.pending, incremental: orderIncrementalResultFields(result.incremental), extensions: result.extensions, }; @@ -368,6 +369,7 @@ function orderSubsequentIncrementalExecutionResultFields( hasNext: result.hasNext, incremental: orderIncrementalResultFields(result.incremental), extensions: result.extensions, + completed: result.completed, }; } @@ -378,6 +380,8 @@ function orderIncrementalResultFields( hasNext: i.hasNext, errors: i.errors, path: i.path, + id: i.id, + subPath: i.subPath, label: i.label, data: i.data, items: i.items,