packages feed

shomei-postgres-0.3.0.0: shomei-postgres.cabal

cabal-version: 3.0
name: shomei-postgres
version: 0.3.0.0
synopsis:
  PostgreSQL adapters for Shōmei's store/publisher/signing-key ports

description:
  Production interpreters for Shōmei's effects, written against hasql: a
  PostgreSQL-backed store for users, credentials, sessions, refresh tokens,
  OAuth clients and authorization codes, MFA secrets, recovery codes,
  passkeys, service accounts, roles, and signing keys, plus the audit-event
  publisher and reader. Also provides Argon2id password hashing and SHA-256
  token hashing (crypton, ram), connection pooling, and a transactional
  unit-of-work. The schema itself lives in shomei-migrations.

homepage: https://github.com/shinzui/shomei
bug-reports: https://github.com/shinzui/shomei/issues
license: MIT
license-file: LICENSE
author: Nadeem Bitar
maintainer: nadeem@gmail.com
copyright: 2026 Nadeem Bitar
category: Database, Security
build-type: Simple
tested-with: ghc ==9.12.4
extra-doc-files: CHANGELOG.md

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

common warnings
  ghc-options:
    -Wall
    -Wcompat
    -Widentities
    -Wincomplete-record-updates
    -Wincomplete-uni-patterns
    -Wpartial-fields
    -Wredundant-constraints

common shared
  default-language: GHC2024
  default-extensions:
    BlockArguments
    DataKinds
    DeriveAnyClass
    DuplicateRecordFields
    GADTs
    LambdaCase
    MultilineStrings
    OverloadedLabels
    OverloadedRecordDot
    OverloadedStrings
    QualifiedDo
    RecordWildCards
    TemplateHaskell
    TypeFamilies

library
  import: warnings, shared
  hs-source-dirs: src
  exposed-modules:
    Shomei.Account.Credential.Postgres
    Shomei.Account.Password.Hash.Postgres
    Shomei.Account.PasswordReset.Postgres
    Shomei.Account.User.Postgres
    Shomei.Account.Verification.Postgres
    Shomei.Audit.Publisher.Postgres
    Shomei.Audit.Reader.Postgres
    Shomei.Authorization.Role.Postgres
    Shomei.Mfa.RecoveryCode.Postgres
    Shomei.Mfa.Totp.Postgres
    Shomei.OAuth.AuthorizationCode.Postgres
    Shomei.OAuth.Client.Postgres
    Shomei.Passkey.Ceremony.Postgres
    Shomei.Passkey.Postgres
    Shomei.Persistence.Codec.Postgres
    Shomei.Persistence.Database.Postgres
    Shomei.Persistence.Maintenance.Postgres
    Shomei.Persistence.Pool.Postgres
    Shomei.Persistence.Transaction.Postgres
    Shomei.ServiceAccount.Postgres
    Shomei.Session.LoginAttempt.Postgres
    Shomei.Session.Postgres
    Shomei.Session.RefreshToken.Postgres
    Shomei.Session.UnitOfWork.Postgres
    Shomei.SigningKey.Postgres
    Shomei.Time.Postgres

  build-depends:
    aeson >=2.1 && <2.3,
    base >=4.18 && <5,
    bytestring >=0.11 && <0.13,
    containers >=0.6 && <0.9,
    contravariant-extras >=0.3 && <0.4,
    crypton >=1.1.0 && <1.2,
    effectful >=2.5 && <2.8,
    effectful-core >=2.5 && <2.8,
    hasql >=1.10 && <1.11,
    hasql-transaction >=1.2.1 && <1.3,
    ram >=0.22 && <0.23,
    shomei-core ^>=0.3.0.0,
    stm >=2.5 && <2.6,
    text >=2.0 && <2.2,
    time >=1.12 && <1.15,
    transformers >=0.6 && <0.7,
    uuid >=1.3 && <1.4,

test-suite shomei-postgres-test
  import: warnings, shared
  type: exitcode-stdio-1.0
  main-is: Main.hs
  hs-source-dirs: test
  ghc-options:
    -threaded
    -rtsopts
    -with-rtsopts=-N

  build-depends:
    base >=4.18 && <5,
    bytestring >=0.11 && <0.13,
    containers >=0.6 && <0.9,
    crypton >=1.1.0 && <1.2,
    effectful >=2.5 && <2.8,
    effectful-core >=2.5 && <2.8,
    hasql >=1.10 && <1.11,
    hasql-transaction >=1.2.1 && <1.3,
    ram >=0.22 && <0.23,
    shomei-core ^>=0.3.0.0,
    shomei-migrations:test-support ^>=0.2.0.1,
    shomei-postgres ^>=0.3.0.0,
    tasty >=1.4 && <1.6,
    tasty-hunit >=0.10 && <0.11,
    text >=2.0 && <2.2,
    time >=1.12 && <1.15,
    uuid >=1.3 && <1.4,