|
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