Daniel Tschinder
8747ff8954
RFC: Block String
...
This RFC adds a new form of `StringValue`, the multi-line string, similar to that found in Python and Scala.
A multi-line string starts and ends with a triple-quote:
```
"""This is a triple-quoted string
and it can contain multiple lines"""
```
Multi-line strings are useful for typing literal bodies of text where new lines should be interpretted literally. In fact, the only escape sequence used is `\"""` and `\` is otherwise allowed unescaped. This is beneficial when writing documentation within strings which may reference the back-slash often:
```
"""
In a multi-line string \n and C:\\ are unescaped.
"""
```
The primary value of multi-line strings are to write long-form input directly in query text, in tools like GraphiQL, and as a prerequisite to another pending RFC to allow docstring style documentation in the Schema Definition Language.
Ref: graphql/graphql-js#926
2018-02-10 18:43:26 +01:00
Daniel Tschinder
46816a7cda
Uniform parsing of queries with short-hand syntax with regular queries
2018-02-09 14:33:04 +01:00
Daniel Tschinder
eb9ac66af8
Fix how TypeInfo handles inline fragments without type
...
ref: graphql/graphql-js#1041
2018-02-09 14:32:44 +01:00
Vladimir Razuvaev
4f223ba11d
Fixed PSR request parsing, broken after recent changes
2018-01-13 18:08:07 +07:00
Vladimir Razuvaev
918bbff2bd
Merge branch 'master' into no-parsing
2018-01-13 17:20:00 +07:00
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
Adrien Crivelli
5cbaf973e1
Leverage PHPUnit setExpectedException()
instead of custom code
...
Closes #219
2018-01-01 18:06:08 +09: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
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
9c563d5c00
Merge pull request #199 from roippi/findbreakingchanges
...
port findBreakingChanges
2017-11-28 20:14:36 +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
b18dfd670f
testFindsAllDangerousChanges
2017-11-21 12:30:18 -05:00
Ben Roberts
533b8b8b5f
testDetectsAdditionsToUnionType
2017-11-21 12:18:28 -05:00
Ben Roberts
e0a63ec792
testDetectsEnumValueAdditions
2017-11-21 11:53:14 -05:00
Ben Roberts
c4ae03454a
testFindDangerousArgChanges
2017-11-21 11:50:11 -05:00
Ben Roberts
3c0ed787ba
testDetectsAllBreakingChanges
2017-11-21 11:33:45 -05:00
Ben Roberts
dbccf9b196
testDetectsRemovalOfInterfaces
2017-11-20 14:39:06 -05:00
Ben Roberts
0bb689d340
testArgsThatMoveAwayFromNonNull
2017-11-20 14:12:26 -05:00
Ben Roberts
90f35f26a2
testDoesNotFlagArgsWithSameTypeSignature
2017-11-20 13:57:52 -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
Vladimir Razuvaev
b17b1c3336
Merge remote-tracking branch 'origin/master'
2017-10-14 00:45:55 +07:00
Vladimir Razuvaev
1487741f37
Preserve description for custom scalars ( #181 )
2017-10-14 00:45:23 +07:00
Gabriel Goncalves
440d38d3bc
Creating test to Language\Token
2017-10-04 12:06:25 -03: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
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
39f378ece7
Fixed type in tests: Testcase -> TestCase
2017-09-20 17:03:22 +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
90602b31ba
Added link to docs for generic error about unique type instance ( #149 )
2017-08-20 22:28:17 +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
1b4f983f3f
Improved docblock comments (suitable for reference docs generation)
2017-08-19 23:01:46 +07: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
83cc9132a0
Server: minor improvements
2017-08-18 02:54:35 +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
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
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
09070485c1
Added ability to decorate type configs in BuildSchema + made type creation lazy
2017-07-28 17:55:25 +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
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
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
919cf80240
Server: batched queries with shared deferreds (promises) #105
2017-07-17 20:31:26 +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
d2cbb0c354
Restored tests for deprecated GraphQL\Server
2017-07-14 20:06:24 +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
37a42ededd
Query validation should pass if empty array of rules is provided
2017-07-13 02:39:24 +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
a79a51d445
Schema Parsing: allow leading pipe for union type definitions
2017-07-05 19:01:13 +07:00
Vladimir Razuvaev
30632050a5
Validation: added test cases to check support for good negative floats and ints
2017-07-05 18:35:45 +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
78d9ba0d5e
Allow providing default field resolver for execution call
2017-07-05 16:22:01 +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
1c41fb27ed
Added test for enums with null
values
2017-07-04 16:27:40 +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
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
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
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
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
Laurin Quast
6d6d1ac01b
Adds tests for DisableIntrospection Validation rule
2017-06-17 14:49:07 +02: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
Jeremiah VALERIE
6d5b4e5a37
Use dedicated exception for scalar type parsing error
2017-05-29 10:32:48 +02:00
leocavalcante
8a5f337469
Extract anonymous class
2017-05-07 19:42:59 -03:00
leocavalcante
e07c86bd5e
Default resolve callables
2017-05-07 19:21:20 -03:00
Pascal de Vink
11a1b13b72
Use directives to calculate query complexity
2017-04-24 14:21:58 +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
Vladimir Razuvaev
3f909e3e11
Separate utility for extractTypes
2017-02-24 16:29:28 +07:00
Vladimir Razuvaev
416733b4db
Separate utility for extractTypes
2017-02-24 16:22:33 +07:00
Bernhard Schussek
e35b57601d
Fixed SyncPromiseAdapter::all() to not change the order of arrays
2017-02-23 11:45:13 +01: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
008fd20498
Added test for adding a schema element description in comments
2017-02-06 19:11:12 +00:00
jane-olszewska
dd31ab2b80
Added a description field to schema type definition classes
2017-02-06 18:33:18 +00:00
vladar
b4e6630c1d
PHPUnit: Replaced deprecated method getMock() with getMockBuilder()
2017-01-26 18:48:23 +07:00
vladar
e2875953e1
Tests for new GraphQL\Server facade
2017-01-19 19:23:00 +07:00
vladar
ceaf798b07
Merge branch 'master' of https://github.com/webonyx/graphql-php
2016-12-23 22:42:05 +07:00
Juuso Leinonen
8626e0b45d
Make tests run on php 5.4
2016-12-22 15:35:38 +02: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
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
90e29ac704
Fixing tests for HHVM
2016-12-08 04:50:33 +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
26db4c76c6
Fixed tests for PHP7+
2016-12-03 04:31:01 +07:00
vladar
fd335a1d13
Execution: tests are green
2016-12-03 04:23:21 +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
3a375bb78e
Simple implementation of Promises A+ for our sync case (using queue)
2016-12-02 18:43:54 +07:00
Jeremiah VALERIE
76c31df1af
Add Executor Promise tests
2016-11-26 23:51:42 +01:00
Jeremiah VALERIE
35d7d83088
Add Lists Promise tests
2016-11-26 22:28:46 +01:00