12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- 'use strict';
- Object.defineProperty(exports, '__esModule', {
- value: true,
- });
- exports.ExecutableDefinitionsRule = ExecutableDefinitionsRule;
- var _GraphQLError = require('../../error/GraphQLError.js');
- var _kinds = require('../../language/kinds.js');
- var _predicates = require('../../language/predicates.js');
- /**
- * Executable definitions
- *
- * A GraphQL document is only valid for execution if all definitions are either
- * operation or fragment definitions.
- *
- * See https://spec.graphql.org/draft/#sec-Executable-Definitions
- */
- function ExecutableDefinitionsRule(context) {
- return {
- Document(node) {
- for (const definition of node.definitions) {
- if (!(0, _predicates.isExecutableDefinitionNode)(definition)) {
- const defName =
- definition.kind === _kinds.Kind.SCHEMA_DEFINITION ||
- definition.kind === _kinds.Kind.SCHEMA_EXTENSION
- ? 'schema'
- : '"' + definition.name.value + '"';
- context.reportError(
- new _GraphQLError.GraphQLError(
- `The ${defName} definition is not executable.`,
- {
- nodes: definition,
- },
- ),
- );
- }
- }
- return false;
- },
- };
- }
|