module Patrol.Extra.Aeson where import qualified Data.Aeson as Aeson import qualified Data.Aeson.Key as Key import qualified Data.Aeson.Types as Aeson import qualified Data.Text as Text intoObject :: [Aeson.Pair] -> Aeson.Value intoObject :: [Pair] -> Value intoObject = [Pair] -> Value Aeson.object ([Pair] -> Value) -> ([Pair] -> [Pair]) -> [Pair] -> Value forall b c a. (b -> c) -> (a -> b) -> a -> c . (Pair -> Bool) -> [Pair] -> [Pair] forall a. (a -> Bool) -> [a] -> [a] filter (Bool -> Bool not (Bool -> Bool) -> (Pair -> Bool) -> Pair -> Bool forall b c a. (b -> c) -> (a -> b) -> a -> c . Value -> Bool isEmpty (Value -> Bool) -> (Pair -> Value) -> Pair -> Bool forall b c a. (b -> c) -> (a -> b) -> a -> c . Pair -> Value forall a b. (a, b) -> b snd) isEmpty :: Aeson.Value -> Bool isEmpty :: Value -> Bool isEmpty Value value = case Value value of Aeson.Array Array array -> Array -> Bool forall a. Vector a -> Bool forall (t :: * -> *) a. Foldable t => t a -> Bool null Array array Value Aeson.Null -> Bool True Aeson.Object Object object -> Object -> Bool forall a. KeyMap a -> Bool forall (t :: * -> *) a. Foldable t => t a -> Bool null Object object Aeson.String Text string -> Text -> Bool Text.null Text string Value _ -> Bool False pair :: (Aeson.ToJSON a) => String -> a -> Aeson.Pair pair :: forall a. ToJSON a => String -> a -> Pair pair = Key -> a -> Pair forall v. ToJSON v => Key -> v -> Pair forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv (Aeson..=) (Key -> a -> Pair) -> (String -> Key) -> String -> a -> Pair forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> Key Key.fromString