graphql/CHANGELOG.md

7.7 KiB

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 Haskell Package Versioning Policy.

Unreleased

Added

  • AST for the GraphQL schema.
  • Trans.argument.

Changed

  • Rename AST.Definition into AST.Document.ExecutableDefinition. AST.Document.TypeSystemDefinition and AST.Document.TypeSystemExtension can also be definitions.
  • Move all AST data to AST.Document and reexport them.
  • Rename AST.OperationSelectionSet to AST.Document.SelectionSet.
  • Make Schema.Subs a Data.HashMap.Strict (was a function key -> Maybe value before).

Removed

  • AST.Field, AST.InlineFragment and AST.FragmentSpread. These types are only used in AST.Selection and AST.Selection contains now 3 corresponding data constructors, Field, InlineFragment and FragmentSpread, instead of separate types. It simplifies pattern matching and doesn't make the code less typesafe.
  • Schema.scalarA.
  • Schema.wrappedScalarA.
  • Schema.wrappedObjectA.
  • Schema.objectA.

0.6.1.0 - 2019-12-23

Fixed

  • Parsing multiple string arguments, such as login(username: "username", password: "password") would fail on the comma due to strings not having a space consumer.
  • Fragment spread is evaluated based on the __typename resolver. If the resolver is missing, it is assumed that the type condition is satisfied (all fragments are included).
  • Escaping characters during encoding.

Added

  • Directive support (@skip and @include).
  • Pretifying multi-line string arguments as block strings.

0.6.0.0 - 2019-11-27

Changed

  • Language.GraphQL.Encoder moved to Language.GraphQL.AST.Encoder.
  • Language.GraphQL.Parser moved to Language.GraphQL.AST.Parser.
  • Language.GraphQL.Lexer moved to Language.GraphQL.AST.Lexer.
  • All Language.GraphQL.AST.Value data constructor prefixes were removed. The module should be imported qualified.
  • All Language.GraphQL.AST.Core.Value data constructor prefixes were removed. The module should be imported qualified.
  • Language.GraphQL.AST.Core.Object is now just a HashMap.
  • Language.GraphQL.AST.Transform is isn't exposed publically anymore.
  • Language.GraphQL.Schema.resolve accepts a selection Seq (Data.Sequence) instead of a list. Selections are stored as sequences internally as well.
  • Add a reader instance to the resolver's monad stack. The Reader contains a Name/Value hashmap, which will contain resolver arguments.

Added

  • Nested fragment support.

Fixed

  • Consume ignored tokens after $ and !. I mistakenly assumed that $variable is a single token, same as Type! is a single token. This is not the case, for example Variable is defined as $ Name, so these are two tokens, therefore whitespaces and commas after $ and ! should be consumed.

Improved

  • Language.GraphQL.AST.Parser.type_: Try type parsers in a variable definition in a different order to avoid using but.

Removed

  • Language.GraphQL.AST.Arguments. Use [Language.GraphQL.AST.Argument] instead.
  • Language.GraphQL.AST.Directives. Use [Language.GraphQL.AST.Directives] instead.
  • Language.GraphQL.AST.VariableDefinitions. Use [Language.GraphQL.AST.VariableDefinition] instead.
  • Language.GraphQL.AST.FragmentName. Use Language.GraphQL.AST.Name instead.
  • Language.GraphQL.Execute.Schema - It was a resolver list, not a schema.
  • Language.GraphQL.Schema: enum, enumA, wrappedEnum and wrappedEnumA. Use scalar, scalarA, wrappedScalar and wrappedScalarA instead.

0.5.1.0 - 2019-10-22

Deprecated

  • Language.GraphQL.AST.Arguments. Use [Language.GraphQL.AST.Argument] instead.
  • Language.GraphQL.AST.Directives. Use [Language.GraphQL.AST.Directives] instead.
  • Language.GraphQL.AST.VariableDefinitions. Use [Language.GraphQL.AST.VariableDefinition] instead.

Added

  • Module documentation.
  • Inline fragment support.

Fixed

  • Top-level fragments.
  • Fragment for execution is chosen based on the type.

0.5.0.1 - 2019-09-10

Added

  • Minimal documentation for all public symbols.

Deprecated

  • Language.GraphQL.AST.FragmentName. Replaced with Language.GraphQL.AST.Name.
  • Language.GraphQL.Execute.Schema - It is not a schema (at least not a complete one), but a resolver list, and the resolvers should be provided by the user separately, because the schema can originate from a GraphQL document. Schema name should be free to provide a data type for the real schema later.
  • Language.GraphQL.Schema: enum, enumA, wrappedEnum and wrappedEnumA. There are actually only two generic types in GraphQL: Scalars and objects. Enum is a scalar value.

Fixed

  • Parsing block string values.

0.5.0.0 - 2019-08-14

Added

  • executeWithName executes an operation with the given name.
  • Export Language.GraphQL.Encoder.definition, Language.GraphQL.Encoder.type' and Language.GraphQL.Encoder.directive.
  • Export Language.GraphQL.Encoder.value. Escapes \ and " in strings now.

Changed

  • Operation includes now possible operation name which allows to support documents with multiple operations.
  • Language.GraphQL.Encoder.document and other encoding functions take a Formatter as argument to distinguish between minified and pretty printing.
  • All encoder functions return Data.Text.Lazy.

Removed

  • Unused Language.GraphQL.Encoder.spaced.

0.4.0.0 - 2019-07-23

Added

  • Support for mutations.
  • Error handling (with monad transformers).
  • Nullable types.
  • Arbitrary nested lists support.
  • Potential BOM header parsing.

Changed

  • attoparsec is replaced with megaparsec.
  • The library is now under Language.GraphQL (instead of Data.GraphQL).
  • HUnit and tasty are replaced with Hspec.
  • Alternative/MonadPlus resolver constraints are replaced with MonadIO.

Removed

  • Duplicates from Language.GraphQL.AST already available in Language.GraphQL.AST.Core.
  • All module exports are now explicit, so private and help functions aren't exported anymore.

0.3 - 2015-09-22

Changed

  • Exact match numeric types to spec.
  • Names follow now the spec.
  • AST slightly different for better readability or easier parsing.
  • Replace golden test for test to validate parsing/encoding.

Added

  • Parsing errors in all cases where Alternative is used.
  • GraphQL encoder.

Fixed

  • Expect braces inputValueDefinitions instead of parens when parsing.

0.2.1 - 2015-09-16

Fixed

  • Include data files for golden tests in Cabal package.
  • Support for ghc-7.8.

0.2 - 2015-09-14

Added

  • Rudimentary parser for GraphQL which successfully parses the sample file kitchen-sink.graphql from graphql-js tests.
  • Golden test for kitchen-sink.grahql parsing.

Changed

  • Many optional data types in GraphQl didn't need to be wrapped in a Maybe.
  • Some newtypes became type synonyms for easier parsing.

0.1 - 2015-09-12

Added

  • Data types for the GraphQL language.