UNPKG

@graphql-inspector/action

Version:

GraphQL Inspector functionality for GitHub Actions

35 lines (34 loc) 1.77 kB
import { Kind, } from 'graphql'; import { compareDirectiveLists, isNotEqual } from '../utils/compare.js'; import { defaultValuesAreEqual } from '../utils/graphql.js'; import { fieldArgumentDefaultChanged, fieldArgumentDescriptionChanged, fieldArgumentTypeChanged, } from './changes/argument.js'; import { directiveUsageAdded, directiveUsageChanged, directiveUsageRemoved, } from './changes/directive-usage.js'; export function changesInArgument(type, field, oldArg, newArg, addChange) { if (isNotEqual(oldArg?.description, newArg.description)) { addChange(fieldArgumentDescriptionChanged(type, field, oldArg, newArg)); } if (!defaultValuesAreEqual(oldArg, newArg)) { addChange(fieldArgumentDefaultChanged(type, field, oldArg, newArg)); } if (isNotEqual(oldArg?.type.toString(), newArg.type.toString())) { addChange(fieldArgumentTypeChanged(type, field, oldArg, newArg)); } if (oldArg?.astNode?.directives || newArg.astNode?.directives) { compareDirectiveLists(oldArg?.astNode?.directives || [], newArg.astNode?.directives || [], { onAdded(directive) { addChange(directiveUsageAdded(Kind.ARGUMENT, directive, { argument: newArg, field, type, }, oldArg === null)); directiveUsageChanged(null, directive, addChange, type, field, newArg); }, onMutual(directive) { directiveUsageChanged(directive.oldVersion, directive.newVersion, addChange, type, field, newArg); }, onRemoved(directive) { addChange(directiveUsageRemoved(Kind.ARGUMENT, directive, { argument: oldArg, field, type })); }, }); } }