123456789101112131415161718192021222324252627282930313233343536 |
- // @flow strict
- import { GraphQLError } from '../../error/GraphQLError';
- import type { ASTVisitor } from '../../language/visitor';
- import { Kind } from '../../language/kinds';
- import type { ASTValidationContext } from '../ValidationContext';
- /**
- * Lone anonymous operation
- *
- * A GraphQL document is only valid if when it contains an anonymous operation
- * (the query short-hand) that it contains only that one operation definition.
- */
- export function LoneAnonymousOperationRule(
- context: ASTValidationContext,
- ): ASTVisitor {
- let operationCount = 0;
- return {
- Document(node) {
- operationCount = node.definitions.filter(
- (definition) => definition.kind === Kind.OPERATION_DEFINITION,
- ).length;
- },
- OperationDefinition(node) {
- if (!node.name && operationCount > 1) {
- context.reportError(
- new GraphQLError(
- 'This anonymous operation must be the only defined operation.',
- node,
- ),
- );
- }
- },
- };
- }
|