for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Digia\GraphQL\Language\ASTBuilder;
use Digia\GraphQL\Language\KeywordEnum;
use Digia\GraphQL\Language\LexerInterface;
use Digia\GraphQL\Language\TokenKindEnum;
class ExecutableDefinitionASTBuilder extends AbstractASTBuilder
{
/**
* @param LexerInterface $lexer
* @return bool
*/
public function supportsBuilder(string $kind): bool
return $kind === ASTKindEnum::EXECUTABLE_DEFINITION;
}
* @inheritdoc
public function build(LexerInterface $lexer, array $params): ?array
if ($this->peek($lexer, TokenKindEnum::NAME)) {
// valid names are: query, mutation, subscription and fragment
switch ($lexer->getToken()->getValue()) {
case KeywordEnum::QUERY:
case KeywordEnum::MUTATION:
case KeywordEnum::SUBSCRIPTION:
return $this->buildAST(ASTKindEnum::OPERATION_DEFINITION, $lexer);
case KeywordEnum::FRAGMENT:
return $this->buildAST(ASTKindEnum::FRAGMENT_DEFINITION, $lexer);
} elseif ($this->peek($lexer, TokenKindEnum::BRACE_L)) {
// Anonymous query
throw $this->unexpected($lexer);