public static function getDefinition()
{
return self::$def ?: (self::$def = ['name' => Config::NAME | Config::REQUIRED, 'type' => Config::OUTPUT_TYPE | Config::REQUIRED, 'args' => Config::arrayOf(['name' => Config::NAME | Config::REQUIRED, 'type' => Config::INPUT_TYPE | Config::REQUIRED, 'description' => Config::STRING, 'defaultValue' => Config::ANY], Config::KEY_AS_NAME | Config::MAYBE_TYPE), 'resolve' => Config::CALLBACK, 'map' => Config::CALLBACK, 'description' => Config::STRING, 'deprecationReason' => Config::STRING, 'complexity' => Config::CALLBACK]);
}
public function __construct(array $config) { Config::validate($config, ['name' => Config::STRING, 'fields' => Config::arrayOf(FieldDefinition::getDefinition(), Config::KEY_AS_NAME), 'resolveType' => Config::CALLBACK, 'description' => Config::STRING]); $this->name = $config['name']; $this->description = isset($config['description']) ? $config['description'] : null; $this->_fields = !empty($config['fields']) ? FieldDefinition::createMap($config['fields']) : []; $this->_resolveTypeFn = isset($config['resolveType']) ? $config['resolveType'] : null; }