@@ -30,24 +30,23 @@ import { getDirectiveValues } from './values.js';
30
30
31
31
export interface DeferUsage {
32
32
label : string | undefined ;
33
- ancestors : ReadonlyArray < DeferUsage | undefined > ;
33
+ ancestors : ReadonlyArray < Target > ;
34
34
}
35
35
36
- export const NON_DEFERRED_SET = new OrderedSet < DeferUsage | undefined > ( [
37
- undefined ,
38
- ] ) . freeze ( ) ;
36
+ export const NON_DEFERRED_SET = new OrderedSet < Target > ( [ undefined ] ) . freeze ( ) ;
39
37
40
38
export type Target = DeferUsage | undefined ;
41
39
export type TargetSet = ReadonlyOrderedSet < Target > ;
42
40
43
41
export interface FieldGroup {
44
42
fieldName : string ;
45
- fields : Map < DeferUsage | undefined , ReadonlyArray < FieldNode > > ;
43
+ fields : Map < Target , ReadonlyArray < FieldNode > > ;
46
44
targets : TargetSet ;
47
45
}
46
+
48
47
interface MutableFieldGroup {
49
48
fieldName : string ;
50
- fields : AccumulatorMap < DeferUsage | undefined , FieldNode > ;
49
+ fields : AccumulatorMap < Target , FieldNode > ;
51
50
}
52
51
53
52
export type GroupedFieldSet = Map < string , FieldGroup > ;
@@ -123,7 +122,7 @@ export function collectSubfields(
123
122
const deferUsages = new Map < string | undefined , DeferUsage > ( ) ;
124
123
const visitedFragmentNames = new Set < string > ( ) ;
125
124
126
- for ( const [ deferUsage , fieldNodes ] of fieldGroup . fields ) {
125
+ for ( const [ target , fieldNodes ] of fieldGroup . fields ) {
127
126
for ( const node of fieldNodes ) {
128
127
if ( node . selectionSet ) {
129
128
collectFieldsImpl (
@@ -136,7 +135,7 @@ export function collectSubfields(
136
135
subGroupedFieldSet ,
137
136
deferUsages ,
138
137
visitedFragmentNames ,
139
- deferUsage ,
138
+ target ,
140
139
) ;
141
140
}
142
141
}
@@ -150,7 +149,7 @@ export function collectSubfields(
150
149
151
150
function buildGroupedFieldSets (
152
151
originalGroupedFieldSet : MutableGroupedFieldSet ,
153
- parentDeferUsages = NON_DEFERRED_SET ,
152
+ parentTargets = NON_DEFERRED_SET ,
154
153
) : {
155
154
groupedFieldSet : GroupedFieldSet ;
156
155
newGroupedFieldSets : Map <
@@ -165,21 +164,19 @@ function buildGroupedFieldSets(
165
164
> ( ) ;
166
165
167
166
for ( const [ key , fieldGroup ] of originalGroupedFieldSet ) {
168
- const nonMaskedDeferUsageList : Array < DeferUsage | undefined > = [ ] ;
167
+ const nonMaskedTargetList : Array < Target > = [ ] ;
169
168
const originalTargetSet = new Set ( fieldGroup . fields . keys ( ) ) ;
170
- for ( const [ deferUsage ] of fieldGroup . fields ) {
169
+ for ( const [ target ] of fieldGroup . fields ) {
171
170
if (
172
- deferUsage === undefined ||
173
- deferUsage . ancestors . every (
174
- ( ancestor ) => ! originalTargetSet . has ( ancestor ) ,
175
- )
171
+ target === undefined ||
172
+ target . ancestors . every ( ( ancestor ) => ! originalTargetSet . has ( ancestor ) )
176
173
) {
177
- nonMaskedDeferUsageList . push ( deferUsage ) ;
174
+ nonMaskedTargetList . push ( target ) ;
178
175
}
179
176
}
180
177
181
- const newTargetSet = new OrderedSet ( nonMaskedDeferUsageList ) . freeze ( ) ;
182
- if ( newTargetSet === parentDeferUsages ) {
178
+ const newTargetSet = new OrderedSet ( nonMaskedTargetList ) . freeze ( ) ;
179
+ if ( newTargetSet === parentTargets ) {
183
180
groupedFieldSet . set ( key , {
184
181
...fieldGroup ,
185
182
targets : newTargetSet ,
@@ -190,8 +187,8 @@ function buildGroupedFieldSets(
190
187
let newGroupedFieldSet =
191
188
newGroupedFieldSets . get ( newTargetSet ) ?. groupedFieldSet ;
192
189
if ( newGroupedFieldSet === undefined ) {
193
- const shouldInitiateDefer = nonMaskedDeferUsageList . some (
194
- ( deferUsage ) => ! parentDeferUsages . has ( deferUsage ) ,
190
+ const shouldInitiateDefer = nonMaskedTargetList . some (
191
+ ( target ) => ! parentTargets . has ( target ) ,
195
192
) ;
196
193
newGroupedFieldSet = new Map ( ) ;
197
194
newGroupedFieldSets . set ( newTargetSet , {
@@ -222,8 +219,8 @@ function collectFieldsImpl(
222
219
groupedFieldSet : MutableGroupedFieldSet ,
223
220
deferUsages : Map < string | undefined , DeferUsage > ,
224
221
visitedFragmentNames : Set < string > ,
225
- parentDeferUsage ?: DeferUsage | undefined ,
226
- newDeferUsage ?: DeferUsage | undefined ,
222
+ parentTarget ?: Target ,
223
+ newTarget ?: Target ,
227
224
) : void {
228
225
for ( const selection of selectionSet . selections ) {
229
226
switch ( selection . kind ) {
@@ -234,14 +231,11 @@ function collectFieldsImpl(
234
231
const key = getFieldEntryKey ( selection ) ;
235
232
const fieldGroup = groupedFieldSet . get ( key ) ;
236
233
if ( fieldGroup ) {
237
- fieldGroup . fields . add ( newDeferUsage ?? parentDeferUsage , selection ) ;
234
+ fieldGroup . fields . add ( newTarget ?? parentTarget , selection ) ;
238
235
} else {
239
- const fields = new AccumulatorMap <
240
- DeferUsage | undefined ,
241
- FieldNode
242
- > ( ) ;
236
+ const fields = new AccumulatorMap < Target , FieldNode > ( ) ;
243
237
244
- fields . add ( newDeferUsage ?? parentDeferUsage , selection ) ;
238
+ fields . add ( newTarget ?? parentTarget , selection ) ;
245
239
246
240
groupedFieldSet . set ( key , {
247
241
fieldName : selection . name . value ,
@@ -271,8 +265,8 @@ function collectFieldsImpl(
271
265
groupedFieldSet ,
272
266
deferUsages ,
273
267
visitedFragmentNames ,
274
- parentDeferUsage ,
275
- newDeferUsage ,
268
+ parentTarget ,
269
+ newTarget ,
276
270
) ;
277
271
break ;
278
272
}
@@ -288,7 +282,7 @@ function collectFieldsImpl(
288
282
deferUsages ,
289
283
visitedFragmentNames ,
290
284
defer ,
291
- parentDeferUsage ,
285
+ parentTarget ,
292
286
) ;
293
287
break ;
294
288
}
@@ -324,8 +318,8 @@ function collectFieldsImpl(
324
318
groupedFieldSet ,
325
319
deferUsages ,
326
320
visitedFragmentNames ,
327
- parentDeferUsage ,
328
- newDeferUsage ,
321
+ parentTarget ,
322
+ newTarget ,
329
323
) ;
330
324
break ;
331
325
}
@@ -341,7 +335,7 @@ function collectFieldsImpl(
341
335
deferUsages ,
342
336
visitedFragmentNames ,
343
337
defer ,
344
- parentDeferUsage ,
338
+ parentTarget ,
345
339
) ;
346
340
break ;
347
341
}
@@ -361,7 +355,7 @@ function collectDeferredFragmentFields(
361
355
deferUsages : Map < string | undefined , DeferUsage > ,
362
356
visitedFragmentNames : Set < string > ,
363
357
defer : { label : string | undefined } ,
364
- parentDeferUsage ?: DeferUsage | undefined ,
358
+ parentTarget ?: Target ,
365
359
) : void {
366
360
const existingNewDefer = deferUsages . get ( defer . label ) ;
367
361
if ( existingNewDefer !== undefined ) {
@@ -375,16 +369,16 @@ function collectDeferredFragmentFields(
375
369
groupedFieldSet ,
376
370
deferUsages ,
377
371
visitedFragmentNames ,
378
- parentDeferUsage ,
372
+ parentTarget ,
379
373
existingNewDefer ,
380
374
) ;
381
375
return ;
382
376
}
383
377
384
378
const ancestors =
385
- parentDeferUsage === undefined
386
- ? [ parentDeferUsage ]
387
- : [ ...parentDeferUsage . ancestors , parentDeferUsage ] ;
379
+ parentTarget === undefined
380
+ ? [ parentTarget ]
381
+ : [ ...parentTarget . ancestors , parentTarget ] ;
388
382
const newDefer : DeferUsage = { ...defer , ancestors } ;
389
383
deferUsages . set ( defer . label , newDefer ) ;
390
384
collectFieldsImpl (
@@ -397,7 +391,7 @@ function collectDeferredFragmentFields(
397
391
groupedFieldSet ,
398
392
deferUsages ,
399
393
visitedFragmentNames ,
400
- parentDeferUsage ,
394
+ parentTarget ,
401
395
newDefer ,
402
396
) ;
403
397
}
0 commit comments