@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
JavaScript
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));
},
});
}