From 259232a5ec06efb920228fb6dce0835c7d52bb67 Mon Sep 17 00:00:00 2001 From: Nathan Knight <20479649+nathan-knight@users.noreply.github.com> Date: Tue, 26 Sep 2023 11:07:45 -0400 Subject: [PATCH 1/2] Added support for new revision of incremental delivery format --- .../src/externalTypes/incrementalDeliveryPolyfill.ts | 12 ++++++++++++ packages/server/src/runHttpQuery.ts | 3 +++ 2 files changed, 15 insertions(+) diff --git a/packages/server/src/externalTypes/incrementalDeliveryPolyfill.ts b/packages/server/src/externalTypes/incrementalDeliveryPolyfill.ts index 7052408c0fc..7e13e163daf 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, @@ -45,6 +54,8 @@ export interface GraphQLExperimentalFormattedIncrementalDeferResult< TExtensions = ObjMap, > extends FormattedExecutionResult { path?: ReadonlyArray; + subPath?: ReadonlyArray; + id?: string; label?: string; } @@ -55,6 +66,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..e170f76ec3c 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, }; @@ -378,6 +379,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, From 31f074747088acc049df7f45bee1734b3d36c600 Mon Sep 17 00:00:00 2001 From: Nathan Knight <20479649+nathan-knight@users.noreply.github.com> Date: Wed, 27 Sep 2023 17:01:39 -0400 Subject: [PATCH 2/2] Added additional field from new format --- packages/server/src/externalTypes/incrementalDeliveryPolyfill.ts | 1 + packages/server/src/runHttpQuery.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/packages/server/src/externalTypes/incrementalDeliveryPolyfill.ts b/packages/server/src/externalTypes/incrementalDeliveryPolyfill.ts index 7e13e163daf..6b1cd0df619 100644 --- a/packages/server/src/externalTypes/incrementalDeliveryPolyfill.ts +++ b/packages/server/src/externalTypes/incrementalDeliveryPolyfill.ts @@ -40,6 +40,7 @@ export interface GraphQLExperimentalFormattedSubsequentIncrementalExecutionResul GraphQLExperimentalFormattedIncrementalResult >; extensions?: TExtensions; + completed?: ReadonlyArray<{ id: string }>; } export type GraphQLExperimentalFormattedIncrementalResult< diff --git a/packages/server/src/runHttpQuery.ts b/packages/server/src/runHttpQuery.ts index e170f76ec3c..894c595d2f5 100644 --- a/packages/server/src/runHttpQuery.ts +++ b/packages/server/src/runHttpQuery.ts @@ -369,6 +369,7 @@ function orderSubsequentIncrementalExecutionResultFields( hasNext: result.hasNext, incremental: orderIncrementalResultFields(result.incremental), extensions: result.extensions, + completed: result.completed, }; }