packages feed

graphql 0.2 → 0.2.1

raw patch · 7 files changed

+67/−8 lines, 7 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Data.GraphQL.AST: instance GHC.Classes.Eq Data.GraphQL.AST.Argument
- Data.GraphQL.AST: instance GHC.Classes.Eq Data.GraphQL.AST.Definition
- Data.GraphQL.AST: instance GHC.Classes.Eq Data.GraphQL.AST.Directive
- Data.GraphQL.AST: instance GHC.Classes.Eq Data.GraphQL.AST.Document
- Data.GraphQL.AST: instance GHC.Classes.Eq Data.GraphQL.AST.EnumTypeDefinition
- Data.GraphQL.AST: instance GHC.Classes.Eq Data.GraphQL.AST.EnumValueDefinition
- Data.GraphQL.AST: instance GHC.Classes.Eq Data.GraphQL.AST.Field
- Data.GraphQL.AST: instance GHC.Classes.Eq Data.GraphQL.AST.FieldDefinition
- Data.GraphQL.AST: instance GHC.Classes.Eq Data.GraphQL.AST.FragmentDefinition
- Data.GraphQL.AST: instance GHC.Classes.Eq Data.GraphQL.AST.FragmentSpread
- Data.GraphQL.AST: instance GHC.Classes.Eq Data.GraphQL.AST.InlineFragment
- Data.GraphQL.AST: instance GHC.Classes.Eq Data.GraphQL.AST.InputObjectTypeDefinition
- Data.GraphQL.AST: instance GHC.Classes.Eq Data.GraphQL.AST.InputValueDefinition
- Data.GraphQL.AST: instance GHC.Classes.Eq Data.GraphQL.AST.InterfaceTypeDefinition
- Data.GraphQL.AST: instance GHC.Classes.Eq Data.GraphQL.AST.ListType
- Data.GraphQL.AST: instance GHC.Classes.Eq Data.GraphQL.AST.ListValue
- Data.GraphQL.AST: instance GHC.Classes.Eq Data.GraphQL.AST.NamedType
- Data.GraphQL.AST: instance GHC.Classes.Eq Data.GraphQL.AST.NonNullType
- Data.GraphQL.AST: instance GHC.Classes.Eq Data.GraphQL.AST.ObjectField
- Data.GraphQL.AST: instance GHC.Classes.Eq Data.GraphQL.AST.ObjectTypeDefinition
- Data.GraphQL.AST: instance GHC.Classes.Eq Data.GraphQL.AST.ObjectValue
- Data.GraphQL.AST: instance GHC.Classes.Eq Data.GraphQL.AST.OperationDefinition
- Data.GraphQL.AST: instance GHC.Classes.Eq Data.GraphQL.AST.ScalarTypeDefinition
- Data.GraphQL.AST: instance GHC.Classes.Eq Data.GraphQL.AST.Selection
- Data.GraphQL.AST: instance GHC.Classes.Eq Data.GraphQL.AST.Type
- Data.GraphQL.AST: instance GHC.Classes.Eq Data.GraphQL.AST.TypeDefinition
- Data.GraphQL.AST: instance GHC.Classes.Eq Data.GraphQL.AST.TypeExtensionDefinition
- Data.GraphQL.AST: instance GHC.Classes.Eq Data.GraphQL.AST.UnionTypeDefinition
- Data.GraphQL.AST: instance GHC.Classes.Eq Data.GraphQL.AST.Value
- Data.GraphQL.AST: instance GHC.Classes.Eq Data.GraphQL.AST.Variable
- Data.GraphQL.AST: instance GHC.Classes.Eq Data.GraphQL.AST.VariableDefinition
- Data.GraphQL.AST: instance GHC.Show.Show Data.GraphQL.AST.Argument
- Data.GraphQL.AST: instance GHC.Show.Show Data.GraphQL.AST.Definition
- Data.GraphQL.AST: instance GHC.Show.Show Data.GraphQL.AST.Directive
- Data.GraphQL.AST: instance GHC.Show.Show Data.GraphQL.AST.Document
- Data.GraphQL.AST: instance GHC.Show.Show Data.GraphQL.AST.EnumTypeDefinition
- Data.GraphQL.AST: instance GHC.Show.Show Data.GraphQL.AST.EnumValueDefinition
- Data.GraphQL.AST: instance GHC.Show.Show Data.GraphQL.AST.Field
- Data.GraphQL.AST: instance GHC.Show.Show Data.GraphQL.AST.FieldDefinition
- Data.GraphQL.AST: instance GHC.Show.Show Data.GraphQL.AST.FragmentDefinition
- Data.GraphQL.AST: instance GHC.Show.Show Data.GraphQL.AST.FragmentSpread
- Data.GraphQL.AST: instance GHC.Show.Show Data.GraphQL.AST.InlineFragment
- Data.GraphQL.AST: instance GHC.Show.Show Data.GraphQL.AST.InputObjectTypeDefinition
- Data.GraphQL.AST: instance GHC.Show.Show Data.GraphQL.AST.InputValueDefinition
- Data.GraphQL.AST: instance GHC.Show.Show Data.GraphQL.AST.InterfaceTypeDefinition
- Data.GraphQL.AST: instance GHC.Show.Show Data.GraphQL.AST.ListType
- Data.GraphQL.AST: instance GHC.Show.Show Data.GraphQL.AST.ListValue
- Data.GraphQL.AST: instance GHC.Show.Show Data.GraphQL.AST.NamedType
- Data.GraphQL.AST: instance GHC.Show.Show Data.GraphQL.AST.NonNullType
- Data.GraphQL.AST: instance GHC.Show.Show Data.GraphQL.AST.ObjectField
- Data.GraphQL.AST: instance GHC.Show.Show Data.GraphQL.AST.ObjectTypeDefinition
- Data.GraphQL.AST: instance GHC.Show.Show Data.GraphQL.AST.ObjectValue
- Data.GraphQL.AST: instance GHC.Show.Show Data.GraphQL.AST.OperationDefinition
- Data.GraphQL.AST: instance GHC.Show.Show Data.GraphQL.AST.ScalarTypeDefinition
- Data.GraphQL.AST: instance GHC.Show.Show Data.GraphQL.AST.Selection
- Data.GraphQL.AST: instance GHC.Show.Show Data.GraphQL.AST.Type
- Data.GraphQL.AST: instance GHC.Show.Show Data.GraphQL.AST.TypeDefinition
- Data.GraphQL.AST: instance GHC.Show.Show Data.GraphQL.AST.TypeExtensionDefinition
- Data.GraphQL.AST: instance GHC.Show.Show Data.GraphQL.AST.UnionTypeDefinition
- Data.GraphQL.AST: instance GHC.Show.Show Data.GraphQL.AST.Value
- Data.GraphQL.AST: instance GHC.Show.Show Data.GraphQL.AST.Variable
- Data.GraphQL.AST: instance GHC.Show.Show Data.GraphQL.AST.VariableDefinition
+ Data.GraphQL.AST: instance Eq Argument
+ Data.GraphQL.AST: instance Eq Definition
+ Data.GraphQL.AST: instance Eq Directive
+ Data.GraphQL.AST: instance Eq Document
+ Data.GraphQL.AST: instance Eq EnumTypeDefinition
+ Data.GraphQL.AST: instance Eq EnumValueDefinition
+ Data.GraphQL.AST: instance Eq Field
+ Data.GraphQL.AST: instance Eq FieldDefinition
+ Data.GraphQL.AST: instance Eq FragmentDefinition
+ Data.GraphQL.AST: instance Eq FragmentSpread
+ Data.GraphQL.AST: instance Eq InlineFragment
+ Data.GraphQL.AST: instance Eq InputObjectTypeDefinition
+ Data.GraphQL.AST: instance Eq InputValueDefinition
+ Data.GraphQL.AST: instance Eq InterfaceTypeDefinition
+ Data.GraphQL.AST: instance Eq ListType
+ Data.GraphQL.AST: instance Eq ListValue
+ Data.GraphQL.AST: instance Eq NamedType
+ Data.GraphQL.AST: instance Eq NonNullType
+ Data.GraphQL.AST: instance Eq ObjectField
+ Data.GraphQL.AST: instance Eq ObjectTypeDefinition
+ Data.GraphQL.AST: instance Eq ObjectValue
+ Data.GraphQL.AST: instance Eq OperationDefinition
+ Data.GraphQL.AST: instance Eq ScalarTypeDefinition
+ Data.GraphQL.AST: instance Eq Selection
+ Data.GraphQL.AST: instance Eq Type
+ Data.GraphQL.AST: instance Eq TypeDefinition
+ Data.GraphQL.AST: instance Eq TypeExtensionDefinition
+ Data.GraphQL.AST: instance Eq UnionTypeDefinition
+ Data.GraphQL.AST: instance Eq Value
+ Data.GraphQL.AST: instance Eq Variable
+ Data.GraphQL.AST: instance Eq VariableDefinition
+ Data.GraphQL.AST: instance Show Argument
+ Data.GraphQL.AST: instance Show Definition
+ Data.GraphQL.AST: instance Show Directive
+ Data.GraphQL.AST: instance Show Document
+ Data.GraphQL.AST: instance Show EnumTypeDefinition
+ Data.GraphQL.AST: instance Show EnumValueDefinition
+ Data.GraphQL.AST: instance Show Field
+ Data.GraphQL.AST: instance Show FieldDefinition
+ Data.GraphQL.AST: instance Show FragmentDefinition
+ Data.GraphQL.AST: instance Show FragmentSpread
+ Data.GraphQL.AST: instance Show InlineFragment
+ Data.GraphQL.AST: instance Show InputObjectTypeDefinition
+ Data.GraphQL.AST: instance Show InputValueDefinition
+ Data.GraphQL.AST: instance Show InterfaceTypeDefinition
+ Data.GraphQL.AST: instance Show ListType
+ Data.GraphQL.AST: instance Show ListValue
+ Data.GraphQL.AST: instance Show NamedType
+ Data.GraphQL.AST: instance Show NonNullType
+ Data.GraphQL.AST: instance Show ObjectField
+ Data.GraphQL.AST: instance Show ObjectTypeDefinition
+ Data.GraphQL.AST: instance Show ObjectValue
+ Data.GraphQL.AST: instance Show OperationDefinition
+ Data.GraphQL.AST: instance Show ScalarTypeDefinition
+ Data.GraphQL.AST: instance Show Selection
+ Data.GraphQL.AST: instance Show Type
+ Data.GraphQL.AST: instance Show TypeDefinition
+ Data.GraphQL.AST: instance Show TypeExtensionDefinition
+ Data.GraphQL.AST: instance Show UnionTypeDefinition
+ Data.GraphQL.AST: instance Show Value
+ Data.GraphQL.AST: instance Show Variable
+ Data.GraphQL.AST: instance Show VariableDefinition

