Commit Graph

399 Commits

Author SHA1 Message Date
belka 7355533268 Validate single root field in subscriptions 2020-08-25 21:03:42 +02:00
belka 54dbf1df16 Remove encoder test based on old external files 2020-08-22 06:39:52 +02:00
belka 1a788a6261 Loose monad condition on test methods 2020-08-20 20:53:47 +02:00
belka c60dd98fc5 Release 0.9.0.0 2020-07-24 21:58:49 +02:00
belka 44d506d4b5 Draft the Validation API 2020-07-20 21:29:12 +02:00
belka b9d5b1fb1b Return a stream as well from graphql* functions 2020-07-19 07:36:06 +02:00
belka 09135c581a Constrain base monad to MonadCatch
Let's try MonadThrow/MonadCatch. It looks nice at a first glance. The
monad transformer stack contains only the ReaderT, less lifts are
required. Exception subtyping is easier, the user can (and should)
define custom error types and throw them. And it is still possible to
use pure error handling, if someone doesn't like runtime exceptions or
need to run a query in a pure environment.

Fixes #42.
2020-07-17 07:05:03 +02:00
belka e24386402b Respect subscriptions in the executor
After the last commit there were a few places needed to be adjusted to
support subscriptions. This is done and a test case is added.

It is important to implement subscriptions now, because they require
changes to the library API, and they are a big missing part to finish
the executor. When the executor is finished, we can start to provide
more stable API without breaking everything every release. Validation
and introspection shouldn't require much changes to the API; AST would
require some changes to report good errors after the validation - this
is one thing I can think of.

Fixes #5.
2020-07-15 19:15:31 +02:00
belka ae2210f659 Support subscriptions
This is experimental support.
The implementation is based on conduit and is boring. There is a new
resolver data constructor that should create a source event stream. The
executor receives the events, pipes them through the normal execution
and puts them into the response stream which is returned to the user.

- Tests are missing.
- The executor should check field value resolver on subscription types.
- The graphql function should probably return (Either
  ResponseEventStream Response), but I'm not sure about this. It will
  make the usage more complicated if no subscriptions are involved, but
  with the current API implementing subscriptions is more
  difficult than it should be.
2020-07-14 19:37:56 +02:00
belka 840e129c44 Parse subscriptions 2020-07-11 06:34:10 +02:00
belka 04a58be3f8 Label parsers with help info
Fixes #36.
2020-07-10 08:43:47 +02:00
belka 28781586a5 Parse comments in the front of definitions 2020-07-09 08:11:12 +02:00
belka c9e265f72c Return parser error location in a list
An error can have multiple locations which are returned in a listt with
key "locations".
2020-07-08 08:17:55 +02:00
belka b2d473de8d Export sum type for all GraphQL types 2020-07-06 19:10:34 +02:00
belka a6f9cec413 Handle errors using custom types
Fixes #32.
2020-07-05 14:36:00 +02:00
belka b5157e141e Check in .cabal 2020-07-03 07:00:37 +02:00
belka 2f4310268a Merge Trans and Type.Out modules 2020-07-02 07:33:03 +02:00
belka 8b164c4844 Move Core module out of AST 2020-06-30 10:28:10 +02:00
belka 705e506c13 Combine Resolver and ActionT in ResolverT 2020-06-29 13:14:23 +02:00
belka 9798b08b4c Remove semaphoreci.sh 2020-06-26 11:40:09 +02:00
belka 175268b422 Add a github actions workflow 2020-06-24 10:12:22 +02:00
belka aef6030a8e Release 0.8.0.0 v0.8.0.0 2020-06-20 05:48:25 +02:00
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 9232e08eb9 Release 0.7.0.0 v0.7.0.0 2020-05-11 12:34:48 +02:00
belka 500cff20eb Separate Query and Mutation resolvers
Fixes #33 .
2020-05-10 18:32:58 +02:00
belka 387d158bd1 Write contrinbuting guidelines 2020-04-12 08:32:39 +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