Automattic\WooCommerce\Vendor\GraphQL\Server
ServerConfig{} │ WC 1.0
Server configuration class. Could be passed directly to server constructor. List of options accepted by create method is described in docs.
Usage example:
$config = Automattic\WooCommerce\Vendor\GraphQL\Server\ServerConfig::create()
->setSchema($mySchema)
->setContext($myContext);
$server = new Automattic\WooCommerce\Vendor\GraphQL\Server\StandardServer($config);
No Hooks.
Usage
$ServerConfig = new ServerConfig();
// use class methods
Methods
- public static create(array $config = [])
- public getContext()
- public getDebugFlag()
- public getErrorFormatter()
- public getErrorsHandler()
- public getFieldResolver()
- public getPersistedQueryLoader()
- public getPromiseAdapter()
- public getQueryBatching()
- public getRootValue()
- public getSchema()
- public getValidationRules()
- public setContext($context)
- public setDebugFlag(int $debugFlag = DebugFlag::INCLUDE_DEBUG_MESSAGE)
- public setErrorFormatter(callable $errorFormatter)
- public setErrorsHandler(callable $handler)
- public setFieldResolver(callable $fieldResolver)
- public setPersistedQueryLoader(?callable $persistedQueryLoader)
- public setPromiseAdapter(PromiseAdapter $promiseAdapter)
- public setQueryBatching(bool $enableBatching)
- public setRootValue($rootValue)
- public setSchema(Schema $schema)
- public setValidationRules($validationRules)
Notes
- See: ExecutionResult
- See: \Automattic\WooCommerce\Vendor\GraphQL\Tests\Server\ServerConfigTest
ServerConfig{} ServerConfig{} code
WC 10.8.1
class ServerConfig
{
/**
* Converts an array of options to instance of ServerConfig
* (or just returns empty config when array is not passed).
*
* @param array<string, mixed> $config
*
* @api
*
* @throws InvariantViolation
*/
public static function create(array $config = []): self
{
$instance = new static();
foreach ($config as $key => $value) {
switch ($key) {
case 'schema':
$instance->setSchema($value);
break;
case 'rootValue':
$instance->setRootValue($value);
break;
case 'context':
$instance->setContext($value);
break;
case 'fieldResolver':
$instance->setFieldResolver($value);
break;
case 'validationRules':
$instance->setValidationRules($value);
break;
case 'queryBatching':
$instance->setQueryBatching($value);
break;
case 'debugFlag':
$instance->setDebugFlag($value);
break;
case 'persistedQueryLoader':
$instance->setPersistedQueryLoader($value);
break;
case 'errorFormatter':
$instance->setErrorFormatter($value);
break;
case 'errorsHandler':
$instance->setErrorsHandler($value);
break;
case 'promiseAdapter':
$instance->setPromiseAdapter($value);
break;
default:
throw new InvariantViolation("Unknown server config option: {$key}");
}
}
return $instance;
}
private ?Schema $schema = null;
/** @var mixed|callable(self, OperationParams, DocumentNode): mixed|null */
private $context;
/**
* @var mixed|callable
*
* @phpstan-var mixed|RootValueResolver
*/
private $rootValue;
/**
* @var callable|null
*
* @phpstan-var ErrorFormatter|null
*/
private $errorFormatter;
/**
* @var callable|null
*
* @phpstan-var ErrorsHandler|null
*/
private $errorsHandler;
private int $debugFlag = DebugFlag::NONE;
private bool $queryBatching = false;
/**
* @var array<ValidationRule>|callable|null
*
* @phpstan-var ValidationRulesOption
*/
private $validationRules;
/** @var callable|null */
private $fieldResolver;
private ?PromiseAdapter $promiseAdapter = null;
/**
* @var callable|null
*
* @phpstan-var PersistedQueryLoader|null
*/
private $persistedQueryLoader;
/** @api */
public function setSchema(Schema $schema): self
{
$this->schema = $schema;
return $this;
}
/**
* @param mixed|callable $context
*
* @api
*/
public function setContext($context): self
{
$this->context = $context;
return $this;
}
/**
* @param mixed|callable $rootValue
*
* @phpstan-param mixed|RootValueResolver $rootValue
*
* @api
*/
public function setRootValue($rootValue): self
{
$this->rootValue = $rootValue;
return $this;
}
/**
* @phpstan-param ErrorFormatter $errorFormatter
*
* @api
*/
public function setErrorFormatter(callable $errorFormatter): self
{
$this->errorFormatter = $errorFormatter;
return $this;
}
/**
* @phpstan-param ErrorsHandler $handler
*
* @api
*/
public function setErrorsHandler(callable $handler): self
{
$this->errorsHandler = $handler;
return $this;
}
/**
* Set validation rules for this server.
*
* @param array<ValidationRule>|callable|null $validationRules
*
* @phpstan-param ValidationRulesOption $validationRules
*
* @api
*/
public function setValidationRules($validationRules): self
{
// @phpstan-ignore-next-line necessary until we can use proper union types
if (! is_array($validationRules) && ! is_callable($validationRules) && $validationRules !== null) {
$invalidValidationRules = Utils::printSafe($validationRules);
throw new InvariantViolation("Server config expects array of validation rules or callable returning such array, but got {$invalidValidationRules}");
}
$this->validationRules = $validationRules;
return $this;
}
/** @api */
public function setFieldResolver(callable $fieldResolver): self
{
$this->fieldResolver = $fieldResolver;
return $this;
}
/**
* @phpstan-param PersistedQueryLoader|null $persistedQueryLoader
*
* @api
*/
public function setPersistedQueryLoader(?callable $persistedQueryLoader): self
{
$this->persistedQueryLoader = $persistedQueryLoader;
return $this;
}
/**
* Set response debug flags.
*
* @see \Automattic\WooCommerce\Vendor\GraphQL\Error\DebugFlag class for a list of all available flags
*
* @api
*/
public function setDebugFlag(int $debugFlag = DebugFlag::INCLUDE_DEBUG_MESSAGE): self
{
$this->debugFlag = $debugFlag;
return $this;
}
/**
* Allow batching queries (disabled by default).
*
* @api
*/
public function setQueryBatching(bool $enableBatching): self
{
$this->queryBatching = $enableBatching;
return $this;
}
/** @api */
public function setPromiseAdapter(PromiseAdapter $promiseAdapter): self
{
$this->promiseAdapter = $promiseAdapter;
return $this;
}
/** @return mixed|callable */
public function getContext()
{
return $this->context;
}
/**
* @return mixed|callable
*
* @phpstan-return mixed|RootValueResolver
*/
public function getRootValue()
{
return $this->rootValue;
}
public function getSchema(): ?Schema
{
return $this->schema;
}
/** @phpstan-return ErrorFormatter|null */
public function getErrorFormatter(): ?callable
{
return $this->errorFormatter;
}
/** @phpstan-return ErrorsHandler|null */
public function getErrorsHandler(): ?callable
{
return $this->errorsHandler;
}
public function getPromiseAdapter(): ?PromiseAdapter
{
return $this->promiseAdapter;
}
/**
* @return array<ValidationRule>|callable|null
*
* @phpstan-return ValidationRulesOption
*/
public function getValidationRules()
{
return $this->validationRules;
}
public function getFieldResolver(): ?callable
{
return $this->fieldResolver;
}
/** @phpstan-return PersistedQueryLoader|null */
public function getPersistedQueryLoader(): ?callable
{
return $this->persistedQueryLoader;
}
public function getDebugFlag(): int
{
return $this->debugFlag;
}
public function getQueryBatching(): bool
{
return $this->queryBatching;
}
}