Files

CHANGELOG.md view
@@ -1,6 +1,11 @@ # Change Log All notable changes to this project will be documented in this file. +## [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@@ -10,6 +15,9 @@ - Many optional data types in `GraphQl` didn't need to be wrapped in a `Maybe`. - Some `newtype`s became type synonyms for easier parsing. -## [0.1] - 2015-09-12+## 0.1 - 2015-09-12 ### Added - Data types for the GraphQL language.++[0.2.1]: https://github.com/jdnavarro/graphql-haskell/compare/v0.2...v0.2.1+[0.2]: https://github.com/jdnavarro/graphql-haskell/compare/v0.1...v0.2
Data/GraphQL/Parser.hs view
@@ -1,12 +1,17 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE LambdaCase #-} module Data.GraphQL.Parser where  import Prelude hiding (takeWhile)++#if !MIN_VERSION_base(4,8,0)+import Control.Applicative ((<$>), (<*>), (*>), (<*), (<$), pure)+import Data.Monoid (Monoid, mempty)+#endif import Control.Applicative ((<|>), empty, many, optional) import Control.Monad (when) import Data.Char- import Data.Text (Text, pack) import Data.Attoparsec.Text   ( Parser
README.md view
@@ -1,6 +1,7 @@ # Haskell GraphQL  [![Hackage Version](https://img.shields.io/hackage/v/graphql.svg)](https://hackage.haskell.org/package/graphql)+[![Build Status](https://img.shields.io/travis/jdnavarro/graphql-haskell.svg)](https://travis-ci.org/jdnavarro/graphql-haskell)  For now this only provides the data types to represent the GraphQL AST, but the idea is to be a Haskell port of
graphql.cabal view
@@ -1,5 +1,5 @@ name:                graphql-version:             0.2+version:             0.2.1 synopsis:            Haskell GraphQL implementation description:   This package provides a rudimentary parser for the@@ -14,8 +14,10 @@ category:            Web build-type:          Simple cabal-version:       >=1.10-tested-with:         GHC == 7.10+tested-with:         GHC == 7.8.4, GHC == 7.10.2 extra-source-files:  README.md CHANGELOG.md stack.yaml+data-files:          tests/data/*.graphql+                     tests/data/*.graphql.golden  library   default-language:    Haskell2010
+ tests/data/kitchen-sink.graphql view
@@ -0,0 +1,38 @@+# Copyright (c) 2015, Facebook, Inc.+# All rights reserved.+#+# This source code is licensed under the BSD-style license found in the+# LICENSE file in the root directory of this source tree. An additional grant+# of patent rights can be found in the PATENTS file in the same directory.++query queryName($foo: ComplexType, $site: Site = MOBILE) {+  whoever123is: node(id: [123, 456]) {+    id , # Inline test comment+    ... on User @defer {+      field2 {+        id ,+        alias: field1(first:10, after:$foo,) @include(if: $foo) {+          id,+          ...frag+        }+      }+    }+  }+}++mutation likeStory {+  like(story: 123) @defer {+    story {+      id+    }+  }+}++fragment frag on Friend {+  foo(size: $size, bar: $b, obj: {key: "value"})+}++{+  unnamed(truthy: true, falsey: false),+  query+}
+ tests/data/kitchen-sink.graphql.golden view
@@ -0,0 +1,1 @@+Document [DefinitionOperation (Query "queryName" [VariableDefinition (Variable "foo") (TypeNamed (NamedType "ComplexType")) Nothing,VariableDefinition (Variable "site") (TypeNamed (NamedType "Site")) (Just (ValueEnum "MOBILE"))] [] [SelectionField (Field "whoever123is" "node" [Argument "id" (ValueList (ListValue [ValueInt 123,ValueInt 456]))] [] [SelectionField (Field "" "id" [] [] []),SelectionInlineFragment (InlineFragment (NamedType "User") [Directive "defer" []] [SelectionField (Field "" "field2" [] [] [SelectionField (Field "" "id" [] [] []),SelectionField (Field "alias" "field1" [Argument "first" (ValueInt 10),Argument "after" (ValueVariable (Variable "foo"))] [Directive "include" [Argument "if" (ValueVariable (Variable "foo"))]] [SelectionField (Field "" "id" [] [] []),SelectionFragmentSpread (FragmentSpread "frag" [])])])])])]),DefinitionOperation (Mutation "likeStory" [] [] [SelectionField (Field "" "like" [Argument "story" (ValueInt 123)] [Directive "defer" []] [SelectionField (Field "" "story" [] [] [SelectionField (Field "" "id" [] [] [])])])]),DefinitionFragment (FragmentDefinition "frag" (NamedType "Friend") [] [SelectionField (Field "" "foo" [Argument "size" (ValueVariable (Variable "size")),Argument "bar" (ValueVariable (Variable "b")),Argument "obj" (ValueObject (ObjectValue [ObjectField "key" (ValueString "value")]))] [] [])])]
tests/golden.hs view
@@ -1,6 +1,10 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE OverloadedStrings #-} module Main where +#if !MIN_VERSION_base(4,8,0)+import Control.Applicative ((<$>), (<*>), pure)+#endif import Control.Monad ((>=>)) import Data.Attoparsec.Text (parseOnly) import Data.ByteString.Lazy.Char8 as B8@@ -8,14 +12,14 @@ import Test.Tasty (defaultMain) import Test.Tasty.Golden (goldenVsString) +import Paths_graphql (getDataFileName) import Data.GraphQL.Parser (document)  main :: IO () main = defaultMain-     $ goldenVsString "kitchen-sink.graphql"-                      "./tests/data/kitchen-sink.graphql.golden"-                      (parse "./tests/data/kitchen-sink.graphql")+   =<< goldenVsString "kitchen-sink.graphql"+   <$> getDataFileName "tests/data/kitchen-sink.graphql.graphql.golden"+   <*> (parse <$> getDataFileName "tests/data/kitchen-sink.graphql")   where     parse = fmap (parseOnly document) . TIO.readFile         >=> pure . either B8.pack (flip B8.snoc '\n' . B8.pack . show)-