'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.findDeprecatedUsages = findDeprecatedUsages; var _GraphQLError = require('../error/GraphQLError'); var _visitor = require('../language/visitor'); var _definition = require('../type/definition'); var _schema = require('../type/schema'); var _TypeInfo = require('./TypeInfo'); /** * A validation rule which reports deprecated usages. * * Returns a list of GraphQLError instances describing each deprecated use. */ function findDeprecatedUsages(schema, ast) { var errors = []; var typeInfo = new _TypeInfo.TypeInfo(schema); (0, _visitor.visit)(ast, (0, _visitor.visitWithTypeInfo)(typeInfo, { Field: function Field(node) { var fieldDef = typeInfo.getFieldDef(); if (fieldDef && fieldDef.isDeprecated) { var parentType = typeInfo.getParentType(); if (parentType) { var reason = fieldDef.deprecationReason; errors.push(new _GraphQLError.GraphQLError('The field ' + parentType.name + '.' + fieldDef.name + ' is deprecated.' + (reason ? ' ' + reason : ''), [node])); } } }, EnumValue: function EnumValue(node) { var enumVal = typeInfo.getEnumValue(); if (enumVal && enumVal.isDeprecated) { var type = (0, _definition.getNamedType)(typeInfo.getInputType()); if (type) { var reason = enumVal.deprecationReason; errors.push(new _GraphQLError.GraphQLError('The enum value ' + type.name + '.' + enumVal.name + ' is deprecated.' + (reason ? ' ' + reason : ''), [node])); } } } })); return errors; } /** * Copyright (c) 2015-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * strict */