Commit Graph

542 Commits

Author SHA1 Message Date
Vladimir Razuvaev
9944a689bf Exclude nulls from serialized AST 2018-01-13 16:25:06 +07:00
Vladimir Razuvaev
8b17953fe5 Fixed bug preventing use of parser noLocation option for serialization / deserialization 2018-01-13 15:45:09 +07:00
Vladimir Razuvaev
7c3737609f Doc-block fix 2018-01-01 22:12:51 +07:00
Adrien Crivelli
178b179db3
Drop support non pre-parsed PSR-7 request body
This revert #202 (commit 9d37f4c) because trying to parse PSR-7 request
was a mistake. The whole point of PSR-7 is to allow for interoperability
and be able to use specialized libs for body parsing (amongst many other
things). Trying to parse ourselves would be opening a can of worm if/when
other content types have to be supported. It is more correct and future
safe to require that the body is parsed before being passed to GraphQL.
2017-12-21 15:01:57 +09:00
Jáchym Toušek
25e341e9d9
Allow objects with __toString in IDType 2017-12-12 08:56:03 +01:00
Vladimir Razuvaev
9c563d5c00
Merge pull request #199 from roippi/findbreakingchanges
port findBreakingChanges
2017-11-28 20:14:36 +07:00
Vladimir Razuvaev
0af2fe79f2 StandardServer: a bit more validation for parsed json PSR-7 request (related to #202) 2017-11-28 12:28:54 +07:00
Adrien Crivelli
11c9429fab
Support non pre-parsed PSR-7 request body
Because PSR-7 specification only specify that `getParsedBody()` **may**
return the parsed body for `application/json`, we cannot assume that it
is always the case. So if the value returned parsed body is an empty array,
it means we should try to parse it ourselves (`null` would mean no body at
all according to spec).

With this modification we try to used given parsed body, but fallback on
trying to parse the body if necessary. This leave the door open to custom
implementation of parsing if needed, while making it easier to use out of
the box.
2017-11-26 19:57:32 +09:00
Ben Roberts
533b8b8b5f testDetectsAdditionsToUnionType 2017-11-21 12:18:28 -05:00
Ben Roberts
c4ae03454a testFindDangerousArgChanges 2017-11-21 11:50:11 -05:00
Ben Roberts
dbccf9b196 testDetectsRemovalOfInterfaces 2017-11-20 14:39:06 -05:00
Ben Roberts
0fd5abc833 testDetectsAdditionOfFieldArg 2017-11-20 13:48:21 -05:00
Ben Roberts
42d8ac07f9 testDetectsFieldArgumentTypeChange 2017-11-20 12:52:49 -05:00
Ben Roberts
4ea6cbe839 bugfix var ref 2017-11-17 17:35:33 -05:00
Ben Roberts
fc9c5e85aa testDetectsRemovalOfFieldArgument 2017-11-17 17:18:26 -05:00
Ben Roberts
cac011246e testDetectsValuesRemovedFromEnum 2017-11-17 16:24:04 -05:00
Ben Roberts
98ce1ccc69 testDetectsIfTypeWasRemovedFromUnion 2017-11-17 16:08:44 -05:00
Ben Roberts
dde2747918 testDetectsNonNullFieldAddedToInputType 2017-11-17 15:56:53 -05:00
Ben Roberts
cf4cccf4d6 testShouldDetectInputFieldChanges 2017-11-17 15:43:16 -05:00
Ben Roberts
68dbcc9ca3 testShouldDetectFieldChangesAndDeletions test 2017-11-17 14:29:47 -05:00
Ben Roberts
b2b5d6f080 findTypesThatChangedKind test 2017-11-17 13:04:01 -05:00
Ben Roberts
d9ce567cc8 findRemovedTypes test 2017-11-17 11:21:05 -05:00
Ben Roberts
4207adc098 change fns to static 2017-11-17 10:54:18 -05:00
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
petecoop
fc629a292d BuildSchema and SchemaPrinter 2017-02-19 19:26:56 +00:00
Adam Dumas
97674cbbb9 Fixed Utils::assign() bug relating to detecting missing required keys 2017-02-13 12:50:34 -05:00
jane-olszewska
060dc51595 Set schema element description to strings retrieved from a continuous chunk of comment tokens immediately preceding the element 2017-02-06 18:33:21 +00:00
jane-olszewska
dd31ab2b80 Added a description field to schema type definition classes 2017-02-06 18:33:18 +00:00
jane-olszewska
bbb5cf1e4d Fixed comment token extraction: will no longer read one character from the next line 2017-02-06 18:13:43 +00:00
vladar
c18cd16960 GraphQL\Server: set PromiseAdapter before executing query 2017-01-26 19:24:53 +07:00
vladar
d10e933a00 Merge branch 'master' of https://github.com/webonyx/graphql-php 2017-01-26 19:18:40 +07:00
vladar
c545474715 Fixed DocBlock comment 2017-01-26 19:00:10 +07:00
vladar
2ddae2bf88 Added EXPERIMENTAL note for code related to type resolution strategies 2017-01-26 18:59:14 +07:00
Daniel Tschinder
1ff9c429d6 Fix typo in DocBlock 2017-01-26 11:18:53 +01:00
vladar
e2875953e1 Tests for new GraphQL\Server facade 2017-01-19 19:23:00 +07:00
vladar
8e75cc3d60 Merge branch 'master' of https://github.com/webonyx/graphql-php 2017-01-19 11:55:10 +07:00
OwlyCode
d022b19b4e Added compatibility with php7 error handling. 2017-01-12 17:18:25 +01:00
vladar
ceaf798b07 Merge branch 'master' of https://github.com/webonyx/graphql-php 2016-12-23 22:42:05 +07:00
Juuso Leinonen
90c4b5d9fa Changed ReactPromiseAdapter::all to preserve the array key order and added tests 2016-12-22 15:08:28 +02:00
vladar
296cc7530d Added Server class as a new facade for library, including HTTP endpoint compatible with express-graphql format 2016-12-19 20:40:46 +07:00
vladar
ff3a40d329 Execution: modified deferred behavior to be more predictable (+added more tests for them) 2016-12-17 05:14:51 +07:00
vladar
9e8e77a071 Execution: Calling resolve function directly (vs calling it via call_user_func) 2016-12-15 15:34:27 +07:00
vladar
078a1efd50 Added GraphQL\GraphQL::setDefaultFieldResolver() 2016-12-14 20:18:10 +07:00
vladar
2043cc7e75 Introduced type resolution strategies: eager and lazy (for #69) 2016-12-14 17:12:09 +07:00
vladar
ae57a72461 Deleted unused SchemaValidator 2016-12-08 06:05:40 +07:00
vladar
51d816d280 Tests for Config 2016-12-08 04:16:13 +07:00
vladar
c5bba0e7d4 Cleaning up old unused messages 2016-12-06 03:45:52 +07:00
vladar
a165c3aaab Shortened method names of PromiseAdapter 2016-12-04 15:53:23 +07:00
vladar
7ab75cd05a Execution: tests are green 2016-12-03 04:11:14 +07:00
vladar
ab4ae779af Execution: fixed rejection issue in sync promise 2016-12-03 02:48:51 +07:00
vladar
e97ca7f971 Execution: added SyncPromiseAdapter and made it default for Executor (+removed GenericPromiseAdapter) 2016-12-03 02:14:14 +07:00
vladar
48d78412ec Execution: refactored promise adapters 2016-12-03 02:06:28 +07:00
vladar
3a375bb78e Simple implementation of Promises A+ for our sync case (using queue) 2016-12-02 18:43:54 +07:00
vladar
821e96508b Execution: added promiseForAssocArray method for cases when result contains promise 2016-12-01 18:29:50 +07:00
vladar
418ee48b20 Execution: moved then method to promise adapter 2016-12-01 17:52:42 +07:00
vladar
77244d3aab Refactored executor: now works as instance with exeContext and promise adapter as properties 2016-12-01 17:09:22 +07:00
Jeremiah VALERIE
dd9062d77e Add a generic promise support.
Make lib supports promises, using a promise adapter interface.
2016-11-26 20:50:01 +01:00
vladar
4945317406 Fixing broken build for 0.8 2016-11-25 18:45:38 +07:00
vladar
c08cc2b00b Fixing broken build for 0.8 2016-11-25 18:18:53 +07:00
vladar
0969073b8a Reverted DefinitionContainer (YAGNI) 2016-11-25 16:54:57 +07:00
vladar
7c0aa4ceec Better docs and comments on breaks and deprecations for 8.0 2016-11-25 16:37:00 +07:00
vladar
b665d267c3 Changed scope of Schema props (and some others) to private 2016-11-25 16:35:46 +07:00
vladar
16bfc12ab1 Moved directive location constants to separate class 2016-11-25 16:30:35 +07:00
vladar
018ac819cf Removed deprecated error classes and added class_alias for them instead in deprecated.php 2016-11-25 16:03:04 +07:00
vladar
3d4cd15678 Added file with deprecations (for moved/renamed classes) 2016-11-25 16:02:19 +07:00
vladar
63d44fe002 Disabled deprecation notice for ResolveInfo->fieldASTs (until next version) 2016-11-19 17:37:54 +07:00
vladar
660200ed50 GraphQL\Language\AST\NodeType -> GraphQL\Language\AST\NodeKind 2016-11-19 17:31:47 +07:00
vladar
7340e30753 Types are now serializable to JSON (output their name) 2016-11-19 17:25:34 +07:00
vladar
04550f805f Differentiate between input values with no default and with default = null 2016-11-19 17:21:22 +07:00
vladar
5a17ae8246 Clearer lexer errors 2016-11-19 17:08:20 +07:00
vladar
0ab55ec0d9 Replaced "AST" with "Node" in variable names for better readability 2016-11-19 06:47:55 +07:00
vladar
5aad8b596b Consistent docblock comments for arrays 2016-11-19 06:19:41 +07:00
vladar
8d696edee5 Renamed AST nodes to *Node to disambiguate types 2016-11-19 06:12:18 +07:00
vladar
5ce9a7009a Renamed default resolver 2016-11-19 04:22:08 +07:00
vladar
439959b292 Enforce input coercion rules 2016-11-19 04:15:40 +07:00
vladar
f672f0c90c Added validation rule for unique directives per location 2016-11-19 00:21:56 +07:00
vladar
8a676cde99 Support for NullValue 2016-11-18 23:59:28 +07:00
vladar
5d889ccacd Reverted several breaking changes from #75; tests are green 2016-11-16 18:37:35 +07:00
Andreas Heiberg
b2c8d8eeb1 [style changes] Lexer 2016-11-16 18:14:46 +07:00
Andreas Heiberg
d8ca5f4183 move to NodeType enum 2016-11-16 18:07:56 +07:00
Andreas Heiberg
816fa067b3 type hint Name node in visitor 2016-11-16 18:06:25 +07:00
Andreas Heiberg
46788f2ddb move NodeTypes enum to seperate class 2016-11-16 18:02:58 +07:00
Andreas Heiberg
2e25f51829 [style change] put VisitorOperation up top 2016-11-16 17:30:25 +07:00
Andreas Heiberg
80a662564e [style changes] arrays and callback 2016-11-16 17:29:50 +07:00
Andreas Heiberg
3c98963f72 remove static functions from Printer 2016-11-16 17:22:57 +07:00
vladar
bacb0649c2 Minor objectType refactoring 2016-11-11 01:00:32 +07:00
vladar
add2621a33 Replaced directive locations array with constants 2016-11-08 16:55:33 +07:00
vladar
1927102183 Minor executor tweaks 2016-11-07 19:52:44 +07:00
vladar
6023c0ff60 Refactoring abstract type resolution 2016-11-07 17:28:47 +07:00
vladar
afbd5dbc90 Removed last traces of field memoization 2016-11-07 16:26:02 +07:00
vladar
1672bd33e3 Minor comments improvement 2016-11-02 05:08:17 +07:00
vladar
61245213c4 Minor instanceof tweak 2016-11-02 00:41:44 +07:00
vladar
22e41a3729 Validate type/field/argument names 2016-11-02 00:14:44 +07:00
vladar
3b0e52f254 Updated AST Utils to match the behavior of reference implementation 2016-11-02 00:11:33 +07:00
vladar
443845d1f9 Added missing short-hand notation for input type fields 2016-11-02 00:07:10 +07:00
vladar
8f80389ecf Moved parse/serialize methods from abstract ScalarType class to LeafType interface (as EnumType implements them as well) 2016-11-01 23:50:18 +07:00
vladar
e56eb6e10d Replaced \UnexpectedValueException with GraphQL\Error\InvariantViolationException; Improved some instanceof checks 2016-11-01 23:40:37 +07:00
vladar
19436c326d Infer type name from className for enum and scalar types as well 2016-10-24 16:47:39 +07:00
vladar
e4fa881cc3 Infer type name from class name for those using inheritance 2016-10-23 21:32:54 +07:00
vladar
2ef58a615f Several minor tweaks 2016-10-23 05:06:36 +07:00
vladar
9941a0143a Added DefinitionContainer interface to enable compositional use of user-land types (vs extending ObjectType, InterfaceType, etc). Very similar to IteratorAggregate vs Iterator 2016-10-23 05:05:50 +07:00