UNPKG

@graphql-inspector/core

Version:

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

58 lines (57 loc) 2.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.changesInEnum = changesInEnum; const graphql_1 = require("graphql"); const compare_js_1 = require("../utils/compare.js"); const directive_usage_js_1 = require("./changes/directive-usage.js"); const enum_js_1 = require("./changes/enum.js"); function changesInEnum(oldEnum, newEnum, addChange) { (0, compare_js_1.compareLists)(oldEnum.getValues(), newEnum.getValues(), { onAdded(value) { addChange((0, enum_js_1.enumValueAdded)(newEnum, value)); }, onRemoved(value) { addChange((0, enum_js_1.enumValueRemoved)(oldEnum, value)); }, onMutual(value) { const oldValue = value.oldVersion; const newValue = value.newVersion; if ((0, compare_js_1.isNotEqual)(oldValue.description, newValue.description)) { addChange((0, enum_js_1.enumValueDescriptionChanged)(newEnum, oldValue, newValue)); } if ((0, compare_js_1.isNotEqual)(oldValue.deprecationReason, newValue.deprecationReason)) { if ((0, compare_js_1.isVoid)(oldValue.deprecationReason)) { addChange((0, enum_js_1.enumValueDeprecationReasonAdded)(newEnum, oldValue, newValue)); } else if ((0, compare_js_1.isVoid)(newValue.deprecationReason)) { addChange((0, enum_js_1.enumValueDeprecationReasonRemoved)(newEnum, oldValue, newValue)); } else { addChange((0, enum_js_1.enumValueDeprecationReasonChanged)(newEnum, oldValue, newValue)); } } (0, compare_js_1.compareLists)(oldValue.astNode?.directives || [], newValue.astNode?.directives || [], { onAdded(directive) { addChange((0, directive_usage_js_1.directiveUsageAdded)(graphql_1.Kind.ENUM_VALUE_DEFINITION, directive, { type: newEnum, value: newValue, })); }, onRemoved(directive) { addChange((0, directive_usage_js_1.directiveUsageRemoved)(graphql_1.Kind.ENUM_VALUE_DEFINITION, directive, { type: oldEnum, value: oldValue, })); }, }); }, }); (0, compare_js_1.compareLists)(oldEnum.astNode?.directives || [], newEnum.astNode?.directives || [], { onAdded(directive) { addChange((0, directive_usage_js_1.directiveUsageAdded)(graphql_1.Kind.ENUM_TYPE_DEFINITION, directive, newEnum)); }, onRemoved(directive) { addChange((0, directive_usage_js_1.directiveUsageRemoved)(graphql_1.Kind.ENUM_TYPE_DEFINITION, directive, newEnum)); }, }); }