diff --git a/cabal.project b/cabal.project index 084733ba0..49d666427 100644 --- a/cabal.project +++ b/cabal.project @@ -1,7 +1,6 @@ packages: . --- source-repository-package --- type: git --- location: git://github.com/simplex-chat/hs-tls.git --- tag: f6cc753611f80af300401cfae63846e9d7c40d9e --- subdir: core +source-repository-package + type: git + location: git://github.com/simplex-chat/aeson.git + tag: 3eb66f9a68f103b5f1489382aad89f5712a64db7 diff --git a/package.yaml b/package.yaml index c16dd2bdc..470ae7cdd 100644 --- a/package.yaml +++ b/package.yaml @@ -22,12 +22,12 @@ extra-source-files: - CHANGELOG.md dependencies: - - aeson == 1.5.* + - aeson == 2.0.* - ansi-terminal >= 0.10 && < 0.12 - asn1-encoding == 0.9.* - asn1-types == 0.3.* - async == 2.2.* - - attoparsec == 0.13.* + - attoparsec == 0.14.* - base >= 4.7 && < 5 - base64-bytestring >= 1.0 && < 1.3 - bytestring == 0.10.* diff --git a/simplexmq.cabal b/simplexmq.cabal index f99491e46..29a5b22d4 100644 --- a/simplexmq.cabal +++ b/simplexmq.cabal @@ -67,12 +67,12 @@ library ghc-options: -Wall -Wcompat -Werror=incomplete-patterns -Wredundant-constraints -Wincomplete-record-updates -Wincomplete-uni-patterns -Wunused-type-patterns build-depends: QuickCheck ==2.14.* - , aeson ==1.5.* + , aeson ==2.0.* , ansi-terminal >=0.10 && <0.12 , asn1-encoding ==0.9.* , asn1-types ==0.3.* , async ==2.2.* - , attoparsec ==0.13.* + , attoparsec ==0.14.* , base >=4.7 && <5 , base64-bytestring >=1.0 && <1.3 , bytestring ==0.10.* @@ -118,12 +118,12 @@ executable smp-agent ghc-options: -Wall -Wcompat -Werror=incomplete-patterns -Wredundant-constraints -Wincomplete-record-updates -Wincomplete-uni-patterns -Wunused-type-patterns -threaded build-depends: QuickCheck ==2.14.* - , aeson ==1.5.* + , aeson ==2.0.* , ansi-terminal >=0.10 && <0.12 , asn1-encoding ==0.9.* , asn1-types ==0.3.* , async ==2.2.* - , attoparsec ==0.13.* + , attoparsec ==0.14.* , base >=4.7 && <5 , base64-bytestring >=1.0 && <1.3 , bytestring ==0.10.* @@ -170,12 +170,12 @@ executable smp-server ghc-options: -Wall -Wcompat -Werror=incomplete-patterns -Wredundant-constraints -Wincomplete-record-updates -Wincomplete-uni-patterns -Wunused-type-patterns -threaded build-depends: QuickCheck ==2.14.* - , aeson ==1.5.* + , aeson ==2.0.* , ansi-terminal >=0.10 && <0.12 , asn1-encoding ==0.9.* , asn1-types ==0.3.* , async ==2.2.* - , attoparsec ==0.13.* + , attoparsec ==0.14.* , base >=4.7 && <5 , base64-bytestring >=1.0 && <1.3 , bytestring ==0.10.* @@ -238,12 +238,12 @@ test-suite smp-server-test build-depends: HUnit ==1.6.* , QuickCheck ==2.14.* - , aeson ==1.5.* + , aeson ==2.0.* , ansi-terminal >=0.10 && <0.12 , asn1-encoding ==0.9.* , asn1-types ==0.3.* , async ==2.2.* - , attoparsec ==0.13.* + , attoparsec ==0.14.* , base >=4.7 && <5 , base64-bytestring >=1.0 && <1.3 , bytestring ==0.10.* diff --git a/src/Simplex/Messaging/Parsers.hs b/src/Simplex/Messaging/Parsers.hs index 1d4e1c3a4..43125b215 100644 --- a/src/Simplex/Messaging/Parsers.hs +++ b/src/Simplex/Messaging/Parsers.hs @@ -89,10 +89,30 @@ dropPrefix pfx s = let (p, rest) = splitAt (length pfx) s in fstToLower $ if p == pfx then rest else s +enumJSON :: (String -> String) -> J.Options +enumJSON tagModifier = + J.defaultOptions + { J.constructorTagModifier = tagModifier, + J.allNullaryToStringTag = True + } + sumTypeJSON :: (String -> String) -> J.Options -sumTypeJSON tagModifier = +sumTypeJSON = singleFieldJSON + +taggedObjectJSON :: (String -> String) -> J.Options +taggedObjectJSON tagModifier = J.defaultOptions { J.sumEncoding = J.TaggedObject "type" "data", J.constructorTagModifier = tagModifier, + J.nullaryToObject = True, + J.omitNothingFields = True + } + +singleFieldJSON :: (String -> String) -> J.Options +singleFieldJSON tagModifier = + J.defaultOptions + { J.sumEncoding = J.ObjectWithSingleField, + J.constructorTagModifier = tagModifier, + J.nullaryToObject = True, J.omitNothingFields = True } diff --git a/stack.yaml b/stack.yaml index d1c1da250..2529b8385 100644 --- a/stack.yaml +++ b/stack.yaml @@ -38,6 +38,15 @@ extra-deps: - cryptostore-0.2.1.0@sha256:9896e2984f36a1c8790f057fd5ce3da4cbcaf8aa73eb2d9277916886978c5b19,3881 - simple-logger-0.1.0@sha256:be8ede4bd251a9cac776533bae7fb643369ebd826eb948a9a18df1a8dd252ff8,1079 - tls-1.5.7@sha256:1cc30253a9696b65a9cafc0317fbf09f7dcea15e3a145ed6c9c0e28c632fa23a,6991 +# below dependancies are to update Aeson to 2.0.3 + - OneTuple-0.3.1@sha256:a848c096c9d29e82ffdd30a9998aa2931cbccb3a1bc137539d80f6174d31603e,2262 + - attoparsec-0.14.4@sha256:79584bdada8b730cb5138fca8c35c76fbef75fc1d1e01e6b1d815a5ee9843191,5810 + - hashable-1.4.0.2@sha256:0cddd0229d1aac305ea0404409c0bbfab81f075817bd74b8b2929eff58333e55,5005 + - semialign-1.2.0.1@sha256:0e179b4d3a8eff79001d374d6c91917c6221696b9620f0a4d86852fc6a9b9501,2836 + - text-short-0.1.5@sha256:962c6228555debdc46f758d0317dea16e5240d01419b42966674b08a5c3d8fa6,3498 + - time-compat-1.9.6.1@sha256:42d8f2e08e965e1718917d54ad69e1d06bd4b87d66c41dc7410f59313dba4ed1,5033 + - github: simplex-chat/aeson + commit: 3eb66f9a68f103b5f1489382aad89f5712a64db7 # - ../hs-tls/core # - github: simplex-chat/hs-tls # commit: f6cc753611f80af300401cfae63846e9d7c40d9e