freckle-app 1.16.0.0 → 1.17.0.0
raw patch · 5 files changed
+36/−28 lines, 5 filesdep ~BlammoPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: Blammo
API changes (from Hackage documentation)
- Freckle.App: instance Control.Monad.IO.Class.MonadIO m => Control.Monad.Logger.MonadLogger (Freckle.App.AppT app m)
- Freckle.App: instance Control.Monad.IO.Class.MonadIO m => Control.Monad.Logger.MonadLoggerIO (Freckle.App.AppT app m)
- Freckle.App.Test: instance Blammo.Logging.Internal.Logger.HasLogger app => Test.Hspec.Core.Example.Example (Freckle.App.Test.AppExample app a)
- Freckle.App.Test: instance Control.Monad.Logger.MonadLogger (Freckle.App.Test.AppExample app)
+ Freckle.App: instance (Control.Monad.IO.Class.MonadIO m, Blammo.Logging.Internal.Logger.HasLogger app) => Control.Monad.Logger.MonadLogger (Freckle.App.AppT app m)
+ Freckle.App: instance (Control.Monad.IO.Class.MonadIO m, Blammo.Logging.Internal.Logger.HasLogger app) => Control.Monad.Logger.MonadLoggerIO (Freckle.App.AppT app m)
+ Freckle.App: instance Control.Monad.Trans.Class.MonadTrans (Freckle.App.AppT app)
+ Freckle.App.Test: instance Blammo.Logging.Internal.Logger.HasLogger app => Control.Monad.Logger.MonadLogger (Freckle.App.Test.AppExample app)
+ Freckle.App.Test: instance Blammo.Logging.Internal.Logger.HasLogger app => Control.Monad.Logger.MonadLoggerIO (Freckle.App.Test.AppExample app)
+ Freckle.App.Test: instance Test.Hspec.Core.Example.Example (Freckle.App.Test.AppExample app a)
- Freckle.App: AppT :: ReaderT app (LoggingT (ResourceT m)) a -> AppT app m a
+ Freckle.App: AppT :: ReaderT app (ResourceT m) a -> AppT app m a
- Freckle.App: [unAppT] :: AppT app m a -> ReaderT app (LoggingT (ResourceT m)) a
+ Freckle.App: [unAppT] :: AppT app m a -> ReaderT app (ResourceT m) a
- Freckle.App: runApp :: HasLogger app => (forall b. (app -> IO b) -> IO b) -> AppT app IO a -> IO a
+ Freckle.App: runApp :: (forall b. (app -> IO b) -> IO b) -> AppT app IO a -> IO a
- Freckle.App: runAppT :: (MonadUnliftIO m, HasLogger app) => AppT app m a -> app -> m a
+ Freckle.App: runAppT :: MonadUnliftIO m => AppT app m a -> app -> m a
- Freckle.App.Test: AppExample :: ReaderT app (LoggingT IO) a -> AppExample app a
+ Freckle.App.Test: AppExample :: ReaderT app IO a -> AppExample app a
- Freckle.App.Test: [unAppExample] :: AppExample app a -> ReaderT app (LoggingT IO) a
+ Freckle.App.Test: [unAppExample] :: AppExample app a -> ReaderT app IO a
Files
- CHANGELOG.md +11/−1
- freckle-app.cabal +3/−3
- library/Freckle/App.hs +15/−19
- library/Freckle/App/Test.hs +6/−4
- package.yaml +1/−1
CHANGELOG.md view
@@ -1,4 +1,14 @@-## [_Unreleased_](https://github.com/freckle/freckle-app/compare/v1.16.0.0...main)+## [_Unreleased_](https://github.com/freckle/freckle-app/compare/v1.17.0.0...main)++## [v1.17.0.0](https://github.com/freckle/freckle-app/compare/v1.16.0.0...v1.17.0.0)++- Require Blammo 1.2+- Remove `LoggingT` from the definitions of `AppT` and `AppExample`+- Users are advised to use the new `withLogger` utility available as of Blammo 1.2+ to intialize an application's logger. In places other than the top level of an+ application, most uses of `runLoggerLoggingT` should be replaced with+ `runWithLogger` or `runAppT`.+- Add instance `MonadTrans AppT` ## [v1.16.0.0](https://github.com/freckle/freckle-app/compare/v1.15.5.0...v1.16.0.0)
freckle-app.cabal view
@@ -1,6 +1,6 @@ cabal-version: 1.18 name: freckle-app-version: 1.16.0.0+version: 1.17.0.0 license: MIT license-file: LICENSE maintainer: Freckle Education@@ -103,7 +103,7 @@ -Wno-prepositive-qualified-module -Wno-safe -Wno-unsafe build-depends:- Blammo >=1.1.2.0,+ Blammo >=1.2.0.0, Glob >=0.10.2, MonadRandom >=0.5.3, QuickCheck >=2.14.3,@@ -266,7 +266,7 @@ -rtsopts -with-rtsopts=-N build-depends:- Blammo >=1.1.2.0,+ Blammo >=1.2.0.0, QuickCheck >=2.14.3, aeson >=2.0.3.0, base >=4.16.4.0 && <5,
library/Freckle/App.hs view
@@ -122,12 +122,12 @@ -- > loadApp :: (App -> IO a) -> IO a -- > loadApp f = do -- > appConfig{..} <- loadConfig--- > appLogger <- newLogger configLoggerSettings--- > appSqlPool <- runLoggerLoggingT appLogger $ makePostgresPool configDbPoolSize--- > withTracerProvider $ \tracerProvider -> do--- > withStatsClient configStatsSettings $ \appStatsClient -> do--- > let appTracer = makeTracer tracerProvider "my-app" tracerOptions--- > f App{..}+-- > withLogger configLoggerSettings $ \appLogger ->+-- > appSqlPool <- runWithLogger appLogger $ makePostgresPool configDbPoolSize+-- > withTracerProvider $ \tracerProvider -> do+-- > withStatsClient configStatsSettings $ \appStatsClient -> do+-- > let appTracer = makeTracer tracerProvider "my-app" tracerOptions+-- > f App{..} -- -- This unlocks @'runDB'@ for your application: --@@ -196,8 +196,7 @@ import System.IO (BufferMode (..), hSetBuffering, stderr, stdout) runApp- :: HasLogger app- => (forall b. (app -> IO b) -> IO b)+ :: (forall b. (app -> IO b) -> IO b) -> AppT app IO a -> IO a runApp loadApp action = do@@ -214,7 +213,7 @@ hSetBuffering stderr LineBuffering newtype AppT app m a = AppT- { unAppT :: ReaderT app (LoggingT (ResourceT m)) a+ { unAppT :: ReaderT app (ResourceT m) a } deriving newtype ( Functor@@ -225,21 +224,18 @@ , MonadThrow , MonadCatch , MonadMask- , MonadLogger- , MonadLoggerIO , MonadResource , MonadReader app )+ deriving (MonadLogger, MonadLoggerIO) via WithLogger app (ResourceT m) +instance MonadTrans (AppT app) where+ lift = AppT . lift . lift+ instance PrimMonad m => PrimMonad (AppT app m) where type PrimState (AppT app m) = PrimState m - -- This should really just be `lift . primitive`, but:- --- -- - We'd need `MonadTrans (AppT app)`, which meh- -- - We'd need an orphan `Primitive LoggingT`, which no thanks- --- primitive = AppT . lift . lift . lift . primitive+ primitive = lift . primitive {-# INLINE primitive #-} instance (MonadUnliftIO m, HasTracer app) => MonadHttp (AppT app m) where@@ -259,6 +255,6 @@ where runSqlTx = runDB -runAppT :: (MonadUnliftIO m, HasLogger app) => AppT app m a -> app -> m a+runAppT :: MonadUnliftIO m => AppT app m a -> app -> m a runAppT action app =- runResourceT $ runLoggerLoggingT app $ runReaderT (unAppT action) app+ runResourceT $ runReaderT (unAppT action) app
library/Freckle/App/Test.hs view
@@ -66,7 +66,7 @@ -- - Export @LOG_LEVEL=error@, if this would be quiet enough, or -- - Export @LOG_DESTINATION=@/dev/null@ to fully silence newtype AppExample app a = AppExample- { unAppExample :: ReaderT app (LoggingT IO) a+ { unAppExample :: ReaderT app IO a } deriving newtype ( Applicative@@ -79,9 +79,11 @@ , MonadUnliftIO , MonadReader app , MonadThrow- , MonadLogger , Fail.MonadFail )+ deriving+ (MonadLogger, MonadLoggerIO)+ via WithLogger app IO instance MonadMask (AppExample app) where mask = UnliftIO.mask@@ -106,12 +108,12 @@ type PrimState (AppExample app) = PrimState IO primitive = liftIO . primitive -instance HasLogger app => Example (AppExample app a) where+instance Example (AppExample app a) where type Arg (AppExample app a) = app evaluateExample (AppExample ex) params action = evaluateExample- (action $ \app -> void $ runLoggerLoggingT app $ runReaderT ex app)+ (action $ \app -> void $ runReaderT ex app) params ($ ())
package.yaml view
@@ -1,5 +1,5 @@ name: freckle-app-version: 1.16.0.0+version: 1.17.0.0 maintainer: Freckle Education category: Utils github: freckle/freckle-app