- Initial release
- 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.
- Introduced a sample for GraphQL over WebSocket Protocol
- Introduced support for Stream and Defer directives
- Minor bugfixes.
- 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 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).
- 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).
- Fix package dependency versions
- 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.
- Fixes for introspection query
- Use string identifier to publish to subscription
- Breaking Change: Async Pub/Sub methods for subscription and live directive handler interfaces
- Add Long Scalar definition
- Add subscription field to intospection schema
- Add subscription field to intospection schema
- Fixed a bug where output def of a subscription field was not reachable for introspection.
- 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.
- Deferred and Streamed results fixes for GQL interfaces.
- Deferred and Streamed results fixes for GQL interfaces when at the top-level of query.
- 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.
- Execute deferred results in parallel.
- Fix dispose of deferred/stream responses.
- Breaking Change New type provider api! see samples/client-provider for details.
- Fixes for #216 enum as a variable.
- Upgraded paket and dependencies.
- 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
- Breaking Change GraphQLProvider record types constructors now receives option arguments as optional arguments
- Revision on scalar types parsing - fixed some wrong behaviors such as parsing ints as floats
- Fixing an bug when converting variable types to variables json in a query
- Fixing an bug when parsing json objects with no fields in serialization
- 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 []
andMap<string, obj>
)
- Minor bug fixes
- Fixing an error on overload constructor definition
- Performance improvements
- Fixing dependency issue on Server component
- Fixing a wrong cast for System.Uri type
- Adding support for file uploads through 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
- Changing the internal client of the Type provider (
System.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
- Implementing a validation system for queries based on the GraphQL Spec
- 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
- 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 toFSharp.Data.GraphQL.Server.Middleware
- Adjusting package dependencies (
FParsec
,System.Net.Http
, andFSharp.Data.GraphQL.Server
are not locked anymore)
- fixed false positive validation errors related to variable usage.
- 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
- TypeProvider now treats custom scalars as strings
- The Guid scalar was mapped to a DateTime
- Support opening static classes
- Add additional case in client to support failed requests that don't return a path.
- TypeProvider accepts IHttpClientFactory as input
- Add static TypeProvider parameter
explicitOptionalParameters
.
- 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