'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.inlineFragmentOnNonCompositeErrorMessage = inlineFragmentOnNonCompositeErrorMessage; exports.fragmentOnNonCompositeErrorMessage = fragmentOnNonCompositeErrorMessage; exports.FragmentsOnCompositeTypes = FragmentsOnCompositeTypes; var _error = require('../../error'); var _printer = require('../../language/printer'); var _definition = require('../../type/definition'); var _typeFromAST = require('../../utilities/typeFromAST'); function inlineFragmentOnNonCompositeErrorMessage(type) { return 'Fragment cannot condition on non composite type "' + String(type) + '".'; } /** * 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 */ function fragmentOnNonCompositeErrorMessage(fragName, type) { return 'Fragment "' + fragName + '" cannot condition on non composite ' + ('type "' + String(type) + '".'); } /** * Fragments on composite type * * Fragments use a type condition to determine if they apply, since fragments * can only be spread into a composite type (object, interface, or union), the * type condition must also be a composite type. */ function FragmentsOnCompositeTypes(context) { return { InlineFragment: function InlineFragment(node) { var typeCondition = node.typeCondition; if (typeCondition) { var type = (0, _typeFromAST.typeFromAST)(context.getSchema(), typeCondition); if (type && !(0, _definition.isCompositeType)(type)) { context.reportError(new _error.GraphQLError(inlineFragmentOnNonCompositeErrorMessage((0, _printer.print)(typeCondition)), [typeCondition])); } } }, FragmentDefinition: function FragmentDefinition(node) { var type = (0, _typeFromAST.typeFromAST)(context.getSchema(), node.typeCondition); if (type && !(0, _definition.isCompositeType)(type)) { context.reportError(new _error.GraphQLError(fragmentOnNonCompositeErrorMessage(node.name.value, (0, _printer.print)(node.typeCondition)), [node.typeCondition])); } } }; }