Spaces:
Paused
Paused
| 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, | |
| }, | |
| ), | |
| ); | |
| } | |
| }, | |
| }; | |
| } | |