wai-feature-flags 0.1.0.1 → 0.1.0.2
raw patch · 4 files changed
+22/−16 lines, 4 filesdep +splitmixdep −randomdep ~aesonPVP ok
version bump matches the API change (PVP)
Dependencies added: splitmix
Dependencies removed: random
Dependency ranges changed: aeson
API changes (from Hackage documentation)
Files
- CHANGELOG.md +4/−0
- LICENSE +1/−1
- src/Network/FeatureFlags.hs +12/−10
- wai-feature-flags.cabal +5/−5
CHANGELOG.md view
@@ -1,3 +1,7 @@+# 0.1.0.2++- Support `aeson-2.0.x`.+ # 0.1.0.1 - Fixed bug where old feature flags would still be shown in the UI.
LICENSE view
@@ -1,6 +1,6 @@ BSD 3-Clause License -Copyright (c) 2020, Jasper Woudenberg+Copyright (c) 2021, Jasper Woudenberg All rights reserved. Redistribution and use in source and binary forms, with or without
src/Network/FeatureFlags.hs view
@@ -80,7 +80,7 @@ import GHC.TypeLits (ErrorMessage (..), KnownSymbol, TypeError, symbolVal) import qualified Network.Wai as Wai import qualified Paths_wai_feature_flags as Paths-import System.Random (StdGen, getStdRandom, randomR)+import System.Random.SplitMix (SMGen, newSMGen, nextWord32) -- FRONTEND @@ -179,13 +179,14 @@ fetch store = do let keys = flags (Proxy :: Proxy flags) configs <- readFlagConfigs keys store- getStdRandom (generate configs)+ smgen <- newSMGen+ pure . fst $ generate configs smgen -- PERCENT -newtype Percent = Percent Word.Word deriving (Aeson.ToJSON, Aeson.FromJSON)+newtype Percent = Percent Word.Word32 deriving (Aeson.ToJSON, Aeson.FromJSON) -percent :: Word.Word -> Percent+percent :: Word.Word32 -> Percent percent = Percent . min 100 -- FLAGS@@ -203,18 +204,18 @@ -- > -- > instance Flags Features class Flags flags where- generate :: Map.HashMap T.Text Percent -> StdGen -> (flags, StdGen)+ generate :: Map.HashMap T.Text Percent -> SMGen -> (flags, SMGen) flags :: proxy flags -> [T.Text] - default generate :: (Generic flags, GFlags (Rep flags)) => Map.HashMap T.Text Percent -> StdGen -> (flags, StdGen)+ default generate :: (Generic flags, GFlags (Rep flags)) => Map.HashMap T.Text Percent -> SMGen -> (flags, SMGen) generate configs gen = first GHC.Generics.to $ ggenerate configs gen default flags :: (Generic flags, GFlags (Rep flags)) => proxy flags -> [T.Text] flags _ = gflags (Proxy :: Proxy (Rep flags)) class GFlags flags where- ggenerate :: Map.HashMap T.Text Percent -> StdGen -> (flags g, StdGen)+ ggenerate :: Map.HashMap T.Text Percent -> SMGen -> (flags g, SMGen) gflags :: proxy flags -> [T.Text] @@ -273,7 +274,8 @@ :$$: 'Text " Flags { showErrorPage :: Bool" :$$: 'Text " , throttleRequests :: Bool }" -roll :: StdGen -> Percent -> (Bool, StdGen)+roll :: SMGen -> Percent -> (Bool, SMGen) roll gen (Percent trueChance) =- let (randomPercentage, gen') = randomR (1, 100) gen- in (trueChance >= randomPercentage, gen')+ let (randomWord32, gen') = nextWord32 gen+ between1And100 = 1 + (randomWord32 `mod` 100)+ in (trueChance >= between1And100, gen')
wai-feature-flags.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 5f636ade04903a879e49301a8a893bccfcc1c21f5b4c225839e027930b4d2e4c+-- hash: 32da1a36f9e6919162db72cf827de32c1168aab52710b63e650c9ef04571daf3 name: wai-feature-flags-version: 0.1.0.1+version: 0.1.0.2 synopsis: Feature flag support for WAI applications. description: Please see the README at <https://github.com/jwoudenberg/wai-feature-flags>. category: Web@@ -15,7 +15,7 @@ bug-reports: https://github.com/jwoudenberg/wai-feature-flags/issues author: Jasper Woudenberg maintainer: mail@jasperwoudenberg.com-copyright: 2020 Jasper Woudenberg+copyright: 2021 Jasper Woudenberg license: BSD3 license-file: LICENSE build-type: Simple@@ -37,10 +37,10 @@ hs-source-dirs: src build-depends:- aeson >=1.2.4.0 && <1.6+ aeson >=1.2.4.0 && <2.1 , base >=4.10.1.0 && <5 , bytestring >=0.10.8.2 && <0.12- , random >=1.1 && <1.3+ , splitmix >=0.0.3 && <0.2 , text >=1.2.3.0 && <1.3 , unordered-containers >=0.2.9.0 && <0.3 , wai >=3.2.2.1 && <3.3