Daniel Tschinder
97e8a9e200
Move schema validation into separate step (type constructors)
...
This is the second step of moving work from type constructors to the schema validation function.
ref: graphql/graphql-js#1132
2018-02-15 12:14:08 +01:00
Daniel Tschinder
9387548aa1
Better Predicates
...
Introduces new assertion functions for each kind of type mirroring the existing ones for the higher order types.
ref: graphql/graphql-js#1137
2018-02-13 18:04:03 +01:00
Daniel Tschinder
60df83f47e
Preserve original coercion errors, improve error quality.
...
This is a fairly major refactoring of coerceValue which returns an Either so it can return a complete collection of errors. This allows originalError to be preserved for scalar coercion errors and ensures *all* errors are represented in the response.
This had a minor change to the logic in execute / subscribe to allow for buildExecutionContext to abrupt complete with multiple errors.
ref: graphql/graphql-js#1133
2018-02-13 16:51:44 +01:00
Daniel Tschinder
06c6c4bd97
Validate schema root types and directives
...
This moves validation out of GraphQLSchema's constructor (but not yet from other type constructors), which is responsible for root type validation and interface implementation checking.
Reduces time to construct GraphQLSchema significantly, shifting the time to validation.
This also allows for much looser rules within the schema builders, which implicitly validate while trying to adhere to flow types. Instead we use any casts to loosen the rules to defer that to validation where errors can be richer.
This also loosens the rule that a schema can only be constructed if it has a query type, moving that to validation as well. That makes flow typing slightly less nice, but allows for incremental schema building which is valuable
ref: graphql/graphql-js#1124
2018-02-13 10:42:35 +01:00
Daniel Tschinder
ff63e07b05
Improve introspection types + new getIntrospectionQuery()
...
This adds a new function `getIntrospectionQuery()` which allows for some minor configuration over the resulting query text: to exclude descriptions if your use case does not require them.
ref: graphql/graphql-js#1113
2018-02-11 18:19:52 +01:00
Daniel Tschinder
4e26de3588
Support for union types when using buildSchema
...
* Adds support for resolving union/interface types when using a generated schema
* Move resolveType __typename checking into defaultResolveType
* Clean up existing tests and improve error messages
ref: graphql/graphql-js#947
# Conflicts:
# src/Utils/BuildSchema.php
# tests/Utils/BuildSchemaTest.php
2018-02-10 18:45:01 +01:00
Adrien Crivelli
5cbaf973e1
Leverage PHPUnit setExpectedException()
instead of custom code
...
Closes #219
2018-01-01 18:06:08 +09:00
Jáchym Toušek
f6c3fe3758
indentation
2017-12-12 13:36:20 +01:00
Jáchym Toušek
9e2c1dae87
Add test
2017-12-12 09:53:15 +01:00
Vladimir Razuvaev
f7248dec76
Ability to override internal types (using types
option of Schema class) #174
2017-09-22 23:08:51 +07:00
Vladimir Razuvaev
6050af4e67
Add support for directives applied on IDL & Schema
2017-09-20 17:43:06 +07:00
Vladimir Razuvaev
90602b31ba
Added link to docs for generic error about unique type instance ( #149 )
2017-08-20 22:28:17 +07:00
Vladimir Razuvaev
1b4f983f3f
Improved docblock comments (suitable for reference docs generation)
2017-08-19 23:01:46 +07:00
Vladimir Razuvaev
9499e5ae8e
Suppressing Config deprecation warning in tests
2017-08-18 18:07:23 +07:00
Vladimir Razuvaev
f369d4e2d4
Reverted unnecessary breaking change
2017-08-15 23:39:07 +07:00
Vladimir Razuvaev
9931cde6d4
Tests for lazy type loading during query execution + related changed
2017-08-15 01:49:56 +07:00
Vladimir Razuvaev
8817d54e83
Validate that type loader always returns the same type instance as referenced in other parts of the schema
2017-08-14 22:32:07 +07:00
Vladimir Razuvaev
b9d3a11785
Extracted lazy schema test; minor related refactoring
2017-08-14 20:41:08 +07:00
Vladimir Razuvaev
f47db61907
Fully load all schema types in constructor when type loader is not set
2017-08-14 19:44:16 +07:00
Vladimir Razuvaev
884a8967f3
Type loader tests
2017-08-14 19:42:01 +07:00
Vladimir Razuvaev
20f8cab943
Removed schema descriptor (as lazy loading of types can work without it now)
2017-08-14 01:42:02 +07:00
Vladimir Razuvaev
f9eb14869f
Removed callbacks in field types (previously deprecated in #35 )
2017-08-14 00:50:24 +07:00
Vladimir Razuvaev
6845b28a35
Deprecated GraphQL\Type\Definition\Config
( #148 )
2017-08-14 00:09:02 +07:00
Vladimir Razuvaev
ed3591c1a9
Fixed broken build
2017-08-13 23:24:23 +07:00
Vladimir Razuvaev
34eae0b891
Schema validation + tests ( #148 )
2017-08-13 23:04:03 +07:00
Vladimir Razuvaev
f911fac7b1
Default error reporting now includes "category" key for every error
2017-08-08 02:02:07 +07:00
Vladimir Razuvaev
38922dbbed
Default error formatter now returns "Internal server error" unless error is client-aware and safe to report directly to end-users
2017-07-18 20:57:30 +07:00
Vladimir Razuvaev
8e3d1eb29b
Merge branch 'master' of https://github.com/webonyx/graphql-php into v0.10
2017-07-18 00:42:52 +07:00
Vladimir Razuvaev
8fe26a1a21
String and ID types should not try to convert non-scalar values to string ( #121 )
2017-07-18 00:25:45 +07:00
Vladimir Razuvaev
296544089c
Moved GraphQL\Utils to GraphQL\Utils\Utils
2017-07-10 19:53:46 +07:00
Vladimir Razuvaev
9551569ffe
Merge branch 'lazy-types' into v0.10
...
# Conflicts:
# src/Executor/Executor.php
2017-07-10 17:11:41 +07:00
Vladimir Razuvaev
f569c6de2d
Spec compliance: coercion of Int values
2017-07-04 18:27:20 +07:00
Vladimir Razuvaev
90e1ea4d22
Added tools for warnings with ability to suppress them
2017-07-04 17:13:05 +07:00
Vladimir Razuvaev
1c41fb27ed
Added test for enums with null
values
2017-07-04 16:27:40 +07:00
Vladimir Razuvaev
c3db8de9e7
Note about dunderscore becoming hard error in next version
2017-07-04 13:58:56 +07:00
Vladimir Razuvaev
c5484ae6f9
Convert error to warning for non-compliant usage of __ in names
2017-07-04 00:28:17 +07:00
Vladimir Razuvaev
34bd378c7e
Refactored executor logic related to isTypeOf
2017-07-04 00:09:32 +07:00
Vladimir Razuvaev
29c1132554
getValue() for EnumType (and getEnumValue() for TypeInfo)
2017-07-03 23:23:12 +07:00
Vladimir Razuvaev
445f579f09
Include expected type in isValidPHPValue error message
2017-07-03 18:24:58 +07:00
Vladimir Razuvaev
7937b15855
Fixed several typos
2017-07-03 18:04:32 +07:00
Vladimir Razuvaev
b471938f16
Consistent validation of type names + reject names starting with __
2017-07-03 18:04:08 +07:00
Jeremiah VALERIE
6d5b4e5a37
Use dedicated exception for scalar type parsing error
2017-05-29 10:32:48 +02:00
Decebal Dobrica
ca92ae4688
pass failing test
2017-03-16 15:41:29 +00:00
Decebal Dobrica
0bedebe392
fragment type caps
2017-03-16 15:09:09 +00:00
Decebal Dobrica
c51dda097a
fix tests typo
2017-03-16 15:00:01 +00:00
Decebal Dobrica
b9550d3ecb
replies aliased
2017-03-16 14:44:21 +00:00
Decebal Dobrica
7bed5ef4a8
add replies fragments
2017-03-16 14:43:47 +00:00
Vladimir Razuvaev
f77bd17eba
ResolveInfo: Take in account inline fragments in getFieldSelection()
2017-03-10 19:21:27 +07:00
Vladimir Razuvaev
ce9bf33f20
Ability to load types in schema on demand ( #69 )
2017-03-05 03:26:22 +07:00
petecoop
fc629a292d
BuildSchema and SchemaPrinter
2017-02-19 19:26:56 +00:00