@@ -7,24 +7,21 @@ import type { GraphQLError } from '../error/GraphQLError.js';
7
7
8
8
import type {
9
9
DeferredFragmentRecord ,
10
- DeferredGroupedFieldSetRecord ,
10
+ DeliveryGroup ,
11
11
IncrementalDataRecord ,
12
12
IncrementalDataRecordResult ,
13
- ReconcilableDeferredGroupedFieldSetResult ,
13
+ PendingExecutionGroup ,
14
14
StreamItemRecord ,
15
15
StreamRecord ,
16
- SubsequentResultRecord ,
17
- } from './types.js' ;
18
- import {
19
- isDeferredFragmentRecord ,
20
- isDeferredGroupedFieldSetRecord ,
16
+ SuccessfulExecutionGroup ,
21
17
} from './types.js' ;
18
+ import { isDeferredFragmentRecord , isPendingExecutionGroup } from './types.js' ;
22
19
23
20
/**
24
21
* @internal
25
22
*/
26
23
export class IncrementalGraph {
27
- private _rootNodes : Set < SubsequentResultRecord > ;
24
+ private _rootNodes : Set < DeliveryGroup > ;
28
25
29
26
private _completedQueue : Array < IncrementalDataRecordResult > ;
30
27
private _nextQueue : Array <
@@ -39,8 +36,8 @@ export class IncrementalGraph {
39
36
40
37
getNewRootNodes (
41
38
incrementalDataRecords : ReadonlyArray < IncrementalDataRecord > ,
42
- ) : ReadonlyArray < SubsequentResultRecord > {
43
- const initialResultChildren = new Set < SubsequentResultRecord > ( ) ;
39
+ ) : ReadonlyArray < DeliveryGroup > {
40
+ const initialResultChildren = new Set < DeliveryGroup > ( ) ;
44
41
this . _addIncrementalDataRecords (
45
42
incrementalDataRecords ,
46
43
undefined ,
@@ -49,23 +46,25 @@ export class IncrementalGraph {
49
46
return this . _promoteNonEmptyToRoot ( initialResultChildren ) ;
50
47
}
51
48
52
- addCompletedReconcilableDeferredGroupedFieldSet (
53
- reconcilableResult : ReconcilableDeferredGroupedFieldSetResult ,
49
+ addCompletedSuccessfulExecutionGroup (
50
+ successfulExecutionGroup : SuccessfulExecutionGroup ,
54
51
) : void {
55
- for ( const deferredFragmentRecord of reconcilableResult
56
- . deferredGroupedFieldSetRecord . deferredFragmentRecords ) {
57
- deferredFragmentRecord . deferredGroupedFieldSetRecords . delete (
58
- reconcilableResult . deferredGroupedFieldSetRecord ,
52
+ for ( const deferredFragmentRecord of successfulExecutionGroup
53
+ . pendingExecutionGroup . deferredFragmentRecords ) {
54
+ deferredFragmentRecord . pendingExecutionGroups . delete (
55
+ successfulExecutionGroup . pendingExecutionGroup ,
56
+ ) ;
57
+ deferredFragmentRecord . successfulExecutionGroups . add (
58
+ successfulExecutionGroup ,
59
59
) ;
60
- deferredFragmentRecord . reconcilableResults . add ( reconcilableResult ) ;
61
60
}
62
61
63
- const incrementalDataRecords = reconcilableResult . incrementalDataRecords ;
62
+ const incrementalDataRecords =
63
+ successfulExecutionGroup . incrementalDataRecords ;
64
64
if ( incrementalDataRecords !== undefined ) {
65
65
this . _addIncrementalDataRecords (
66
66
incrementalDataRecords ,
67
- reconcilableResult . deferredGroupedFieldSetRecord
68
- . deferredFragmentRecords ,
67
+ successfulExecutionGroup . pendingExecutionGroup . deferredFragmentRecords ,
69
68
) ;
70
69
}
71
70
}
@@ -104,32 +103,32 @@ export class IncrementalGraph {
104
103
105
104
completeDeferredFragment ( deferredFragmentRecord : DeferredFragmentRecord ) :
106
105
| {
107
- newRootNodes : ReadonlyArray < SubsequentResultRecord > ;
108
- reconcilableResults : ReadonlyArray < ReconcilableDeferredGroupedFieldSetResult > ;
106
+ newRootNodes : ReadonlyArray < DeliveryGroup > ;
107
+ successfulExecutionGroups : ReadonlyArray < SuccessfulExecutionGroup > ;
109
108
}
110
109
| undefined {
111
110
if (
112
111
! this . _rootNodes . has ( deferredFragmentRecord ) ||
113
- deferredFragmentRecord . deferredGroupedFieldSetRecords . size > 0
112
+ deferredFragmentRecord . pendingExecutionGroups . size > 0
114
113
) {
115
114
return ;
116
115
}
117
- const reconcilableResults = Array . from (
118
- deferredFragmentRecord . reconcilableResults ,
116
+ const successfulExecutionGroups = Array . from (
117
+ deferredFragmentRecord . successfulExecutionGroups ,
119
118
) ;
120
119
this . _removeRootNode ( deferredFragmentRecord ) ;
121
- for ( const reconcilableResult of reconcilableResults ) {
122
- for ( const otherDeferredFragmentRecord of reconcilableResult
123
- . deferredGroupedFieldSetRecord . deferredFragmentRecords ) {
124
- otherDeferredFragmentRecord . reconcilableResults . delete (
125
- reconcilableResult ,
120
+ for ( const successfulExecutionGroup of successfulExecutionGroups ) {
121
+ for ( const otherDeferredFragmentRecord of successfulExecutionGroup
122
+ . pendingExecutionGroup . deferredFragmentRecords ) {
123
+ otherDeferredFragmentRecord . successfulExecutionGroups . delete (
124
+ successfulExecutionGroup ,
126
125
) ;
127
126
}
128
127
}
129
128
const newRootNodes = this . _promoteNonEmptyToRoot (
130
129
deferredFragmentRecord . children ,
131
130
) ;
132
- return { newRootNodes, reconcilableResults } ;
131
+ return { newRootNodes, successfulExecutionGroups } ;
133
132
}
134
133
135
134
removeDeferredFragment (
@@ -146,30 +145,28 @@ export class IncrementalGraph {
146
145
this . _removeRootNode ( streamRecord ) ;
147
146
}
148
147
149
- private _removeRootNode (
150
- subsequentResultRecord : SubsequentResultRecord ,
151
- ) : void {
152
- this . _rootNodes . delete ( subsequentResultRecord ) ;
148
+ private _removeRootNode ( deliveryGroup : DeliveryGroup ) : void {
149
+ this . _rootNodes . delete ( deliveryGroup ) ;
153
150
}
154
151
155
152
private _addIncrementalDataRecords (
156
153
incrementalDataRecords : ReadonlyArray < IncrementalDataRecord > ,
157
154
parents : ReadonlyArray < DeferredFragmentRecord > | undefined ,
158
- initialResultChildren ?: Set < SubsequentResultRecord > | undefined ,
155
+ initialResultChildren ?: Set < DeliveryGroup > | undefined ,
159
156
) : void {
160
157
for ( const incrementalDataRecord of incrementalDataRecords ) {
161
- if ( isDeferredGroupedFieldSetRecord ( incrementalDataRecord ) ) {
158
+ if ( isPendingExecutionGroup ( incrementalDataRecord ) ) {
162
159
for ( const deferredFragmentRecord of incrementalDataRecord . deferredFragmentRecords ) {
163
160
this . _addDeferredFragment (
164
161
deferredFragmentRecord ,
165
162
initialResultChildren ,
166
163
) ;
167
- deferredFragmentRecord . deferredGroupedFieldSetRecords . add (
164
+ deferredFragmentRecord . pendingExecutionGroups . add (
168
165
incrementalDataRecord ,
169
166
) ;
170
167
}
171
168
if ( this . _completesRootNode ( incrementalDataRecord ) ) {
172
- this . _onDeferredGroupedFieldSet ( incrementalDataRecord ) ;
169
+ this . _onExecutionGroup ( incrementalDataRecord ) ;
173
170
}
174
171
} else if ( parents === undefined ) {
175
172
invariant ( initialResultChildren !== undefined ) ;
@@ -184,15 +181,15 @@ export class IncrementalGraph {
184
181
}
185
182
186
183
private _promoteNonEmptyToRoot (
187
- maybeEmptyNewRootNodes : Set < SubsequentResultRecord > ,
188
- ) : ReadonlyArray < SubsequentResultRecord > {
189
- const newRootNodes : Array < SubsequentResultRecord > = [ ] ;
184
+ maybeEmptyNewRootNodes : Set < DeliveryGroup > ,
185
+ ) : ReadonlyArray < DeliveryGroup > {
186
+ const newRootNodes : Array < DeliveryGroup > = [ ] ;
190
187
for ( const node of maybeEmptyNewRootNodes ) {
191
188
if ( isDeferredFragmentRecord ( node ) ) {
192
- if ( node . deferredGroupedFieldSetRecords . size > 0 ) {
193
- for ( const deferredGroupedFieldSetRecord of node . deferredGroupedFieldSetRecords ) {
194
- if ( ! this . _completesRootNode ( deferredGroupedFieldSetRecord ) ) {
195
- this . _onDeferredGroupedFieldSet ( deferredGroupedFieldSetRecord ) ;
189
+ if ( node . pendingExecutionGroups . size > 0 ) {
190
+ for ( const pendingExecutionGroup of node . pendingExecutionGroups ) {
191
+ if ( ! this . _completesRootNode ( pendingExecutionGroup ) ) {
192
+ this . _onExecutionGroup ( pendingExecutionGroup ) ;
196
193
}
197
194
}
198
195
this . _rootNodes . add ( node ) ;
@@ -214,16 +211,16 @@ export class IncrementalGraph {
214
211
}
215
212
216
213
private _completesRootNode (
217
- deferredGroupedFieldSetRecord : DeferredGroupedFieldSetRecord ,
214
+ pendingExecutionGroup : PendingExecutionGroup ,
218
215
) : boolean {
219
- return deferredGroupedFieldSetRecord . deferredFragmentRecords . some (
216
+ return pendingExecutionGroup . deferredFragmentRecords . some (
220
217
( deferredFragmentRecord ) => this . _rootNodes . has ( deferredFragmentRecord ) ,
221
218
) ;
222
219
}
223
220
224
221
private _addDeferredFragment (
225
222
deferredFragmentRecord : DeferredFragmentRecord ,
226
- initialResultChildren : Set < SubsequentResultRecord > | undefined ,
223
+ initialResultChildren : Set < DeliveryGroup > | undefined ,
227
224
) : void {
228
225
if ( this . _rootNodes . has ( deferredFragmentRecord ) ) {
229
226
return ;
@@ -238,14 +235,14 @@ export class IncrementalGraph {
238
235
this . _addDeferredFragment ( parent , initialResultChildren ) ;
239
236
}
240
237
241
- private _onDeferredGroupedFieldSet (
242
- deferredGroupedFieldSetRecord : DeferredGroupedFieldSetRecord ,
238
+ private _onExecutionGroup (
239
+ pendingExecutionGroup : PendingExecutionGroup ,
243
240
) : void {
244
- let deferredGroupedFieldSetResult = deferredGroupedFieldSetRecord . result ;
245
- if ( ! ( deferredGroupedFieldSetResult instanceof BoxedPromiseOrValue ) ) {
246
- deferredGroupedFieldSetResult = deferredGroupedFieldSetResult ( ) ;
241
+ let completedExecutionGroup = pendingExecutionGroup . result ;
242
+ if ( ! ( completedExecutionGroup instanceof BoxedPromiseOrValue ) ) {
243
+ completedExecutionGroup = completedExecutionGroup ( ) ;
247
244
}
248
- const value = deferredGroupedFieldSetResult . value ;
245
+ const value = completedExecutionGroup . value ;
249
246
if ( isPromise ( value ) ) {
250
247
// eslint-disable-next-line @typescript-eslint/no-floating-promises
251
248
value . then ( ( resolved ) => this . _enqueue ( resolved ) ) ;
0 commit comments