@@ -2055,60 +2055,6 @@ function executeStreamField(
20552055 return asyncPayloadRecord ;
20562056}
20572057
2058- async function executeStreamIteratorItem (
2059- iterator : AsyncIterator < unknown > ,
2060- exeContext : ExecutionContext ,
2061- fieldNodes : ReadonlyArray < FieldNode > ,
2062- info : GraphQLResolveInfo ,
2063- itemType : GraphQLOutputType ,
2064- asyncPayloadRecord : StreamRecord ,
2065- itemPath : Path ,
2066- ) : Promise < IteratorResult < unknown > > {
2067- let item ;
2068- try {
2069- const { value, done } = await iterator . next ( ) ;
2070- if ( done ) {
2071- asyncPayloadRecord . setIsCompletedIterator ( ) ;
2072- return { done, value : undefined } ;
2073- }
2074- item = value ;
2075- } catch ( rawError ) {
2076- const error = locatedError ( rawError , fieldNodes , pathToArray ( itemPath ) ) ;
2077- const value = handleFieldError ( error , itemType , asyncPayloadRecord . errors ) ;
2078- // don't continue if iterator throws
2079- return { done : true , value } ;
2080- }
2081- let completedItem ;
2082- try {
2083- completedItem = completeValue (
2084- exeContext ,
2085- itemType ,
2086- fieldNodes ,
2087- info ,
2088- itemPath ,
2089- item ,
2090- asyncPayloadRecord ,
2091- ) ;
2092-
2093- if ( isPromise ( completedItem ) ) {
2094- completedItem = handleAsyncCompletionError (
2095- completedItem ,
2096- exeContext ,
2097- itemType ,
2098- fieldNodes ,
2099- itemPath ,
2100- asyncPayloadRecord ,
2101- ) ;
2102- }
2103- return { done : false , value : completedItem } ;
2104- } catch ( rawError ) {
2105- const error = locatedError ( rawError , fieldNodes , pathToArray ( itemPath ) ) ;
2106- const value = handleFieldError ( error , itemType , asyncPayloadRecord . errors ) ;
2107- filterSubsequentPayloads ( exeContext , itemPath , asyncPayloadRecord ) ;
2108- return { done : false , value } ;
2109- }
2110- }
2111-
21122058async function executeStreamIterator (
21132059 initialIndex : number ,
21142060 iterator : AsyncIterator < unknown > ,
@@ -2186,6 +2132,60 @@ async function executeStreamIterator(
21862132 }
21872133}
21882134
2135+ async function executeStreamIteratorItem (
2136+ iterator : AsyncIterator < unknown > ,
2137+ exeContext : ExecutionContext ,
2138+ fieldNodes : ReadonlyArray < FieldNode > ,
2139+ info : GraphQLResolveInfo ,
2140+ itemType : GraphQLOutputType ,
2141+ asyncPayloadRecord : StreamRecord ,
2142+ itemPath : Path ,
2143+ ) : Promise < IteratorResult < unknown > > {
2144+ let item ;
2145+ try {
2146+ const { value, done } = await iterator . next ( ) ;
2147+ if ( done ) {
2148+ asyncPayloadRecord . setIsCompletedIterator ( ) ;
2149+ return { done, value : undefined } ;
2150+ }
2151+ item = value ;
2152+ } catch ( rawError ) {
2153+ const error = locatedError ( rawError , fieldNodes , pathToArray ( itemPath ) ) ;
2154+ const value = handleFieldError ( error , itemType , asyncPayloadRecord . errors ) ;
2155+ // don't continue if iterator throws
2156+ return { done : true , value } ;
2157+ }
2158+ let completedItem ;
2159+ try {
2160+ completedItem = completeValue (
2161+ exeContext ,
2162+ itemType ,
2163+ fieldNodes ,
2164+ info ,
2165+ itemPath ,
2166+ item ,
2167+ asyncPayloadRecord ,
2168+ ) ;
2169+
2170+ if ( isPromise ( completedItem ) ) {
2171+ completedItem = handleAsyncCompletionError (
2172+ completedItem ,
2173+ exeContext ,
2174+ itemType ,
2175+ fieldNodes ,
2176+ itemPath ,
2177+ asyncPayloadRecord ,
2178+ ) ;
2179+ }
2180+ return { done : false , value : completedItem } ;
2181+ } catch ( rawError ) {
2182+ const error = locatedError ( rawError , fieldNodes , pathToArray ( itemPath ) ) ;
2183+ const value = handleFieldError ( error , itemType , asyncPayloadRecord . errors ) ;
2184+ filterSubsequentPayloads ( exeContext , itemPath , asyncPayloadRecord ) ;
2185+ return { done : false , value } ;
2186+ }
2187+ }
2188+
21892189function filterSubsequentPayloads (
21902190 exeContext : ExecutionContext ,
21912191 nullPath : Path ,
0 commit comments