Automattic\WooCommerce\Vendor\GraphQL\Validator\Rules
UniqueTypeNames::getSDLVisitor
Метод класса: UniqueTypeNames{}
Хуков нет.
Возвращает
null. Ничего (null).
Использование
$UniqueTypeNames = new UniqueTypeNames(); $UniqueTypeNames->getSDLVisitor( $context ): array;
- $context(SDLValidationContext) (обязательный)
- .
Код UniqueTypeNames::getSDLVisitor() UniqueTypeNames::getSDLVisitor WC 11.0.1
public function getSDLVisitor(SDLValidationContext $context): array
{
$schema = $context->getSchema();
/** @var array<string, NameNode> $knownTypeNames */
$knownTypeNames = [];
$checkTypeName = static function ($node) use ($context, $schema, &$knownTypeNames): ?VisitorOperation {
$typeName = $node->name->value;
if ($schema !== null && $schema->getType($typeName) !== null) {
$context->reportError(
new Error(
"Type \"{$typeName}\" already exists in the schema. It cannot also be defined in this type definition.",
$node->name,
),
);
return null;
}
if (array_key_exists($typeName, $knownTypeNames)) {
$context->reportError(
new Error(
"There can be only one type named \"{$typeName}\".",
[
$knownTypeNames[$typeName],
$node->name,
]
),
);
} else {
$knownTypeNames[$typeName] = $node->name;
}
return Visitor::skipNode();
};
return [
NodeKind::SCALAR_TYPE_DEFINITION => $checkTypeName,
NodeKind::OBJECT_TYPE_DEFINITION => $checkTypeName,
NodeKind::INTERFACE_TYPE_DEFINITION => $checkTypeName,
NodeKind::UNION_TYPE_DEFINITION => $checkTypeName,
NodeKind::ENUM_TYPE_DEFINITION => $checkTypeName,
NodeKind::INPUT_OBJECT_TYPE_DEFINITION => $checkTypeName,
];
}