packages feed

composite-aeson 0.5.5.0 → 0.6.0.0

raw patch · 4 files changed

+52/−49 lines, 4 filesdep ~aesondep ~composite-basedep ~containersnew-uploader

Dependency ranges changed: aeson, composite-base, containers, contravariant, lens, profunctors, template-haskell, vinyl

Files

composite-aeson.cabal view
@@ -1,13 +1,13 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.31.0.+-- This file has been generated from package.yaml by hpack version 0.31.2. -- -- see: https://github.com/sol/hpack ----- hash: 8d9a0c14fd8218f00a30ca1a388ca7f73e99ec3e5dd977fcbe895c9f9ad35e25+-- hash: bc44f33e46706d10831fe5c7cbd44356a2f9455db48282273e25e9550d6dc57c  name:           composite-aeson-version:        0.5.5.0+version:        0.6.0.0 synopsis:       JSON for Vinyl/Frames records description:    Integration between Aeson and Vinyl/Frames records allowing records to be easily converted to JSON using automatic derivation, explicit formats, or a mix of both. category:       Records@@ -19,86 +19,86 @@ build-type:     Simple  library+  exposed-modules:+      Composite.Aeson+      Composite.Aeson.Base+      Composite.Aeson.CoRecord+      Composite.Aeson.DateTimeFormatUtils+      Composite.Aeson.Enum+      Composite.Aeson.Formats.DateTime+      Composite.Aeson.Formats.Default+      Composite.Aeson.Formats.Generic+      Composite.Aeson.Formats.InternalTH+      Composite.Aeson.Formats.Provided+      Composite.Aeson.Record+      Composite.Aeson.TH+  other-modules:+      Paths_composite_aeson   hs-source-dirs:       src   default-extensions: DataKinds FlexibleContexts FlexibleInstances GeneralizedNewtypeDeriving LambdaCase MultiParamTypeClasses MultiWayIf OverloadedStrings PatternSynonyms PolyKinds QuasiQuotes RankNTypes ScopedTypeVariables StandaloneDeriving StrictData TemplateHaskell TupleSections TypeApplications TypeFamilies TypeOperators ViewPatterns   ghc-options: -Wall -O2   build-depends:-      aeson >=1.1.2.0 && <1.4+      aeson >=1.1.2.0 && <1.5     , aeson-better-errors >=0.9.1.0 && <0.10     , base >=4.7 && <5-    , composite-base >=0.5.3.0 && <0.6-    , containers >=0.5.7.0 && <0.6-    , contravariant >=1.4 && <1.5+    , composite-base >=0.5.3.0 && <0.7+    , containers >=0.5.7.0 && <0.7+    , contravariant >=1.4 && <1.6     , generic-deriving >=1.11.2 && <1.13     , hashable >=1.2.6.1 && <1.3-    , lens >=4.15.4 && <4.17+    , lens >=4.15.4 && <4.18     , mmorph >=1.0.9 && <1.2     , mtl >=2.2.1 && <2.3-    , profunctors >=5.2.1 && <5.3+    , profunctors >=5.2.1 && <5.4     , scientific >=0.3.5.1 && <0.4     , tagged >=0.8.5 && <0.9-    , template-haskell >=2.11.1.0 && <2.14+    , template-haskell >=2.11.1.0 && <2.15     , text >=1.2.2.2 && <1.3     , time >=1.6.0.1 && <1.9     , unordered-containers >=0.2.8.0 && <0.3     , vector >=0.12.0.1 && <0.13-    , vinyl >=0.5.3 && <0.9-  exposed-modules:-      Composite.Aeson-      Composite.Aeson.Base-      Composite.Aeson.CoRecord-      Composite.Aeson.DateTimeFormatUtils-      Composite.Aeson.Enum-      Composite.Aeson.Formats.DateTime-      Composite.Aeson.Formats.Default-      Composite.Aeson.Formats.Generic-      Composite.Aeson.Formats.InternalTH-      Composite.Aeson.Formats.Provided-      Composite.Aeson.Record-      Composite.Aeson.TH-  other-modules:-      Paths_composite_aeson+    , vinyl >=0.5.3 && <0.12   default-language: Haskell2010  test-suite composite-aeson-test   type: exitcode-stdio-1.0   main-is: Main.hs+  other-modules:+      DateTimeSpec+      EnumSpec+      FieldSpec+      RecordSpec+      THSpec+      TupleSpec+      Paths_composite_aeson   hs-source-dirs:       test   default-extensions: DataKinds FlexibleContexts FlexibleInstances GeneralizedNewtypeDeriving LambdaCase MultiParamTypeClasses MultiWayIf OverloadedStrings PatternSynonyms PolyKinds QuasiQuotes RankNTypes ScopedTypeVariables StandaloneDeriving StrictData TemplateHaskell TupleSections TypeApplications TypeFamilies TypeOperators ViewPatterns   ghc-options: -Wall -O2 -threaded -rtsopts -with-rtsopts=-N -fno-warn-orphans   build-depends:       QuickCheck-    , aeson >=1.1.2.0 && <1.4+    , aeson >=1.1.2.0 && <1.5     , aeson-better-errors >=0.9.1.0 && <0.10     , aeson-qq     , base >=4.7 && <5     , composite-aeson-    , composite-base >=0.5.3.0 && <0.6-    , containers >=0.5.7.0 && <0.6-    , contravariant >=1.4 && <1.5+    , composite-base >=0.5.3.0 && <0.7+    , containers >=0.5.7.0 && <0.7+    , contravariant >=1.4 && <1.6     , generic-deriving >=1.11.2 && <1.13     , hashable >=1.2.6.1 && <1.3     , hspec-    , lens >=4.15.4 && <4.17+    , lens >=4.15.4 && <4.18     , mmorph >=1.0.9 && <1.2     , mtl >=2.2.1 && <2.3-    , profunctors >=5.2.1 && <5.3+    , profunctors >=5.2.1 && <5.4     , scientific >=0.3.5.1 && <0.4     , tagged >=0.8.5 && <0.9-    , template-haskell >=2.11.1.0 && <2.14+    , template-haskell >=2.11.1.0 && <2.15     , text >=1.2.2.2 && <1.3     , time >=1.6.0.1 && <1.9     , unordered-containers >=0.2.8.0 && <0.3     , vector >=0.12.0.1 && <0.13-    , vinyl >=0.5.3 && <0.9-  other-modules:-      DateTimeSpec-      EnumSpec-      FieldSpec-      RecordSpec-      THSpec-      TupleSpec-      Paths_composite_aeson+    , vinyl >=0.5.3 && <0.12   default-language: Haskell2010
src/Composite/Aeson/CoRecord.hs view
@@ -13,7 +13,7 @@ import Data.List.NonEmpty (NonEmpty) import Data.Maybe (catMaybes, fromMaybe, listToMaybe) import Data.Text (Text)-import Data.Vinyl (RecApplicative, rapply, recordToList, (<<&>>))+import Data.Vinyl (RApply, RMap, RecApplicative, RecordToList, rapply, recordToList, (<<&>>)) import Data.Vinyl.Functor (Compose(Compose), (:.), Const(Const), Lift(Lift)) import Data.Vinyl.Lens (type (∈)) import Data.Proxy (Proxy(Proxy))@@ -35,7 +35,8 @@ -- |Make a @'JsonFormat' e (Field rs)@ given how to map the sum type to JSON along with a record with formatters for each value the field could have. fieldJsonFormat   :: forall (rs :: [*]) r' (rs' :: [*]) e.-     (rs ~ (r' ': rs'), RecApplicative rs, RecWithContext rs rs, ReifyNames rs)+     ( rs ~ (r' ': rs'), RApply rs, RMap rs+     , RecApplicative rs, RecWithContext rs rs, RecordToList rs', ReifyNames rs )   => SumStyle -> JsonFormatField e rs -> JsonFormat e (Field rs) fieldJsonFormat sumStyle fmts = jsonSumFormat sumStyle o i   where
src/Composite/Aeson/Record.hs view
@@ -22,7 +22,7 @@ import qualified Data.HashMap.Strict as HM import Data.Proxy (Proxy(Proxy)) import Data.Text (Text, pack)-import Data.Vinyl (Rec((:&), RNil), rmap)+import Data.Vinyl (RMap, Rec((:&), RNil), rmap) import GHC.TypeLits (KnownSymbol, symbolVal)  -- |Function to encode a single field of a record, possibly choosing to elide the field with @Nothing@.@@ -143,7 +143,7 @@ -- |Take a 'JsonFormatRecord' describing how to map a record with field @rs@ to and from JSON and produce a @'JsonFormat' e (Record rs)@. -- -- See 'JsonFormatRecord' for more.-recordJsonFormat :: (RecordToJsonObject rs, RecordFromJson rs) => JsonFormatRecord e rs -> JsonFormat e (Rec Identity rs)+recordJsonFormat :: (RMap rs, RecordToJsonObject rs, RecordFromJson rs) => JsonFormatRecord e rs -> JsonFormat e (Rec Identity rs) recordJsonFormat formatRec =   JsonFormat $ JsonProfunctor     (recordToJson   . rmap (\ (JsonField o _) -> ToField o  ) $ formatRec)
test/RecordSpec.hs view
@@ -5,7 +5,7 @@ import Composite.Aeson.Formats.Provided (stringJsonFormat) import Composite.Aeson.Record (defaultJsonFormatRecord, recordJsonFormat, optionalField) import Composite.TH (withLensesAndProxies)-import Control.Lens (set)+import Control.Lens (Lens', set) import Data.Aeson.BetterErrors (parseValue) import Data.Aeson.QQ (aesonQQ) import Data.Vinyl.Lens (rlens)@@ -21,9 +21,11 @@ recordSuite :: Spec recordSuite =   describe "Record support" $ do-    let defaultFmt, optionalFmt :: JsonFormat Void (Record TestRec)+    let fBar' :: Lens' (Rec f TestRec) (f FBar)+        fBar' = rlens+        defaultFmt, optionalFmt :: JsonFormat Void (Record TestRec)         defaultFmt = recordJsonFormat defaultJsonFormatRecord-        optionalFmt = recordJsonFormat $ set (rlens fBar_) (optionalField stringJsonFormat) defaultJsonFormatRecord+        optionalFmt = recordJsonFormat $ set fBar' (optionalField stringJsonFormat) defaultJsonFormatRecord      it "by default requires all fields" $ do       parseValue (fromJsonWithFormat defaultFmt) [aesonQQ| {foo: 123, bar: "abc"} |] `shouldBe`    Right (123 :*: Just "abc" :*: RNil)