![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/framework/GraphQl/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Framework\GraphQl; use Magento\Framework\Config\DataInterface; use Magento\Framework\GraphQl\Config\ConfigElementFactoryInterface; use Magento\Framework\GraphQl\Config\ConfigElementInterface; use Magento\Framework\GraphQl\Query\Fields as QueryFields; /** * Provides access to typing information for a configured GraphQL schema. */ class Config implements ConfigInterface { /** * @var DataInterface */ private $configData; /** * @var ConfigElementFactoryInterface */ private $configElementFactory; /** * @var QueryFields */ private $queryFields; /** * @param DataInterface $data * @param ConfigElementFactoryInterface $configElementFactory * @param QueryFields $queryFields */ public function __construct( DataInterface $data, ConfigElementFactoryInterface $configElementFactory, QueryFields $queryFields ) { $this->configData = $data; $this->configElementFactory = $configElementFactory; $this->queryFields = $queryFields; } /** * @inheritdoc */ public function getConfigElement(string $configElementName) : ConfigElementInterface { $data = $this->configData->get($configElementName); if (!isset($data['type'])) { throw new \LogicException( sprintf('Config element "%s" is not declared in GraphQL schema', $configElementName) ); } $fieldsInQuery = $this->queryFields->getFieldsUsedInQuery(); if (isset($data['fields'])) { if (!empty($fieldsInQuery)) { $data['fieldsInQuery'] = array_intersect_key($data['fields'], $fieldsInQuery); ksort($data['fieldsInQuery']); } ksort($data['fields']); } return $this->configElementFactory->createFromConfigData($data); } /** * @inheritdoc */ public function getDeclaredTypes() : array { $types = []; foreach ($this->configData->get(null) as $item) { if (isset($item['type'])) { $types[] = [ 'name' => $item['name'], 'type' => $item['type'], ]; } } return $types; } }