diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 6219a1d9..db3c06f4 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,122 +1,122 @@ -#### 0.0.1-beta - April 19 2016 +#### 0.0.1-beta - 2016-04-19 * Initial release -#### 0.0.2-beta - September 1 2016 +#### 0.0.2-beta - 2016-09-01 * Introduced intermediate representation of GraphQL operation execution. * Introduced ability to convert GraphQL query to LINQ. * Replaced current asynchronous API resolver internals. * Ability to use records as complex input variables. * Minor bugfixes and performance optimizations. -### 0.0.3-beta - March 22 2018 +### 0.0.3-beta - 2018-03-22 * Introduced a sample for GraphQL over WebSocket Protocol * Introduced support for Stream and Defer directives * Minor bugfixes. -### 0.0.4-beta - May 31 2018 +### 0.0.4-beta - 2018-05-31 * Introduced support for middlewares in the execution pipeline. * Introduced new package, named FSharp.Data.GraphQL.Server.Middleware, with generic, built-in middlewares. -* Introduced QueryWeightMiddleware, a generic execution middleware to measure query complexity and optionally block qurey execution with a threshold. +* Introduced QueryWeightMiddleware, a generic execution middleware to measure query complexity and optionally block query execution with a threshold. * Introduced ObjectListFilterMiddleware, a generic schema compile middleware to add filter options to list fields of specific objects. * Changed GQLResponse object to be a Record, which supports a Metadata bag object, that can be used to hold custom information per query request. * Changed FieldDef interface to be able to support a Metadata bag object, that can be used to hold custom information per field. * ISchema TypeMap is now a mutable object, to ease schema customization through schema compile middlewares. -* Fixing many minor errors when deferring or streaming results with Union and Enum types (specially when queried using fragments). +* Fixing many minor errors when deferring or streaming results with Union and Enum types (especially when queried using fragments). * Deferred and streamed error results now are handled. * Added support for nested deferred and streamed results (currently does have a maximum degree of two nested operations). -### 0.0.4-beta01 - May 31 2018 +### 0.0.4-beta01 - 2018-05-31 * Fix package dependency versions -### 0.0.5-beta - August 10 2018 +### 0.0.5-beta - 2018-08-10 * Upgraded dependencies on Newtonsoft.Json to the latest version. * Changing subscription field definitions to have a generic output type - the output is not required to be a GraphQL type anymore. * Implemented experimental support for @live directive, through a subscription system. * Fixed a bug that caused an exception when ToString function is called on an empty NameValueLookup. * Added support for asynchronous subscription field definitions. -### 0.0.6-beta - August 10 2018 +### 0.0.6-beta - 2018-08-10 * Fixes for introspection query * Use string identifier to publish to subscription -### 0.0.7-beta - September 17 2018 +### 0.0.7-beta - 2018-09-17 * **Breaking Change:** Async Pub/Sub methods for subscription and live directive handler interfaces * Add Long Scalar definition -### 0.0.8-beta - October 27 2018 -* Add subscription field to intospection schema +### 0.0.8-beta - 2018-10-27 +* Add subscription field to introspection schema -### 0.0.8-beta01 - October 28 2018 -* Add subscription field to intospection schema +### 0.0.8-beta01 - 2018-10-28 +* Add subscription field to introspection schema -### 0.0.9 - November 2 2018 +### 0.0.9 - 2018-11-02 * Fixed a bug where output def of a subscription field was not reachable for introspection. -### 0.0.10-beta - November 13 2018 +### 0.0.10-beta - 2018-11-13 * Deferred and Streamed results now return their fields in the direct result as well. The value of those fields will be an empty list or null. * Live results now send the immediate result in the direct result, instead of the deferred result. -### 0.0.11-beta - November 21 2018 +### 0.0.11-beta - 2018-11-21 * Deferred and Streamed results fixes for GQL interfaces. -### 0.0.12-beta - November 21 2018 +### 0.0.12-beta - 2018-11-21 * Deferred and Streamed results fixes for GQL interfaces when at the top-level of query. -### 0.0.16-beta - January 3 2019 +### 0.0.16-beta - 2019-01-03 * **Breaking Change** The `ISubscriptionProvider` interface now has additional methods to publish to subscriptions by tag. * **Breaking Change** Renamed interface methods in `ISubscriptionProvider` from XxAsync to AsyncXx to reserve the former for TPL extensions. * Fixes for stream and defer execution. -### 0.0.17-beta - January 11 2019 +### 0.0.17-beta - 2019-01-11 * Execute deferred results in parallel. -### 0.0.18-beta - January 16 2019 +### 0.0.18-beta - 2019-01-16 * Fix dispose of deferred/stream responses. -### 1.0.0-beta - April 27 2019 -* **Breaking Change** New type provider api! see samples/client-provider for details. +### 1.0.0-beta - 2019-04-27 +* **Breaking Change** New type provider API! see samples/client-provider for details. * Fixes for #216 enum as a variable. * Upgraded paket and dependencies. -### 1.0.0-beta2 - April 27 2019 -* **Breaking Change** GraphQLProvider now makes Nullable graphql inputs optional method arguments instead of options +### 1.0.0-beta2 - 2019-04-27 +* **Breaking Change** GraphQLProvider now makes Nullable GraphQL inputs optional method arguments instead of options * **Breaking Change** GraphQLProvider uses the operation name as the generated operation type's names. if no operation name is specified it uses "Operation" + the query string's hash * Make the type provider cross-targeting * **Breaking Change** Add postcompile phase to middleware interface -### 1.0.0-beta3 - May 10 2019 -* **Breaking Change** GraphQLProvider record types constructors now receives option arguments as optional arguments +### 1.0.0-beta3 - 2019-05-10 +* **Breaking Change** GraphQLProvider record types constructors now receive option arguments as optional arguments * Revision on scalar types parsing - fixed some wrong behaviors such as parsing ints as floats -### 1.0.0-beta4 - May 13 2019 -* Fixing an bug when converting variable types to variables json in a query +### 1.0.0-beta4 - 2019-05-13 +* Fixing a bug when converting variable types to variables json in a query -### 1.0.0-beta5 - May 13 2019 -* Fixing an bug when parsing json objects with no fields in serialization +### 1.0.0-beta5 - 2019-05-13 +* Fixing a bug when parsing json objects with no fields in serialization -### 1.0.0-beta6 - May 17 2019 +### 1.0.0-beta6 - 2019-05-17 * Changing constructors of provided types to have overloads instead of optional parameters (needed because of a limitation of the Type Provider SDK) * Adding support for field aliases * Operation result errors and custom data now are provided as their respective types instead of options (`Operation Error []` and `Map`) -### 1.0.0-beta7 - May 17 2019 +### 1.0.0-beta7 - 2019-05-17 * Minor bug fixes * Fixing an error on overload constructor definition -### 1.0.0-beta8 - May 22 2019 +### 1.0.0-beta8 - 2019-05-22 * Performance improvements -### 1.0.0-beta9 - May 22 2019 +### 1.0.0-beta9 - 2019-05-22 * Fixing dependency issue on Server component -### 1.0.0-beta90 - May 29 2019 +### 1.0.0-beta90 - 2019-05-29 * Fixing a wrong cast for System.Uri type * Adding support for file uploads through [GraphQL Multipart Request Spec](https://github.com/jaydenseric/graphql-multipart-request-spec) * Changing variable parameters of Run/AsyncRun methods to work as overloaded methods instead of one having optional parameters * Minor bug fixes -### 1.0.0 - July 4 2019 -* Changing the internal client of the Type provider (`System.Http.HttpClient`) +### 1.0.0 - 2019-07-04 +* Changing the internal client of the Type provider (`System.Net.Http.HttpClient`) * Fixing several minor bugs of the file upload system in the client provider * Limiting the upload type of the client provider to be a scalar type (provider fails if it is not) * If an upload type is specified and it is not used in a query, client provider defaults to standard HTTP protocol instead of the multipart request @@ -124,43 +124,110 @@ * Making validation mandatory on the server component * Implemented a cache system for query validation on both server and client components * Client component can optionally disable query validation -* Updating parser to support unamed operations alongside short handed queries +* Updating parser to support unnamed operations alongside shorthand queries * Adding null value support for the AST Input Values (it was previously parsed as an Enum Value) * **Breaking Change** Renaming `FSharp.Data.GraphQL.Server.Middlewares` package to `FSharp.Data.GraphQL.Server.Middleware` -### 1.0.1 - July 5 2019 +### 1.0.1 - 2019-07-05 * Adjusting package dependencies (`FParsec`, `System.Net.Http`, and `FSharp.Data.GraphQL.Server` are not locked anymore) -### 1.0.2 - August 19 2019 +### 1.0.2 - 2019-08-19 * fixed false positive validation errors related to variable usage. -### 1.0.3 - March 3 2020 +### 1.0.3 - 2020-03-03 * Correct printing of queries without names * Correct printing of ListValue and ObjectValue * Traverse list values in argument lists -* Added test cases for object inputs for graphql functions +* Added test cases for object inputs for GraphQL functions -### 1.0.4 - March 22 2020 +### 1.0.4 - 2020-03-22 * TypeProvider now treats custom scalars as strings * The Guid scalar was mapped to a DateTime -### 1.0.5 - March 23 2020 +### 1.0.5 - 2020-03-23 * Support opening static classes * Add additional case in client to support failed requests that don't return a path. -### 1.0.6 - December 15 2020 +### 1.0.6 - 2020-12-15 * TypeProvider accepts IHttpClientFactory as input -### 1.0.7 - December 30 2020 +### 1.0.7 - 2020-12-30 * Add static TypeProvider parameter `explicitOptionalParameters`. -### 1.0.8 - April 18 2021 +### 1.0.8 - 2021-04-18 * Remove Desktop build * Update documentation and build tools * Upgrade build scripts * Migrate from netcoreapp2.0 to net5.0 for tests and samples * Target netstandard2.0 exclusively for Type Providers -* Make FSharp.Data.GraphQL.Shared a Nuget package -* Fix parser bug. Thanks to @njlr \ No newline at end of file +* Make FSharp.Data.GraphQL.Shared a NuGet package +* Fix parser bug. Thanks to @njlr + +### 2.0.0 - 2024-03-24 +* **Breaking Change** Migrated to .NET 6/7 and F# 7 +* **Breaking Change** Implemented GraphQL error handling using `IGQLError` interface instead of exceptions +* **Breaking Change** Implemented parsing variables as `JsonElement` +* **Breaking Change** Added `Type` suffix to all built-in GraphQL type definitions +* **New Package** `FSharp.Data.GraphQL.Server.AspNetCore` for ASP.NET Core integration +* Migrated from Paket and FAKE CLI to FAKE build project +* Added `Path` to `ResolveFieldContext` +* Added ability to deprecate fields defined with any combination of parameters (more overloads to the `Define` static class) +* Added support of `Option` variable values for nullable input types +* Added mapping of input query/AST lists to .NET array type in addition to F# list +* Added input object validation with detailed error messages +* Added `Define.WrappedScalar` for value object scalar definitions +* Added coercion of nested input objects +* Added support for `ValueOption` in `AutoField` +* Improved WebSocket handling to eliminate large array allocations +* Fixed nullable enum input handling +* Fixed coercing enum type variables as F# discriminated unions +* Fixed various introspection and default value encoding issues + +### 2.1.0 - 2024-04-13 +* Improved server exception logging by including exception in log message +* Documentation and README improvements + +### 2.2.0 - 2024-05-08 +* Improved `AddGraphQLOptions` +* Added Altair and GraphiQL to sample projects + +### 2.2.1 - 2024-06-16 +* Fixed `JsonSerializerOptions` read-only instance error + +### 3.0.0 - 2025-11-30 +* **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 standard `extensions` field according to 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 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 supported inline value +* Added `ObjectListFilter` value parsing from 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 \ No newline at end of file