"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.nonExecutableDefinitionMessage = nonExecutableDefinitionMessage; exports.ExecutableDefinitions = ExecutableDefinitions; var _GraphQLError = require("../../error/GraphQLError"); var _kinds = require("../../language/kinds"); var _predicates = require("../../language/predicates"); /** * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * */ function nonExecutableDefinitionMessage(defName) { return "The ".concat(defName, " definition is not executable."); } /** * Executable definitions * * A GraphQL document is only valid for execution if all definitions are either * operation or fragment definitions. */ function ExecutableDefinitions(context) { return { Document: function Document(node) { var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = node.definitions[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var definition = _step.value; if (!(0, _predicates.isExecutableDefinitionNode)(definition)) { context.reportError(new _GraphQLError.GraphQLError(nonExecutableDefinitionMessage(definition.kind === _kinds.Kind.SCHEMA_DEFINITION || definition.kind === _kinds.Kind.SCHEMA_EXTENSION ? 'schema' : definition.name.value), definition)); } } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return != null) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } return false; } }; }