{-|
Module      : Control.Concurrent.Async.Refresh.Prelude
Description : Prelude for the async-refresh package.
Copyright   : (c) Moritz Schulte, 2017
License     : BSD3
Maintainer  : mtesseract@silverratio.net
Stability   : experimental
Portability : POSIX
-}

module Control.Concurrent.Async.Refresh.Prelude
  ( module Prelude
  , module Control.Exception.Safe
  , module Formatting
  , module Control.Monad.Logger
  , module UnliftIO.Async
  , threadDelay
  , Text
  , fromMaybe
  , forever, void
  , MonadIO
  , undefined
  , tshow
  ) where

import           Control.Exception.Safe
import           Control.Monad
import           Control.Monad.IO.Class
import           Control.Monad.Logger
import           Data.Maybe             (fromMaybe)
import           Data.Text              (Text)
import qualified Data.Text
import           Formatting
import           Prelude                hiding (head, tail, undefined)
import qualified Prelude
import           UnliftIO.Async
import           UnliftIO.Concurrent

-- | Version of 'undefined' with a deprecated pragma.
undefined :: a
undefined = Prelude.undefined
{-# DEPRECATED undefined "Don't use 'undefined' in production code" #-}

-- | Modern version of 'Prelude.show' producing 'Text' instead of
-- 'String'.
tshow :: Show a => a -> Text
tshow = Data.Text.pack . show