@@ -47,12 +47,7 @@ type MutableGroupedFieldSet = Map<string, MutableFieldGroup>;
4747
4848export interface CollectFieldsResult {
4949 groupedFieldSet : GroupedFieldSet ;
50- deferUsages : Map < string | undefined , DeferUsage > ;
51- }
52-
53- interface MutableCollectFieldsResult {
54- groupedFieldSet : MutableGroupedFieldSet ;
55- deferUsages : Map < string | undefined , DeferUsage > ;
50+ deferUsages : ReadonlyArray < DeferUsage > ;
5651}
5752
5853/**
@@ -74,23 +69,22 @@ export function collectFields(
7469 const groupedFieldSet = new Map < string , MutableFieldGroup > ( ) ;
7570 const deferUsages = new Map < string | undefined , DeferUsage > ( ) ;
7671
77- const collectFieldsResult = {
78- groupedFieldSet,
79- deferUsages,
80- } ;
81-
8272 collectFieldsImpl (
8373 schema ,
8474 fragments ,
8575 variableValues ,
8676 operation ,
8777 runtimeType ,
8878 operation . selectionSet ,
89- collectFieldsResult ,
79+ groupedFieldSet ,
80+ deferUsages ,
9081 new Set ( ) ,
9182 ) ;
9283
93- return collectFieldsResult ;
84+ return {
85+ groupedFieldSet,
86+ deferUsages : Array . from ( deferUsages . values ( ) ) ,
87+ } ;
9488}
9589
9690/**
@@ -114,10 +108,6 @@ export function collectSubfields(
114108) : CollectFieldsResult {
115109 const subGroupedFieldSet = new Map < string , MutableFieldGroup > ( ) ;
116110 const deferUsages = new Map < string | undefined , DeferUsage > ( ) ;
117- const collectSubfieldsResult = {
118- groupedFieldSet : subGroupedFieldSet ,
119- deferUsages,
120- } ;
121111 const visitedFragmentNames = new Set < string > ( ) ;
122112
123113 for ( const [ deferUsage , fieldNodes ] of fieldGroup . fields ) {
@@ -130,15 +120,19 @@ export function collectSubfields(
130120 operation ,
131121 returnType ,
132122 node . selectionSet ,
133- collectSubfieldsResult ,
123+ subGroupedFieldSet ,
124+ deferUsages ,
134125 visitedFragmentNames ,
135126 deferUsage ,
136127 ) ;
137128 }
138129 }
139130 }
140131
141- return collectSubfieldsResult ;
132+ return {
133+ groupedFieldSet : subGroupedFieldSet ,
134+ deferUsages : Array . from ( deferUsages . values ( ) ) ,
135+ } ;
142136}
143137
144138// eslint-disable-next-line max-params
@@ -149,12 +143,12 @@ function collectFieldsImpl(
149143 operation : OperationDefinitionNode ,
150144 runtimeType : GraphQLObjectType ,
151145 selectionSet : SelectionSetNode ,
152- collectFieldsResult : MutableCollectFieldsResult ,
146+ groupedFieldSet : MutableGroupedFieldSet ,
147+ deferUsages : Map < string | undefined , DeferUsage > ,
153148 visitedFragmentNames : Set < string > ,
154149 parentDeferUsage ?: DeferUsage | undefined ,
155150 newDeferUsage ?: DeferUsage | undefined ,
156151) : void {
157- const { groupedFieldSet } = collectFieldsResult ;
158152 for ( const selection of selectionSet . selections ) {
159153 switch ( selection . kind ) {
160154 case Kind . FIELD : {
@@ -215,7 +209,8 @@ function collectFieldsImpl(
215209 operation ,
216210 runtimeType ,
217211 selection . selectionSet ,
218- collectFieldsResult ,
212+ groupedFieldSet ,
213+ deferUsages ,
219214 visitedFragmentNames ,
220215 parentDeferUsage ,
221216 newDeferUsage ,
@@ -230,7 +225,8 @@ function collectFieldsImpl(
230225 operation ,
231226 runtimeType ,
232227 selection . selectionSet ,
233- collectFieldsResult ,
228+ groupedFieldSet ,
229+ deferUsages ,
234230 visitedFragmentNames ,
235231 defer ,
236232 parentDeferUsage ,
@@ -266,7 +262,8 @@ function collectFieldsImpl(
266262 operation ,
267263 runtimeType ,
268264 fragment . selectionSet ,
269- collectFieldsResult ,
265+ groupedFieldSet ,
266+ deferUsages ,
270267 visitedFragmentNames ,
271268 parentDeferUsage ,
272269 newDeferUsage ,
@@ -281,7 +278,8 @@ function collectFieldsImpl(
281278 operation ,
282279 runtimeType ,
283280 fragment . selectionSet ,
284- collectFieldsResult ,
281+ groupedFieldSet ,
282+ deferUsages ,
285283 visitedFragmentNames ,
286284 defer ,
287285 parentDeferUsage ,
@@ -300,12 +298,12 @@ function collectDeferredFragmentFields(
300298 operation : OperationDefinitionNode ,
301299 runtimeType : GraphQLObjectType ,
302300 selectionSet : SelectionSetNode ,
303- collectFieldsResult : MutableCollectFieldsResult ,
301+ groupedFieldSet : MutableGroupedFieldSet ,
302+ deferUsages : Map < string | undefined , DeferUsage > ,
304303 visitedFragmentNames : Set < string > ,
305304 defer : { label : string | undefined } ,
306305 parentDeferUsage ?: DeferUsage | undefined ,
307306) : void {
308- const deferUsages = collectFieldsResult . deferUsages ;
309307 const existingNewDefer = deferUsages . get ( defer . label ) ;
310308 if ( existingNewDefer !== undefined ) {
311309 collectFieldsImpl (
@@ -315,7 +313,8 @@ function collectDeferredFragmentFields(
315313 operation ,
316314 runtimeType ,
317315 selectionSet ,
318- collectFieldsResult ,
316+ groupedFieldSet ,
317+ deferUsages ,
319318 visitedFragmentNames ,
320319 parentDeferUsage ,
321320 existingNewDefer ,
@@ -332,7 +331,8 @@ function collectDeferredFragmentFields(
332331 operation ,
333332 runtimeType ,
334333 selectionSet ,
335- collectFieldsResult ,
334+ groupedFieldSet ,
335+ deferUsages ,
336336 visitedFragmentNames ,
337337 parentDeferUsage ,
338338 newDefer ,
0 commit comments