packages feed

kiroku-store-0.1.0.0: kiroku-store.cabal

cabal-version:   3.0
name:            kiroku-store
version:         0.1.0.0
synopsis:        High-performance PostgreSQL event store
description:
  Kiroku is a PostgreSQL-backed event store for Haskell applications. It
  provides append, read, link, lifecycle, transaction, subscription, consumer
  group, and observability primitives around immutable domain events.

homepage:        https://github.com/shinzui/kiroku
bug-reports:     https://github.com/shinzui/kiroku/issues
author:          Nadeem Bitar
maintainer:      nadeem@gmail.com
license:         BSD-3-Clause
build-type:      Simple
category:        Database, Eventing
extra-doc-files: CHANGELOG.md

source-repository head
  type:     git
  location: https://github.com/shinzui/kiroku.git

common common
  default-language:   GHC2024
  default-extensions:
    DeriveAnyClass
    DuplicateRecordFields
    OverloadedLabels
    OverloadedStrings

library
  import:          common
  exposed-modules:
    Kiroku.Store
    Kiroku.Store.Append
    Kiroku.Store.Causation
    Kiroku.Store.Connection
    Kiroku.Store.Effect
    Kiroku.Store.Effect.Resource
    Kiroku.Store.Error
    Kiroku.Store.Lifecycle
    Kiroku.Store.Link
    Kiroku.Store.Notification
    Kiroku.Store.Observability
    Kiroku.Store.Read
    Kiroku.Store.Settings
    Kiroku.Store.SQL
    Kiroku.Store.Subscription
    Kiroku.Store.Subscription.Effect
    Kiroku.Store.Subscription.EventPublisher
    Kiroku.Store.Subscription.Stream
    Kiroku.Store.Subscription.Types
    Kiroku.Store.Subscription.Worker
    Kiroku.Store.Transaction
    Kiroku.Store.Types

  build-depends:
    , aeson                 >=2.1  && <2.3
    , async                 >=2.2  && <2.3
    , base                  >=4.18 && <5
    , containers            >=0.6  && <0.8
    , contravariant-extras  >=0.3  && <0.4
    , effectful-core        >=2.4  && <2.7
    , generic-lens          >=2.2  && <2.4
    , hasql                 >=1.10 && <1.11
    , hasql-notifications   >=0.2  && <0.3
    , hasql-pool            >=1.2  && <1.5
    , hasql-transaction     >=1.1  && <1.3
    , lens                  >=5.2  && <5.4
    , mmzk-typeid           >=0.6  && <0.8
    , stm                   >=2.5  && <2.6
    , streamly-core         >=0.3  && <0.4
    , text                  >=2.0  && <2.2
    , time                  >=1.12 && <1.15
    , unliftio-core         >=0.2  && <0.3
    , uuid                  >=1.3  && <1.4
    , vector                >=0.13 && <0.14

  hs-source-dirs:  src

test-suite kiroku-store-test
  import:         common
  type:           exitcode-stdio-1.0
  main-is:        Main.hs
  hs-source-dirs: test
  other-modules:
    Test.Causation
    Test.Concurrency
    Test.ConsumerGroup
    Test.ConsumerGroupEffect
    Test.ConsumerGroupSql
    Test.FailureInjection
    Test.Helpers
    Test.InterpreterHooks
    Test.Properties
    Test.ReadStream
    Test.StreamNameLookup
    Test.Transaction

  ghc-options:    -threaded -rtsopts -with-rtsopts=-N
  build-depends:
    , aeson                 >=2.1  && <2.3
    , async                 >=2.2  && <2.3
    , base                  >=4.18 && <5
    , containers            >=0.6  && <0.8
    , contravariant-extras  >=0.3
    , directory
    , effectful-core        >=2.4  && <2.7
    , ephemeral-pg          >=0.2  && <0.3
    , generic-lens          >=2.2  && <2.4
    , hasql                 >=1.10 && <1.11
    , hasql-pool            >=1.2  && <1.5
    , hasql-transaction     >=1.1  && <1.3
    , hedgehog              >=1.4  && <1.8
    , hspec                 >=2.10 && <2.12
    , hspec-hedgehog        >=0.0  && <0.4
    , kiroku-store
    , kiroku-test-support
    , lens                  >=5.2  && <5.4
    , stm                   >=2.5  && <2.6
    , streamly-core         >=0.3  && <0.4
    , text                  >=2.0  && <2.2
    , time                  >=1.12 && <1.15
    , uuid                  >=1.3  && <1.4
    , vector                >=0.13 && <0.14

