Commit Graph

179 Commits

Author SHA1 Message Date
Eugen Wissner 1e55f17e7e Encode Unicode. Fix #34 2019-12-20 07:58:09 +01:00
Eugen Wissner 9a5d54c035 Escape non-source characters in the encoder 2019-12-19 06:59:27 +01:00
Eugen Wissner 0cbe69736b Move Execute.Directive to Type.Directive
Just to roughly follow the structure of the reference implementation.
2019-12-18 09:03:18 +01:00
Eugen Wissner 4c0d226030 Move Transform to Language.GraphQL.Execute
Language.GraphQL.AST.Transform is an internal module. Even though it
works with the AST, it is a part of the execution process, it translates
the original parser tree into a simpler one, so the executor has less
work to do. Language.GraphQL.AST should contain only the parser and be
independent from other packages, so it can be used on its own.
2019-12-07 09:46:00 +01:00
Eugen Wissner 3c1a5c800f Support directives (skip and include)
Fixes #24.
2019-12-06 22:52:24 +01:00
Eugen Wissner fc9ad9c4a1 Consider __typename when evaluating fragments
Fixes #30.
2019-12-02 07:43:19 +01:00
Sam Nolan def52ddc20 Fix strings not consuming spaces
Fixes #28
2019-11-28 19:09:26 +11:00
Eugen Wissner 3497784984 Release 0.6.0.0 2019-11-27 08:26:51 +01:00
Eugen Wissner 587aab005e Add a reader instance to the resolvers
The Reader contains a Name/Value hashmap, which will contain resolver
arguments.
2019-11-23 09:49:12 +01:00
Eugen Wissner 625d7100ca Try type parsers in a different order 2019-11-22 08:00:50 +01:00
Sam Nolan 73e21661b4 Fix failed parsing on multiple required arguments
Fixes #25.
2019-11-21 08:51:42 +01:00
Eugen Wissner 7b92e5bcfd Rewrite selections into a Sequence. Fix #21 2019-11-16 11:41:40 +01:00
Eugen Wissner 115aa02672 Fail on cyclic fragments, fix #22 2019-11-14 20:40:09 +01:00
Eugen Wissner 31c516927d Support nested fragments in any order
Fix #19.
2019-11-12 10:47:10 +01:00
Eugen Wissner 1dd6b7b013 Support nested fragments
... without forward lookup.
2019-11-09 23:24:31 +01:00
Eugen Wissner b77da3d492 AST.Transform: Pass down a reader
The reader contains variable substitution functions and fragments.
2019-11-07 06:34:36 +01:00
Eugen Wissner 73fc334bf8 Move related modules to Language.GraphQL.AST
Fixes #18.

- `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.Transform` is now isn't exposed publically anymore.
2019-11-03 11:00:18 +01:00
Eugen Wissner 417ff5da7d Propagate Maybe in the transform tree
Since the transform tree can already find some errors, it may fail here
and there. Almost all functions return a Maybe to signalize an error.
Will be replaced with an Either of course.
2019-11-02 06:24:21 +01:00
Eugen Wissner 0e3b6184be Save fragments in a hash map
Fixes #20.
2019-10-31 07:32:51 +01:00
Eugen Wissner 51d39b69e8 Remove deprecated functions and aliases 2019-10-25 09:07:45 +02:00
Eugen Wissner 75bc3b8509 Release 0.5.1.0 2019-10-22 07:07:54 +02:00
Eugen Wissner c7d5b02911 Handle top-level fragments
Fixes #17.
2019-10-19 10:00:25 +02:00
Eugen Wissner 37254c8c95 Inline fragments without type
Fixes #11.
2019-10-11 23:28:55 +02:00
Eugen Wissner 856efc5d25 Support inline fragments on types 2019-10-08 09:03:07 +02:00
Eugen Wissner b2a9ec7d82 Deprecate plural type aliases
Fixes #16. Deprecates:

- Language.GraphQL.AST.Arguments
- Language.GraphQL.AST.Directives
- Language.GraphQL.AST.VariableDefinitions
2019-10-01 07:24:25 +02:00
Eugen Wissner 0d142fb01c Set STACK_ROOT to cache dependencies in the CI
Set STACK_ROOT to cache dependencies between the builds.
2019-09-30 07:09:58 +02:00
Eugen Wissner f767f6cd40 Ignore graphql.cabal
This file is generated and for releases another version is generated
anyway.
2019-09-29 07:39:18 +02:00
Eugen Wissner eb98c36258 Introduce hspec-megaparsec
Fixes #13.
2019-09-27 10:50:38 +02:00
Eugen Wissner 70f7e1bd8e Document undocumented modules
Fixes #15.
2019-09-25 05:35:36 +02:00
Eugen Wissner 2b5c719ab0 Fix haddoc warnings
Fix #14.
2019-09-20 08:47:14 +02:00
Eugen Wissner c075a41582 Add pending inline fragment tests 2019-09-13 20:33:39 +02:00
Eugen Wissner 721cbaee17 Release 0.5.0.1 2019-09-10 10:20:40 +02:00
Eugen Wissner 1704022e74 Fix #12 2019-09-06 07:48:01 +02:00
Eugen Wissner 63d4de485d Deprecate enum, enumA, wrappedEnum, wrappedEnumA
These functions are from Language.GraphQL.Schema.
There are actually only two generic types in GraphQL: Scalars and objects.
Enum is a scalar value. According to the specification enums may be
serailized to strings. And in the current implementation they used
untyped strings anyway, so there is no point to have differently named
functions with the same implementation as their scalar counterparts.
2019-09-01 03:16:27 +02:00
Eugen Wissner 22313d05df Deprecate 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.
2019-08-30 07:26:04 +02:00
Eugen Wissner c1943c1979 Document all public symbols.
Mostly basic documentation. Fixes #4.
2019-08-29 07:40:50 +02:00
Eugen Wissner 5175586def Provide more documentation on functions and types 2019-08-26 10:14:46 +02:00
Eugen Wissner f54e9451d2 Release 0.5.0.0 2019-08-14 08:49:07 +02:00
Eugen Wissner 045b6d15fb Escape special characters in the encoded strings
Fixes #2.
2019-08-13 07:24:05 +02:00
Eugen Wissner 6604fba7f4 Update stack snapshot to 14.0 2019-08-12 07:25:40 +02:00
Eugen Wissner a3354e7f58 Make all encoder functions return lazy text 2019-08-05 09:00:11 +02:00
Eugen Wissner f9dd363457 Provide more information in the REAME
Provide more information and documentation references in the README.
2019-08-04 12:38:01 +02:00
Eugen Wissner 7a8a90aba8 Implement indentation in the encoder 2019-08-03 23:57:27 +02:00
Eugen Wissner 989e418cc2 Put spaces between tokens in the pretty printer 2019-08-02 13:52:51 +02:00
Eugen Wissner 4812c8f039 Introduce formatter type for the encoder
... to distinguish between minified and pretty printing.
2019-07-31 05:40:17 +02:00
Eugen Wissner d690d22ce8 Test the encoder with the unminified document 2019-07-27 07:31:09 +02:00
Eugen Wissner 15568a3b99 Implement multiple operation support 2019-07-25 07:37:36 +02:00
Eugen Wissner 282946560e Add singleError utility function 2019-07-23 07:22:32 +02:00
Eugen Wissner 1b5094b6a3 Parse the BOM header if any 2019-07-22 05:50:00 +02:00
Eugen Wissner 9d15b83164 Make the tutorial to compile again
- Remove generated documentation leaving only documentation sources.
- Add CI job checking that the tutorial is up to date.
2019-07-20 07:11:10 +02:00