packages feed

wai-control 0.1.0.2 → 0.2.0.0

raw patch · 4 files changed

+33/−30 lines, 4 filesdep +unliftio-coredep −monad-control-identitydep −transformers-basePVP ok

version bump matches the API change (PVP)

Dependencies added: unliftio-core

Dependencies removed: monad-control-identity, transformers-base

API changes (from Hackage documentation)

- Network.Wai.Handler.WebSockets.Trans: liftClientApp :: MonadBase IO m => ClientApp a -> ClientAppT m a
+ Network.Wai.Handler.WebSockets.Trans: liftClientApp :: MonadIO m => ClientApp a -> ClientAppT m a
- Network.Wai.Handler.WebSockets.Trans: liftServerApp :: MonadBase IO m => ServerApp -> ServerAppT m
+ Network.Wai.Handler.WebSockets.Trans: liftServerApp :: MonadIO m => ServerApp -> ServerAppT m
- Network.Wai.Handler.WebSockets.Trans: runClientAppT :: MonadBaseControlIdentity IO m => ClientAppT m a -> m (ClientApp a)
+ Network.Wai.Handler.WebSockets.Trans: runClientAppT :: MonadUnliftIO m => ClientAppT m a -> m (ClientApp a)
- Network.Wai.Handler.WebSockets.Trans: runServerAppT :: MonadBaseControlIdentity IO m => ServerAppT m -> m ServerApp
+ Network.Wai.Handler.WebSockets.Trans: runServerAppT :: MonadUnliftIO m => ServerAppT m -> m ServerApp
- Network.Wai.Handler.WebSockets.Trans: websocketsOrT :: MonadBaseControlIdentity IO m => ConnectionOptions -> ServerAppT m -> MiddlewareT m
+ Network.Wai.Handler.WebSockets.Trans: websocketsOrT :: MonadUnliftIO m => ConnectionOptions -> ServerAppT m -> MiddlewareT m
- Network.Wai.Trans: liftApplication :: MonadBaseControlIdentity IO m => Application -> ApplicationT m
+ Network.Wai.Trans: liftApplication :: MonadUnliftIO m => Application -> ApplicationT m
- Network.Wai.Trans: liftMiddleware :: MonadBaseControlIdentity IO m => Middleware -> MiddlewareT m
+ Network.Wai.Trans: liftMiddleware :: MonadUnliftIO m => Middleware -> MiddlewareT m
- Network.Wai.Trans: runApplicationT :: MonadBaseControlIdentity IO m => ApplicationT m -> m Application
+ Network.Wai.Trans: runApplicationT :: MonadUnliftIO m => ApplicationT m -> m Application
- Network.Wai.Trans: runMiddlewareT :: MonadBaseControlIdentity IO m => MiddlewareT m -> m Middleware
+ Network.Wai.Trans: runMiddlewareT :: MonadUnliftIO m => MiddlewareT m -> m Middleware

Files

