Automattic\WooCommerce\Vendor\GraphQL\Validator\Rules
UniqueDirectiveNames::getSDLVisitor
Method of the class: UniqueDirectiveNames{}
No Hooks.
Returns
null. Nothing (null).
Usage
$UniqueDirectiveNames = new UniqueDirectiveNames(); $UniqueDirectiveNames->getSDLVisitor( $context ): array;
- $context(SDLValidationContext) (required)
- .
UniqueDirectiveNames::getSDLVisitor() UniqueDirectiveNames::getSDLVisitor code WC 10.9.1
public function getSDLVisitor(SDLValidationContext $context): array
{
$schema = $context->getSchema();
/** @var array<string, NameNode> $knownDirectiveNames */
$knownDirectiveNames = [];
return [
NodeKind::DIRECTIVE_DEFINITION => static function ($node) use ($context, $schema, &$knownDirectiveNames): ?VisitorOperation {
$directiveName = $node->name->value;
if ($schema !== null && $schema->getDirective($directiveName) !== null) {
$context->reportError(
new Error(
'Directive "@' . $directiveName . '" already exists in the schema. It cannot be redefined.',
$node->name,
),
);
return null;
}
if (isset($knownDirectiveNames[$directiveName])) {
$context->reportError(
new Error(
'There can be only one directive named "@' . $directiveName . '".',
[
$knownDirectiveNames[$directiveName],
$node->name,
]
),
);
} else {
$knownDirectiveNames[$directiveName] = $node->name;
}
return Visitor::skipNode();
},
];
}