@@ -85,70 +85,6 @@ export type FormattedIncrementalResult<
8585 | FormattedIncrementalDeferResult < TData , TExtensions >
8686 | FormattedIncrementalStreamResult < TData , TExtensions > ;
8787
88- export function filterSubsequentPayloads (
89- subsequentPayloads : Set < IncrementalDataRecord > ,
90- nullPath : Path ,
91- currentIncrementalDataRecord : IncrementalDataRecord | undefined ,
92- ) : void {
93- const nullPathArray = pathToArray ( nullPath ) ;
94- subsequentPayloads . forEach ( ( incrementalDataRecord ) => {
95- if ( incrementalDataRecord === currentIncrementalDataRecord ) {
96- // don't remove payload from where error originates
97- return ;
98- }
99- for ( let i = 0 ; i < nullPathArray . length ; i ++ ) {
100- if ( incrementalDataRecord . path [ i ] !== nullPathArray [ i ] ) {
101- // incrementalDataRecord points to a path unaffected by this payload
102- return ;
103- }
104- }
105- // incrementalDataRecord path points to nulled error field
106- if (
107- isStreamItemsRecord ( incrementalDataRecord ) &&
108- incrementalDataRecord . asyncIterator ?. return
109- ) {
110- incrementalDataRecord . asyncIterator . return ( ) . catch ( ( ) => {
111- // ignore error
112- } ) ;
113- }
114- subsequentPayloads . delete ( incrementalDataRecord ) ;
115- } ) ;
116- }
117-
118- function getCompletedIncrementalResults (
119- subsequentPayloads : Set < IncrementalDataRecord > ,
120- ) : Array < IncrementalResult > {
121- const incrementalResults : Array < IncrementalResult > = [ ] ;
122- for ( const incrementalDataRecord of subsequentPayloads ) {
123- const incrementalResult : IncrementalResult = { } ;
124- if ( ! incrementalDataRecord . isCompleted ) {
125- continue ;
126- }
127- subsequentPayloads . delete ( incrementalDataRecord ) ;
128- if ( isStreamItemsRecord ( incrementalDataRecord ) ) {
129- const items = incrementalDataRecord . items ;
130- if ( incrementalDataRecord . isCompletedAsyncIterator ) {
131- // async iterable resolver just finished but there may be pending payloads
132- continue ;
133- }
134- ( incrementalResult as IncrementalStreamResult ) . items = items ;
135- } else {
136- const data = incrementalDataRecord . data ;
137- ( incrementalResult as IncrementalDeferResult ) . data = data ?? null ;
138- }
139-
140- incrementalResult . path = incrementalDataRecord . path ;
141- if ( incrementalDataRecord . label != null ) {
142- incrementalResult . label = incrementalDataRecord . label ;
143- }
144- if ( incrementalDataRecord . errors . length > 0 ) {
145- incrementalResult . errors = incrementalDataRecord . errors ;
146- }
147- incrementalResults . push ( incrementalResult ) ;
148- }
149- return incrementalResults ;
150- }
151-
15288export function yieldSubsequentPayloads (
15389 subsequentPayloads : Set < IncrementalDataRecord > ,
15490) : AsyncGenerator < SubsequentIncrementalExecutionResult , void , void > {
@@ -220,6 +156,70 @@ export function yieldSubsequentPayloads(
220156 } ;
221157}
222158
159+ function getCompletedIncrementalResults (
160+ subsequentPayloads : Set < IncrementalDataRecord > ,
161+ ) : Array < IncrementalResult > {
162+ const incrementalResults : Array < IncrementalResult > = [ ] ;
163+ for ( const incrementalDataRecord of subsequentPayloads ) {
164+ const incrementalResult : IncrementalResult = { } ;
165+ if ( ! incrementalDataRecord . isCompleted ) {
166+ continue ;
167+ }
168+ subsequentPayloads . delete ( incrementalDataRecord ) ;
169+ if ( isStreamItemsRecord ( incrementalDataRecord ) ) {
170+ const items = incrementalDataRecord . items ;
171+ if ( incrementalDataRecord . isCompletedAsyncIterator ) {
172+ // async iterable resolver just finished but there may be pending payloads
173+ continue ;
174+ }
175+ ( incrementalResult as IncrementalStreamResult ) . items = items ;
176+ } else {
177+ const data = incrementalDataRecord . data ;
178+ ( incrementalResult as IncrementalDeferResult ) . data = data ?? null ;
179+ }
180+
181+ incrementalResult . path = incrementalDataRecord . path ;
182+ if ( incrementalDataRecord . label != null ) {
183+ incrementalResult . label = incrementalDataRecord . label ;
184+ }
185+ if ( incrementalDataRecord . errors . length > 0 ) {
186+ incrementalResult . errors = incrementalDataRecord . errors ;
187+ }
188+ incrementalResults . push ( incrementalResult ) ;
189+ }
190+ return incrementalResults ;
191+ }
192+
193+ export function filterSubsequentPayloads (
194+ subsequentPayloads : Set < IncrementalDataRecord > ,
195+ nullPath : Path ,
196+ currentIncrementalDataRecord : IncrementalDataRecord | undefined ,
197+ ) : void {
198+ const nullPathArray = pathToArray ( nullPath ) ;
199+ subsequentPayloads . forEach ( ( incrementalDataRecord ) => {
200+ if ( incrementalDataRecord === currentIncrementalDataRecord ) {
201+ // don't remove payload from where error originates
202+ return ;
203+ }
204+ for ( let i = 0 ; i < nullPathArray . length ; i ++ ) {
205+ if ( incrementalDataRecord . path [ i ] !== nullPathArray [ i ] ) {
206+ // incrementalDataRecord points to a path unaffected by this payload
207+ return ;
208+ }
209+ }
210+ // incrementalDataRecord path points to nulled error field
211+ if (
212+ isStreamItemsRecord ( incrementalDataRecord ) &&
213+ incrementalDataRecord . asyncIterator ?. return
214+ ) {
215+ incrementalDataRecord . asyncIterator . return ( ) . catch ( ( ) => {
216+ // ignore error
217+ } ) ;
218+ }
219+ subsequentPayloads . delete ( incrementalDataRecord ) ;
220+ } ) ;
221+ }
222+
223223/** @internal */
224224export class DeferredFragmentRecord {
225225 type : 'defer' ;
0 commit comments