Commit Graph

554 Commits

Author SHA1 Message Date
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
vladar
c11f25794a Deprecated callbacks in "type" option of field/argument definitions (see #35) 2016-10-23 00:49:25 +07:00
vladar
276a58f6d1 Reverted one minor breaking change 2016-10-22 17:19:40 +07:00
vladar
a612b780c9 Return stdClass vs empty array for empty ObjectType values (see #59) 2016-10-22 17:16:47 +07:00
vladar
6c076e21d4 Another minor improvement to error formatting 2016-10-21 18:36:49 +07:00
vladar
7f1d74f980 Improved error reporting for invalid field definitions 2016-10-21 18:17:20 +07:00
vladar
927997a705 Various tools for better error reporting / formatting 2016-10-21 17:46:35 +07:00
vladar
2675b65095 Moved all error-related classes to separate namespace; fixed related broken tests 2016-10-21 16:40:56 +07:00
vladar
2b305ad6e2 Updated config validation rules 2016-10-21 15:52:58 +07:00
vladar
6d7a4a4f34 Fixed tests broken by recent changes to serialized error format 2016-10-21 15:28:24 +07:00
vladar
c25a29213c Fixed reported path for error; deprecated old FormattedError tool 2016-10-21 04:47:07 +07:00
vladar
2369454687 Minor comment tweaks + ability to define enum values as simple k=>v pairs 2016-10-21 03:10:06 +07:00
vladar
3ba187ec04 Added missing one-line shorthand for field arguments 2016-10-21 00:06:34 +07:00
vladar
fc37515ec2 Replaced instanceof check with is_array for shorthand notation of field definitions (as instanceof might be pretty slow) 2016-10-20 19:15:20 +07:00
vladar
5148c3bf03 Allow one-liner shorthand for field definitions (#47) 2016-10-20 19:09:48 +07:00
vladar
09cc313072 Allow to define enum values by simply passing array of strings, e.g. 'values' => ['ONE', 'TWO', 'THREE'] 2016-10-20 19:01:30 +07:00
vladar
0a79be8409 Updated introspection query and related tests for recent changes 2016-10-19 01:35:18 +07:00
vladar
236021acf8 Added deprecated directive; changed custom directives handling in schema; various minor tweaks 2016-10-19 01:34:46 +07:00
vladar
7625d6abf1 Scalar serialization now throws on spec-incompatible values vs returning null 2016-10-19 01:23:38 +07:00
vladar
0a182ac53c Improved enums (now they can handle complex values) 2016-10-19 01:21:47 +07:00
vladar
7f22d4b874 Spec compliance improvement: data key should not exist in response when it is null / missing (#56) 2016-10-18 22:25:39 +07:00
vladar
3e2d9459aa resolveType for interface/unions is now allowed to return type name vs instance 2016-10-18 22:23:20 +07:00
vladar
89eb6dede9 Breaking change when returning Closure from resolver: this closure is expected to have different signature now (shouldn't affect most of the users) 2016-10-18 22:20:51 +07:00
vladar
a94640f9d2 Enabled GraphQL\Error to include path to failed value during execution step (not location in source query, but exact path to value, including index in array, etc) + tests for errors 2016-10-18 22:15:21 +07:00
vladar
357166791a Consistent coding style + doc block comments for Types and Utils 2016-10-17 19:14:29 +07:00
vladar
cd14146032 Updated parser to consume latest lexer; New public parser API methods: parseType and parseValue; added directives to schema parser/printer 2016-10-17 02:57:24 +07:00
vladar
3eeb4d450b Reworked lexer: tokens are now represented as double linked list 2016-10-17 02:53:50 +07:00
Vladimir Razuvaev
f91cbf3409 Merge pull request #51 from geshido/master
Fix fatal error with deprecated directive fields in introspection query
2016-09-16 16:48:07 +07:00
vladar
4b651d80a5 Fixed php notice with deprecated schema constructor 2016-09-15 17:32:54 +07:00
Yury
6b97439877 Fix fatal error when GraphiQL tries to run introspection query 2016-09-15 15:47:56 +07:00
Yury
dab3e52242 Fix fatal error 2016-09-15 14:34:50 +07:00
vladar
f7c8c670fe Fixed syntax errors specific to PHP5.5- to still support PHP5.4+ 2016-09-14 18:47:34 +07:00
vladar
26db43e7c4 Enabled subscriptions in executor 2016-09-14 18:47:34 +07:00
vladar
31f40f5e26 Fixed scalar Int to respect min/max values according to graphql spec; added descriptions to scalars 2016-09-14 18:47:34 +07:00
vladar
c3d7a49a08 Updated executor and it's tests for april2016 specs 2016-09-14 18:47:34 +07:00
vladar
00f12b3197 Fixed definition tests; added enum tests 2016-09-14 18:41:02 +07:00
vladar
183a9d72cf Introspection for april 2016 spec + fixed tests 2016-09-14 18:41:02 +07:00
vladar
e7c7924dc0 New AST utils + test 2016-09-14 18:41:02 +07:00
vladar
a6a4f7862b Several validator fixes 2016-09-14 18:41:02 +07:00
vladar
e82f887918 Fixed visitor; more visitor tests 2016-09-14 18:41:02 +07:00
vladar
800d8ba25f Continue updating validator rules for april2016 spec 2016-09-14 18:41:02 +07:00
vladar
8ab7a9a438 Implemented covariant return types for interface fields (#23) 2016-09-14 18:41:02 +07:00
vladar
f1ddc98390 Updating validator rules for april2016 spec 2016-09-14 18:41:02 +07:00
vladar
17081cec1c More AST visitor tests 2016-09-14 18:41:02 +07:00
vladar
687b023616 Schema language parsing / printing 2016-09-14 18:41:02 +07:00
vladar
4f4776726d Updated parser to 2016 spec version; schema language parsing 2016-09-14 18:41:02 +07:00
vladar
86adfde0a0 Updated AST to 2016 spec version 2016-09-14 18:41:02 +07:00
vladar
c053169671 Updated Lexer and LexerTest to april 2016 spec 2016-09-14 18:41:02 +07:00
Matthew Leverton
7c6f216578 Change Lexer::readString to decode escaped characters to their literal values 2016-07-14 13:32:57 -05:00
Jeremiah VALERIE
3ae6c73367 Removed memoization on executor resolveField (see #43) 2016-06-10 11:57:43 +02:00
Jeremiah VALERIE
be46b14441 Fix ResolveInfo::getFieldSelection() when using multiple fragments on the same field. 2016-05-18 16:20:53 +02:00
Jeremiah VALERIE
de4eba7077 Fix interface implementaion when interface is extends. 2016-04-25 14:44:08 +02:00
Jérémiah VALERIE
327cc52601 Add ExecutionResult $extensions
https://facebook.github.io/graphql/#sec-Response-Format
2016-04-25 14:44:08 +02:00
vladar
4d024ee85e Test for lazy interface initialization + minor related tweak 2016-04-20 18:04:11 +06:00
Jeremiah VALERIE
3c6305c121 * Optimized implementation to interfaces using lazy loader
* Union types now accepting callback
2016-04-19 21:26:13 +02:00
Jeremiah VALERIE
545fe616a0 Add Complexity and Depth Query Security 2016-04-09 15:31:07 +02:00
Jeremiah VALERIE
2168d56d2d * Named default rules
* add accessors to ease rules management
* replace self by static on public methods to help extending DocumentValidator class
2016-04-09 08:44:57 +02:00
vladar
68d8681983 #30 Fixed recursion bug in ResolveInfo::getFieldSelection() 2016-04-01 16:30:52 +06:00
Jérémiah VALERIE
8763c94ea3 setDefaultResolveFn should be static
To ease override of $defaultResolveFn the setter should be `static`
2016-03-12 00:30:46 +01:00
vladar
d37fb34e96 Ability to define interface fields with closure 2016-02-27 12:29:45 +06:00
vladar
f548de59fe Fixes for definition config validation after recent changes 2016-02-25 15:23:42 +06:00
vladar
b890ef7cfe Ability to define InputObjectType fields with closure (#22) 2016-02-24 23:25:36 +06:00
vladar
cc6c6a14f5 Expose original type configs for custom app-level metadata 2016-01-21 17:07:05 +07:00
vladar
98e5835620 Avoid infinite loop when using recursive types and interfaces (#16) 2016-01-01 19:16:25 +06:00
Andy Truong
968da9d122 Add subscriptionType. 2015-12-21 06:35:22 +07:00
vladar
68fb4ceb9c Refactored facade to simplify custom output formatting 2015-11-02 20:39:51 +06:00
vladar
c81605bfb1 Fixed bug with failing error reporting for mismatching interface / union implementations 2015-10-25 19:35:36 +06:00
vladar
ea4d43f00f Better approach for latest performance tweaks (#8) 2015-10-25 19:08:24 +06:00
vladar
3b3da9e066 Several performance improvements (#8) 2015-10-25 14:23:15 +06:00
vladar
d982bad63a Make sure default argument values are passed to resolve function (#4) 2015-10-23 17:30:02 +06:00
vladar
965c3ff743 Minor executor refactoring related to handling "resolve" errors 2015-10-23 15:45:40 +06:00
vladar
83f42825f8 Reverted mapping executor (#6) 2015-10-23 15:44:01 +06:00
vladar
197c2d3532 Allow thunks for Union possible types + preserve original type config with Union (for custom user-land definitions) 2015-10-17 17:37:40 +06:00
vladar
5f2b2376e0 Allow custom attributes in type definitions for user-land metadata 2015-10-17 17:35:56 +06:00
vladar
2d54f654c2 Fine-grained type checks for Executor 2015-10-17 17:34:51 +06:00
vladar
25c42e6b52 Added Utils::groupBy as a convenience tool 2015-09-06 15:50:16 +06:00
vladar
c312f73df3 Oops, added missing parseValue for EnumType 2015-09-06 15:49:23 +06:00
vladar
83e33659cb Do not mess with original value in executor. Copy it instead. 2015-09-06 15:48:16 +06:00
vladar
3edf6248b0 Mapping Executor 2015-09-01 01:44:03 +06:00
vladar
aeb56d139a Ability to receive list of requested fields from ResolveInfo (recursively) 2015-08-30 13:48:17 +06:00
vladar
74b922ce68 Use name as value for Enums if value wasn't set in definition 2015-08-30 13:47:09 +06:00
vladar
9ccfb93ef2 Saving original field config with field definition to allow custom app-level definitions 2015-08-30 13:46:20 +06:00
vladar
c6a9712790 Several useful utils for Traversables 2015-08-30 13:44:52 +06:00
vladar
003fa005ed Ability to set type-level "resolveField" method 2015-08-30 13:43:55 +06:00
vladar
5241c8a5d3 Better error messages for config validation 2015-08-30 13:41:41 +06:00
vladar
841d6ab851 Updated to latest version of graphql-js 2015-08-17 20:01:55 +06:00
vladar
022c962942 New language features (NamedType, directives rethinking) 2015-08-17 02:53:11 +06:00
vladar
698b2cb862 Minor errors refactoring 2015-08-16 17:17:48 +06:00
David Mongeau-Petitpas
b3932c8fbe Updated listOfType validation to Traversable 2015-08-09 19:00:05 -04:00
David Mongeau-Petitpas
7431f2dcc5 Edit character bug 2015-08-09 14:26:36 -04:00
David Mongeau-Petitpas
afe28da475 Check on ListOfType is on ArrayAccess instead of ArrayObject 2015-08-09 14:25:01 -04:00
vladar
b2b08f2a07 Fixed missing cleanup in TypeInfo::leave 2015-07-16 15:16:27 +06:00
vladar
20c482ce2f Version 0.1 2015-07-15 23:05:46 +06:00