Updated AST to 2016 spec version

This commit is contained in:
vladar 2016-04-23 23:08:46 +06:00
parent c053169671
commit 86adfde0a0
21 changed files with 315 additions and 6 deletions

View File

@ -6,5 +6,6 @@ interface Definition
/** /**
* export type Definition = OperationDefinition * export type Definition = OperationDefinition
* | FragmentDefinition * | FragmentDefinition
* | TypeSystemDefinition // experimental non-spec addition.
*/ */
} }

View File

@ -0,0 +1,25 @@
<?php
namespace GraphQL\Language\AST;
class DirectiveDefinition extends Node implements TypeSystemDefinition
{
/**
* @var string
*/
public $kind = Node::DIRECTIVE_DEFINITION;
/**
* @var Name
*/
public $name;
/**
* @var Argument[]
*/
public $arguments;
/**
* @var Name[]
*/
public $locations;
}

View File

@ -0,0 +1,20 @@
<?php
namespace GraphQL\Language\AST;
class EnumTypeDefinition extends Node implements TypeDefinition
{
/**
* @var string
*/
public $kind = self::UNION_TYPE_DEFINITION;
/**
* @var Name
*/
public $name;
/**
* @var EnumValueDefinition[]
*/
public $values;
}

View File

@ -0,0 +1,15 @@
<?php
namespace GraphQL\Language\AST;
class EnumValueDefinition extends Node
{
/**
* @var string
*/
public $kind = Node::ENUM_VALUE_DEFINITION;
/**
* @var Name
*/
public $name;
}

View File

