| import { GraphQLError } from '../../error/GraphQLError.mjs'; |
| import { Kind } from '../../language/kinds.mjs'; |
|
|
| /** |
| * 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. |
| * |
| * See https://spec.graphql.org/draft/#sec-Lone-Anonymous-Operation |
| */ |
| export function LoneAnonymousOperationRule(context) { |
| 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.', |
| { |
| nodes: node, |
| }, |
| ), |
| ); |
| } |
| }, |
| }; |
| } |