Skip to content

Latest commit

 

History

History
600 lines (406 loc) · 30 KB

CHANGELOG.md

File metadata and controls

600 lines (406 loc) · 30 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

You can find and compare releases at the GitHub release page.

Unreleased

4.11.0

Added

  • Add AttemptAuthentication middleware to optionally log in users and delegate access guards to the field level nuwave#1197
  • Add artisan command lighthouse:directive to add directive class nuwave#1240

Fixed

  • Eager load nested relations using the @with directive nuwave#1068
  • Avoid infinite loop with empty namespace in generator commands nuwave#1245
  • Automatically register TestingServiceProvider for @mock when running unit tests nuwave#1244

4.10.2

Fixed

  • Ensure subscription routes are named uniquely nuwave#1231

Changed

  • Throw user readable Error instead of ModelNotFoundException when model is not found in @can nuwave#1225

4.10.1

Fixed

4.10.0

Added

  • Access nested inputs with dot notation using the find option of @can nuwave#1216
  • Add @hash directive which uses Laravel's hashing configuration nuwave#1200
  • Add option passOrdered to @method to pass just the arguments as ordered parameters nuwave#1208
  • Add support to extend input, interface and enum types nuwave#1203
  • Implement streamGraphQL() helper in \Nuwave\Lighthouse\Testing\MakesGraphQLRequestsLumen nuwave#1222
  • Support Laravel 7 nuwave#1219

Deprecated

  • Remove @bcrypt in favour of @hash nuwave#1200
  • @method will call the underlying method with the arguments as ordered parameters instead of the full resolver arguments nuwave#1208

4.9.0

Added

  • Add optional columnsEnum argument to the @whereConditions, @whereHasConditions and @orderBy directives nuwave#1150
  • Exclude or include trashed models in @can when @forceDelete or @restore are used so the client does not have to filter explicitly nuwave#1157
  • Add test trait \Nuwave\Lighthouse\Testing\MakesGraphQLRequestsLumen for usage with Lumen nuwave#1100
  • Add test trait \Nuwave\Lighthouse\Testing\UsesTestSchema to enable using a dummy schema for testing custom Lighthouse extensions nuwave#1171
  • Simplify mocking resolvers that just return static data nuwave#1177
  • Add utility \Nuwave\Lighthouse\ClientDirectives\ClientDirective to correctly get the arguments passed through a client directive nuwave#1184
  • Add streamGraphQL() helper method to \Nuwave\Lighthouse\Testing\MakesGraphQLRequests for simple testing of streamed responses, such as @defer nuwave#1184

Fixed

  • Fix eager-loading relations where the parent type is an interface or union and may correspond to multiple different models nuwave#1035
  • Fix renaming input fields that are nested within lists using @rename nuwave#1166
  • Fix handling of nested mutation operations that receive null nuwave#1174
  • Fix nested mutation upsert across two levels of BelongsTo relations nuwave#1169
  • Apply query filters using an ArgBuilderDirective such as @eq when the argument is nested deeply within the input nuwave#1176
  • Fix \Nuwave\Lighthouse\Testing\MakesGraphQLRequestsLumen test helper nuwave#1186
  • Handle multiple instances of client directives with @defer correctly nuwave#1184

Deprecated

  • Deprecate \Nuwave\Lighthouse\Schema\Source\SchemaSourceProvider#setRootPath(), this function is never called or used anywhere within Lighthouse. It will be removed from the interface.

4.8.1

Fixed

  • Avoid erasing the model information from the wrapping paginated results type when defining a paginated @hasMany field after a field with @paginate nuwave#1149

4.8.0

Added

  • Compose complex input arguments through nested arg resolvers nuwave#899
  • Add \Nuwave\Lighthouse\Support\Contracts\ArgResolver directive interface nuwave#899
  • Allow existing mutation directives @create, @update, @upsert and @delete to function as nested arg resolvers nuwave#899
  • Validate at schema build time that the apply argument @rules is an array nuwave#1092
  • Add support in @whereConditions for IN, IS NULL and BETWEEN operators nuwave#1099
  • Add ability to define pivot data on nested mutations within sync, syncWithoutDetach and connect nuwave#1110
  • Allow restricting the columns for @orderBy to a given whitelist and generate an enum definition for it nuwave#1118
  • Allow passing variables in ->graphQL() test helper nuwave#1127
  • Add missing schema descriptions to some inputs, types, and enums nuwave#1131
  • Add @guard directive to handle authentication nuwave#1135
  • Add @whereHasConditions directive to filter query results based on the existence of a relationship nuwave#1140

