@graphql-tools/utils
Version:
Common package containing utils and types for GraphQL tools
36 lines (35 loc) • 1.41 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.mergeIncrementalResult = void 0;
const merge_1 = require("dset/merge");
function mergeIncrementalResult({ incrementalResult, executionResult, }) {
if (incrementalResult.path) {
const path = ['data', ...incrementalResult.path];
executionResult.data = executionResult.data || {};
if (incrementalResult.items) {
for (const item of incrementalResult.items) {
(0, merge_1.dset)(executionResult, path, item);
}
}
if (incrementalResult.data) {
(0, merge_1.dset)(executionResult, ['data', ...incrementalResult.path], incrementalResult.data);
}
}
else if (incrementalResult.data) {
executionResult.data = executionResult.data || {};
Object.assign(executionResult.data, incrementalResult.data);
}
if (incrementalResult.errors) {
executionResult.errors = executionResult.errors || [];
executionResult.errors.push(...executionResult.errors);
}
if (incrementalResult.incremental) {
incrementalResult.incremental.forEach(incrementalSubResult => {
mergeIncrementalResult({
incrementalResult: incrementalSubResult,
executionResult,
});
});
}
}
exports.mergeIncrementalResult = mergeIncrementalResult;