Skip to content

Commit 02f823a

Browse files
committed
add filtering again
1 parent e144e82 commit 02f823a

File tree

4 files changed

+268
-193
lines changed

4 files changed

+268
-193
lines changed

src/execution/IncrementalPublisher.ts

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -520,7 +520,7 @@ class IncrementalPublisher {
520520
);
521521
}
522522

523-
if (deferredGroupedFieldSetResult.incrementalDataRecords !== undefined) {
523+
if (deferredGroupedFieldSetResult.incrementalDataRecords) {
524524
this._addIncrementalDataRecords(
525525
deferredGroupedFieldSetResult.incrementalDataRecords,
526526
);
@@ -616,7 +616,7 @@ class IncrementalPublisher {
616616

617617
this._incremental.push(incrementalEntry);
618618

619-
if (streamItemsResult.incrementalDataRecords !== undefined) {
619+
if (streamItemsResult.incrementalDataRecords) {
620620
this._addIncrementalDataRecords(
621621
streamItemsResult.incrementalDataRecords,
622622
);
@@ -658,13 +658,13 @@ class IncrementalPublisher {
658658
}
659659
}
660660

661-
function isDeferredFragmentRecord(
661+
export function isDeferredFragmentRecord(
662662
subsequentResultRecord: SubsequentResultRecord,
663663
): subsequentResultRecord is DeferredFragmentRecord {
664664
return subsequentResultRecord instanceof DeferredFragmentRecord;
665665
}
666666

667-
function isDeferredGroupedFieldSetRecord(
667+
export function isDeferredGroupedFieldSetRecord(
668668
incrementalDataRecord: IncrementalDataRecord,
669669
): incrementalDataRecord is DeferredGroupedFieldSetRecord {
670670
return incrementalDataRecord instanceof DeferredGroupedFieldSetRecord;
@@ -673,7 +673,8 @@ function isDeferredGroupedFieldSetRecord(
673673
export interface IncrementalContext {
674674
deferUsageSet: DeferUsageSet | undefined;
675675
path: Path | undefined;
676-
errors?: Array<GraphQLError> | undefined;
676+
errors?: Map<Path | undefined, GraphQLError> | undefined;
677+
incrementalDataRecords?: Array<IncrementalDataRecord> | undefined;
677678
}
678679

679680
export type DeferredGroupedFieldSetResult =
@@ -690,7 +691,7 @@ interface ReconcilableDeferredGroupedFieldSetResult {
690691
deferredFragmentRecords: ReadonlyArray<DeferredFragmentRecord>;
691692
path: Array<string | number>;
692693
result: BareDeferredGroupedFieldSetResult;
693-
incrementalDataRecords: ReadonlyArray<IncrementalDataRecord> | undefined;
694+
incrementalDataRecords?: ReadonlyArray<IncrementalDataRecord> | undefined;
694695
sent?: true | undefined;
695696
}
696697

@@ -795,7 +796,7 @@ interface NonReconcilableStreamItemsResult {
795796
interface NonTerminatingStreamItemsResult {
796797
streamRecord: StreamRecord;
797798
result: BareStreamItemsResult;
798-
incrementalDataRecords: ReadonlyArray<IncrementalDataRecord> | undefined;
799+
incrementalDataRecords?: ReadonlyArray<IncrementalDataRecord> | undefined;
799800
}
800801

801802
interface TerminatingStreamItemsResult {
@@ -857,10 +858,10 @@ export class StreamItemsRecord {
857858
this.nextStreamItems !== undefined
858859
? {
859860
...result,
860-
incrementalDataRecords:
861-
result.incrementalDataRecords === undefined
862-
? [this.nextStreamItems]
863-
: [this.nextStreamItems, ...result.incrementalDataRecords],
861+
incrementalDataRecords: [
862+
this.nextStreamItems,
863+
...(result.incrementalDataRecords ?? []),
864+
],
864865
}
865866
: result;
866867
}

src/execution/__tests__/stream-test.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2096,14 +2096,23 @@ describe('Execute: stream directive', () => {
20962096
id: '2',
20972097
},
20982098
],
2099-
completed: [{ id: '2' }, { id: '1' }],
2100-
hasNext: false,
2099+
completed: [{ id: '2' }],
2100+
hasNext: true,
21012101
},
21022102
done: false,
21032103
});
21042104

21052105
const result5 = await iterator.next();
21062106
expectJSON(result5).toDeepEqual({
2107+
value: {
2108+
completed: [{ id: '1' }],
2109+
hasNext: false,
2110+
},
2111+
done: false,
2112+
});
2113+
2114+
const result6 = await iterator.next();
2115+
expectJSON(result6).toDeepEqual({
21072116
value: undefined,
21082117
done: true,
21092118
});

0 commit comments

Comments
 (0)