Automattic\WooCommerce\Vendor\GraphQL\Validator\Rules
KnownTypeNames::getASTVisitor
Method of the class: KnownTypeNames{}
No Hooks.
Returns
null. Nothing (null).
Usage
$KnownTypeNames = new KnownTypeNames(); $KnownTypeNames->getASTVisitor( $context ): array;
- $context(ValidationContext) (required)
- .
KnownTypeNames::getASTVisitor() KnownTypeNames::getASTVisitor code WC 10.9.1
public function getASTVisitor(ValidationContext $context): array
{
/** @var array<int, string> $definedTypes */
$definedTypes = [];
foreach ($context->getDocument()->definitions as $def) {
if ($def instanceof TypeDefinitionNode) {
$definedTypes[] = $def->getName()->value;
}
}
return [
NodeKind::NAMED_TYPE => static function (NamedTypeNode $node, $_1, $parent, $_2, $ancestors) use ($context, $definedTypes): void {
$typeName = $node->name->value;
$schema = $context->getSchema();
if (in_array($typeName, $definedTypes, true)) {
return;
}
if ($schema !== null && $schema->hasType($typeName)) {
return;
}
$definitionNode = $ancestors[2] ?? $parent;
$isSDL = $definitionNode instanceof TypeSystemDefinitionNode || $definitionNode instanceof TypeSystemExtensionNode;
if ($isSDL && in_array($typeName, Type::BUILT_IN_TYPE_NAMES, true)) {
return;
}
$existingTypesMap = $schema !== null
? $schema->getTypeMap()
: [];
$typeNames = [
...array_keys($existingTypesMap),
...$definedTypes,
];
$context->reportError(new Error(
static::unknownTypeMessage(
$typeName,
Utils::suggestionList(
$typeName,
$isSDL
? [...Type::BUILT_IN_TYPE_NAMES, ...$typeNames]
: $typeNames
)
),
[$node]
));
},
];
}