module Mensam.Server.Configuration where import Mensam.API.Aeson import Mensam.Server.Configuration.BaseUrl import Mensam.Server.Configuration.Email import Mensam.Server.Configuration.SQLite import Control.DeepSeq import Data.Aeson qualified as A import Data.Kind import Data.List.NonEmpty qualified as NE import Data.Text qualified as T import Data.Word import Deriving.Aeson qualified as A import GHC.Generics type Configuration :: Type data Configuration = Configuration { Configuration -> Maybe Text configRevision :: Maybe T.Text , Configuration -> SQLiteConfig configSqlite :: SQLiteConfig , Configuration -> Maybe EmailConfig configEmailConfig :: Maybe EmailConfig , Configuration -> FilePath configDirectoryStatic :: FilePath , Configuration -> Word16 configPort :: Word16 , Configuration -> BaseUrl configBaseUrl :: BaseUrl , Configuration -> [FontConfig] configFonts :: [FontConfig] , Configuration -> AuthConfig configAuth :: AuthConfig , Configuration -> Maybe FilePath configDirectoryHaddock :: Maybe FilePath , Configuration -> Maybe Text configSourceUrl :: Maybe T.Text } deriving stock (Configuration -> Configuration -> Bool (Configuration -> Configuration -> Bool) -> (Configuration -> Configuration -> Bool) -> Eq Configuration forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: Configuration -> Configuration -> Bool == :: Configuration -> Configuration -> Bool $c/= :: Configuration -> Configuration -> Bool /= :: Configuration -> Configuration -> Bool Eq, (forall x. Configuration -> Rep Configuration x) -> (forall x. Rep Configuration x -> Configuration) -> Generic Configuration forall x. Rep Configuration x -> Configuration forall x. Configuration -> Rep Configuration x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cfrom :: forall x. Configuration -> Rep Configuration x from :: forall x. Configuration -> Rep Configuration x $cto :: forall x. Rep Configuration x -> Configuration to :: forall x. Rep Configuration x -> Configuration Generic, Eq Configuration Eq Configuration => (Configuration -> Configuration -> Ordering) -> (Configuration -> Configuration -> Bool) -> (Configuration -> Configuration -> Bool) -> (Configuration -> Configuration -> Bool) -> (Configuration -> Configuration -> Bool) -> (Configuration -> Configuration -> Configuration) -> (Configuration -> Configuration -> Configuration) -> Ord Configuration Configuration -> Configuration -> Bool Configuration -> Configuration -> Ordering Configuration -> Configuration -> Configuration forall a. Eq a => (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a $ccompare :: Configuration -> Configuration -> Ordering compare :: Configuration -> Configuration -> Ordering $c< :: Configuration -> Configuration -> Bool < :: Configuration -> Configuration -> Bool $c<= :: Configuration -> Configuration -> Bool <= :: Configuration -> Configuration -> Bool $c> :: Configuration -> Configuration -> Bool > :: Configuration -> Configuration -> Bool $c>= :: Configuration -> Configuration -> Bool >= :: Configuration -> Configuration -> Bool $cmax :: Configuration -> Configuration -> Configuration max :: Configuration -> Configuration -> Configuration $cmin :: Configuration -> Configuration -> Configuration min :: Configuration -> Configuration -> Configuration Ord, ReadPrec [Configuration] ReadPrec Configuration Int -> ReadS Configuration ReadS [Configuration] (Int -> ReadS Configuration) -> ReadS [Configuration] -> ReadPrec Configuration -> ReadPrec [Configuration] -> Read Configuration forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a $creadsPrec :: Int -> ReadS Configuration readsPrec :: Int -> ReadS Configuration $creadList :: ReadS [Configuration] readList :: ReadS [Configuration] $creadPrec :: ReadPrec Configuration readPrec :: ReadPrec Configuration $creadListPrec :: ReadPrec [Configuration] readListPrec :: ReadPrec [Configuration] Read, Int -> Configuration -> ShowS [Configuration] -> ShowS Configuration -> FilePath (Int -> Configuration -> ShowS) -> (Configuration -> FilePath) -> ([Configuration] -> ShowS) -> Show Configuration forall a. (Int -> a -> ShowS) -> (a -> FilePath) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> Configuration -> ShowS showsPrec :: Int -> Configuration -> ShowS $cshow :: Configuration -> FilePath show :: Configuration -> FilePath $cshowList :: [Configuration] -> ShowS showList :: [Configuration] -> ShowS Show) deriving anyclass (Configuration -> () (Configuration -> ()) -> NFData Configuration forall a. (a -> ()) -> NFData a $crnf :: Configuration -> () rnf :: Configuration -> () NFData) deriving (Value -> Parser [Configuration] Value -> Parser Configuration (Value -> Parser Configuration) -> (Value -> Parser [Configuration]) -> FromJSON Configuration forall a. (Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a $cparseJSON :: Value -> Parser Configuration parseJSON :: Value -> Parser Configuration $cparseJSONList :: Value -> Parser [Configuration] parseJSONList :: Value -> Parser [Configuration] A.FromJSON, [Configuration] -> Value [Configuration] -> Encoding Configuration -> Value Configuration -> Encoding (Configuration -> Value) -> (Configuration -> Encoding) -> ([Configuration] -> Value) -> ([Configuration] -> Encoding) -> ToJSON Configuration forall a. (a -> Value) -> (a -> Encoding) -> ([a] -> Value) -> ([a] -> Encoding) -> ToJSON a $ctoJSON :: Configuration -> Value toJSON :: Configuration -> Value $ctoEncoding :: Configuration -> Encoding toEncoding :: Configuration -> Encoding $ctoJSONList :: [Configuration] -> Value toJSONList :: [Configuration] -> Value $ctoEncodingList :: [Configuration] -> Encoding toEncodingList :: [Configuration] -> Encoding A.ToJSON) via A.CustomJSON (JSONSettings "" "config") Configuration type AuthConfig :: Type newtype AuthConfig = AuthConfig { AuthConfig -> Maybe Integer authTimeoutSeconds :: Maybe Integer } deriving stock (AuthConfig -> AuthConfig -> Bool (AuthConfig -> AuthConfig -> Bool) -> (AuthConfig -> AuthConfig -> Bool) -> Eq AuthConfig forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: AuthConfig -> AuthConfig -> Bool == :: AuthConfig -> AuthConfig -> Bool $c/= :: AuthConfig -> AuthConfig -> Bool /= :: AuthConfig -> AuthConfig -> Bool Eq, (forall x. AuthConfig -> Rep AuthConfig x) -> (forall x. Rep AuthConfig x -> AuthConfig) -> Generic AuthConfig forall x. Rep AuthConfig x -> AuthConfig forall x. AuthConfig -> Rep AuthConfig x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cfrom :: forall x. AuthConfig -> Rep AuthConfig x from :: forall x. AuthConfig -> Rep AuthConfig x $cto :: forall x. Rep AuthConfig x -> AuthConfig to :: forall x. Rep AuthConfig x -> AuthConfig Generic, Eq AuthConfig Eq AuthConfig => (AuthConfig -> AuthConfig -> Ordering) -> (AuthConfig -> AuthConfig -> Bool) -> (AuthConfig -> AuthConfig -> Bool) -> (AuthConfig -> AuthConfig -> Bool) -> (AuthConfig -> AuthConfig -> Bool) -> (AuthConfig -> AuthConfig -> AuthConfig) -> (AuthConfig -> AuthConfig -> AuthConfig) -> Ord AuthConfig AuthConfig -> AuthConfig -> Bool AuthConfig -> AuthConfig -> Ordering AuthConfig -> AuthConfig -> AuthConfig forall a. Eq a => (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a $ccompare :: AuthConfig -> AuthConfig -> Ordering compare :: AuthConfig -> AuthConfig -> Ordering $c< :: AuthConfig -> AuthConfig -> Bool < :: AuthConfig -> AuthConfig -> Bool $c<= :: AuthConfig -> AuthConfig -> Bool <= :: AuthConfig -> AuthConfig -> Bool $c> :: AuthConfig -> AuthConfig -> Bool > :: AuthConfig -> AuthConfig -> Bool $c>= :: AuthConfig -> AuthConfig -> Bool >= :: AuthConfig -> AuthConfig -> Bool $cmax :: AuthConfig -> AuthConfig -> AuthConfig max :: AuthConfig -> AuthConfig -> AuthConfig $cmin :: AuthConfig -> AuthConfig -> AuthConfig min :: AuthConfig -> AuthConfig -> AuthConfig Ord, ReadPrec [AuthConfig] ReadPrec AuthConfig Int -> ReadS AuthConfig ReadS [AuthConfig] (Int -> ReadS AuthConfig) -> ReadS [AuthConfig] -> ReadPrec AuthConfig -> ReadPrec [AuthConfig] -> Read AuthConfig forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a $creadsPrec :: Int -> ReadS AuthConfig readsPrec :: Int -> ReadS AuthConfig $creadList :: ReadS [AuthConfig] readList :: ReadS [AuthConfig] $creadPrec :: ReadPrec AuthConfig readPrec :: ReadPrec AuthConfig $creadListPrec :: ReadPrec [AuthConfig] readListPrec :: ReadPrec [AuthConfig] Read, Int -> AuthConfig -> ShowS [AuthConfig] -> ShowS AuthConfig -> FilePath (Int -> AuthConfig -> ShowS) -> (AuthConfig -> FilePath) -> ([AuthConfig] -> ShowS) -> Show AuthConfig forall a. (Int -> a -> ShowS) -> (a -> FilePath) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> AuthConfig -> ShowS showsPrec :: Int -> AuthConfig -> ShowS $cshow :: AuthConfig -> FilePath show :: AuthConfig -> FilePath $cshowList :: [AuthConfig] -> ShowS showList :: [AuthConfig] -> ShowS Show) deriving anyclass (AuthConfig -> () (AuthConfig -> ()) -> NFData AuthConfig forall a. (a -> ()) -> NFData a $crnf :: AuthConfig -> () rnf :: AuthConfig -> () NFData) deriving (Value -> Parser [AuthConfig] Value -> Parser AuthConfig (Value -> Parser AuthConfig) -> (Value -> Parser [AuthConfig]) -> FromJSON AuthConfig forall a. (Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a $cparseJSON :: Value -> Parser AuthConfig parseJSON :: Value -> Parser AuthConfig $cparseJSONList :: Value -> Parser [AuthConfig] parseJSONList :: Value -> Parser [AuthConfig] A.FromJSON, [AuthConfig] -> Value [AuthConfig] -> Encoding AuthConfig -> Value AuthConfig -> Encoding (AuthConfig -> Value) -> (AuthConfig -> Encoding) -> ([AuthConfig] -> Value) -> ([AuthConfig] -> Encoding) -> ToJSON AuthConfig forall a. (a -> Value) -> (a -> Encoding) -> ([a] -> Value) -> ([a] -> Encoding) -> ToJSON a $ctoJSON :: AuthConfig -> Value toJSON :: AuthConfig -> Value $ctoEncoding :: AuthConfig -> Encoding toEncoding :: AuthConfig -> Encoding $ctoJSONList :: [AuthConfig] -> Value toJSONList :: [AuthConfig] -> Value $ctoEncodingList :: [AuthConfig] -> Encoding toEncodingList :: [AuthConfig] -> Encoding A.ToJSON) via A.CustomJSON (JSONSettings "" "auth") AuthConfig type FontConfig :: Type data FontConfig = FontConfig { FontConfig -> NonEmpty Text fontPathPieces :: NE.NonEmpty T.Text , FontConfig -> Bool fontPreload :: Bool } deriving stock (FontConfig -> FontConfig -> Bool (FontConfig -> FontConfig -> Bool) -> (FontConfig -> FontConfig -> Bool) -> Eq FontConfig forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: FontConfig -> FontConfig -> Bool == :: FontConfig -> FontConfig -> Bool $c/= :: FontConfig -> FontConfig -> Bool /= :: FontConfig -> FontConfig -> Bool Eq, (forall x. FontConfig -> Rep FontConfig x) -> (forall x. Rep FontConfig x -> FontConfig) -> Generic FontConfig forall x. Rep FontConfig x -> FontConfig forall x. FontConfig -> Rep FontConfig x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cfrom :: forall x. FontConfig -> Rep FontConfig x from :: forall x. FontConfig -> Rep FontConfig x $cto :: forall x. Rep FontConfig x -> FontConfig to :: forall x. Rep FontConfig x -> FontConfig Generic, Eq FontConfig Eq FontConfig => (FontConfig -> FontConfig -> Ordering) -> (FontConfig -> FontConfig -> Bool) -> (FontConfig -> FontConfig -> Bool) -> (FontConfig -> FontConfig -> Bool) -> (FontConfig -> FontConfig -> Bool) -> (FontConfig -> FontConfig -> FontConfig) -> (FontConfig -> FontConfig -> FontConfig) -> Ord FontConfig FontConfig -> FontConfig -> Bool FontConfig -> FontConfig -> Ordering FontConfig -> FontConfig -> FontConfig forall a. Eq a => (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a $ccompare :: FontConfig -> FontConfig -> Ordering compare :: FontConfig -> FontConfig -> Ordering $c< :: FontConfig -> FontConfig -> Bool < :: FontConfig -> FontConfig -> Bool $c<= :: FontConfig -> FontConfig -> Bool <= :: FontConfig -> FontConfig -> Bool $c> :: FontConfig -> FontConfig -> Bool > :: FontConfig -> FontConfig -> Bool $c>= :: FontConfig -> FontConfig -> Bool >= :: FontConfig -> FontConfig -> Bool $cmax :: FontConfig -> FontConfig -> FontConfig max :: FontConfig -> FontConfig -> FontConfig $cmin :: FontConfig -> FontConfig -> FontConfig min :: FontConfig -> FontConfig -> FontConfig Ord, ReadPrec [FontConfig] ReadPrec FontConfig Int -> ReadS FontConfig ReadS [FontConfig] (Int -> ReadS FontConfig) -> ReadS [FontConfig] -> ReadPrec FontConfig -> ReadPrec [FontConfig] -> Read FontConfig forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a $creadsPrec :: Int -> ReadS FontConfig readsPrec :: Int -> ReadS FontConfig $creadList :: ReadS [FontConfig] readList :: ReadS [FontConfig] $creadPrec :: ReadPrec FontConfig readPrec :: ReadPrec FontConfig $creadListPrec :: ReadPrec [FontConfig] readListPrec :: ReadPrec [FontConfig] Read, Int -> FontConfig -> ShowS [FontConfig] -> ShowS FontConfig -> FilePath (Int -> FontConfig -> ShowS) -> (FontConfig -> FilePath) -> ([FontConfig] -> ShowS) -> Show FontConfig forall a. (Int -> a -> ShowS) -> (a -> FilePath) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> FontConfig -> ShowS showsPrec :: Int -> FontConfig -> ShowS $cshow :: FontConfig -> FilePath show :: FontConfig -> FilePath $cshowList :: [FontConfig] -> ShowS showList :: [FontConfig] -> ShowS Show) deriving anyclass (FontConfig -> () (FontConfig -> ()) -> NFData FontConfig forall a. (a -> ()) -> NFData a $crnf :: FontConfig -> () rnf :: FontConfig -> () NFData) deriving (Value -> Parser [FontConfig] Value -> Parser FontConfig (Value -> Parser FontConfig) -> (Value -> Parser [FontConfig]) -> FromJSON FontConfig forall a. (Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a $cparseJSON :: Value -> Parser FontConfig parseJSON :: Value -> Parser FontConfig $cparseJSONList :: Value -> Parser [FontConfig] parseJSONList :: Value -> Parser [FontConfig] A.FromJSON, [FontConfig] -> Value [FontConfig] -> Encoding FontConfig -> Value FontConfig -> Encoding (FontConfig -> Value) -> (FontConfig -> Encoding) -> ([FontConfig] -> Value) -> ([FontConfig] -> Encoding) -> ToJSON FontConfig forall a. (a -> Value) -> (a -> Encoding) -> ([a] -> Value) -> ([a] -> Encoding) -> ToJSON a $ctoJSON :: FontConfig -> Value toJSON :: FontConfig -> Value $ctoEncoding :: FontConfig -> Encoding toEncoding :: FontConfig -> Encoding $ctoJSONList :: [FontConfig] -> Value toJSONList :: [FontConfig] -> Value $ctoEncodingList :: [FontConfig] -> Encoding toEncodingList :: [FontConfig] -> Encoding A.ToJSON) via A.CustomJSON (JSONSettings "" "font") FontConfig