packages feed

nested-routes 2.2.0 → 3.0.0

raw patch · 4 files changed

+52/−85 lines, 4 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

- Web.Routes.Nested: instance forall (k :: BOX) (z :: k) x (m :: * -> *). Applicative m => Applicative (HandlerT z x m)
- Web.Routes.Nested: instance forall (k :: BOX) (z :: k) x (m :: * -> *). Functor m => Functor (HandlerT z x m)
- Web.Routes.Nested: instance forall (k :: BOX) (z :: k) x (m :: * -> *). Monad m => Monad (HandlerT z x m)
- Web.Routes.Nested: instance forall (k :: BOX) (z :: k) x (m :: * -> *). MonadIO m => MonadIO (HandlerT z x m)
- Web.Routes.Nested: instance forall (k :: BOX) (z :: k) x. MonadTrans (HandlerT z x)
- Web.Routes.Nested.VerbListener: instance Applicative m => Applicative (VerbListenerT z r m)
- Web.Routes.Nested.VerbListener: instance Foldable (Verbs z m)
- Web.Routes.Nested.VerbListener: instance Functor (Verbs z m)
- Web.Routes.Nested.VerbListener: instance Functor m => Functor (VerbListenerT z r m)
- Web.Routes.Nested.VerbListener: instance Monad m => Monad (VerbListenerT z r m)
- Web.Routes.Nested.VerbListener: instance MonadIO m => MonadIO (VerbListenerT z r m)
- Web.Routes.Nested.VerbListener: instance MonadTrans (VerbListenerT z r)
- Web.Routes.Nested.VerbListener: instance Monoid (Verbs z m a)
- Web.Routes.Nested.VerbListener: instance Traversable (Verbs z m)
+ Web.Routes.Nested: instance Applicative m => Applicative (HandlerT x m)
+ Web.Routes.Nested: instance Functor m => Functor (HandlerT x m)
+ Web.Routes.Nested: instance Monad m => Monad (HandlerT x m)
+ Web.Routes.Nested: instance MonadIO m => MonadIO (HandlerT x m)
+ Web.Routes.Nested: instance MonadTrans (HandlerT x)
+ Web.Routes.Nested.VerbListener: instance Applicative m => Applicative (VerbListenerT r m)
+ Web.Routes.Nested.VerbListener: instance Foldable (Verbs m)
+ Web.Routes.Nested.VerbListener: instance Functor (Verbs m)
+ Web.Routes.Nested.VerbListener: instance Functor m => Functor (VerbListenerT r m)
+ Web.Routes.Nested.VerbListener: instance Monad m => Monad (VerbListenerT r m)
+ Web.Routes.Nested.VerbListener: instance MonadIO m => MonadIO (VerbListenerT r m)
+ Web.Routes.Nested.VerbListener: instance MonadTrans (VerbListenerT r)
+ Web.Routes.Nested.VerbListener: instance Monoid (Verbs m r)
+ Web.Routes.Nested.VerbListener: instance Traversable (Verbs m)
- Web.Routes.Nested: [HandlerT] :: WriterT (RUPTrie Text x, RUPTrie Text x) m a -> HandlerT z x m a
+ Web.Routes.Nested: [HandlerT] :: WriterT (RUPTrie Text x, RUPTrie Text x) m a -> HandlerT x m a
- Web.Routes.Nested: [runHandler] :: HandlerT z x m a -> WriterT (RUPTrie Text x, RUPTrie Text x) m a
+ Web.Routes.Nested: [runHandler] :: HandlerT x m a -> WriterT (RUPTrie Text x, RUPTrie Text x) m a
- Web.Routes.Nested: handle :: (Monad m, Functor m, cleanxs ~ OnlyJusts xs, HasResult childType (ActionT z m ()), ExpectArity cleanxs childType, Singleton (UrlChunks xs) childType (RUPTrie Text result), Extrude (UrlChunks xs) (RUPTrie Text childType) (RUPTrie Text result), (ArityMinusTypeList childType cleanxs) ~ result, childType ~ TypeListToArity cleanxs result) => UrlChunks xs -> Maybe childType -> Maybe (HandlerT z childType m ()) -> HandlerT z result m ()
+ Web.Routes.Nested: handle :: (Monad m, Functor m, cleanxs ~ OnlyJusts xs, HasResult childType (ActionT m ()), ExpectArity cleanxs childType, Singleton (UrlChunks xs) childType (RUPTrie Text result), Extrude (UrlChunks xs) (RUPTrie Text childType) (RUPTrie Text result), (ArityMinusTypeList childType cleanxs) ~ result, childType ~ TypeListToArity cleanxs result) => UrlChunks xs -> Maybe childType -> Maybe (HandlerT childType m ()) -> HandlerT result m ()
- Web.Routes.Nested: newtype HandlerT z x m a
+ Web.Routes.Nested: newtype HandlerT x m a
- Web.Routes.Nested: notFound :: (Monad m, Functor m, cleanxs ~ OnlyJusts xs, HasResult childType (ActionT z m ()), ExpectArity cleanxs childType, Singleton (UrlChunks xs) childType (RUPTrie Text result), Extrude (UrlChunks xs) (RUPTrie Text childType) (RUPTrie Text result), (ArityMinusTypeList childType cleanxs) ~ result, childType ~ TypeListToArity cleanxs result) => UrlChunks xs -> Maybe childType -> Maybe (HandlerT z childType m ()) -> HandlerT z result m ()
+ Web.Routes.Nested: notFound :: (Monad m, Functor m, cleanxs ~ OnlyJusts xs, HasResult childType (ActionT m ()), ExpectArity cleanxs childType, Singleton (UrlChunks xs) childType (RUPTrie Text result), Extrude (UrlChunks xs) (RUPTrie Text childType) (RUPTrie Text result), (ArityMinusTypeList childType cleanxs) ~ result, childType ~ TypeListToArity cleanxs result) => UrlChunks xs -> Maybe childType -> Maybe (HandlerT childType m ()) -> HandlerT result m ()
- Web.Routes.Nested: parent :: (Monad m, Functor m, cleanxs ~ OnlyJusts xs, Singleton (UrlChunks xs) childType (RUPTrie Text result), Extrude (UrlChunks xs) (RUPTrie Text childType) (RUPTrie Text result), (ArityMinusTypeList childType cleanxs) ~ result, childType ~ TypeListToArity cleanxs result) => UrlChunks xs -> HandlerT z childType m () -> HandlerT z result m ()
+ Web.Routes.Nested: parent :: (Monad m, Functor m, cleanxs ~ OnlyJusts xs, Singleton (UrlChunks xs) childType (RUPTrie Text result), Extrude (UrlChunks xs) (RUPTrie Text childType) (RUPTrie Text result), (ArityMinusTypeList childType cleanxs) ~ result, childType ~ TypeListToArity cleanxs result) => UrlChunks xs -> HandlerT childType m () -> HandlerT result m ()
- Web.Routes.Nested: route :: (Functor m, Monad m, MonadIO m) => HandlerT z (ActionT z m ()) m a -> Request -> (Response -> IO ResponseReceived) -> m ResponseReceived
+ Web.Routes.Nested: route :: (Functor m, Monad m, MonadIO m) => HandlerT (ActionT m ()) m a -> Request -> (Response -> IO ResponseReceived) -> m ResponseReceived
- Web.Routes.Nested: type ActionT z m a = VerbListenerT z (FileExtListenerT Response m a) m a
+ Web.Routes.Nested: type ActionT m a = VerbListenerT (FileExtListenerT Response m a) m a
- Web.Routes.Nested.VerbListener: [VerbListenerT] :: WriterT (Verbs z m r) m a -> VerbListenerT z r m a
+ Web.Routes.Nested.VerbListener: [VerbListenerT] :: WriterT (Verbs m r) m a -> VerbListenerT r m a
- Web.Routes.Nested.VerbListener: [Verbs] :: Map Verb (Maybe (ReaderT ByteString m z, Maybe BodyLength), r) -> Verbs z m r
+ Web.Routes.Nested.VerbListener: [Verbs] :: Map Verb (Maybe (ByteString -> m (), Maybe BodyLength), r) -> Verbs m r
- Web.Routes.Nested.VerbListener: [runVerbListenerT] :: VerbListenerT z r m a -> WriterT (Verbs z m r) m a
+ Web.Routes.Nested.VerbListener: [runVerbListenerT] :: VerbListenerT r m a -> WriterT (Verbs m r) m a
- Web.Routes.Nested.VerbListener: [unVerbs] :: Verbs z m r -> Map Verb (Maybe (ReaderT ByteString m z, Maybe BodyLength), r)
+ Web.Routes.Nested.VerbListener: [unVerbs] :: Verbs m r -> Map Verb (Maybe (ByteString -> m (), Maybe BodyLength), r)
- Web.Routes.Nested.VerbListener: delete :: (Monad m) => a -> VerbListenerT z a m ()
+ Web.Routes.Nested.VerbListener: delete :: (Monad m) => r -> VerbListenerT r m ()
- Web.Routes.Nested.VerbListener: get :: (Monad m) => a -> VerbListenerT z a m ()
+ Web.Routes.Nested.VerbListener: get :: (Monad m) => r -> VerbListenerT r m ()
- Web.Routes.Nested.VerbListener: newtype VerbListenerT z r m a
+ Web.Routes.Nested.VerbListener: newtype VerbListenerT r m a
- Web.Routes.Nested.VerbListener: newtype Verbs z m r
+ Web.Routes.Nested.VerbListener: newtype Verbs m r
- Web.Routes.Nested.VerbListener: post :: (Monad m, MonadIO m) => (ByteString -> m z) -> a -> VerbListenerT z a m ()
+ Web.Routes.Nested.VerbListener: post :: (Monad m, MonadIO m) => (ByteString -> m ()) -> r -> VerbListenerT r m ()
- Web.Routes.Nested.VerbListener: postMax :: (Monad m, MonadIO m) => BodyLength -> (ByteString -> m z) -> a -> VerbListenerT z a m ()
+ Web.Routes.Nested.VerbListener: postMax :: (Monad m, MonadIO m) => BodyLength -> (ByteString -> m ()) -> r -> VerbListenerT r m ()
- Web.Routes.Nested.VerbListener: put :: (Monad m, MonadIO m) => (ByteString -> m z) -> a -> VerbListenerT z a m ()
+ Web.Routes.Nested.VerbListener: put :: (Monad m, MonadIO m) => (ByteString -> m ()) -> r -> VerbListenerT r m ()
- Web.Routes.Nested.VerbListener: putMax :: (Monad m, MonadIO m) => BodyLength -> (ByteString -> m z) -> a -> VerbListenerT z a m ()
+ Web.Routes.Nested.VerbListener: putMax :: (Monad m, MonadIO m) => BodyLength -> (ByteString -> m ()) -> r -> VerbListenerT r m ()

