Skip to content

Commit 7df0bfc

Browse files
committed
collectFields does not need to return a map of labels
the labels were only checked to be unique (and only have to be unique) in combination with the path at which they are used execute was never using the keys, just the values
1 parent d48f3d4 commit 7df0bfc

2 files changed

Lines changed: 31 additions & 31 deletions

File tree

src/execution/collectFields.ts

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,7 @@ type MutableGroupedFieldSet = Map<string, MutableFieldGroup>;
4747

4848
export 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,

src/execution/execute.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -575,7 +575,7 @@ function executeOperation(
575575

576576
const deferredFragmentRecords: Array<DeferredFragmentRecord> = [];
577577
const newDefers = new Map<DeferUsage, DeferredFragmentRecord>();
578-
for (const deferUsage of deferUsages.values()) {
578+
for (const deferUsage of deferUsages) {
579579
const deferredFragmentRecord = new DeferredFragmentRecord({
580580
deferUsage,
581581
path,
@@ -1873,7 +1873,7 @@ function collectAndExecuteSubfields(
18731873

18741874
const deferredFragmentRecords: Array<DeferredFragmentRecord> = [];
18751875
const newDefers = new Map<DeferUsage, DeferredFragmentRecord>(deferMap);
1876-
for (const deferUsage of subDeferUsages.values()) {
1876+
for (const deferUsage of subDeferUsages) {
18771877
const deferredFragmentRecord = new DeferredFragmentRecord({
18781878
deferUsage,
18791879
path,

0 commit comments

Comments
 (0)