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