Skip to content

Commit

Permalink
change function order
Browse files Browse the repository at this point in the history
this reorganization slightly reduces the diff when organizing later changes
  • Loading branch information
yaacovCR committed Jun 6, 2023
1 parent d73864a commit b549dcb
Showing 1 changed file with 64 additions and 64 deletions.
128 changes: 64 additions & 64 deletions src/execution/IncrementalPublisher.ts
Original file line number Diff line number Diff line change
Expand Up @@ -85,70 +85,6 @@ export type FormattedIncrementalResult<
| FormattedIncrementalDeferResult<TData, TExtensions>
| FormattedIncrementalStreamResult<TData, TExtensions>;

export function filterSubsequentPayloads(
subsequentPayloads: Set<IncrementalDataRecord>,
nullPath: Path,
currentIncrementalDataRecord: IncrementalDataRecord | undefined,
): void {
const nullPathArray = pathToArray(nullPath);
subsequentPayloads.forEach((incrementalDataRecord) => {
if (incrementalDataRecord === currentIncrementalDataRecord) {
// don't remove payload from where error originates
return;
}
for (let i = 0; i < nullPathArray.length; i++) {
if (incrementalDataRecord.path[i] !== nullPathArray[i]) {
// incrementalDataRecord points to a path unaffected by this payload
return;
}
}
// incrementalDataRecord path points to nulled error field
if (
isStreamItemsRecord(incrementalDataRecord) &&
incrementalDataRecord.asyncIterator?.return
) {
incrementalDataRecord.asyncIterator.return().catch(() => {
// ignore error
});
}
subsequentPayloads.delete(incrementalDataRecord);
});
}

function getCompletedIncrementalResults(
subsequentPayloads: Set<IncrementalDataRecord>,
): Array<IncrementalResult> {
const incrementalResults: Array<IncrementalResult> = [];
for (const incrementalDataRecord of subsequentPayloads) {
const incrementalResult: IncrementalResult = {};
if (!incrementalDataRecord.isCompleted) {
continue;
}
subsequentPayloads.delete(incrementalDataRecord);
if (isStreamItemsRecord(incrementalDataRecord)) {
const items = incrementalDataRecord.items;
if (incrementalDataRecord.isCompletedAsyncIterator) {
// async iterable resolver just finished but there may be pending payloads
continue;
}
(incrementalResult as IncrementalStreamResult).items = items;
} else {
const data = incrementalDataRecord.data;
(incrementalResult as IncrementalDeferResult).data = data ?? null;
}

incrementalResult.path = incrementalDataRecord.path;
if (incrementalDataRecord.label != null) {
incrementalResult.label = incrementalDataRecord.label;
}
if (incrementalDataRecord.errors.length > 0) {
incrementalResult.errors = incrementalDataRecord.errors;
}
incrementalResults.push(incrementalResult);
}
return incrementalResults;
}

export function yieldSubsequentPayloads(
subsequentPayloads: Set<IncrementalDataRecord>,
): AsyncGenerator<SubsequentIncrementalExecutionResult, void, void> {
Expand Down Expand Up @@ -220,6 +156,70 @@ export function yieldSubsequentPayloads(
};
}

function getCompletedIncrementalResults(
subsequentPayloads: Set<IncrementalDataRecord>,
): Array<IncrementalResult> {
const incrementalResults: Array<IncrementalResult> = [];
for (const incrementalDataRecord of subsequentPayloads) {
const incrementalResult: IncrementalResult = {};
if (!incrementalDataRecord.isCompleted) {
continue;
}
subsequentPayloads.delete(incrementalDataRecord);
if (isStreamItemsRecord(incrementalDataRecord)) {
const items = incrementalDataRecord.items;
if (incrementalDataRecord.isCompletedAsyncIterator) {
// async iterable resolver just finished but there may be pending payloads
continue;
}
(incrementalResult as IncrementalStreamResult).items = items;
} else {
const data = incrementalDataRecord.data;
(incrementalResult as IncrementalDeferResult).data = data ?? null;
}

incrementalResult.path = incrementalDataRecord.path;
if (incrementalDataRecord.label != null) {
incrementalResult.label = incrementalDataRecord.label;
}
if (incrementalDataRecord.errors.length > 0) {
incrementalResult.errors = incrementalDataRecord.errors;
}
incrementalResults.push(incrementalResult);
}
return incrementalResults;
}

export function filterSubsequentPayloads(
subsequentPayloads: Set<IncrementalDataRecord>,
nullPath: Path,
currentIncrementalDataRecord: IncrementalDataRecord | undefined,
): void {
const nullPathArray = pathToArray(nullPath);
subsequentPayloads.forEach((incrementalDataRecord) => {
if (incrementalDataRecord === currentIncrementalDataRecord) {
// don't remove payload from where error originates
return;
}
for (let i = 0; i < nullPathArray.length; i++) {
if (incrementalDataRecord.path[i] !== nullPathArray[i]) {
// incrementalDataRecord points to a path unaffected by this payload
return;
}
}
// incrementalDataRecord path points to nulled error field
if (
isStreamItemsRecord(incrementalDataRecord) &&
incrementalDataRecord.asyncIterator?.return
) {
incrementalDataRecord.asyncIterator.return().catch(() => {
// ignore error
});
}
subsequentPayloads.delete(incrementalDataRecord);
});
}

/** @internal */
export class DeferredFragmentRecord {
type: 'defer';
Expand Down

0 comments on commit b549dcb

Please sign in to comment.