{-# LANGUAGE NoImplicitPrelude #-} module Data.Morpheus.Client.Internal.Utils ( removeDuplicates, isEnum, ) where import Data.Morpheus.Client.Internal.Types ( ClientConstructorDefinition (cFields), ) import Relude removeDuplicates :: Eq a => [a] -> [a] removeDuplicates :: [a] -> [a] removeDuplicates = ([a], [a]) -> [a] forall a b. (a, b) -> a fst (([a], [a]) -> [a]) -> ([a] -> ([a], [a])) -> [a] -> [a] forall b c a. (b -> c) -> (a -> b) -> a -> c . [a] -> ([a], [a]) forall a. Eq a => [a] -> ([a], [a]) splitDuplicates splitDuplicates :: Eq a => [a] -> ([a], [a]) splitDuplicates :: [a] -> ([a], [a]) splitDuplicates = ([a], [a]) -> [a] -> ([a], [a]) forall a. Eq a => ([a], [a]) -> [a] -> ([a], [a]) collectElems ([], []) where collectElems :: Eq a => ([a], [a]) -> [a] -> ([a], [a]) collectElems :: ([a], [a]) -> [a] -> ([a], [a]) collectElems ([a], [a]) collected [] = ([a], [a]) collected collectElems ([a] collected, [a] errors) (a x : [a] xs) | a x a -> [a] -> Bool forall (f :: * -> *) a. (Foldable f, DisallowElem f, Eq a) => a -> f a -> Bool `elem` [a] collected = ([a], [a]) -> [a] -> ([a], [a]) forall a. Eq a => ([a], [a]) -> [a] -> ([a], [a]) collectElems ([a] collected, [a] errors [a] -> [a] -> [a] forall a. Semigroup a => a -> a -> a <> [a x]) [a] xs | Bool otherwise = ([a], [a]) -> [a] -> ([a], [a]) forall a. Eq a => ([a], [a]) -> [a] -> ([a], [a]) collectElems ([a] collected [a] -> [a] -> [a] forall a. Semigroup a => a -> a -> a <> [a x], [a] errors) [a] xs isEnum :: [ClientConstructorDefinition] -> Bool isEnum :: [ClientConstructorDefinition] -> Bool isEnum = (ClientConstructorDefinition -> Bool) -> [ClientConstructorDefinition] -> Bool forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool all ([FieldDefinition ANY VALID] -> Bool forall (t :: * -> *) a. Foldable t => t a -> Bool null ([FieldDefinition ANY VALID] -> Bool) -> (ClientConstructorDefinition -> [FieldDefinition ANY VALID]) -> ClientConstructorDefinition -> Bool forall b c a. (b -> c) -> (a -> b) -> a -> c . ClientConstructorDefinition -> [FieldDefinition ANY VALID] cFields)