module Debug.TraceEmbrace.Config.Validation where import Data.Functor.Identity import Refined type family Columnar f r a where Columnar Identity r a = Refined r a Columnar Maybe _ a = Maybe a mapLeft :: (a -> b) -> Either a c -> Either b c mapLeft :: forall a b c. (a -> b) -> Either a c -> Either b c mapLeft a -> b f = \case Left a x -> b -> Either b c forall a b. a -> Either a b Left (b -> Either b c) -> b -> Either b c forall a b. (a -> b) -> a -> b $ a -> b f a x Right c o -> c -> Either b c forall a b. b -> Either a b Right c o refineS :: forall {k} (p :: k) x. Predicate p x => String -> x -> Either String (Refined p x) refineS :: forall {k} (p :: k) x. Predicate p x => String -> x -> Either String (Refined p x) refineS String fieldName = (RefineException -> String) -> Either RefineException (Refined p x) -> Either String (Refined p x) forall a b c. (a -> b) -> Either a c -> Either b c mapLeft (((String "Field [" String -> String -> String forall a. Semigroup a => a -> a -> a <> String fieldName String -> String -> String forall a. Semigroup a => a -> a -> a <> String "] is not valid due: ") String -> String -> String forall a. Semigroup a => a -> a -> a <>) (String -> String) -> (RefineException -> String) -> RefineException -> String forall b c a. (b -> c) -> (a -> b) -> a -> c . RefineException -> String forall a. Show a => a -> String show) (Either RefineException (Refined p x) -> Either String (Refined p x)) -> (x -> Either RefineException (Refined p x)) -> x -> Either String (Refined p x) forall b c a. (b -> c) -> (a -> b) -> a -> c . x -> Either RefineException (Refined p x) forall {k} (p :: k) x. Predicate p x => x -> Either RefineException (Refined p x) refine required :: forall {k} {p :: k} {a}. Predicate p a => String -> Maybe a -> Either String (Refined p a) required :: forall {k} {p :: k} {a}. Predicate p a => String -> Maybe a -> Either String (Refined p a) required String s Maybe a v = (Either String a -> (a -> Either String a) -> Maybe a -> Either String a forall b a. b -> (a -> b) -> Maybe a -> b maybe (String -> Either String a forall a b. a -> Either a b Left (String -> Either String a) -> String -> Either String a forall a b. (a -> b) -> a -> b $ String "[" String -> String -> String forall a. Semigroup a => a -> a -> a <> String s String -> String -> String forall a. Semigroup a => a -> a -> a <> String "] field is required") a -> Either String a forall a. a -> Either String a forall (f :: * -> *) a. Applicative f => a -> f a pure Maybe a v) Either String a -> (a -> Either String (Refined p a)) -> Either String (Refined p a) forall a b. Either String a -> (a -> Either String b) -> Either String b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= String -> a -> Either String (Refined p a) forall {k} (p :: k) x. Predicate p x => String -> x -> Either String (Refined p x) refineS String s type SeparatorValidator = And (SizeLessThan 5) NonEmpty