Releases: fsprojects/FSharp.Data.GraphQL
Releases · fsprojects/FSharp.Data.GraphQL
3.0.0
- Breaking Change Migrated to .NET 8 and F# 9.0 with
FSharp.Core9.0.x - Breaking Change Updated scalar
CoerceOutputsignature toobjnull -> 'Primitive option - Breaking Change Moved GraphQL error extensions to the standard
extensionsfield according to the specification - Breaking Change Renamed
ObjectListFiltertype definition toObjectListFilterType - Breaking Change Removed
ObjectListFilter.NoFiltercase - Breaking Change Reworked Relay types to enable async fetching and switched to
ValueOption - Breaking Change
Giraffeweb framework integration moved to a separate package - New Package
FSharp.Data.GraphQL.Server.Giraffefor Giraffe web framework integration - New Package
FSharp.Data.GraphQL.Server.Oxpeckerfor Oxpecker web framework integration - Removed unused Suave NuGet package
- Added
Oxpeckerweb framework support - Added per-field authorization sample using ASP.NET authorization policies
- Added file upload support via GraphQL Multipart Request Spec with
FileDatatype - Added
OfTypesfilter case forObjectListFilterto filter union cases by type - Added
ObjectListFiltervalue parsing from variables in addition to a supported inline value - Added
ObjectListFiltervalue parsing from an inline object with variables - Added
ObjectListFilteradditional operators (In,Contains,StartsWith,EndsWith) - Added
StructNullableto supportValueOptionfields in input objects - Added case-insensitive input object fields and constructor parameters matching
- Added ability to recognize if an input field is null or not present at all
- Added ability to add errors to resolved fields
- Added
FieldDef<'Val, 'Res>type to support resolver-changing middlewares - Added GraphQL extensions support via
GQLMessageException - Added more overloads to
AddGraphQLOptionsincluding additional converters - Added support for optional properties usage in non-Enumerable LINQ queries
- Fixed
IDtype deserialization - Fixed
ObjectListFilterContainsandInoperators implementation for collections - Fixed generation of discriminator comparing expressions to be translatable to database queries
- Fixed
IInputExecutionContextresolution - Fixed
graphql-transport-wsWebSocket implementation - Fixed ability to override
GraphQLRequestHandler<'Root> - Fixed input object CLR property type validation against GraphQL scalar definitions
- Migrated all solutions to SLNX format
- Various performance optimizations and bug fixes
2.0.0
Key highlights:
- Major error handling support improvements;
- ASP.NET and Giraffe plug-and-play support;
- WebSocket support (implementing the
graphql-transport-wssubprotocol) - .NET 6 and 7 support
Major changes
- Added
IGQLErrorandIGQLErrorExtensionsinterfaces. So that you can extend errors with extensions - Resolver now returns either Result<'T, IGQLError> or Result<'T, IGQLError list>
- FSharp.SystemTextJson is used by default
- Executor now accepts
ImmutableDictionary<string, JsonElement>as variables list - Input objects are now deserialized into any record or class automatically and down the hierarchy. If an error happens it provides path to it within an input object
ValueOptionfields on input objects are now supported- Each error now has a
ErrorKind SchemaConfig.ParseErrornow provides a path of the error- ASP.NET Core DI integration added
- Options can be set using
GraphQLOptions<'Root> - WebSocket support with
graphql-transport-wssubprotocol (see the readme for usage)
Lots of appreciation to @valbers for extremely valuable contributions