packages feed

colorless 2.2.13 → 2.2.14

raw patch · 5 files changed

+31/−16 lines, 5 filesdep +safe-exceptionsPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: safe-exceptions

API changes (from Hackage documentation)

- Colorless.Client.Exchange: instance (Colorless.Ast.ToAst meta, Colorless.Types.HasType meta, Colorless.Ast.ToAst a, Colorless.Types.HasType a) => Data.Aeson.Types.ToJSON.ToJSON (Colorless.Client.Exchange.Request meta a)
- Colorless.Client.Exchange: instance (Data.Aeson.Types.FromJSON.FromJSON err, Colorless.Types.HasType err) => Data.Aeson.Types.FromJSON.FromJSON (Colorless.Client.Exchange.ResponseError err)
- Colorless.Client.Exchange: instance (Data.Aeson.Types.FromJSON.FromJSON err, Colorless.Types.HasType err, Data.Aeson.Types.FromJSON.FromJSON a, Colorless.Types.HasType a) => Data.Aeson.Types.FromJSON.FromJSON (Colorless.Client.Exchange.Response err a)
- Colorless.Client.Exchange: instance (Data.Aeson.Types.ToJSON.ToJSON err, Data.Aeson.Types.ToJSON.ToJSON a) => Data.Aeson.Types.ToJSON.ToJSON (Colorless.Client.Exchange.Response err a)
- Colorless.Client.Exchange: instance Data.Aeson.Types.ToJSON.ToJSON err => Data.Aeson.Types.ToJSON.ToJSON (Colorless.Client.Exchange.ResponseError err)
- Colorless.ServiceThrower: instance Colorless.ServiceThrower.ServiceThrower GHC.Types.IO
- Colorless.ServiceThrower: instance GHC.Base.Monad m => Colorless.ServiceThrower.ServiceThrower (Control.Monad.Trans.Except.ExceptT Colorless.Server.Exchange.Response m)
+ Colorless.Client.Exchange: instance (Colorless.Val.FromVal err, Colorless.Types.HasType err) => Data.Aeson.Types.FromJSON.FromJSON (Colorless.Client.Exchange.ResponseError err)
+ Colorless.Client.Exchange: instance (Colorless.Val.FromVal err, Colorless.Types.HasType err, Colorless.Val.FromVal a, Colorless.Types.HasType a) => Data.Aeson.Types.FromJSON.FromJSON (Colorless.Client.Exchange.Response err a)
+ Colorless.Client.Exchange: instance (Colorless.Val.ToVal err, Colorless.Types.HasType err, Colorless.Val.ToVal a, Colorless.Types.HasType a) => Data.Aeson.Types.ToJSON.ToJSON (Colorless.Client.Exchange.Response err a)
+ Colorless.Client.Exchange: instance (Colorless.Val.ToVal meta, Colorless.Types.HasType meta, Colorless.Ast.ToAst a, Colorless.Types.HasType a) => Data.Aeson.Types.ToJSON.ToJSON (Colorless.Client.Exchange.Request meta a)
+ Colorless.Client.Exchange: instance Colorless.Val.ToVal err => Data.Aeson.Types.ToJSON.ToJSON (Colorless.Client.Exchange.ResponseError err)
+ Colorless.ServiceThrower: instance Control.Monad.Catch.MonadThrow m => Colorless.ServiceThrower.ServiceThrower (Control.Monad.Trans.Except.ExceptT Colorless.Server.Exchange.Response m)
+ Colorless.ServiceThrower: instance GHC.Exception.Exception Data.Aeson.Types.Internal.Value
- Colorless.ServiceThrower: class Monad m => ServiceThrower m
+ Colorless.ServiceThrower: class MonadThrow m => ServiceThrower m where serviceThrow err = throw err

Files

