Automattic\WooCommerce\Vendor\GraphQL\Validator\Rules
QueryComplexity::getVisitor
Method of the class: QueryComplexity{}
No Hooks.
Returns
null. Nothing (null).
Usage
$QueryComplexity = new QueryComplexity(); $QueryComplexity->getVisitor( $context ): array;
- $context(QueryValidationContext) (required)
- .
QueryComplexity::getVisitor() QueryComplexity::getVisitor code WC 10.9.1
public function getVisitor(QueryValidationContext $context): array
{
$this->queryComplexity = 0;
$this->context = $context;
$this->variableDefs = new NodeList([]);
$this->fieldNodeAndDefs = new \ArrayObject();
return $this->invokeIfNeeded(
$context,
[
NodeKind::SELECTION_SET => function (SelectionSetNode $selectionSet) use ($context): void {
$this->fieldNodeAndDefs = $this->collectFieldASTsAndDefs(
$context,
$context->getParentType(),
$selectionSet,
null,
$this->fieldNodeAndDefs
);
},
NodeKind::VARIABLE_DEFINITION => function ($def): VisitorOperation {
$this->variableDefs[] = $def;
return Visitor::skipNode();
},
NodeKind::DOCUMENT => [
'leave' => function (DocumentNode $document) use ($context): void {
$errors = $context->getErrors();
if ($errors !== []) {
return;
}
if ($this->maxQueryComplexity === self::DISABLED) {
return;
}
foreach ($document->definitions as $definition) {
if (! $definition instanceof OperationDefinitionNode) {
continue;
}
$this->queryComplexity = $this->fieldComplexity($definition->selectionSet);
if ($this->queryComplexity > $this->maxQueryComplexity) {
$context->reportError(
new Error(static::maxQueryComplexityErrorMessage(
$this->maxQueryComplexity,
$this->queryComplexity
))
);
return;
}
}
},
],
]
);
}