|
4 | 4 |
|
5 | 5 | namespace MLL\GraphQLScalars;
|
6 | 6 |
|
7 |
| -use GraphQL\Language\AST\FloatValueNode; |
8 |
| -use GraphQL\Language\AST\IntValueNode; |
9 |
| -use GraphQL\Language\AST\ListValueNode; |
10 |
| -use GraphQL\Language\AST\ObjectFieldNode; |
11 |
| -use GraphQL\Language\AST\ObjectValueNode; |
12 | 7 | use GraphQL\Language\AST\ValueNode;
|
13 | 8 | use GraphQL\Type\Definition\ScalarType;
|
| 9 | +use GraphQL\Utils\AST; |
14 | 10 |
|
15 | 11 | class Mixed extends ScalarType
|
16 | 12 | {
|
@@ -55,37 +51,12 @@ public function parseValue($value)
|
55 | 51 | * @param ValueNode $valueNode
|
56 | 52 | * @param array|null $variables
|
57 | 53 | *
|
| 54 | + * @throws \Exception |
| 55 | + * |
58 | 56 | * @return \mixed
|
59 | 57 | */
|
60 | 58 | public function parseLiteral($valueNode, array $variables = null)
|
61 | 59 | {
|
62 |
| - if ($valueNode instanceof IntValueNode) { |
63 |
| - // This is a potentially lossy conversion as GraphQL Int literals |
64 |
| - // may be arbitrarily large, whereas PHP ints are limited in size |
65 |
| - $value = (int) $valueNode->value; |
66 |
| - } |
67 |
| - |
68 |
| - if ($valueNode instanceof FloatValueNode) { |
69 |
| - // This is a potentially lossy conversion as GraphQL Float literals |
70 |
| - // may be arbitrarily large, whereas PHP floats are limited in size |
71 |
| - $value = (float) $valueNode->value; |
72 |
| - } |
73 |
| - |
74 |
| - if ($valueNode instanceof ListValueNode) { |
75 |
| - $value = []; |
76 |
| - foreach ($valueNode->values as $singleValue) { |
77 |
| - $value[] = $this->parseLiteral($singleValue); |
78 |
| - } |
79 |
| - } |
80 |
| - |
81 |
| - if ($valueNode instanceof ObjectValueNode) { |
82 |
| - $value = []; |
83 |
| - /** @var ObjectFieldNode $singleValue */ |
84 |
| - foreach ($valueNode->fields as $singleValue) { |
85 |
| - $value[$singleValue->name->value] = $this->parseLiteral($singleValue->value); |
86 |
| - } |
87 |
| - } |
88 |
| - |
89 |
| - return $value ?? $valueNode->value; |
| 60 | + return AST::valueFromASTUntyped($valueNode); |
90 | 61 | }
|
91 | 62 | }
|
0 commit comments