c311cb0070
Add constructor with additional schema types
2021-05-13 17:40:38 +02:00
1b7cd85216
Add location information to the intermediate tree
2021-05-12 06:51:59 +02:00
1af95345d2
Deprecate internal error generation functions
...
The functions generating errors in the executor should be changed anyway
when we provide better error messages from the executor, with the error
location and response path. So public definitions of these functions are
deprecated now and they are replaced by more generic functions in the
executor code.
2021-05-10 09:43:39 +02:00
0d23df3da2
Provide an internal function to add errors
...
The old function, addErrMsg, takes only a string with an error
description, but more information is required for the execution errors:
locations and path. addErrMsg should be deprecated after the switching
to the new addError.
2021-05-09 12:42:02 +02:00
5a5f265fe4
Validate non-nullable values inside lists
2021-05-06 22:23:16 +02:00
5654b78935
Traverse input object properties once
2021-04-12 07:09:39 +02:00
328e6acdee
Emit list item errors once
2021-03-16 10:08:13 +01: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
10e4d64052
Replace Map with OrderedMap
2021-02-19 08:09:04 +01:00
d74e27e903
traverseMaybe OrderedMap
2021-02-15 09:04:16 +01:00
90d36f66b9
Combine value inserted into the OrderedMap
2021-02-14 14:46:06 +01:00
c1a1b47aea
Add OrderedMap prototype
2021-02-13 06:56:10 +01:00
ed725ea514
Split validation rule tests in contexts
2021-02-06 12:54:27 +01:00
b27da54bf4
Provide custom Show instances for AST values
2021-02-04 08:12:12 +01:00
a034f2ce4d
Validate values
2021-02-03 05:47:40 +01:00
22abf7ca58
Validate variable usages are allowed in arguments
2020-12-26 06:31:56 +01:00
2dbc985dfc
Validate fragment spreads are possible
2020-11-19 08:48:37 +01:00
1f4eb6fb9b
Implement basic "Field Selection Merging" rule
2020-11-15 10:11:09 +01:00
4a3b4cb16d
Fix singleFieldSubscriptionsRule fragment lookup
...
singleFieldSubscriptionsRule picks up a wrong fragment definition.
2020-11-06 08:33:51 +01:00
7f0fb18716
Remove StarWars tests
...
Our own test suite is slowly getting sufficient.
2020-11-05 07:55:22 +01:00
7c0b0ace4d
Collect types once the schema is created
2020-10-07 05:24:51 +02:00
a91bc7f2d2
Validate required input fields
2020-10-05 14:51:21 +02:00
d5f518fe82
Validate required arguments
2020-10-03 07:34:34 +02:00
6daae8a521
Validate directives are in valid locations
2020-10-02 06:31:38 +02:00
56b63f1c3e
Validate input object field names
2020-09-30 05:14:52 +02:00
466416d4b0
Validate directives are defined
2020-09-29 06:21:32 +02:00
4602eb1df3
Validate arguments are defined
2020-09-28 07:06:15 +02:00
ced9b815db
Validate leaf selections
2020-09-26 09:06:30 +02:00
3373c94895
Validate field selections on composite types
2020-09-26 07:57:25 +02:00
9bfa2aa7e8
Validate input fields have unique names
2020-09-24 05:47:31 +02:00
e9a94147fb
Validate variables are used
2020-09-22 04:42:25 +02:00
3e393004ae
Validate all variables are defined
2020-09-21 07:28:40 +02:00
38c3097bcf
Validate fragments are input types
2020-09-20 06:59:27 +02:00
21a7d9cce4
Validate variable names are unique
2020-09-19 18:18:26 +02:00
9a08aa5de7
Validate directives are unique per location
2020-09-18 07:32:58 +02:00
497b93c41b
Validate arguments have unique names
2020-09-17 10:33:37 +02:00
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
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
08998dbd93
Validate fragments don't form cycles
2020-09-11 08:03:49 +02:00
c2c57b6363
Validate all fragments are used
2020-09-09 17:04:31 +02:00
f6ff0ab9c7
Validate fragments on composite types
2020-09-07 22:01:49 +02:00
d327d9d1ce
Validate fragment spread type existence
2020-09-05 10:00:58 +02:00
14ed209828
Collect types from the subscription root
2020-09-04 19:12:19 +02:00
33318a3b01
Validate fragment spread target existence
2020-08-31 11:06:27 +02:00
7e78f98f09
Validate fragment name uniqueness
2020-08-28 08:32:21 +02:00
eebad8a27f
Validate operation name uniqueness
...
Fixes #52 .
2020-08-27 09:04:31 +02:00
e6a6926e18
Validate anonymous operation definitions
2020-08-26 18:58:48 +02:00
7355533268
Validate single root field in subscriptions
2020-08-25 21:03:42 +02:00
54dbf1df16
Remove encoder test based on old external files
2020-08-22 06:39:52 +02:00
44d506d4b5
Draft the Validation API
2020-07-20 21:29:12 +02:00