packages feed

shomei-core-0.2.0.0: shomei-core.cabal

cabal-version:      3.0
name:               shomei-core
version:            0.2.0.0
synopsis:
  Transport-agnostic domain: types, commands, events, errors, and effects

description:
  shomei-core is the heart of the Shōmei authentication toolkit: the domain
  model, commands, events, and errors, together with the effectful effect
  interfaces (stores, clock, token generator, signing key) that every workflow
  is written against. It has no database, HTTP, or JWT dependency, so the
  account, session, OAuth, MFA, passkey, and authorization workflows can be
  run against the bundled in-memory interpreter in a test suite and against
  PostgreSQL in production without changing a line. All other Shōmei packages
  depend on it.

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:           Web, Security
tested-with:        GHC ==9.12.4
extra-doc-files:    CHANGELOG.md

-- Embedded at compile time by Shomei.Account.Password.Common.Domain via Template Haskell.
extra-source-files: data/common-passwords.txt

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
    DeriveAnyClass
    DuplicateRecordFields
    MultilineStrings
    OverloadedLabels
    OverloadedRecordDot
    OverloadedStrings
    QualifiedDo
    TemplateHaskell

library
  import:          warnings, shared
  hs-source-dirs:  src
  exposed-modules:
    Shomei.Account.Admin.Workflow
    Shomei.Account.Credential.Domain
    Shomei.Account.Credential.Store
    Shomei.Account.Email.Domain
    Shomei.Account.Lifecycle.Workflow
    Shomei.Account.LoginId.Domain
    Shomei.Account.Notification.Domain
    Shomei.Account.Notification.Store
    Shomei.Account.OneTimeToken.Domain
    Shomei.Account.Password.Breach.Store
    Shomei.Account.Password.Breach.Workflow
    Shomei.Account.Password.Common.Domain
    Shomei.Account.Password.Domain
    Shomei.Account.Password.Hash.Store
    Shomei.Account.PasswordReset.Domain
    Shomei.Account.PasswordReset.Store
    Shomei.Account.User.Domain
    Shomei.Account.User.Store
    Shomei.Account.Verification.Domain
    Shomei.Account.Verification.Store
    Shomei.Audit.Event.Codec
    Shomei.Audit.Event.Domain
    Shomei.Audit.Publisher.Store
    Shomei.Audit.Reader.Store
    Shomei.Authorization.Claims.Domain
    Shomei.Authorization.Claims.Store
    Shomei.Authorization.Role.Store
    Shomei.Authorization.Role.Workflow
    Shomei.Authorization.Scope.Domain
    Shomei.Config
    Shomei.Delegation.Workflow
    Shomei.Error
    Shomei.Id
    Shomei.Mfa.RecoveryCode.Store
    Shomei.Mfa.Totp.Algorithm
    Shomei.Mfa.Totp.Domain
    Shomei.Mfa.Totp.Store
    Shomei.Mfa.Totp.Workflow
    Shomei.Mfa.Workflow
    Shomei.OAuth.AuthorizationCode.Domain
    Shomei.OAuth.AuthorizationCode.Store
    Shomei.OAuth.Authorize.Workflow
    Shomei.OAuth.Client.Domain
    Shomei.OAuth.Client.Store
    Shomei.OAuth.Client.Workflow
    Shomei.OAuth.IdToken.Domain
    Shomei.OAuth.Revocation.Domain
    Shomei.OAuth.TokenExchange.Workflow
    Shomei.OAuth.TokenGrant.Workflow
    Shomei.Passkey.Ceremony.Port
    Shomei.Passkey.Ceremony.Store
    Shomei.Passkey.Domain
    Shomei.Passkey.Store
    Shomei.Passkey.Workflow
    Shomei.Prelude
    Shomei.ServiceAccount.ClientCredentials.Workflow
    Shomei.ServiceAccount.Domain
    Shomei.ServiceAccount.Secret
    Shomei.ServiceAccount.Store
    Shomei.Session.Authentication.Workflow
    Shomei.Session.Command
    Shomei.Session.Domain
    Shomei.Session.LoginAttempt.Domain
    Shomei.Session.LoginAttempt.Store
    Shomei.Session.LoginAttempt.Workflow
    Shomei.Session.RefreshToken.Domain
    Shomei.Session.RefreshToken.Store
    Shomei.Session.Store
    Shomei.Session.Token.Domain
    Shomei.Session.Token.Generator
    Shomei.Session.UnitOfWork.Store
    Shomei.Session.Workflow
    Shomei.SigningKey.Domain
    Shomei.SigningKey.Signer
    Shomei.SigningKey.Store
    Shomei.SigningKey.Verifier
    Shomei.Test.InMemory
    Shomei.Time.Store

  build-depends:
    , aeson           >=2.1    && <2.3
    , base            >=4.18   && <5
    , base64          >=1.0    && <1.1
    , bytestring      >=0.11   && <0.13
    , containers      >=0.6    && <0.9
    , crypton         >=1.1    && <1.2
    , effectful       >=2.5    && <2.8
    , effectful-core  >=2.5    && <2.8
    , file-embed      >=0.0.15 && <0.0.17
    , generic-lens    >=2.2    && <2.4
    , http-api-data   >=0.6    && <0.8
    , lens            >=5.2    && <5.4
    , mmzk-typeid     >=0.7    && <0.8
    , ram             >=0.22   && <0.23
    , text            >=2.0    && <2.2
    , time            >=1.12   && <1.15
    , uuid            >=1.3    && <1.4

test-suite shomei-core-test
  import:         warnings, shared
  type:           exitcode-stdio-1.0
  hs-source-dirs: test
  main-is:        Main.hs
  ghc-options:    -threaded -rtsopts -with-rtsopts=-N
  other-modules:
    Shomei.Account.Admin.WorkflowSpec
    Shomei.Account.Lifecycle.CostSpec
    Shomei.Account.Password.DomainSpec
    Shomei.Account.Verification.WorkflowSpec
    Shomei.AccountSpec
    Shomei.Audit.Event.CodecSpec
    Shomei.Authorization.Role.WorkflowSpec
    Shomei.BreachSpec
    Shomei.Delegation.WorkflowSpec
    Shomei.LockoutSpec
    Shomei.Mfa.Totp.AlgorithmSpec
    Shomei.Mfa.Totp.StoreSpec
    Shomei.Mfa.WorkflowSpec
    Shomei.OAuth.Authorize.WorkflowSpec
    Shomei.OAuth.Client.WorkflowSpec
    Shomei.OAuth.Revocation.DomainSpec
    Shomei.OAuth.TokenExchange.WorkflowSpec
    Shomei.OAuth.TokenGrant.WorkflowSpec
    Shomei.OAuthClientStoreSpec
    Shomei.OAuthCodeStoreSpec
    Shomei.Passkey.WorkflowSpec
    Shomei.PasskeyStoreSpec
    Shomei.ServiceAccount.ClientCredentials.WorkflowSpec
    Shomei.ServiceAccountStoreSpec
    Shomei.Session.Authentication.ConcurrencySpec
    Shomei.Session.Authentication.TimingSpec
    Shomei.Session.Authentication.WorkflowSpec
    Shomei.WebAuthnCeremonySpec

  build-depends:
    , aeson           >=2.1      && <2.3
    , async           >=2.2      && <2.3
    , base            >=4.18     && <5
    , bytestring      >=0.11     && <0.13
    , containers      >=0.6      && <0.9
    , effectful       >=2.5      && <2.8
    , effectful-core  >=2.5      && <2.8
    , generic-lens    >=2.2      && <2.4
    , shomei-core     ^>=0.2.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