Added
- Apply validation rules to input types by providing a validator class #1185
- Include schema directives when running
php artisan lighthouse:validate-schema
#1494 - Add ability to query for the existence of relations in where conditions #1412
- Handle content types
application/graphql
andapplication/x-www-form-urlencoded
properly #1424 - Mark directives that can be used more than once per location as
repeatable
#1529 - Allow configuring global field middleware directives in
config/lighthouse.php
#1533 - Add custom attributes to validations #1628
- Add new directive interface
FieldBuilderDirective
#1636 - Add
@whereAuth
directive for filtering a field based on authenticated user #1636 - Use the
@trim
directive on fields to sanitize all input strings #1641 - Add Laravel Echo compatible subscription broadcaster #1370
- Allow auxiliary types in directive definitions #1649
Changed
- Use
Illuminate\Support\Carbon
instead ofCarbon\Carbon
\Nuwave\Lighthouse\Exceptions\ValidationException
no longer extends\Illuminate\Validation\ValidationException
#1185- Move validation related classes into namespace
Nuwave\Lighthouse\Validation
#1185 - Run
ArgDirectives
in distinct phases: Sanitize, Validate, Transform #1185 - The directive interfaces
ArgBuilderDirective
,ArgTransformerDirective
andArgDirectiveForArray
extendDirective
instead ofArgDirective
#1185 - Change the autogeneration of the
OrderByClause
input for@orderBy
, the
argumentfield
is now always calledcolumn
#1337 - Names for autogenerated types are now prepended with the name of the fields parent type
This affects@orderBy
,@whereConditions
and@whereHasConditions
#1337 __invoke
is now the only supported method name for convention based
field resolver classes #1422- Change
\Nuwave\Lighthouse\Support\Contracts\Directive
to require all directives to have an SDL
definition by implementingpublic static definition(): string
#1386 - Combine
Nuwave\Lighthouse\Schema\Factories\DirectiveNamespacer
andNuwave\Lighthouse\Schema\Factories\DirectiveFactory
into
\Lighthouse\Schema\DirectiveLocator
#1494 - Require
haydenpierce/class-finder
as a built-in dependency #1494 - Add method
defaultHasOperator
to\Nuwave\Lighthouse\WhereConditions\Operator
#1412 - Change default configuration options in
lighthouse.php
:'guard' => 'api'
'forceFill' => true
- Use
laragraph/laravel-graphql-utils
for parsing HTTP requests #1424 - Replace the subscription broadcast queued event handler with a queued job to allow the queue name to be specified #1507
- Make
@method
call the underlying method with the arguments as ordered parameters instead
of the full resolver arguments #1509 - Change
ErrorHandler
methodhandle()
to non-static__invoke()
and allow discarding
errors by returningnull
- Allow subscriptions without named operations, base channels on the field name
- Set
lighthouse.debug
config through envLIGHTHOUSE_DEBUG
#1592 - Test helper
multipartGraphQL
now accepts arrays instead of JSON strings #1615 - Use
DateTime::ATOM
for DateTimeTZ ISO 8601 compatibility #1622 - Split
ProvidesRules
interface intoArgumentValidation
andArgumentSetValidation
#1628 - Update to PHP 8 compatible mll-lab/graphql-php-scalars 4 #1639
- Add
TrimDirective
to the defaultfield_middleware
config inlighthouse.php
#1641
Removed
- Remove support for PHP 7.1, Laravel 5.5 and PHPUnit 6 #1192
- Remove
TestResponse::jsonGet()
helper, use->json()
instead https://github.com/nuwave/lighthouse/pull/1192/files - Remove
\Nuwave\Lighthouse\Execution\GraphQLValidator
as validation now uses Laravel's native validator #1185 - Remove interfaces
HasArgumentPath
andHasErrorBuffer
and the parts ofFieldFactory
that calls them #1185 - Remove the
ValidationDirective
abstract class in favour of validator classes #1185 - Remove configuration option
lighthouse.orderBy
, always usescolumn
now #1337 - Remove
\Nuwave\Lighthouse\Support\Contracts\DefinedDirective
interface, moving its
functionality to\Nuwave\Lighthouse\Support\Contracts\Directive
#1386 - Remove fallback for
lighthouse.cache.ttl
setting #1423 - Remove
Nuwave\Lighthouse\Schema\AST\PartialParser
in favor ofGraphQL\Language\Parser
#1457 - Remove
Nuwave\Lighthouse\Execution\GraphQLRequest
singleton #1424 - Remove
@bcrypt
in favor of@hash
#1200 - Remove the
@middleware
directive, as it violates the boundary between HTTP and GraphQL
request handling. Use@guard
or other field middleware directives instead #1135 - Remove configuration option
pagination_amount_argument
, it is alwaysfirst
now
Fixed
- Prefix complex conditions with table name to avoid ambiguous SQL #1530
- Merge type interfaces when extending type #1635
Deprecated
- Deprecate values for the
type
argument of@paginate
that are notPAGINATOR
orCONNECTION