| 1 | function deepMerge(a, b) { |
| 2 | Object.keys(b).forEach(function (key) { |
| 3 | if (['fields', 'args'].indexOf(key) !== -1) return; |
| 4 | |
| 5 | if (a[key] && b[key] && typeof a[key] === 'object' && typeof b[key] === 'object') { |
| 6 | a[key] = deepMerge(a[key], b[key]); |
| 7 | } else { |
| 8 | a[key] = b[key]; |
| 9 | } |
| 10 | }); |
| 11 | |
| 12 | if (a.fields && b.fields) { |
| 13 | a.fields = deepMerge(a.fields, b.fields); |
| 14 | } else if (a.fields || b.fields) { |
| 15 | a.fields = a.fields || b.fields; |
| 16 | } |
| 17 | |
| 18 | return a; |
| 19 | } |
| 20 | |
| 21 | function hasFragments(info) { |
| 22 | return info.fragments && Object.keys(info.fragments).length > 0; |