Skip to content

Releases: fsprojects/FSharp.Data.GraphQL

3.0.0

01 Dec 01:28

Choose a tag to compare

  • Breaking Change Migrated to .NET 8 and F# 9.0 with FSharp.Core 9.0.x
  • Breaking Change Updated scalar CoerceOutput signature to objnull -> 'Primitive option
  • Breaking Change Moved GraphQL error extensions to the standard extensions field according to the specification
  • Breaking Change Renamed ObjectListFilter type definition to ObjectListFilterType
  • Breaking Change Removed ObjectListFilter.NoFilter case
  • Breaking Change Reworked Relay types to enable async fetching and switched to ValueOption
  • Breaking Change Giraffe web framework integration moved to a separate package
  • New Package FSharp.Data.GraphQL.Server.Giraffe for Giraffe web framework integration
  • New Package FSharp.Data.GraphQL.Server.Oxpecker for Oxpecker web framework integration
  • Removed unused Suave NuGet package
  • Added Oxpecker web framework support
  • Added per-field authorization sample using ASP.NET authorization policies
  • Added file upload support via GraphQL Multipart Request Spec with FileData type
  • Added OfTypes filter case for ObjectListFilter to filter union cases by type
  • Added ObjectListFilter value parsing from variables in addition to a supported inline value
  • Added ObjectListFilter value parsing from an inline object with variables
  • Added ObjectListFilter additional operators (In, Contains, StartsWith, EndsWith)
  • Added StructNullable to support ValueOption fields 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 AddGraphQLOptions including additional converters
  • Added support for optional properties usage in non-Enumerable LINQ queries
  • Fixed ID type deserialization
  • Fixed ObjectListFilter Contains and In operators implementation for collections
  • Fixed generation of discriminator comparing expressions to be translatable to database queries
  • Fixed IInputExecutionContext resolution
  • Fixed graphql-transport-ws WebSocket 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

26 Mar 22:17

Choose a tag to compare

Key highlights:

  • Major error handling support improvements;
  • ASP.NET and Giraffe plug-and-play support;
  • WebSocket support (implementing the graphql-transport-ws subprotocol)
  • .NET 6 and 7 support

Major changes

  • Added IGQLError and IGQLErrorExtensions interfaces. 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
  • ValueOption fields on input objects are now supported
  • Each error now has a ErrorKind
  • SchemaConfig.ParseError now provides a path of the error
  • ASP.NET Core DI integration added
  • Options can be set using GraphQLOptions<'Root>
  • WebSocket support with graphql-transport-ws subprotocol (see the readme for usage)

Lots of appreciation to @valbers for extremely valuable contributions