module HaskellWorks.Polysemy.Data.Aeson ( aesonDecode, ) where import qualified Data.Aeson as Aeson import qualified HaskellWorks.Polysemy.Data.ByteString.Lazy as LBS import HaskellWorks.Polysemy.Prelude import Polysemy import Polysemy.Error import Data.Aeson (FromJSON) import HaskellWorks.Polysemy.Error.Types.JsonDecodeError aesonDecode :: forall a r. () => Member (Error JsonDecodeError) r => FromJSON a => LBS.ByteString -> Sem r a aesonDecode :: forall a (r :: EffectRow). (Member (Error JsonDecodeError) r, FromJSON a) => ByteString -> Sem r a aesonDecode ByteString bs = Either String a -> Sem (Error String : r) a forall e (r :: EffectRow) a. Member (Error e) r => Either e a -> Sem r a fromEither (ByteString -> Either String a forall a. FromJSON a => ByteString -> Either String a Aeson.eitherDecode ByteString bs) Sem (Error String : r) a -> (Sem (Error String : r) a -> Sem r a) -> Sem r a forall a b. a -> (a -> b) -> b & (String -> JsonDecodeError) -> Sem (Error String : r) a -> Sem r a forall e1 e2 (r :: EffectRow) a. Member (Error e2) r => (e1 -> e2) -> Sem (Error e1 : r) a -> Sem r a mapError String -> JsonDecodeError forall a. ToText a => a -> JsonDecodeError newJsonDecodeError