From de971919486ac143b6566d9957e114ace372a133 Mon Sep 17 00:00:00 2001 From: Yaacov Rydzinski Date: Mon, 13 Jan 2025 13:24:30 +0200 Subject: [PATCH 1/2] further refine incremental result types continue work with #4313 --- src/execution/types.ts | 42 ++++++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/src/execution/types.ts b/src/execution/types.ts index 87d47e3efc..d3c9f84984 100644 --- a/src/execution/types.ts +++ b/src/execution/types.ts @@ -36,12 +36,13 @@ export interface FormattedExecutionResult< export interface ExperimentalIncrementalExecutionResults< TInitial = ObjMap, - TSubsequent = unknown, + TData = ObjMap, + TItems = ReadonlyArray, TExtensions = ObjMap, > { initialResult: InitialIncrementalExecutionResult; subsequentResults: AsyncGenerator< - SubsequentIncrementalExecutionResult, + SubsequentIncrementalExecutionResult, void, void >; @@ -68,23 +69,27 @@ export interface FormattedInitialIncrementalExecutionResult< } export interface SubsequentIncrementalExecutionResult< - TData = unknown, + TData = ObjMap, + TItems = ReadonlyArray, TExtensions = ObjMap, > { pending?: ReadonlyArray; - incremental?: ReadonlyArray>; + incremental?: ReadonlyArray>; completed?: ReadonlyArray; hasNext: boolean; extensions?: TExtensions; } export interface FormattedSubsequentIncrementalExecutionResult< - TData = unknown, + TData = ObjMap, + TItems = ReadonlyArray, TExtensions = ObjMap, > { hasNext: boolean; pending?: ReadonlyArray; - incremental?: ReadonlyArray>; + incremental?: ReadonlyArray< + FormattedIncrementalResult + >; completed?: ReadonlyArray; extensions?: TExtensions; } @@ -114,41 +119,46 @@ export interface FormattedIncrementalDeferResult< extensions?: TExtensions; } -interface StreamItemsRecordResult> { +interface StreamItemsRecordResult> { errors?: ReadonlyArray; - items: TData; + items: TItems; } export interface IncrementalStreamResult< - TData = ReadonlyArray, + TItems = ReadonlyArray, TExtensions = ObjMap, -> extends StreamItemsRecordResult { +> extends StreamItemsRecordResult { id: string; subPath?: ReadonlyArray; extensions?: TExtensions; } export interface FormattedIncrementalStreamResult< - TData = Array, + TItems = Array, TExtensions = ObjMap, > { errors?: ReadonlyArray; - items: TData; + items: TItems; id: string; subPath?: ReadonlyArray; extensions?: TExtensions; } -export type IncrementalResult> = +export type IncrementalResult< + TData = ObjMap, + TItems = ReadonlyArray, + TExtensions = ObjMap, +> = | IncrementalDeferResult - | IncrementalStreamResult; + | IncrementalStreamResult; export type FormattedIncrementalResult< - TData = unknown, + TData = ObjMap, + TItems = ReadonlyArray, TExtensions = ObjMap, > = | FormattedIncrementalDeferResult - | FormattedIncrementalStreamResult; + | FormattedIncrementalStreamResult; export interface PendingResult { id: string; From 22f8a66df2ef0e312a7c6b7898e019987077cf9b Mon Sep 17 00:00:00 2001 From: Yaacov Rydzinski Date: Mon, 17 Feb 2025 14:24:39 +0200 Subject: [PATCH 2/2] address review feedback use TIncrementalItem instead of TItems to constrain to ReadonlyArray of TIncrementalItem --- src/execution/types.ts | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/src/execution/types.ts b/src/execution/types.ts index d3c9f84984..df968f60b9 100644 --- a/src/execution/types.ts +++ b/src/execution/types.ts @@ -37,12 +37,12 @@ export interface FormattedExecutionResult< export interface ExperimentalIncrementalExecutionResults< TInitial = ObjMap, TData = ObjMap, - TItems = ReadonlyArray, + TIncrementalItem = unknown, TExtensions = ObjMap, > { initialResult: InitialIncrementalExecutionResult; subsequentResults: AsyncGenerator< - SubsequentIncrementalExecutionResult, + SubsequentIncrementalExecutionResult, void, void >; @@ -70,11 +70,13 @@ export interface FormattedInitialIncrementalExecutionResult< export interface SubsequentIncrementalExecutionResult< TData = ObjMap, - TItems = ReadonlyArray, + TIncrementalItem = unknown, TExtensions = ObjMap, > { pending?: ReadonlyArray; - incremental?: ReadonlyArray>; + incremental?: ReadonlyArray< + IncrementalResult + >; completed?: ReadonlyArray; hasNext: boolean; extensions?: TExtensions; @@ -82,13 +84,13 @@ export interface SubsequentIncrementalExecutionResult< export interface FormattedSubsequentIncrementalExecutionResult< TData = ObjMap, - TItems = ReadonlyArray, + TIncrementalItem = unknown, TExtensions = ObjMap, > { hasNext: boolean; pending?: ReadonlyArray; incremental?: ReadonlyArray< - FormattedIncrementalResult + FormattedIncrementalResult >; completed?: ReadonlyArray; extensions?: TExtensions; @@ -119,26 +121,26 @@ export interface FormattedIncrementalDeferResult< extensions?: TExtensions; } -interface StreamItemsRecordResult> { +interface StreamItemsRecordResult { errors?: ReadonlyArray; - items: TItems; + items: ReadonlyArray; } export interface IncrementalStreamResult< - TItems = ReadonlyArray, + TIncrementalItem = unknown, TExtensions = ObjMap, -> extends StreamItemsRecordResult { +> extends StreamItemsRecordResult { id: string; subPath?: ReadonlyArray; extensions?: TExtensions; } export interface FormattedIncrementalStreamResult< - TItems = Array, + TIncrementalItem = unknown, TExtensions = ObjMap, > { errors?: ReadonlyArray; - items: TItems; + items: ReadonlyArray; id: string; subPath?: ReadonlyArray; extensions?: TExtensions; @@ -146,19 +148,19 @@ export interface FormattedIncrementalStreamResult< export type IncrementalResult< TData = ObjMap, - TItems = ReadonlyArray, + TIncrementalItem = unknown, TExtensions = ObjMap, > = | IncrementalDeferResult - | IncrementalStreamResult; + | IncrementalStreamResult; export type FormattedIncrementalResult< TData = ObjMap, - TItems = ReadonlyArray, + TIncrementalItem = unknown, TExtensions = ObjMap, > = | FormattedIncrementalDeferResult - | FormattedIncrementalStreamResult; + | FormattedIncrementalStreamResult; export interface PendingResult { id: string;