241 Commits

Author SHA1 Message Date
belka 91bd2d0d81 Fix list input coercion 2020-06-19 10:53:41 +02:00
belka 882276a845 Coerce result
Fixes #45.
2020-06-13 07:20:19 +02:00
belka e8c54810f8 Merge selection sets 2020-06-12 07:58:08 +02:00
belka c37b9c88b1 Skip unknown fields 2020-06-10 11:42:00 +02:00
belka fdb1268213 Add custom Eq instances to the types 2020-06-09 10:02:34 +02:00
belka 377c87045e Add description to the enum type values 2020-06-07 06:16:45 +02:00
belka 4c9264c12c Coerce argument values properly
Fixes #44.
2020-06-06 21:22:11 +02:00
belka 93a0403288 Resolve abstract types
Objects that can be a part of an union or interface should return
__typename as string.
2020-06-03 07:20:38 +02:00
belka d12577ae71 Define resolvers on type fields
Returning resolvers from other resolvers isn't supported anymore. Since
we have a type system now, we define the resolvers in the object type
fields and pass an object with the previous result to them.
2020-05-29 13:53:51 +02:00
belka c06d0b8e95 Add Union and Interface type definitions 2020-05-26 11:13:55 +02:00
belka 61dbe6c728 Split input/output types and values into 2 modules 2020-05-25 07:41:21 +02:00
belka eb90a4091c Check point 2020-05-24 13:51:00 +02:00
belka 7cd4821718 Don't fail on invalid fragments and variables 2020-05-23 21:49:57 +02:00
belka 26cc53ce06 Reject variables as default values 2020-05-22 10:11:48 +02:00
belka c3ecfece03 Coerce variable values 2020-05-21 10:20:59 +02:00
belka a5c44f30fa Add basic output object type support 2020-05-14 22:16:56 +02:00
belka 4c19c88e98 Accept resolvers given by the user as is 2020-05-13 16:21:48 +02:00
belka 500cff20eb Separate Query and Mutation resolvers
Fixes #33 .
2020-05-10 18:32:58 +02:00
Dmitrii Skurikhin 2760bd8ee1 Don't encode controls as block strings
Fixes #39.

String containing control sequences should be encoded as simple strings
even if they contain newlines, since the block strings can contain only
SourceCharacters.
2020-04-10 11:19:36 +02:00
Dmitrii Skurikhin 30d6a0a58d encode null value as "null" 2020-03-31 10:04:34 +03:00
belka 613e929d91 Update to Stack 15.x 2020-02-20 05:16:14 +01:00
belka c0e5e30e76 Document schema AST
Fixes #8.
2020-02-14 06:20:05 +01:00
belka 67bebf853c Replace MonadIO constraint with just Monad
And make the tests use Identity instead of IO.
2020-02-01 20:46:35 +01:00
belka e8b82122c6 Try all extension parsers 2020-01-28 11:08:28 +01:00
belka a6bd2370b6 Parse type extensions
Signed-off-by: Eugen Wissner <belka@caraus.de>
2020-01-26 11:55:15 +01:00
belka b4a3c98114 Parse schema extensions 2020-01-25 16:45:39 +01:00
belka 3ef27f9d11 Add "extend symbol" lexer to parse extensions 2020-01-17 12:29:06 +01:00
belka ba710a3c96 Parse complete TypeSystemDefinition 2020-01-15 20:20:50 +01:00
belka d257d05d4e Parse enum and input object type definitions 2020-01-13 08:21:02 +01:00
belka adffa185bb Parse interface type definition 2020-01-13 08:21:02 +01:00
belka f4ed06741d Parse union definitions 2020-01-13 08:21:02 +01:00
belka 8efb08fda1 Parse ObjectDefinition 2020-01-13 08:21:02 +01:00
belka d9a2937b55 Parse SchemaDefinition 2020-01-13 08:18:30 +01:00
belka f4f076fa59 Reduce usage of the opt parser
opt directives = some directive
All other occurrences of opt parse an optional list withing some
delimiters (braces, parens).
2020-01-13 08:11:22 +01:00
belka 6d951491be Replace Parser.manyNE with NonEmpty.some 2020-01-12 07:19:28 +01:00
belka dd8f312cb3 Rewrite argument list to argument map 2020-01-01 10:58:11 +01:00
belka d82d5a36b3 Retrieve resolver arguments from the reader 2019-12-31 08:29:03 +01:00
belka 44dc80bb37 Replace substitution function with a map
It makes using variables with queries more approachable, but some work
still has to be done.
- The type `Subs` should be renamed and moved out of `Schema`, together with
`AST.Core.Value` probably.
- Some kind of conversion should be possible from a user-defined input
type T to the Value. So the final HashMap should have a type like
`HashMap name a`, where a is an instance of a potential typeclass
InputType.
2019-12-30 18:26:24 +01:00
belka fdf5914626 Move AST to AST.Document 2019-12-28 07:07:58 +01:00
belka 78ee76f9d5 Define schema AST.
Large parts of the schema aren't exported publically. They will be made
public during writing the parser.

Fixes #6.
2019-12-27 09:14:12 +01:00
belka 56d88310df Add definition module 2019-12-26 13:07:21 +01:00
belka 62f3c34bfe Replace AST.Selection data constructors 2019-12-25 06:45:29 +01:00
belka b215e1a4a7 Pretify multi-line string arguments as block strings
Fixes #10.
2019-12-21 09:25:05 +01:00
belka 1e55f17e7e Encode Unicode. Fix #34 2019-12-20 07:58:09 +01:00
belka 9a5d54c035 Escape non-source characters in the encoder 2019-12-19 06:59:27 +01:00
belka 0cbe69736b Move Execute.Directive to Type.Directive
Just to roughly follow the structure of the reference implementation.
2019-12-18 09:03:18 +01:00
belka 4c0d226030 Move Transform to Language.GraphQL.Execute
Language.GraphQL.AST.Transform is an internal module. Even though it
works with the AST, it is a part of the execution process, it translates
the original parser tree into a simpler one, so the executor has less
work to do. Language.GraphQL.AST should contain only the parser and be
independent from other packages, so it can be used on its own.
2019-12-07 09:46:00 +01:00
belka 3c1a5c800f Support directives (skip and include)
Fixes #24.
2019-12-06 22:52:24 +01:00
belka fc9ad9c4a1 Consider __typename when evaluating fragments
Fixes #30.
2019-12-02 07:43:19 +01:00
Sam Nolan def52ddc20 Fix strings not consuming spaces
Fixes #28
2019-11-28 19:09:26 +11:00