benchmark kiroku-store-bench
  import:         common
  type:           exitcode-stdio-1.0
  main-is:        Main.hs
  hs-source-dirs: bench
  ghc-options:    -threaded -rtsopts "-with-rtsopts=-N -A32m"
  build-depends:
    , aeson              >=2.1  && <2.3
    , async              >=2.2  && <2.3
    , base               >=4.18 && <5
    , deepseq            >=1.4
    , ephemeral-pg       >=0.2  && <0.3
    , generic-lens       >=2.2  && <2.4
    , hasql              >=1.10 && <1.11
    , hasql-pool         >=1.2  && <1.5
    , hasql-transaction  >=1.1  && <1.3
    , kiroku-store
    , lens               >=5.2  && <5.4
    , mmzk-typeid        >=0.6
    , tasty-bench        >=0.4
    , text               >=2.0  && <2.2
    , time               >=1.12 && <1.15
    , uuid               >=1.3  && <1.4
    , vector             >=0.13 && <0.14

benchmark kiroku-shibuya-overhead
  import:         common
  type:           exitcode-stdio-1.0
  main-is:        ShibuyaOverhead.hs
  hs-source-dirs: bench
  ghc-options:    -threaded -rtsopts "-with-rtsopts=-N -A32m"
  build-depends:
    , aeson                 >=2.1  && <2.3
    , base                  >=4.18 && <5
    , containers            >=0.6  && <0.8
    , effectful             >=2.4  && <2.7
    , effectful-core        >=2.4  && <2.7
    , ephemeral-pg          >=0.2  && <0.3
    , generic-lens          >=2.2  && <2.4
    , kiroku-store
    , lens                  >=5.2  && <5.4
    , shibuya-core          >=0.5  && <0.6
    , stm                   >=2.5  && <2.6
    , streamly              >=0.11
    , streamly-core         >=0.3  && <0.4
    , text                  >=2.0  && <2.2
    , time                  >=1.12 && <1.15
    , unliftio              >=0.2
    , unordered-containers  >=0.2  && <0.3
    , uuid                  >=1.3  && <1.4

benchmark kiroku-store-bench-explain
  import:         common
  type:           exitcode-stdio-1.0
  main-is:        Explain.hs
  hs-source-dirs: bench
  ghc-options:    -threaded -rtsopts "-with-rtsopts=-N -A32m"
  build-depends:
    , aeson         >=2.1  && <2.3
    , base          >=4.18 && <5
    , bytestring    >=0.11 && <0.13
    , directory     >=1.3
    , ephemeral-pg  >=0.2  && <0.3
    , filepath      >=1.4
    , generic-lens  >=2.2  && <2.4
    , hasql         >=1.10 && <1.11
    , hasql-pool    >=1.2  && <1.5
    , kiroku-store
    , lens          >=5.2  && <5.4
    , text          >=2.0  && <2.2
    , time          >=1.12 && <1.15
    , uuid          >=1.3  && <1.4
    , vector        >=0.13 && <0.14

executable kiroku-consumer-group-example
  import:         common
  main-is:        Main.hs
  hs-source-dirs: example
  ghc-options:    -threaded -rtsopts -with-rtsopts=-N
  build-depends:
    , aeson         >=2.1  && <2.3
    , base          >=4.18 && <5
    , ephemeral-pg  >=0.2  && <0.3
    , generic-lens  >=2.2  && <2.4
    , kiroku-store
    , lens          >=5.2  && <5.4
    , stm           >=2.5  && <2.6
    , text          >=2.0  && <2.2