@ -1,7 +1,7 @@
<?php <?php
namespace GraphQL\Language\AST; namespace GraphQL\Language\AST;
class Field extends Node class Field extends Node implements Selection
{ {
public $kind = Node::FIELD; public $kind = Node::FIELD;

View File

@ -0,0 +1,25 @@
<?php
namespace GraphQL\Language\AST;
class FieldDefinition extends Node
{
/**
* @var string
*/
public $kind = Node::FIELD_DEFINITION;
/**
* @var Name
*/
public $name;
/**
* @var InputValueDefinition[]
*/
public $arguments;
/**
* @var Type
*/
public $type;
}

View File

@ -1,7 +1,7 @@
<?php <?php
namespace GraphQL\Language\AST; namespace GraphQL\Language\AST;
class FragmentSpread extends Node class FragmentSpread extends Node implements Selection
{ {
public $kind = Node::FRAGMENT_SPREAD; public $kind = Node::FRAGMENT_SPREAD;

View File

@ -1,7 +1,7 @@
<?php <?php
namespace GraphQL\Language\AST; namespace GraphQL\Language\AST;
class InlineFragment extends Node class InlineFragment extends Node implements Selection
{ {
public $kind = Node::INLINE_FRAGMENT; public $kind = Node::INLINE_FRAGMENT;

View File

@ -0,0 +1,20 @@
<?php
namespace GraphQL\Language\AST;
class InputObjectTypeDefinition extends Node implements TypeDefinition
{
/**
* @var string
*/
public $kind = Node::INPUT_OBJECT_TYPE_DEFINITION;
/**
* @var Name
*/
public $name;
/**
* @var InputValueDefinition[]
*/
public $fields;
}

View File

@ -0,0 +1,25 @@
<?php
namespace GraphQL\Language\AST;
class InputValueDefinition extends Node
{
/**
* @var string
*/
public $kind = Node::INPUT_VALUE_DEFINITION;
/**
* @var Name
*/
public $name;
/**
* @var Type
*/
public $type;
/**
* @var Value
*/
public $defaultValue;
}

View File

@ -0,0 +1,20 @@
<?php
namespace GraphQL\Language\AST;
class InterfaceTypeDefinition extends Node implements TypeDefinition
{
/**
* @var string
*/
public $kind = Node::INTERFACE_TYPE_DEFINITION;
/**
* @var Name
*/
public $name;
/**
* @var FieldDefinition[]
*/
public $fields = [];
}

View File

@ -46,7 +46,31 @@ abstract class Node
const LIST_TYPE = 'ListType'; const LIST_TYPE = 'ListType';
const NON_NULL_TYPE = 'NonNullType'; const NON_NULL_TYPE = 'NonNullType';
// Type System Definitions
const SCHEMA_DEFINITION = 'SchemaDefinition';
const OPERATION_TYPE_DEFINITION = 'OperationTypeDefinition';
// Type Definitions
const SCALAR_TYPE_DEFINITION = 'ScalarTypeDefinition';
const OBJECT_TYPE_DEFINITION = 'ObjectTypeDefinition';
const FIELD_DEFINITION = 'FieldDefinition';
const INPUT_VALUE_DEFINITION = 'InputValueDefinition';
const INTERFACE_TYPE_DEFINITION = 'InterfaceTypeDefinition';
const UNION_TYPE_DEFINITION = 'UnionTypeDefinition';
const ENUM_TYPE_DEFINITION = 'EnumTypeDefinition';
const ENUM_VALUE_DEFINITION = 'EnumValueDefinition';
const INPUT_OBJECT_TYPE_DEFINITION = 'InputObjectTypeDefinition';
// Type Extensions
const TYPE_EXTENSION_DEFINITION = 'TypeExtensionDefinition';
// Directive Definitions
const DIRECTIVE_DEFINITION = 'DirectiveDefinition';
/** /**
type Node = Name type Node = Name
| Document | Document

View File

@ -0,0 +1,25 @@
<?php
namespace GraphQL\Language\AST;
class ObjectTypeDefinition extends Node implements TypeDefinition
{
/**
* @var string
*/
public $kind = Node::OBJECT_TYPE_DEFINITION;
/**
* @var Name
*/
public $name;
/**
* @var NamedType[]
*/
public $interfaces = [];
/**
* @var FieldDefinition[]
*/
public $fields;
}

View File

@ -0,0 +1,22 @@
<?php
namespace GraphQL\Language\AST;
class OperationTypeDefinition extends Node
{
/**
* @var string
*/
public $kind = Node::OPERATION_TYPE_DEFINITION;
/**
* One of 'query' | 'mutation' | 'subscription'
*
* @var string
*/
public $operation;
/**
* @var NamedType
*/
public $type;
}

View File

@ -0,0 +1,13 @@
<?php
namespace GraphQL\Language\AST;
class ScalarTypeDefinition extends Node implements TypeDefinition
{
public $kind = Node::SCALAR_TYPE_DEFINITION;
/**
* @var Name
*/
public $name;
}

View File

@ -0,0 +1,15 @@
<?php
namespace GraphQL\Language\AST;
class SchemaDefinition extends Node implements TypeSystemDefinition
{
/**
* @var string
*/
public $kind = Node::SCHEMA_DEFINITION;
/**
* @var OperationTypeDefinition[]
*/
public $operationTypes;
}

View File

@ -0,0 +1,14 @@
<?php
namespace GraphQL\Language\AST;
interface TypeDefinition extends TypeSystemDefinition
{
/**
export type TypeDefinition = ScalarTypeDefinition
| ObjectTypeDefinition
| InterfaceTypeDefinition
| UnionTypeDefinition
| EnumTypeDefinition
| InputObjectTypeDefinition
*/
}

View File

@ -0,0 +1,15 @@
<?php
namespace GraphQL\Language\AST;
class TypeExtensionDefinition extends Node implements TypeSystemDefinition
{
/**
* @var string
*/
public $kind = Node::TYPE_EXTENSION_DEFINITION;
/**
* @var ObjectTypeDefinition
*/
public $definition;
}

View File

@ -0,0 +1,12 @@
<?php
namespace GraphQL\Language\AST;
interface TypeSystemDefinition extends Definition
{
/**
export type TypeSystemDefinition = SchemaDefinition
| TypeDefinition
| TypeExtensionDefinition
| DirectiveDefinition
*/
}

View File

@ -0,0 +1,20 @@
<?php
namespace GraphQL\Language\AST;
class UnionTypeDefinition extends Node implements TypeDefinition
{
/**
* @var string
*/
public $kind = self::UNION_TYPE_DEFINITION;
/**
* @var Name
*/
public $name;
/**
* @var NamedType[]
*/
public $types = [];
}

View File

@ -20,7 +20,6 @@ class Token
const PIPE = 13; const PIPE = 13;
const BRACE_R = 14; const BRACE_R = 14;
const NAME = 15; const NAME = 15;
const VARIABLE = 16;
const INT = 17; const INT = 17;
const FLOAT = 18; const FLOAT = 18;
const STRING = 19; const STRING = 19;
@ -43,7 +42,6 @@ class Token
$description[self::PIPE] = '|'; $description[self::PIPE] = '|';
$description[self::BRACE_R] = '}'; $description[self::BRACE_R] = '}';
$description[self::NAME] = 'Name'; $description[self::NAME] = 'Name';
$description[self::VARIABLE] = 'Variable';
$description[self::INT] = 'Int'; $description[self::INT] = 'Int';
$description[self::FLOAT] = 'Float'; $description[self::FLOAT] = 'Float';
$description[self::STRING] = 'String'; $description[self::STRING] = 'String';