34 Commits

Author SHA1 Message Date
Adrian Philipp
b3791378fa Return early if rules are empty to avoid visiting elements
This is tested already in testPassesValidationWithEmptyRules
2018-04-12 17:36:24 +02:00
Daniel Tschinder
58e0c7a178 Validate literals in a single rule with finer precision
This generalizes the "arguments of correct type" and "default values of correct type" to a single rule "values of correct type" which has been re-written to rely on a traversal rather than the utility function `isValidLiteralValue`. To reduce breaking scope, this does not remove that utility even though it's no longer used directly within the library. Since the default values rule included another validation rule that rule was renamed to a more apt "variable default value allowed".

This also includes the original errors from custom scalars in the validation error output, solving the remainder of graphql/graphql-js#821.

ref: graphql/graphql-js#1144
2018-02-15 21:29:14 +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
f661f38215 Fix unhandled error when parsing custom scalar literals.
This factors out the enum value validation from scalar value validation and ensures the same try/catch is used in isValidLiteralValue as isValidPHPValue and protecting from errors in valueFromAST.
ref: graphql/graphql-js#1126
2018-02-11 22:31:04 +01:00
Daniel Tschinder
d70a9a5e53 Update to match SDL changes
This changes the parsing grammar and validation rules to more correctly implement the current state of the GraphQL SDL proposal (facebook/graphql#90)

ref: graphql/graphl-js#1102
2018-02-11 13:27:26 +01:00
Daniel Tschinder
0c32982171 Fix KnownDirectives validator to support all directives 2018-02-11 13:15:51 +01:00
Daniel Tschinder
27ce24b5fe Fix parsing of default values in build-schema
* Generalizes building a value from an AST, since "scalar" could be misleading, and supporting variable values within custom scalar literals can be valuable.
* Replaces isNullish with isInvalid since `null` is a meaningful value as a result of literal parsing.
* Provide reasonable default version of 'parseLiteral'

ref: 714ee980aa
ref: https://github.com/graphql/graphql-js/pull/903

# Conflicts:
#	src/Utils/BuildSchema.php
#	tests/Utils/BuildSchemaTest.php
2018-02-10 18:45:23 +01:00
Vladimir Razuvaev
bd444752f8 Documentation and docblock improvements 2017-08-20 16:00: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
51e877bfba Improving docblock comments 2017-08-17 02:15:49 +07:00
Vladimir Razuvaev
d3580e959e Moved Schema to GraphQL\Type namespace (but preserved BC) 2017-08-12 21:40:03 +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
296544089c Moved GraphQL\Utils to GraphQL\Utils\Utils 2017-07-10 19:53:46 +07:00
Vladimir Razuvaev
b47c87f793 Allow null values for enums 2017-07-04 20:19:52 +07:00
Vladimir Razuvaev
189877c173 Allow passing custom TypeInfo to validate 2017-07-04 16:19:16 +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
719a438628 Adds DisableIntrospection validation rule to the DocumentValidator (default: disabled) 2017-06-17 14:51:38 +02:00
vladar
660200ed50 GraphQL\Language\AST\NodeType -> GraphQL\Language\AST\NodeKind 2016-11-19 17:31:47 +07:00
vladar
0ab55ec0d9 Replaced "AST" with "Node" in variable names for better readability 2016-11-19 06:47:55 +07:00
vladar
8d696edee5 Renamed AST nodes to *Node to disambiguate types 2016-11-19 06:12:18 +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
Andreas Heiberg
d8ca5f4183 move to NodeType enum 2016-11-16 18:07:56 +07:00
vladar
e56eb6e10d Replaced \UnexpectedValueException with GraphQL\Error\InvariantViolationException; Improved some instanceof checks 2016-11-01 23:40:37 +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
800d8ba25f Continue updating validator rules for april2016 spec 2016-09-14 18:41:02 +07:00
vladar
f1ddc98390 Updating validator rules for april2016 spec 2016-09-14 18:41:02 +07: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
841d6ab851 Updated to latest version of graphql-js 2015-08-17 20:01:55 +06:00
vladar
20c482ce2f Version 0.1 2015-07-15 23:05:46 +06:00