Issues (158)

src/ParserFactory.php (1 issue)

Labels
Severity
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Jerowork\GraphqlAttributeSchema;
6
7
use Jerowork\GraphqlAttributeSchema\NodeParser\ChainedNodeParser;
8
use Jerowork\GraphqlAttributeSchema\NodeParser\Child\ArgNodeParser;
9
use Jerowork\GraphqlAttributeSchema\NodeParser\Child\AutowireNodeParser;
10
use Jerowork\GraphqlAttributeSchema\NodeParser\Child\ClassFieldsNodeParser;
11
use Jerowork\GraphqlAttributeSchema\NodeParser\Child\CursorNodeParser;
12
use Jerowork\GraphqlAttributeSchema\NodeParser\Child\EdgeArgsNodeParser;
13
use Jerowork\GraphqlAttributeSchema\NodeParser\Child\MethodArgumentsNodeParser;
14
use Jerowork\GraphqlAttributeSchema\NodeParser\EnumNodeParser;
15
use Jerowork\GraphqlAttributeSchema\NodeParser\InputTypeNodeParser;
16
use Jerowork\GraphqlAttributeSchema\NodeParser\InterfaceTypeNodeParser;
17
use Jerowork\GraphqlAttributeSchema\NodeParser\MutationNodeParser;
18
use Jerowork\GraphqlAttributeSchema\NodeParser\QueryNodeParser;
19
use Jerowork\GraphqlAttributeSchema\NodeParser\ScalarNodeParser;
20
use Jerowork\GraphqlAttributeSchema\NodeParser\TypeNodeParser;
21
use Jerowork\GraphqlAttributeSchema\NodeParser\TypeReferenceDecider;
22
use Jerowork\GraphqlAttributeSchema\Type\DateTimeType;
23
use Jerowork\GraphqlAttributeSchema\Util\Finder\Native\NativeFinder;
24
use Jerowork\GraphqlAttributeSchema\Util\Reflector\Native\NativeReflector;
25
26
final readonly class ParserFactory
0 ignored issues
show
A parse error occurred: Syntax error, unexpected T_READONLY, expecting T_CLASS on line 26 at column 6
Loading history...
27
{
28
    /**
29
     * @param list<class-string> $customTypes
30
     */
31 4
    public function create(
32
        array $customTypes = [
33
            DateTimeType::class,
34
        ],
35
    ): Parser {
36 4
        $typeReferenceDecider = new TypeReferenceDecider();
37
38 4
        $methodArgNodesParser = new MethodArgumentsNodeParser(
39 4
            new AutowireNodeParser(),
40 4
            new EdgeArgsNodeParser(),
41 4
            new ArgNodeParser($typeReferenceDecider),
42 4
        );
43 4
        $classFieldNodesParser = new ClassFieldsNodeParser(
44 4
            $typeReferenceDecider,
45 4
            $methodArgNodesParser,
46 4
        );
47 4
        $cursorNodeParser = new CursorNodeParser($typeReferenceDecider);
48
49 4
        return new Parser(
50 4
            new NativeFinder(),
51 4
            new NativeReflector(),
52 4
            new ChainedNodeParser([
53 4
                new EnumNodeParser(),
54 4
                new InputTypeNodeParser($classFieldNodesParser),
55 4
                new TypeNodeParser($classFieldNodesParser, $cursorNodeParser),
56 4
                new InterfaceTypeNodeParser($classFieldNodesParser, $cursorNodeParser),
57 4
                new ScalarNodeParser(),
58 4
                new MutationNodeParser($typeReferenceDecider, $methodArgNodesParser),
59 4
                new QueryNodeParser($typeReferenceDecider, $methodArgNodesParser),
60 4
            ]),
61 4
            $customTypes,
62 4
        );
63
    }
64
}
65