colorless.cabal view
@@ -3,7 +3,7 @@ -- see: https://github.com/sol/hpack  name:           colorless-version:        2.2.13+version:        2.2.14 synopsis:       Colorless description:    Colorless category:       Web@@ -35,6 +35,7 @@     , mtl     , random     , scientific+    , safe-exceptions     , text     , text-conversions     , unordered-containers
library/Colorless/Client/Exchange.hs view
@@ -10,6 +10,7 @@  import Colorless.Types (RuntimeError, HasType(..), Version(..)) import Colorless.Ast (ToAst(..))+import Colorless.Val (ToVal(..), FromVal(..)) import Colorless.Client.Expr (Expr, exprJSON)  data Request meta a = Request@@ -19,11 +20,11 @@   , query :: Expr a   } -instance (ToAst meta, HasType meta, ToAst a, HasType a) => ToJSON (Request meta a) where+instance (ToVal meta, HasType meta, ToAst a, HasType a) => ToJSON (Request meta a) where   toJSON Request{colorless, version, meta, query} = object     [ "colorless" .= colorless     , "version" .= version-    , "meta" .= toAst meta+    , "meta" .= toVal meta     , "query" .= exprJSON query     ] @@ -32,18 +33,22 @@   | ResponseError'Runtime RuntimeError   deriving (Eq, Show) -instance (FromJSON err, HasType err) => FromJSON (ResponseError err) where+instance (FromVal err, HasType err) => FromJSON (ResponseError err) where   parseJSON (Object o) = do     tag <- o .: "tag"     case tag :: Text of-      "Service" -> ResponseError'Service <$> o .: "service"+      "Service" -> do+        m <- o .: "service"+        case fromVal m of+          Nothing -> mzero+          Just v -> return $ ResponseError'Service v       "Runtime" -> ResponseError'Runtime <$> o .: "runtime"       _ -> mzero   parseJSON _ = mzero -instance ToJSON err => ToJSON (ResponseError err) where+instance ToVal err => ToJSON (ResponseError err) where   toJSON = \case-    ResponseError'Service m -> object [ "tag" .= String "Service", "service" .= m ]+    ResponseError'Service m -> object [ "tag" .= String "Service", "service" .= toVal m ]     ResponseError'Runtime m -> object [ "tag" .= String "Runtime", "runtime" .= m ]  data Response err a@@ -51,15 +56,19 @@   | Response'Success a   deriving (Show, Eq) -instance (FromJSON err, HasType err, FromJSON a, HasType a) => FromJSON (Response err a) where+instance (FromVal err, HasType err, FromVal a, HasType a) => FromJSON (Response err a) where   parseJSON (Object o) = do     tag <- o .: "tag"     case tag :: Text of-      "Success" -> Response'Success <$> o .: "success"+      "Success" -> do+        m <- o .: "success"+        case fromVal m of+          Nothing -> mzero+          Just v -> return $ Response'Success v       "Error" -> Response'Error <$> o .: "error"       _ -> mzero   parseJSON _ = mzero -instance (ToJSON err, ToJSON a) => ToJSON (Response err a) where+instance (ToVal err, HasType err, ToVal a, HasType a) => ToJSON (Response err a) where   toJSON (Response'Error m) = object [ "tag" .= String "Error", "error" .= m ]-  toJSON (Response'Success m) = object [ "tag" .= String "Success", "success" .= m ]+  toJSON (Response'Success m) = object [ "tag" .= String "Success", "success" .= toVal m ]
library/Colorless/Imports.hs view
@@ -5,6 +5,7 @@   , module Data.Text   , module Data.Text.Conversions   , module Data.ByteString.Lazy.Char8+  , module Control.Exception.Safe   ) where  import Data.Map (Map, fromList, toList, empty, size)@@ -13,3 +14,4 @@ import Data.ByteString.Lazy.Char8 (ByteString) import Data.Text (Text) import Data.Text.Conversions (ToText(..), FromText(..))+import Control.Exception.Safe (MonadThrow, MonadCatch, catch)
library/Colorless/ServiceThrower.hs view
@@ -1,17 +1,19 @@+{-# OPTIONS_GHC -fno-warn-orphans #-} module Colorless.ServiceThrower   ( ServiceThrower(..)   ) where +import Control.Exception.Safe import Control.Monad.Except import Data.Aeson  import qualified Colorless.Server.Exchange as Server -class Monad m => ServiceThrower m where+class MonadThrow m => ServiceThrower m where   serviceThrow :: Value -> m a+  serviceThrow err = throw err -instance ServiceThrower IO where-  serviceThrow err = error $ "Service error - " ++ show err+instance Exception Value -instance Monad m => ServiceThrower (ExceptT Server.Response m) where+instance MonadThrow m => ServiceThrower (ExceptT Server.Response m) where   serviceThrow = throwError . Server.Response'Error . Server.ResponseError'Service
package.yaml view
@@ -1,5 +1,5 @@ name: colorless-version: '2.2.13'+version: '2.2.14' category: Web synopsis: Colorless description: Colorless@@ -41,6 +41,7 @@   - mtl   - random   - scientific+  - safe-exceptions   - text   - text-conversions   - unordered-containers