packages feed

sparrow 0.0.2.0 → 0.0.2.1

raw patch · 4 files changed

+55/−5 lines, 4 filesPVP: minor bump suggested

API additions: PVP suggests at least a minor version bump

API changes (from Hackage documentation)

+ Web.Dependencies.Sparrow.Types: hoistBroadcast :: Monad n => (forall a. m a -> n a) -> Broadcast m -> Broadcast n
+ Web.Dependencies.Sparrow.Types: hoistServer :: Monad m => Monad n => (forall a. m a -> n a) -> (forall a. n a -> m a) -> Server m f initIn initOut deltaIn deltaOut -> Server n f initIn initOut deltaIn deltaOut
+ Web.Dependencies.Sparrow.Types: hoistServerArgs :: (forall a. m a -> n a) -> ServerArgs m deltaOut -> ServerArgs n deltaOut
+ Web.Dependencies.Sparrow.Types: hoistServerContinue :: Monad m => (forall a. m a -> n a) -> (forall a. n a -> m a) -> ServerContinue m f initOut deltaIn deltaOut -> ServerContinue n f initOut deltaIn deltaOut
+ Web.Dependencies.Sparrow.Types: hoistServerReturn :: (forall a. m a -> n a) -> (forall a. n a -> m a) -> ServerReturn m f initOut deltaIn deltaOut -> ServerReturn n f initOut deltaIn deltaOut

Files

sparrow.cabal view
@@ -2,10 +2,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 309095bf67849fabbab5152d18d36076dcba4000675a82d0129d9a121f9ad671+-- hash: ca194da829dc469ef7c296f3c390fa1b36df83bd6bff4eee9cab731849fe886e  name:           sparrow-version:        0.0.2.0+version:        0.0.2.1 synopsis:       Unified streaming dependency management for web apps description:    Please see the README on Github at <https://git.localcooking.com/tooling/sparrow#readme> category:       Web
src/Web/Dependencies/Sparrow/Client.hs view
@@ -166,7 +166,7 @@             f | tls = runSecureClient (T.unpack $ printURIAuthHost host) (Strict.maybe 80 fromIntegral port) $ T.unpack $ printLocation loc               | otherwise = runClient (T.unpack $ printURIAuthHost host) (Strict.maybe 80 fromIntegral port) $ T.unpack $ printLocation loc -        x' <- runM (pingPong ((10^6) * 10) x) -- every 10 seconds+        x' <- runM (pingPong ((10^(6 :: Int)) * 10) x) -- every 10 seconds         x'' <- runM (runClientAppT (toClientAppT x'))         f x'' @@ -268,6 +268,6 @@    --   Start clients   z <- runM (runReaderT runSparrowClientT env)-  evaluate z+  _ <- evaluate z    wait ws
src/Web/Dependencies/Sparrow/Server.hs view
@@ -279,7 +279,7 @@                   liftIO (killAllOnOpenThreads env sessionID)               } -        wsApp' <- pingPong ((10^6) * 10) wsApp -- every 10 seconds+        wsApp' <- pingPong ((10^(6 :: Int)) * 10) wsApp -- every 10 seconds          (websocketsOrT defaultConnectionOptions (toServerAppT wsApp')) app req resp 
src/Web/Dependencies/Sparrow/Types.hs view
@@ -4,6 +4,7 @@   , OverloadedStrings   , RecordWildCards   , NamedFieldPuns+  , RankNTypes   #-}  module Web.Dependencies.Sparrow.Types where@@ -35,6 +36,13 @@   , serverSendCurrent :: deltaOut -> m ()   } +hoistServerArgs :: (forall a. m a -> n a) -> ServerArgs m deltaOut -> ServerArgs n deltaOut+hoistServerArgs f ServerArgs{..} = ServerArgs+  { serverDeltaReject = f serverDeltaReject+  , serverSendCurrent = f . serverSendCurrent+  }++ data ServerReturn m f initOut deltaIn deltaOut = ServerReturn   { serverInitOut   :: initOut   , serverOnOpen    :: ServerArgs m deltaOut@@ -45,15 +53,49 @@                     -> deltaIn -> m () -- ^ invoked for each receive   } +hoistServerReturn :: (forall a. m a -> n a)+                  -> (forall a. n a -> m a)+                  -> ServerReturn m f initOut deltaIn deltaOut+                  -> ServerReturn n f initOut deltaIn deltaOut+hoistServerReturn f g ServerReturn{..} = ServerReturn+  { serverInitOut+  , serverOnOpen = \args -> f $ serverOnOpen $ hoistServerArgs g args+  , serverOnReceive = \args deltaIn -> f $ serverOnReceive (hoistServerArgs g args) deltaIn+  }++ data ServerContinue m f initOut deltaIn deltaOut = ServerContinue   { serverContinue      :: Broadcast m -> m (ServerReturn m f initOut deltaIn deltaOut)   , serverOnUnsubscribe :: m ()   } +hoistServerContinue :: Monad m+                    => (forall a. m a -> n a)+                    -> (forall a. n a -> m a)+                    -> ServerContinue m f initOut deltaIn deltaOut+                    -> ServerContinue n f initOut deltaIn deltaOut+hoistServerContinue f g ServerContinue{..} = ServerContinue+  { serverContinue = \bcast -> f $ hoistServerReturn f g <$> serverContinue (hoistBroadcast g bcast)+  , serverOnUnsubscribe = f serverOnUnsubscribe+  }++ type Server m f initIn initOut deltaIn deltaOut =   initIn -> m (Maybe (ServerContinue m f initOut deltaIn deltaOut)) +hoistServer :: Monad m => Monad n+            => (forall a. m a -> n a)+            -> (forall a. n a -> m a)+            -> Server m f initIn initOut deltaIn deltaOut+            -> Server n f initIn initOut deltaIn deltaOut+hoistServer f g server = \initIn -> do+  mCont <- f $ server initIn+  case mCont of+    Nothing -> pure Nothing+    Just cont -> pure $ Just $ hoistServerContinue f g cont ++ staticServer :: MonadIO m              => Alternative f              => (initIn -> m (Maybe initOut)) -- ^ Produce an initOut@@ -134,6 +176,14 @@ -- ** Broadcast  type Broadcast m = Topic -> m (Maybe (Value -> Maybe (m ())))++hoistBroadcast :: Monad n => (forall a. m a -> n a) -> Broadcast m -> Broadcast n+hoistBroadcast f bcast = \topic -> do+  mResolve <- f (bcast topic)+  case mResolve of+    Nothing -> pure Nothing+    Just resolve -> pure $ Just $ \v -> f <$> resolve v+   -- * JSON Encodings