miso-1.8.0.0: src/Miso/TypeLevel.hs
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeOperators #-}
module Miso.TypeLevel ( ToServerRoutes ) where
import Miso.Html
import Servant.API
import Servant.HTML.Lucid
-- | Convert client route type to a server web handler type
type family ToServerRoutes (layout :: k) (wrapper :: * -> *) (action :: *) :: k where
ToServerRoutes (a :<|> b) wrapper action =
ToServerRoutes a wrapper action :<|>
ToServerRoutes b wrapper action
ToServerRoutes (a :> b) wrapper action =
a :> ToServerRoutes b wrapper action
ToServerRoutes (View a) wrapper action =
Get '[HTML] (wrapper (View action))