Automattic\WooCommerce\Vendor\GraphQL\Validator\Rules

NoUndefinedVariables::getVisitorpublicWC 1.0

Method of the class: NoUndefinedVariables{}

No Hooks.

Returns

null. Nothing (null).

Usage

$NoUndefinedVariables = new NoUndefinedVariables();
$NoUndefinedVariables->getVisitor( $context ): array;
$context(QueryValidationContext) (required)
.

NoUndefinedVariables::getVisitor() code WC 10.9.1

public function getVisitor(QueryValidationContext $context): array
{
    /** @var array<string, true> $variableNameDefined */
    $variableNameDefined = [];

    return [
        NodeKind::OPERATION_DEFINITION => [
            'enter' => static function () use (&$variableNameDefined): void {
                $variableNameDefined = [];
            },
            'leave' => static function (OperationDefinitionNode $operation) use (&$variableNameDefined, $context): void {
                $usages = $context->getRecursiveVariableUsages($operation);

                foreach ($usages as $usage) {
                    $node = $usage['node'];
                    $varName = $node->name->value;

                    if (! isset($variableNameDefined[$varName])) {
                        $context->reportError(new Error(
                            static::undefinedVarMessage(
                                $varName,
                                $operation->name !== null
                                    ? $operation->name->value
                                    : null
                            ),
                            [$node, $operation]
                        ));
                    }
                }
            },
        ],
        NodeKind::VARIABLE_DEFINITION => static function (VariableDefinitionNode $def) use (&$variableNameDefined): void {
            $variableNameDefined[$def->variable->name->value] = true;
        },
    ];
}