Changed

  • Remove \Nuwave\Lighthouse\Execution\MutationExecutor in favour of modular nested arg resolvers nuwave#899
  • Register the operator enum for @whereConditions programmatically and allow overwriting it through a service provider nuwave#1099
  • Always automatically set the correct argument type when using @whereConditions or @orderBy directives nuwave#1118
  • Implement the name() function generically in the BaseDirective class nuwave#1098
  • Renamed the @whereConstraints directive to @whereConditions nuwave#1140

Fixed

  • Enable chained rule provider directives (ProvidesRules) to merge the rules before validating nuwave#1082
  • Apply nested OR conditions in @whereConditions correctly nuwave#1099
  • Allow passing null or simply no id when using @upsert nuwave#1114

Deprecated

  • The argument field within the OrderByClause used for @orderBy will be renamed to column in v5 nuwave#1118
  • Deprecated the @middleware directive, as it violates the boundary between HTTP and GraphQL request handling. Use @guard or other field middleware directives instead nuwave#1135

Removed

  • Remove broken NOT conditional when using @whereConditions nuwave#1125

4.7.2

Fixed

  • Enable multiple queries in a single request by clearing BatchLoader instances after executing each query nuwave#1030
  • Keep the query and pagination capabilities of relation directives when disabling batch loading nuwave#1083

4.7.1

Changed

  • Add INPUT_FIELD_DEFINITION to allowed locations for the @builder directive nuwave#1074

Fixed

  • Define @enum as a directive class so it shows up in schema-directives.graphql and can potentially be overwritten nuwave#1078

4.7.0

Added

  • Add syncWithoutDetaching option for BelongsToMany and MorphToMany relationships nuwave#1031
  • Add injectArgs option to @can directive to pass along client defined arguments to the policy check nuwave#1043
  • Allow globally turning off relation batch loading through the config option batchload_relations nuwave#1059
  • Add \Nuwave\Lighthouse\Execution\DataLoader\BatchLoader#loadMany() function nuwave#973
  • Extend @rename directive to work with arguments and input fields nuwave#521

Changed

  • Add ability to fetch soft deleted model within @can directive to validate permissions using @softDeletes directive. nuwave#1042
  • Improve the error message for missing field resolvers by offering a solution nuwave#1045
  • Throw DefinitionException when missing a type in the type registry nuwave#1066
  • Add INPUT_FIELD_DEFINITION to orderBy directive location nuwave#1069

4.6.0

Added

  • Add @scope directive for adding a scope to the query builder nuwave#998

Changed

  • Use detailed $description property when generating enum values from a BenSampo\Enum\Enum class nuwave#1027

Fixed

  • Handle arrays of namespaces in generator commands nuwave#1033

4.5.3

Fixed

  • Handle null being passed to a nullable argument that is an input object type nuwave#1021

4.5.2

Fixed

  • Fix conversion of client directives after the schema was cached nuwave#1019

4.5.1

Fixed

  • Handle null being passed to a nullable argument that is a list of type nuwave#1016

4.5.0

Added

  • Add @upsert directive and nested mutation operations to create or update a model regardless whether it exists nuwave#1005

Fixed

  • Fix broken behaviour when using union types with schema caching nuwave#1015

4.4.2

Added

  • Validate the correctness of the builder given to @paginate at schema build time

Fixed

  • Do not require the type of a field matching a model class when using the builder argument of @paginate nuwave#1011

4.4.1

Fixed

  • Fix regression in 4.4.0 that required matching the type returned from paginated relationship fields with the class name of the model nuwave#1011

4.4.0

Added

  • Add @count directive for counting a relationship nuwave#984
  • Allow overwriting the name of Enum types created through LaravelEnumType nuwave#968
  • Resolve models through Relay's global identification using @node nuwave#974
  • Add experimental @modelClass directive to map types to models. It will be renamed to @model in v5 nuwave#974

