public getFieldDef ( ) : |
||
return |
public function __invoke(ValidationContext $context) { return [Node::FIELD => function (Field $fieldAST) use($context) { $fieldDef = $context->getFieldDef(); if (!$fieldDef) { return Visitor::skipNode(); } $errors = []; $argASTs = $fieldAST->arguments ?: []; $argASTMap = Utils::keyMap($argASTs, function (Argument $arg) { return $arg->name->value; }); foreach ($fieldDef->args as $argDef) { $argAST = isset($argASTMap[$argDef->name]) ? $argASTMap[$argDef->name] : null; if (!$argAST && $argDef->getType() instanceof NonNull) { $errors[] = new Error(Messages::missingArgMessage($fieldAST->name->value, $argDef->name, $argDef->getType()), [$fieldAST]); } } $argDefMap = Utils::keyMap($fieldDef->args, function ($def) { return $def->name; }); foreach ($argASTs as $argAST) { $argDef = $argDefMap[$argAST->name->value]; if ($argDef && !DocumentValidator::isValidLiteralValue($argAST->value, $argDef->getType())) { $errors[] = new Error(Messages::badValueMessage($argAST->name->value, $argDef->getType(), Printer::doPrint($argAST->value)), [$argAST->value]); } } return !empty($errors) ? $errors : null; }]; }
public function __invoke(ValidationContext $context) { return [Node::FIELD => function (Field $node) use($context) { $type = $context->getParentType(); if ($type) { $fieldDef = $context->getFieldDef(); if (!$fieldDef) { return new Error(Messages::undefinedFieldMessage($node->name->value, $type->name), [$node]); } } }]; }
public function __invoke(ValidationContext $context) { return [Node::FIELD => ['leave' => function (Field $fieldAST) use($context) { $fieldDef = $context->getFieldDef(); if (!$fieldDef) { return Visitor::skipNode(); } $errors = []; $argASTs = $fieldAST->arguments ?: []; $argASTMap = []; foreach ($argASTs as $argAST) { $argASTMap[$argAST->name->value] = $argASTs; } foreach ($fieldDef->args as $argDef) { $argAST = isset($argASTMap[$argDef->name]) ? $argASTMap[$argDef->name] : null; if (!$argAST && $argDef->getType() instanceof NonNull) { $errors[] = new Error(self::missingFieldArgMessage($fieldAST->name->value, $argDef->name, $argDef->getType()), [$fieldAST]); } } if (!empty($errors)) { return $errors; } }], Node::DIRECTIVE => ['leave' => function (Directive $directiveAST) use($context) { $directiveDef = $context->getDirective(); if (!$directiveDef) { return Visitor::skipNode(); } $errors = []; $argASTs = $directiveAST->arguments ?: []; $argASTMap = []; foreach ($argASTs as $argAST) { $argASTMap[$argAST->name->value] = $argASTs; } foreach ($directiveDef->args as $argDef) { $argAST = isset($argASTMap[$argDef->name]) ? $argASTMap[$argDef->name] : null; if (!$argAST && $argDef->getType() instanceof NonNull) { $errors[] = new Error(self::missingDirectiveArgMessage($directiveAST->name->value, $argDef->name, $argDef->getType()), [$directiveAST]); } } if (!empty($errors)) { return $errors; } }]]; }
public function __invoke(ValidationContext $context) { return [Node::FIELD => function (Field $node) use($context) { $type = $context->getParentType(); if ($type) { $fieldDef = $context->getFieldDef(); if (!$fieldDef) { // This isn't valid. Let's find suggestions, if any. $suggestedTypes = []; if ($type instanceof AbstractType) { $schema = $context->getSchema(); $suggestedTypes = self::getSiblingInterfacesIncludingField($schema, $type, $node->name->value); $suggestedTypes = array_merge($suggestedTypes, self::getImplementationsIncludingField($schema, $type, $node->name->value)); } $context->reportError(new Error(static::undefinedFieldMessage($node->name->value, $type->name, $suggestedTypes), [$node])); } } }]; }
public function __invoke(ValidationContext $context) { return [Node::ARGUMENT => function (Argument $node) use($context) { $fieldDef = $context->getFieldDef(); if ($fieldDef) { $argDef = null; foreach ($fieldDef->args as $arg) { if ($arg->name === $node->name->value) { $argDef = $arg; break; } } if (!$argDef) { $parentType = $context->getParentType(); Utils::invariant($parentType); return new Error(Messages::unknownArgMessage($node->name->value, $fieldDef->name, $parentType->name), [$node]); } } }]; }
public function __invoke(ValidationContext $context) { return [NodeKind::ARGUMENT => function (ArgumentNode $node, $key, $parent, $path, $ancestors) use($context) { $argumentOf = $ancestors[count($ancestors) - 1]; if ($argumentOf->kind === NodeKind::FIELD) { $fieldDef = $context->getFieldDef(); if ($fieldDef) { $fieldArgDef = null; foreach ($fieldDef->args as $arg) { if ($arg->name === $node->name->value) { $fieldArgDef = $arg; break; } } if (!$fieldArgDef) { $parentType = $context->getParentType(); Utils::invariant($parentType); $context->reportError(new Error(self::unknownArgMessage($node->name->value, $fieldDef->name, $parentType->name), [$node])); } } } else { if ($argumentOf->kind === NodeKind::DIRECTIVE) { $directive = $context->getDirective(); if ($directive) { $directiveArgDef = null; foreach ($directive->args as $arg) { if ($arg->name === $node->name->value) { $directiveArgDef = $arg; break; } } if (!$directiveArgDef) { $context->reportError(new Error(self::unknownDirectiveArgMessage($node->name->value, $directive->name), [$node])); } } } } }]; }
public function __invoke(ValidationContext $context) { return [NodeKind::FIELD => ['leave' => function (FieldNode $fieldNode) use($context) { $fieldDef = $context->getFieldDef(); if (!$fieldDef) { return Visitor::skipNode(); } $argNodes = $fieldNode->arguments ?: []; $argNodeMap = []; foreach ($argNodes as $argNode) { $argNodeMap[$argNode->name->value] = $argNodes; } foreach ($fieldDef->args as $argDef) { $argNode = isset($argNodeMap[$argDef->name]) ? $argNodeMap[$argDef->name] : null; if (!$argNode && $argDef->getType() instanceof NonNull) { $context->reportError(new Error(self::missingFieldArgMessage($fieldNode->name->value, $argDef->name, $argDef->getType()), [$fieldNode])); } } }], NodeKind::DIRECTIVE => ['leave' => function (DirectiveNode $directiveNode) use($context) { $directiveDef = $context->getDirective(); if (!$directiveDef) { return Visitor::skipNode(); } $argNodes = $directiveNode->arguments ?: []; $argNodeMap = []; foreach ($argNodes as $argNode) { $argNodeMap[$argNode->name->value] = $argNodes; } foreach ($directiveDef->args as $argDef) { $argNode = isset($argNodeMap[$argDef->name]) ? $argNodeMap[$argDef->name] : null; if (!$argNode && $argDef->getType() instanceof NonNull) { $context->reportError(new Error(self::missingDirectiveArgMessage($directiveNode->name->value, $argDef->name, $argDef->getType()), [$directiveNode])); } } }]]; }