Skip to content

Commit eceeb4c

Browse files
committed
refactor(incremental): introduce StreamRecord type
1 parent 3bbbb08 commit eceeb4c

File tree

3 files changed

+24
-21
lines changed

3 files changed

+24
-21
lines changed

src/execution/IncrementalGraph.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import type {
77
IncrementalDataRecord,
88
IncrementalDataRecordResult,
99
ReconcilableDeferredGroupedFieldSetResult,
10+
StreamRecord,
1011
SubsequentResultRecord,
1112
} from './types.js';
1213
import { isDeferredGroupedFieldSetRecord } from './types.js';
@@ -27,11 +28,11 @@ function isDeferredFragmentNode(
2728

2829
function isStreamNode(
2930
subsequentResultNode: SubsequentResultNode,
30-
): subsequentResultNode is SubsequentResultRecord {
31+
): subsequentResultNode is StreamRecord {
3132
return 'path' in subsequentResultNode;
3233
}
3334

34-
type SubsequentResultNode = DeferredFragmentNode | SubsequentResultRecord;
35+
type SubsequentResultNode = DeferredFragmentNode | StreamRecord;
3536

3637
/**
3738
* @internal
@@ -215,7 +216,7 @@ export class IncrementalGraph {
215216
}
216217
}
217218

218-
removeStream(streamRecord: SubsequentResultRecord): void {
219+
removeStream(streamRecord: StreamRecord): void {
219220
this._removePending(streamRecord);
220221
}
221222

src/execution/execute.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ import type {
7070
IncrementalDataRecord,
7171
StreamItemsRecord,
7272
StreamItemsResult,
73-
SubsequentResultRecord,
73+
StreamRecord,
7474
} from './types.js';
7575
import { isReconcilableStreamItemsResult } from './types.js';
7676
import {
@@ -1094,12 +1094,12 @@ async function completeAsyncIteratorValue(
10941094
while (true) {
10951095
if (streamUsage && index >= streamUsage.initialCount) {
10961096
const returnFn = asyncIterator.return;
1097-
let streamRecord: SubsequentResultRecord | CancellableStreamRecord;
1097+
let streamRecord: StreamRecord | CancellableStreamRecord;
10981098
if (returnFn === undefined) {
10991099
streamRecord = {
11001100
label: streamUsage.label,
11011101
path,
1102-
} as SubsequentResultRecord;
1102+
} as StreamRecord;
11031103
} else {
11041104
streamRecord = {
11051105
label: streamUsage.label,
@@ -1266,7 +1266,7 @@ function completeIterableValue(
12661266
const item = iteration.value;
12671267

12681268
if (streamUsage && index >= streamUsage.initialCount) {
1269-
const streamRecord: SubsequentResultRecord = {
1269+
const streamRecord: StreamRecord = {
12701270
label: streamUsage.label,
12711271
path,
12721272
};
@@ -2212,7 +2212,7 @@ function getDeferredFragmentRecords(
22122212
}
22132213

22142214
function firstSyncStreamItems(
2215-
streamRecord: SubsequentResultRecord,
2215+
streamRecord: StreamRecord,
22162216
initialItem: PromiseOrValue<unknown>,
22172217
initialIndex: number,
22182218
iterator: Iterator<unknown>,
@@ -2315,7 +2315,7 @@ function prependNextResolvedStreamItems(
23152315
}
23162316

23172317
function firstAsyncStreamItems(
2318-
streamRecord: SubsequentResultRecord,
2318+
streamRecord: StreamRecord,
23192319
path: Path,
23202320
initialIndex: number,
23212321
asyncIterator: AsyncIterator<unknown>,
@@ -2341,7 +2341,7 @@ function firstAsyncStreamItems(
23412341
}
23422342

23432343
async function getNextAsyncStreamItemsResult(
2344-
streamRecord: SubsequentResultRecord,
2344+
streamRecord: StreamRecord,
23452345
path: Path,
23462346
index: number,
23472347
asyncIterator: AsyncIterator<unknown>,
@@ -2395,7 +2395,7 @@ async function getNextAsyncStreamItemsResult(
23952395
}
23962396

23972397
function completeStreamItems(
2398-
streamRecord: SubsequentResultRecord,
2398+
streamRecord: StreamRecord,
23992399
itemPath: Path,
24002400
item: unknown,
24012401
exeContext: ExecutionContext,
@@ -2495,7 +2495,7 @@ function completeStreamItems(
24952495

24962496
function buildStreamItemsResult(
24972497
errors: ReadonlyArray<GraphQLError> | undefined,
2498-
streamRecord: SubsequentResultRecord,
2498+
streamRecord: StreamRecord,
24992499
result: GraphQLWrappedResult<unknown>,
25002500
): StreamItemsResult {
25012501
return {

src/execution/types.ts

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -209,20 +209,22 @@ export interface DeferredGroupedFieldSetRecord {
209209
result: PromiseOrValue<DeferredGroupedFieldSetResult>;
210210
}
211211

212-
export interface SubsequentResultRecord {
212+
export type SubsequentResultRecord = DeferredFragmentRecord | StreamRecord;
213+
214+
export interface DeferredFragmentRecord {
213215
path: Path | undefined;
214216
label: string | undefined;
215217
id?: string | undefined;
218+
parent: DeferredFragmentRecord | undefined;
216219
}
217220

218-
export interface DeferredFragmentRecord extends SubsequentResultRecord {
219-
path: Path | undefined;
221+
export interface StreamRecord {
222+
path: Path;
220223
label: string | undefined;
221224
id?: string | undefined;
222-
parent: DeferredFragmentRecord | undefined;
223225
}
224226

225-
export interface CancellableStreamRecord extends SubsequentResultRecord {
227+
export interface CancellableStreamRecord extends StreamRecord {
226228
earlyReturn: () => Promise<unknown>;
227229
}
228230

@@ -233,7 +235,7 @@ export function isCancellableStreamRecord(
233235
}
234236

235237
interface ReconcilableStreamItemsResult {
236-
streamRecord: SubsequentResultRecord;
238+
streamRecord: StreamRecord;
237239
result: BareStreamItemsResult;
238240
incrementalDataRecords: ReadonlyArray<IncrementalDataRecord> | undefined;
239241
errors?: never;
@@ -246,14 +248,14 @@ export function isReconcilableStreamItemsResult(
246248
}
247249

248250
interface TerminatingStreamItemsResult {
249-
streamRecord: SubsequentResultRecord;
251+
streamRecord: StreamRecord;
250252
result?: never;
251253
incrementalDataRecords?: never;
252254
errors?: never;
253255
}
254256

255257
interface NonReconcilableStreamItemsResult {
256-
streamRecord: SubsequentResultRecord;
258+
streamRecord: StreamRecord;
257259
errors: ReadonlyArray<GraphQLError>;
258260
result?: never;
259261
}
@@ -264,7 +266,7 @@ export type StreamItemsResult =
264266
| NonReconcilableStreamItemsResult;
265267

266268
export interface StreamItemsRecord {
267-
streamRecord: SubsequentResultRecord;
269+
streamRecord: StreamRecord;
268270
result: PromiseOrValue<StreamItemsResult>;
269271
}
270272

0 commit comments

Comments
 (0)