Skip to content

Commit f548de5

Browse files
committed
Fixes for definition config validation after recent changes
1 parent 083cb4e commit f548de5

File tree

4 files changed

+11
-5
lines changed

4 files changed

+11
-5
lines changed

src/Type/Definition/Config.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ class Config
2121

2222
const REQUIRED = 65536;
2323
const KEY_AS_NAME = 131072;
24+
const MAYBE_THUNK = 262144;
2425

2526
private static $enableValidation = false;
2627

@@ -105,7 +106,11 @@ private static function _validateEntry($typeName, $key, $value, $def, $pathStr)
105106
if ($def->flags & self::REQUIRED === 0 && $value === null) {
106107
return ;
107108
}
108-
Utils::invariant(is_array($value), $err, 'array');
109+
if (($def->flags & self::MAYBE_THUNK) > 0) {
110+
Utils::invariant(is_array($value) || is_callable($value), $err, 'array or callable');
111+
} else {
112+
Utils::invariant(is_array($value), $err, 'array');
113+
}
109114

110115
if (!empty($def->isMap)) {
111116
if ($def->flags & self::KEY_AS_NAME) {

src/Type/Definition/InputObjectType.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public function __construct(array $config)
2121
'type' => Config::INPUT_TYPE | Config::REQUIRED,
2222
'defaultValue' => Config::ANY,
2323
'description' => Config::STRING
24-
], Config::KEY_AS_NAME),
24+
], Config::KEY_AS_NAME | Config::MAYBE_THUNK),
2525
'description' => Config::STRING
2626
]);
2727

src/Type/Definition/InterfaceType.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public function __construct(array $config)
5555
'name' => Config::STRING,
5656
'fields' => Config::arrayOf(
5757
FieldDefinition::getDefinition(),
58-
Config::KEY_AS_NAME
58+
Config::KEY_AS_NAME | Config::MAYBE_THUNK
5959
),
6060
'resolveType' => Config::CALLBACK, // function($value, ResolveInfo $info) => ObjectType
6161
'description' => Config::STRING

src/Type/Definition/ObjectType.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,11 +79,12 @@ public function __construct(array $config)
7979
'name' => Config::STRING | Config::REQUIRED,
8080
'fields' => Config::arrayOf(
8181
FieldDefinition::getDefinition(),
82-
Config::KEY_AS_NAME
82+
Config::KEY_AS_NAME | Config::MAYBE_THUNK
8383
),
8484
'description' => Config::STRING,
8585
'interfaces' => Config::arrayOf(
86-
Config::INTERFACE_TYPE
86+
Config::INTERFACE_TYPE,
87+
Config::MAYBE_THUNK
8788
),
8889
'isTypeOf' => Config::CALLBACK, // ($value, ResolveInfo $info) => boolean
8990
'resolveField' => Config::CALLBACK

0 commit comments

Comments
 (0)