diff options
Diffstat (limited to 'school/node_modules/graphql/validation/rules/LoneAnonymousOperationRule.js.flow')
-rw-r--r-- | school/node_modules/graphql/validation/rules/LoneAnonymousOperationRule.js.flow | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/school/node_modules/graphql/validation/rules/LoneAnonymousOperationRule.js.flow b/school/node_modules/graphql/validation/rules/LoneAnonymousOperationRule.js.flow new file mode 100644 index 0000000..e6370aa --- /dev/null +++ b/school/node_modules/graphql/validation/rules/LoneAnonymousOperationRule.js.flow @@ -0,0 +1,36 @@ +// @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, + ), + ); + } + }, + }; +} |