'use strict' /** * @module */ /** * Utility function to merge two graphql queries together * This is basically copied from * [graphql-query-merge](https://www.npmjs.com/package/graphql-query-merge) * but can't use that due to incorrect packaging. * * @param {...object} queries queries to merge * @returns {object} merged query */ function mergeQueries(...queries) { const merged = { kind: 'Document', definitions: [ { directives: [], operation: 'query', variableDefinitions: [], kind: 'OperationDefinition', selectionSet: { kind: 'SelectionSet', selections: [] }, }, ], } queries.forEach(query => { const parsedQuery = query parsedQuery.definitions.forEach(definition => { merged.definitions[0].directives = [ ...merged.definitions[0].directives, ...definition.directives, ] merged.definitions[0].variableDefinitions = [ ...merged.definitions[0].variableDefinitions, ...definition.variableDefinitions, ] merged.definitions[0].selectionSet.selections = [ ...merged.definitions[0].selectionSet.selections, ...definition.selectionSet.selections, ] }) }) return merged } module.exports = { mergeQueries }