wai-middleware-verbs 0.4.0 → 0.4.0.1
raw patch · 2 files changed
+36/−2 lines, 2 filesdep +monad-controldep +monad-control-alignedPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
Dependencies added: monad-control, monad-control-aligned
API changes (from Hackage documentation)
+ Network.Wai.Middleware.Verbs: instance Control.Monad.Trans.Control.Aligned.MonadBaseControl b m stM => Control.Monad.Trans.Control.Aligned.MonadBaseControl b (Network.Wai.Middleware.Verbs.VerbListenerT r m) (Data.Functor.Compose.Compose stM ((,) (Network.Wai.Middleware.Verbs.VerbMap r)))
+ Network.Wai.Middleware.Verbs: instance Control.Monad.Trans.Control.Aligned.MonadTransControl (Network.Wai.Middleware.Verbs.VerbListenerT r) ((,) (Network.Wai.Middleware.Verbs.VerbMap r))
+ Network.Wai.Middleware.Verbs: instance Control.Monad.Trans.Control.MonadBaseControl b m => Control.Monad.Trans.Control.MonadBaseControl b (Network.Wai.Middleware.Verbs.VerbListenerT r m)
+ Network.Wai.Middleware.Verbs: instance Control.Monad.Trans.Control.MonadTransControl (Network.Wai.Middleware.Verbs.VerbListenerT r)
Files
src/Network/Wai/Middleware/Verbs.hs view
@@ -1,11 +1,14 @@ {-# LANGUAGE FlexibleContexts+ , FlexibleInstances , StandaloneDeriving , ScopedTypeVariables , MultiParamTypeClasses , UndecidableInstances , GeneralizedNewtypeDeriving , DeriveGeneric+ , TypeFamilies+ , Rank2Types , TypeSynonymInstances #-} @@ -62,6 +65,7 @@ import Data.Hashable (Hashable) import Data.Maybe (fromMaybe) import qualified Data.ByteString.Lazy as LBS+import Data.Functor.Compose (Compose) import Control.Applicative (Alternative) import Control.Monad (MonadPlus) import Control.Monad.Fix (MonadFix)@@ -73,6 +77,8 @@ import Control.Monad.Cont (MonadCont) import Control.Monad.Base (MonadBase) import Control.Monad.Catch (MonadCatch, MonadThrow, MonadMask)+import Control.Monad.Trans.Control (MonadBaseControl (..), MonadTransControl (..), ComposeSt, defaultLiftBaseWith, defaultRestoreM, defaultLiftWith, defaultRestoreT)+import qualified Control.Monad.Trans.Control.Aligned as Aligned import Control.Monad.Trans.Resource (MonadResource) import Control.Monad.Except (MonadError) import Control.Monad.Logger (MonadLogger)@@ -126,6 +132,32 @@ , MonadError e', MonadCont, MonadBase b, MonadThrow, MonadCatch , MonadMask, MonadLogger ) -- TODO: MonadControl++instance MonadTransControl (VerbListenerT r) where+ type StT (VerbListenerT r) a = StT (StateT (VerbMap r)) a+ liftWith = defaultLiftWith VerbListenerT runVerbListenerT+ restoreT = defaultRestoreT VerbListenerT++instance MonadBaseControl b m => MonadBaseControl b (VerbListenerT r m) where+ type StM (VerbListenerT r m) a = ComposeSt (VerbListenerT r) m a+ liftBaseWith = defaultLiftBaseWith+ restoreM = defaultRestoreM++instance Aligned.MonadTransControl (VerbListenerT r) ((,) (VerbMap r)) where+ liftWith client = VerbListenerT $ StateT $ \s ->+ let run :: forall m a. Monad m => VerbListenerT r m a -> m (VerbMap r, a)+ run (VerbListenerT (StateT g)) = do+ (x,s') <- g s+ pure (s',x)+ in do x <- client run+ pure (x, s)+ restoreT x = VerbListenerT $ StateT $ \_ -> do+ (s,x') <- x+ pure (x',s)++instance Aligned.MonadBaseControl b m stM => Aligned.MonadBaseControl b (VerbListenerT r m) (Compose stM ((,) (VerbMap r))) where+ liftBaseWith = Aligned.defaultLiftBaseWith+ restoreM = Aligned.defaultRestoreM deriving instance (MonadResource m, MonadBase IO m) => MonadResource (VerbListenerT r m)
wai-middleware-verbs.cabal view
@@ -2,10 +2,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: c44481a358f46e101abf15c73f7e9876073a1bd3f4cc3ad6bac1db9e7ce8cb25+-- hash: f14c8019769f9489e79ba3b8049d8713701d5409040452e0d132e0fabce07cad name: wai-middleware-verbs-version: 0.4.0+version: 0.4.0.1 synopsis: Route Wai middlewares based on HTTP verbs description: Please see the README on Github at <https://git.localcooking.com/tooling/wai-middleware-verbs#readme> category: Web@@ -41,6 +41,8 @@ , hashable , http-types , mmorph+ , monad-control+ , monad-control-aligned , monad-logger , mtl , resourcet