From b549dcb33b786c79b3d67f6824779424c986dd83 Mon Sep 17 00:00:00 2001 From: Yaacov Rydzinski Date: Mon, 5 Jun 2023 21:49:54 +0300 Subject: [PATCH] change function order this reorganization slightly reduces the diff when organizing later changes --- src/execution/IncrementalPublisher.ts | 128 +++++++++++++------------- 1 file changed, 64 insertions(+), 64 deletions(-) diff --git a/src/execution/IncrementalPublisher.ts b/src/execution/IncrementalPublisher.ts index 12be7121ed..081214c09d 100644 --- a/src/execution/IncrementalPublisher.ts +++ b/src/execution/IncrementalPublisher.ts @@ -85,70 +85,6 @@ export type FormattedIncrementalResult< | FormattedIncrementalDeferResult | FormattedIncrementalStreamResult; -export function filterSubsequentPayloads( - subsequentPayloads: Set, - 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, -): Array { - const incrementalResults: Array = []; - 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, ): AsyncGenerator { @@ -220,6 +156,70 @@ export function yieldSubsequentPayloads( }; } +function getCompletedIncrementalResults( + subsequentPayloads: Set, +): Array { + const incrementalResults: Array = []; + 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, + 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';