Commit Graph

399 Commits

Author SHA1 Message Date
1b8fca3658 Merge branch 'core'
This introduces a distinction between a Full and a Core AST. Fragments and
variables are replaced when transforming from Full to Core.
2017-02-28 16:07:00 -03:00
bada28ce24 Simplify fragment substitution 2017-02-24 16:46:51 -03:00
d2c138f8d1 Add basic Fragment Support
Only field names are supported for now.
2017-02-23 15:29:58 -03:00
3be86bf69e Enable Monad for array and object resolver
When I use facebook/haxl, I can not find any way to the sub resolver.
so I add Monad resolver to support it.
2017-02-23 11:08:47 +08:00
39731ff233 Fix parsing of Named Types 2017-02-13 15:31:56 -03:00
b7a72591fd Support variables in AST transformation 2017-02-13 15:19:13 -03:00
e716bc57e7 Wrap executed result in "data" object 2017-02-10 17:10:09 -03:00
4ab4660d36 Initial implementation of AST.Full -> AST.Core
This focused mainly on fragments.
2017-02-10 15:00:22 -03:00
8b09c8aa76 Make operation name optional 2017-02-03 12:57:21 -03:00
693b7d18dc Introduce Tranform module
In the Transform module the Full AST will converted to Core AST.

This commit also includes a partial implementation of Fragment replacement.
2017-02-02 12:44:03 -03:00
f35e1f949a Define Schema using Core AST
Also, temporarily remove error reporting to simplify execution. This should be
restored once the new execution model is nailed.
2017-01-30 15:20:17 -03:00
337b620717 Update .gitignore 2017-01-29 11:11:30 -03:00
642eab312f Merge pull request #19 from jasonzoladz/master
Fix Int32 bounds checking in Value parser.
2017-01-28 14:36:44 -03:00
5390c4ca1e Split AST in 2
One AST is meant to be a target parser and tries to adhere as much as possible
to the spec. The other is a simplified version of that AST meant for execution.

Also newtypes have been replaced by type synonyms and NonEmpty lists are being
used where it makes sense.
2017-01-28 14:15:14 -03:00
140c7df6fb Fix Int32 bounds checking in Value parser. 2017-01-28 12:06:28 -05:00
3e991adf4e Add Graphql Core AST 2017-01-26 12:52:07 -03:00
10fdf05aa7 Remove Type Definition support 2017-01-26 11:56:22 -03:00
933cfd2852 Tokenize number parser
The essential change hidden behind the code golfing is using the `tok`
combinator. This was making fail the Kitchen Sink test.
2016-12-18 12:19:59 -03:00
aa66236081 Add homePlanet to test schema 2016-12-18 11:43:45 -03:00
afb2fc4eb9 Include GHC-8.0.1 in travis build 2016-12-18 10:59:02 -03:00
5dc9222025 Merge pull request #16 from teh/master
Parse number as scientific and interpret meaning separately.
2016-12-12 16:42:18 -03:00
87c92e9d6e Parse number as scientific and interpret meaning separately.
The current parser will fail parsing floats because it parses an int,
and then stumbles on the dot.

To fix I interpret the value with the scientific library which already
is a dependency through attoparsec, so we're not introducing any extra
downloads or compiling.

I think this is still subtly wrong because "10.0" will be parsed as
ValueInt, but because input argument ints are allowed to be coerced
into doubles (according to the spec) this is probably acceptable.
2016-12-09 00:03:20 +00:00
61f0a06096 Drop support for GHC-7.8.4 2016-11-27 12:56:44 -03:00
2cc6b00051 Merge pull request #11 from pweaver/starwars_tests
Remaining Starwars Tests
2016-07-11 19:33:48 -04:00
c396a4b545 add pweaver to contributors 2016-07-09 10:55:16 -04:00
a6c0d63049 add tests for errors in queries for queries in starwars tests 2016-07-08 18:10:14 -04:00
624efbbb35 adds __typename tests to starwars testfile 2016-07-08 16:51:54 -04:00
cb73e9d53c adds the starwars tests for fragments
Also refactors some deplicate objects into a where clause
2016-07-08 16:11:03 -04:00
e944c76040 Add @Tritlo and @solrun as authors 2016-03-17 15:57:18 +01:00
77853b17ae Merge branch 'all-improvements'
This adds general API documentation, a tutorial and error handling.
2016-03-15 14:02:34 +01:00
61d6af7778 Added documentation of functions and modules and included tutorial.lhs. 2016-03-14 01:42:55 +01:00
d195389102 Added exception handling with Alternative constraint according to spec. 2016-03-14 01:01:24 +01:00
b74278cd19 Added a tutorial, based on graphql-js and servant documentation. 2016-03-14 01:01:20 +01:00
d8a731fe30 Remove StringValue type 2016-02-22 13:59:38 +01:00
770df82718 Simplify Schema definition API
Now there is one `Resolver` type and the `Output` and `Scalar` types
have been removed. This should be closer to the final Schema definition
API.
2016-02-19 19:21:32 +01:00
8ee50727bd Overhaul Schema DSL
Aside of making the definition of Schemas easier, it takes care of
issues like nested aliases which previously wasn't possible. The naming
of the DSL functions is still provisional.
2016-02-18 13:49:02 +01:00
a6b2fd297b Garden 2016-02-17 13:20:56 +01:00
7131d1c142 Initial support for aliases in execute 2016-02-17 13:20:56 +01:00
a0f12455c5 Add remaining tests with variables in arguments
The test with invalid ID is commented out until proper exception
handling is implemented.
2016-02-17 12:35:54 +01:00
98d2d41cda Initial support for variable substitution
The correspondent end-to-end test has been ported. The variable
definition still needs to be checked.
2016-02-15 14:43:52 +01:00
119f94b38e Clean up StarWars test queries 2016-02-15 11:19:05 +01:00
04d8d40b3a Split StarWars tests in different modules 2016-02-12 13:27:46 +01:00
a088c81944 Handle Field arguments in Schema definition
The `Schema` has been overhauled to make `Output` monomorphic.
Traversing the `GraphQL` document is handled implicitly while defining
the `Schema`.

The 4th end-to-end test from `graphql-js` has been ported.
2016-02-12 12:51:18 +01:00
70fbaf359e Split Character data type into Droid and Human
`Character` is now a synonym of the sum type of `Droid` and `Human`.

For now I don't see the need to implement GraphQL Schema interfaces with
type classes or lens. Plain Haskell ADTs should be good enough.
2016-02-09 14:38:19 +01:00
df8e43c9aa Handle Output enumerations in Schema definition
The third end-to-end test from graphql-js was implemented.
2016-02-09 13:31:28 +01:00
c385566912 Bump copyright year 2016-02-08 17:35:33 +01:00
781788e306 Drop support for older stackage versions 2016-02-08 17:33:51 +01:00
1561e62489 Extend execute for deeper queries
The second graphql-js end-to-end test was ported and passed
successfully.
2016-02-08 17:30:18 +01:00
53e101f35e Simplify JSON notation in tests 2016-02-05 12:54:04 +01:00
c81ddb0335 Introduce graphql function
This simplifies Attoparsec parsing when executing a GraphQL
query.
2016-02-05 12:32:35 +01:00