From 37c914853816f493b4063f5a71bd0908486d6dba Mon Sep 17 00:00:00 2001 From: Yaacov Rydzinski Date: Sun, 7 Apr 2024 15:19:44 +0300 Subject: [PATCH] remove completePromisedListItemValue --- src/execution/execute.ts | 128 +++++++-------------------------------- 1 file changed, 21 insertions(+), 107 deletions(-) diff --git a/src/execution/execute.ts b/src/execution/execute.ts index 0a938260c0..75fa22c66d 100644 --- a/src/execution/execute.ts +++ b/src/execution/execute.ts @@ -1134,27 +1134,9 @@ async function completeAsyncIteratorValue( break; } - const item = iteration.value; - // TODO: add tests for stream backed by asyncIterator that returns a promise - /* c8 ignore start */ - if (isPromise(item)) { - completedResults.push( - completePromisedListItemValue( - item, - exeContext, - itemType, - fieldGroup, - info, - itemPath, - incrementalContext, - deferMap, - ), - ); - containsPromise = true; - } else if ( - /* c8 ignore stop */ + if ( completeListItemValue( - item, + iteration.value, completedResults, exeContext, itemType, @@ -1248,24 +1230,7 @@ async function completeAsyncIteratorValueWithPossibleStream( } const item = iteration.value; - // TODO: add tests for stream backed by asyncIterator that returns a promise - /* c8 ignore start */ - if (isPromise(item)) { - completedResults.push( - completePromisedListItemValue( - item, - exeContext, - itemType, - fieldGroup, - info, - itemPath, - incrementalContext, - deferMap, - ), - ); - containsPromise = true; - } else if ( - /* c8 ignore stop */ + if ( completeListItemValue( item, completedResults, @@ -1389,21 +1354,7 @@ function completeIterableValue( // since from here on it is not ever accessed by resolver functions. const itemPath = addPath(path, index, undefined); - if (isPromise(item)) { - completedResults.push( - completePromisedListItemValue( - item, - exeContext, - itemType, - fieldGroup, - info, - itemPath, - incrementalContext, - deferMap, - ), - ); - containsPromise = true; - } else if ( + if ( completeListItemValue( item, completedResults, @@ -1472,21 +1423,7 @@ function completeIterableValueWithPossibleStream( // since from here on it is not ever accessed by resolver functions. const itemPath = addPath(path, index, undefined); - if (isPromise(item)) { - completedResults.push( - completePromisedListItemValue( - item, - exeContext, - itemType, - fieldGroup, - info, - itemPath, - incrementalContext, - deferMap, - ), - ); - containsPromise = true; - } else if ( + if ( completeListItemValue( item, completedResults, @@ -1525,6 +1462,22 @@ function completeListItemValue( incrementalContext: IncrementalContext | undefined, deferMap: ReadonlyMap | undefined, ): boolean { + if (isPromise(item)) { + completedResults.push( + completePromisedValue( + exeContext, + itemType, + fieldGroup, + info, + itemPath, + item, + incrementalContext, + deferMap, + ), + ); + return true; + } + try { const completedItem = completeValue( exeContext, @@ -1571,45 +1524,6 @@ function completeListItemValue( return false; } -async function completePromisedListItemValue( - item: unknown, - exeContext: ExecutionContext, - itemType: GraphQLOutputType, - fieldGroup: FieldGroup, - info: GraphQLResolveInfo, - itemPath: Path, - incrementalContext: IncrementalContext | undefined, - deferMap: ReadonlyMap | undefined, -): Promise { - try { - const resolved = await item; - let completed = completeValue( - exeContext, - itemType, - fieldGroup, - info, - itemPath, - resolved, - incrementalContext, - deferMap, - ); - if (isPromise(completed)) { - completed = await completed; - } - return completed; - } catch (rawError) { - handleFieldError( - rawError, - exeContext, - itemType, - fieldGroup, - itemPath, - incrementalContext, - ); - return null; - } -} - /** * Complete a Scalar or Enum by serializing to a valid value, returning * null if serialization is not possible.