nuwave/lighthouse
Lighthouse is a Laravel-first GraphQL server framework. Define your schema, wire resolvers, and handle common tasks like validation, auth, pagination, and Eloquent integration, with flexibility for custom GraphQL needs.
[@upsert](https://github.com/upsert) and [@upsertMany](https://github.com/upsertMany) https://github.com/nuwave/lighthouse/pull/2426upsert for HasOne creating a new record instead of updating when no id is provided in the input https://github.com/nuwave/lighthouse/pull/2742create on HasOne relation when a related model already exists https://github.com/nuwave/lighthouse/pull/2742String type for HAS.condition.column in [@whereConditions](https://github.com/whereConditions) instead of incorrectly inheriting the parent's column enum type https://github.com/nuwave/lighthouse/pull/2725null for page argument in paginated queries https://github.com/nuwave/lighthouse/pull/2735Nuwave\Lighthouse\Testing\MocksResolvers https://github.com/nuwave/lighthouse/pull/2730lighthouse:clear-cache in favor of lighthouse:clear-schema-cache https://github.com/nuwave/lighthouse/pull/2713DateTimeInterface instance in date scalars https://github.com/nuwave/lighthouse/pull/2711MakesGraphQLRequests https://github.com/nuwave/lighthouse/pull/2702[@can](https://github.com/can) directive docs https://github.com/nuwave/lighthouse/commit/70bea571382dae21165d81887fc4a9c0bdb91dee--sort to command lighthouse:print-schema https://github.com/nuwave/lighthouse/pull/2696[@lazyLoad](https://github.com/lazyLoad) and [@paginate](https://github.com/paginate) https://github.com/nuwave/lighthouse/pull/2695ASTCache::path() https://github.com/nuwave/lighthouse/pull/2694[@can](https://github.com/can)* directives instead of always wrapping them https://github.com/nuwave/lighthouse/pull/2686ASTCache https://github.com/nuwave/lighthouse/pull/2685Argument::$type with null and make it nullable https://github.com/nuwave/lighthouse/pull/2682ArgumentSet::exists() https://github.com/nuwave/lighthouse/pull/2680operation_id to message QueryMetadata in reports.proto https://github.com/nuwave/lighthouse/pull/2678BuildExtensionsResponse https://github.com/nuwave/lighthouse/pull/2637Nuwave\Lighthouse\Tracing\FederatedTracing\Proto__typename is included in related model's field selection https://github.com/nuwave/lighthouse/pull/2666reports.proto with Client awareness contexts https://github.com/nuwave/lighthouse/pull/2667thecodingmachine/safe 3 https://github.com/nuwave/lighthouse/pull/2657DirectiveLocator assertion[@hide](https://github.com/hide) and [@show](https://github.com/show) directive https://github.com/nuwave/lighthouse/pull/2392scalar.stub return typelighthouse:print-schema will write to via the --disk option https://github.com/nuwave/lighthouse/pull/2379Query in nested results https://github.com/nuwave/lighthouse/pull/2384Node interface as soon as a type uses it with [@node](https://github.com/node) https://github.com/nuwave/lighthouse/pull/2387lighthouse:ide-helper with --omit-built-in flag https://github.com/nuwave/lighthouse/pull/2376Nuwave\Lighthouse\Schema\AST\ASTHelper::addDirectiveToNode() to simplify dynamic addition of directives https://github.com/nuwave/lighthouse/pull/2369[@bind](https://github.com/bind) directive as a GraphQL analogue for Laravel's Route Model Binding https://github.com/nuwave/lighthouse/pull/2645int in CountModelsLoader https://github.com/nuwave/lighthouse/pull/2646[@show](https://github.com/show), [@hide](https://github.com/hide), and [@feature](https://github.com/feature) directives to be used on types, arguments and input types https://github.com/nuwave/lighthouse/pull/2638[@convertEmptyStringsToNull](https://github.com/convertEmptyStringsToNull) to input fields when used upon fields https://github.com/nuwave/lighthouse/issues/2610deprecationReason is set on arguments and input fields https://github.com/nuwave/lighthouse/pull/2609[@deprecated](https://github.com/deprecated) directive on arguments and input fields https://github.com/nuwave/lighthouse/pull/2607_lighthouse_ide_helper.php https://github.com/nuwave/lighthouse/pull/2604HasMany and MorphOne mutations https://github.com/nuwave/lighthouse/pull/2591[@hasOneThrough](https://github.com/hasOneThrough) directive https://github.com/nuwave/lighthouse/pull/2585[@withoutGlobalScopes](https://github.com/withoutGlobalScopes) directive https://github.com/nuwave/lighthouse/pull/2577GraphQL::loadPersistedQuery public https://github.com/nuwave/lighthouse/pull/2579[@paginate](https://github.com/paginate) with argument complexityResolver https://github.com/nuwave/lighthouse/pull/2372[@createMany](https://github.com/createMany), [@updateMany](https://github.com/updateMany) and [@upsertMany](https://github.com/upsertMany) to mutate multiple models at once https://github.com/nuwave/lighthouse/pull/2578MutationExecutorDirective into OneModelMutationDirective and ManyModelMutationDirective https://github.com/nuwave/lighthouse/pull/2578[@throttle](https://github.com/throttle) directive https://github.com/nuwave/lighthouse/pull/2573builder to [@limit](https://github.com/limit) to apply an actual LIMIT clause https://github.com/nuwave/lighthouse/pull/2571Model::save() calls in nested mutations https://github.com/nuwave/lighthouse/pull/2570GraphQL\Error\Error without previous exceptions in ReportingErrorHandler https://github.com/nuwave/lighthouse/pull/2567TypeRegistry may be used as morph type in nested MorphTo relations https://github.com/nuwave/lighthouse/pull/2544ClientSafeModelNotFoundException to wrap original exception in [@can](https://github.com/can) and [@canFind](https://github.com/canFind) https://github.com/nuwave/lighthouse/pull/2522Date scalar trying to parse Illuminate\Support\Carbon as string https://github.com/nuwave/lighthouse/pull/2470lighthouse:union and lighthouse:interface artisan commands https://github.com/nuwave/lighthouse/pull/2518[@canFind](https://github.com/canFind) https://github.com/nuwave/lighthouse/pull/2515ThrottleDirective to not reuse the first Request it had encountered https://github.com/nuwave/lighthouse/pull/2511CanArgs from directive definition https://github.com/nuwave/lighthouse/pull/2510[@async](https://github.com/async) directive https://github.com/nuwave/lighthouse/pull/2501Nuwave\Lighthouse\Subscriptions\Contracts\ContextSerializer to Nuwave\Lighthouse\Support\Contracts\SerializesContext https://github.com/nuwave/lighthouse/pull/2501CreatesContext and CanStreamResponse as singletons https://github.com/nuwave/lighthouse/pull/2501LaravelEnumType from ResolveInfo::$variableValues https://github.com/nuwave/lighthouse/pull/2501[@limit](https://github.com/limit) directive definitionInputFieldManipulator directive interface https://github.com/nuwave/lighthouse/pull/2476parse_source_location https://github.com/nuwave/lighthouse/pull/2499[@key](https://github.com/key) in default model entity resolver for federation[@rule](https://github.com/rule) is never applied to argument lists themselves https://github.com/nuwave/lighthouse/pull/2489first: 0 https://github.com/nuwave/lighthouse/pull/2480[@shareable](https://github.com/shareable) for Apollo Federation v2 https://github.com/nuwave/lighthouse/pull/2485[@can](https://github.com/can) directive into [@canFind](https://github.com/canFind), [@canModel](https://github.com/canModel), [@canQuery](https://github.com/canQuery), [@canResolved](https://github.com/canResolved) and [@canRoot](https://github.com/canRoot) https://github.com/nuwave/lighthouse/pull/2483action and returnValue arguments to [@can](https://github.com/can)* family of directives https://github.com/nuwave/lighthouse/pull/2483[@can](https://github.com/can)* family of directives https://github.com/nuwave/lighthouse/pull/2483scalar link__Import and enum link__Purpose to [@link](https://github.com/link) definition https://github.com/nuwave/lighthouse/pull/2484[@namespaced](https://github.com/namespaced) directive for namespacing by separation of concerns https://github.com/nuwave/lighthouse/pull/2469extend union syntax https://github.com/nuwave/lighthouse/pull/2468extend schema from federation schema printer https://github.com/nuwave/lighthouse/pull/2477FieldResolver directive stubsroot to [@can](https://github.com/can) directive https://github.com/nuwave/lighthouse/pull/2452ignoreNull to [@where](https://github.com/where) directive https://github.com/nuwave/lighthouse/pull/2447[@cacheControl](https://github.com/cacheControl) directive on type level https://github.com/nuwave/lighthouse/pull/2451[@cacheControl](https://github.com/cacheControl) in pagination on fields https://github.com/nuwave/lighthouse/pull/2451[@key](https://github.com/key) in default model entity resolver for federation https://github.com/nuwave/lighthouse/pull/2365RefreshSchemaCache and TestsSubscriptionsQuery field node added by [@node](https://github.com/node) https://github.com/nuwave/lighthouse/pull/2449null in [@notIn](https://github.com/notIn), [@whereBetween](https://github.com/whereBetween) and [@whereNotBetween](https://github.com/whereNotBetween) directives https://github.com/nuwave/lighthouse/pull/2446null in [@in](https://github.com/in) directive https://github.com/nuwave/lighthouse/pull/2445[@feature](https://github.com/feature) to conditionally add annotated elements based on the state of a feature using Laravel Pennant https://github.com/nuwave/lighthouse/pull/2442NOT_LIKE operator in [@whereConditions](https://github.com/whereConditions) https://github.com/nuwave/lighthouse/pull/2432BaseDirective::hydrate() https://github.com/nuwave/lighthouse/pull/2430ScoutEnhancer::enhanceBuilder() will process not only the first but all ScoutBuilderDirective attached to argument https://github.com/nuwave/lighthouse/pull/2429ResolveInfo::enhanceBuilder() will pass $directiveFilter into ScoutEnhancer::enhanceBuilder() https://github.com/nuwave/lighthouse/pull/2429[@scope](https://github.com/scope) supports custom query builders https://github.com/nuwave/lighthouse/pull/2423[@spread](https://github.com/spread) https://github.com/nuwave/lighthouse/pull/2421PaginatorInfo, SimplePaginatorInfo, PageInfo only when required https://github.com/nuwave/lighthouse/pull/2413findOrFail to [@can](https://github.com/can) directive https://github.com/nuwave/lighthouse/pull/2416union types https://github.com/nuwave/lighthouse/pull/2406--omit-built-in to lighthouse:ide-helper to avoid duplicate built-in definitions https://github.com/nuwave/lighthouse/pull/2362declare(strict_types=1)Paginator with resolver modeFieldBuilderDirective::handleFieldBuilder() https://github.com/nuwave/lighthouse/pull/2234ResolveInfo::enhanceBuilder()CacheKeyAndTags::key() https://github.com/nuwave/lighthouse/pull/2176BatchedEntityResolver to maintain the keys given in array $representations https://github.com/nuwave/lighthouse/pull/2286[@whereKey](https://github.com/whereKey) in [@delete](https://github.com/delete), [@forceDelete](https://github.com/forceDelete) and [@restore](https://github.com/restore) https://github.com/nuwave/lighthouse/pull/2289$subscriber->socket_id and request()->header('X-Socket-ID') https://github.com/nuwave/lighthouse/pull/2298first non-nullable[@paginate](https://github.com/paginate) according to the number of items requestedresolver in directive [@complexity](https://github.com/complexity)Nuwave\Lighthouse\Support\Contracts\GlobalId to Nuwave\Lighthouse\GlobalId\GlobalId$id argument in NodeDirectiveArr::first(array_keys()) with array_key_first() in OrderByDirective$paginationType in PaginationType to literal constant valuesBaseDirective::directiveHasArgument from public to protectedIlluminate\Database\DatabaseManager with Illuminate\Database\ConnectionResolverInterface in RelationDirectiveDirectiveLocator::beforeLast with Str::beforeLastsubscriptions.exclude_empty to trueFieldManipulator and ArgManipulator directives on interfaces https://github.com/nuwave/lighthouse/pull/1955FieldResolver::resolveField() to return resolver function directly https://github.com/nuwave/lighthouse/pull/1706FieldMiddleware directive interface https://github.com/nuwave/lighthouse/pull/1706schema.register to schema_pathRegisterDirectiveNamespaces event https://github.com/nuwave/lighthouse/pull/2337lighthouse.php allows multiple guards https://github.com/nuwave/lighthouse/pull/2345[@auth](https://github.com/auth) and [@whereAuth](https://github.com/whereAuth) support multiple guards https://github.com/nuwave/lighthouse/pull/2345Illuminate\Http\Request optional in Nuwave\Lighthouse\Support\Contracts\GraphQLContext https://github.com/nuwave/lighthouse/pull/2353Nuwave\Lighthouse\Support\Http to Nuwave\Lighthouse\Http https://github.com/nuwave/lighthouse/pull/2358_entities maintains order of representations in result https://github.com/nuwave/lighthouse/pull/2286[@can](https://github.com/can) with non-default [@guard](https://github.com/guard) https://github.com/nuwave/lighthouse/pull/2276[@cache](https://github.com/cache) directive https://github.com/nuwave/lighthouse/issues/2354TypeRegistry::search() that maybe finds a type with a given name[@globalId](https://github.com/globalId) in federation model entity resolverGraphQLContext:: setUser(?Authenticatable $user): void[@whereKey](https://github.com/whereKey) to filter Models by their primary key https://github.com/nuwave/lighthouse/pull/2289[@where](https://github.com/where) on fields https://github.com/nuwave/lighthouse/pull/2306MakeGraphQLRequests test methods https://github.com/nuwave/lighthouse/pull/2333MakesGraphQLRequests and TestResponseMixin and docs in phpunit integration section https://github.com/nuwave/lighthouse/pull/2343laragraph/utils:^2 https://github.com/nuwave/lighthouse/pull/2356[@whereNull](https://github.com/whereNull) and [@whereNotNull](https://github.com/whereNotNull) https://github.com/nuwave/lighthouse/pull/2357TestResponse::assertGraphQLErrorCategory()Nuwave\Lighthouse\Exceptions\GenericExceptioncategoryNuwave\Lighthouse\Exceptions\RendersErrorsExtensionsNuwave\Lighthouse\Execution\ExtensionErrorHandlerSerializable implementationClearsSchemaCachelighthouse.unbox_bensampo_enum_enum_instancesArgumentSet::enhanceBuilder(), use ResolveInfo::enhanceBuilder()globalId argument from [@delete](https://github.com/delete), [@forceDelete](https://github.com/forceDelete) and [@restore](https://github.com/restore) https://github.com/nuwave/lighthouse/pull/2289MockResolverBatchLoader::forgetInstances() in GraphQLIlluminate\Foundation\Exceptions\Handler::renderablenon_null_pagination_results and always behave as if it were trueNuwave\Lighthouse\Subscriptions\Contracts\StoresSubscriptions::subscriberByRequest()FieldValueGraphQL::executeQuery() and GraphQL::prepSchema()[@field](https://github.com/field) directive argument args https://github.com/nuwave/lighthouse/pull/1706ScoutServiceProvider by defaultgraphqlMiddlewareAdapter https://github.com/nuwave/lighthouse/pull/2358ScoutBuilderDirective::handleScoutBuilder() https://github.com/nuwave/lighthouse/pull/1853[@aggregate](https://github.com/aggregate) directive https://github.com/nuwave/lighthouse/pull/1849DataLoader functionality into BatchLoader and ModelsLoader https://github.com/nuwave/lighthouse/pull/1849[@builder](https://github.com/builder) in combination with [@search](https://github.com/search) https://github.com/nuwave/lighthouse/pull/1850[@model](https://github.com/model) directives on generated paginator types https://github.com/nuwave/lighthouse/pull/1837SIMPLE pagination type https://github.com/nuwave/lighthouse/pull/1816parse_source_location https://github.com/nuwave/lighthouse/pull/2498Illuminate\Http\UploadedFile in test helper multipartGraphQL() argument array $fileslighthouse.route.wherebuilder option to [@all](https://github.com/all) directive https://github.com/nuwave/lighthouse/pull/1826ResolveInfo class and extend it with public ArgumentSet $argumentSet in response to PHP 8.2 deprecating dynamic propertiesbuilder to directive [@aggregate](https://github.com/aggregate) https://github.com/nuwave/lighthouse/pull/2255[@clearCache](https://github.com/clearCache) directive repeatable https://github.com/nuwave/lighthouse/pull/2243[@can](https://github.com/can) directive argument resolved on mutations https://github.com/nuwave/lighthouse/pull/2238Paginator from option resolver in [@paginator](https://github.com/paginator) directive https://github.com/nuwave/lighthouse/pull/2232field_middleware directives https://github.com/nuwave/lighthouse/pull/2224X-Requested-With: XMLHttpRequest in EnsureXHR middleware https://github.com/nuwave/lighthouse/pull/2221bensampo/laravel-enum https://github.com/nuwave/lighthouse/pull/2218[@upload](https://github.com/upload) directive https://github.com/nuwave/lighthouse/pull/2215[@upload](https://github.com/upload) directive https://github.com/nuwave/lighthouse/pull/2121security.disable_introspection through the env variable LIGHTHOUSE_SECURITY_DISABLE_INTROSPECTION https://github.com/nuwave/lighthouse/pull/2205TestReponse::assertGraphQLErrorMessage to work when multiple errors are present https://github.com/nuwave/lighthouse/pull/1827webonyx/graphql-php:^14.6.2 https://github.com/nuwave/lighthouse/pull/1824repeatable directive nodes into executable definitions https://github.com/nuwave/lighthouse/pull/1824EnsureXHR middleware for extension https://github.com/nuwave/lighthouse/pull/2202[@param](https://github.com/param) in field_full.stub https://github.com/nuwave/lighthouse/pull/2198LaravelEnumType based on BenSampo\Enum\Enum::getClassDescription() https://github.com/nuwave/lighthouse/pull/2177[@convertEmptyStringsToNull](https://github.com/convertEmptyStringsToNull) on fields and matrices https://github.com/nuwave/lighthouse/pull/2142model on schema elements using built-in types https://github.com/nuwave/lighthouse/pull/2196maxCount: null or defaultCount: null in pagination directives over config lighthouse.pagination https://github.com/nuwave/lighthouse/pull/2193pageInfo are requested https://github.com/nuwave/lighthouse/pull/2190Laravel\Scout\Builder from custom builder in [@all](https://github.com/all) and [@paginate](https://github.com/paginate) https://github.com/nuwave/lighthouse/pull/2183[@can](https://github.com/can) with option resolved https://github.com/nuwave/lighthouse/pull/2187[@can](https://github.com/can) https://github.com/nuwave/lighthouse/pull/2159[@hasManyThrough](https://github.com/hasManyThrough) directive https://github.com/nuwave/lighthouse/pull/2178TestingServiceProvider in order to ensure macros are recognized by Larastan https://github.com/nuwave/lighthouse/pull/2171[@paginate](https://github.com/paginate) directive will use a simple pagination strategy when the paginator info is not requested https://github.com/nuwave/lighthouse/pull/2170CacheKeyAndTags https://github.com/nuwave/lighthouse/pull/2162RateLimitException in its message https://github.com/nuwave/lighthouse/pull/2149union https://github.com/nuwave/lighthouse/pull/2157[@morphToMany](https://github.com/morphToMany) https://github.com/nuwave/lighthouse/pull/2154[@rename](https://github.com/rename) when picking the value of a key in [@cache](https://github.com/cache) https://github.com/nuwave/lighthouse/pull/2155columns and distinct args to [@count](https://github.com/count) directive https://github.com/nuwave/lighthouse/pull/2138[@cacheControl](https://github.com/cacheControl) directive https://github.com/nuwave/lighthouse/pull/2136_ to schema-directives.graphql https://github.com/nuwave/lighthouse/pull/1823[@limit](https://github.com/limit) on FIELD_DEFINITION to fix validation errors https://github.com/nuwave/lighthouse/pull/1821assertGraphQLErrorMessage() to TestResponse mixin https://github.com/nuwave/lighthouse/pull/1819[@cacheKey](https://github.com/cacheKey) on field definition https://github.com/nuwave/lighthouse/pull/2131[@convertEmptyStringsToNull](https://github.com/convertEmptyStringsToNull) https://github.com/nuwave/lighthouse/pull/2130final through artisan commands https://github.com/nuwave/lighthouse/pull/2127RelationDirective/batchload_relations will consider null and default connection name the same connection https://github.com/nuwave/lighthouse/pull/2125[@convertEmptyStringsToNull](https://github.com/convertEmptyStringsToNull) directive https://github.com/nuwave/lighthouse/pull/2123Relation from custom builder on [@all](https://github.com/all) and [@paginate](https://github.com/paginate) directive https://github.com/nuwave/lighthouse/pull/2120TestResponse::assertGraphQLError()TestResponse::assertGraphQLDebugMessage() to test internal errors https://github.com/nuwave/lighthouse/pull/2117[@clearCache](https://github.com/clearCache) argument idSource https://github.com/nuwave/lighthouse/pull/2100mget returning false for entries https://github.com/nuwave/lighthouse/pull/2095[@drop](https://github.com/drop) directive to ignore incoming values https://github.com/nuwave/lighthouse/pull/2092LaravelEnumTypeRefreshesSchemaCache https://github.com/nuwave/lighthouse/pull/2076ClearsSchemaCache https://github.com/nuwave/lighthouse/pull/2076GraphQLContext to StartExecution eventconnect and disconnect operations in nested mutations for HasMany and MorphMany relations https://github.com/nuwave/lighthouse/pull/1730ValidateSchema event https://github.com/nuwave/lighthouse/pull/1764subscriptions.exclude_empty https://github.com/nuwave/lighthouse/pull/1799[@defer](https://github.com/defer) by avoiding parsing the request multiple timescomparision to comparison in generated input types for [@whereHas](https://github.com/whereHas)mget being called with an empty list of subscriber IDs https://github.com/nuwave/lighthouse/pull/1759lighthouse:clear-cache not clearing cache when a custom cache store is used https://github.com/nuwave/lighthouse/pull/1788globalId argument of the [@upsert](https://github.com/upsert) directive https://github.com/nuwave/lighthouse/pull/1804RedisStorageManager::subscribersByTopic() https://github.com/nuwave/lighthouse/issues/2035batched_queries https://github.com/nuwave/lighthouse/issues/2046hasMorePages for pagination type SIMPLE https://github.com/nuwave/lighthouse/pull/2051shortcut_foreign_key_selection is enabled in lighthouse.php https://github.com/nuwave/lighthouse/pull/2049transactional_mutations in [@delete](https://github.com/delete), [@forceDelete](https://github.com/forceDelete) and [@restore](https://github.com/restore) https://github.com/nuwave/lighthouse/pull/2050EnsureXHR middleware to handle additional fields in the Content-Type header https://github.com/nuwave/lighthouse/pull/2036EnsureXHR middleware to handle method override via _method parameter https://github.com/nuwave/lighthouse/pull/2036Nuwave\Lighthouse\GraphQL::executeQuery() https://github.com/nuwave/lighthouse/pull/2017thecodingmachine/safe version constraintthecodingmachine/safe:2 https://github.com/nuwave/lighthouse/pull/2028[@belongsTo](https://github.com/belongsTo) and [@morphTo](https://github.com/morphTo) if the client only selects the ID of the relationenum values derived from bensampo/laravel-enum as [@deprecated](https://github.com/deprecated) through PHPDoc https://github.com/nuwave/lighthouse/pull/2025LIGHTHOUSE_CACHE_VERSION=1 in env https://github.com/nuwave/lighthouse/pull/2020[@clearCache](https://github.com/clearCache) directive that clears a resolver cache by tags https://github.com/nuwave/lighthouse/pull/1931lighthouse.cache.tags in config/lighthouse.php https://github.com/nuwave/lighthouse/pull/1931[@guard](https://github.com/guard) fields https://github.com/nuwave/lighthouse/pull/1769lighthouse https://github.com/nuwave/lighthouse/pull/1931Nuwave\Lighthouse\Support\Http\Middleware\EnsureXHR to mitigate CSRF attacks without Laravel Sanctum https://github.com/nuwave/lighthouse/pull/2013StartExecution event to determine per-operation Tracing timestamps https://github.com/nuwave/lighthouse/pull/2009_ide_helper.php works as PHPStan stub file https://github.com/nuwave/lighthouse/pull/2006assertGraphQLError() to TestResponse mixin https://github.com/nuwave/lighthouse/pull/2005assertGraphQLErrorFree() to Illuminate\Testing\TestResponseprogrammatic-types.graphql in artisan command lighthouse:ide-helper[@with](https://github.com/with) and [@withCount](https://github.com/withCount) are not used on root fields https://github.com/nuwave/lighthouse/pull/1714EndExecution, EndRequest https://github.com/nuwave/lighthouse/pull/1726StartExecution event https://github.com/nuwave/lighthouse/pull/1726log option from the broadcasting config to the Pusher subscription driver https://github.com/nuwave/lighthouse/pull/1733pusher/pusher-php-server version 5 https://github.com/nuwave/lighthouse/pull/1741echo driver-based subscriptions, the event name will be lighthouse-subscription https://github.com/nuwave/lighthouse/pull/1733private channel https://github.com/nuwave/lighthouse/pull/1733Mixed type in directive definitions https://github.com/nuwave/lighthouse/pull/1742[@whereConditions](https://github.com/whereConditions) and [@whereHasConditions](https://github.com/whereHasConditions) https://github.com/nuwave/lighthouse/pull/2001TestResponse::assertGraphQLErrorMessage() on successful response[@orderBy](https://github.com/orderBy) https://github.com/nuwave/lighthouse/pull/1848Undefined array key 0 error when there's an interface implemented by two renamed models https://github.com/nuwave/lighthouse/pull/1997Undefined array key error when using cache version 2 and not having all version 1 configuration present https://github.com/nuwave/lighthouse/pull/1994php artisan lighthouse:cache https://github.com/nuwave/lighthouse/pull/1990__serialize() and __unserialize() https://github.com/nuwave/lighthouse/pull/1987Serializable implementation in favor of magic methods https://github.com/nuwave/lighthouse/pull/1987MakesGraphQLRequests and MakesGraphQLRequestsLumen test helpersGraphQL\Error\ClientAware exceptions outside GraphQL context with extensions contentunbox_bensampo_enum_enum_instances to turn off BenSampo\Enum\Enum unboxing https://github.com/nuwave/lighthouse/pull/1971BenSampo\Enum\Enum unboxing https://github.com/nuwave/lighthouse/pull/1971Nuwave\Lighthouse\Support\Contracts\ComplexityResolverDirective interface to allow overwriting the default query complexity calculation https://github.com/nuwave/lighthouse/pull/1947name in [@scope](https://github.com/scope) by defaulting to the argument name https://github.com/nuwave/lighthouse/pull/1957first do not mistakenly increase [@complexity](https://github.com/complexity) https://github.com/nuwave/lighthouse/pull/1947Nuwave\Lighthouse\Schema\Values\FieldValue https://github.com/nuwave/lighthouse/pull/1947Nuwave\Lighthouse\Schema\Values\FieldValue https://github.com/nuwave/lighthouse/pull/1951[@spread](https://github.com/spread) to inputs nested within lists https://github.com/nuwave/lighthouse/pull/1944--federation option to lighthouse:print-schema command to print the schema with federation directives and without federation spec additions, like _service.sdl https://github.com/nuwave/lighthouse/pull/1932null for applications that do not use auth at allNuwave\Lighthouse\Auth and a dedicated AuthServiceProvider https://github.com/nuwave/lighthouse/pull/1930TestReponse::assertGraphQLValidationError() work for fields with multiple messages https://github.com/nuwave/lighthouse/pull/1926Query type when using federation https://github.com/nuwave/lighthouse/pull/1925Carbon\CarbonImmutable for date scalars https://github.com/nuwave/lighthouse/pull/1924AuthenticationException::fromLaravel() and AuthenticationErrorHandler to handle laravel native AuthenticationException https://github.com/nuwave/lighthouse/pull/1922AuthorizationException::fromLaravel() and AuthorizationErrorHandler to handle laravel native AuthorizationException https://github.com/nuwave/lighthouse/pull/1922ClearsSchemaCache to clear the schema cache once before any tests are run https://github.com/nuwave/lighthouse/pull/1920artisan lighthouse:directive https://github.com/nuwave/lighthouse/pull/1921[@builder](https://github.com/builder) directive on fields https://github.com/nuwave/lighthouse/pull/1687Nuwave\Lighthouse\Scout\ScoutBuilderDirective https://github.com/nuwave/lighthouse/pull/1691[@eq](https://github.com/eq) directive on fields https://github.com/nuwave/lighthouse/pull/1681[@throttle](https://github.com/throttle) directive to set field rate limit using Laravel rate limiting services https://github.com/nuwave/lighthouse/pull/1708[@search](https://github.com/search) with other directives https://github.com/nuwave/lighthouse/pull/1691Nuwave\Lighthouse\Scout https://github.com/nuwave/lighthouse/pull/1698BaseDirective loads all arguments and caches them after the first directiveHasArgument/directiveArgValue call https://github.com/nuwave/lighthouse/pull/1707[@can](https://github.com/can) directive https://github.com/nuwave/lighthouse/pull/1715OR conditions in HAS relations https://github.com/nuwave/lighthouse/pull/1713[@guard](https://github.com/guard)(with: "api") should be changed to [@guard](https://github.com/guard)(with: ["api"])https://github.com/nuwave/lighthouse/pull/1705query and scopes arguments to the [@can](https://github.com/can) directive https://github.com/nuwave/lighthouse/issues/1916[@guard](https://github.com/guard) and [@namespace](https://github.com/namespace) directives as repeatable https://github.com/nuwave/lighthouse/issues/1907ValidationErrorHandler returned error type https://github.com/nuwave/lighthouse/commit/e9f97c117a50aab3c61cb104628696a97b5bfa2bValidationException::fromLaravel() and ValidationErrorHandler to include validation messages in extensions https://github.com/nuwave/lighthouse/pull/1899[@validator](https://github.com/validator) https://github.com/nuwave/lighthouse/pull/1890lighthouse:clear-cache in other commands to handle schema cache version 2 https://github.com/nuwave/lighthouse/pull/1894rethrowGraphQLErrors() to testing helper to leverage PHPUnit exception testing https://github.com/nuwave/lighthouse/pull/1885cache.version to use a PHP file for the schema cache and leverage OPcache https://github.com/nuwave/lighthouse/pull/1842non_null_pagination_results to mark the generated result type of paginated lists as non-nullable https://github.com/nuwave/lighthouse/pull/1878[@with](https://github.com/with) https://github.com/nuwave/lighthouse/pull/1871[@cache](https://github.com/cache) https://github.com/nuwave/lighthouse/pull/1869[@lazyLoad](https://github.com/lazyLoad) with paginated relations https://github.com/nuwave/lighthouse/pull/1867-> in column references for complex where conditions https://github.com/nuwave/lighthouse/pull/1864null when encoding or decoding with [@globalId](https://github.com/globalId) https://github.com/nuwave/lighthouse/pull/1862ValidationException::withMessages() https://github.com/nuwave/lighthouse/pull/1857StartOperationOrOperations and EndOperationOrOperations https://github.com/nuwave/lighthouse/pull/1856graphql-php lazy field definitions https://github.com/nuwave/lighthouse/pull/1851webonyx/graphql-php:^14.7 https://github.com/nuwave/lighthouse/pull/1851messages argument of [@rules](https://github.com/rules) and [@rulesForArray](https://github.com/rulesForArray) https://github.com/nuwave/lighthouse/pull/1662[@rules](https://github.com/rules) and [@rulesForArray](https://github.com/rulesForArray) https://github.com/nuwave/lighthouse/pull/1662[@with](https://github.com/with) https://github.com/nuwave/lighthouse/pull/1528Nuwave\Lighthouse\Execution\DataLoader\BatchLoaderRegistry to instantiate arbitrary batch loaders https://github.com/nuwave/lighthouse/pull/1528[@limit](https://github.com/limit) directive to allow clients to specify the maximum number of results to return https://github.com/nuwave/lighthouse/pull/1674[@orderBy](https://github.com/orderBy) on fields https://github.com/nuwave/lighthouse/pull/1678[@like](https://github.com/like) directive to use a client given value to add a LIKE conditional to a database query https://github.com/nuwave/lighthouse/issues/1644webonyx/graphql-php version ^14.5globalId argument of the [@delete](https://github.com/delete), [@forceDelete](https://github.com/forceDelete) and [@restore](https://github.com/restore) directives https://github.com/nuwave/lighthouse/pull/1660messages argument of [@rules](https://github.com/rules) and [@rulesForArray](https://github.com/rulesForArray) as a map with arbitrary keys https://github.com/nuwave/lighthouse/pull/1662Nuwave\Lighthouse\Execution\DataLoader\BatchLoader in favour of Nuwave\Lighthouse\Execution\DataLoader\BatchLoaderRegistry https://github.com/nuwave/lighthouse/pull/1528globalId argument definition from [@update](https://github.com/update) https://github.com/nuwave/lighthouse/pull/1660Carbon\Carbon is cast to Illuminate\Support\Carbon in date scalars https://github.com/nuwave/lighthouse/pull/1672[@withCount](https://github.com/withCount) and paginated relationship directives https://github.com/nuwave/lighthouse/pull/1528[@node](https://github.com/node) force load the type if it has not been loaded https://github.com/nuwave/lighthouse/pull/1659[@model](https://github.com/model) not extend [@node](https://github.com/node) accidentallyNuwave\Lighthouse\Subscriptions\Subscriber::setRoot() in favour of property accessphp artisan lighthouse:validate-schema https://github.com/nuwave/lighthouse/pull/1494application/graphql and application/x-www-form-urlencoded properly https://github.com/nuwave/lighthouse/pull/1424repeatable https://github.com/nuwave/lighthouse/pull/1529config/lighthouse.php https://github.com/nuwave/lighthouse/pull/1533FieldBuilderDirective https://github.com/nuwave/lighthouse/pull/1636[@whereAuth](https://github.com/whereAuth) directive for filtering a field based on authenticated user https://github.com/nuwave/lighthouse/pull/1636[@trim](https://github.com/trim) directive on fields to sanitize all input strings https://github.com/nuwave/lighthouse/pull/1641Illuminate\Support\Carbon instead of Carbon\CarbonNuwave\Lighthouse\Exceptions\ValidationException no longer extends Illuminate\Validation\ValidationException https://github.com/nuwave/lighthouse/pull/1185Nuwave\Lighthouse\Validation https://github.com/nuwave/lighthouse/pull/1185ArgDirectives in distinct phases: Sanitize, Validate, Transform https://github.com/nuwave/lighthouse/pull/1185ArgBuilderDirective, ArgTransformerDirective and ArgDirectiveForArray extend Directive instead of ArgDirective https://github.com/nuwave/lighthouse/pull/1185OrderByClause input for [@orderBy](https://github.com/orderBy), the argument field is now always called column https://github.com/nuwave/lighthouse/pull/1337[@orderBy](https://github.com/orderBy), [@whereConditions](https://github.com/whereConditions) and [@whereHasConditions](https://github.com/whereHasConditions) https://github.com/nuwave/lighthouse/pull/1337__invoke is now the only supported method name for convention based field resolver classes https://github.com/nuwave/lighthouse/pull/1422Nuwave\Lighthouse\Support\Contracts\Directive to require all directives to have an SDL definition by implementing public static definition(): string https://github.com/nuwave/lighthouse/pull/1386Nuwave\Lighthouse\Schema\Factories\DirectiveNamespacer and Nuwave\Lighthouse\Schema\Factories\DirectiveFactory into Lighthouse\Schema\DirectiveLocator https://github.com/nuwave/lighthouse/pull/1494haydenpierce/class-finder as a built-in dependency https://github.com/nuwave/lighthouse/pull/1494defaultHasOperator to Nuwave\Lighthouse\WhereConditions\Operator https://github.com/nuwave/lighthouse/pull/1412lighthouse.php:
'guard' => 'api''forceFill' => truelaragraph/utils for parsing HTTP requests https://github.com/nuwave/lighthouse/pull/1424[@method](https://github.com/method) call the underlying method with the arguments as ordered parameters instead of the full resolver arguments https://github.com/nuwave/lighthouse/pull/1509ErrorHandler method handle() to non-static __invoke() and allow discarding errors by returning nulllighthouse.debug config through env LIGHTHOUSE_DEBUG https://github.com/nuwave/lighthouse/pull/1592multipartGraphQL now accepts arrays instead of JSON strings https://github.com/nuwave/lighthouse/pull/1615/DateTime::ATOM for DateTimeTZ ISO 8601 compatibility https://github.com/nuwave/lighthouse/pull/1622ProvidesRules interface into ArgumentValidation and ArgumentSetValidation https://github.com/nuwave/lighthouse/pull/1628TrimDirective to the default field_middleware config in lighthouse.php https://github.com/nuwave/lighthouse/pull/1641[@spread](https://github.com/spread) https://github.com/nuwave/lighthouse/issues/1631TestResponse::jsonGet() helper, use ->json() instead https://github.com/nuwave/lighthouse/pull/1192/filesNuwave\Lighthouse\Execution\GraphQLValidator as validation now uses Laravel's native validator https://github.com/nuwave/lighthouse/pull/1185HasArgumentPath and HasErrorBuffer and the parts of FieldFactory that calls them https://github.com/nuwave/lighthouse/pull/1185ValidationDirective abstract class in favour of validator classes https://github.com/nuwave/lighthouse/pull/1185lighthouse.orderBy, always uses column now https://github.com/nuwave/lighthouse/pull/1337Nuwave\Lighthouse\Support\Contracts\DefinedDirective interface, moving its functionality to Nuwave\Lighthouse\Support\Contracts\Directive https://github.com/nuwave/lighthouse/pull/1386lighthouse.cache.ttl setting https://github.com/nuwave/lighthouse/pull/1423Nuwave\Lighthouse\Schema\AST\PartialParser in favor of GraphQL\Language\Parser https://github.com/nuwave/lighthouse/pull/1457Nuwave\Lighthouse\Execution\GraphQLRequest singleton https://github.com/nuwave/lighthouse/pull/1424[@bcrypt](https://github.com/bcrypt) in favor of [@hash](https://github.com/hash) https://github.com/nuwave/lighthouse/pull/1200[@middleware](https://github.com/middleware) directive, as it violates the boundary between HTTP and GraphQL request handling.
Use [@guard](https://github.com/guard) or other field middleware directives instead https://github.com/nuwave/lighthouse/pull/1135pagination_amount_argument, it is always first nowtype argument of [@paginate](https://github.com/paginate) that are not PAGINATOR or CONNECTIONcolumnsEnum argument to the [@whereConditions](https://github.com/whereConditions), [@whereHasConditions](https://github.com/whereHasConditions) and [@orderBy](https://github.com/orderBy) directives https://github.com/nuwave/lighthouse/pull/1150[@can](https://github.com/can) when [@forceDelete](https://github.com/forceDelete) or [@restore](https://github.com/restore) are used, the client does not have to filter explicitly https://github.com/nuwave/lighthouse/pull/1157Nuwave\Lighthouse\Testing\MakesGraphQLRequestsLumen for usage with Lumen https://github.com/nuwave/lighthouse/pull/1100Nuwave\Lighthouse\Testing\UsesTestSchema to enable using a dummy schema for testing custom Lighthouse extensions https://github.com/nuwave/lighthouse/pull/1171Nuwave\Lighthouse\ClientDirectives\ClientDirective to correctly get the arguments passed through a client directive https://github.com/nuwave/lighthouse/pull/1184streamGraphQL() helper method to Nuwave\Lighthouse\Testing\MakesGraphQLRequests for simple testing of streamed responses, such as [@defer](https://github.com/defer) https://github.com/nuwave/lighthouse/pull/1184interface or union and may correspond to multiple different models https://github.com/nuwave/lighthouse/pull/1035[@rename](https://github.com/rename) https://github.com/nuwave/lighthouse/pull/1166null https://github.com/nuwave/lighthouse/pull/1174upsert across two levels of BelongsTo relations https://github.com/nuwave/lighthouse/pull/1169ArgBuilderDirective such as [@eq](https://github.com/eq) when the argument is nested deeply within the input https://github.com/nuwave/lighthouse/pull/1176Nuwave\Lighthouse\Testing\MakesGraphQLRequestsLumen test helper https://github.com/nuwave/lighthouse/pull/1186[@defer](https://github.com/defer) correctly https://github.com/nuwave/lighthouse/pull/1184Nuwave\Lighthouse\Schema\Source\SchemaSourceProvider#setRootPath(), this function is never called or used anywhere within Lighthouse.
It will be removed from the interface.type when defining a paginated [@hasMany](https://github.com/hasMany) field after a field with [@paginate](https://github.com/paginate) https://github.com/nuwave/lighthouse/pull/1149Nuwave\Lighthouse\Support\Contracts\ArgResolver directive interface https://github.com/nuwave/lighthouse/pull/899[@create](https://github.com/create), [@update](https://github.com/update), [@upsert](https://github.com/upsert) and [@delete](https://github.com/delete) to function as nested arg resolvers https://github.com/nuwave/lighthouse/pull/899apply argument [@rules](https://github.com/rules) is an array https://github.com/nuwave/lighthouse/pull/1092[@whereConditions](https://github.com/whereConditions) for IN, IS NULL and BETWEEN operators https://github.com/nuwave/lighthouse/pull/1099sync, syncWithoutDetaching and connect https://github.com/nuwave/lighthouse/pull/1110[@orderBy](https://github.com/orderBy) to a given whitelist and generate an enum definition for it https://github.com/nuwave/lighthouse/pull/1118->graphQL() test helper https://github.com/nuwave/lighthouse/pull/1127[@guard](https://github.com/guard) directive to handle authentication https://github.com/nuwave/lighthouse/pull/1135[@whereHasConditions](https://github.com/whereHasConditions) directive to filter query results based on the existence of a relationship https://github.com/nuwave/lighthouse/pull/1140Nuwave\Lighthouse\Execution\MutationExecutor in favor of modular nested arg resolvers https://github.com/nuwave/lighthouse/pull/899[@whereConditions](https://github.com/whereConditions) programmatically and allow overwriting it through a service provider https://github.com/nuwave/lighthouse/pull/1099[@whereConditions](https://github.com/whereConditions) or [@orderBy](https://github.com/orderBy) directives https://github.com/nuwave/lighthouse/pull/1118name() function generically in the BaseDirective class https://github.com/nuwave/lighthouse/pull/1098[@whereConstraints](https://github.com/whereConstraints) directive to [@whereConditions](https://github.com/whereConditions) https://github.com/nuwave/lighthouse/pull/1140ProvidesRules) to merge the rules before validating https://github.com/nuwave/lighthouse/pull/1082OR conditions in [@whereConditions](https://github.com/whereConditions) correctly https://github.com/nuwave/lighthouse/pull/1099null or simply no id when using [@upsert](https://github.com/upsert) https://github.com/nuwave/lighthouse/pull/1114field within the OrderByClause used for [@orderBy](https://github.com/orderBy) will be renamed to column in v5 https://github.com/nuwave/lighthouse/pull/1118[@middleware](https://github.com/middleware) directive, as it violates the boundary between HTTP and GraphQL request handling.
Use [@guard](https://github.com/guard) or other field middleware directives instead https://github.com/nuwave/lighthouse/pull/1135NOT conditional when using [@whereConditions](https://github.com/whereConditions) https://github.com/nuwave/lighthouse/pull/1125BatchLoader instances after executing each query https://github.com/nuwave/lighthouse/pull/1030INPUT_FIELD_DEFINITION to allowed locations for the [@builder](https://github.com/builder) directive https://github.com/nuwave/lighthouse/pull/1074[@enum](https://github.com/enum) as a directive class so it shows up in schema-directives.graphql and can potentially be overwritten https://github.com/nuwave/lighthouse/pull/1078syncWithoutDetaching option for BelongsToMany and MorphToMany relationships https://github.com/nuwave/lighthouse/pull/1031injectArgs option to [@can](https://github.com/can) directive to pass along client defined arguments to the policy check https://github.com/nuwave/lighthouse/pull/1043batchload_relations https://github.com/nuwave/lighthouse/pull/1059Nuwave\Lighthouse\Execution\DataLoader\BatchLoader#loadMany() function https://github.com/nuwave/lighthouse/pull/973[@rename](https://github.com/rename) directive to work with arguments and input fields https://github.com/nuwave/lighthouse/issues/521[@can](https://github.com/can) directive to validate permissions using [@softDeletes](https://github.com/softDeletes) directive. https://github.com/nuwave/lighthouse/pull/1042DefinitionException when missing a type in the type registry https://github.com/nuwave/lighthouse/pull/1066INPUT_FIELD_DEFINITION to orderBy directive location https://github.com/nuwave/lighthouse/pull/1069[@scope](https://github.com/scope) directive for adding a scope to the query builder https://github.com/nuwave/lighthouse/pull/998$description property when generating enum values from a BenSampo\Enum\Enum class https://github.com/nuwave/lighthouse/pull/1027null being passed to a nullable argument that is an input object type https://github.com/nuwave/lighthouse/pull/1021null being passed to a nullable argument that is a list of type https://github.com/nuwave/lighthouse/pull/1016[@upsert](https://github.com/upsert) directive and nested mutation operations to create or update a model regardless whether it exists https://github.com/nuwave/lighthouse/pull/1005builder given to [@paginate](https://github.com/paginate) at schema build timebuilder argument of [@paginate](https://github.com/paginate) https://github.com/nuwave/lighthouse/pull/1011[@count](https://github.com/count) directive for counting a relationship https://github.com/nuwave/lighthouse/pull/984LaravelEnumType https://github.com/nuwave/lighthouse/pull/968[@node](https://github.com/node) https://github.com/nuwave/lighthouse/pull/974[@modelClass](https://github.com/modelClass) directive to map types to models. It will be renamed to [@model](https://github.com/model) in v5 https://github.com/nuwave/lighthouse/pull/974[@globalId](https://github.com/globalId)(decode: "ID") https://github.com/nuwave/lighthouse/pull/982[@spread](https://github.com/spread) when used within a nested input object https://github.com/nuwave/lighthouse/pull/992prefix and domain https://github.com/nuwave/lighthouse/pull/951APP_ENV != 'local' https://github.com/nuwave/lighthouse/pull/957[@paginate](https://github.com/paginate) https://github.com/nuwave/lighthouse/pull/974RegisterDirectiveNamespaces event instead of DirectiveFactory#addResolved() https://github.com/nuwave/lighthouse/pull/950[@node](https://github.com/node) instead of [@model](https://github.com/model) to resolve models through Relay's global identification https://github.com/nuwave/lighthouse/pull/974[@restore](https://github.com/restore) and [@forceDelete](https://github.com/forceDelete) directives, similar to [@delete](https://github.com/delete) https://github.com/nuwave/lighthouse/pull/941[@softDeletes](https://github.com/softDeletes) and [@trashed](https://github.com/trashed) directives to enable filtering soft deleted models https://github.com/nuwave/lighthouse/pull/937lighthouse:ide-helper when no custom directives are defined https://github.com/nuwave/lighthouse/pull/948[@delete](https://github.com/delete), [@forceDelete](https://github.com/forceDelete) and [@restore](https://github.com/restore) during schema build time https://github.com/nuwave/lighthouse/pull/941edgeType in Relay style connections https://github.com/nuwave/lighthouse/pull/939[@morphOne](https://github.com/morphOne) directive for polymorphic one-to-one relationships https://github.com/nuwave/lighthouse/pull/944[@morphTo](https://github.com/morphTo) directive for polymorphic one-to-one relationships https://github.com/nuwave/lighthouse/pull/921[@morphMany](https://github.com/morphMany) directive for polymorphic one-to-many relationships https://github.com/nuwave/lighthouse/pull/944^6.0 https://github.com/nuwave/lighthouse/pull/926lighthouse:ide-helper for generating a definition file with all schema directives https://github.com/nuwave/lighthouse/pull/933[@morphToMany](https://github.com/morphToMany) directive https://github.com/nuwave/lighthouse/pull/1604GraphQLContext::user()[@nest](https://github.com/nest)[@with](https://github.com/with) directive works properly with polymorphic relations https://github.com/nuwave/lighthouse/pull/1517lighthouse:cache to compile GraphQL AST https://github.com/nuwave/lighthouse/pull/1451Nuwave\Lighthouse\Support\Http\Middleware\LogGraphQLQueries that logs every incoming GraphQL query https://github.com/nuwave/lighthouse/pull/1454Nuwave\Lighthouse\Support\Contracts\ProvidesValidationRules https://github.com/nuwave/lighthouse/pull/1487DateTimeUtc scalar https://github.com/nuwave/lighthouse/pull/1320lighthouse-config and default schema with tag lighthouse-schema instead of the previously used tags config and schema https://github.com/nuwave/lighthouse/issues/1489Nuwave\Lighthouse\Execution\ErrorPool to allow collection of partial errors https://github.com/nuwave/lighthouse/pull/1420[@count](https://github.com/count) directive works properly with polymorphic relations https://github.com/nuwave/lighthouse/pull/1466graphQLEnpointUrl() test helper https://github.com/nuwave/lighthouse/pull/1439Nuwave\Lighthouse\Execution\ErrorBuffer in favor of Nuwave\Lighthouse\Execution\ErrorPool https://github.com/nuwave/lighthouse/pull/1420[@withCount](https://github.com/withCount) directive to eager load relationship counts on field access https://github.com/nuwave/lighthouse/pull/1390lighthouse:directive artisan command to allow choosing interfaces https://github.com/nuwave/lighthouse/pull/1251lighthouse.cache.store configuration option to set the cache store to use for schema caching https://github.com/nuwave/lighthouse/pull/1446[@count](https://github.com/count) directive https://github.com/nuwave/lighthouse/pull/1390lighthouse:query and lighthouse:mutation, add option --full to include the seldom needed resolver arguments $context and $resolveInfoprogrammatic-types.graphql in artisan lighthouse:ide-helperprogrammatic-types.graphql when running the lighthouse:ide-helper artisan command https://github.com/nuwave/lighthouse/pull/1371multipartGraphQL Lumen test helper too https://github.com/nuwave/lighthouse/pull/1395[@orderBy](https://github.com/orderBy), [@whereConditions](https://github.com/whereConditions) and [@whereHasConditions](https://github.com/whereHasConditions) only work on field arguments https://github.com/nuwave/lighthouse/pull/1402force_fill option in lighthouse.php https://github.com/nuwave/lighthouse/pull/1405Nuwave\Lighthouse\Support\Contracts\DefinedDirective::definition() will be moved to Nuwave\Lighthouse\Support\Contracts\Directive and replace its name() method.
This requires all directives to have an SDL definition.[@update](https://github.com/update) before force filling them into the Model https://github.com/nuwave/lighthouse/pull/1377multipartGraphQL test helper https://github.com/nuwave/lighthouse/pull/1342guard for all authentication functionality https://github.com/nuwave/lighthouse/pull/1343pagination.default_count https://github.com/nuwave/lighthouse/pull/1352has(), overwrite() and registerNew() to TypeRegistry to control if types should be overwritten when registering duplicates https://github.com/nuwave/lighthouse/pull/1361forceFill() when mutating models https://github.com/nuwave/lighthouse/pull/1348lighthouse.php https://github.com/nuwave/lighthouse/pull/1352paginate_max_count will change to pagination.max_count https://github.com/nuwave/lighthouse/pull/1352registerNew() method of TypeRegistry will be removed in favor of register(), which will change its behavior to throw when registering duplicates https://github.com/nuwave/lighthouse/pull/1361[@whereConditions](https://github.com/whereConditions) https://github.com/nuwave/lighthouse/pull/1341--json to print-schema to output JSON instead of GraphQL SDL https://github.com/nuwave/lighthouse/pull/1268TestResponseMixin https://github.com/nuwave/lighthouse/pull/1308DateTimeTz https://github.com/nuwave/lighthouse/pull/1311_lighthouse_ide_helper.php with php artisan lighthouse:ide-helperbelongsTo relations at the same level https://github.com/nuwave/lighthouse/pull/1285Cache::has() https://github.com/nuwave/lighthouse/pull/1290resolve() helper with Lumen-compatible app() https://github.com/nuwave/lighthouse/pull/1305[@create](https://github.com/create) and [@update](https://github.com/update) on nested input object fields that accept an array of input types https://github.com/nuwave/lighthouse/pull/1316SubscriptionRegistry implementation using the container https://github.com/nuwave/lighthouse/pull/1286ExceptionHandler https://github.com/nuwave/lighthouse/pull/1303auth()->user() return the authenticated user instead of null https://github.com/nuwave/lighthouse/pull/1306AttemptAuthentication middleware to optionally log in users and delegate access guards to the field level https://github.com/nuwave/lighthouse/pull/1197lighthouse:directive to add directive class https://github.com/nuwave/lighthouse/pull/1240[@with](https://github.com/with) directive https://github.com/nuwave/lighthouse/pull/1068TestingServiceProvider for [@mock](https://github.com/mock) when running unit tests https://github.com/nuwave/lighthouse/pull/1244Error instead of ModelNotFoundException when model is not found in [@can](https://github.com/can) https://github.com/nuwave/lighthouse/pull/1225find option of [@can](https://github.com/can) https://github.com/nuwave/lighthouse/pull/1216[@hash](https://github.com/hash) directive which uses Laravel's hashing configuration https://github.com/nuwave/lighthouse/pull/1200passOrdered to [@method](https://github.com/method) to pass just the arguments as ordered parameters https://github.com/nuwave/lighthouse/pull/1208input, interface and enum types https://github.com/nuwave/lighthouse/pull/1203streamGraphQL() helper in Nuwave\Lighthouse\Testing\MakesGraphQLRequestsLumen https://github.com/nuwave/lighthouse/pull/1222[@bcrypt](https://github.com/bcrypt) in favor of [@hash](https://github.com/hash) https://github.com/nuwave/lighthouse/pull/1200[@method](https://github.com/method) will call the underlying method with the arguments as ordered parameters instead of the full resolver arguments https://github.com/nuwave/lighthouse/pull/1208[@whereJsonContains](https://github.com/whereJsonContains) directive to an input value as a whereJsonContains filter__invoke when referencing methods in directives and when looking for default resolvers or type resolvers https://github.com/nuwave/lighthouse/issues/882[@whereContraints](https://github.com/whereContraints) and generate definitions for an Enum type and an Input type that are restricted to the defined columns https://github.com/nuwave/lighthouse/pull/916MakesGraphQLRequests https://github.com/nuwave/lighthouse/pull/916__invoke in v5 https://github.com/nuwave/lighthouse/issues/882ValidationDirective not setting the mutation or query arguments to itself https://github.com/nuwave/lighthouse/pull/915[@namespace](https://github.com/namespace) directive as a replacement for the removed [@group](https://github.com/group) directive https://github.com/nuwave/lighthouse/pull/768[@defer](https://github.com/defer) extension now supports deferring nested fields of mutations https://github.com/nuwave/lighthouse/pull/855Nuwave\Lighthouse\Schema\Directives\ValidationDirective https://github.com/nuwave/lighthouse/pull/846[@belongsToMany](https://github.com/belongsToMany) directive to support pivot data on a custom Relay style Edge type https://github.com/nuwave/lighthouse/pull/871connect, disconnect and delete operations for nested mutations upon MorphTo relationships https://github.com/nuwave/lighthouse/pull/879Illuminate\Contracts\Config\Repository instead of Illuminate\Config\Repository https://github.com/nuwave/lighthouse/issues/832[@can](https://github.com/can) when issuing mass updates on multiple models https://github.com/nuwave/lighthouse/pull/838private in [@cache](https://github.com/cache) directive even when the user is not authenticated https://github.com/nuwave/lighthouse/pull/843[@include](https://github.com/include) directive, it is semantically opposite to [@skip](https://github.com/skip), when using it with [@defer](https://github.com/defer) https://github.com/nuwave/lighthouse/pull/855[@whereConstraints](https://github.com/whereConstraints) https://github.com/nuwave/lighthouse/pull/872[@model](https://github.com/model) directive in a type that has a list field https://github.com/nuwave/lighthouse/pull/883[@include](https://github.com/include) and [@skip](https://github.com/skip) directives that are part of the GraphQL spec show up in introspection and fix handling of default values in custom client directives https://github.com/nuwave/lighthouse/pull/892webonyx/graphql-php to ^0.13.2 https://github.com/nuwave/lighthouse/pull/768Node* to Type* https://github.com/nuwave/lighthouse/pull/768TypeManipulator, FieldManipulator and ArgManipulator https://github.com/nuwave/lighthouse/pull/768DocumentAST class to enable a more performant implementation https://github.com/nuwave/lighthouse/pull/768lighthouse.cache.enable by default https://github.com/nuwave/lighthouse/pull/768config/lighthouse.php and bring it up to date with the latest changes in the base configuration file https://github.com/nuwave/lighthouse/pull/820SubscriptionExceptionHandler into namespace Nuwave\Lighthouse\Subscriptions\Contracts https://github.com/nuwave/lighthouse/pull/819first instead of count.
The config pagination_amount_argument can be used to change the argument name https://github.com/nuwave/lighthouse/pull/852ArgValidationDirective to ProvidesRules and drop get prefix from the methods within https://github.com/nuwave/lighthouse/pull/846[@can](https://github.com/can) against configurable.
The previous behavior of implicitly using the id argument for finding a specific model to authorize against now no longer works. https://github.com/nuwave/lighthouse/pull/856Nuwave\Lighthouse\Schema\Types\LaravelEnumType wrapper to map to Enum instances internally https://github.com/nuwave/lighthouse/pull/908[@group](https://github.com/group) directive in favor of [@middleware](https://github.com/middleware) and [@namespace](https://github.com/namespace) https://github.com/nuwave/lighthouse/pull/768ArgFilterDirective interface in favor of the ArgBuilderDirective interface https://github.com/nuwave/lighthouse/pull/821[@whereBetween](https://github.com/whereBetween) and [@whereNotBetween](https://github.com/whereNotBetween) directives https://github.com/nuwave/lighthouse/pull/821[@spread](https://github.com/spread) directive instead of the flatten argument of [@create](https://github.com/create)/[@update](https://github.com/update) https://github.com/nuwave/lighthouse/pull/822dispatch aliases fire and class for dispatching through [@event](https://github.com/event) https://github.com/nuwave/lighthouse/pull/823GraphQL facade and the container alias graphql https://github.com/nuwave/lighthouse/pull/824if for specifying the ability that has to be met in [@can](https://github.com/can) https://github.com/nuwave/lighthouse/pull/838pagination_amount_argument will be removed in v5[@middleware](https://github.com/middleware) to support Lumen https://github.com/nuwave/lighthouse/pull/786decode to [@globaldId](https://github.com/globaldId) to control the result of decoding https://github.com/nuwave/lighthouse/pull/796cache.ttl for customizing expiration time of schema cache https://github.com/nuwave/lighthouse/pull/801Nuwave\Lighthouse\Testing\MakesGraphQLRequests https://github.com/nuwave/lighthouse/pull/802[@rules](https://github.com/rules) and [@rulesForArray](https://github.com/rulesForArray) https://github.com/nuwave/lighthouse/pull/812[@whereConstraints](https://github.com/whereConstraints) https://github.com/nuwave/lighthouse/pull/800Illuminate\Contracts\Events\Dispatcher instead of concrete implementation in SubscriptionBroadcaster https://github.com/nuwave/lighthouse/pull/805GraphQL facade and the container alias graphql will be removed in v4[@deprecate](https://github.com/deprecate) directive https://github.com/nuwave/lighthouse/pull/787[@whereConstraints](https://github.com/whereConstraints) directive that offers flexible query capabilities to the client https://github.com/nuwave/lighthouse/pull/753controller config option will be removed in v4 https://github.com/nuwave/lighthouse/pull/781[@create](https://github.com/create) and [@update](https://github.com/update) https://github.com/nuwave/lighthouse/pull/777input argument from a query that uses the [@spread](https://github.com/spread) directive without getting an error https://github.com/nuwave/lighthouse/pull/774SubscriptionExceptionHandler will be moved to the namespace Nuwave\Lighthouse\Subscriptions\Contracts<= 0 is requested https://github.com/nuwave/lighthouse/pull/765Accept: application/json header https://github.com/nuwave/lighthouse/pull/743first instead of count in v4.
The config pagination_amount_argument can be used to change the argument name now https://github.com/nuwave/lighthouse/pull/752ErrorBuffer directly, its dependencies can not be resolved through the container https://github.com/nuwave/lighthouse/pull/756GraphQLRequest singleton between multiple requests to prevent a common error in test execution https://github.com/nuwave/lighthouse/pull/761[@spread](https://github.com/spread) directive to reshape nested input arguments https://github.com/nuwave/lighthouse/pull/680[@builder](https://github.com/builder) directive to quickly specify a single method to apply constraints to the query builder https://github.com/nuwave/lighthouse/pull/680new_between_directives config to use the new between directives now https://github.com/nuwave/lighthouse/pull/680[@spread](https://github.com/spread) instead of the flatten argument of [@create](https://github.com/create)/[@update](https://github.com/update) https://github.com/nuwave/lighthouse/pull/680ArgBuilderDirective instead of the ArgFilterDirective https://github.com/nuwave/lighthouse/pull/680[@whereBetween](https://github.com/whereBetween) and [@whereNotBetween](https://github.com/whereNotBetween) will take a single input object instead of being spread across two args https://github.com/nuwave/lighthouse/pull/680dispatch for the [@event](https://github.com/event) directive https://github.com/nuwave/lighthouse/pull/719fire and class for dispatching through [@event](https://github.com/event) https://github.com/nuwave/lighthouse/pull/719[@defer](https://github.com/defer) client directive https://github.com/nuwave/lighthouse/pull/422[@rulesForArray](https://github.com/rulesForArray) https://github.com/nuwave/lighthouse/pull/427[@hasMany](https://github.com/hasMany) and [@paginator](https://github.com/paginator) directives now support an additional argument defaultCount that sets a default value for the generated field argument count https://github.com/nuwave/lighthouse/pull/428[@can](https://github.com/can) directive https://github.com/nuwave/lighthouse/pull/431[@inject](https://github.com/inject) with dot notation to set nested value https://github.com/nuwave/lighthouse/pull/511[@deprecated](https://github.com/deprecated) directive https://github.com/nuwave/lighthouse/pull/522[@paginate](https://github.com/paginate) to limit the maximum requested count https://github.com/nuwave/lighthouse/pull/569guard argument to [@auth](https://github.com/auth) directive https://github.com/nuwave/lighthouse/pull/584[@orderBy](https://github.com/orderBy) argument directive for client-side dynamic ordering https://github.com/nuwave/lighthouse/pull/659[@can](https://github.com/can) directive https://github.com/nuwave/lighthouse/pull/684[@method](https://github.com/method) now receive the same 4 resolver arguments that all other resolvers do https://github.com/nuwave/lighthouse/pull/486connect argument https://github.com/nuwave/lighthouse/pull/514 https://github.com/nuwave/lighthouse/pull/549[@can](https://github.com/can) more friendly https://github.com/nuwave/lighthouse/pull/515webonyx/graphql-php to ^0.13 and PHP to >= 7.1 https://github.com/nuwave/lighthouse/pull/517DirectiveRegistry with DirectiveFactory to lazy load directives https://github.com/nuwave/lighthouse/pull/520Date scalar to startOfDay, fixes equality checks https://github.com/nuwave/lighthouse/pull/452[@validate](https://github.com/validate) directive in favor of [@rules](https://github.com/rules) https://github.com/nuwave/lighthouse/pull/427[@field](https://github.com/field) directive to using the resolver argument https://github.com/nuwave/lighthouse/pull/435[@security](https://github.com/security) directive in favor of defining security options through the config https://github.com/nuwave/lighthouse/pull/435resolver argument of [@interface](https://github.com/interface) and [@union](https://github.com/union) to resolveType https://github.com/nuwave/lighthouse/pull/435We just started maintaining a changelog starting from v3.
If someone wants to make one for previous versions, pull requests are welcome.
How can I help you explore Laravel packages today?