packages feed

hask-redis-mux-0.1.0.1: hask-redis-mux.cabal

cabal-version:      3.0
name:               hask-redis-mux
version:            0.1.0.1
synopsis:           A RESP protocol implementation and multiplexed Redis client library
description:
    hask-redis-mux provides a full RESP protocol parser, Redis client with TLS support,
    CRC16 hash slot computation, and a multiplexed Redis Cluster client with connection
    pooling and automatic topology discovery.
license:            MIT
license-file:       LICENSE
author:             Seth Speaks
maintainer:         sspeaks610@gmail.com
category:           Network
build-type:         Simple
extra-doc-files:    CHANGELOG.md
                  , README.md
extra-source-files: lib/crc16/crc16.c
                  , data/cluster_slot_mapping.txt
homepage:           https://github.com/sspeaks/redis-client
bug-reports:        https://github.com/sspeaks/redis-client/issues
tested-with:        GHC == 9.10.3

source-repository head
    type:     git
    location: https://github.com/sspeaks/redis-client.git

-- ---------------------------------------------------------------------------
-- Common stanzas
-- ---------------------------------------------------------------------------

common defaults
    default-language: GHC2021
    ghc-options:      -Wall -O2
    build-depends:    base >=4.19 && <4.22

common test-defaults
    import:           defaults
    ghc-options:      -threaded -rtsopts "-with-rtsopts=-N -H1024M -A128m -n8m -qb"
    build-depends:    hspec >=2.11 && <2.12
    hs-source-dirs:   test

-- ---------------------------------------------------------------------------
-- Libraries
-- ---------------------------------------------------------------------------

library
    import:           defaults
    reexported-modules:
        Database.Redis.Resp
      , Database.Redis.FromResp
      , Database.Redis.RedisError
      , Database.Redis.Client
      , Database.Redis.Crc16
      , Database.Redis.Command
      , Database.Redis.Cluster
      , Database.Redis.Cluster.Client
      , Database.Redis.Cluster.Commands
      , Database.Redis.Cluster.SlotMapping
      , Database.Redis.Cluster.ConnectionPool
      , Database.Redis.Connector
      , Database.Redis.Internal.MultiplexPool
      , Database.Redis.Internal.Multiplexer
      , Database.Redis.Standalone
      , Database.Redis
    build-depends:    resp
                    , client
                    , crc16
                    , redis-command-client
                    , cluster
                    , redis

library resp
    import:           defaults
    hs-source-dirs:   lib/resp
    exposed-modules:  Database.Redis.Resp
    build-depends:    attoparsec >=0.14 && <0.15
                    , bytestring >=0.12 && <0.13
                    , containers >=0.6 && <0.8

library client
    import:           defaults
    hs-source-dirs:   lib/client
    exposed-modules:  Database.Redis.Client
    build-depends:    bytestring >=0.12 && <0.13
                    , crypton-x509-system >=1.6 && <1.7
                    , data-default-class >=0.1 && <0.3
                    , dns >=4.2 && <4.3
                    , iproute >=1.7 && <1.8
                    , network >=3.2 && <3.3
                    , tls >=2.1 && <2.2

library crc16
    import:           defaults
    hs-source-dirs:   lib/crc16
    exposed-modules:  Database.Redis.Crc16
    c-sources:        lib/crc16/crc16.c
    build-depends:    bytestring >=0.12 && <0.13

library redis-command-client
    import:           defaults
    hs-source-dirs:   lib/redis-command-client
    exposed-modules:  Database.Redis.Command
                    , Database.Redis.FromResp
                    , Database.Redis.RedisError
    build-depends:    attoparsec >=0.14 && <0.15
                    , bytestring >=0.12 && <0.13
                    , client
                    , mtl >=2.3 && <2.4
                    , resp
                    , text >=2.1 && <2.2

library cluster
    import:           defaults
    hs-source-dirs:   lib/cluster
    exposed-modules:  Database.Redis.Cluster
                    , Database.Redis.Cluster.Client
                    , Database.Redis.Cluster.Commands
                    , Database.Redis.Cluster.SlotMapping
                    , Database.Redis.Cluster.ConnectionPool
                    , Database.Redis.Connector
                    , Database.Redis.Internal.MultiplexPool
                    , Database.Redis.Internal.Multiplexer
                    , Database.Redis.Standalone
    build-depends:    attoparsec >=0.14 && <0.15
                    , bytestring >=0.12 && <0.13
                    , client
                    , containers >=0.6 && <0.8
                    , crc16
                    , file-embed >=0.0.16 && <0.1
                    , mtl >=2.3 && <2.4
                    , redis-command-client
                    , resp
                    , stm >=2.5 && <2.6
                    , time >=1.12 && <1.13
                    , vector >=0.13 && <0.14

library redis
    import:           defaults
    visibility:       public
    hs-source-dirs:   lib/redis
    exposed-modules:  Database.Redis
    build-depends:    bytestring >=0.12 && <0.13
                    , client
                    , cluster
                    , redis-command-client
                    , resp

-- ---------------------------------------------------------------------------
-- Test suites
-- ---------------------------------------------------------------------------

test-suite RespSpec
    import:           test-defaults
    type:             exitcode-stdio-1.0
    main-is:          Spec.hs
    build-depends:    attoparsec >=0.14 && <0.15
                    , bytestring >=0.12 && <0.13
                    , containers >=0.6 && <0.8
                    , redis-command-client
                    , resp

test-suite ClusterSpec
    import:           test-defaults
    type:             exitcode-stdio-1.0
    main-is:          ClusterSpec.hs
    build-depends:    bytestring >=0.12 && <0.13
                    , cluster
                    , resp
                    , time >=1.12 && <1.13

test-suite ClusterCommandSpec
    import:           test-defaults
    type:             exitcode-stdio-1.0
    main-is:          ClusterCommandSpec.hs
    build-depends:    bytestring >=0.12 && <0.13
                    , client
                    , cluster
                    , containers >=0.6 && <0.8
                    , resp
                    , stm >=2.5 && <2.6
                    , time >=1.12 && <1.13
                    , vector >=0.13 && <0.14

test-suite MultiplexerSpec
    import:           test-defaults
    type:             exitcode-stdio-1.0
    main-is:          MultiplexerSpec.hs
    build-depends:    bytestring >=0.12 && <0.13
                    , client
                    , cluster
                    , resp

test-suite FromRespSpec
    import:           test-defaults
    type:             exitcode-stdio-1.0
    main-is:          FromRespSpec.hs
    build-depends:    bytestring >=0.12 && <0.13
                    , redis-command-client
                    , resp
                    , text >=2.1 && <2.2

test-suite MultiplexPoolSpec
    import:           test-defaults
    type:             exitcode-stdio-1.0
    main-is:          MultiplexPoolSpec.hs
    build-depends:    bytestring >=0.12 && <0.13
                    , client
                    , cluster
                    , resp