CHANGELOG.md view
@@ -1,5 +1,11 @@ # Revision history for wai-control +## 0.2.0.0 -- 2022-07-04++* Replace the 'monad-control-identity' dependency with 'unliftio-core'.+* Replace `MonadBase IO` constraints with `MonadIO`.+* Replace `MonadBaseControlIdentity IO` constraints with `MonadUnliftIO`.+ ## 0.1.0.2 -- 2020-07-28  * Improve description.
src/Network/Wai/Handler/WebSockets/Trans.hs view
@@ -17,8 +17,7 @@  ) where -import Control.Monad.Base-import Control.Monad.Trans.Control.Identity+import Control.Monad.IO.Unlift import Network.Wai.Handler.WebSockets import Network.WebSockets @@ -28,38 +27,38 @@ type ServerAppT m = PendingConnection -> m ()  -- | Lift a websockets 'ServerApp' to a 'ServerAppT'.-liftServerApp :: MonadBase IO m+liftServerApp :: MonadIO m               => ServerApp               -> ServerAppT m-liftServerApp serverApp = liftBase . serverApp+liftServerApp serverApp = liftIO . serverApp  -- | Run a 'ServerAppT' in the inner monad.-runServerAppT :: MonadBaseControlIdentity IO m+runServerAppT :: MonadUnliftIO m               => ServerAppT m               -> m ServerApp-runServerAppT serverAppT = liftBaseWithIdentity $ \ runInBase ->-  return $ runInBase . serverAppT+runServerAppT serverAppT = withRunInIO $ \ runInIO ->+  return $ runInIO . serverAppT  -- | A type synonym for a websockets 'ClientApp' which has been lifted from the 'IO' monad. type ClientAppT m a = Connection -> m a  -- | Lift a websockets 'ClientApp' to a 'ClientAppT'.-liftClientApp :: MonadBase IO m+liftClientApp :: MonadIO m               => ClientApp a               -> ClientAppT m a-liftClientApp clientApp = liftBase . clientApp+liftClientApp clientApp = liftIO . clientApp  -- | Run a 'ClientAppT' in the inner monad.-runClientAppT :: MonadBaseControlIdentity IO m+runClientAppT :: MonadUnliftIO m               => ClientAppT m a               -> m (ClientApp a)-runClientAppT clientAppT = liftBaseWithIdentity $ \ runInBase ->-  return $ runInBase . clientAppT+runClientAppT clientAppT = withRunInIO $ \ runInIO ->+  return $ runInIO . clientAppT  {- | Upgrade a 'ServerAppT' to a 'MiddlewareT'.   This function is based on 'websocketsOr'. -}-websocketsOrT :: MonadBaseControlIdentity IO m+websocketsOrT :: MonadUnliftIO m               => ConnectionOptions               -> ServerAppT m               -> MiddlewareT m
src/Network/Wai/Trans.hs view
@@ -14,43 +14,42 @@  ) where -import Control.Monad.Base-import Control.Monad.Trans.Control.Identity+import Control.Monad.IO.Unlift import Network.Wai  -- | A type synonym for a wai 'Application' which has been lifted from the 'IO' monad. type ApplicationT m = Request -> (Response -> m ResponseReceived) -> m ResponseReceived  -- | Lift a wai 'Application' to an 'ApplicationT'.-liftApplication :: MonadBaseControlIdentity IO m+liftApplication :: MonadUnliftIO m                 => Application                 -> ApplicationT m-liftApplication app request respond = liftBaseWithIdentity $ \ runInBase ->-  app request $ runInBase . respond+liftApplication app request respond = withRunInIO $ \ runInIO ->+  app request $ runInIO . respond  -- | Run an 'ApplicationT' in the inner monad.-runApplicationT :: MonadBaseControlIdentity IO m+runApplicationT :: MonadUnliftIO m                 => ApplicationT m                 -> m Application-runApplicationT appT = liftBaseWithIdentity $ \ runInBase ->-  return $ \ request respond -> runInBase $ appT request $ liftBase . respond+runApplicationT appT = withRunInIO $ \ runInIO ->+  return $ \ request respond -> runInIO $ appT request $ liftIO . respond  -- | A type synonym for a wai 'Middleware' which has been lifted from the 'IO' monad. type MiddlewareT m = ApplicationT m -> ApplicationT m  -- | Lift a wai 'Middleware' to a 'MiddlewareT'.-liftMiddleware :: MonadBaseControlIdentity IO m+liftMiddleware :: MonadUnliftIO m                => Middleware                -> MiddlewareT m liftMiddleware mid appT request respond = do   app <- runApplicationT appT-  liftBaseWithIdentity $ \ runInBase -> mid app request $ runInBase . respond+  withRunInIO $ \ runInIO -> mid app request $ runInIO . respond  -- | Run a 'MiddlewareT' in the inner monad.-runMiddlewareT :: MonadBaseControlIdentity IO m+runMiddlewareT :: MonadUnliftIO m                => MiddlewareT m                -> m Middleware-runMiddlewareT midT = liftBaseWithIdentity $ \ runInBase ->+runMiddlewareT midT = withRunInIO $ \ runInIO ->   return $ \ app request respond -> do-    app' <- runInBase . runApplicationT . midT $ liftApplication app+    app' <- runInIO . runApplicationT . midT $ liftApplication app     app' request respond
wai-control.cabal view
@@ -1,11 +1,11 @@ name:                wai-control-version:             0.1.0.2+version:             0.2.0.0 synopsis:            Run wai Applications in IO based monads description:         This package allows 'IO' based monads in covariant and contravariant positions                      of <https://hackage.haskell.org/package/wai wai> 'Application's.                      .                      The monads, which are applicable for this, need to have-                     'MonadBaseControlIdentity' 'IO' instances.+                     'MonadUnliftIO' instances.                      This are for most cases 'ReaderT' stacks based on the 'IO' monad.                      This package will especially be of interest, if you are sharing access to                      'MVar's, 'TVar's or other concurrent data, while controlling that access with@@ -29,8 +29,7 @@   exposed-modules:     Network.Wai.Trans                        Network.Wai.Handler.WebSockets.Trans   build-depends:       base                   >= 4.5      && < 5-                     , monad-control-identity >= 0.1.0.1  && < 0.2-                     , transformers-base      >= 0.4.5.2  && < 0.5+                     , unliftio-core          >= 0.2      && < 0.3                      , wai                    >= 3.2      && < 3.3                      , wai-websockets         >= 3.0.1.2  && < 3.1                      , websockets             >= 0.12.5.3 && < 0.13