UNPKG

1.14 kBJavaScriptView Raw
1import { dset } from 'dset/merge';
2export function mergeIncrementalResult({ incrementalResult, executionResult, }) {
3 const path = ['data', ...(incrementalResult.path ?? [])];
4 if (incrementalResult.items) {
5 for (const item of incrementalResult.items) {
6 dset(executionResult, path, item);
7 // Increment the last path segment (the array index) to merge the next item at the next index
8 path[path.length - 1]++;
9 }
10 }
11 if (incrementalResult.data) {
12 dset(executionResult, path, incrementalResult.data);
13 }
14 if (incrementalResult.errors) {
15 executionResult.errors = executionResult.errors || [];
16 executionResult.errors.push(...incrementalResult.errors);
17 }
18 if (incrementalResult.extensions) {
19 dset(executionResult, 'extensions', incrementalResult.extensions);
20 }
21 if (incrementalResult.incremental) {
22 incrementalResult.incremental.forEach(incrementalSubResult => {
23 mergeIncrementalResult({
24 incrementalResult: incrementalSubResult,
25 executionResult,
26 });
27 });
28 }
29}