Fixed

  • Remove the extra new line from the returned value when using @globalId(decode: "ID") nuwave#982
  • Throw a syntax error instead of an exception when performing an empty request or a request with an empty query nuwave#989
  • Properly apply @spread when used within a nested input object nuwave#992

Changed

  • Allow additional route configurations prefix and domain nuwave#951
  • Enable schema cache only when APP_ENV != 'local' nuwave#957

Fixed

  • Fix default model detection when using other directives combination with @paginate nuwave#974

Deprecated

  • Use the RegisterDirectiveNamespaces event instead of DirectiveFactory#addResolved() nuwave#950
  • Use @node instead of @model to resolve models through Relay's global identification nuwave#974

4.3.0

Added

  • Add @restore and @forceDelete directives, similar to @delete nuwave#941
  • Add @softDeletes and @trashed directives to enable filtering soft deleted models nuwave#937

Fixed

  • Prevent throwing in lighthouse:ide-helper when no custom directives are defined nuwave#948

Changed

  • Validate requirements for argument definitions of @delete, @forceDelete and @restore during schema build time nuwave#941

4.2.1

Fixed

  • Actually use the specified edgeType in Relay style connections nuwave#939

4.2.0

Added

  • Add @morphOne directive for polymorphic one-to-one relationships nuwave#944
  • Add @morphTo directive for polymorphic one-to-one relationships nuwave#921
  • Add @morphMany directive for polymorphic one-to-many relationships nuwave#944
  • Support Laravel ^6.0 nuwave#926
  • Add command lighthouse:ide-helper for generating a definition file with all schema directives nuwave#933

4.1.1

Fixed

  • Unbox laravel-enum inputs when using the builder directives nuwave#927

4.1.0

