packages feed

typed-protocols-1.2.0.0: typed-protocols.cabal

cabal-version:       3.4
name:                typed-protocols
version:             1.2.0.0
synopsis:            A framework for strongly typed protocols
description:         A robust session type framework which supports protocol pipelining.
                     Haddocks are published [here](https://input-output-hk.github.io/typed-protocols/)
license:             Apache-2.0
license-files:       LICENSE NOTICE
copyright:           2019-2025 Input Output Global Inc (IOG)
author:              Alexander Vieth, Duncan Coutts, Marcin Szamotulski
maintainer:          alex@well-typed.com, duncan@well-typed.com, marcin.szamotulski@iohk.io
category:            Control
build-type:          Simple
tested-with:         GHC == {9.6, 9.8, 9.10, 9.12}
extra-doc-files:     CHANGELOG.md
                     README.md

-- Minimal GHC setup, additional extensions are enabled per package (e.g.
-- pervasive type level extensions in the code base like `GADTs` or
-- `DataKinds`, etc), or per module (e.g. `CPP` or other more exotic ones).
common GHC
  default-language:   GHC2021
  default-extensions: LambdaCase
  ghc-options:       -Wall
                     -Wno-unticked-promoted-constructors
                     -Wcompat
                     -Wincomplete-uni-patterns
                     -Wincomplete-record-updates
                     -Wpartial-fields
                     -Widentities
                     -Wredundant-constraints
                     -Wunused-packages

library
  import:             GHC
  exposed-modules:    Network.TypedProtocol
                    , Network.TypedProtocol.Core
                    , Network.TypedProtocol.Peer
                    , Network.TypedProtocol.Peer.Client
                    , Network.TypedProtocol.Peer.Server
                    , Network.TypedProtocol.Codec
                    , Network.TypedProtocol.Driver
                    , Network.TypedProtocol.Proofs
  other-modules:      Network.TypedProtocol.Lemmas
  build-depends:      base >=4.12 && <4.22,
                      deepseq,
                      io-classes:io-classes ^>= 1.8,
                      singletons ^>= 3.0
  hs-source-dirs:     src
  default-extensions: DataKinds
                      GADTs

library codec-properties
  import:             GHC
  visibility:         public
  exposed-modules:    Network.TypedProtocol.Codec.Properties
                      Network.TypedProtocol.Stateful.Codec.Properties
  other-modules:      Test.QuickCheck.Monoids.Compat
  build-depends:      base >=4.12 && <4.22,
                      typed-protocols:{stateful, typed-protocols},
                      QuickCheck
  hs-source-dirs:     properties
  default-extensions: GADTs
                      ImportQualifiedPost

library cborg
  import:             GHC
  visibility:         public
  exposed-modules:    Network.TypedProtocol.Codec.CBOR
  build-depends:      base,
                      bytestring      >=0.10  && <0.13,
                      cborg           >=0.2.1 && <0.3,

                      io-classes:io-classes,
                      typed-protocols:typed-protocols
  hs-source-dirs:     cborg

library stateful
  import:             GHC
  visibility:         public
  exposed-modules:    Network.TypedProtocol.Stateful.Peer
                    , Network.TypedProtocol.Stateful.Peer.Client
                    , Network.TypedProtocol.Stateful.Peer.Server
                    , Network.TypedProtocol.Stateful.Driver
                    , Network.TypedProtocol.Stateful.Proofs
                    , Network.TypedProtocol.Stateful.Codec
  build-depends:      base,
                      deepseq,
                      singletons,
                      io-classes:io-classes,
                      typed-protocols:typed-protocols
  hs-source-dirs:     stateful
  default-extensions: DataKinds
                      GADTs
                      ImportQualifiedPost

library stateful-cborg
  import:             GHC
  visibility:         public
  exposed-modules:    Network.TypedProtocol.Stateful.Codec.CBOR

  build-depends:      base,
                      bytestring,
                      cborg,

                      io-classes:io-classes,
                      typed-protocols:{typed-protocols,cborg,stateful}
  hs-source-dirs:     stateful-cborg
  default-extensions: ImportQualifiedPost

library examples
  import:             GHC
  visibility:         public
  exposed-modules:    Network.TypedProtocol.Channel
                    , Network.TypedProtocol.Driver.Simple

                    , Network.TypedProtocol.PingPong.Type
                    , Network.TypedProtocol.PingPong.Client
                    , Network.TypedProtocol.PingPong.Server
                    , Network.TypedProtocol.PingPong.Codec
                    , Network.TypedProtocol.PingPong.Codec.CBOR
                    , Network.TypedProtocol.PingPong.Examples

                    , Network.TypedProtocol.ReqResp.Type
                    , Network.TypedProtocol.ReqResp.Client
                    , Network.TypedProtocol.ReqResp.Server
                    , Network.TypedProtocol.ReqResp.Codec
                    , Network.TypedProtocol.ReqResp.Codec.CBOR
                    , Network.TypedProtocol.ReqResp.Examples

                    , Network.TypedProtocol.ReqResp2.Type
                    , Network.TypedProtocol.ReqResp2.Client

                    , Network.TypedProtocol.Stateful.ReqResp.Type
                    , Network.TypedProtocol.Stateful.ReqResp.Client
                    , Network.TypedProtocol.Stateful.ReqResp.Server
                    , Network.TypedProtocol.Stateful.ReqResp.Codec
                    , Network.TypedProtocol.Stateful.ReqResp.Examples

                    , Network.TypedProtocol.Trans.Wedge
  build-depends:      base,
                      bytestring,
                      cborg,
                      deepseq,
                      serialise,
                      singletons,
                      contra-tracer,
                      io-classes:{io-classes, si-timers},
                      typed-protocols:{typed-protocols,cborg,stateful}
  if !os(windows)
    build-depends:    network
  hs-source-dirs:     examples
  default-extensions: DataKinds
                      GADTs

test-suite test
  import:             GHC
  type:               exitcode-stdio-1.0
  main-is:            Main.hs
  hs-source-dirs:     test
  default-extensions: GADTs
  other-modules:      Network.TypedProtocol.PingPong.Tests
                    , Network.TypedProtocol.ReqResp.Tests
  build-depends:      base
                    , bytestring
                    , contra-tracer
                    , typed-protocols:{typed-protocols,codec-properties,examples}
                    , io-classes:io-classes
                    , io-sim
                    , QuickCheck
                    , tasty
                    , tasty-quickcheck
  if !os(windows)
      build-depends: directory
                   , network
                   , unix
  ghc-options:      -rtsopts