Automattic\WooCommerce\Vendor\GraphQL\Utils
ASTDefinitionBuilder::makeInputObjectDef
Method of the class: ASTDefinitionBuilder{}
No Hooks.
Returns
null. Nothing (null).
Usage
// private - for code of main (parent) class only $result = $this->makeInputObjectDef( $def ): InputObjectType;
- $def(InputObjectTypeDefinitionNode) (required)
- .
ASTDefinitionBuilder::makeInputObjectDef() ASTDefinitionBuilder::makeInputObjectDef code WC 10.9.1
private function makeInputObjectDef(InputObjectTypeDefinitionNode $def): InputObjectType
{
$name = $def->name->value;
/** @var array<InputObjectTypeExtensionNode> $extensionASTNodes (proven by schema validation) */
$extensionASTNodes = $this->typeExtensionsMap[$name] ?? [];
$oneOfDirective = Directive::oneOfDirective();
// Check for @oneOf directive in the definition node
$isOneOf = Values::getDirectiveValues($oneOfDirective, $def) !== null;
// Check for @oneOf directive in extension nodes
if (! $isOneOf) {
foreach ($extensionASTNodes as $extensionNode) {
if (Values::getDirectiveValues($oneOfDirective, $extensionNode) !== null) {
$isOneOf = true;
break;
}
}
}
return new InputObjectType([
'name' => $name,
'description' => $def->description->value ?? null,
'isOneOf' => $isOneOf,
'fields' => fn (): array => $this->makeInputFields([$def, ...$extensionASTNodes]),
'astNode' => $def,
'extensionASTNodes' => $extensionASTNodes,
]);
}