module HaskellWorks.Data.Aeson.Compat.Map.V1 ( KeyMap , Key , foldlWithKey , foldlWithKey' , null , lookup , size , member , empty , singleton , insert , delete , alterF , difference , union , unionWith , unionWithKey , intersection , intersectionWith , intersectionWithKey , fromList , fromListWith , toList , toAscList , elems , fromHashMap , toHashMap , fromHashMapText , toHashMapText , fromMap , toMap , fromMapText , toMapText , map , mapWithKey , traverseWithKey , foldr , foldr' , foldl , foldl' , foldMapWithKey , foldrWithKey , keys , filter , filterWithKey , mapMaybe , mapMaybeWithKey ) where import qualified Data.HashMap.Strict as HM import qualified Data.HashMap.Strict as HMS import qualified Data.Map as M import qualified HaskellWorks.Data.Aeson.Compat as J import Data.Hashable (Hashable) import Data.HashMap.Strict (HashMap) import Data.Map (Map) import Data.Text (Text) import Prelude hiding (filter, foldl, foldr, lookup, map, null) type KeyMap v = HM.HashMap Text v type Key = Text foldlWithKey :: (a -> Key -> b -> a) -> a -> KeyMap b -> a foldlWithKey :: (a -> Key -> b -> a) -> a -> KeyMap b -> a foldlWithKey = (a -> Key -> b -> a) -> a -> KeyMap b -> a forall a k v. (a -> k -> v -> a) -> a -> HashMap k v -> a HM.foldlWithKey foldlWithKey' :: (a -> Key -> b -> a) -> a -> KeyMap b -> a foldlWithKey' :: (a -> Key -> b -> a) -> a -> KeyMap b -> a foldlWithKey' = (a -> Key -> b -> a) -> a -> KeyMap b -> a forall a k v. (a -> k -> v -> a) -> a -> HashMap k v -> a HM.foldlWithKey' null :: KeyMap v -> Bool null :: KeyMap v -> Bool null = KeyMap v -> Bool forall k v. HashMap k v -> Bool HM.null lookup :: Key -> KeyMap v -> Maybe v lookup :: Key -> KeyMap v -> Maybe v lookup = Key -> KeyMap v -> Maybe v forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v HM.lookup size :: KeyMap v -> Int size :: KeyMap v -> Int size = KeyMap v -> Int forall k v. HashMap k v -> Int HM.size member :: Key -> KeyMap v -> Bool member :: Key -> KeyMap v -> Bool member = Key -> KeyMap v -> Bool forall k a. (Eq k, Hashable k) => k -> HashMap k a -> Bool HM.member empty :: KeyMap v empty :: KeyMap v empty = KeyMap v forall k v. HashMap k v HM.empty singleton :: Key -> v -> KeyMap v singleton :: Key -> v -> KeyMap v singleton = Key -> v -> KeyMap v forall k v. Hashable k => k -> v -> HashMap k v HM.singleton insert :: Key -> v -> KeyMap v -> KeyMap v insert :: Key -> v -> KeyMap v -> KeyMap v insert = Key -> v -> KeyMap v -> KeyMap v forall k v. (Eq k, Hashable k) => k -> v -> HashMap k v -> HashMap k v HM.insert delete :: Key -> KeyMap v -> KeyMap v delete :: Key -> KeyMap v -> KeyMap v delete = Key -> KeyMap v -> KeyMap v forall k v. (Eq k, Hashable k) => k -> HashMap k v -> HashMap k v HM.delete alterF :: Functor f => (Maybe v -> f (Maybe v)) -> Key -> KeyMap v -> f (KeyMap v) alterF :: (Maybe v -> f (Maybe v)) -> Key -> KeyMap v -> f (KeyMap v) alterF = (Maybe v -> f (Maybe v)) -> Key -> KeyMap v -> f (KeyMap v) forall (f :: * -> *) k v. (Functor f, Eq k, Hashable k) => (Maybe v -> f (Maybe v)) -> k -> HashMap k v -> f (HashMap k v) HM.alterF difference :: KeyMap v -> KeyMap v' -> KeyMap v difference :: KeyMap v -> KeyMap v' -> KeyMap v difference = KeyMap v -> KeyMap v' -> KeyMap v forall k v w. (Eq k, Hashable k) => HashMap k v -> HashMap k w -> HashMap k v HM.difference union :: KeyMap v -> KeyMap v -> KeyMap v union :: KeyMap v -> KeyMap v -> KeyMap v union = KeyMap v -> KeyMap v -> KeyMap v forall k v. (Eq k, Hashable k) => HashMap k v -> HashMap k v -> HashMap k v HM.union unionWith :: (v -> v -> v) -> KeyMap v -> KeyMap v -> KeyMap v unionWith :: (v -> v -> v) -> KeyMap v -> KeyMap v -> KeyMap v unionWith = (v -> v -> v) -> KeyMap v -> KeyMap v -> KeyMap v forall k v. (Eq k, Hashable k) => (v -> v -> v) -> HashMap k v -> HashMap k v -> HashMap k v HM.unionWith unionWithKey :: (Key -> v -> v -> v) -> KeyMap v -> KeyMap v -> KeyMap v unionWithKey :: (Key -> v -> v -> v) -> KeyMap v -> KeyMap v -> KeyMap v unionWithKey = (Key -> v -> v -> v) -> KeyMap v -> KeyMap v -> KeyMap v forall k v. (Eq k, Hashable k) => (k -> v -> v -> v) -> HashMap k v -> HashMap k v -> HashMap k v HM.unionWithKey intersection :: KeyMap a -> KeyMap b -> KeyMap a intersection :: KeyMap a -> KeyMap b -> KeyMap a intersection = KeyMap a -> KeyMap b -> KeyMap a forall k v w. (Eq k, Hashable k) => HashMap k v -> HashMap k w -> HashMap k v HM.intersection intersectionWith :: (a -> b -> c) -> KeyMap a -> KeyMap b -> KeyMap c intersectionWith :: (a -> b -> c) -> KeyMap a -> KeyMap b -> KeyMap c intersectionWith = (a -> b -> c) -> KeyMap a -> KeyMap b -> KeyMap c forall k v1 v2 v3. (Eq k, Hashable k) => (v1 -> v2 -> v3) -> HashMap k v1 -> HashMap k v2 -> HashMap k v3 HM.intersectionWith intersectionWithKey :: (Key -> a -> b -> c) -> KeyMap a -> KeyMap b -> KeyMap c intersectionWithKey :: (Key -> a -> b -> c) -> KeyMap a -> KeyMap b -> KeyMap c intersectionWithKey = (Key -> a -> b -> c) -> KeyMap a -> KeyMap b -> KeyMap c forall k v1 v2 v3. (Eq k, Hashable k) => (k -> v1 -> v2 -> v3) -> HashMap k v1 -> HashMap k v2 -> HashMap k v3 HM.intersectionWithKey fromList :: [(Key, v)] -> KeyMap v fromList :: [(Key, v)] -> KeyMap v fromList = [(Key, v)] -> KeyMap v forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v HM.fromList fromListWith :: (v -> v -> v) -> [(Key, v)] -> KeyMap v fromListWith :: (v -> v -> v) -> [(Key, v)] -> KeyMap v fromListWith = (v -> v -> v) -> [(Key, v)] -> KeyMap v forall k v. (Eq k, Hashable k) => (v -> v -> v) -> [(k, v)] -> HashMap k v HM.fromListWith toList :: KeyMap v -> [(Key, v)] toList :: KeyMap v -> [(Key, v)] toList = KeyMap v -> [(Key, v)] forall k v. HashMap k v -> [(k, v)] HM.toList toAscList :: KeyMap v -> [(Key, v)] toAscList :: KeyMap v -> [(Key, v)] toAscList = Map Key v -> [(Key, v)] forall k a. Map k a -> [(k, a)] M.toList (Map Key v -> [(Key, v)]) -> (KeyMap v -> Map Key v) -> KeyMap v -> [(Key, v)] forall b c a. (b -> c) -> (a -> b) -> a -> c . KeyMap v -> Map Key v forall v. KeyMap v -> Map Key v toMap elems :: KeyMap v -> [v] elems :: KeyMap v -> [v] elems = KeyMap v -> [v] forall k v. HashMap k v -> [v] HM.elems fromHashMap :: HashMap Key v -> KeyMap v fromHashMap :: HashMap Key v -> HashMap Key v fromHashMap = HashMap Key v -> HashMap Key v forall a. a -> a id toHashMap :: KeyMap v -> HashMap Key v toHashMap :: KeyMap v -> KeyMap v toHashMap = KeyMap v -> KeyMap v forall a. a -> a id fromHashMapText :: HashMap Text v -> KeyMap v fromHashMapText :: HashMap Key v -> HashMap Key v fromHashMapText = HashMap Key v -> HashMap Key v forall a. a -> a id toHashMapText :: KeyMap v -> HashMap Text v toHashMapText :: KeyMap v -> KeyMap v toHashMapText = KeyMap v -> KeyMap v forall a. a -> a id fromMap :: Map Key v -> KeyMap v fromMap :: Map Key v -> KeyMap v fromMap = [(Key, v)] -> KeyMap v forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v HM.fromList ([(Key, v)] -> KeyMap v) -> (Map Key v -> [(Key, v)]) -> Map Key v -> KeyMap v forall b c a. (b -> c) -> (a -> b) -> a -> c . Map Key v -> [(Key, v)] forall k a. Map k a -> [(k, a)] M.toList toMap :: KeyMap v -> Map Key v toMap :: KeyMap v -> Map Key v toMap = [(Key, v)] -> Map Key v forall k a. Ord k => [(k, a)] -> Map k a M.fromList ([(Key, v)] -> Map Key v) -> (KeyMap v -> [(Key, v)]) -> KeyMap v -> Map Key v forall b c a. (b -> c) -> (a -> b) -> a -> c . KeyMap v -> [(Key, v)] forall k v. HashMap k v -> [(k, v)] HM.toList fromMapText :: Map Text v -> KeyMap v fromMapText :: Map Key v -> KeyMap v fromMapText = Map Key v -> KeyMap v forall v. Map Key v -> KeyMap v fromMap toMapText :: KeyMap v -> Map Text v toMapText :: KeyMap v -> Map Key v toMapText = KeyMap v -> Map Key v forall v. KeyMap v -> Map Key v toMap map :: (a -> b) -> KeyMap a -> KeyMap b map :: (a -> b) -> KeyMap a -> KeyMap b map = (a -> b) -> KeyMap a -> KeyMap b forall v1 v2 k. (v1 -> v2) -> HashMap k v1 -> HashMap k v2 HM.map mapWithKey :: (Key -> a -> b) -> KeyMap a -> KeyMap b mapWithKey :: (Key -> a -> b) -> KeyMap a -> KeyMap b mapWithKey = (Key -> a -> b) -> KeyMap a -> KeyMap b forall k v1 v2. (k -> v1 -> v2) -> HashMap k v1 -> HashMap k v2 HM.mapWithKey traverseWithKey :: Applicative f => (Key -> v1 -> f v2) -> KeyMap v1 -> f (KeyMap v2) traverseWithKey :: (Key -> v1 -> f v2) -> KeyMap v1 -> f (KeyMap v2) traverseWithKey = (Key -> v1 -> f v2) -> KeyMap v1 -> f (KeyMap v2) forall (f :: * -> *) k v1 v2. Applicative f => (k -> v1 -> f v2) -> HashMap k v1 -> f (HashMap k v2) HM.traverseWithKey foldr :: (a -> b -> b) -> b -> KeyMap a -> b foldr :: (a -> b -> b) -> b -> KeyMap a -> b foldr = (a -> b -> b) -> b -> KeyMap a -> b forall v a k. (v -> a -> a) -> a -> HashMap k v -> a HM.foldr foldr' :: (a -> b -> b) -> b -> KeyMap a -> b foldr' :: (a -> b -> b) -> b -> KeyMap a -> b foldr' = (a -> b -> b) -> b -> KeyMap a -> b forall v a k. (v -> a -> a) -> a -> HashMap k v -> a HM.foldr' foldl :: (b -> a -> b) -> b -> KeyMap a -> b foldl :: (b -> a -> b) -> b -> KeyMap a -> b foldl = (b -> a -> b) -> b -> KeyMap a -> b forall a v k. (a -> v -> a) -> a -> HashMap k v -> a HM.foldl foldl' :: (b -> a -> b) -> b -> KeyMap a -> b foldl' :: (b -> a -> b) -> b -> KeyMap a -> b foldl' = (b -> a -> b) -> b -> KeyMap a -> b forall a v k. (a -> v -> a) -> a -> HashMap k v -> a HM.foldl' foldMapWithKey :: Monoid m => (Key -> a -> m) -> KeyMap a -> m foldMapWithKey :: (Key -> a -> m) -> KeyMap a -> m foldMapWithKey = (Key -> a -> m) -> KeyMap a -> m forall m k v. Monoid m => (k -> v -> m) -> HashMap k v -> m HM.foldMapWithKey foldrWithKey :: (Key -> v -> a -> a) -> a -> KeyMap v -> a foldrWithKey :: (Key -> v -> a -> a) -> a -> KeyMap v -> a foldrWithKey = (Key -> v -> a -> a) -> a -> KeyMap v -> a forall k v a. (k -> v -> a -> a) -> a -> HashMap k v -> a HM.foldrWithKey keys :: KeyMap v -> [Key] keys :: KeyMap v -> [Key] keys = KeyMap v -> [Key] forall k v. HashMap k v -> [k] HM.keys filter :: (v -> Bool) -> KeyMap v -> KeyMap v filter :: (v -> Bool) -> KeyMap v -> KeyMap v filter = (v -> Bool) -> KeyMap v -> KeyMap v forall v k. (v -> Bool) -> HashMap k v -> HashMap k v HM.filter filterWithKey :: (Key -> v -> Bool) -> KeyMap v -> KeyMap v filterWithKey :: (Key -> v -> Bool) -> KeyMap v -> KeyMap v filterWithKey = (Key -> v -> Bool) -> KeyMap v -> KeyMap v forall k v. (k -> v -> Bool) -> HashMap k v -> HashMap k v HM.filterWithKey mapMaybe :: (a -> Maybe b) -> KeyMap a -> KeyMap b mapMaybe :: (a -> Maybe b) -> KeyMap a -> KeyMap b mapMaybe = (a -> Maybe b) -> KeyMap a -> KeyMap b forall v1 v2 k. (v1 -> Maybe v2) -> HashMap k v1 -> HashMap k v2 HM.mapMaybe mapMaybeWithKey :: (Key -> v -> Maybe u) -> KeyMap v -> KeyMap u mapMaybeWithKey :: (Key -> v -> Maybe u) -> KeyMap v -> KeyMap u mapMaybeWithKey = (Key -> v -> Maybe u) -> KeyMap v -> KeyMap u forall k v1 v2. (k -> v1 -> Maybe v2) -> HashMap k v1 -> HashMap k v2 HM.mapMaybeWithKey