hw-polysemy 0.2.14.9 → 0.2.14.10
raw patch · 3 files changed
+63/−1 lines, 3 filesdep +ulidPVP ok
version bump matches the API change (PVP)
Dependencies added: ulid
API changes (from Hackage documentation)
Files
- hedgehog/HaskellWorks/Polysemy/Hedgehog/Time.hs +22/−0
- hedgehog/HaskellWorks/Polysemy/Hedgehog/Ulid.hs +35/−0
- hw-polysemy.cabal +6/−1
+ hedgehog/HaskellWorks/Polysemy/Hedgehog/Time.hs view
@@ -0,0 +1,22 @@+{-# LANGUAGE NumericUnderscores #-}+{-# LANGUAGE TypeApplications #-}++module HaskellWorks.Polysemy.Hedgehog.Time (+ genPOSIXTime,+) where++import Data.Time.Clock.POSIX (POSIXTime)++import Hedgehog+import qualified Hedgehog.Gen as Gen+import qualified Hedgehog.Range as Range++import HaskellWorks.Prelude++genPOSIXTime :: Gen POSIXTime+genPOSIXTime = do+ -- Generate a random integer within a reasonable range for POSIX time+ -- POSIXTime is a type synonym for NominalDiffTime, which is in seconds+ -- We'll use a range from 0 to a large number of seconds to cover a wide time span+ seconds <- Gen.integral (Range.linear 0 4_102_444_800) -- Up to year 2100+ return $ fromIntegral @Word64 seconds
+ hedgehog/HaskellWorks/Polysemy/Hedgehog/Ulid.hs view
@@ -0,0 +1,35 @@+module HaskellWorks.Polysemy.Hedgehog.Ulid (+ genUlid,+ genUlidRandom,+ genUlidTimeStamp,+) where++import Data.Binary (decodeOrFail)+import qualified Data.ByteString.Lazy as LBS+import Data.ULID (ULID (..))+import Data.ULID.Random (ULIDRandom)+import Data.ULID.TimeStamp (ULIDTimeStamp,+ mkULIDTimeStamp)+import HaskellWorks.Polysemy.Hedgehog.Time++import Hedgehog+import qualified Hedgehog.Gen as Gen+import qualified Hedgehog.Range as Range++import HaskellWorks.Prelude++genUlidRandom :: Gen ULIDRandom+genUlidRandom = do+ bytes <- Gen.bytes (Range.singleton 10) -- 80 bits+ let lazyBytes = LBS.fromStrict bytes+ case decodeOrFail lazyBytes of+ Left (_, _, err) -> fail $ "Failed to decode ULIDRandom: " <> err -- This shouldn't happen.+ Right (_, _, ulid) -> pure ulid++genUlidTimeStamp :: Gen ULIDTimeStamp+genUlidTimeStamp =+ mkULIDTimeStamp <$> genPOSIXTime++genUlid :: Gen ULID+genUlid =+ ULID <$> genUlidTimeStamp <*> genUlidRandom
hw-polysemy.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.4 name: hw-polysemy-version: 0.2.14.9+version: 0.2.14.10 synopsis: Opinionated polysemy library description: Opinionated polysemy library. license: Apache-2.0@@ -54,6 +54,7 @@ common text { build-depends: text < 3 } common time { build-depends: time < 2 } common transformers { build-depends: transformers < 0.7 }+common ulid { build-depends: ulid < 0.4 } common unliftio { build-depends: unliftio < 0.3 } common yaml { build-depends: yaml < 0.12 } @@ -172,6 +173,7 @@ aeson, aeson-pretty, async,+ binary, bytestring, contravariant, Diff,@@ -192,6 +194,7 @@ text, time, transformers,+ ulid, yaml, visibility: public exposed-modules: HaskellWorks.Polysemy.Hedgehog@@ -206,6 +209,8 @@ HaskellWorks.Polysemy.Hedgehog.Process.Internal HaskellWorks.Polysemy.Hedgehog.Property HaskellWorks.Polysemy.Hedgehog.Test+ HaskellWorks.Polysemy.Hedgehog.Time+ HaskellWorks.Polysemy.Hedgehog.Ulid HaskellWorks.Polysemy.Hedgehog.Workspace HaskellWorks.Polysemy.Hedgehog.Workspace.Types hs-source-dirs: hedgehog