cabal-version: 3.0 name: shomei-core version: 0.1.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.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.IdToken.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.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.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.TokenExchange.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.1.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