src/Utils/ASTDefinitionBuilder.php
private function internalBuildType($typeName, $typeNode = null)
    {
        if (! isset($this->cache[$typeName])) {
            if (isset($this->typeDefinitionsMap[$typeName])) {
                $type = $this->makeSchemaDef($this->typeDefinitionsMap[$typeName]);
                if ($this->typeConfigDecorator) {
                    $fn = $this->typeConfigDecorator;
                    try {
                        $config = $fn($type->config, $this->typeDefinitionsMap[$typeName], $this->typeDefinitionsMap);
                    } catch (Throwable $e) {
                        throw new Error(
                            sprintf('Type config decorator passed to %s threw an error ', static::class) .
                            sprintf('when building %s type: %s', $typeName, $e->getMessage()),
                            null,
                            null,
                            null,
                            null,
                            $e
                        );
                    }
                    if (! is_array($config) || isset($config[0])) {
                        throw new Error(
                            sprintf(
                                'Type config decorator passed to %s is expected to return an array, but got %s',
                                static::class,
                                Utils::getVariableType($config)
                            )
                        );
                    }
                    $type = $this->makeSchemaDefFromConfig($this->typeDefinitionsMap[$typeName], $config);
                }
                $this->cache[$typeName] = $type;
            } else {
                $fn                     = $this->resolveType;
                $this->cache[$typeName] = $fn($typeName, $typeNode);
            }
        }

        return $this->cache[$typeName];
    }
private function internalBuildType($typeName, $typeNode = null)
    {
        if (! isset($this->cache[$typeName])) {
            if (isset($this->typeDefinitionsMap[$typeName])) {
                $type = $this->makeSchemaDef($this->typeDefinitionsMap[$typeName]);
                if ($this->typeConfigDecorator) {
                    $fn = $this->typeConfigDecorator;
                    try {
                        $config = $fn($type->config, $this->typeDefinitionsMap[$typeName], $this->typeDefinitionsMap);
                    } catch (Throwable $e) {
                        throw new Error(
                            sprintf('Type config decorator passed to %s threw an error ', static::class) .
                            sprintf('when building %s type: %s', $typeName, $e->getMessage()),
                            null,
                            null,
                            null,
                            null,
                            $e
                        );
                    }
                    if (! is_array($config) || isset($config[0])) {
                        throw new Error(
                            sprintf(
                                'Type config decorator passed to %s is expected to return an array, but got %s',
                                static::class,
                                Utils::getVariableType($config)
                            )
                        );
                    }
                    $type = $this->makeSchemaDefFromConfig($this->typeDefinitionsMap[$typeName], $config);
                }
                $this->cache[$typeName] = $type;
            } else {
                $fn                     = $this->resolveType;
                $this->cache[$typeName] = $fn($typeName, $typeNode);
            }
        }

        return $this->cache[$typeName];
    }
private function internalBuildType ( $ typeName , $ typeNode = null ) { if ( ! isset ( $ this -> cache [ $ typeName ] ) ) { if ( isset ( $ this -> typeDefinitionsMap [ $ typeName ] ) ) { $ type = $ this -> makeSchemaDef ( $ this -> typeDefinitionsMap [ $ typeName ] ) ; if ( $ this -> typeConfigDecorator ) { $ fn = $ this -> typeConfigDecorator ; try { $ config = $ fn ( $ type -> config , $ this -> typeDefinitionsMap [ $ typeName ] , $ this -> typeDefinitionsMap ) ; } catch ( Throwable $ e ) { throw new Error ( sprintf ( 'Type config decorator passed to %s threw an error ' , static :: class ) . sprintf ( 'when building %s type: %s' , $ typeName , $ e -> getMessage ( ) ) , null , null , null , null , $ e ) ; } if ( ! is_array ( $ config ) || isset ( $ config [ 0 ] ) ) { throw new Error ( sprintf ( 'Type config decorator passed to %s is expected to return an array, but got %s' , static :: class , Utils :: getVariableType ( $ config ) ) ) ; } $ type = $ this -> makeSchemaDefFromConfig ( $ this -> typeDefinitionsMap [ $ typeName ] , $ config ) ; } $ this -> cache [ $ typeName ] = $ type ; } else { $ fn = $ this -> resolveType ; $ this -> cache [ $ typeName ] = $ fn ( $ typeName , $ typeNode ) ; } } return $ this -> cache [ $ typeName ] ; }
@param string             $typeName
@param NamedTypeNode|null $typeNode

@return Type

@throws Error
@param string $typeName @param NamedTypeNode|null $typeNode