Added

  • Add the @whereJsonContains directive to an input value as a [whereJsonContains filter
  • Allow using callable classes with __invoke when referencing methods in directives and when looking for default resolvers or type resolvers nuwave#882
  • Allow to restrict column names to a well-defined list in @whereContraints and generate definitions for an Enum type and an Input type that are restricted to the defined columns nuwave#916
  • Add test helpers for introspection queries to MakesGraphQLRequests nuwave#916

Deprecated

  • The default name of resolver and type resolver methods will be __invoke in v5 nuwave#882

Fixed

  • Fixed the ValidationDirective not setting the mutation or query arguments to itself nuwave#915

4.0.0

Added

  • Add the @namespace directive as a replacement for the removed @group directive nuwave#768
  • The @defer extension now supports deferring nested fields of mutations nuwave#855
  • Add a simple way to define complex validation directives by extending \Nuwave\Lighthouse\Schema\Directives\ValidationDirective nuwave#846
  • Extend the @belongsToMany directive to support pivot data on a custom Relay style Edge type nuwave#871
  • Implement connect, disconnect and delete operations for nested mutations upon MorphTo relationships nuwave#879

Fixed

  • Avoid growing the memory extensively when doing complex AST manipulation nuwave#768
  • Make nested mutations work with subclassed relationship types nuwave#825
  • Allow empty arrays and other falsy values as input for nested mutation operations like "sync" nuwave#830
  • Use Illuminate\Contracts\Config\Repository instead of Illuminate\Config\Repository nuwave#832
  • Allow checking the abilities with @can when issuing mass updates on multiple models nuwave#838
  • Allow use of private in @cache directive even when the user is not authenticated nuwave#843
  • Fix Lumen route registration nuwave#853
  • Fix handling of @include directive, it is semantically opposite to @skip, when using it with @defer nuwave#855
  • Allow querying for null values using @whereConstraints nuwave#872
  • Fix issue when using the @model directive in a type that has a list field nuwave#883
  • Make the @include and @skip directives that are part of the GraphQL spec show up in introspection and fix handling of default values in custom client directives nuwave#892

Changed

  • Bumped the requirement on webonyx/graphql-php to ^0.13.2 nuwave#768
  • Rename directive interfaces dealing with types from Node* to Type* nuwave#768
  • Change the signature of the AST manipulating directive interfaces: TypeManipulator, FieldManipulator and ArgManipulator nuwave#768
  • Change the API of the DocumentAST class to enable a more performant implementation nuwave#768
  • Enable the schema caching option lighthouse.cache.enable by default nuwave#768
  • Lazily load types from the schema. Directives defined on parts of the schema that are not used within the current query are no longer run on every request nuwave#768
  • Simplify the default route configuration. Make sure to review your config/lighthouse.php and bring it up to date with the latest changes in the base configuration file nuwave#820
  • Move SubscriptionExceptionHandler into namespace Nuwave\Lighthouse\Subscriptions\Contracts nuwave#819
  • The pagination field argument that controls the amount of results now default tos first instead of count. The config pagination_amount_argument can be used to change the argument name nuwave#852
  • Rename ArgValidationDirective to ProvidesRules and drop get prefix from the methods within nuwave#846
  • Make the argument used for finding a model to check @can against configurable. The previous behaviour of implicitly using the id argument for finding a specific model to authorize against now no longer works. nuwave#856
  • Change the Nuwave\Lighthouse\Schema\Types\LaravelEnumType wrapper to map to Enum instances internally nuwave#908

Removed

  • Remove @group directive in favour of @middleware and @namespace nuwave#768
  • Remove the ArgFilterDirective interface in favour of the ArgBuilderDirective interface nuwave#821
  • Remove the old style @whereBetween and @whereNotBetween directives nuwave#821
  • Use the @spread directive instead of the flatten argument of @create/@update nuwave#822
  • Remove dispatch aliases fire and class for dispatching through @event nuwave#823
  • Remove the GraphQL facade and the container alias graphql nuwave#824
  • Remove the alias if for specifying the ability that has to be met in @can nuwave#838

Deprecated

  • The configuration option pagination_amount_argument will be removed in v5

3.7.0

Added

  • Add compatibility layer to allow @middleware to support Lumen nuwave#786
  • Add option decode to @globaldId to control the result of decoding nuwave#796
  • Add config option cache.ttl for customizing expiration time of schema cache nuwave#801
  • Extract test helpers into a reusable trait \Nuwave\Lighthouse\Testing\MakesGraphQLRequests nuwave#802
  • Support custom rule classes in @rules and @rulesForArray nuwave#812

Fixed

  • Fix querying for falsy values through @whereConstraints nuwave#800
  • Use Illuminate\Contracts\Events\Dispatcher instead of concrete implementation in SubscriptionBroadcaster nuwave#805

Deprecated

  • The GraphQL facade and the container alias graphql will be removed in v4

3.6.1

Fixed

  • Use the spec-compliant default deprecation reason for @deprecate directive nuwave#787

3.6.0

Added

  • Add @whereConstraints directive that offers flexible query capabilities to the client nuwave#753
  • Add convenience wrapper for registering Enum types based on [BenSampo/laravel-enum nuwave#779

Deprecated

  • The controller config option will be removed in v4 nuwave#781

3.5.3

Fixed

  • Respect the model's connection for database transaction during @create and @update nuwave#777

3.5.2

Fixed

  • You can now omit an input argument from a query that uses the @spread directive without getting an error nuwave#774

Deprecated

  • The class SubscriptionExceptionHandler will be moved to the namespace Nuwave\Lighthouse\Subscriptions\Contracts

3.5.1

Fixed

  • Throw error if pagination amount <= 0 is requested nuwave#765

3.5.0

Changed

  • Default the config to always set the Accept: application/json header nuwave#743
  • Declare a single named route which handles POST/GET instead of 2 separate routes nuwave#738
  • Apply the nested operations within a nested mutation in a consistent order that makes sense nuwave#754

Deprecated

  • The pagination field argument that controls the amount of results will default to first instead of count in v4. The config pagination_amount_argument can be used to change the argument name now nuwave#752

Fixed

  • Instantiate the ErrorBuffer directly, its dependencies can not be resolved through the container nuwave#756
  • Refresh GraphQLRequest singleton between multiple requests to prevent a common error in test execution nuwave#761

3.4.0

Added

  • Allow rebinding a custom GlobalId resolver nuwave#739

3.3.0

Added

  • Sync existing models in belongsToMany relations using nested mutations when creating nuwave#707
  • Add @spread directive to reshape nested input arguments nuwave#680
  • Add flexible @builder directive to quickly specify a single method to apply constraints to the query builder nuwave#680
  • Add new_between_directives config to use the new between directives now nuwave#680

Deprecated

  • Use the @spread instead of the flatten argument of @create/@update nuwave#680
  • Prefer usage of the ArgBuilderDirective instead of the ArgFilterDirective nuwave#680
  • @whereBetween and @whereNotBetween will take a single input object instead of being spread across two args nuwave#680

3.2.1

Changed

  • Flatten the namespace for the built-in directives nuwave#700

3.2.0

Added

  • Sync and connect existing models in morphToMany relations using nested mutations nuwave#707

3.1.0

Added

  • Adapt to the new Laravel way and add an alias dispatch for the @event directive nuwave#719

Deprecated

  • Aliases fire and class for dispatching through @event nuwave#719

3.0.0

Added

  • Support Subscriptions nuwave#337
  • Support @defer client directive nuwave#422
  • Define validation for list arguments themselves through @rulesForArray nuwave#427
  • The @hasMany and @paginator directives now support an additional argument defaultCount that sets a default value for the generated field argument count nuwave#428
  • Allow user to be guest when using the @can directive nuwave#431
  • Add shortcut to get NodeValue type definition fields nuwave#432
  • Use @inject with dot notation to set nested value nuwave#511
  • Populate more relationship types through nested mutations nuwave#514 nuwave#549
  • Support the @deprecated directive nuwave#522
  • Allow defining default namespaces as an array nuwave#525
  • Add config & directive argument for @paginate to limit the maximum requested count nuwave#569
  • Add guard argument to @auth directive nuwave#584
  • Support Laravel 5.8 nuwave#626
  • Support File Uploads nuwave#628
  • Add lifecycle events to hook into the execution nuwave#645
  • Add @orderBy argument directive for client-side dynamic ordering nuwave#659
  • Enable passing in model instance to @can directive nuwave#684
  • Allow swapping out the default resolver nuwave#690

Changed

  • Change the default schema location, model and GraphQL namespaces nuwave#423
  • Construction and methods of the Field|Node|Arg-Value objects nuwave#425
  • The methods called with @method now receive the same 4 resolver arguments that all other resolvers do nuwave#486
  • Handle mutating directives transactional by default nuwave#512
  • Nested mutations for BelongsTo require wrapping the ID in a connect argument nuwave#514 nuwave#549
  • Make the error messages returned by @can more friendly nuwave#515
  • Bump requirements for webonyx/graphql-php to ^0.13 and PHP to >= 7.1 nuwave#517
  • Replace DirectiveRegistry with DirectiveFactory to lazy load directives nuwave#520
  • Extensions must registered through ServiceProviders instead of the config file nuwave#645
  • Increase tracing precision when nanoseconds are available nuwave#674

Fixed

  • Diverging paths of nested input objects can now have distinct validation rules nuwave#427
  • Distinguish between FieldDefinitions and InputObjectValues in AST handling nuwave#425
  • Set the date in the Date scalar to startOfDay, fixes equality checks nuwave#452
  • Use primary key defined in model to execute update nuwave#469
  • Consider batched queries when using BatchLoader nuwave#508
  • Refresh newly created models before returning them nuwave#509
  • Prevent name conflict between argument names and non-relation methods when executing nested mutations nuwave#519
  • Prevent crash when invalid JSON variables are given nuwave#581
  • Handle pagination with Laravel Scout correctly nuwave#661
  • Handle schema defined default values for enum types correctly nuwave#689

Removed

  • Remove the previously broken @validate directive in favour of @rules nuwave#427
  • Remove broken user mutations from the default schema nuwave#435
  • Remove deprecated methods nuwave#435
  • Limit the @field directive to using the resolver argument nuwave#435
  • Remove the @security directive in favour of defining security options through the config nuwave#435
  • Rename the resolver argument of @interface and @union to resolveType nuwave#435
  • Remove deprecated Traits nuwave#435

Pre-v3

We just started maintaining a changelog starting from v3.

If someone wants to make one for previous versions, PR's are welcome.