Skip to content

Commit 0d22625

Browse files
committed
deprecate streamPriority in favor of overall priority
deferPriority is for use with lookahead to match what's included in the FieldDetails array and overall priority is for... overall priority deferPriority gets reset along with the field details for a deferred stream group when initiating a stream
1 parent 1a4d602 commit 0d22625

File tree

6 files changed

+40
-34
lines changed

6 files changed

+40
-34
lines changed

src/execution/IncrementalPublisher.ts

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -705,23 +705,23 @@ function isStreamItemsRecord(
705705
export class InitialResultRecord {
706706
errors: Array<GraphQLError>;
707707
children: Set<SubsequentResultRecord>;
708+
priority: number;
708709
deferPriority: number;
709-
streamPriority: number;
710710
published: true;
711711
constructor() {
712712
this.errors = [];
713713
this.children = new Set();
714+
this.priority = 0;
714715
this.deferPriority = 0;
715-
this.streamPriority = 0;
716716
this.published = true;
717717
}
718718
}
719719

720720
/** @internal */
721721
export class DeferredGroupedFieldSetRecord {
722722
path: ReadonlyArray<string | number>;
723+
priority: number;
723724
deferPriority: number;
724-
streamPriority: number;
725725
deferredFragmentRecords: ReadonlyArray<DeferredFragmentRecord>;
726726
groupedFieldSet: GroupedFieldSet;
727727
shouldInitiateDefer: boolean;
@@ -733,15 +733,15 @@ export class DeferredGroupedFieldSetRecord {
733733

734734
constructor(opts: {
735735
path: Path | undefined;
736+
priority: number;
736737
deferPriority: number;
737-
streamPriority: number;
738738
deferredFragmentRecords: ReadonlyArray<DeferredFragmentRecord>;
739739
groupedFieldSet: GroupedFieldSet;
740740
shouldInitiateDefer: boolean;
741741
}) {
742742
this.path = pathToArray(opts.path);
743+
this.priority = opts.priority;
743744
this.deferPriority = opts.deferPriority;
744-
this.streamPriority = opts.streamPriority;
745745
this.deferredFragmentRecords = opts.deferredFragmentRecords;
746746
this.groupedFieldSet = opts.groupedFieldSet;
747747
this.shouldInitiateDefer = opts.shouldInitiateDefer;
@@ -805,8 +805,8 @@ export class StreamItemsRecord {
805805
errors: Array<GraphQLError>;
806806
streamRecord: StreamRecord;
807807
path: ReadonlyArray<string | number>;
808+
priority: number;
808809
deferPriority: number;
809-
streamPriority: number;
810810
items: Array<unknown>;
811811
children: Set<SubsequentResultRecord>;
812812
isFinalRecord?: boolean;
@@ -820,13 +820,12 @@ export class StreamItemsRecord {
820820
constructor(opts: {
821821
streamRecord: StreamRecord;
822822
path: Path | undefined;
823-
deferPriority: number;
824-
streamPriority: number;
823+
priority: number;
825824
}) {
826825
this.streamRecord = opts.streamRecord;
827826
this.path = pathToArray(opts.path);
828-
this.deferPriority = opts.deferPriority;
829-
this.streamPriority = opts.streamPriority;
827+
this.priority = opts.priority;
828+
this.deferPriority = 0;
830829
this.children = new Set();
831830
this.errors = [];
832831
this.isCompleted = false;

src/execution/__tests__/defer-test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ describe('Execute: defer directive', () => {
290290

291291
assert(fieldDetails !== undefined);
292292
expect(fieldDetails[0].node).to.equal(field);
293-
expect(fieldDetails[0].target?.priority).to.equal(1);
293+
expect(fieldDetails[0].target?.deferPriority).to.equal(1);
294294
expect(deferPriority).to.equal(1);
295295
expect(isPromise(published)).to.equal(true);
296296
expect(resumed).to.equal(true);
@@ -352,7 +352,7 @@ describe('Execute: defer directive', () => {
352352
expect(fieldDetails[0].node).to.equal(node1);
353353
expect(fieldDetails[0].target).to.equal(undefined);
354354
expect(fieldDetails[1].node).to.equal(node2);
355-
expect(fieldDetails[1].target?.priority).to.equal(1);
355+
expect(fieldDetails[1].target?.deferPriority).to.equal(1);
356356
expect(deferPriority).to.equal(0);
357357
expect(published).to.equal(true);
358358
});

src/execution/__tests__/executor-test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -223,8 +223,8 @@ describe('Execute: Handles basic execution tasks', () => {
223223
'rootValue',
224224
'operation',
225225
'variableValues',
226+
'priority',
226227
'deferPriority',
227-
'streamPriority',
228228
'published',
229229
);
230230

@@ -238,8 +238,8 @@ describe('Execute: Handles basic execution tasks', () => {
238238
schema,
239239
rootValue,
240240
operation,
241+
priority: 0,
241242
deferPriority: 0,
242-
streamPriority: 0,
243243
published: true,
244244
});
245245

src/execution/collectFields.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -211,14 +211,14 @@ function collectFieldsImpl(
211211
target = {
212212
...defer,
213213
ancestors: [parentTarget],
214-
priority: 1,
214+
deferPriority: 1,
215215
};
216216
newDeferUsages.push(target);
217217
} else {
218218
target = {
219219
...defer,
220220
ancestors: [parentTarget, ...parentTarget.ancestors],
221-
priority: parentTarget.priority + 1,
221+
deferPriority: parentTarget.deferPriority + 1,
222222
};
223223
newDeferUsages.push(target);
224224
}
@@ -260,14 +260,14 @@ function collectFieldsImpl(
260260
target = {
261261
...defer,
262262
ancestors: [parentTarget],
263-
priority: 1,
263+
deferPriority: 1,
264264
};
265265
newDeferUsages.push(target);
266266
} else {
267267
target = {
268268
...defer,
269269
ancestors: [parentTarget, ...parentTarget.ancestors],
270-
priority: parentTarget.priority + 1,
270+
deferPriority: parentTarget.deferPriority + 1,
271271
};
272272
newDeferUsages.push(target);
273273
}

src/execution/execute.ts

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -709,8 +709,8 @@ export function buildResolveInfo(
709709
rootValue: exeContext.rootValue,
710710
operation: exeContext.operation,
711711
variableValues: exeContext.variableValues,
712+
priority: 0,
712713
deferPriority: 0,
713-
streamPriority: 0,
714714
published: true,
715715
};
716716
}
@@ -726,8 +726,8 @@ export function buildResolveInfo(
726726
rootValue: exeContext.rootValue,
727727
operation: exeContext.operation,
728728
variableValues: exeContext.variableValues,
729+
priority: incrementalDataRecord.priority,
729730
deferPriority: incrementalDataRecord.deferPriority,
730-
streamPriority: incrementalDataRecord.streamPriority,
731731
published:
732732
incrementalDataRecord.published === true
733733
? true
@@ -1511,14 +1511,23 @@ function addNewDeferredGroupedFieldSets(
15111511
newGroupedFieldSetDeferUsages,
15121512
deferMap,
15131513
);
1514-
const deferredGroupedFieldSetRecord = new DeferredGroupedFieldSetRecord({
1515-
path,
1516-
deferPriority: incrementalDataRecord.deferPriority + 1,
1517-
streamPriority: incrementalDataRecord.streamPriority,
1518-
deferredFragmentRecords,
1519-
groupedFieldSet,
1520-
shouldInitiateDefer,
1521-
});
1514+
const deferredGroupedFieldSetRecord = shouldInitiateDefer
1515+
? new DeferredGroupedFieldSetRecord({
1516+
path,
1517+
priority: incrementalDataRecord.priority + 1,
1518+
deferPriority: incrementalDataRecord.deferPriority + 1,
1519+
deferredFragmentRecords,
1520+
groupedFieldSet,
1521+
shouldInitiateDefer: true,
1522+
})
1523+
: new DeferredGroupedFieldSetRecord({
1524+
path,
1525+
priority: incrementalDataRecord.priority,
1526+
deferPriority: incrementalDataRecord.deferPriority,
1527+
deferredFragmentRecords,
1528+
groupedFieldSet,
1529+
shouldInitiateDefer: false,
1530+
});
15221531
incrementalPublisher.reportNewDeferredGroupedFieldSetRecord(
15231532
deferredGroupedFieldSetRecord,
15241533
);
@@ -1982,8 +1991,7 @@ function executeStreamField(
19821991
const streamItemsRecord = new StreamItemsRecord({
19831992
streamRecord,
19841993
path: itemPath,
1985-
deferPriority: 0,
1986-
streamPriority: incrementalDataRecord.streamPriority + 1,
1994+
priority: incrementalDataRecord.priority + 1,
19871995
});
19881996
incrementalPublisher.reportNewStreamItemsRecord(
19891997
streamItemsRecord,
@@ -2176,8 +2184,7 @@ async function executeStreamAsyncIterator(
21762184
const streamItemsRecord = new StreamItemsRecord({
21772185
streamRecord,
21782186
path: itemPath,
2179-
deferPriority: 0,
2180-
streamPriority: incrementalDataRecord.streamPriority + 1,
2187+
priority: incrementalDataRecord.priority + 1,
21812188
});
21822189
incrementalPublisher.reportNewStreamItemsRecord(
21832190
streamItemsRecord,

src/type/definition.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -888,7 +888,7 @@ export type GraphQLFieldResolver<
888888
export interface DeferUsage {
889889
label: string | undefined;
890890
ancestors: ReadonlyArray<Target>;
891-
priority: number;
891+
deferPriority: number;
892892
}
893893

894894
export type Target = DeferUsage | undefined;
@@ -909,8 +909,8 @@ export interface GraphQLResolveInfo {
909909
readonly rootValue: unknown;
910910
readonly operation: OperationDefinitionNode;
911911
readonly variableValues: { [variable: string]: unknown };
912+
readonly priority: number;
912913
readonly deferPriority: number;
913-
readonly streamPriority: number;
914914
readonly published: true | Promise<void>;
915915
}
916916

0 commit comments

Comments
 (0)