Ben Roberts
6bdb7b7f80
improve docstrings
2017-11-16 17:44:08 -05:00
Ben Roberts
af60f1ee4d
finish mechanical conversions
2017-11-16 17:42:38 -05:00
Ben Roberts
a1325eeb3f
top level API functions, docstrings
2017-11-16 15:53:20 -05:00
Ben Roberts
55f6d6cf47
interfaces and enums
2017-11-16 15:25:25 -05:00
Ben Roberts
6e95b81aee
dangerous changes consts
2017-11-16 14:17:21 -05:00
Ben Roberts
e649ef307a
couple more functions
2017-11-16 14:15:39 -05:00
Ben Roberts
3811181f49
some functions converted over
2017-11-16 13:53:01 -05:00
Ben Roberts
7aebf2dbf7
initial porting
2017-11-15 16:12:56 -05:00
Vladimir Razuvaev
1487741f37
Preserve description for custom scalars ( #181 )
2017-10-14 00:45:23 +07: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
c5efd1d65b
Additional checks for possible fragment spreads
2017-09-20 19:06:04 +07:00
Vladimir Razuvaev
1e34982bda
Additional tests for variable coercion + use printSafeJson vs printSafe for input variables
2017-09-20 18:40:45 +07:00
Vladimir Razuvaev
a1e06b2e61
Account for query offset in files for errors
2017-09-20 18:36:19 +07:00
Vladimir Razuvaev
6050af4e67
Add support for directives applied on IDL & Schema
2017-09-20 17:43:06 +07:00
Vladimir Razuvaev
5f5c8118c0
Fixed parseValue
of StringType and IDType: (it should return null on invalid value, not throw)
2017-09-20 16:38:02 +07:00
Vladimir Razuvaev
2023b427ae
Fixed failed integer test (only fails on some OSs and PHP versions)
2017-09-20 16:20:51 +07:00
Derek Lavigne
d22385cc93
Update query variable coercion to meet the rules outlined in the
...
specification.
The framework currently coerces query variables similar to the way it
treats output values, which means it attempts to coerce the value into
the field's corresponding data type regardless of the received value.
According to items 3f and 3g in section 6.1.2
(http://facebook.github.io/graphql/#sec-Validating-Requests ) of
Facebook's GraphQL specification query variables should be coerced
according to their type's input coercion rules laid out in section
3.1.1 (http://facebook.github.io/graphql/#sec-Scalars ). If the value
can not be coerced into the correct type according the the input
coercion rules for the type a query error should be thrown. This
ensures that client provided query variables were of the correct format
and will be a valid format and type by the time they are passed into an
implementing resolver.
This patch fixes the above issue by updating the way query variables
are sanitized during the process of parsing the query. It directly
follows the rules for scalar input coercion laid out by the
specification and throws query errors when a value that cannot be
coerced to the correct type is given. Tests for isValidPHPValue will
also be updated to ensure that it is doing the correct type checks on
Values::isValidPHPValue for the given type and value provided. A new
test case will also be added to test Values::getVariableValues and make
sure it is also enforcing the scalar input coercion rules and throwing
errors for invalid values.
2017-09-18 12:14:09 -04:00
Vladimir Razuvaev
6ff427d241
Server: do not raise an error when variables are passed as empty string ( #156 )
2017-08-30 23:26:45 +07:00
Vladimir Razuvaev
d95fb461ee
Server: fixed constructor screwed during rebasing + restored tests for the server
2017-08-21 01:18:23 +07:00
Vladimir Razuvaev
a1652468f0
Fixed minor error in docblock comment
2017-08-21 00:19:07 +07:00
Vladimir Razuvaev
6fdcfd9bb0
Merge branch 'master' of https://github.com/webonyx/graphql-php into v0.10
2017-08-20 23:16:51 +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
de791536ce
Docblocks improvements
2017-08-20 22:10:13 +07:00
Vladimir Razuvaev
d5e3d08d85
Minor Executor tweaks
2017-08-20 20:09:55 +07:00
Vladimir Razuvaev
085516bdda
Moved GraphQL\Language\AST\Node::fromArray
to GraphQL\Utils\AST::fromArray
2017-08-20 19:50:44 +07:00
Vladimir Razuvaev
bd444752f8
Documentation and docblock improvements
2017-08-20 16:00:44 +07:00
Vladimir Razuvaev
71343f2f62
Server: Extracted method for emitting response
2017-08-20 02:32:50 +07:00
Vladimir Razuvaev
1b4f983f3f
Improved docblock comments (suitable for reference docs generation)
2017-08-19 23:01:46 +07:00
Jeremiah VALERIE
1c143360ca
Add hooks to helps promise completion with custom backend
2017-08-18 16:18:48 +02:00
Vladimir Razuvaev
203fddfe4e
Abstract base class for validation rules
2017-08-18 20:56:04 +07:00
Vladimir Razuvaev
9499e5ae8e
Suppressing Config deprecation warning in tests
2017-08-18 18:07:23 +07:00
Vladimir Razuvaev
2bfce65484
Fixed Parser docblock comments
2017-08-18 02:55:22 +07:00
Vladimir Razuvaev
83cc9132a0
Server: minor improvements
2017-08-18 02:54:35 +07:00
Vladimir Razuvaev
d578b8a22f
Split sync and async facade methods
2017-08-18 01:49:10 +07:00
Vladimir Razuvaev
e52fe8c384
BuildSchema::build() now accepts DocumentNode as well
2017-08-17 20:33:36 +07:00
Vladimir Razuvaev
03629c1e3c
Refactored error formatting (debugging part)
2017-08-17 18:49:17 +07:00
Vladimir Razuvaev
1d38643538
Ability to re-throw resolver exceptions
2017-08-17 03:01:23 +07:00
Vladimir Razuvaev
51e877bfba
Improving docblock comments
2017-08-17 02:15:49 +07:00
Vladimir Razuvaev
b4d767bad6
Moved typeFromAST() to AST util
2017-08-17 02:14:55 +07:00
Vladimir Razuvaev
a50c9a4c1f
Renamed error category constants
2017-08-17 02:13:44 +07:00
Vladimir Razuvaev
4634f214ea
Revamping GraphQL facade methods
2017-08-17 02:12:37 +07:00
Vladimir Razuvaev
b56083b7de
Improved flexibility of error handling
2017-08-17 02:11:21 +07:00
Vladimir Razuvaev
1ee226465b
Server: added missing error message
2017-08-16 19:22:45 +07:00
Vladimir Razuvaev
f369d4e2d4
Reverted unnecessary breaking change
2017-08-15 23:39:07 +07:00
Vladimir Razuvaev
3971001f6d
Server: additional tests + related fixes
2017-08-15 20:59:48 +07:00
Vladimir Razuvaev
828c6b0fc3
Server: disable query batching by default; allow array as server config
2017-08-15 18:05:09 +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
e4813c3a05
Additional checks and tests for situations when user-land code returns duplicate type instances
2017-08-14 23:52:17 +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
34eae0b891
Schema validation + tests ( #148 )
2017-08-13 23:04:03 +07:00
Vladimir Razuvaev
d3580e959e
Moved Schema to GraphQL\Type namespace (but preserved BC)
2017-08-12 21:40: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
09070485c1
Added ability to decorate type configs in BuildSchema + made type creation lazy
2017-07-28 17:55:25 +07:00
Vladimir Razuvaev
3a8301f6c6
Allow types
schema option to be callable
2017-07-28 17:53:57 +07:00
Vladimir Razuvaev
6a20483b87
Server: Ability to use thunk for root value and context
2017-07-27 20:11:45 +07:00
Vladimir Razuvaev
e7838d2253
Do not output trace for trivial errors even in debug mode
2017-07-25 20:08:34 +07:00
Vladimir Razuvaev
3e6f2c9e83
Fixed minor bugs
2017-07-25 19:26:41 +07:00
Vladimir Razuvaev
1af902865b
AST: new NodeList
class for collections of nodes (vs array) to enable effective conversion of libgraphqlparser output to our AST tree
2017-07-21 22:29:59 +07:00
Vladimir Razuvaev
e04d3300a7
Server: send result for regular responses + prepare response for PSR7 request
2017-07-21 22:11:20 +07:00
Vladimir Razuvaev
b2ec265d4f
Server: ability to execute PSR7 request
2017-07-19 23:35:22 +07:00
Vladimir Razuvaev
87c812b221
Better located error handling
2017-07-19 20:08:42 +07:00
Vladimir Razuvaev
81986145fe
Server: moving things around to simplify
2017-07-19 19:55:22 +07:00
Vladimir Razuvaev
08a68d4857
Throwing GraphQL\Error\Error
vs GraphQL\Error\UserError
from type definitions
2017-07-19 19:39:10 +07:00
Vladimir Razuvaev
e6e531b88b
Server: throw only when there is a configuration or logic error (invariant violation)
2017-07-19 19:30:39 +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
fbcd20814a
Scalar type serialize
method now throws InvariantViolation
and parseValue
throws UserError
2017-07-18 20:52:39 +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
49208d758d
Server: use proper batching helper
2017-07-17 23:48:30 +07:00
Vladimir Razuvaev
919cf80240
Server: batched queries with shared deferreds (promises) #105
2017-07-17 20:31:26 +07:00
Vladimir Razuvaev
24ffd605f4
New method "Executor::promiseToExecute()" which always returns promise (even for SyncPromiseAdapter)
2017-07-17 19:47:29 +07:00
Vladimir Razuvaev
0e2ac57515
Split HTTP server execution to canonical replaceable steps: parsing, validation, execution with separate tests for each step
2017-07-17 16:57:30 +07:00
Vladimir Razuvaev
f8c3195e54
Granular methods for HTTP request parsing + tests
2017-07-16 19:04:58 +07:00
Vladimir Razuvaev
794d3672ef
Initial pass on standard server implementation (also deprecated current GraphQL\Server which is undocumented anyway)
2017-07-14 19:44:18 +07:00
Vladimir Razuvaev
a3b40db0fb
Enhanced Utils::printSafe() to output more information about arrays
2017-07-14 15:16:43 +07:00
Vladimir Razuvaev
3f04d29628
Ability to pass custom set of validation rules when executing a query (including empty set to skip validation) #134
2017-07-13 20:33:09 +07:00
Vladimir Razuvaev
37a42ededd
Query validation should pass if empty array of rules is provided
2017-07-13 02:39:24 +07:00
Vladimir Razuvaev
65d9472b0b
Moved PromiseAdapter to ExecutionContext; allow passing it to Executor::execute() directly vs setting statically
2017-07-12 19:44:04 +07:00
Vladimir Razuvaev
aaa5b7af41
Global config; descriptor moved to appropriate namespace; minor cleanup
2017-07-12 13:16:34 +07:00
Vladimir Razuvaev
296544089c
Moved GraphQL\Utils to GraphQL\Utils\Utils
2017-07-10 19:53:46 +07:00
Vladimir Razuvaev
ed28deda81
Replaced trigger_error with Warning for resolveType warning
2017-07-10 19:38:12 +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
463d995d95
Reverted #116 (now Executor::defaultFieldResolver checks for instanceof Closure vs is_callable again)
2017-07-08 15:22:17 +07:00
Vladimir Razuvaev
3beeb06340
Merge branches 'master' and 'v0.10' of https://github.com/webonyx/graphql-php into v0.10
...
# Conflicts:
# src/Utils/MixedStore.php
2017-07-06 19:50:23 +07:00
Vladimir Razuvaev
bc6a7a3d1d
Fix: allow MixedStore to accept true, false, null and floats as keys + related tests
2017-07-06 19:29:33 +07:00
Vladimir Razuvaev
24bcc65314
SchemaPrinter: reverted sorting of fields in printed version (as it breaks s = parse(print(s))
rule)
2017-07-05 19:45:02 +07:00
Vladimir Razuvaev
ea94ee7515
Utility function getDirectiveValues
+ related refactoring
2017-07-05 19:33:25 +07:00
Vladimir Razuvaev
a79a51d445
Schema Parsing: allow leading pipe for union type definitions
2017-07-05 19:01:13 +07:00
Vladimir Razuvaev
0b7d55c30d
SchemaPrinter: sort fields before printing to get more stable diff
2017-07-05 18:33:16 +07:00
Vladimir Razuvaev
9b9a74c1d1
Spec compliance: errors in buildExecutionContext() are caught and included in result rather than thrown
2017-07-05 17:33:59 +07:00
Vladimir Razuvaev
678cf5d0bf
Renamed argument of GraphQL::execute()
2017-07-05 16:26:02 +07:00
Vladimir Razuvaev
78d9ba0d5e
Allow providing default field resolver for execution call
2017-07-05 16:22:01 +07:00
Vladimir Razuvaev
9f4980ce49
Fix for broken build on PHP < 5.6
2017-07-04 22:18:55 +07:00
Vladimir Razuvaev
b47c87f793
Allow null values for enums
2017-07-04 20:19:52 +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
88b85c9761
Make 'errors' top property in response array
2017-07-04 16:29:30 +07:00
Vladimir Razuvaev
189877c173
Allow passing custom TypeInfo to validate
2017-07-04 16:19:16 +07:00
Vladimir Razuvaev
a53b798f29
Minor spelling fix
2017-07-04 16:12:56 +07:00
Vladimir Razuvaev
fc9ad7e37a
Unify wording in error messages
2017-07-04 14:02:35 +07:00
Vladimir Razuvaev
76e182e616
Forbid duplicate type definitions
2017-07-04 14:01:00 +07:00
Vladimir Razuvaev
c3db8de9e7
Note about dunderscore becoming hard error in next version
2017-07-04 13:58:56 +07:00
Vladimir Razuvaev
3e1fc1a922
Refactored isThenable checks in Executor
2017-07-04 13:47:50 +07:00
Vladimir Razuvaev
32376dd6ee
Fix: type safety for TypeInfo
2017-07-04 13:25:01 +07:00
Vladimir Razuvaev
4c96193027
Fix: isLeafType should not return true for ListOfType and NonNull wrappers
2017-07-04 13:17:09 +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
14ef8ef835
Fixed typo in buildSchema
2017-07-03 23:09:50 +07:00
Vladimir Razuvaev
d64c352262
Ability for interface types to resolve type asynchronously
2017-07-03 23:08:20 +07:00
Vladimir Razuvaev
445f579f09
Include expected type in isValidPHPValue error message
2017-07-03 18:24:58 +07:00
Vladimir Razuvaev
e30f2a99cf
Pass ResolveInfo in default field resolver when value is callable
2017-07-03 18:14:45 +07:00
Vladimir Razuvaev
faf81ef18a
Catch exceptions in isValidPHPValue and return corresponding error message
2017-07-03 18:12:12 +07:00
Vladimir Razuvaev
b471938f16
Consistent validation of type names + reject names starting with __
2017-07-03 18:04:08 +07:00
Vladimir Razuvaev
b147b528e2
Merge branch 'v0.10' of https://github.com/webonyx/graphql-php into v0.10
2017-06-27 16:41:31 +07:00
Vladimir Razuvaev
21e3445754
Merge pull request #116 from leocavalcante/resolve-callables
...
Resolve callables by default
2017-06-27 00:37:30 +07:00
Vladimir Razuvaev
1657f0e9bd
Merge branch 'master' into v0.10
2017-06-26 17:47:36 +07:00
Daniel Tschinder
65ef159ddc
Support PHP7 error exceptions everywhere
...
Also replace \Error with \Throwable
2017-06-25 07:33:28 -07:00
Vladimir Razuvaev
61368c59f2
Merge branch 'master' of https://github.com/webonyx/graphql-php
2017-06-24 22:45:40 +07:00
Vladimir Razuvaev
a0657b7847
Refactored Lexer algorithm for better performance. Now O(N) vs O(N^2) previously ( #137 )
2017-06-24 22:42:55 +07:00
Vladimir Razuvaev
141afc1cf7
Merge pull request #131 from n1ru4l/feature-disable-introspection-validation-rule
...
Add DisableIntrospection validation rule
2017-06-19 13:35:23 +07:00
Simon Podlipsky
6a4785dc4a
Fixed incorrect type hints in method docs
2017-06-18 12:29:29 +02:00
Laurin Quast
719a438628
Adds DisableIntrospection validation rule to the DocumentValidator (default: disabled)
2017-06-17 14:51:38 +02:00
Laurin Quast
1c62f554ae
Implements DisableIntrospection validation rule
2017-06-17 14:50:24 +02:00
Vladimir Razuvaev
ffc4542cd0
Improvements in config validation
2017-06-12 22:48:48 +07:00
Vladimir Razuvaev
e7cde5ecf3
Fixed broken 5.4 build
2017-06-03 17:17:42 +07:00
Vladimir Razuvaev
bc4b990946
Do not run query complexity validation if there were other validation errors (as it will throw and mess up previous validation results), see #125
2017-06-03 17:07:01 +07:00
Vladimir Razuvaev
bc6c0e2eea
Reverted float literal parsing, as it was not the cause of #125
2017-06-03 16:48:29 +07:00
Vladimir Razuvaev
4eb68bf63f
Do not parse invalid input strings as floats (see #125 )
2017-06-03 14:04:47 +07:00
Vladimir Razuvaev
6fb62b25b3
Fixed "out of memory" error for edge cases of resolveType()
calls
2017-05-29 22:54:35 +07:00
Jeremiah VALERIE
6d5b4e5a37
Use dedicated exception for scalar type parsing error
2017-05-29 10:32:48 +02:00
leocavalcante
e07c86bd5e
Default resolve callables
2017-05-07 19:21:20 -03:00
Vladimir Razuvaev
848f9c3edf
Preserve backwards compatibility of Ast\Node::toArray(): do shallow conversion by default
2017-04-25 18:02:45 +07:00
Vladimir Razuvaev
835e4e6b2d
Removed unnecessary loc entry in AST\Node::toArray()
2017-04-25 18:00:06 +07:00
Pascal de Vink
11a1b13b72
Use directives to calculate query complexity
2017-04-24 14:21:58 +02:00
Andreas Heiberg
ed8bf4e2b2
fix __toString() for AST Node
...
previously it would only shallowly convert to array causing json_encode to fail
2017-04-07 11:34:33 +01:00
Decebal Dobrica
51e67d49c7
php merge for associative array non-integer intexed
2017-03-16 10:21:26 +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
Vladimir Razuvaev
827bfa7907
Server: added missing return $this;
statements
2017-02-27 18:19:09 +07:00
Vladimir Razuvaev
34ca931533
Sanity check to ensure that GraphQL query is string
2017-02-24 17:14:30 +07:00
Vladimir Razuvaev
3f909e3e11
Separate utility for extractTypes
2017-02-24 16:29:28 +07:00
Bernhard Schussek
e35b57601d
Fixed SyncPromiseAdapter::all() to not change the order of arrays
2017-02-23 11:45:13 +01:00
petecoop
664af3d44a
use constants
2017-02-20 10:31:11 +00:00