packages feed

yamlet-aeson-1.0.0.0: yamlet-aeson.cabal

cabal-version:      3.8
build-type:         Simple
name:               yamlet-aeson
version:            1.0.0.0
license:            BSD-3-Clause
license-file:       LICENSE
category:           Text, Data, JSON
maintainer:         andrzej@rybczak.net
author:             Andrzej Rybczak
synopsis:           Use the FromJSON and ToJSON instances of aeson with yamlet.

description:
  Instances of @FromYaml@ and @ToYaml@ of
  <https://hackage.haskell.org/package/yamlet yamlet> for the types that have
  @FromJSON@ and @ToJSON@ instances of
  <https://hackage.haskell.org/package/aeson aeson>, e.g. in a program that
  moves from the yaml package to yamlet. Errors point to the node of the input
  that caused them, and the encoder keeps the order of the fields of a type
  whose instance defines @toEncoding@.

extra-doc-files:
  CHANGELOG.md
  README.md

tested-with: GHC ^>= { 9.2, 9.4, 9.6, 9.8, 9.10, 9.12, 9.14, 10.0 }

bug-reports: https://github.com/arybczak/yamlet/issues
source-repository head
    type:     git
    location: https://github.com/arybczak/yamlet.git
    subdir:   yamlet-aeson

common language
    ghc-options:        -Wall
                        -Werror=missing-deriving-strategies
                        -Werror=name-shadowing
                        -Werror=prepositive-qualified-module
                        -Wno-unticked-promoted-constructors

    default-language:   GHC2021

    default-extensions: DataKinds
                        DeriveAnyClass
                        DerivingStrategies
                        DerivingVia
                        DuplicateRecordFields
                        LambdaCase
                        MultiWayIf
                        NoFieldSelectors
                        OverloadedRecordDot
                        OverloadedStrings
                        TypeFamilies
                        UndecidableInstances

library
    import:         language

    build-depends:    base       >= 4.16 && < 5
                    , aeson      >= 2.3 && < 2.4
                    , bytestring >= 0.11
                    , containers >= 0.6.3.1
                    , scientific >= 0.3.9
                    , text       >= 2.0.2
                    , vector     >= 0.13.1
                    , yamlet     >= 1.0 && < 2

    hs-source-dirs:  src

    exposed-modules: Yamlet.Aeson

test-suite test
    import:         language

    ghc-options:    -threaded -rtsopts

    build-depends:    base
                    , aeson
                    , containers
                    , scientific
                    , tasty
                    , tasty-hunit >= 0.10
                    , tasty-quickcheck >= 0.8.1
                    , text
                    , vector
                    , yamlet
                    , yamlet-aeson

    hs-source-dirs: tests

    type:           exitcode-stdio-1.0
    main-is:        Main.hs

    other-modules:  Yamlet.Aeson.Test.Decode
                    Yamlet.Aeson.Test.Encode
                    Yamlet.Aeson.Test.Helpers
                    Yamlet.Aeson.Test.RoundTrip

test-suite retention
    import:         language

    ghc-options:    -threaded -rtsopts

    build-depends:    base
                    , aeson
                    , ghc-heap
                    , text
                    , yamlet
                    , yamlet-aeson

    hs-source-dirs: tests

    type:           exitcode-stdio-1.0
    main-is:        Retention.hs

    other-modules:  Yamlet.Aeson.Test.Helpers.Thunks

benchmark bench
    import:         language

    ghc-options:    -rtsopts

    build-depends:    base
                    , aeson
                    , bytestring
                    , containers
                    , deepseq
                    , scientific
                    , tasty-bench
                    , text
                    , yaml
                    , yamlet
                    , yamlet-aeson

    hs-source-dirs: bench

    type:           exitcode-stdio-1.0
    main-is:        Main.hs

    other-modules:  Yamlet.Aeson.Bench.Inputs
                    Yamlet.Aeson.Bench.Libraries
                    Yamlet.Aeson.Bench.Types