{-# OPTIONS_GHC -Wno-orphans #-}
{-# LANGUAGE CPP #-}

module Cachix.Client.Config.Orphans
  (
  )
where

import Dhall hiding (Text)
import Dhall.Core (Chunks (..), Expr (..))
import Protolude
import Servant.Auth.Client

#if MIN_VERSION_dhall(1,28,0)
instance FromDhall Token where
  autoWith :: InputNormalizer -> Decoder Token
autoWith _ = Decoder :: forall a.
(Expr Src Void -> Extractor Src Void a)
-> Expr Src Void -> Decoder a
Decoder
#else
instance Interpret Token where
  autoWith _ = Type
#endif
    { extract :: Expr Src Void -> Extractor Src Void Token
extract = Expr Src Void -> Extractor Src Void Token
forall (f :: * -> *) s a. Applicative f => Expr s a -> f Token
ex,
      expected :: Expr Src Void
expected = Expr Src Void
forall s a. Expr s a
Text
    }
    where
      ex :: Expr s a -> f Token
ex (TextLit (Chunks [] t :: Text
t)) = Token -> f Token
forall (f :: * -> *) a. Applicative f => a -> f a
pure (ByteString -> Token
Token (Text -> ByteString
forall a b. StringConv a b => a -> b
toS Text
t))
      ex _ = Text -> f Token
forall a. HasCallStack => Text -> a
panic "Unexpected Dhall value. Did it typecheck?"

#if MIN_VERSION_dhall(1,28,0)
instance ToDhall Token where
  injectWith :: InputNormalizer -> Encoder Token
injectWith _ = Encoder :: forall a. (a -> Expr Src Void) -> Expr Src Void -> Encoder a
Encoder
#else
instance Inject Token where
  injectWith _ = InputType
#endif
    { embed :: Token -> Expr Src Void
embed = Chunks Src Void -> Expr Src Void
forall s a. Chunks s a -> Expr s a
TextLit (Chunks Src Void -> Expr Src Void)
-> (Token -> Chunks Src Void) -> Token -> Expr Src Void
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [(Text, Expr Src Void)] -> Text -> Chunks Src Void
forall s a. [(Text, Expr s a)] -> Text -> Chunks s a
Chunks [] (Text -> Chunks Src Void)
-> (Token -> Text) -> Token -> Chunks Src Void
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> Text
forall a b. StringConv a b => a -> b
toS (ByteString -> Text) -> (Token -> ByteString) -> Token -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Token -> ByteString
getToken,
      declared :: Expr Src Void
declared = Expr Src Void
forall s a. Expr s a
Text
    }