module Composite.Aeson.Compat ( CompositeFormat(..) ) where import Composite.Aeson.Base (parseJsonWithFormat', toJsonWithFormat) import Composite.Aeson.Formats.Default (DefaultJsonFormat(..)) import Data.Aeson (FromJSON(..), ToJSON(..)) newtype CompositeFormat a = CompositeFormat {forall a. CompositeFormat a -> a unCompositeFormat :: a} instance DefaultJsonFormat a => FromJSON (CompositeFormat a) where parseJSON :: Value -> Parser (CompositeFormat a) parseJSON = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap forall a. a -> CompositeFormat a CompositeFormat forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. JsonFormat Void a -> Value -> Parser a parseJsonWithFormat' forall a e. DefaultJsonFormat a => JsonFormat e a defaultJsonFormat instance DefaultJsonFormat a => ToJSON (CompositeFormat a) where toJSON :: CompositeFormat a -> Value toJSON = forall e a. JsonFormat e a -> a -> Value toJsonWithFormat forall a e. DefaultJsonFormat a => JsonFormat e a defaultJsonFormat forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. CompositeFormat a -> a unCompositeFormat