{-# LANGUAGE GADTs #-} module Cardano.Base.Aeson ( fromJSONKeyText, ) where import Data.Aeson (FromJSONKey (..), Value (String)) import Data.Aeson.Types ( FromJSONKeyFunction (..), parseEither, ) import Data.Coerce (coerce) import Data.Text (Text) fromJSONKeyText :: FromJSONKey k => Text -> Either String k fromJSONKeyText :: forall k. FromJSONKey k => Text -> Either String k fromJSONKeyText Text t = case FromJSONKeyFunction k forall a. FromJSONKey a => FromJSONKeyFunction a fromJSONKey of FromJSONKeyFunction k FromJSONKeyCoerce -> k -> Either String k forall a b. b -> Either a b Right (Text -> k forall a b. Coercible a b => a -> b coerce Text t) FromJSONKeyText Text -> k g -> k -> Either String k forall a b. b -> Either a b Right (Text -> k g Text t) FromJSONKeyTextParser Text -> Parser k p -> (Text -> Parser k) -> Text -> Either String k forall a b. (a -> Parser b) -> a -> Either String b parseEither Text -> Parser k p Text t FromJSONKeyValue Value -> Parser k p -> (Value -> Parser k) -> Value -> Either String k forall a b. (a -> Parser b) -> a -> Either String b parseEither Value -> Parser k p (Text -> Value String Text t)