{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE NoImplicitPrelude #-}
module Data.Morpheus
( interpreter,
debugInterpreter,
App,
deriveApp,
runApp,
withDebugger,
)
where
import Data.Morpheus.App
( App,
MapAPI,
runApp,
withDebugger,
)
import Data.Morpheus.Server.Deriving.App
( RootResolverConstraint,
deriveApp,
)
import Data.Morpheus.Types
( RootResolver (..),
)
import Relude
interpreter ::
(MapAPI a b, RootResolverConstraint m e query mut sub) =>
RootResolver m e query mut sub ->
a ->
m b
interpreter :: forall a b (m :: * -> *) e (query :: (* -> *) -> *)
(mut :: (* -> *) -> *) (sub :: (* -> *) -> *).
(MapAPI a b, RootResolverConstraint m e query mut sub) =>
RootResolver m e query mut sub -> a -> m b
interpreter = forall a b (m :: * -> *) e.
(MapAPI a b, Monad m) =>
App e m -> a -> m b
runApp forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: (* -> *)
-> * -> ((* -> *) -> *) -> ((* -> *) -> *) -> ((* -> *) -> *) -> *)
(m :: * -> *) event (qu :: (* -> *) -> *) (mu :: (* -> *) -> *)
(su :: (* -> *) -> *).
DeriveApp f m event qu mu su =>
f m event qu mu su -> App event m
deriveApp
debugInterpreter ::
(MapAPI a b, RootResolverConstraint m e query mut sub) =>
RootResolver m e query mut sub ->
a ->
m b
debugInterpreter :: forall a b (m :: * -> *) e (query :: (* -> *) -> *)
(mut :: (* -> *) -> *) (sub :: (* -> *) -> *).
(MapAPI a b, RootResolverConstraint m e query mut sub) =>
RootResolver m e query mut sub -> a -> m b
debugInterpreter = forall a b (m :: * -> *) e.
(MapAPI a b, Monad m) =>
App e m -> a -> m b
runApp forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall e (m :: * -> *). App e m -> App e m
withDebugger forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: (* -> *)
-> * -> ((* -> *) -> *) -> ((* -> *) -> *) -> ((* -> *) -> *) -> *)
(m :: * -> *) event (qu :: (* -> *) -> *) (mu :: (* -> *) -> *)
(su :: (* -> *) -> *).
DeriveApp f m event qu mu su =>
f m event qu mu su -> App event m
deriveApp