UNPKG

@graphql-inspector/core

Version:

Tooling for GraphQL. Compare GraphQL Schemas, check documents, find breaking changes, find similar types.

27 lines (26 loc) 1.18 kB
import { Kind } from 'graphql'; import { compareLists } from '../utils/compare.js'; import { directiveUsageAdded, directiveUsageRemoved } from './changes/directive-usage.js'; import { fieldAdded, fieldRemoved } from './changes/field.js'; import { changesInField } from './field.js'; export function changesInInterface(oldInterface, newInterface, addChange) { compareLists(Object.values(oldInterface.getFields()), Object.values(newInterface.getFields()), { onAdded(field) { addChange(fieldAdded(newInterface, field)); }, onRemoved(field) { addChange(fieldRemoved(oldInterface, field)); }, onMutual(field) { changesInField(oldInterface, field.oldVersion, field.newVersion, addChange); }, }); compareLists(oldInterface.astNode?.directives || [], newInterface.astNode?.directives || [], { onAdded(directive) { addChange(directiveUsageAdded(Kind.INTERFACE_TYPE_DEFINITION, directive, newInterface)); }, onRemoved(directive) { addChange(directiveUsageRemoved(Kind.INTERFACE_TYPE_DEFINITION, directive, oldInterface)); }, }); }