Files

nested-routes.cabal view
@@ -1,5 +1,5 @@ Name:                   nested-routes-Version:                2.2.0+Version:                3.0.0 Author:                 Athan Clark <athan.clark@gmail.com> Maintainer:             Athan Clark <athan.clark@gmail.com> License:                BSD3
src/Web/Routes/Nested.hs view
@@ -58,24 +58,18 @@ import Data.Function.Poly  -newtype HandlerT z x m a = HandlerT+newtype HandlerT x m a = HandlerT   { runHandler :: WriterT ( RUPTrie T.Text x                           , RUPTrie T.Text x ) m a }-  deriving (Functor)--deriving instance Applicative m => Applicative (HandlerT z x m)-deriving instance Monad m =>       Monad       (HandlerT z x m)-deriving instance MonadIO m =>     MonadIO     (HandlerT z x m)-instance MonadTrans (HandlerT z x) where-  lift ma = HandlerT $ lift ma+  deriving (Functor, Applicative, Monad, MonadIO, MonadTrans) -type ActionT z m a = VerbListenerT z (FileExtListenerT Response m a) m a+type ActionT m a = VerbListenerT (FileExtListenerT Response m a) m a  -- | For routes ending with a literal. handle :: ( Monad m           , Functor m           , cleanxs ~ OnlyJusts xs-          , HasResult childType (ActionT z m ())+          , HasResult childType (ActionT m ())           , ExpectArity cleanxs childType           , Singleton (UrlChunks xs)               childType@@ -85,11 +79,10 @@               (RUPTrie T.Text result)           , (ArityMinusTypeList childType cleanxs) ~ result           , childType ~ TypeListToArity cleanxs result-          ) =>-          UrlChunks xs -- ^ Path to match against-       -> Maybe childType -- ^ Possibly a function, ending in @ActionT z m ()@.-       -> Maybe (HandlerT z childType m ()) -- ^ Potential child routes-       -> HandlerT z result m ()+          ) => UrlChunks xs -- ^ Path to match against+            -> Maybe childType -- ^ Possibly a function, ending in @ActionT z m ()@.+            -> Maybe (HandlerT childType m ()) -- ^ Potential child routes+            -> HandlerT result m () handle ts (Just vl) Nothing =   HandlerT $ tell (singleton ts vl, mempty) handle ts mvl (Just cs) = do@@ -108,10 +101,9 @@               (RUPTrie T.Text result)           , (ArityMinusTypeList childType cleanxs) ~ result           , childType ~ TypeListToArity cleanxs result-          ) =>-          UrlChunks xs -- ^ Path to match against-       -> HandlerT z childType m () -- ^ Potential child routes-       -> HandlerT z result m ()+          ) => UrlChunks xs+            -> HandlerT childType m ()+            -> HandlerT result m () parent ts cs = do   (Rooted _ ctrie,_) <- lift $ execWriterT $ runHandler cs   HandlerT $ tell (extrude ts $ Rooted Nothing ctrie, mempty)@@ -119,7 +111,7 @@ notFound :: ( Monad m             , Functor m             , cleanxs ~ OnlyJusts xs-            , HasResult childType (ActionT z m ())+            , HasResult childType (ActionT m ())             , ExpectArity cleanxs childType             , Singleton (UrlChunks xs)                 childType@@ -129,11 +121,10 @@                 (RUPTrie T.Text result)             , (ArityMinusTypeList childType cleanxs) ~ result             , childType ~ TypeListToArity cleanxs result-            ) =>-            UrlChunks xs-         -> Maybe childType-         -> Maybe (HandlerT z childType m ())-         -> HandlerT z result m ()+            ) => UrlChunks xs+              -> Maybe childType+              -> Maybe (HandlerT childType m ())+              -> HandlerT result m () notFound ts (Just vl) Nothing =   HandlerT $ tell (mempty, singleton ts vl) notFound ts mvl (Just cs) = do@@ -146,10 +137,9 @@ route :: ( Functor m          , Monad m          , MonadIO m-         ) =>-         HandlerT z (ActionT z m ()) m a -- ^ Assembled @handle@ calls-      -> Request-      -> (Response -> IO ResponseReceived) -> m ResponseReceived+         ) => HandlerT (ActionT m ()) m a -- ^ Assembled @handle@ calls+           -> Request+           -> (Response -> IO ResponseReceived) -> m ResponseReceived route h req respond = do   (rtrie, nftrie) <- execWriterT $ runHandler h   let mMethod  = httpMethodToMSym $ requestMethod req@@ -188,7 +178,7 @@                       Maybe B.ByteString                    -> FileExt                    -> Verb-                   -> Maybe (ActionT z m ())+                   -> Maybe (ActionT m ())                    -> m (Maybe Response)     handleNotFound acceptBS f v mnfcomp =       let handleEither nfcomp = do@@ -205,7 +195,7 @@                 Maybe B.ByteString              -> FileExt              -> Verb-             -> ActionT z m ()+             -> ActionT m ()              -> Maybe Response              -> m ResponseReceived     continue acceptBS f v foundM mnfResp = do@@ -216,7 +206,7 @@                    Maybe B.ByteString                 -> FileExt                 -> Verb-                -> M.Map Verb (Maybe (ReaderT BL.ByteString m z, Maybe BodyLength), FileExtListenerT Response m ())+                -> M.Map Verb (Maybe (BL.ByteString -> m (), Maybe BodyLength), FileExtListenerT Response m ())                 -> Maybe Response                 -> m ResponseReceived     continueMap acceptBS f v vmap mnfResp = do@@ -240,7 +230,7 @@      handleUpload req reqbf respond r = do       body <- liftIO $ strictRequestBody req-      runReaderT reqbf body+      reqbf body       liftIO $ respond r      respond404 :: Maybe Response -> IO ResponseReceived
src/Web/Routes/Nested/FileExtListener/Types.hs view
@@ -41,17 +41,8 @@     texts       = [".txt"]  newtype FileExts a = FileExts { unFileExts :: Map FileExt a }-  deriving (Show, Eq, Functor, Traversable)--deriving instance Monoid      (FileExts a)-deriving instance Foldable     FileExts-+  deriving (Show, Eq, Monoid, Functor, Foldable, Traversable)  newtype FileExtListenerT r m a =   FileExtListenerT { runFileExtListenerT :: WriterT (FileExts r) m a }-    deriving (Functor)--deriving instance Applicative m => Applicative (FileExtListenerT r m)-deriving instance Monad m =>       Monad       (FileExtListenerT r m)-deriving instance MonadIO m =>     MonadIO     (FileExtListenerT r m)-deriving instance                  MonadTrans  (FileExtListenerT r)+    deriving (Functor, Applicative, Monad, MonadIO, MonadTrans)
src/Web/Routes/Nested/VerbListener.hs view
@@ -29,20 +29,14 @@  type BodyLength = Word64 -newtype Verbs z m r = Verbs { unVerbs :: Map Verb (Maybe (ReaderT BL.ByteString m z, Maybe BodyLength), r) }-  deriving (Functor, Traversable)--deriving instance                  Monoid    (Verbs z m a)-deriving instance                  Foldable  (Verbs z m)+newtype Verbs m r = Verbs { unVerbs :: Map Verb (Maybe (BL.ByteString -> m (), Maybe BodyLength), r) }+  deriving (Monoid, Functor, Foldable, Traversable) -newtype VerbListenerT z r m a =-  VerbListenerT { runVerbListenerT :: WriterT (Verbs z m r) m a }-    deriving (Functor)+newtype VerbListenerT r m a =+  VerbListenerT { runVerbListenerT :: WriterT (Verbs m r) m a }+    deriving (Functor, Applicative, Monad, MonadIO) -deriving instance Applicative m => Applicative (VerbListenerT z r m)-deriving instance Monad m =>       Monad       (VerbListenerT z r m)-deriving instance MonadIO m =>     MonadIO     (VerbListenerT z r m)-instance MonadTrans (VerbListenerT z r) where+instance MonadTrans (VerbListenerT r) where   lift ma = VerbListenerT $ lift ma  @@ -50,55 +44,47 @@ foldMWithKey f i = foldlWithKey (\macc k a -> (\mer -> f mer k a) =<< macc) (return i)  -get :: (Monad m) =>-       a-    -> VerbListenerT z a m ()+get :: ( Monad m+       ) => r -> VerbListenerT r m () get r = do   let new = singleton Get (Nothing, r)   VerbListenerT $ tell $ Verbs new  -post :: (Monad m, MonadIO m) =>-        (BL.ByteString -> m z)-     -> a-     -> VerbListenerT z a m ()+post :: ( Monad m+        , MonadIO m+        ) => (BL.ByteString -> m ()) -> r -> VerbListenerT r m () post handle r = do-  let new = singleton Post (Just (ReaderT handle, Nothing), r)+  let new = singleton Post (Just (handle, Nothing), r)   VerbListenerT $ tell $ Verbs new  -postMax :: (Monad m, MonadIO m) =>-           BodyLength-        -> (BL.ByteString -> m z)-        -> a-        -> VerbListenerT z a m ()+postMax :: ( Monad m+           , MonadIO m+           ) => BodyLength -> (BL.ByteString -> m ()) -> r -> VerbListenerT r m () postMax bl handle r = do-  let new = singleton Post (Just (ReaderT handle, Just bl), r)+  let new = singleton Post (Just (handle, Just bl), r)   VerbListenerT $ tell $ Verbs new  -put :: (Monad m, MonadIO m) =>-       (BL.ByteString -> m z)-    -> a-    -> VerbListenerT z a m ()+put :: ( Monad m+       , MonadIO m+       ) => (BL.ByteString -> m ()) -> r -> VerbListenerT r m () put handle r = do-  let new = singleton Put (Just (ReaderT handle, Nothing), r)+  let new = singleton Put (Just (handle, Nothing), r)   VerbListenerT $ tell $ Verbs new  -putMax :: (Monad m, MonadIO m) =>-          BodyLength-       -> (BL.ByteString -> m z)-       -> a-       -> VerbListenerT z a m ()+putMax :: ( Monad m+          , MonadIO m+          ) => BodyLength -> (BL.ByteString -> m ()) -> r -> VerbListenerT r m () putMax bl handle r = do-  let new = singleton Put (Just (ReaderT handle, Just bl), r)+  let new = singleton Put (Just (handle, Just bl), r)   VerbListenerT $ tell $ Verbs new  -delete :: (Monad m) =>-          a-       -> VerbListenerT z a m ()+delete :: ( Monad m+          ) => r -> VerbListenerT r m () delete r = do   let new = singleton Delete (Nothing, r)   VerbListenerT $ tell $ Verbs new