graphql 1.2.0.3 → 1.3.0.0
raw patch · 4 files changed
+40/−62 lines, 4 filesdep ~QuickCheckdep ~containersPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: QuickCheck, containers
API changes (from Hackage documentation)
- Language.GraphQL.Error: Resolution :: Seq Error -> HashMap Name (Type m) -> Resolution m
- Language.GraphQL.Error: [$sel:errors:Resolution] :: Resolution m -> Seq Error
- Language.GraphQL.Error: [$sel:types:Resolution] :: Resolution m -> HashMap Name (Type m)
- Language.GraphQL.Error: data Resolution m
- Language.GraphQL.Error: runCollectErrs :: (Monad m, Serialize a) => HashMap Name (Type m) -> CollectErrsT m a -> m (Response a)
- Language.GraphQL.Error: type CollectErrsT m = StateT (Resolution m) m
Files
- CHANGELOG.md +6/−0
- graphql.cabal +3/−3
- src/Language/GraphQL/Error.hs +2/−33
- tests/Language/GraphQL/AST/Arbitrary.hs +29/−26
CHANGELOG.md view
@@ -6,6 +6,11 @@ and this project adheres to [Haskell Package Versioning Policy](https://pvp.haskell.org/). +## [1.3.0.0] - 2024-05-01+### Changed+- Remove deprecated `runCollectErrs`, `Resolution`, `CollectErrsT` from the+ `Error` module.+ ## [1.2.0.3] - 2024-01-09 ### Fixed - Fix corrupted source distribution.@@ -519,6 +524,7 @@ ### Added - Data types for the GraphQL language. +[1.3.0.0]: https://git.caraus.tech/OSS/graphql/compare/v1.2.0.3...v1.3.0.0 [1.2.0.3]: https://git.caraus.tech/OSS/graphql/compare/v1.2.0.2...v1.2.0.3 [1.2.0.2]: https://git.caraus.tech/OSS/graphql/compare/v1.2.0.1...v1.2.0.2 [1.2.0.1]: https://git.caraus.tech/OSS/graphql/compare/v1.2.0.0...v1.2.0.1
graphql.cabal view
@@ -1,7 +1,7 @@ cabal-version: 2.4 name: graphql-version: 1.2.0.3+version: 1.3.0.0 synopsis: Haskell GraphQL implementation description: Haskell <https://spec.graphql.org/June2018/ GraphQL> implementation. category: Language@@ -60,7 +60,7 @@ build-depends: base >= 4.7 && < 5, conduit ^>= 1.3.4,- containers ^>= 0.6.2,+ containers >= 0.6 && < 0.8, exceptions ^>= 0.10.4, megaparsec >= 9.0 && < 10, parser-combinators >= 1.3 && < 2,@@ -93,7 +93,7 @@ ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall build-depends:- QuickCheck ^>= 2.14.1,+ QuickCheck >= 2.14 && < 2.16, base, conduit, exceptions,
src/Language/GraphQL/Error.hs view
@@ -8,28 +8,22 @@ -- | Error handling. module Language.GraphQL.Error- ( CollectErrsT- , Error(..)+ ( Error(..) , Path(..)- , Resolution(..) , ResolverException(..) , Response(..) , ResponseEventStream , parseError- , runCollectErrs ) where import Conduit import Control.Exception (Exception(..))-import Control.Monad.Trans.State (StateT, runStateT)-import Data.HashMap.Strict (HashMap) import Data.Sequence (Seq(..), (|>)) import qualified Data.Sequence as Seq import Data.Text (Text) import qualified Data.Text as Text-import Language.GraphQL.AST (Location(..), Name)+import Language.GraphQL.AST (Location(..)) import Language.GraphQL.Execute.Coerce-import qualified Language.GraphQL.Type.Schema as Schema import Prelude hiding (null) import Text.Megaparsec ( ParseErrorBundle(..)@@ -97,28 +91,3 @@ show (ResolverException e) = show e instance Exception ResolverException---- * Deprecated--{-# DEPRECATED runCollectErrs "runCollectErrs was part of the old executor and isn't used anymore" #-}--- | Runs the given query computation, but collects the errors into an error--- list, which is then sent back with the data.-runCollectErrs :: (Monad m, Serialize a)- => HashMap Name (Schema.Type m)- -> CollectErrsT m a- -> m (Response a)-runCollectErrs types' res = do- (dat, Resolution{..}) <- runStateT res- $ Resolution{ errors = Seq.empty, types = types' }- pure $ Response dat errors--{-# DEPRECATED Resolution "Resolution was part of the old executor and isn't used anymore" #-}--- | Executor context.-data Resolution m = Resolution- { errors :: Seq Error- , types :: HashMap Name (Schema.Type m)- }--{-# DEPRECATED CollectErrsT "CollectErrsT was part of the old executor and isn't used anymore" #-}--- | A wrapper to pass error messages around.-type CollectErrsT m = StateT (Resolution m) m
tests/Language/GraphQL/AST/Arbitrary.hs view
@@ -7,6 +7,7 @@ import Test.QuickCheck (oneof, elements, listOf, resize, NonEmptyList (..)) import Test.QuickCheck.Gen (Gen (..)) import Data.Text (Text, pack)+import Data.Functor ((<&>)) newtype AnyPrintableChar = AnyPrintableChar { getAnyPrintableChar :: Char } deriving (Eq, Show) @@ -59,34 +60,36 @@ location' <- getAnyLocation <$> arbitrary pure $ AnyObjectField $ Doc.ObjectField name' value' location' -newtype AnyValue = AnyValue { getAnyValue :: Doc.Value } deriving (Eq, Show)+newtype AnyValue = AnyValue { getAnyValue :: Doc.Value }+ deriving (Eq, Show) -instance Arbitrary AnyValue where- arbitrary = AnyValue <$> oneof- [ variableGen- , Doc.Int <$> arbitrary- , Doc.Float <$> arbitrary- , Doc.String <$> (getAnyPrintableText <$> arbitrary)- , Doc.Boolean <$> arbitrary- , MkGen $ \_ _ -> Doc.Null- , Doc.Enum <$> (getAnyName <$> arbitrary)- , Doc.List <$> listGen- , Doc.Object <$> objectGen- ]- where- variableGen :: Gen Doc.Value- variableGen = Doc.Variable <$> (getAnyName <$> arbitrary)- listGen :: Gen [Doc.Node Doc.Value]- listGen = (resize 5 . listOf) nodeGen- nodeGen = do- node' <- getAnyNode <$> (arbitrary :: Gen (AnyNode AnyValue))- pure (getAnyValue <$> node')- objectGen :: Gen [Doc.ObjectField Doc.Value]- objectGen = resize 1 $ do- list <- getNonEmpty <$> (arbitrary :: Gen (NonEmptyList (AnyObjectField AnyValue)))- pure $ map (fmap getAnyValue . getAnyObjectField) list+instance Arbitrary AnyValue+ where+ arbitrary =+ let variableGen :: Gen Doc.Value+ variableGen = Doc.Variable . getAnyName <$> arbitrary+ listGen :: Gen [Doc.Node Doc.Value]+ listGen = (resize 5 . listOf) nodeGen+ nodeGen :: Gen (Doc.Node Doc.Value)+ nodeGen = fmap getAnyNode arbitrary <&> fmap getAnyValue+ objectGen :: Gen [Doc.ObjectField Doc.Value]+ objectGen = resize 1+ $ fmap getNonEmpty arbitrary+ <&> map (fmap getAnyValue . getAnyObjectField)+ in AnyValue <$> oneof+ [ variableGen+ , Doc.Int <$> arbitrary+ , Doc.Float <$> arbitrary+ , Doc.String . getAnyPrintableText <$> arbitrary+ , Doc.Boolean <$> arbitrary+ , MkGen $ \_ _ -> Doc.Null+ , Doc.Enum . getAnyName <$> arbitrary+ , Doc.List <$> listGen+ , Doc.Object <$> objectGen+ ] -newtype AnyArgument a = AnyArgument { getAnyArgument :: Doc.Argument } deriving (Eq, Show)+newtype AnyArgument a = AnyArgument { getAnyArgument :: Doc.Argument }+ deriving (Eq, Show) instance Arbitrary a => Arbitrary (AnyArgument a) where arbitrary = do