Commit Graph

60 Commits

Author SHA1 Message Date
Daniel Tschinder
d70a9a5e53 Update to match SDL changes
This changes the parsing grammar and validation rules to more correctly implement the current state of the GraphQL SDL proposal (facebook/graphql#90)

ref: graphql/graphl-js#1102
2018-02-11 13:27:26 +01:00
Daniel Tschinder
27ce24b5fe Fix parsing of default values in build-schema
* Generalizes building a value from an AST, since "scalar" could be misleading, and supporting variable values within custom scalar literals can be valuable.
* Replaces isNullish with isInvalid since `null` is a meaningful value as a result of literal parsing.
* Provide reasonable default version of 'parseLiteral'

ref: 714ee980aa
ref: https://github.com/graphql/graphql-js/pull/903

# Conflicts:
#	src/Utils/BuildSchema.php
#	tests/Utils/BuildSchemaTest.php
2018-02-10 18:45:23 +01:00
Daniel Tschinder
1fdb3da7fb Remove notes about subscription being experimental
ref: graphql/graphql-js#bf4a25a33a62280e82680518adc279e34ec816e0
2018-02-10 18:45:10 +01:00
Daniel Tschinder
7705e50e44 Fix print of block string with leading space and quotation
ref: graphql/graphql-js#1190
2018-02-10 18:44:56 +01:00
Daniel Tschinder
022c490011 RFC: Descriptions as strings
As discussed in facebook/graphql#90

This proposes replacing leading comment blocks as descriptions in the schema definition language with leading strings (typically block strings).

While I think there is some reduced ergonomics of using a string literal instead of a comment to write descriptions (unless perhaps you are accustomed to Python or Clojure), there are some compelling advantages:

* Descriptions are first-class in the AST of the schema definition language.
* Comments can remain "ignored" characters.
* No ambiguity between commented out regions and descriptions.

Specific to this reference implementation, since this is a breaking change and comment descriptions in the experimental SDL have fairly wide usage, I've left the comment description implementation intact and allow it to be enabled via an option. This should help with allowing upgrading with minimal impact on existing codebases and aid in automated transforms.

BREAKING CHANGE: This does not parse descriptions from comments by default anymore and the value of description in Nodes changed from string to StringValueNode
2018-02-10 18:44:51 +01:00
Daniel Tschinder
e65638f6f4 Improvements to printing block strings
ref: graphql/graphql-js#f9e67c403a4667372684ee8c3e82e1f0ba27031b
2018-02-10 18:44:45 +01:00
Daniel Tschinder
8747ff8954 RFC: Block String
This RFC adds a new form of `StringValue`, the multi-line string, similar to that found in Python and Scala.

A multi-line string starts and ends with a triple-quote:

```
"""This is a triple-quoted string
and it can contain multiple lines"""
```

Multi-line strings are useful for typing literal bodies of text where new lines should be interpretted literally. In fact, the only escape sequence used is `\"""` and `\` is otherwise allowed unescaped. This is beneficial when writing documentation within strings which may reference the back-slash often:

```
"""
In a multi-line string \n and C:\\ are unescaped.
"""
```

The primary value of multi-line strings are to write long-form input directly in query text, in tools like GraphiQL, and as a prerequisite to another pending RFC to allow docstring style documentation in the Schema Definition Language.

Ref: graphql/graphql-js#926
2018-02-10 18:43:26 +01:00
Daniel Tschinder
46816a7cda Uniform parsing of queries with short-hand syntax with regular queries 2018-02-09 14:33:04 +01:00
Vladimir Razuvaev
9944a689bf Exclude nulls from serialized AST 2018-01-13 16:25:06 +07:00
Vladimir Razuvaev
8b17953fe5 Fixed bug preventing use of parser noLocation option for serialization / deserialization 2018-01-13 15:45:09 +07:00
Vladimir Razuvaev
a1e06b2e61 Account for query offset in files for errors 2017-09-20 18:36:19 +07:00
Vladimir Razuvaev
085516bdda Moved GraphQL\Language\AST\Node::fromArray to GraphQL\Utils\AST::fromArray 2017-08-20 19:50:44 +07:00
Vladimir Razuvaev
bd444752f8 Documentation and docblock improvements 2017-08-20 16:00:44 +07:00
Vladimir Razuvaev
1b4f983f3f Improved docblock comments (suitable for reference docs generation) 2017-08-19 23:01:46 +07:00
Vladimir Razuvaev
2bfce65484 Fixed Parser docblock comments 2017-08-18 02:55:22 +07:00
Vladimir Razuvaev
51e877bfba Improving docblock comments 2017-08-17 02:15:49 +07:00
Vladimir Razuvaev
3e6f2c9e83 Fixed minor bugs 2017-07-25 19:26:41 +07:00
Vladimir Razuvaev
1af902865b AST: new NodeList class for collections of nodes (vs array) to enable effective conversion of libgraphqlparser output to our AST tree 2017-07-21 22:29:59 +07:00
Vladimir Razuvaev
296544089c Moved GraphQL\Utils to GraphQL\Utils\Utils 2017-07-10 19:53:46 +07:00
Vladimir Razuvaev
a79a51d445 Schema Parsing: allow leading pipe for union type definitions 2017-07-05 19:01:13 +07:00
Vladimir Razuvaev
a0657b7847 Refactored Lexer algorithm for better performance. Now O(N) vs O(N^2) previously (#137) 2017-06-24 22:42:55 +07:00
Vladimir Razuvaev
848f9c3edf Preserve backwards compatibility of Ast\Node::toArray(): do shallow conversion by default 2017-04-25 18:02:45 +07:00
Vladimir Razuvaev
835e4e6b2d Removed unnecessary loc entry in AST\Node::toArray() 2017-04-25 18:00:06 +07:00
Andreas Heiberg
ed8bf4e2b2 fix __toString() for AST Node
previously it would only shallowly convert to array causing json_encode to fail
2017-04-07 11:34:33 +01:00
Vladimir Razuvaev
34ca931533 Sanity check to ensure that GraphQL query is string 2017-02-24 17:14:30 +07:00
jane-olszewska
060dc51595 Set schema element description to strings retrieved from a continuous chunk of comment tokens immediately preceding the element 2017-02-06 18:33:21 +00:00
jane-olszewska
dd31ab2b80 Added a description field to schema type definition classes 2017-02-06 18:33:18 +00:00
jane-olszewska
bbb5cf1e4d Fixed comment token extraction: will no longer read one character from the next line 2017-02-06 18:13:43 +00:00
vladar
660200ed50 GraphQL\Language\AST\NodeType -> GraphQL\Language\AST\NodeKind 2016-11-19 17:31:47 +07:00
vladar
5a17ae8246 Clearer lexer errors 2016-11-19 17:08:20 +07:00
vladar
5aad8b596b Consistent docblock comments for arrays 2016-11-19 06:19:41 +07:00
vladar
8d696edee5 Renamed AST nodes to *Node to disambiguate types 2016-11-19 06:12:18 +07:00
vladar
439959b292 Enforce input coercion rules 2016-11-19 04:15:40 +07:00
vladar
8a676cde99 Support for NullValue 2016-11-18 23:59:28 +07:00
vladar
5d889ccacd Reverted several breaking changes from #75; tests are green 2016-11-16 18:37:35 +07:00
Andreas Heiberg
b2c8d8eeb1 [style changes] Lexer 2016-11-16 18:14:46 +07:00
Andreas Heiberg
816fa067b3 type hint Name node in visitor 2016-11-16 18:06:25 +07:00
Andreas Heiberg
46788f2ddb move NodeTypes enum to seperate class 2016-11-16 18:02:58 +07:00
Andreas Heiberg
2e25f51829 [style change] put VisitorOperation up top 2016-11-16 17:30:25 +07:00
Andreas Heiberg
80a662564e [style changes] arrays and callback 2016-11-16 17:29:50 +07:00
Andreas Heiberg
3c98963f72 remove static functions from Printer 2016-11-16 17:22:57 +07:00
vladar
2675b65095 Moved all error-related classes to separate namespace; fixed related broken tests 2016-10-21 16:40:56 +07:00
vladar
2369454687 Minor comment tweaks + ability to define enum values as simple k=>v pairs 2016-10-21 03:10:06 +07:00
vladar
236021acf8 Added deprecated directive; changed custom directives handling in schema; various minor tweaks 2016-10-19 01:34:46 +07:00
vladar
357166791a Consistent coding style + doc block comments for Types and Utils 2016-10-17 19:14:29 +07:00
vladar
cd14146032 Updated parser to consume latest lexer; New public parser API methods: parseType and parseValue; added directives to schema parser/printer 2016-10-17 02:57:24 +07:00
vladar
3eeb4d450b Reworked lexer: tokens are now represented as double linked list 2016-10-17 02:53:50 +07:00
vladar
e82f887918 Fixed visitor; more visitor tests 2016-09-14 18:41:02 +07:00
vladar
800d8ba25f Continue updating validator rules for april2016 spec 2016-09-14 18:41:02 +07:00
vladar
f1ddc98390 Updating validator rules for april2016 spec 2016-09-14 18:41:02 +07:00