packages feed

borsh-0.2.0: borsh.cabal

cabal-version:      3.0
name:               borsh
version:            0.2.0
synopsis:           Implementation of BORSH serialisation
description:
  This package provides type classes and combinators for
  serialisation\/deserialisation to\/from [Borsh](https://borsh.io/) format.
  Unlike [CBOR](http://cbor.io/), Borsh is a non self-describing serialisation
  format. It is designed such that any object serialises to a canonical and
  deterministic string of bytes.

  The library supports incremental encoding and incremental decoding, and
  supports the use of the @ST@ monad in the decoder for efficient decoding for
  types such as arrays. However, the library has currently not been optimized
  for speed, and there may well be low-hanging fruit to make it faster.

license:            BSD-3-Clause
license-file:       LICENSE
author:             Edsko de Vries, Finley McIlwaine
maintainer:         edsko@well-typed.com
category:           Codec
build-type:         Simple
extra-doc-files:    CHANGELOG.md
bug-reports:        https://github.com/well-typed/borsh/issues

tested-with:
    GHC == 8.6.5
  , GHC == 8.8.3
  , GHC == 8.10.7
  , GHC == 9.0.2
  , GHC == 9.2.2

source-repository head
  type:     git
  location: https://github.com/well-typed/borsh

common lang
  ghc-options:
      -Wall
      -Wredundant-constraints
  if impl(ghc >= 8.10)
    ghc-options:
      -Wunused-packages
  build-depends:
      base >= 4.12 && < 4.17
  default-language:
      Haskell2010
  default-extensions:
      BangPatterns
      ConstraintKinds
      DataKinds
      DefaultSignatures
      DeriveAnyClass
      DeriveFunctor
      DeriveGeneric
      DeriveTraversable
      DerivingStrategies
      DerivingVia
      FlexibleContexts
      FlexibleInstances
      GADTs
      GeneralizedNewtypeDeriving
      InstanceSigs
      KindSignatures
      LambdaCase
      MultiParamTypeClasses
      NumericUnderscores
      RankNTypes
      ScopedTypeVariables
      StandaloneDeriving
      TupleSections
      TypeApplications
      TypeFamilies
      TypeOperators
      UndecidableInstances

library
  import:
      lang
  exposed-modules:
      Codec.Borsh
      Codec.Borsh.Incremental

      Data.FixedSizeArray
  other-modules:
      Codec.Borsh.Class
      Codec.Borsh.Decoding
      Codec.Borsh.Encoding
      Codec.Borsh.Incremental.Decoder
      Codec.Borsh.Incremental.Located
      Codec.Borsh.Incremental.Monad
      Codec.Borsh.Internal.Util.BitwiseCast
      Codec.Borsh.Internal.Util.ByteString
      Codec.Borsh.Internal.Util.ByteSwap
      Codec.Borsh.Internal.Util.SOP
  hs-source-dirs:
      src
  build-depends:
    , bytestring       >= 0.10 && < 0.12
    , containers       >= 0.6  && < 0.7
    , generics-sop     >= 0.5  && < 0.6
    , sop-core         >= 0.5  && < 0.6
    , text             >= 1.2  && < 2.1

    -- At least 0.13.0.0 necessary for re-exported PrimMonad and PrimState
    , vector           >= 0.13 && < 0.14
    , wide-word        >= 0.1  && < 0.2

test-suite test-borsh
  import:
      lang
  type:
      exitcode-stdio-1.0
  hs-source-dirs:
      test
  main-is:
      Main.hs
  other-modules:
      Test.Codec.Borsh.ExampleType.BTree
      Test.Codec.Borsh.ExampleType.NTree
      Test.Codec.Borsh.ExampleType.SimpleList
      Test.Codec.Borsh.ExampleType.SimpleStructs
      Test.Codec.Borsh.Roundtrip
      Test.Codec.Borsh.Size
      Test.Codec.Borsh.Util.Length
      Test.Codec.Borsh.Util.Orphans
      Test.Codec.Borsh.Util.QuickCheck
      Test.Codec.Borsh.Util.RandomType
      Test.Codec.Borsh.Util.SOP
  build-depends:
    , borsh
    , bytestring
    , containers
    , generics-sop
    , optics-core
    , profunctors
    , QuickCheck
    , quickcheck-instances
    , sop-core
    , tasty
    , tasty-quickcheck
    , text
    , wide-word