Automattic\WooCommerce\Vendor\GraphQL\Validator\Rules

LoneAnonymousOperation{}WC 1.0└─ ValidationRule

Lone anonymous operation.

A Automattic\WooCommerce\Vendor\GraphQL document is only valid if when it contains an anonymous operation (the query shorthand) that it contains only that one operation definition.

No Hooks.

Usage

$LoneAnonymousOperation = new LoneAnonymousOperation();
// use class methods

Methods

  1. public static anonOperationNotAloneMessage()
  2. public getVisitor(QueryValidationContext $context)

LoneAnonymousOperation{} code WC 10.9.1

class LoneAnonymousOperation extends ValidationRule
{
    public function getVisitor(QueryValidationContext $context): array
    {
        $operationCount = 0;

        return [
            NodeKind::DOCUMENT => static function (DocumentNode $node) use (&$operationCount): void {
                $operationCount = 0;
                foreach ($node->definitions as $definition) {
                    if ($definition instanceof OperationDefinitionNode) {
                        ++$operationCount;
                    }
                }
            },
            NodeKind::OPERATION_DEFINITION => static function (OperationDefinitionNode $node) use (&$operationCount, $context): void {
                if ($node->name !== null || $operationCount <= 1) {
                    return;
                }

                $context->reportError(
                    new Error(static::anonOperationNotAloneMessage(), [$node])
                );
            },
        ];
    }

    public static function anonOperationNotAloneMessage(): string
    {
        return 'This anonymous operation must be the only defined operation.';
    }
}