UNPKG

@graphql-tools/merge

Version:

A set of utils for faster development of GraphQL tools

37 lines (36 loc) 1.24 kB
import { compareNodes } from '@graphql-tools/utils'; import { mergeDirectives } from './directives.js'; export function mergeEnumValues(first, second, config, directives) { if (config?.consistentEnumMerge) { const reversed = []; if (first) { reversed.push(...first); } first = second; second = reversed; } const enumValueMap = new Map(); if (first) { for (const firstValue of first) { enumValueMap.set(firstValue.name.value, firstValue); } } if (second) { for (const secondValue of second) { const enumValue = secondValue.name.value; if (enumValueMap.has(enumValue)) { const firstValue = enumValueMap.get(enumValue); firstValue.description = secondValue.description || firstValue.description; firstValue.directives = mergeDirectives(secondValue.directives, firstValue.directives, directives); } else { enumValueMap.set(enumValue, secondValue); } } } const result = [...enumValueMap.values()]; if (config && config.sort) { result.sort(compareNodes); } return result; }