Skip to content

Commit 6955592

Browse files
committed
add id and subPath to incremental results
1 parent 26c1d78 commit 6955592

File tree

4 files changed

+153
-107
lines changed

4 files changed

+153
-107
lines changed

src/execution/IncrementalPublisher.ts

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -566,7 +566,8 @@ export class IncrementalPublisher {
566566
}
567567
const incrementalResult: IncrementalStreamResult = {
568568
items: subsequentResultRecord.items,
569-
path: subsequentResultRecord.streamRecord.path,
569+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
570+
id: subsequentResultRecord.streamRecord.id!,
570571
};
571572
if (subsequentResultRecord.errors.length > 0) {
572573
incrementalResult.errors = subsequentResultRecord.errors;
@@ -583,11 +584,8 @@ export class IncrementalPublisher {
583584
for (const deferredGroupedFieldSetRecord of subsequentResultRecord.deferredGroupedFieldSetRecords) {
584585
if (!deferredGroupedFieldSetRecord.sent) {
585586
deferredGroupedFieldSetRecord.sent = true;
586-
const incrementalResult: IncrementalDeferResult = {
587-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
588-
data: deferredGroupedFieldSetRecord.data!,
589-
path: deferredGroupedFieldSetRecord.path,
590-
};
587+
const incrementalResult: IncrementalDeferResult =
588+
this._getIncrementalDeferResult(deferredGroupedFieldSetRecord);
591589
if (deferredGroupedFieldSetRecord.errors.length > 0) {
592590
incrementalResult.errors = deferredGroupedFieldSetRecord.errors;
593591
}
@@ -604,6 +602,40 @@ export class IncrementalPublisher {
604602
};
605603
}
606604

605+
private _getIncrementalDeferResult(
606+
deferredGroupedFieldSetRecord: DeferredGroupedFieldSetRecord,
607+
): IncrementalDeferResult {
608+
const { data, deferredFragmentRecords } = deferredGroupedFieldSetRecord;
609+
let maxLength = deferredFragmentRecords[0].path.length;
610+
let maxIndex = 0;
611+
for (let i = 1; i < deferredFragmentRecords.length; i++) {
612+
const deferredFragmentRecord = deferredFragmentRecords[i];
613+
const length = deferredFragmentRecord.path.length;
614+
if (length > maxLength) {
615+
maxLength = length;
616+
maxIndex = i;
617+
}
618+
}
619+
const recordWithLongestPath = deferredFragmentRecords[maxIndex];
620+
const longestPath = recordWithLongestPath.path;
621+
const subPath = deferredGroupedFieldSetRecord.path.slice(
622+
longestPath.length,
623+
);
624+
const id = recordWithLongestPath.id;
625+
const incrementalDeferResult: IncrementalDeferResult = {
626+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
627+
data: data!,
628+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
629+
id: id!,
630+
};
631+
632+
if (subPath.length > 0) {
633+
incrementalDeferResult.subPath = subPath;
634+
}
635+
636+
return incrementalDeferResult;
637+
}
638+
607639
private _completedRecordToResult(
608640
completedRecord: DeferredFragmentRecord | StreamRecord,
609641
): CompletedResult {

0 commit comments

Comments
 (0)