Commit Graph

121 Commits

Author SHA1 Message Date
Eugen Wissner 2839b28590 Release 0.11.1.0 2021-02-07 08:10:46 +01:00
Eugen Wissner ed725ea514 Split validation rule tests in contexts 2021-02-06 12:54:27 +01:00
Eugen Wissner b27da54bf4 Provide custom Show instances for AST values 2021-02-04 08:12:12 +01:00
Eugen Wissner a034f2ce4d Validate values 2021-02-03 05:47:40 +01:00
Eugen Wissner 22abf7ca58 Validate variable usages are allowed in arguments 2020-12-26 06:31:56 +01:00
Eugen Wissner 5a6709030c Add show instances for AST type representation 2020-12-17 20:42:47 +01:00
Eugen Wissner 2bcae9e0a7 Implement Show class for GraphQL type definitions
.. in the `Type` modules.
2020-12-14 22:36:27 +01:00
Eugen Wissner 2dbc985dfc Validate fragment spreads are possible 2020-11-19 08:48:37 +01:00
Eugen Wissner 86a0e00f7e Collect interface implementations 2020-11-17 08:10:32 +01:00
Eugen Wissner 1f4eb6fb9b Implement basic "Field Selection Merging" rule 2020-11-15 10:11:09 +01:00
Eugen Wissner f5209481aa Extract collectFields function 2020-11-11 08:49:45 +01:00
Eugen Wissner 445f33dcf3 Release 0.11.0.0 2020-11-07 09:05:47 +01:00
Eugen Wissner 7c0b0ace4d Collect types once the schema is created 2020-10-07 05:24:51 +02:00
Eugen Wissner a91bc7f2d2 Validate required input fields 2020-10-05 14:51:21 +02:00
Eugen Wissner d5f518fe82 Validate required arguments 2020-10-03 07:34:34 +02:00
Eugen Wissner 466416d4b0 Validate directives are defined 2020-09-29 06:21:32 +02:00
Eugen Wissner 4602eb1df3 Validate arguments are defined 2020-09-28 07:06:15 +02:00
Eugen Wissner ced9b815db Validate leaf selections 2020-09-26 09:06:30 +02:00
Eugen Wissner 3373c94895 Validate field selections on composite types 2020-09-26 07:57:25 +02:00
Eugen Wissner 9bfa2aa7e8 Validate input fields have unique names 2020-09-24 05:47:31 +02:00
Eugen Wissner e9a94147fb Validate variables are used 2020-09-22 04:42:25 +02:00
Eugen Wissner 3e393004ae Validate all variables are defined 2020-09-21 07:28:40 +02:00
Eugen Wissner 38c3097bcf Validate fragments are input types 2020-09-20 06:59:27 +02:00
Eugen Wissner 21a7d9cce4 Validate variable names are unique 2020-09-19 18:18:26 +02:00
Eugen Wissner 9a08aa5de7 Validate directives are unique per location 2020-09-18 07:32:58 +02:00
Eugen Wissner 497b93c41b Validate arguments have unique names 2020-09-17 10:33:37 +02:00
Eugen Wissner 6e644c5b4b Move path to the execution error
Since it isn't possible to get a path during validation, without
executing the query.
2020-09-16 09:12:49 +02:00
Eugen Wissner 4c10ce9204 Use Seq as base monad in the validator
It is more natural to implement the logic: try to apply each rule to
each node.
2020-09-15 08:06:07 +02:00
Eugen Wissner 08998dbd93 Validate fragments don't form cycles 2020-09-11 08:03:49 +02:00
Eugen Wissner c2c57b6363 Validate all fragments are used 2020-09-09 17:04:31 +02:00
Eugen Wissner f6ff0ab9c7 Validate fragments on composite types 2020-09-07 22:01:49 +02:00
Eugen Wissner d327d9d1ce Validate fragment spread type existence 2020-09-05 10:00:58 +02:00
Eugen Wissner 14ed209828 Collect types from the subscription root 2020-09-04 19:12:19 +02:00
Eugen Wissner 33318a3b01 Validate fragment spread target existence 2020-08-31 11:06:27 +02:00
Eugen Wissner 4b59da2fcb Release 0.10.0.0 2020-08-29 12:12:04 +02:00
Eugen Wissner 7e78f98f09 Validate fragment name uniqueness 2020-08-28 08:32:21 +02:00
Eugen Wissner 7355533268 Validate single root field in subscriptions 2020-08-25 21:03:42 +02:00
Eugen Wissner 54dbf1df16 Remove encoder test based on old external files 2020-08-22 06:39:52 +02:00
Eugen Wissner 1a788a6261 Loose monad condition on test methods 2020-08-20 20:53:47 +02:00
Eugen Wissner c60dd98fc5 Release 0.9.0.0 2020-07-24 21:58:49 +02:00
Eugen Wissner b9d5b1fb1b Return a stream as well from graphql* functions 2020-07-19 07:36:06 +02:00
Eugen Wissner 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
Eugen Wissner 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
Eugen Wissner 840e129c44 Parse subscriptions 2020-07-11 06:34:10 +02:00
Eugen Wissner 04a58be3f8 Label parsers with help info
Fixes #36.
2020-07-10 08:43:47 +02:00
Eugen Wissner 28781586a5 Parse comments in the front of definitions 2020-07-09 08:11:12 +02:00
Eugen Wissner 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
Eugen Wissner b2d473de8d Export sum type for all GraphQL types 2020-07-06 19:10:34 +02:00
Eugen Wissner a6f9cec413 Handle errors using custom types
Fixes #32.
2020-07-05 14:36:00 +02:00
Eugen Wissner 2f4310268a Merge Trans and Type.Out modules 2020-07-02 07:33:03 +02:00