import cloneDeep from 'lodash/cloneDeep' const _includeFieldsRecursively = (selectionSet, includedFields) => { if (!selectionSet) return includedFields.forEach((includedField) => { selectionSet.selections.unshift({ kind: 'Field', name: { kind: 'Name', value: includedField } }) }) selectionSet.selections.forEach((selection) => { _includeFieldsRecursively(selection.selectionSet, includedFields) }) } const includeFieldsRecursively = (includedFields) => { return (resolve, root, args, context, resolveInfo) => { const copy = cloneDeep(resolveInfo) copy.fieldNodes.forEach((fieldNode) => { _includeFieldsRecursively(fieldNode.selectionSet, includedFields) }) return resolve(root, args, context, copy) } } export default { Query: includeFieldsRecursively(['id', 'disabled', 'deleted']), Mutation: includeFieldsRecursively(['id', 'disabled', 'deleted']) }