summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-11-19Validate fragment spreads are possibleEugen Wissner
2020-11-17Collect interface implementationsEugen Wissner
2020-11-15Implement basic "Field Selection Merging" ruleEugen Wissner
2020-11-11Extract collectFields functionEugen Wissner
2020-11-07Release 0.11.0.0v0.11.0.0Eugen Wissner
2020-11-06Fix singleFieldSubscriptionsRule fragment lookupEugen Wissner
singleFieldSubscriptionsRule picks up a wrong fragment definition.
2020-11-05Remove StarWars testsEugen Wissner
Our own test suite is slowly getting sufficient.
2020-11-02Write documentation out of the source treeEugen Wissner
In a Wiki.
2020-10-30Reflect infrastructure and license changesEugen Wissner
2020-10-07Collect types once the schema is createdEugen Wissner
2020-10-05Validate required input fieldsEugen Wissner
2020-10-03Validate required argumentsEugen Wissner
2020-10-02Validate directives are in valid locationsEugen Wissner
2020-09-30Validate input object field namesEugen Wissner
2020-09-29Validate directives are definedEugen Wissner
2020-09-28Validate arguments are definedEugen Wissner
2020-09-26Validate leaf selectionsEugen Wissner
2020-09-26Validate field selections on composite typesEugen Wissner
2020-09-24Validate input fields have unique namesEugen Wissner
2020-09-22Validate variables are usedEugen Wissner
2020-09-21Validate all variables are definedEugen Wissner
2020-09-20Validate fragments are input typesEugen Wissner
2020-09-19Validate variable names are uniqueEugen Wissner
2020-09-18Validate directives are unique per locationEugen Wissner
2020-09-17Validate arguments have unique namesEugen Wissner
2020-09-16Move path to the execution errorEugen Wissner
Since it isn't possible to get a path during validation, without executing the query.
2020-09-15Use Seq as base monad in the validatorEugen Wissner
It is more natural to implement the logic: try to apply each rule to each node.
2020-09-11Validate fragments don't form cyclesEugen Wissner
2020-09-09Validate all fragments are usedEugen Wissner
2020-09-07Validate fragments on composite typesEugen Wissner
2020-09-05Validate fragment spread type existenceEugen Wissner
2020-09-04Collect types from the subscription rootEugen Wissner
2020-08-31Validate fragment spread target existenceEugen Wissner
2020-08-29Release 0.10.0.0v0.10.0.0Eugen Wissner
2020-08-28Validate fragment name uniquenessEugen Wissner
2020-08-27Validate operation name uniquenessEugen Wissner
Fixes #52.
2020-08-26Validate anonymous operation definitionsEugen Wissner
2020-08-25Validate single root field in subscriptionsEugen Wissner
2020-08-22Remove encoder test based on old external filesEugen Wissner
2020-08-20Loose monad condition on test methodsEugen Wissner
2020-07-24Release 0.9.0.0Eugen Wissner
2020-07-20Draft the Validation APIEugen Wissner
2020-07-19Return a stream as well from graphql* functionsEugen Wissner
2020-07-17Constrain base monad to MonadCatchEugen Wissner
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-15Respect subscriptions in the executorEugen Wissner
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-14Support subscriptionsEugen Wissner
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-11Parse subscriptionsEugen Wissner
2020-07-10Label parsers with help infoEugen Wissner
Fixes #36.
2020-07-09Parse comments in the front of definitionsEugen Wissner
2020-07-08Return parser error location in a listEugen Wissner
An error can have multiple locations which are returned in a listt with key "locations".