Automattic\WooCommerce\Vendor\GraphQL\Utils

ASTDefinitionBuilder::makeInputObjectDefprivateWC 1.0

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() 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,
    ]);
}