Commit Graph

404 Commits

Author SHA1 Message Date
Ben Sinclair cbccb9ed0b Add -Wall flags to graphql.cabal 2021-02-22 08:30:36 +11:00
Ben Sinclair ca0f0bd32d Fix some issues with directive definitions
I found some issues with directive definitions:

- I couldn't use `on FIELD_DEFINITION`, I believe because `FIELD` was parsed
  first in `executableDirectiveLocation`. I've combined both
  `executableDirectiveLocation` and `typetypeSystemDirectiveLocation` into one
  function which can reorder them to ensure every directive location gets a fair
  chance at parsing.

Not actually to do with directives, some literals weren't being parsed
correctly.

- The GraphQL spec defines list to be `[]` or `[Value]`, but empty literal lists
  weren't being parsed correctly because of using `some` instead of `many`.

- The GraphQL spec defines objects to be `{}` or `{Name: Value}`, but empty
  literal objects had the same issue.
2021-02-21 23:35:34 +11:00
Eugen Wissner 10e4d64052 Replace Map with OrderedMap 2021-02-19 08:09:04 +01:00
Eugen Wissner d74e27e903 traverseMaybe OrderedMap 2021-02-15 09:04:16 +01:00
Eugen Wissner 90d36f66b9 Combine value inserted into the OrderedMap 2021-02-14 14:46:06 +01:00
Eugen Wissner c1a1b47aea Add OrderedMap prototype 2021-02-13 06:56:10 +01:00
Eugen Wissner 1e8405a6d6 Document AST.Document.escape 2021-02-11 12:02:08 +01:00
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 ebf4f4d24e Update stack snapshot to 17.x. 2021-02-02 07:15:30 +01:00
Eugen Wissner 1c7554c328 Validate variable usage is allowed in objects 2021-01-22 09:26:22 +01:00
Eugen Wissner c018657e25 Fix the type in messages when validating variables 2021-01-04 08:24:50 +01:00
Eugen Wissner 71a5964c27 Rename variablesInAllowedPositionRule's variables
Name variablesInAllowedPositionRule's variables more meaningful.
2020-12-27 11:47:29 +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 4a3b4cb16d Fix singleFieldSubscriptionsRule fragment lookup
singleFieldSubscriptionsRule picks up a wrong fragment definition.
2020-11-06 08:33:51 +01:00
Eugen Wissner 7f0fb18716 Remove StarWars tests
Our own test suite is slowly getting sufficient.
2020-11-05 07:55:22 +01:00
Eugen Wissner afcf9aaa14 Write documentation out of the source tree
In a Wiki.
2020-11-02 08:24:48 +01:00
Eugen Wissner 6e8d8a34a1 Reflect infrastructure and license changes 2020-10-30 07:06:36 +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 6daae8a521 Validate directives are in valid locations 2020-10-02 06:31:38 +02:00
Eugen Wissner 56b63f1c3e Validate input object field names 2020-09-30 05:14:52 +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