@@ -566,7 +566,8 @@ export class IncrementalPublisher {
566
566
}
567
567
const incrementalResult : IncrementalStreamResult = {
568
568
items : subsequentResultRecord . items ,
569
- path : subsequentResultRecord . streamRecord . path ,
569
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
570
+ id : subsequentResultRecord . streamRecord . id ! ,
570
571
} ;
571
572
if ( subsequentResultRecord . errors . length > 0 ) {
572
573
incrementalResult . errors = subsequentResultRecord . errors ;
@@ -583,11 +584,8 @@ export class IncrementalPublisher {
583
584
for ( const deferredGroupedFieldSetRecord of subsequentResultRecord . deferredGroupedFieldSetRecords ) {
584
585
if ( ! deferredGroupedFieldSetRecord . sent ) {
585
586
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 ) ;
591
589
if ( deferredGroupedFieldSetRecord . errors . length > 0 ) {
592
590
incrementalResult . errors = deferredGroupedFieldSetRecord . errors ;
593
591
}
@@ -604,6 +602,40 @@ export class IncrementalPublisher {
604
602
} ;
605
603
}
606
604
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
+
607
639
private _completedRecordToResult (
608
640
completedRecord : DeferredFragmentRecord | StreamRecord ,
609
641
) : CompletedResult {
0 commit comments