Releases: graphpql/graphpinator
Releases · graphpql/graphpinator
1.0 rc1
- Raised minimal PHP version to 8
- Improves overall code quality and finally allows to add typehints on few rare places where it was not possible before
- 0.25.x with PHP 7.4 is still supported
- Fully reworked normalisation of values
- In previous versions values were validated late - during query execution, which is not a great solution. It also does not comply to GraphQL specs.
- Fully reworked modules
- Added four different hooks into execution pipeline, instead of only one. Its is also possible to skip and replace some of the pipeline steps. This allows all new kinds of module functionality - eg.
Persisted Queries
andQuery Cost Validation
modules, which are coming soon in future version. - This also led to improvements and code cleanup in Upload module.
- Added four different hooks into execution pipeline, instead of only one. Its is also possible to skip and replace some of the pipeline steps. This allows all new kinds of module functionality - eg.
- Enhanced directives
- Added
afterResolve
function and renamed currentresolve
tobeforeResolve
. This allows directives to not only do something before field resolution, but also do something after and work with the resolved value. - Added option for directives to validate type on which are used during normalisation.
- Added
- Removed final constructor argument for
Field
(arguments)- Its is now required to use setter method with fluent interface
- Added static method
Field::create
in order to improve ergonomics with fluent interface (Removes ugly parenthesis which are necessary when using keywordnew
)
- Removed final constructor argument for
Argument
(default value)- Its is now required to use setter method with fluent interface
- Added static method
Argument::create
in order to improve ergonomics with fluent interface (Removes ugly parenthesis which are necessary when using keywordnew
)
- Where directives
- New opt-in executive directives to filter resolved list values.
- This directive does not replace native filtering, which should be implemented by the GraphQL service. The goal is to save bandwidth when client knows its going to throw the data anyways, in cases where this specific filtering is not supported by the service itself.
- Moved Tokenizer to separate package
Improved error messages in interface constraint validation
v0.25.10 added new error messages to tests
Fixed resolution of lists with nulls
v0.25.9 Fixed bug with null list value
Added duplicate argument exception
v0.25.8 Added duplicate argument exception
Improved error message for unknown input field
v0.25.7 Added unknown input field exception
Improved value validation flow & messages
- Improved value validation flow
- Improved value validation messages, value errors in resolution are not outputed
- Improved Void type value validation
Fixed objectconstraint::exactlyOne condition in special case
- Fixed objectConstraint::exactlyOne giving incorrect results when not all conditioned fields included in result
ID input coercion
ID type allows int to be received, but is converted to string. On output, it always needs to be string.
Constraint contravarince/covariance
- interface contract now validates contravariance of argument constraints and covariance of field constraints
Improved variable and value errors & removed some dead code
v0.25.2 more tests