@yielded/auth 0.1.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +18 -0
- package/dist/Atom.d.mts +5 -0
- package/dist/Atom.mjs +5 -0
- package/dist/Auth.d.mts +9 -0
- package/dist/Auth.mjs +7 -0
- package/dist/AuthContract.d.mts +4 -0
- package/dist/AuthContract.mjs +4 -0
- package/dist/AuthSession.d.mts +82 -0
- package/dist/AuthSession.mjs +138 -0
- package/dist/AuthSession.mjs.map +1 -0
- package/dist/AuthStore.d.mts +68 -0
- package/dist/AuthStore.mjs +194 -0
- package/dist/AuthStore.mjs.map +1 -0
- package/dist/AuthTokenCodec.d.mts +40 -0
- package/dist/AuthTokenCodec.mjs +104 -0
- package/dist/AuthTokenCodec.mjs.map +1 -0
- package/dist/Client.d.mts +2 -0
- package/dist/Client.mjs +2 -0
- package/dist/Cloudflare.d.mts +89 -0
- package/dist/Cloudflare.mjs +166 -0
- package/dist/Cloudflare.mjs.map +1 -0
- package/dist/Drizzle.d.mts +28 -0
- package/dist/Drizzle.mjs +27 -0
- package/dist/DrizzleD1.d.mts +935 -0
- package/dist/DrizzleD1.mjs +29 -0
- package/dist/DrizzleD1.mjs.map +1 -0
- package/dist/DrizzleLibsql.d.mts +2288 -0
- package/dist/DrizzleLibsql.mjs +85 -0
- package/dist/DrizzleLibsql.mjs.map +1 -0
- package/dist/DrizzleMysql2.d.mts +1809 -0
- package/dist/DrizzleMysql2.mjs +55 -0
- package/dist/DrizzleMysql2.mjs.map +1 -0
- package/dist/DrizzlePglite.d.mts +1808 -0
- package/dist/DrizzlePglite.mjs +45 -0
- package/dist/DrizzlePglite.mjs.map +1 -0
- package/dist/DrizzlePostgres.d.mts +1808 -0
- package/dist/DrizzlePostgres.mjs +45 -0
- package/dist/DrizzlePostgres.mjs.map +1 -0
- package/dist/DrizzleSqliteBun.d.mts +2287 -0
- package/dist/DrizzleSqliteBun.mjs +62 -0
- package/dist/DrizzleSqliteBun.mjs.map +1 -0
- package/dist/DrizzleSqliteDo.d.mts +2343 -0
- package/dist/DrizzleSqliteDo.mjs +105 -0
- package/dist/DrizzleSqliteDo.mjs.map +1 -0
- package/dist/DrizzleSqliteNode.d.mts +2287 -0
- package/dist/DrizzleSqliteNode.mjs +62 -0
- package/dist/DrizzleSqliteNode.mjs.map +1 -0
- package/dist/DrizzleSqliteWasm.d.mts +2287 -0
- package/dist/DrizzleSqliteWasm.mjs +62 -0
- package/dist/DrizzleSqliteWasm.mjs.map +1 -0
- package/dist/Email.d.mts +12 -0
- package/dist/Email.mjs +11 -0
- package/dist/EmailOtp.d.mts +42 -0
- package/dist/EmailOtp.mjs +120 -0
- package/dist/EmailOtp.mjs.map +1 -0
- package/dist/EmailOtpSender.d.mts +22 -0
- package/dist/EmailOtpSender.mjs +18 -0
- package/dist/EmailOtpSender.mjs.map +1 -0
- package/dist/Errors.d.mts +55 -0
- package/dist/Errors.mjs +31 -0
- package/dist/Errors.mjs.map +1 -0
- package/dist/GitHub.d.mts +5 -0
- package/dist/GitHub.mjs +4 -0
- package/dist/Hooks.d.mts +6 -0
- package/dist/Hooks.mjs +6 -0
- package/dist/Http.d.mts +12 -0
- package/dist/Http.mjs +12 -0
- package/dist/HttpServer.d.mts +103 -0
- package/dist/HttpServer.mjs +326 -0
- package/dist/HttpServer.mjs.map +1 -0
- package/dist/Identity.d.mts +9 -0
- package/dist/Identity.mjs +9 -0
- package/dist/IdentityResolver.d.mts +16 -0
- package/dist/IdentityResolver.mjs +12 -0
- package/dist/IdentityResolver.mjs.map +1 -0
- package/dist/OAuth.d.mts +36 -0
- package/dist/OAuth.mjs +35 -0
- package/dist/OpenIdClient.d.mts +3 -0
- package/dist/OpenIdClient.mjs +3 -0
- package/dist/OpenIdClientConnected.d.mts +4 -0
- package/dist/OpenIdClientConnected.mjs +3 -0
- package/dist/OperationHttp.d.mts +3 -0
- package/dist/OperationHttp.mjs +3 -0
- package/dist/OperationHttpClient.d.mts +2 -0
- package/dist/OperationHttpClient.mjs +2 -0
- package/dist/OperationHttpServer.d.mts +5 -0
- package/dist/OperationHttpServer.mjs +4 -0
- package/dist/Operations.d.mts +8 -0
- package/dist/Operations.mjs +8 -0
- package/dist/Passkey.d.mts +12 -0
- package/dist/Passkey.mjs +12 -0
- package/dist/PasskeyBrowser.d.mts +4 -0
- package/dist/PasskeyBrowser.mjs +4 -0
- package/dist/PasskeyContract.d.mts +641 -0
- package/dist/PasskeyContract.mjs +174 -0
- package/dist/PasskeyContract.mjs.map +1 -0
- package/dist/PasskeyPassword.d.mts +412 -0
- package/dist/PasskeyPassword.mjs +174 -0
- package/dist/PasskeyPassword.mjs.map +1 -0
- package/dist/PasskeySimpleWebAuthn.d.mts +3 -0
- package/dist/PasskeySimpleWebAuthn.mjs +3 -0
- package/dist/Password.d.mts +19 -0
- package/dist/Password.mjs +17 -0
- package/dist/PasswordAuth.d.mts +45 -0
- package/dist/PasswordAuth.mjs +79 -0
- package/dist/PasswordAuth.mjs.map +1 -0
- package/dist/PasswordCredentialStore.d.mts +46 -0
- package/dist/PasswordCredentialStore.mjs +62 -0
- package/dist/PasswordCredentialStore.mjs.map +1 -0
- package/dist/PasswordHasher.d.mts +31 -0
- package/dist/PasswordHasher.mjs +76 -0
- package/dist/PasswordHasher.mjs.map +1 -0
- package/dist/PhoneOtp.d.mts +11 -0
- package/dist/PhoneOtp.mjs +11 -0
- package/dist/Policy.d.mts +52 -0
- package/dist/Policy.mjs +36 -0
- package/dist/Policy.mjs.map +1 -0
- package/dist/Proofs.d.mts +14 -0
- package/dist/Proofs.mjs +13 -0
- package/dist/Rpc.d.mts +12 -0
- package/dist/Rpc.mjs +11 -0
- package/dist/Rpc.mjs.map +1 -0
- package/dist/Schema.d.mts +160 -0
- package/dist/Schema.mjs +141 -0
- package/dist/Schema.mjs.map +1 -0
- package/dist/SessionContract.d.mts +3 -0
- package/dist/SessionContract.mjs +3 -0
- package/dist/Sessions.d.mts +14 -0
- package/dist/Sessions.mjs +12 -0
- package/dist/Testing.d.mts +7 -0
- package/dist/Testing.mjs +7 -0
- package/dist/Totp.d.mts +8 -0
- package/dist/Totp.mjs +8 -0
- package/dist/TotpContract.d.mts +318 -0
- package/dist/TotpContract.mjs +119 -0
- package/dist/TotpContract.mjs.map +1 -0
- package/dist/WebCrypto.d.mts +28 -0
- package/dist/WebCrypto.mjs +42 -0
- package/dist/WebCrypto.mjs.map +1 -0
- package/dist/Workflows.d.mts +16 -0
- package/dist/Workflows.mjs +11 -0
- package/dist/Workflows.mjs.map +1 -0
- package/dist/atom/AuthAtomLifetime.d.mts +35 -0
- package/dist/atom/AuthAtomLifetime.mjs +50 -0
- package/dist/atom/AuthAtomLifetime.mjs.map +1 -0
- package/dist/atom/AuthAtomWorkflow.d.mts +17 -0
- package/dist/atom/AuthAtomWorkflow.mjs +9 -0
- package/dist/atom/AuthAtomWorkflow.mjs.map +1 -0
- package/dist/atom/client.d.mts +43 -0
- package/dist/atom/client.mjs +168 -0
- package/dist/atom/client.mjs.map +1 -0
- package/dist/atom/operations.d.mts +35 -0
- package/dist/atom/operations.mjs +58 -0
- package/dist/atom/operations.mjs.map +1 -0
- package/dist/atom/scoped-runtime.mjs +151 -0
- package/dist/atom/scoped-runtime.mjs.map +1 -0
- package/dist/auth/Auth.d.mts +7806 -0
- package/dist/auth/Auth.mjs +141 -0
- package/dist/auth/Auth.mjs.map +1 -0
- package/dist/auth/AuthConfigurationError.d.mts +10 -0
- package/dist/auth/AuthConfigurationError.mjs +14 -0
- package/dist/auth/AuthConfigurationError.mjs.map +1 -0
- package/dist/auth/AuthRequest.d.mts +21 -0
- package/dist/auth/AuthRequest.mjs +10 -0
- package/dist/auth/AuthRequest.mjs.map +1 -0
- package/dist/auth/AuthStrategy.d.mts +23 -0
- package/dist/auth/AuthStrategy.mjs +33 -0
- package/dist/auth/AuthStrategy.mjs.map +1 -0
- package/dist/auth/ConsumeDecision.d.mts +11 -0
- package/dist/auth/actions.d.mts +18 -0
- package/dist/auth/actions.mjs +70 -0
- package/dist/auth/actions.mjs.map +1 -0
- package/dist/auth/defaults.mjs +12 -0
- package/dist/auth/defaults.mjs.map +1 -0
- package/dist/auth/definition.d.mts +46 -0
- package/dist/auth/session.d.mts +27 -0
- package/dist/auth/session.mjs +56 -0
- package/dist/auth/session.mjs.map +1 -0
- package/dist/drizzle/D1BatchStatements.d.mts +11 -0
- package/dist/drizzle/D1BatchStatements.mjs +8 -0
- package/dist/drizzle/D1BatchStatements.mjs.map +1 -0
- package/dist/drizzle/PasswordPreparedPostconditions.mjs +12 -0
- package/dist/drizzle/PasswordPreparedPostconditions.mjs.map +1 -0
- package/dist/drizzle/SuppliedService.d.mts +10 -0
- package/dist/drizzle/d1-emails.d.mts +68 -0
- package/dist/drizzle/d1-emails.mjs +580 -0
- package/dist/drizzle/d1-emails.mjs.map +1 -0
- package/dist/drizzle/d1-generated-statement.mjs +79 -0
- package/dist/drizzle/d1-generated-statement.mjs.map +1 -0
- package/dist/drizzle/d1-identity.d.mts +33 -0
- package/dist/drizzle/d1-identity.mjs +120 -0
- package/dist/drizzle/d1-identity.mjs.map +1 -0
- package/dist/drizzle/d1-oauth.d.mts +316 -0
- package/dist/drizzle/d1-oauth.mjs +79 -0
- package/dist/drizzle/d1-oauth.mjs.map +1 -0
- package/dist/drizzle/d1-passkey.d.mts +52 -0
- package/dist/drizzle/d1-passkey.mjs +97 -0
- package/dist/drizzle/d1-passkey.mjs.map +1 -0
- package/dist/drizzle/d1-password-prepared.d.mts +27 -0
- package/dist/drizzle/d1-password-prepared.mjs +464 -0
- package/dist/drizzle/d1-password-prepared.mjs.map +1 -0
- package/dist/drizzle/d1-passwords.d.mts +96 -0
- package/dist/drizzle/d1-passwords.mjs +1008 -0
- package/dist/drizzle/d1-passwords.mjs.map +1 -0
- package/dist/drizzle/d1-phone.d.mts +29 -0
- package/dist/drizzle/d1-phone.mjs +33 -0
- package/dist/drizzle/d1-phone.mjs.map +1 -0
- package/dist/drizzle/d1-planning.d.mts +12 -0
- package/dist/drizzle/d1-planning.mjs +43 -0
- package/dist/drizzle/d1-planning.mjs.map +1 -0
- package/dist/drizzle/d1-proofs.d.mts +88 -0
- package/dist/drizzle/d1-proofs.mjs +833 -0
- package/dist/drizzle/d1-proofs.mjs.map +1 -0
- package/dist/drizzle/d1-sessions.d.mts +77 -0
- package/dist/drizzle/d1-sessions.mjs +970 -0
- package/dist/drizzle/d1-sessions.mjs.map +1 -0
- package/dist/drizzle/d1-totp.d.mts +27 -0
- package/dist/drizzle/d1-totp.mjs +28 -0
- package/dist/drizzle/d1-totp.mjs.map +1 -0
- package/dist/drizzle/email-model.d.mts +352 -0
- package/dist/drizzle/email-model.mjs +21 -0
- package/dist/drizzle/email-model.mjs.map +1 -0
- package/dist/drizzle/email-registration.d.mts +33 -0
- package/dist/drizzle/email-registration.mjs +238 -0
- package/dist/drizzle/email-registration.mjs.map +1 -0
- package/dist/drizzle/email-sql.d.mts +18 -0
- package/dist/drizzle/email-sql.mjs +473 -0
- package/dist/drizzle/email-sql.mjs.map +1 -0
- package/dist/drizzle/email-target.d.mts +28 -0
- package/dist/drizzle/email-target.mjs +75 -0
- package/dist/drizzle/email-target.mjs.map +1 -0
- package/dist/drizzle/model.d.mts +259 -0
- package/dist/drizzle/model.mjs +81 -0
- package/dist/drizzle/model.mjs.map +1 -0
- package/dist/drizzle/mysql-emails.d.mts +82 -0
- package/dist/drizzle/mysql-emails.mjs +38 -0
- package/dist/drizzle/mysql-emails.mjs.map +1 -0
- package/dist/drizzle/mysql-identity.d.mts +24 -0
- package/dist/drizzle/mysql-identity.mjs +95 -0
- package/dist/drizzle/mysql-identity.mjs.map +1 -0
- package/dist/drizzle/mysql-password-prepared.d.mts +32 -0
- package/dist/drizzle/mysql-password-prepared.mjs +16 -0
- package/dist/drizzle/mysql-password-prepared.mjs.map +1 -0
- package/dist/drizzle/mysql-passwords.d.mts +102 -0
- package/dist/drizzle/mysql-passwords.mjs +38 -0
- package/dist/drizzle/mysql-passwords.mjs.map +1 -0
- package/dist/drizzle/mysql-proofs.d.mts +83 -0
- package/dist/drizzle/mysql-proofs.mjs +23 -0
- package/dist/drizzle/mysql-proofs.mjs.map +1 -0
- package/dist/drizzle/mysql-sessions.d.mts +250 -0
- package/dist/drizzle/mysql-sessions.mjs +53 -0
- package/dist/drizzle/mysql-sessions.mjs.map +1 -0
- package/dist/drizzle/mysql.d.mts +73 -0
- package/dist/drizzle/mysql.mjs +221 -0
- package/dist/drizzle/mysql.mjs.map +1 -0
- package/dist/drizzle/oauth-accounts.mjs +361 -0
- package/dist/drizzle/oauth-accounts.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-access.mjs +210 -0
- package/dist/drizzle/oauth-connected-access.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-collection.mjs +202 -0
- package/dist/drizzle/oauth-connected-collection.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-custody.mjs +146 -0
- package/dist/drizzle/oauth-connected-custody.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-drivers.mjs +78 -0
- package/dist/drizzle/oauth-connected-drivers.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-flow.mjs +248 -0
- package/dist/drizzle/oauth-connected-flow.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-input.mjs +105 -0
- package/dist/drizzle/oauth-connected-input.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-maintenance.mjs +215 -0
- package/dist/drizzle/oauth-connected-maintenance.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-management.mjs +228 -0
- package/dist/drizzle/oauth-connected-management.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-model.d.mts +278 -0
- package/dist/drizzle/oauth-connected-model.mjs +22 -0
- package/dist/drizzle/oauth-connected-model.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-reference.d.mts +17 -0
- package/dist/drizzle/oauth-connected-reference.mjs +53 -0
- package/dist/drizzle/oauth-connected-reference.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-settlement.mjs +117 -0
- package/dist/drizzle/oauth-connected-settlement.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-state.d.mts +16 -0
- package/dist/drizzle/oauth-connected-state.mjs +422 -0
- package/dist/drizzle/oauth-connected-state.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-target.d.mts +114 -0
- package/dist/drizzle/oauth-connected-target.mjs +94 -0
- package/dist/drizzle/oauth-connected-target.mjs.map +1 -0
- package/dist/drizzle/oauth-drivers.mjs +53 -0
- package/dist/drizzle/oauth-drivers.mjs.map +1 -0
- package/dist/drizzle/oauth-flow.d.mts +7 -0
- package/dist/drizzle/oauth-flow.mjs +255 -0
- package/dist/drizzle/oauth-flow.mjs.map +1 -0
- package/dist/drizzle/oauth-input.mjs +130 -0
- package/dist/drizzle/oauth-input.mjs.map +1 -0
- package/dist/drizzle/oauth-model.d.mts +468 -0
- package/dist/drizzle/oauth-model.mjs +49 -0
- package/dist/drizzle/oauth-model.mjs.map +1 -0
- package/dist/drizzle/oauth-mysql.mjs +8 -0
- package/dist/drizzle/oauth-mysql.mjs.map +1 -0
- package/dist/drizzle/oauth-owner.d.mts +4 -0
- package/dist/drizzle/oauth-owner.mjs +10 -0
- package/dist/drizzle/oauth-owner.mjs.map +1 -0
- package/dist/drizzle/oauth-registration.d.mts +8 -0
- package/dist/drizzle/oauth-registration.mjs +375 -0
- package/dist/drizzle/oauth-registration.mjs.map +1 -0
- package/dist/drizzle/oauth-state.mjs +109 -0
- package/dist/drizzle/oauth-state.mjs.map +1 -0
- package/dist/drizzle/oauth-target.d.mts +125 -0
- package/dist/drizzle/oauth-target.mjs +252 -0
- package/dist/drizzle/oauth-target.mjs.map +1 -0
- package/dist/drizzle/passkey-admission.mjs +203 -0
- package/dist/drizzle/passkey-admission.mjs.map +1 -0
- package/dist/drizzle/passkey-credentials.mjs +239 -0
- package/dist/drizzle/passkey-credentials.mjs.map +1 -0
- package/dist/drizzle/passkey-drivers.mjs +34 -0
- package/dist/drizzle/passkey-drivers.mjs.map +1 -0
- package/dist/drizzle/passkey-enrollment.mjs +132 -0
- package/dist/drizzle/passkey-enrollment.mjs.map +1 -0
- package/dist/drizzle/passkey-flow.mjs +436 -0
- package/dist/drizzle/passkey-flow.mjs.map +1 -0
- package/dist/drizzle/passkey-management.mjs +225 -0
- package/dist/drizzle/passkey-management.mjs.map +1 -0
- package/dist/drizzle/passkey-model.d.mts +275 -0
- package/dist/drizzle/passkey-model.mjs +36 -0
- package/dist/drizzle/passkey-model.mjs.map +1 -0
- package/dist/drizzle/passkey-registration-ceremony-model.d.mts +50 -0
- package/dist/drizzle/passkey-registration-ceremony-model.mjs +18 -0
- package/dist/drizzle/passkey-registration-ceremony-model.mjs.map +1 -0
- package/dist/drizzle/passkey-registration-ceremony.mjs +124 -0
- package/dist/drizzle/passkey-registration-ceremony.mjs.map +1 -0
- package/dist/drizzle/passkey-registration-custody.mjs +51 -0
- package/dist/drizzle/passkey-registration-custody.mjs.map +1 -0
- package/dist/drizzle/passkey-registration-write.mjs +205 -0
- package/dist/drizzle/passkey-registration-write.mjs.map +1 -0
- package/dist/drizzle/passkey-state.d.mts +5 -0
- package/dist/drizzle/passkey-state.mjs +207 -0
- package/dist/drizzle/passkey-state.mjs.map +1 -0
- package/dist/drizzle/passkey-target.d.mts +16 -0
- package/dist/drizzle/passkey-target.mjs +174 -0
- package/dist/drizzle/passkey-target.mjs.map +1 -0
- package/dist/drizzle/passkey-write-drivers.mjs +33 -0
- package/dist/drizzle/passkey-write-drivers.mjs.map +1 -0
- package/dist/drizzle/passkey-write-model.d.mts +192 -0
- package/dist/drizzle/passkey-write-model.mjs +13 -0
- package/dist/drizzle/passkey-write-model.mjs.map +1 -0
- package/dist/drizzle/passkey-write-state.mjs +326 -0
- package/dist/drizzle/passkey-write-state.mjs.map +1 -0
- package/dist/drizzle/passkey-write-target.d.mts +14 -0
- package/dist/drizzle/passkey-write-target.mjs +185 -0
- package/dist/drizzle/passkey-write-target.mjs.map +1 -0
- package/dist/drizzle/password-model.d.mts +330 -0
- package/dist/drizzle/password-model.mjs +22 -0
- package/dist/drizzle/password-model.mjs.map +1 -0
- package/dist/drizzle/password-prepared-model.d.mts +93 -0
- package/dist/drizzle/password-prepared-model.mjs +11 -0
- package/dist/drizzle/password-prepared-model.mjs.map +1 -0
- package/dist/drizzle/password-prepared-sql.mjs +394 -0
- package/dist/drizzle/password-prepared-sql.mjs.map +1 -0
- package/dist/drizzle/password-prepared-state.mjs +107 -0
- package/dist/drizzle/password-prepared-state.mjs.map +1 -0
- package/dist/drizzle/password-prepared-target.d.mts +12 -0
- package/dist/drizzle/password-prepared-target.mjs +57 -0
- package/dist/drizzle/password-prepared-target.mjs.map +1 -0
- package/dist/drizzle/password-registration.d.mts +23 -0
- package/dist/drizzle/password-registration.mjs +136 -0
- package/dist/drizzle/password-registration.mjs.map +1 -0
- package/dist/drizzle/password-sql.d.mts +20 -0
- package/dist/drizzle/password-sql.mjs +702 -0
- package/dist/drizzle/password-sql.mjs.map +1 -0
- package/dist/drizzle/password-target.d.mts +25 -0
- package/dist/drizzle/password-target.mjs +63 -0
- package/dist/drizzle/password-target.mjs.map +1 -0
- package/dist/drizzle/pg-emails.d.mts +83 -0
- package/dist/drizzle/pg-emails.mjs +38 -0
- package/dist/drizzle/pg-emails.mjs.map +1 -0
- package/dist/drizzle/pg-password-prepared.d.mts +33 -0
- package/dist/drizzle/pg-password-prepared.mjs +16 -0
- package/dist/drizzle/pg-password-prepared.mjs.map +1 -0
- package/dist/drizzle/pg-passwords.d.mts +103 -0
- package/dist/drizzle/pg-passwords.mjs +38 -0
- package/dist/drizzle/pg-passwords.mjs.map +1 -0
- package/dist/drizzle/pg-proofs.d.mts +84 -0
- package/dist/drizzle/pg-proofs.mjs +22 -0
- package/dist/drizzle/pg-proofs.mjs.map +1 -0
- package/dist/drizzle/pg-sessions.d.mts +251 -0
- package/dist/drizzle/pg-sessions.mjs +53 -0
- package/dist/drizzle/pg-sessions.mjs.map +1 -0
- package/dist/drizzle/pg.d.mts +88 -0
- package/dist/drizzle/pg.mjs +294 -0
- package/dist/drizzle/pg.mjs.map +1 -0
- package/dist/drizzle/phone-model.d.mts +117 -0
- package/dist/drizzle/phone-model.mjs +39 -0
- package/dist/drizzle/phone-model.mjs.map +1 -0
- package/dist/drizzle/phone-state.mjs +426 -0
- package/dist/drizzle/phone-state.mjs.map +1 -0
- package/dist/drizzle/phone-target.d.mts +19 -0
- package/dist/drizzle/phone-target.mjs +171 -0
- package/dist/drizzle/phone-target.mjs.map +1 -0
- package/dist/drizzle/proof-model.d.mts +287 -0
- package/dist/drizzle/proof-model.mjs +17 -0
- package/dist/drizzle/proof-model.mjs.map +1 -0
- package/dist/drizzle/proof-sql.d.mts +16 -0
- package/dist/drizzle/proof-sql.mjs +618 -0
- package/dist/drizzle/proof-sql.mjs.map +1 -0
- package/dist/drizzle/proof-target.d.mts +17 -0
- package/dist/drizzle/proof-target.mjs +38 -0
- package/dist/drizzle/proof-target.mjs.map +1 -0
- package/dist/drizzle/session-model.d.mts +201 -0
- package/dist/drizzle/session-model.mjs +19 -0
- package/dist/drizzle/session-model.mjs.map +1 -0
- package/dist/drizzle/session-sql.mjs +732 -0
- package/dist/drizzle/session-sql.mjs.map +1 -0
- package/dist/drizzle/session-target.d.mts +37 -0
- package/dist/drizzle/session-target.mjs +47 -0
- package/dist/drizzle/session-target.mjs.map +1 -0
- package/dist/drizzle/sqlite-emails.mjs +45 -0
- package/dist/drizzle/sqlite-emails.mjs.map +1 -0
- package/dist/drizzle/sqlite-identity.mjs +92 -0
- package/dist/drizzle/sqlite-identity.mjs.map +1 -0
- package/dist/drizzle/sqlite-password-prepared.mjs +21 -0
- package/dist/drizzle/sqlite-password-prepared.mjs.map +1 -0
- package/dist/drizzle/sqlite-passwords.mjs +49 -0
- package/dist/drizzle/sqlite-passwords.mjs.map +1 -0
- package/dist/drizzle/sqlite-proofs.mjs +29 -0
- package/dist/drizzle/sqlite-proofs.mjs.map +1 -0
- package/dist/drizzle/sqlite-sessions.mjs +74 -0
- package/dist/drizzle/sqlite-sessions.mjs.map +1 -0
- package/dist/drizzle/sqlite.d.mts +81 -0
- package/dist/drizzle/sqlite.mjs +220 -0
- package/dist/drizzle/sqlite.mjs.map +1 -0
- package/dist/drizzle/standalone-guard.mjs +19 -0
- package/dist/drizzle/standalone-guard.mjs.map +1 -0
- package/dist/drizzle/step-up-model.d.mts +65 -0
- package/dist/drizzle/step-up-model.mjs +9 -0
- package/dist/drizzle/step-up-model.mjs.map +1 -0
- package/dist/drizzle/step-up-state.mjs +34 -0
- package/dist/drizzle/step-up-state.mjs.map +1 -0
- package/dist/drizzle/totp-model.d.mts +85 -0
- package/dist/drizzle/totp-model.mjs +13 -0
- package/dist/drizzle/totp-model.mjs.map +1 -0
- package/dist/drizzle/totp-state.d.mts +39 -0
- package/dist/drizzle/totp-state.mjs +288 -0
- package/dist/drizzle/totp-state.mjs.map +1 -0
- package/dist/drizzle/totp-target.d.mts +16 -0
- package/dist/drizzle/totp-target.mjs +83 -0
- package/dist/drizzle/totp-target.mjs.map +1 -0
- package/dist/drizzle/transaction-execution.d.mts +20 -0
- package/dist/drizzle/transaction-execution.mjs +111 -0
- package/dist/drizzle/transaction-execution.mjs.map +1 -0
- package/dist/drizzle/transaction-mysql.mjs +46 -0
- package/dist/drizzle/transaction-mysql.mjs.map +1 -0
- package/dist/drizzle/transaction-owner.d.mts +6 -0
- package/dist/drizzle/transaction-owner.mjs +252 -0
- package/dist/drizzle/transaction-owner.mjs.map +1 -0
- package/dist/email/EmailActionEvidence.d.mts +33 -0
- package/dist/email/EmailActionEvidence.mjs +15 -0
- package/dist/email/EmailActionEvidence.mjs.map +1 -0
- package/dist/email/EmailAddressPersistence.d.mts +63 -0
- package/dist/email/EmailAddressPersistence.mjs +19 -0
- package/dist/email/EmailAddressPersistence.mjs.map +1 -0
- package/dist/email/EmailIdentifierNotifier.d.mts +30 -0
- package/dist/email/EmailIdentifierNotifier.mjs +31 -0
- package/dist/email/EmailIdentifierNotifier.mjs.map +1 -0
- package/dist/email/EmailReturnTargets.d.mts +19 -0
- package/dist/email/EmailReturnTargets.mjs +29 -0
- package/dist/email/EmailReturnTargets.mjs.map +1 -0
- package/dist/email/EmailSignInTargets.d.mts +20 -0
- package/dist/email/EmailSignInTargets.mjs +12 -0
- package/dist/email/EmailSignInTargets.mjs.map +1 -0
- package/dist/email/addresses.d.mts +33 -0
- package/dist/email/addresses.mjs +404 -0
- package/dist/email/addresses.mjs.map +1 -0
- package/dist/email/definition.d.mts +10153 -0
- package/dist/email/definition.mjs +111 -0
- package/dist/email/definition.mjs.map +1 -0
- package/dist/email/errors.d.mts +15 -0
- package/dist/email/errors.mjs +11 -0
- package/dist/email/errors.mjs.map +1 -0
- package/dist/email/magicLink.d.mts +33 -0
- package/dist/email/magicLink.mjs +58 -0
- package/dist/email/magicLink.mjs.map +1 -0
- package/dist/email/models.d.mts +56 -0
- package/dist/email/models.mjs +31 -0
- package/dist/email/models.mjs.map +1 -0
- package/dist/email/module.d.mts +22296 -0
- package/dist/email/module.mjs +415 -0
- package/dist/email/module.mjs.map +1 -0
- package/dist/email/registration.d.mts +28 -0
- package/dist/email/registration.mjs +243 -0
- package/dist/email/registration.mjs.map +1 -0
- package/dist/email/snapshot.mjs +37 -0
- package/dist/email/snapshot.mjs.map +1 -0
- package/dist/hooks/LifecycleHooks.d.mts +34 -0
- package/dist/hooks/LifecycleHooks.mjs +74 -0
- package/dist/hooks/LifecycleHooks.mjs.map +1 -0
- package/dist/hooks/commit.d.mts +66 -0
- package/dist/hooks/commit.mjs +136 -0
- package/dist/hooks/commit.mjs.map +1 -0
- package/dist/hooks/models.d.mts +51 -0
- package/dist/hooks/models.mjs +87 -0
- package/dist/hooks/models.mjs.map +1 -0
- package/dist/hooks/plugins.d.mts +36 -0
- package/dist/hooks/plugins.mjs +60 -0
- package/dist/hooks/plugins.mjs.map +1 -0
- package/dist/hooks/transactions.d.mts +31 -0
- package/dist/hooks/transactions.mjs +38 -0
- package/dist/hooks/transactions.mjs.map +1 -0
- package/dist/http/auth-api.d.mts +9 -0
- package/dist/http/auth-api.mjs +13 -0
- package/dist/http/auth-api.mjs.map +1 -0
- package/dist/http/auth-contract.d.mts +84 -0
- package/dist/http/auth-contract.mjs +75 -0
- package/dist/http/auth-contract.mjs.map +1 -0
- package/dist/http/auth-http.d.mts +216 -0
- package/dist/http/auth-http.mjs +184 -0
- package/dist/http/auth-http.mjs.map +1 -0
- package/dist/http/endpoints/get-session.d.mts +8 -0
- package/dist/http/endpoints/get-session.mjs +12 -0
- package/dist/http/endpoints/get-session.mjs.map +1 -0
- package/dist/http/endpoints/password-sign-in.d.mts +8 -0
- package/dist/http/endpoints/password-sign-in.mjs +18 -0
- package/dist/http/endpoints/password-sign-in.mjs.map +1 -0
- package/dist/http/endpoints/request-email-otp.d.mts +8 -0
- package/dist/http/endpoints/request-email-otp.mjs +17 -0
- package/dist/http/endpoints/request-email-otp.mjs.map +1 -0
- package/dist/http/endpoints/set-password.d.mts +9 -0
- package/dist/http/endpoints/set-password.mjs +19 -0
- package/dist/http/endpoints/set-password.mjs.map +1 -0
- package/dist/http/endpoints/sign-out.d.mts +6 -0
- package/dist/http/endpoints/sign-out.mjs +7 -0
- package/dist/http/endpoints/sign-out.mjs.map +1 -0
- package/dist/http/endpoints/verify-email-otp.d.mts +9 -0
- package/dist/http/endpoints/verify-email-otp.mjs +18 -0
- package/dist/http/endpoints/verify-email-otp.mjs.map +1 -0
- package/dist/http/models.d.mts +49 -0
- package/dist/http/models.mjs +35 -0
- package/dist/http/models.mjs.map +1 -0
- package/dist/http/security.d.mts +91 -0
- package/dist/http/security.mjs +77 -0
- package/dist/http/security.mjs.map +1 -0
- package/dist/http/session-contract.d.mts +303 -0
- package/dist/http/session-contract.mjs +38 -0
- package/dist/http/session-contract.mjs.map +1 -0
- package/dist/http-operation/OperationHttpInvocation.d.mts +16 -0
- package/dist/http-operation/OperationHttpInvocation.mjs +11 -0
- package/dist/http-operation/OperationHttpInvocation.mjs.map +1 -0
- package/dist/http-operation/OperationHttpServerConfig.d.mts +18 -0
- package/dist/http-operation/OperationHttpServerConfig.mjs +72 -0
- package/dist/http-operation/OperationHttpServerConfig.mjs.map +1 -0
- package/dist/http-operation/auth-client.d.mts +75 -0
- package/dist/http-operation/auth-client.mjs +116 -0
- package/dist/http-operation/auth-client.mjs.map +1 -0
- package/dist/http-operation/client.d.mts +50 -0
- package/dist/http-operation/client.mjs +188 -0
- package/dist/http-operation/client.mjs.map +1 -0
- package/dist/http-operation/configuration-schema.mjs +19 -0
- package/dist/http-operation/configuration-schema.mjs.map +1 -0
- package/dist/http-operation/contract.d.mts +40 -0
- package/dist/http-operation/contract.mjs +37 -0
- package/dist/http-operation/contract.mjs.map +1 -0
- package/dist/http-operation/errors.d.mts +13 -0
- package/dist/http-operation/errors.mjs +31 -0
- package/dist/http-operation/errors.mjs.map +1 -0
- package/dist/http-operation/models.d.mts +32 -0
- package/dist/http-operation/models.mjs +14 -0
- package/dist/http-operation/models.mjs.map +1 -0
- package/dist/http-operation/private.mjs +35 -0
- package/dist/http-operation/private.mjs.map +1 -0
- package/dist/http-operation/security.mjs +58 -0
- package/dist/http-operation/security.mjs.map +1 -0
- package/dist/http-operation/server.d.mts +33 -0
- package/dist/http-operation/server.mjs +268 -0
- package/dist/http-operation/server.mjs.map +1 -0
- package/dist/identity/ExternalIdentityMutation.d.mts +15 -0
- package/dist/identity/ExternalIdentityMutation.mjs +11 -0
- package/dist/identity/ExternalIdentityMutation.mjs.map +1 -0
- package/dist/identity/IdentityMutation.d.mts +22 -0
- package/dist/identity/IdentityMutation.mjs +17 -0
- package/dist/identity/IdentityMutation.mjs.map +1 -0
- package/dist/identity/IdentityRepository.d.mts +20 -0
- package/dist/identity/IdentityRepository.mjs +11 -0
- package/dist/identity/IdentityRepository.mjs.map +1 -0
- package/dist/identity/SubjectLifecycle.d.mts +58 -0
- package/dist/identity/SubjectLifecycle.mjs +43 -0
- package/dist/identity/SubjectLifecycle.mjs.map +1 -0
- package/dist/identity/SubjectProvisioner.d.mts +37 -0
- package/dist/identity/SubjectProvisioner.mjs +20 -0
- package/dist/identity/SubjectProvisioner.mjs.map +1 -0
- package/dist/identity/codecs.d.mts +34 -0
- package/dist/identity/codecs.mjs +40 -0
- package/dist/identity/codecs.mjs.map +1 -0
- package/dist/identity/models.d.mts +62 -0
- package/dist/identity/models.mjs +51 -0
- package/dist/identity/models.mjs.map +1 -0
- package/dist/identity/operations.d.mts +118 -0
- package/dist/identity/operations.mjs +124 -0
- package/dist/identity/operations.mjs.map +1 -0
- package/dist/index.d.mts +23 -0
- package/dist/index.mjs +23 -0
- package/dist/internal/AuthStoreDecisions.d.mts +22 -0
- package/dist/internal/AuthStoreDecisions.mjs +8 -0
- package/dist/internal/AuthStoreDecisions.mjs.map +1 -0
- package/dist/internal/CurrentSession.d.mts +9 -0
- package/dist/internal/CurrentSession.mjs +8 -0
- package/dist/internal/CurrentSession.mjs.map +1 -0
- package/dist/internal/diagnostics.mjs +23 -0
- package/dist/internal/diagnostics.mjs.map +1 -0
- package/dist/oauth/GithubOAuthProvider.d.mts +43 -0
- package/dist/oauth/GithubOAuthProvider.mjs +66 -0
- package/dist/oauth/GithubOAuthProvider.mjs.map +1 -0
- package/dist/oauth/OAuth.d.mts +73 -0
- package/dist/oauth/OAuth.mjs +180 -0
- package/dist/oauth/OAuth.mjs.map +1 -0
- package/dist/oauth/OAuthAccountsPersistence.d.mts +109 -0
- package/dist/oauth/OAuthAccountsPersistence.mjs +12 -0
- package/dist/oauth/OAuthAccountsPersistence.mjs.map +1 -0
- package/dist/oauth/OAuthActionEvidence.d.mts +28 -0
- package/dist/oauth/OAuthActionEvidence.mjs +15 -0
- package/dist/oauth/OAuthActionEvidence.mjs.map +1 -0
- package/dist/oauth/OAuthConnectedActionEvidence.d.mts +22 -0
- package/dist/oauth/OAuthConnectedActionEvidence.mjs +9 -0
- package/dist/oauth/OAuthConnectedActionEvidence.mjs.map +1 -0
- package/dist/oauth/OAuthConnectedPersistence.d.mts +129 -0
- package/dist/oauth/OAuthConnectedPersistence.mjs +12 -0
- package/dist/oauth/OAuthConnectedPersistence.mjs.map +1 -0
- package/dist/oauth/OAuthConnectedProtocol.d.mts +41 -0
- package/dist/oauth/OAuthConnectedProtocol.mjs +13 -0
- package/dist/oauth/OAuthConnectedProtocol.mjs.map +1 -0
- package/dist/oauth/OAuthConnectedRevocations.d.mts +167 -0
- package/dist/oauth/OAuthConnectedRevocations.mjs +21 -0
- package/dist/oauth/OAuthConnectedRevocations.mjs.map +1 -0
- package/dist/oauth/OAuthConnectedTokenProtector.d.mts +24 -0
- package/dist/oauth/OAuthConnectedTokenProtector.mjs +153 -0
- package/dist/oauth/OAuthConnectedTokenProtector.mjs.map +1 -0
- package/dist/oauth/OAuthConnectedTransactionProtector.d.mts +23 -0
- package/dist/oauth/OAuthConnectedTransactionProtector.mjs +37 -0
- package/dist/oauth/OAuthConnectedTransactionProtector.mjs.map +1 -0
- package/dist/oauth/OAuthConnectedUseAuthority.d.mts +22 -0
- package/dist/oauth/OAuthConnectedUseAuthority.mjs +10 -0
- package/dist/oauth/OAuthConnectedUseAuthority.mjs.map +1 -0
- package/dist/oauth/OAuthConnectionStore.d.mts +33 -0
- package/dist/oauth/OAuthConnectionStore.mjs +38 -0
- package/dist/oauth/OAuthConnectionStore.mjs.map +1 -0
- package/dist/oauth/OAuthLinkTransactionProtector.d.mts +25 -0
- package/dist/oauth/OAuthLinkTransactionProtector.mjs +39 -0
- package/dist/oauth/OAuthLinkTransactionProtector.mjs.map +1 -0
- package/dist/oauth/OAuthProtocol.d.mts +33 -0
- package/dist/oauth/OAuthProtocol.mjs +16 -0
- package/dist/oauth/OAuthProtocol.mjs.map +1 -0
- package/dist/oauth/OAuthProvider.d.mts +70 -0
- package/dist/oauth/OAuthProvider.mjs +39 -0
- package/dist/oauth/OAuthProvider.mjs.map +1 -0
- package/dist/oauth/OAuthProviders.d.mts +27 -0
- package/dist/oauth/OAuthProviders.mjs +33 -0
- package/dist/oauth/OAuthProviders.mjs.map +1 -0
- package/dist/oauth/OAuthRegistrationIntents.d.mts +87 -0
- package/dist/oauth/OAuthRegistrationIntents.mjs +19 -0
- package/dist/oauth/OAuthRegistrationIntents.mjs.map +1 -0
- package/dist/oauth/OAuthReturnTargets.d.mts +15 -0
- package/dist/oauth/OAuthReturnTargets.mjs +24 -0
- package/dist/oauth/OAuthReturnTargets.mjs.map +1 -0
- package/dist/oauth/OAuthSignInPersistence.d.mts +68 -0
- package/dist/oauth/OAuthSignInPersistence.mjs +12 -0
- package/dist/oauth/OAuthSignInPersistence.mjs.map +1 -0
- package/dist/oauth/OAuthStateDecisions.d.mts +14 -0
- package/dist/oauth/OAuthStateDecisions.mjs +8 -0
- package/dist/oauth/OAuthStateDecisions.mjs.map +1 -0
- package/dist/oauth/OAuthStateStore.d.mts +35 -0
- package/dist/oauth/OAuthStateStore.mjs +64 -0
- package/dist/oauth/OAuthStateStore.mjs.map +1 -0
- package/dist/oauth/OAuthTransactionProtector.d.mts +26 -0
- package/dist/oauth/OAuthTransactionProtector.mjs +78 -0
- package/dist/oauth/OAuthTransactionProtector.mjs.map +1 -0
- package/dist/oauth/accounts.d.mts +29 -0
- package/dist/oauth/accounts.mjs +515 -0
- package/dist/oauth/accounts.mjs.map +1 -0
- package/dist/oauth/accountsModels.d.mts +463 -0
- package/dist/oauth/accountsModels.mjs +155 -0
- package/dist/oauth/accountsModels.mjs.map +1 -0
- package/dist/oauth/connected.d.mts +442 -0
- package/dist/oauth/connected.mjs +526 -0
- package/dist/oauth/connected.mjs.map +1 -0
- package/dist/oauth/connectedAccess.d.mts +20 -0
- package/dist/oauth/connectedAccess.mjs +279 -0
- package/dist/oauth/connectedAccess.mjs.map +1 -0
- package/dist/oauth/connectedMaintenance.d.mts +19 -0
- package/dist/oauth/connectedMaintenance.mjs +133 -0
- package/dist/oauth/connectedMaintenance.mjs.map +1 -0
- package/dist/oauth/connectedModels.d.mts +2023 -0
- package/dist/oauth/connectedModels.mjs +375 -0
- package/dist/oauth/connectedModels.mjs.map +1 -0
- package/dist/oauth/definition.d.mts +4396 -0
- package/dist/oauth/definition.mjs +120 -0
- package/dist/oauth/definition.mjs.map +1 -0
- package/dist/oauth/errors.d.mts +49 -0
- package/dist/oauth/errors.mjs +42 -0
- package/dist/oauth/errors.mjs.map +1 -0
- package/dist/oauth/github/identity.d.mts +8 -0
- package/dist/oauth/github/identity.mjs +24 -0
- package/dist/oauth/github/identity.mjs.map +1 -0
- package/dist/oauth/github/models.d.mts +34 -0
- package/dist/oauth/github/protocol.d.mts +54 -0
- package/dist/oauth/github/protocol.mjs +204 -0
- package/dist/oauth/github/protocol.mjs.map +1 -0
- package/dist/oauth/openid-client/ProviderRevocation.d.mts +4 -0
- package/dist/oauth/openid-client/ProviderRevocation.mjs +11 -0
- package/dist/oauth/openid-client/ProviderRevocation.mjs.map +1 -0
- package/dist/oauth/openid-client/compatibility.d.mts +1 -0
- package/dist/oauth/openid-client/compatibility.mjs +6 -0
- package/dist/oauth/openid-client/compatibility.mjs.map +1 -0
- package/dist/oauth/openid-client/configuration.mjs +305 -0
- package/dist/oauth/openid-client/configuration.mjs.map +1 -0
- package/dist/oauth/openid-client/connected/configuration.mjs +338 -0
- package/dist/oauth/openid-client/connected/configuration.mjs.map +1 -0
- package/dist/oauth/openid-client/connected/models.d.mts +42 -0
- package/dist/oauth/openid-client/connected/protocol.d.mts +16 -0
- package/dist/oauth/openid-client/connected/protocol.mjs +402 -0
- package/dist/oauth/openid-client/connected/protocol.mjs.map +1 -0
- package/dist/oauth/openid-client/models.d.mts +67 -0
- package/dist/oauth/openid-client/models.mjs +16 -0
- package/dist/oauth/openid-client/models.mjs.map +1 -0
- package/dist/oauth/openid-client/protocol.d.mts +27 -0
- package/dist/oauth/openid-client/protocol.mjs +218 -0
- package/dist/oauth/openid-client/protocol.mjs.map +1 -0
- package/dist/oauth/openid-client/transport.mjs +59 -0
- package/dist/oauth/openid-client/transport.mjs.map +1 -0
- package/dist/oauth/policy.d.mts +18 -0
- package/dist/oauth/policy.mjs +16 -0
- package/dist/oauth/policy.mjs.map +1 -0
- package/dist/oauth/registration.d.mts +24 -0
- package/dist/oauth/registration.mjs +177 -0
- package/dist/oauth/registration.mjs.map +1 -0
- package/dist/oauth/registrationModels.d.mts +152 -0
- package/dist/oauth/registrationModels.mjs +93 -0
- package/dist/oauth/registrationModels.mjs.map +1 -0
- package/dist/oauth/registrationSecrets.mjs +70 -0
- package/dist/oauth/registrationSecrets.mjs.map +1 -0
- package/dist/oauth/schema.d.mts +86 -0
- package/dist/oauth/schema.mjs +81 -0
- package/dist/oauth/schema.mjs.map +1 -0
- package/dist/oauth/signInErrors.d.mts +17 -0
- package/dist/oauth/signInErrors.mjs +16 -0
- package/dist/oauth/signInErrors.mjs.map +1 -0
- package/dist/oauth/signInModels.d.mts +343 -0
- package/dist/oauth/signInModels.mjs +181 -0
- package/dist/oauth/signInModels.mjs.map +1 -0
- package/dist/oauth/signInModule.d.mts +1546 -0
- package/dist/oauth/signInModule.mjs +430 -0
- package/dist/oauth/signInModule.mjs.map +1 -0
- package/dist/oauth/signInSnapshot.mjs +29 -0
- package/dist/oauth/signInSnapshot.mjs.map +1 -0
- package/dist/oauth/transactionEncryption.d.mts +14 -0
- package/dist/oauth/transactionEncryption.mjs +129 -0
- package/dist/oauth/transactionEncryption.mjs.map +1 -0
- package/dist/operations/RequestBindingConfig.d.mts +11 -0
- package/dist/operations/RequestBindingConfig.mjs +10 -0
- package/dist/operations/RequestBindingConfig.mjs.map +1 -0
- package/dist/operations/actions.d.mts +947 -0
- package/dist/operations/actions.mjs +148 -0
- package/dist/operations/actions.mjs.map +1 -0
- package/dist/operations/context.d.mts +63 -0
- package/dist/operations/context.mjs +55 -0
- package/dist/operations/context.mjs.map +1 -0
- package/dist/operations/credentials.d.mts +39 -0
- package/dist/operations/credentials.mjs +60 -0
- package/dist/operations/credentials.mjs.map +1 -0
- package/dist/operations/errors.d.mts +24 -0
- package/dist/operations/errors.mjs +31 -0
- package/dist/operations/errors.mjs.map +1 -0
- package/dist/operations/operation.d.mts +124 -0
- package/dist/operations/operation.mjs +220 -0
- package/dist/operations/operation.mjs.map +1 -0
- package/dist/operations/requestBinding.d.mts +46 -0
- package/dist/operations/requestBinding.mjs +130 -0
- package/dist/operations/requestBinding.mjs.map +1 -0
- package/dist/operations/requestBindingModels.d.mts +13 -0
- package/dist/operations/requestBindingModels.mjs +12 -0
- package/dist/operations/requestBindingModels.mjs.map +1 -0
- package/dist/operations/reveals.d.mts +28 -0
- package/dist/operations/reveals.mjs +88 -0
- package/dist/operations/reveals.mjs.map +1 -0
- package/dist/passkey/PasskeyActionEvidence.d.mts +22 -0
- package/dist/passkey/PasskeyActionEvidence.mjs +9 -0
- package/dist/passkey/PasskeyActionEvidence.mjs.map +1 -0
- package/dist/passkey/PasskeyCredentials.d.mts +16 -0
- package/dist/passkey/PasskeyCredentials.mjs +9 -0
- package/dist/passkey/PasskeyCredentials.mjs.map +1 -0
- package/dist/passkey/PasskeyEnrollmentContext.d.mts +22 -0
- package/dist/passkey/PasskeyEnrollmentContext.mjs +9 -0
- package/dist/passkey/PasskeyEnrollmentContext.mjs.map +1 -0
- package/dist/passkey/PasskeyManagementPersistence.d.mts +106 -0
- package/dist/passkey/PasskeyManagementPersistence.mjs +9 -0
- package/dist/passkey/PasskeyManagementPersistence.mjs.map +1 -0
- package/dist/passkey/PasskeyPersistence.d.mts +63 -0
- package/dist/passkey/PasskeyPersistence.mjs +10 -0
- package/dist/passkey/PasskeyPersistence.mjs.map +1 -0
- package/dist/passkey/PasskeyProtocol.d.mts +38 -0
- package/dist/passkey/PasskeyProtocol.mjs +11 -0
- package/dist/passkey/PasskeyProtocol.mjs.map +1 -0
- package/dist/passkey/actions.d.mts +50 -0
- package/dist/passkey/actions.mjs +376 -0
- package/dist/passkey/actions.mjs.map +1 -0
- package/dist/passkey/browser/PasskeyBrowser.d.mts +18 -0
- package/dist/passkey/browser/PasskeyBrowser.mjs +9 -0
- package/dist/passkey/browser/PasskeyBrowser.mjs.map +1 -0
- package/dist/passkey/browser/models.d.mts +38 -0
- package/dist/passkey/browser/models.mjs +41 -0
- package/dist/passkey/browser/models.mjs.map +1 -0
- package/dist/passkey/browser/simplewebauthn.d.mts +17 -0
- package/dist/passkey/browser/simplewebauthn.mjs +411 -0
- package/dist/passkey/browser/simplewebauthn.mjs.map +1 -0
- package/dist/passkey/definition.d.mts +5626 -0
- package/dist/passkey/definition.mjs +114 -0
- package/dist/passkey/definition.mjs.map +1 -0
- package/dist/passkey/errors.d.mts +20 -0
- package/dist/passkey/errors.mjs +20 -0
- package/dist/passkey/errors.mjs.map +1 -0
- package/dist/passkey/management.mjs +276 -0
- package/dist/passkey/management.mjs.map +1 -0
- package/dist/passkey/models.d.mts +1245 -0
- package/dist/passkey/models.mjs +301 -0
- package/dist/passkey/models.mjs.map +1 -0
- package/dist/passkey/module.d.mts +2132 -0
- package/dist/passkey/module.mjs +174 -0
- package/dist/passkey/module.mjs.map +1 -0
- package/dist/passkey/pending.mjs +99 -0
- package/dist/passkey/pending.mjs.map +1 -0
- package/dist/passkey/policy.d.mts +48 -0
- package/dist/passkey/policy.mjs +77 -0
- package/dist/passkey/policy.mjs.map +1 -0
- package/dist/passkey/registration.mjs +107 -0
- package/dist/passkey/registration.mjs.map +1 -0
- package/dist/passkey/simplewebauthn/configuration.mjs +45 -0
- package/dist/passkey/simplewebauthn/configuration.mjs.map +1 -0
- package/dist/passkey/simplewebauthn/models.d.mts +21 -0
- package/dist/passkey/simplewebauthn/models.mjs +8 -0
- package/dist/passkey/simplewebauthn/models.mjs.map +1 -0
- package/dist/passkey/simplewebauthn/protocol.d.mts +62 -0
- package/dist/passkey/simplewebauthn/protocol.mjs +402 -0
- package/dist/passkey/simplewebauthn/protocol.mjs.map +1 -0
- package/dist/passkey/snapshot.mjs +31 -0
- package/dist/passkey/snapshot.mjs.map +1 -0
- package/dist/passkey/stepUp.mjs +101 -0
- package/dist/passkey/stepUp.mjs.map +1 -0
- package/dist/password/CompromisedPasswords.d.mts +26 -0
- package/dist/password/CompromisedPasswords.mjs +23 -0
- package/dist/password/CompromisedPasswords.mjs.map +1 -0
- package/dist/password/NewPasswordCheck.d.mts +21 -0
- package/dist/password/NewPasswordCheck.mjs +39 -0
- package/dist/password/NewPasswordCheck.mjs.map +1 -0
- package/dist/password/PasswordHashing.d.mts +24 -0
- package/dist/password/PasswordHashing.mjs +96 -0
- package/dist/password/PasswordHashing.mjs.map +1 -0
- package/dist/password/PasswordKdfAdmission.d.mts +19 -0
- package/dist/password/PasswordKdfAdmission.mjs +25 -0
- package/dist/password/PasswordKdfAdmission.mjs.map +1 -0
- package/dist/password/configuration.d.mts +43 -0
- package/dist/password/configuration.mjs +64 -0
- package/dist/password/configuration.mjs.map +1 -0
- package/dist/password/defaults.mjs +13 -0
- package/dist/password/defaults.mjs.map +1 -0
- package/dist/password/encoding.mjs +64 -0
- package/dist/password/encoding.mjs.map +1 -0
- package/dist/password/errors.d.mts +28 -0
- package/dist/password/errors.mjs +25 -0
- package/dist/password/errors.mjs.map +1 -0
- package/dist/password/methods/PasswordActionEvidence.d.mts +38 -0
- package/dist/password/methods/PasswordActionEvidence.mjs +22 -0
- package/dist/password/methods/PasswordActionEvidence.mjs.map +1 -0
- package/dist/password/methods/PasswordPersistence.d.mts +102 -0
- package/dist/password/methods/PasswordPersistence.mjs +13 -0
- package/dist/password/methods/PasswordPersistence.mjs.map +1 -0
- package/dist/password/methods/PasswordPreparedPersistence.d.mts +111 -0
- package/dist/password/methods/contracts.d.mts +43 -0
- package/dist/password/methods/contracts.mjs +33 -0
- package/dist/password/methods/contracts.mjs.map +1 -0
- package/dist/password/methods/definition.d.mts +3813 -0
- package/dist/password/methods/definition.mjs +56 -0
- package/dist/password/methods/definition.mjs.map +1 -0
- package/dist/password/methods/errors.d.mts +15 -0
- package/dist/password/methods/errors.mjs +11 -0
- package/dist/password/methods/errors.mjs.map +1 -0
- package/dist/password/methods/models.d.mts +70 -0
- package/dist/password/methods/models.mjs +44 -0
- package/dist/password/methods/models.mjs.map +1 -0
- package/dist/password/methods/module.d.mts +3567 -0
- package/dist/password/methods/module.mjs +553 -0
- package/dist/password/methods/module.mjs.map +1 -0
- package/dist/password/methods/policy.d.mts +84 -0
- package/dist/password/methods/policy.mjs +80 -0
- package/dist/password/methods/policy.mjs.map +1 -0
- package/dist/password/methods/preparation.mjs +54 -0
- package/dist/password/methods/preparation.mjs.map +1 -0
- package/dist/password/methods/prepared.d.mts +53 -0
- package/dist/password/methods/prepared.mjs +610 -0
- package/dist/password/methods/prepared.mjs.map +1 -0
- package/dist/password/methods/preparedModels.d.mts +1295 -0
- package/dist/password/methods/preparedModels.mjs +278 -0
- package/dist/password/methods/preparedModels.mjs.map +1 -0
- package/dist/password/methods/signIn.d.mts +180 -0
- package/dist/password/methods/signIn.mjs +73 -0
- package/dist/password/methods/signIn.mjs.map +1 -0
- package/dist/password/methods/snapshot.mjs +38 -0
- package/dist/password/methods/snapshot.mjs.map +1 -0
- package/dist/password/methods/verification.mjs +138 -0
- package/dist/password/methods/verification.mjs.map +1 -0
- package/dist/password/models.d.mts +13 -0
- package/dist/password/models.mjs +12 -0
- package/dist/password/models.mjs.map +1 -0
- package/dist/password/policy.d.mts +33 -0
- package/dist/password/policy.mjs +37 -0
- package/dist/password/policy.mjs.map +1 -0
- package/dist/phone/PhoneActionEvidence.d.mts +23 -0
- package/dist/phone/PhoneActionEvidence.mjs +10 -0
- package/dist/phone/PhoneActionEvidence.mjs.map +1 -0
- package/dist/phone/PhoneAdmission.d.mts +29 -0
- package/dist/phone/PhoneAdmission.mjs +10 -0
- package/dist/phone/PhoneAdmission.mjs.map +1 -0
- package/dist/phone/PhoneDeliveryEligibility.d.mts +11 -0
- package/dist/phone/PhoneDeliveryEligibility.mjs +8 -0
- package/dist/phone/PhoneDeliveryEligibility.mjs.map +1 -0
- package/dist/phone/PhonePersistence.d.mts +33 -0
- package/dist/phone/PhonePersistence.mjs +10 -0
- package/dist/phone/PhonePersistence.mjs.map +1 -0
- package/dist/phone/PhoneRequestContext.d.mts +10 -0
- package/dist/phone/PhoneRequestContext.mjs +8 -0
- package/dist/phone/PhoneRequestContext.mjs.map +1 -0
- package/dist/phone/PhoneSignInTargets.d.mts +19 -0
- package/dist/phone/PhoneSignInTargets.mjs +13 -0
- package/dist/phone/PhoneSignInTargets.mjs.map +1 -0
- package/dist/phone/definition.d.mts +7190 -0
- package/dist/phone/definition.mjs +28 -0
- package/dist/phone/definition.mjs.map +1 -0
- package/dist/phone/failure.mjs +23 -0
- package/dist/phone/failure.mjs.map +1 -0
- package/dist/phone/lifecycle.mjs +427 -0
- package/dist/phone/lifecycle.mjs.map +1 -0
- package/dist/phone/lifecycleModels.d.mts +164 -0
- package/dist/phone/lifecycleModels.mjs +91 -0
- package/dist/phone/lifecycleModels.mjs.map +1 -0
- package/dist/phone/models.d.mts +41 -0
- package/dist/phone/models.mjs +29 -0
- package/dist/phone/models.mjs.map +1 -0
- package/dist/phone/module.d.mts +6027 -0
- package/dist/phone/module.mjs +293 -0
- package/dist/phone/module.mjs.map +1 -0
- package/dist/proofs/EmailProofDelivery.d.mts +13 -0
- package/dist/proofs/EmailProofDelivery.mjs +11 -0
- package/dist/proofs/EmailProofDelivery.mjs.map +1 -0
- package/dist/proofs/HostIngressLimiter.d.mts +20 -0
- package/dist/proofs/HostIngressLimiter.mjs +13 -0
- package/dist/proofs/HostIngressLimiter.mjs.map +1 -0
- package/dist/proofs/ProofPersistence.d.mts +140 -0
- package/dist/proofs/ProofPersistence.mjs +13 -0
- package/dist/proofs/ProofPersistence.mjs.map +1 -0
- package/dist/proofs/SmsProofDelivery.d.mts +13 -0
- package/dist/proofs/SmsProofDelivery.mjs +11 -0
- package/dist/proofs/SmsProofDelivery.mjs.map +1 -0
- package/dist/proofs/abuse.d.mts +15 -0
- package/dist/proofs/abuse.mjs +12 -0
- package/dist/proofs/abuse.mjs.map +1 -0
- package/dist/proofs/completion.d.mts +22 -0
- package/dist/proofs/crypto.d.mts +196 -0
- package/dist/proofs/crypto.mjs +189 -0
- package/dist/proofs/crypto.mjs.map +1 -0
- package/dist/proofs/definition.d.mts +335 -0
- package/dist/proofs/definition.mjs +10 -0
- package/dist/proofs/definition.mjs.map +1 -0
- package/dist/proofs/delivery.d.mts +30 -0
- package/dist/proofs/delivery.mjs +26 -0
- package/dist/proofs/delivery.mjs.map +1 -0
- package/dist/proofs/dispatch.d.mts +20 -0
- package/dist/proofs/dispatch.mjs +54 -0
- package/dist/proofs/dispatch.mjs.map +1 -0
- package/dist/proofs/errors.d.mts +21 -0
- package/dist/proofs/errors.mjs +25 -0
- package/dist/proofs/errors.mjs.map +1 -0
- package/dist/proofs/models.d.mts +141 -0
- package/dist/proofs/models.mjs +93 -0
- package/dist/proofs/models.mjs.map +1 -0
- package/dist/proofs/module.d.mts +344 -0
- package/dist/proofs/module.mjs +350 -0
- package/dist/proofs/module.mjs.map +1 -0
- package/dist/proofs/policy.d.mts +152 -0
- package/dist/proofs/policy.mjs +51 -0
- package/dist/proofs/policy.mjs.map +1 -0
- package/dist/sessions/AuthenticationAuthority.d.mts +31 -0
- package/dist/sessions/AuthenticationAuthority.mjs +8 -0
- package/dist/sessions/AuthenticationAuthority.mjs.map +1 -0
- package/dist/sessions/PendingAuthentication.d.mts +108 -0
- package/dist/sessions/PendingAuthentication.mjs +40 -0
- package/dist/sessions/PendingAuthentication.mjs.map +1 -0
- package/dist/sessions/SessionStepUpPersistence.d.mts +152 -0
- package/dist/sessions/SessionStepUpPersistence.mjs +63 -0
- package/dist/sessions/SessionStepUpPersistence.mjs.map +1 -0
- package/dist/sessions/assurance.d.mts +163 -0
- package/dist/sessions/assurance.mjs +95 -0
- package/dist/sessions/assurance.mjs.map +1 -0
- package/dist/sessions/commit.d.mts +13 -0
- package/dist/sessions/configuration.d.mts +46 -0
- package/dist/sessions/configuration.mjs +55 -0
- package/dist/sessions/configuration.mjs.map +1 -0
- package/dist/sessions/contract.d.mts +663 -0
- package/dist/sessions/contract.mjs +174 -0
- package/dist/sessions/contract.mjs.map +1 -0
- package/dist/sessions/crypto.d.mts +24 -0
- package/dist/sessions/crypto.mjs +106 -0
- package/dist/sessions/crypto.mjs.map +1 -0
- package/dist/sessions/definition.d.mts +11 -0
- package/dist/sessions/definition.mjs +10 -0
- package/dist/sessions/definition.mjs.map +1 -0
- package/dist/sessions/errors.d.mts +35 -0
- package/dist/sessions/errors.mjs +34 -0
- package/dist/sessions/errors.mjs.map +1 -0
- package/dist/sessions/invalidation.d.mts +23 -0
- package/dist/sessions/invalidation.mjs +33 -0
- package/dist/sessions/invalidation.mjs.map +1 -0
- package/dist/sessions/models.d.mts +143 -0
- package/dist/sessions/models.mjs +94 -0
- package/dist/sessions/models.mjs.map +1 -0
- package/dist/sessions/module.d.mts +1091 -0
- package/dist/sessions/module.mjs +943 -0
- package/dist/sessions/module.mjs.map +1 -0
- package/dist/sessions/persistence.d.mts +93 -0
- package/dist/sessions/policy.d.mts +80 -0
- package/dist/sessions/policy.mjs +66 -0
- package/dist/sessions/policy.mjs.map +1 -0
- package/dist/testing/conformance/AuthStore.d.mts +11 -0
- package/dist/testing/conformance/AuthStore.mjs +173 -0
- package/dist/testing/conformance/AuthStore.mjs.map +1 -0
- package/dist/testing/conformance/OAuthConnectionStore.d.mts +11 -0
- package/dist/testing/conformance/OAuthConnectionStore.mjs +102 -0
- package/dist/testing/conformance/OAuthConnectionStore.mjs.map +1 -0
- package/dist/testing/conformance/OAuthStateStore.d.mts +11 -0
- package/dist/testing/conformance/OAuthStateStore.mjs +45 -0
- package/dist/testing/conformance/OAuthStateStore.mjs.map +1 -0
- package/dist/testing/conformance/PasswordCredentialStore.d.mts +20 -0
- package/dist/testing/conformance/PasswordCredentialStore.mjs +103 -0
- package/dist/testing/conformance/PasswordCredentialStore.mjs.map +1 -0
- package/dist/testing/conformance/support.mjs +17 -0
- package/dist/testing/conformance/support.mjs.map +1 -0
- package/dist/testing/crypto.d.mts +11 -0
- package/dist/testing/crypto.mjs +41 -0
- package/dist/testing/crypto.mjs.map +1 -0
- package/dist/testing/keyring.d.mts +9 -0
- package/dist/testing/keyring.mjs +17 -0
- package/dist/testing/keyring.mjs.map +1 -0
- package/dist/totp/TotpActionEvidence.d.mts +18 -0
- package/dist/totp/TotpActionEvidence.mjs +8 -0
- package/dist/totp/TotpActionEvidence.mjs.map +1 -0
- package/dist/totp/TotpPersistence.d.mts +19 -0
- package/dist/totp/TotpPersistence.mjs +8 -0
- package/dist/totp/TotpPersistence.mjs.map +1 -0
- package/dist/totp/TotpSecretKeys.d.mts +15 -0
- package/dist/totp/TotpSecretKeys.mjs +8 -0
- package/dist/totp/TotpSecretKeys.mjs.map +1 -0
- package/dist/totp/crypto.mjs +96 -0
- package/dist/totp/crypto.mjs.map +1 -0
- package/dist/totp/definition.d.mts +764 -0
- package/dist/totp/definition.mjs +24 -0
- package/dist/totp/definition.mjs.map +1 -0
- package/dist/totp/errors.d.mts +16 -0
- package/dist/totp/errors.mjs +18 -0
- package/dist/totp/errors.mjs.map +1 -0
- package/dist/totp/models.d.mts +377 -0
- package/dist/totp/models.mjs +137 -0
- package/dist/totp/models.mjs.map +1 -0
- package/dist/totp/module.d.mts +737 -0
- package/dist/totp/module.mjs +355 -0
- package/dist/totp/module.mjs.map +1 -0
- package/package.json +1 -0
- package/src/Atom.ts +4 -0
- package/src/Auth.ts +16 -0
- package/src/AuthContract.ts +17 -0
- package/src/AuthSession.ts +298 -0
- package/src/AuthStore.ts +367 -0
- package/src/AuthTokenCodec.ts +226 -0
- package/src/Client.ts +9 -0
- package/src/Cloudflare.ts +345 -0
- package/src/Drizzle.ts +378 -0
- package/src/DrizzleD1.ts +136 -0
- package/src/DrizzleLibsql.ts +288 -0
- package/src/DrizzleMysql2.ts +184 -0
- package/src/DrizzlePglite.ts +160 -0
- package/src/DrizzlePostgres.ts +160 -0
- package/src/DrizzleSqliteBun.ts +244 -0
- package/src/DrizzleSqliteDo.ts +473 -0
- package/src/DrizzleSqliteNode.ts +245 -0
- package/src/DrizzleSqliteWasm.ts +245 -0
- package/src/Email.ts +55 -0
- package/src/EmailOtp.ts +250 -0
- package/src/EmailOtpSender.ts +28 -0
- package/src/Errors.ts +103 -0
- package/src/GitHub.ts +16 -0
- package/src/Hooks.ts +50 -0
- package/src/Http.ts +47 -0
- package/src/HttpServer.ts +742 -0
- package/src/Identity.ts +53 -0
- package/src/IdentityResolver.ts +18 -0
- package/src/OAuth.ts +242 -0
- package/src/OpenIdClient.ts +13 -0
- package/src/OpenIdClientConnected.ts +18 -0
- package/src/OperationHttp.ts +14 -0
- package/src/OperationHttpClient.ts +6 -0
- package/src/OperationHttpServer.ts +15 -0
- package/src/Operations.ts +69 -0
- package/src/Passkey.ts +81 -0
- package/src/PasskeyBrowser.ts +19 -0
- package/src/PasskeyContract.ts +212 -0
- package/src/PasskeyPassword.ts +319 -0
- package/src/PasskeySimpleWebAuthn.ts +6 -0
- package/src/Password.ts +113 -0
- package/src/PasswordAuth.ts +197 -0
- package/src/PasswordCredentialStore.ts +140 -0
- package/src/PasswordHasher.ts +147 -0
- package/src/PhoneOtp.ts +32 -0
- package/src/Policy.ts +95 -0
- package/src/Proofs.ts +71 -0
- package/src/Rpc.ts +15 -0
- package/src/Schema.ts +235 -0
- package/src/SessionContract.ts +2 -0
- package/src/Sessions.ts +105 -0
- package/src/Testing.ts +24 -0
- package/src/Totp.ts +28 -0
- package/src/TotpContract.ts +147 -0
- package/src/WebCrypto.ts +61 -0
- package/src/Workflows.ts +12 -0
- package/src/atom/AuthAtomLifetime.ts +87 -0
- package/src/atom/AuthAtomWorkflow.ts +27 -0
- package/src/atom/client.ts +364 -0
- package/src/atom/operations.ts +183 -0
- package/src/atom/scoped-runtime.ts +249 -0
- package/src/auth/Auth.ts +482 -0
- package/src/auth/AuthConfigurationError.ts +9 -0
- package/src/auth/AuthRequest.ts +21 -0
- package/src/auth/AuthStrategy.ts +116 -0
- package/src/auth/ConsumeDecision.ts +4 -0
- package/src/auth/actions.ts +220 -0
- package/src/auth/defaults.ts +23 -0
- package/src/auth/definition.ts +88 -0
- package/src/auth/session.ts +146 -0
- package/src/drizzle/D1BatchStatements.ts +10 -0
- package/src/drizzle/PasswordPreparedPostconditions.ts +30 -0
- package/src/drizzle/SuppliedService.ts +10 -0
- package/src/drizzle/d1-emails.ts +1808 -0
- package/src/drizzle/d1-generated-statement.ts +129 -0
- package/src/drizzle/d1-identity.ts +374 -0
- package/src/drizzle/d1-oauth.ts +338 -0
- package/src/drizzle/d1-passkey.ts +371 -0
- package/src/drizzle/d1-password-prepared.ts +1273 -0
- package/src/drizzle/d1-passwords.ts +2661 -0
- package/src/drizzle/d1-phone.ts +94 -0
- package/src/drizzle/d1-planning.ts +105 -0
- package/src/drizzle/d1-proofs.ts +2305 -0
- package/src/drizzle/d1-sessions.ts +2867 -0
- package/src/drizzle/d1-totp.ts +79 -0
- package/src/drizzle/email-model.ts +512 -0
- package/src/drizzle/email-registration.ts +696 -0
- package/src/drizzle/email-sql.ts +1468 -0
- package/src/drizzle/email-target.ts +243 -0
- package/src/drizzle/model.ts +492 -0
- package/src/drizzle/mysql-emails.ts +323 -0
- package/src/drizzle/mysql-identity.ts +323 -0
- package/src/drizzle/mysql-password-prepared.ts +206 -0
- package/src/drizzle/mysql-passwords.ts +341 -0
- package/src/drizzle/mysql-proofs.ts +183 -0
- package/src/drizzle/mysql-sessions.ts +742 -0
- package/src/drizzle/mysql.ts +686 -0
- package/src/drizzle/oauth-accounts.ts +801 -0
- package/src/drizzle/oauth-connected-access.ts +354 -0
- package/src/drizzle/oauth-connected-collection.ts +324 -0
- package/src/drizzle/oauth-connected-custody.ts +277 -0
- package/src/drizzle/oauth-connected-drivers.ts +463 -0
- package/src/drizzle/oauth-connected-flow.ts +439 -0
- package/src/drizzle/oauth-connected-input.ts +128 -0
- package/src/drizzle/oauth-connected-maintenance.ts +345 -0
- package/src/drizzle/oauth-connected-management.ts +365 -0
- package/src/drizzle/oauth-connected-model.ts +347 -0
- package/src/drizzle/oauth-connected-reference.ts +112 -0
- package/src/drizzle/oauth-connected-settlement.ts +226 -0
- package/src/drizzle/oauth-connected-state.ts +846 -0
- package/src/drizzle/oauth-connected-target.ts +264 -0
- package/src/drizzle/oauth-drivers.ts +567 -0
- package/src/drizzle/oauth-flow.ts +461 -0
- package/src/drizzle/oauth-input.ts +205 -0
- package/src/drizzle/oauth-model.ts +610 -0
- package/src/drizzle/oauth-mysql.ts +10 -0
- package/src/drizzle/oauth-owner.ts +29 -0
- package/src/drizzle/oauth-registration.ts +638 -0
- package/src/drizzle/oauth-state.ts +213 -0
- package/src/drizzle/oauth-target.ts +751 -0
- package/src/drizzle/passkey-admission.ts +333 -0
- package/src/drizzle/passkey-credentials.ts +465 -0
- package/src/drizzle/passkey-drivers.ts +385 -0
- package/src/drizzle/passkey-enrollment.ts +280 -0
- package/src/drizzle/passkey-flow.ts +983 -0
- package/src/drizzle/passkey-management.ts +369 -0
- package/src/drizzle/passkey-model.ts +350 -0
- package/src/drizzle/passkey-registration-ceremony-model.ts +69 -0
- package/src/drizzle/passkey-registration-ceremony.ts +254 -0
- package/src/drizzle/passkey-registration-custody.ts +82 -0
- package/src/drizzle/passkey-registration-write.ts +378 -0
- package/src/drizzle/passkey-state.ts +307 -0
- package/src/drizzle/passkey-target.ts +528 -0
- package/src/drizzle/passkey-write-drivers.ts +396 -0
- package/src/drizzle/passkey-write-model.ts +265 -0
- package/src/drizzle/passkey-write-state.ts +627 -0
- package/src/drizzle/passkey-write-target.ts +406 -0
- package/src/drizzle/password-model.ts +491 -0
- package/src/drizzle/password-prepared-model.ts +259 -0
- package/src/drizzle/password-prepared-sql.ts +1198 -0
- package/src/drizzle/password-prepared-state.ts +232 -0
- package/src/drizzle/password-prepared-target.ts +158 -0
- package/src/drizzle/password-registration.ts +372 -0
- package/src/drizzle/password-sql.ts +2082 -0
- package/src/drizzle/password-target.ts +223 -0
- package/src/drizzle/pg-emails.ts +323 -0
- package/src/drizzle/pg-password-prepared.ts +207 -0
- package/src/drizzle/pg-passwords.ts +340 -0
- package/src/drizzle/pg-proofs.ts +193 -0
- package/src/drizzle/pg-sessions.ts +751 -0
- package/src/drizzle/pg.ts +982 -0
- package/src/drizzle/phone-model.ts +185 -0
- package/src/drizzle/phone-state.ts +802 -0
- package/src/drizzle/phone-target.ts +471 -0
- package/src/drizzle/proof-model.ts +398 -0
- package/src/drizzle/proof-sql.ts +1912 -0
- package/src/drizzle/proof-target.ts +120 -0
- package/src/drizzle/session-model.ts +368 -0
- package/src/drizzle/session-sql.ts +2152 -0
- package/src/drizzle/session-target.ts +335 -0
- package/src/drizzle/sqlite-emails.ts +368 -0
- package/src/drizzle/sqlite-identity.ts +343 -0
- package/src/drizzle/sqlite-password-prepared.ts +262 -0
- package/src/drizzle/sqlite-passwords.ts +499 -0
- package/src/drizzle/sqlite-proofs.ts +204 -0
- package/src/drizzle/sqlite-sessions.ts +972 -0
- package/src/drizzle/sqlite.ts +704 -0
- package/src/drizzle/standalone-guard.ts +38 -0
- package/src/drizzle/step-up-model.ts +129 -0
- package/src/drizzle/step-up-state.ts +141 -0
- package/src/drizzle/totp-model.ts +91 -0
- package/src/drizzle/totp-state.ts +520 -0
- package/src/drizzle/totp-target.ts +304 -0
- package/src/drizzle/transaction-execution.ts +290 -0
- package/src/drizzle/transaction-mysql.ts +104 -0
- package/src/drizzle/transaction-owner.ts +570 -0
- package/src/email/EmailActionEvidence.ts +37 -0
- package/src/email/EmailAddressPersistence.ts +71 -0
- package/src/email/EmailIdentifierNotifier.ts +48 -0
- package/src/email/EmailReturnTargets.ts +50 -0
- package/src/email/EmailSignInTargets.ts +20 -0
- package/src/email/addresses.ts +630 -0
- package/src/email/definition.ts +309 -0
- package/src/email/errors.ts +23 -0
- package/src/email/magicLink.ts +84 -0
- package/src/email/models.ts +50 -0
- package/src/email/module.ts +664 -0
- package/src/email/registration.ts +415 -0
- package/src/email/snapshot.ts +51 -0
- package/src/hooks/LifecycleHooks.ts +136 -0
- package/src/hooks/commit.ts +271 -0
- package/src/hooks/models.ts +111 -0
- package/src/hooks/plugins.ts +87 -0
- package/src/hooks/transactions.ts +51 -0
- package/src/http/auth-api.ts +17 -0
- package/src/http/auth-contract.ts +148 -0
- package/src/http/auth-http.ts +467 -0
- package/src/http/endpoints/get-session.ts +9 -0
- package/src/http/endpoints/password-sign-in.ts +19 -0
- package/src/http/endpoints/request-email-otp.ts +10 -0
- package/src/http/endpoints/set-password.ts +18 -0
- package/src/http/endpoints/sign-out.ts +5 -0
- package/src/http/endpoints/verify-email-otp.ts +15 -0
- package/src/http/models.ts +80 -0
- package/src/http/security.ts +102 -0
- package/src/http/session-contract.ts +92 -0
- package/src/http-operation/OperationHttpInvocation.ts +39 -0
- package/src/http-operation/OperationHttpServerConfig.ts +124 -0
- package/src/http-operation/auth-client.ts +273 -0
- package/src/http-operation/client.ts +453 -0
- package/src/http-operation/configuration-schema.ts +19 -0
- package/src/http-operation/contract.ts +116 -0
- package/src/http-operation/errors.ts +38 -0
- package/src/http-operation/models.ts +42 -0
- package/src/http-operation/private.ts +50 -0
- package/src/http-operation/security.ts +93 -0
- package/src/http-operation/server.ts +544 -0
- package/src/identity/ExternalIdentityMutation.ts +18 -0
- package/src/identity/IdentityMutation.ts +41 -0
- package/src/identity/IdentityRepository.ts +37 -0
- package/src/identity/SubjectLifecycle.ts +80 -0
- package/src/identity/SubjectProvisioner.ts +40 -0
- package/src/identity/codecs.ts +54 -0
- package/src/identity/models.ts +82 -0
- package/src/identity/operations.ts +182 -0
- package/src/index.ts +23 -0
- package/src/internal/AuthStoreDecisions.ts +23 -0
- package/src/internal/CurrentSession.ts +8 -0
- package/src/internal/diagnostics.ts +71 -0
- package/src/oauth/GithubOAuthProvider.ts +106 -0
- package/src/oauth/OAuth.ts +436 -0
- package/src/oauth/OAuthAccountsPersistence.ts +142 -0
- package/src/oauth/OAuthActionEvidence.ts +31 -0
- package/src/oauth/OAuthConnectedActionEvidence.ts +28 -0
- package/src/oauth/OAuthConnectedPersistence.ts +163 -0
- package/src/oauth/OAuthConnectedProtocol.ts +54 -0
- package/src/oauth/OAuthConnectedRevocations.ts +48 -0
- package/src/oauth/OAuthConnectedTokenProtector.ts +240 -0
- package/src/oauth/OAuthConnectedTransactionProtector.ts +56 -0
- package/src/oauth/OAuthConnectedUseAuthority.ts +26 -0
- package/src/oauth/OAuthConnectionStore.ts +59 -0
- package/src/oauth/OAuthLinkTransactionProtector.ts +58 -0
- package/src/oauth/OAuthProtocol.ts +39 -0
- package/src/oauth/OAuthProvider.ts +126 -0
- package/src/oauth/OAuthProviders.ts +53 -0
- package/src/oauth/OAuthRegistrationIntents.ts +42 -0
- package/src/oauth/OAuthReturnTargets.ts +44 -0
- package/src/oauth/OAuthSignInPersistence.ts +91 -0
- package/src/oauth/OAuthStateDecisions.ts +16 -0
- package/src/oauth/OAuthStateStore.ts +102 -0
- package/src/oauth/OAuthTransactionProtector.ts +103 -0
- package/src/oauth/accounts.ts +987 -0
- package/src/oauth/accountsModels.ts +214 -0
- package/src/oauth/connected.ts +995 -0
- package/src/oauth/connectedAccess.ts +644 -0
- package/src/oauth/connectedMaintenance.ts +248 -0
- package/src/oauth/connectedModels.ts +495 -0
- package/src/oauth/definition.ts +414 -0
- package/src/oauth/errors.ts +78 -0
- package/src/oauth/github/identity.ts +26 -0
- package/src/oauth/github/models.ts +37 -0
- package/src/oauth/github/protocol.ts +329 -0
- package/src/oauth/openid-client/ProviderRevocation.ts +22 -0
- package/src/oauth/openid-client/compatibility.ts +47 -0
- package/src/oauth/openid-client/configuration.ts +472 -0
- package/src/oauth/openid-client/connected/configuration.ts +565 -0
- package/src/oauth/openid-client/connected/models.ts +58 -0
- package/src/oauth/openid-client/connected/protocol.ts +866 -0
- package/src/oauth/openid-client/models.ts +78 -0
- package/src/oauth/openid-client/protocol.ts +437 -0
- package/src/oauth/openid-client/transport.ts +67 -0
- package/src/oauth/policy.ts +26 -0
- package/src/oauth/registration.ts +410 -0
- package/src/oauth/registrationModels.ts +115 -0
- package/src/oauth/registrationSecrets.ts +127 -0
- package/src/oauth/schema.ts +102 -0
- package/src/oauth/signInErrors.ts +23 -0
- package/src/oauth/signInModels.ts +266 -0
- package/src/oauth/signInModule.ts +875 -0
- package/src/oauth/signInSnapshot.ts +37 -0
- package/src/oauth/transactionEncryption.ts +198 -0
- package/src/operations/RequestBindingConfig.ts +12 -0
- package/src/operations/actions.ts +342 -0
- package/src/operations/context.ts +130 -0
- package/src/operations/credentials.ts +121 -0
- package/src/operations/errors.ts +53 -0
- package/src/operations/operation.ts +740 -0
- package/src/operations/requestBinding.ts +237 -0
- package/src/operations/requestBindingModels.ts +18 -0
- package/src/operations/reveals.ts +147 -0
- package/src/passkey/PasskeyActionEvidence.ts +25 -0
- package/src/passkey/PasskeyCredentials.ts +16 -0
- package/src/passkey/PasskeyEnrollmentContext.ts +26 -0
- package/src/passkey/PasskeyManagementPersistence.ts +124 -0
- package/src/passkey/PasskeyPersistence.ts +85 -0
- package/src/passkey/PasskeyProtocol.ts +48 -0
- package/src/passkey/actions.ts +905 -0
- package/src/passkey/browser/PasskeyBrowser.ts +26 -0
- package/src/passkey/browser/models.ts +67 -0
- package/src/passkey/browser/simplewebauthn.ts +621 -0
- package/src/passkey/definition.ts +386 -0
- package/src/passkey/errors.ts +39 -0
- package/src/passkey/management.ts +552 -0
- package/src/passkey/models.ts +414 -0
- package/src/passkey/module.ts +367 -0
- package/src/passkey/pending.ts +203 -0
- package/src/passkey/policy.ts +88 -0
- package/src/passkey/registration.ts +251 -0
- package/src/passkey/simplewebauthn/configuration.ts +97 -0
- package/src/passkey/simplewebauthn/models.ts +9 -0
- package/src/passkey/simplewebauthn/protocol.ts +729 -0
- package/src/passkey/snapshot.ts +48 -0
- package/src/passkey/stepUp.ts +212 -0
- package/src/password/CompromisedPasswords.ts +36 -0
- package/src/password/NewPasswordCheck.ts +89 -0
- package/src/password/PasswordHashing.ts +209 -0
- package/src/password/PasswordKdfAdmission.ts +44 -0
- package/src/password/configuration.ts +52 -0
- package/src/password/defaults.ts +15 -0
- package/src/password/encoding.ts +137 -0
- package/src/password/errors.ts +43 -0
- package/src/password/methods/PasswordActionEvidence.ts +41 -0
- package/src/password/methods/PasswordPersistence.ts +128 -0
- package/src/password/methods/PasswordPreparedPersistence.ts +123 -0
- package/src/password/methods/contracts.ts +47 -0
- package/src/password/methods/definition.ts +199 -0
- package/src/password/methods/errors.ts +26 -0
- package/src/password/methods/models.ts +80 -0
- package/src/password/methods/module.ts +986 -0
- package/src/password/methods/policy.ts +68 -0
- package/src/password/methods/preparation.ts +73 -0
- package/src/password/methods/prepared.ts +1199 -0
- package/src/password/methods/preparedModels.ts +496 -0
- package/src/password/methods/signIn.ts +136 -0
- package/src/password/methods/snapshot.ts +53 -0
- package/src/password/methods/verification.ts +266 -0
- package/src/password/models.ts +15 -0
- package/src/password/policy.ts +41 -0
- package/src/phone/PhoneActionEvidence.ts +26 -0
- package/src/phone/PhoneAdmission.ts +29 -0
- package/src/phone/PhoneDeliveryEligibility.ts +9 -0
- package/src/phone/PhonePersistence.ts +43 -0
- package/src/phone/PhoneRequestContext.ts +7 -0
- package/src/phone/PhoneSignInTargets.ts +19 -0
- package/src/phone/definition.ts +87 -0
- package/src/phone/failure.ts +40 -0
- package/src/phone/lifecycle.ts +662 -0
- package/src/phone/lifecycleModels.ts +108 -0
- package/src/phone/models.ts +41 -0
- package/src/phone/module.ts +433 -0
- package/src/proofs/EmailProofDelivery.ts +19 -0
- package/src/proofs/HostIngressLimiter.ts +20 -0
- package/src/proofs/ProofPersistence.ts +172 -0
- package/src/proofs/SmsProofDelivery.ts +19 -0
- package/src/proofs/abuse.ts +23 -0
- package/src/proofs/completion.ts +23 -0
- package/src/proofs/crypto.ts +326 -0
- package/src/proofs/definition.ts +39 -0
- package/src/proofs/delivery.ts +73 -0
- package/src/proofs/dispatch.ts +99 -0
- package/src/proofs/errors.ts +46 -0
- package/src/proofs/models.ts +131 -0
- package/src/proofs/module.ts +620 -0
- package/src/proofs/policy.ts +77 -0
- package/src/sessions/AuthenticationAuthority.ts +51 -0
- package/src/sessions/PendingAuthentication.ts +121 -0
- package/src/sessions/SessionStepUpPersistence.ts +164 -0
- package/src/sessions/assurance.ts +192 -0
- package/src/sessions/commit.ts +13 -0
- package/src/sessions/configuration.ts +133 -0
- package/src/sessions/contract.ts +203 -0
- package/src/sessions/crypto.ts +181 -0
- package/src/sessions/definition.ts +25 -0
- package/src/sessions/errors.ts +68 -0
- package/src/sessions/invalidation.ts +46 -0
- package/src/sessions/models.ts +138 -0
- package/src/sessions/module.ts +1991 -0
- package/src/sessions/persistence.ts +135 -0
- package/src/sessions/policy.ts +103 -0
- package/src/testing/conformance/AuthStore.ts +314 -0
- package/src/testing/conformance/OAuthConnectionStore.ts +167 -0
- package/src/testing/conformance/OAuthStateStore.ts +105 -0
- package/src/testing/conformance/PasswordCredentialStore.ts +205 -0
- package/src/testing/conformance/support.ts +38 -0
- package/src/testing/crypto.ts +55 -0
- package/src/testing/keyring.ts +17 -0
- package/src/totp/TotpActionEvidence.ts +18 -0
- package/src/totp/TotpPersistence.ts +26 -0
- package/src/totp/TotpSecretKeys.ts +15 -0
- package/src/totp/crypto.ts +160 -0
- package/src/totp/definition.ts +78 -0
- package/src/totp/errors.ts +25 -0
- package/src/totp/models.ts +164 -0
- package/src/totp/module.ts +717 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { PasswordConfigurationError } from "./errors.mjs";
|
|
2
|
+
import { Effect, Schema } from "effect";
|
|
3
|
+
//#region src/password/configuration.d.ts
|
|
4
|
+
declare const PasswordHashingConfig: Schema.Struct<{
|
|
5
|
+
readonly memoryKiB: Schema.Int;
|
|
6
|
+
readonly passes: Schema.Int;
|
|
7
|
+
readonly parallelism: Schema.Int;
|
|
8
|
+
readonly maximumMemoryKiB: Schema.Int;
|
|
9
|
+
readonly maximumPasses: Schema.Int;
|
|
10
|
+
readonly maximumParallelism: Schema.Int;
|
|
11
|
+
readonly maximumMemoryPasses: Schema.Int;
|
|
12
|
+
readonly maximumLegacyIterations: Schema.Int;
|
|
13
|
+
readonly maximumPasswordBytes: Schema.Int;
|
|
14
|
+
}>;
|
|
15
|
+
type PasswordHashingConfig = typeof PasswordHashingConfig.Type;
|
|
16
|
+
/** OWASP Argon2id minimum profile. Host CPU/memory allowances must fit this cost;
|
|
17
|
+
* runtime failures never cause an automatic downgrade. Limits are per permit.
|
|
18
|
+
*/
|
|
19
|
+
declare const defaultPasswordHashingConfig: PasswordHashingConfig;
|
|
20
|
+
declare const validatePasswordHashingConfig: (input: {
|
|
21
|
+
readonly memoryKiB: number;
|
|
22
|
+
readonly passes: number;
|
|
23
|
+
readonly parallelism: number;
|
|
24
|
+
readonly maximumMemoryKiB: number;
|
|
25
|
+
readonly maximumPasses: number;
|
|
26
|
+
readonly maximumParallelism: number;
|
|
27
|
+
readonly maximumMemoryPasses: number;
|
|
28
|
+
readonly maximumLegacyIterations: number;
|
|
29
|
+
readonly maximumPasswordBytes: number;
|
|
30
|
+
}) => Effect.Effect<Readonly<{
|
|
31
|
+
readonly memoryKiB: number;
|
|
32
|
+
readonly passes: number;
|
|
33
|
+
readonly parallelism: number;
|
|
34
|
+
readonly maximumMemoryKiB: number;
|
|
35
|
+
readonly maximumPasses: number;
|
|
36
|
+
readonly maximumParallelism: number;
|
|
37
|
+
readonly maximumMemoryPasses: number;
|
|
38
|
+
readonly maximumLegacyIterations: number;
|
|
39
|
+
readonly maximumPasswordBytes: number;
|
|
40
|
+
}>, PasswordConfigurationError, never>;
|
|
41
|
+
//#endregion
|
|
42
|
+
export { PasswordHashingConfig, defaultPasswordHashingConfig, validatePasswordHashingConfig };
|
|
43
|
+
//# sourceMappingURL=configuration.d.mts.map
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { PasswordConfigurationError } from "./errors.mjs";
|
|
2
|
+
import { Effect, Schema } from "effect";
|
|
3
|
+
//#region src/password/configuration.ts
|
|
4
|
+
const PasswordHashingConfig = Schema.Struct({
|
|
5
|
+
memoryKiB: Schema.Int.check(Schema.isBetween({
|
|
6
|
+
minimum: 19456,
|
|
7
|
+
maximum: 65536
|
|
8
|
+
})),
|
|
9
|
+
passes: Schema.Int.check(Schema.isBetween({
|
|
10
|
+
minimum: 2,
|
|
11
|
+
maximum: 6
|
|
12
|
+
})),
|
|
13
|
+
parallelism: Schema.Int.check(Schema.isBetween({
|
|
14
|
+
minimum: 1,
|
|
15
|
+
maximum: 4
|
|
16
|
+
})),
|
|
17
|
+
maximumMemoryKiB: Schema.Int.check(Schema.isBetween({
|
|
18
|
+
minimum: 19456,
|
|
19
|
+
maximum: 65536
|
|
20
|
+
})),
|
|
21
|
+
maximumPasses: Schema.Int.check(Schema.isBetween({
|
|
22
|
+
minimum: 2,
|
|
23
|
+
maximum: 6
|
|
24
|
+
})),
|
|
25
|
+
maximumParallelism: Schema.Int.check(Schema.isBetween({
|
|
26
|
+
minimum: 1,
|
|
27
|
+
maximum: 4
|
|
28
|
+
})),
|
|
29
|
+
maximumMemoryPasses: Schema.Int.check(Schema.isBetween({
|
|
30
|
+
minimum: 38912,
|
|
31
|
+
maximum: 393216
|
|
32
|
+
})),
|
|
33
|
+
maximumLegacyIterations: Schema.Int.check(Schema.isBetween({
|
|
34
|
+
minimum: 6e5,
|
|
35
|
+
maximum: 2e6
|
|
36
|
+
})),
|
|
37
|
+
maximumPasswordBytes: Schema.Int.check(Schema.isBetween({
|
|
38
|
+
minimum: 256,
|
|
39
|
+
maximum: 65536
|
|
40
|
+
}))
|
|
41
|
+
});
|
|
42
|
+
/** OWASP Argon2id minimum profile. Host CPU/memory allowances must fit this cost;
|
|
43
|
+
* runtime failures never cause an automatic downgrade. Limits are per permit.
|
|
44
|
+
*/
|
|
45
|
+
const defaultPasswordHashingConfig = Object.freeze({
|
|
46
|
+
memoryKiB: 19456,
|
|
47
|
+
passes: 2,
|
|
48
|
+
parallelism: 1,
|
|
49
|
+
maximumMemoryKiB: 65536,
|
|
50
|
+
maximumPasses: 6,
|
|
51
|
+
maximumParallelism: 4,
|
|
52
|
+
maximumMemoryPasses: 131072,
|
|
53
|
+
maximumLegacyIterations: 1e6,
|
|
54
|
+
maximumPasswordBytes: 16384
|
|
55
|
+
});
|
|
56
|
+
const validatePasswordHashingConfig = Effect.fn("validatePasswordHashingConfig")(function* (input) {
|
|
57
|
+
const config = yield* Schema.decodeEffect(PasswordHashingConfig)(input).pipe(Effect.mapError(() => PasswordConfigurationError.make({ component: "hashing" })));
|
|
58
|
+
if (config.memoryKiB > config.maximumMemoryKiB || config.passes > config.maximumPasses || config.parallelism > config.maximumParallelism || config.memoryKiB * config.passes > config.maximumMemoryPasses) return yield* PasswordConfigurationError.make({ component: "hashing" });
|
|
59
|
+
return Object.freeze(config);
|
|
60
|
+
});
|
|
61
|
+
//#endregion
|
|
62
|
+
export { PasswordHashingConfig, defaultPasswordHashingConfig, validatePasswordHashingConfig };
|
|
63
|
+
|
|
64
|
+
//# sourceMappingURL=configuration.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configuration.mjs","names":[],"sources":["../../src/password/configuration.ts"],"sourcesContent":["import { Effect, Schema } from \"effect\";\n\nimport { PasswordConfigurationError } from \"./errors\";\n\nexport const PasswordHashingConfig = Schema.Struct({\n memoryKiB: Schema.Int.check(Schema.isBetween({ minimum: 19456, maximum: 65536 })),\n passes: Schema.Int.check(Schema.isBetween({ minimum: 2, maximum: 6 })),\n parallelism: Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 4 })),\n maximumMemoryKiB: Schema.Int.check(Schema.isBetween({ minimum: 19456, maximum: 65536 })),\n maximumPasses: Schema.Int.check(Schema.isBetween({ minimum: 2, maximum: 6 })),\n maximumParallelism: Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 4 })),\n maximumMemoryPasses: Schema.Int.check(Schema.isBetween({ minimum: 38912, maximum: 393216 })),\n maximumLegacyIterations: Schema.Int.check(\n Schema.isBetween({ minimum: 600000, maximum: 2000000 }),\n ),\n maximumPasswordBytes: Schema.Int.check(Schema.isBetween({ minimum: 256, maximum: 65536 })),\n});\n\nexport type PasswordHashingConfig = typeof PasswordHashingConfig.Type;\n\n/** OWASP Argon2id minimum profile. Host CPU/memory allowances must fit this cost;\n * runtime failures never cause an automatic downgrade. Limits are per permit.\n */\nexport const defaultPasswordHashingConfig: PasswordHashingConfig = Object.freeze({\n memoryKiB: 19456,\n passes: 2,\n parallelism: 1,\n maximumMemoryKiB: 65536,\n maximumPasses: 6,\n maximumParallelism: 4,\n maximumMemoryPasses: 131072,\n maximumLegacyIterations: 1000000,\n maximumPasswordBytes: 16384,\n});\n\nexport const validatePasswordHashingConfig = Effect.fn(\"validatePasswordHashingConfig\")(function* (\n input: PasswordHashingConfig,\n) {\n const config = yield* Schema.decodeEffect(PasswordHashingConfig)(input).pipe(\n Effect.mapError(() => PasswordConfigurationError.make({ component: \"hashing\" })),\n );\n\n if (\n config.memoryKiB > config.maximumMemoryKiB ||\n config.passes > config.maximumPasses ||\n config.parallelism > config.maximumParallelism ||\n config.memoryKiB * config.passes > config.maximumMemoryPasses\n )\n return yield* PasswordConfigurationError.make({ component: \"hashing\" });\n\n return Object.freeze(config);\n});\n"],"mappings":";;;AAIA,MAAa,wBAAwB,OAAO,OAAO;CACjD,WAAW,OAAO,IAAI,MAAM,OAAO,UAAU;EAAE,SAAS;EAAO,SAAS;CAAM,CAAC,CAAC;CAChF,QAAQ,OAAO,IAAI,MAAM,OAAO,UAAU;EAAE,SAAS;EAAG,SAAS;CAAE,CAAC,CAAC;CACrE,aAAa,OAAO,IAAI,MAAM,OAAO,UAAU;EAAE,SAAS;EAAG,SAAS;CAAE,CAAC,CAAC;CAC1E,kBAAkB,OAAO,IAAI,MAAM,OAAO,UAAU;EAAE,SAAS;EAAO,SAAS;CAAM,CAAC,CAAC;CACvF,eAAe,OAAO,IAAI,MAAM,OAAO,UAAU;EAAE,SAAS;EAAG,SAAS;CAAE,CAAC,CAAC;CAC5E,oBAAoB,OAAO,IAAI,MAAM,OAAO,UAAU;EAAE,SAAS;EAAG,SAAS;CAAE,CAAC,CAAC;CACjF,qBAAqB,OAAO,IAAI,MAAM,OAAO,UAAU;EAAE,SAAS;EAAO,SAAS;CAAO,CAAC,CAAC;CAC3F,yBAAyB,OAAO,IAAI,MAClC,OAAO,UAAU;EAAE,SAAS;EAAQ,SAAS;CAAQ,CAAC,CACxD;CACA,sBAAsB,OAAO,IAAI,MAAM,OAAO,UAAU;EAAE,SAAS;EAAK,SAAS;CAAM,CAAC,CAAC;AAC3F,CAAC;;;;AAOD,MAAa,+BAAsD,OAAO,OAAO;CAC/E,WAAW;CACX,QAAQ;CACR,aAAa;CACb,kBAAkB;CAClB,eAAe;CACf,oBAAoB;CACpB,qBAAqB;CACrB,yBAAyB;CACzB,sBAAsB;AACxB,CAAC;AAED,MAAa,gCAAgC,OAAO,GAAG,+BAA+B,CAAC,CAAC,WACtF,OACA;CACA,MAAM,SAAS,OAAO,OAAO,aAAa,qBAAqB,CAAC,CAAC,KAAK,CAAC,CAAC,KACtE,OAAO,eAAe,2BAA2B,KAAK,EAAE,WAAW,UAAU,CAAC,CAAC,CACjF;CAEA,IACE,OAAO,YAAY,OAAO,oBAC1B,OAAO,SAAS,OAAO,iBACvB,OAAO,cAAc,OAAO,sBAC5B,OAAO,YAAY,OAAO,SAAS,OAAO,qBAE1C,OAAO,OAAO,2BAA2B,KAAK,EAAE,WAAW,UAAU,CAAC;CAExE,OAAO,OAAO,OAAO,MAAM;AAC7B,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { cryptoLayer, defaultLayer } from "../auth/defaults.mjs";
|
|
2
|
+
import { NewPasswordCheck } from "./NewPasswordCheck.mjs";
|
|
3
|
+
import { PasswordKdfAdmission } from "./PasswordKdfAdmission.mjs";
|
|
4
|
+
import { PasswordHashing } from "./PasswordHashing.mjs";
|
|
5
|
+
import { Layer } from "effect";
|
|
6
|
+
//#region src/password/defaults.ts
|
|
7
|
+
const admissionLayer = defaultLayer(PasswordKdfAdmission, PasswordKdfAdmission.layer());
|
|
8
|
+
const hashingLayer = defaultLayer(PasswordHashing, PasswordHashing.portableLayer().pipe(Layer.provide(admissionLayer))).pipe(Layer.provide(cryptoLayer));
|
|
9
|
+
const newPasswordLayer = defaultLayer(NewPasswordCheck, NewPasswordCheck.layer());
|
|
10
|
+
//#endregion
|
|
11
|
+
export { hashingLayer, newPasswordLayer };
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=defaults.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.mjs","names":[],"sources":["../../src/password/defaults.ts"],"sourcesContent":["import { Layer } from \"effect\";\n\nimport { cryptoLayer, defaultLayer } from \"../auth/defaults\";\nimport { NewPasswordCheck } from \"./NewPasswordCheck\";\nimport { PasswordHashing } from \"./PasswordHashing\";\nimport { PasswordKdfAdmission } from \"./PasswordKdfAdmission\";\n\nconst admissionLayer = defaultLayer(PasswordKdfAdmission, PasswordKdfAdmission.layer());\n\nexport const hashingLayer = defaultLayer(\n PasswordHashing,\n PasswordHashing.portableLayer().pipe(Layer.provide(admissionLayer)),\n).pipe(Layer.provide(cryptoLayer));\n\nexport const newPasswordLayer = defaultLayer(NewPasswordCheck, NewPasswordCheck.layer());\n"],"mappings":";;;;;;AAOA,MAAM,iBAAiB,aAAa,sBAAsB,qBAAqB,MAAM,CAAC;AAEtF,MAAa,eAAe,aAC1B,iBACA,gBAAgB,cAAc,CAAC,CAAC,KAAK,MAAM,QAAQ,cAAc,CAAC,CACpE,CAAC,CAAC,KAAK,MAAM,QAAQ,WAAW,CAAC;AAEjC,MAAa,mBAAmB,aAAa,kBAAkB,iBAAiB,MAAM,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { PasswordVerifierInvalid } from "./errors.mjs";
|
|
2
|
+
import { Effect, Encoding, Result, Schema } from "effect";
|
|
3
|
+
//#region src/password/encoding.ts
|
|
4
|
+
const Decimal = Schema.String.check(Schema.isPattern(/^[1-9][0-9]{0,7}$/)).pipe(Schema.decodeTo(Schema.FiniteFromString));
|
|
5
|
+
const Base64 = Schema.String.check(Schema.isMinLength(1), Schema.isMaxLength(86), Schema.isPattern(/^[A-Za-z0-9+/]+$/));
|
|
6
|
+
const Base64Url = Schema.String.check(Schema.isMinLength(1), Schema.isMaxLength(86), Schema.isPattern(/^[A-Za-z0-9_-]+$/));
|
|
7
|
+
const Phc = Schema.TemplateLiteralParser([
|
|
8
|
+
"$argon2id$v=19$m=",
|
|
9
|
+
Decimal,
|
|
10
|
+
",t=",
|
|
11
|
+
Decimal,
|
|
12
|
+
",p=",
|
|
13
|
+
Decimal,
|
|
14
|
+
"$",
|
|
15
|
+
Base64,
|
|
16
|
+
"$",
|
|
17
|
+
Base64
|
|
18
|
+
]);
|
|
19
|
+
const Legacy = Schema.TemplateLiteralParser([
|
|
20
|
+
"pbkdf2-sha256$",
|
|
21
|
+
Decimal,
|
|
22
|
+
"$",
|
|
23
|
+
Base64Url,
|
|
24
|
+
"$",
|
|
25
|
+
Base64Url
|
|
26
|
+
]);
|
|
27
|
+
const Bounded = Schema.String.check(Schema.isMaxLength(512));
|
|
28
|
+
const phcBase64 = (bytes) => Encoding.encodeBase64(bytes).replace(/=+$/u, "");
|
|
29
|
+
const decodeBytes = Effect.fn("PasswordHash.decodeBytes")(function* (input, url, minimum, maximum) {
|
|
30
|
+
const decoded = Result.getOrUndefined(url ? Encoding.decodeBase64Url(input) : Encoding.decodeBase64(input.padEnd(Math.ceil(input.length / 4) * 4, "=")));
|
|
31
|
+
if (decoded === void 0) return yield* PasswordVerifierInvalid.make({ reason: "malformed" });
|
|
32
|
+
if (decoded.length < minimum || decoded.length > maximum || (url ? Encoding.encodeBase64Url(decoded) : phcBase64(decoded)) !== input) return yield* PasswordVerifierInvalid.make({ reason: "malformed" });
|
|
33
|
+
return decoded;
|
|
34
|
+
});
|
|
35
|
+
/** Invoke under admission: parse bounded metadata and reject costs before decoding
|
|
36
|
+
* salt/output or allocating KDF memory. Only supported exact encodings are accepted.
|
|
37
|
+
*/
|
|
38
|
+
const parsePasswordHash = Effect.fn("parsePasswordHash")(function* (input, config) {
|
|
39
|
+
yield* Schema.decodeEffect(Bounded)(input).pipe(Effect.mapError(() => PasswordVerifierInvalid.make({ reason: "malformed" })));
|
|
40
|
+
if (input.startsWith("$argon2id$")) {
|
|
41
|
+
const [, memoryKiB, , passes, , parallelism, , salt, , expected] = yield* Schema.decodeUnknownEffect(Phc)(input).pipe(Effect.mapError(() => PasswordVerifierInvalid.make({ reason: "malformed" })));
|
|
42
|
+
if (memoryKiB < 8 * parallelism || memoryKiB > config.maximumMemoryKiB || passes > config.maximumPasses || parallelism > config.maximumParallelism || memoryKiB * passes > config.maximumMemoryPasses) return yield* PasswordVerifierInvalid.make({ reason: "work-limit" });
|
|
43
|
+
return {
|
|
44
|
+
_tag: "Argon2id",
|
|
45
|
+
memoryKiB,
|
|
46
|
+
passes,
|
|
47
|
+
parallelism,
|
|
48
|
+
salt: yield* decodeBytes(salt, false, 8, 48),
|
|
49
|
+
expected: yield* decodeBytes(expected, false, 16, 64)
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
const [, iterations, , salt, , expected] = yield* Schema.decodeUnknownEffect(Legacy)(input).pipe(Effect.mapError(() => PasswordVerifierInvalid.make({ reason: "malformed" })));
|
|
53
|
+
if (iterations > config.maximumLegacyIterations) return yield* PasswordVerifierInvalid.make({ reason: "work-limit" });
|
|
54
|
+
return {
|
|
55
|
+
_tag: "LegacyPbkdf2",
|
|
56
|
+
iterations,
|
|
57
|
+
salt: yield* decodeBytes(salt, true, 1, 64),
|
|
58
|
+
expected: yield* decodeBytes(expected, true, 32, 32)
|
|
59
|
+
};
|
|
60
|
+
});
|
|
61
|
+
//#endregion
|
|
62
|
+
export { parsePasswordHash, phcBase64 };
|
|
63
|
+
|
|
64
|
+
//# sourceMappingURL=encoding.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encoding.mjs","names":[],"sources":["../../src/password/encoding.ts"],"sourcesContent":["import { Effect, Encoding, Result, Schema } from \"effect\";\n\nimport type { PasswordHashingConfig } from \"./configuration\";\nimport { PasswordVerifierInvalid } from \"./errors\";\n\nconst Decimal = Schema.String.check(Schema.isPattern(/^[1-9][0-9]{0,7}$/)).pipe(\n Schema.decodeTo(Schema.FiniteFromString),\n);\n\nconst Base64 = Schema.String.check(\n Schema.isMinLength(1),\n Schema.isMaxLength(86),\n Schema.isPattern(/^[A-Za-z0-9+/]+$/),\n);\n\nconst Base64Url = Schema.String.check(\n Schema.isMinLength(1),\n Schema.isMaxLength(86),\n Schema.isPattern(/^[A-Za-z0-9_-]+$/),\n);\n\nconst Phc = Schema.TemplateLiteralParser([\n \"$argon2id$v=19$m=\",\n Decimal,\n \",t=\",\n Decimal,\n \",p=\",\n Decimal,\n \"$\",\n Base64,\n \"$\",\n Base64,\n]);\n\nconst Legacy = Schema.TemplateLiteralParser([\n \"pbkdf2-sha256$\",\n Decimal,\n \"$\",\n Base64Url,\n \"$\",\n Base64Url,\n]);\n\nconst Bounded = Schema.String.check(Schema.isMaxLength(512));\n\nexport type ParsedPasswordHash =\n | {\n readonly _tag: \"Argon2id\";\n readonly memoryKiB: number;\n readonly passes: number;\n readonly parallelism: number;\n readonly salt: Uint8Array;\n readonly expected: Uint8Array;\n }\n | {\n readonly _tag: \"LegacyPbkdf2\";\n readonly iterations: number;\n readonly salt: Uint8Array;\n readonly expected: Uint8Array;\n };\n\nexport const phcBase64 = (bytes: Uint8Array) => Encoding.encodeBase64(bytes).replace(/=+$/u, \"\");\n\nconst decodeBytes = Effect.fn(\"PasswordHash.decodeBytes\")(function* (\n input: string,\n url: boolean,\n minimum: number,\n maximum: number,\n) {\n const decoded = Result.getOrUndefined(\n url\n ? Encoding.decodeBase64Url(input)\n : Encoding.decodeBase64(input.padEnd(Math.ceil(input.length / 4) * 4, \"=\")),\n );\n\n if (decoded === undefined) return yield* PasswordVerifierInvalid.make({ reason: \"malformed\" });\n if (\n decoded.length < minimum ||\n decoded.length > maximum ||\n (url ? Encoding.encodeBase64Url(decoded) : phcBase64(decoded)) !== input\n )\n return yield* PasswordVerifierInvalid.make({ reason: \"malformed\" });\n\n return decoded;\n});\n\n/** Invoke under admission: parse bounded metadata and reject costs before decoding\n * salt/output or allocating KDF memory. Only supported exact encodings are accepted.\n */\nexport const parsePasswordHash = Effect.fn(\"parsePasswordHash\")(function* (\n input: string,\n config: PasswordHashingConfig,\n): Effect.fn.Return<ParsedPasswordHash, PasswordVerifierInvalid> {\n yield* Schema.decodeEffect(Bounded)(input).pipe(\n Effect.mapError(() => PasswordVerifierInvalid.make({ reason: \"malformed\" })),\n );\n if (input.startsWith(\"$argon2id$\")) {\n const [, memoryKiB, , passes, , parallelism, , salt, , expected] =\n // eslint-disable-next-line no-restricted-properties -- Persisted verifier strings have not yet proved this template literal encoding.\n yield* Schema.decodeUnknownEffect(Phc)(input).pipe(\n Effect.mapError(() => PasswordVerifierInvalid.make({ reason: \"malformed\" })),\n );\n\n if (\n memoryKiB < 8 * parallelism ||\n memoryKiB > config.maximumMemoryKiB ||\n passes > config.maximumPasses ||\n parallelism > config.maximumParallelism ||\n memoryKiB * passes > config.maximumMemoryPasses\n )\n return yield* PasswordVerifierInvalid.make({ reason: \"work-limit\" });\n\n return {\n _tag: \"Argon2id\",\n memoryKiB,\n passes,\n parallelism,\n salt: yield* decodeBytes(salt, false, 8, 48),\n expected: yield* decodeBytes(expected, false, 16, 64),\n };\n }\n\n // eslint-disable-next-line no-restricted-properties -- Persisted legacy verifier strings are an untrusted storage boundary.\n const [, iterations, , salt, , expected] = yield* Schema.decodeUnknownEffect(Legacy)(input).pipe(\n Effect.mapError(() => PasswordVerifierInvalid.make({ reason: \"malformed\" })),\n );\n\n if (iterations > config.maximumLegacyIterations)\n return yield* PasswordVerifierInvalid.make({ reason: \"work-limit\" });\n\n return {\n _tag: \"LegacyPbkdf2\",\n iterations,\n salt: yield* decodeBytes(salt, true, 1, 64),\n expected: yield* decodeBytes(expected, true, 32, 32),\n };\n});\n"],"mappings":";;;AAKA,MAAM,UAAU,OAAO,OAAO,MAAM,OAAO,UAAU,mBAAmB,CAAC,CAAC,CAAC,KACzE,OAAO,SAAS,OAAO,gBAAgB,CACzC;AAEA,MAAM,SAAS,OAAO,OAAO,MAC3B,OAAO,YAAY,CAAC,GACpB,OAAO,YAAY,EAAE,GACrB,OAAO,UAAU,kBAAkB,CACrC;AAEA,MAAM,YAAY,OAAO,OAAO,MAC9B,OAAO,YAAY,CAAC,GACpB,OAAO,YAAY,EAAE,GACrB,OAAO,UAAU,kBAAkB,CACrC;AAEA,MAAM,MAAM,OAAO,sBAAsB;CACvC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAED,MAAM,SAAS,OAAO,sBAAsB;CAC1C;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAED,MAAM,UAAU,OAAO,OAAO,MAAM,OAAO,YAAY,GAAG,CAAC;AAkB3D,MAAa,aAAa,UAAsB,SAAS,aAAa,KAAK,CAAC,CAAC,QAAQ,QAAQ,EAAE;AAE/F,MAAM,cAAc,OAAO,GAAG,0BAA0B,CAAC,CAAC,WACxD,OACA,KACA,SACA,SACA;CACA,MAAM,UAAU,OAAO,eACrB,MACI,SAAS,gBAAgB,KAAK,IAC9B,SAAS,aAAa,MAAM,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC,IAAI,GAAG,GAAG,CAAC,CAC9E;CAEA,IAAI,YAAY,KAAA,GAAW,OAAO,OAAO,wBAAwB,KAAK,EAAE,QAAQ,YAAY,CAAC;CAC7F,IACE,QAAQ,SAAS,WACjB,QAAQ,SAAS,YAChB,MAAM,SAAS,gBAAgB,OAAO,IAAI,UAAU,OAAO,OAAO,OAEnE,OAAO,OAAO,wBAAwB,KAAK,EAAE,QAAQ,YAAY,CAAC;CAEpE,OAAO;AACT,CAAC;;;;AAKD,MAAa,oBAAoB,OAAO,GAAG,mBAAmB,CAAC,CAAC,WAC9D,OACA,QAC+D;CAC/D,OAAO,OAAO,aAAa,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KACzC,OAAO,eAAe,wBAAwB,KAAK,EAAE,QAAQ,YAAY,CAAC,CAAC,CAC7E;CACA,IAAI,MAAM,WAAW,YAAY,GAAG;EAClC,MAAM,GAAG,aAAa,UAAU,eAAe,QAAQ,YAErD,OAAO,OAAO,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAC5C,OAAO,eAAe,wBAAwB,KAAK,EAAE,QAAQ,YAAY,CAAC,CAAC,CAC7E;EAEF,IACE,YAAY,IAAI,eAChB,YAAY,OAAO,oBACnB,SAAS,OAAO,iBAChB,cAAc,OAAO,sBACrB,YAAY,SAAS,OAAO,qBAE5B,OAAO,OAAO,wBAAwB,KAAK,EAAE,QAAQ,aAAa,CAAC;EAErE,OAAO;GACL,MAAM;GACN;GACA;GACA;GACA,MAAM,OAAO,YAAY,MAAM,OAAO,GAAG,EAAE;GAC3C,UAAU,OAAO,YAAY,UAAU,OAAO,IAAI,EAAE;EACtD;CACF;CAGA,MAAM,GAAG,cAAc,QAAQ,YAAY,OAAO,OAAO,oBAAoB,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAC1F,OAAO,eAAe,wBAAwB,KAAK,EAAE,QAAQ,YAAY,CAAC,CAAC,CAC7E;CAEA,IAAI,aAAa,OAAO,yBACtB,OAAO,OAAO,wBAAwB,KAAK,EAAE,QAAQ,aAAa,CAAC;CAErE,OAAO;EACL,MAAM;EACN;EACA,MAAM,OAAO,YAAY,MAAM,MAAM,GAAG,EAAE;EAC1C,UAAU,OAAO,YAAY,UAAU,MAAM,IAAI,EAAE;CACrD;AACF,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Schema } from "effect";
|
|
2
|
+
//#region src/password/errors.d.ts
|
|
3
|
+
declare const PasswordHashingUnavailable_base: Schema.Class<PasswordHashingUnavailable, Schema.TaggedStruct<"PasswordHashingUnavailable", {}>, import("effect/Cause").YieldableError>;
|
|
4
|
+
declare class PasswordHashingUnavailable extends PasswordHashingUnavailable_base {}
|
|
5
|
+
declare const PasswordKdfBusy_base: Schema.Class<PasswordKdfBusy, Schema.TaggedStruct<"PasswordKdfBusy", {}>, import("effect/Cause").YieldableError>;
|
|
6
|
+
declare class PasswordKdfBusy extends PasswordKdfBusy_base {}
|
|
7
|
+
declare const PasswordInputInvalid_base: Schema.Class<PasswordInputInvalid, Schema.TaggedStruct<"PasswordInputInvalid", {
|
|
8
|
+
readonly reason: Schema.Literals<readonly ["too-long", "ill-formed"]>;
|
|
9
|
+
}>, import("effect/Cause").YieldableError>;
|
|
10
|
+
declare class PasswordInputInvalid extends PasswordInputInvalid_base {}
|
|
11
|
+
declare const PasswordVerifierInvalid_base: Schema.Class<PasswordVerifierInvalid, Schema.TaggedStruct<"PasswordVerifierInvalid", {
|
|
12
|
+
readonly reason: Schema.Literals<readonly ["malformed", "work-limit"]>;
|
|
13
|
+
}>, import("effect/Cause").YieldableError>;
|
|
14
|
+
/** Internal verifier diagnostics; authentication operations must use a uniform public failure. */
|
|
15
|
+
declare class PasswordVerifierInvalid extends PasswordVerifierInvalid_base {}
|
|
16
|
+
declare const PasswordConfigurationError_base: Schema.Class<PasswordConfigurationError, Schema.TaggedStruct<"PasswordConfigurationError", {
|
|
17
|
+
readonly component: Schema.Literals<readonly ["hashing", "admission", "policy"]>;
|
|
18
|
+
}>, import("effect/Cause").YieldableError>;
|
|
19
|
+
declare class PasswordConfigurationError extends PasswordConfigurationError_base {}
|
|
20
|
+
declare const NewPasswordRejected_base: Schema.Class<NewPasswordRejected, Schema.TaggedStruct<"NewPasswordRejected", {
|
|
21
|
+
readonly reason: Schema.Literals<readonly ["too-short", "too-long", "ill-formed", "compromised", "common", "contextual"]>;
|
|
22
|
+
}>, import("effect/Cause").YieldableError>;
|
|
23
|
+
declare class NewPasswordRejected extends NewPasswordRejected_base {}
|
|
24
|
+
declare const PasswordCheckUnavailable_base: Schema.Class<PasswordCheckUnavailable, Schema.TaggedStruct<"PasswordCheckUnavailable", {}>, import("effect/Cause").YieldableError>;
|
|
25
|
+
declare class PasswordCheckUnavailable extends PasswordCheckUnavailable_base {}
|
|
26
|
+
//#endregion
|
|
27
|
+
export { NewPasswordRejected, PasswordCheckUnavailable, PasswordConfigurationError, PasswordHashingUnavailable, PasswordInputInvalid, PasswordKdfBusy, PasswordVerifierInvalid };
|
|
28
|
+
//# sourceMappingURL=errors.d.mts.map
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Schema } from "effect";
|
|
2
|
+
//#region src/password/errors.ts
|
|
3
|
+
var PasswordHashingUnavailable = class extends Schema.TaggedError()("PasswordHashingUnavailable", {}) {};
|
|
4
|
+
var PasswordKdfBusy = class extends Schema.TaggedError()("PasswordKdfBusy", {}) {};
|
|
5
|
+
var PasswordInputInvalid = class extends Schema.TaggedError()("PasswordInputInvalid", { reason: Schema.Literals(["too-long", "ill-formed"]) }) {};
|
|
6
|
+
/** Internal verifier diagnostics; authentication operations must use a uniform public failure. */
|
|
7
|
+
var PasswordVerifierInvalid = class extends Schema.TaggedError()("PasswordVerifierInvalid", { reason: Schema.Literals(["malformed", "work-limit"]) }) {};
|
|
8
|
+
var PasswordConfigurationError = class extends Schema.TaggedError()("PasswordConfigurationError", { component: Schema.Literals([
|
|
9
|
+
"hashing",
|
|
10
|
+
"admission",
|
|
11
|
+
"policy"
|
|
12
|
+
]) }) {};
|
|
13
|
+
var NewPasswordRejected = class extends Schema.TaggedError()("NewPasswordRejected", { reason: Schema.Literals([
|
|
14
|
+
"too-short",
|
|
15
|
+
"too-long",
|
|
16
|
+
"ill-formed",
|
|
17
|
+
"compromised",
|
|
18
|
+
"common",
|
|
19
|
+
"contextual"
|
|
20
|
+
]) }) {};
|
|
21
|
+
var PasswordCheckUnavailable = class extends Schema.TaggedError()("PasswordCheckUnavailable", {}) {};
|
|
22
|
+
//#endregion
|
|
23
|
+
export { NewPasswordRejected, PasswordCheckUnavailable, PasswordConfigurationError, PasswordHashingUnavailable, PasswordInputInvalid, PasswordKdfBusy, PasswordVerifierInvalid };
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=errors.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.mjs","names":[],"sources":["../../src/password/errors.ts"],"sourcesContent":["import { Schema } from \"effect\";\n\nexport class PasswordHashingUnavailable extends Schema.TaggedError<PasswordHashingUnavailable>()(\n \"PasswordHashingUnavailable\",\n {},\n) {}\n\nexport class PasswordKdfBusy extends Schema.TaggedError<PasswordKdfBusy>()(\"PasswordKdfBusy\", {}) {}\n\nexport class PasswordInputInvalid extends Schema.TaggedError<PasswordInputInvalid>()(\n \"PasswordInputInvalid\",\n { reason: Schema.Literals([\"too-long\", \"ill-formed\"]) },\n) {}\n\n/** Internal verifier diagnostics; authentication operations must use a uniform public failure. */\nexport class PasswordVerifierInvalid extends Schema.TaggedError<PasswordVerifierInvalid>()(\n \"PasswordVerifierInvalid\",\n { reason: Schema.Literals([\"malformed\", \"work-limit\"]) },\n) {}\n\nexport class PasswordConfigurationError extends Schema.TaggedError<PasswordConfigurationError>()(\n \"PasswordConfigurationError\",\n { component: Schema.Literals([\"hashing\", \"admission\", \"policy\"]) },\n) {}\n\nexport class NewPasswordRejected extends Schema.TaggedError<NewPasswordRejected>()(\n \"NewPasswordRejected\",\n {\n reason: Schema.Literals([\n \"too-short\",\n \"too-long\",\n \"ill-formed\",\n \"compromised\",\n \"common\",\n \"contextual\",\n ]),\n },\n) {}\n\nexport class PasswordCheckUnavailable extends Schema.TaggedError<PasswordCheckUnavailable>()(\n \"PasswordCheckUnavailable\",\n {},\n) {}\n"],"mappings":";;AAEA,IAAa,6BAAb,cAAgD,OAAO,YAAwC,CAAC,CAC9F,8BACA,CAAC,CACH,CAAC,CAAC,CAAC;AAEH,IAAa,kBAAb,cAAqC,OAAO,YAA6B,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;AAEnG,IAAa,uBAAb,cAA0C,OAAO,YAAkC,CAAC,CAClF,wBACA,EAAE,QAAQ,OAAO,SAAS,CAAC,YAAY,YAAY,CAAC,EAAE,CACxD,CAAC,CAAC,CAAC;;AAGH,IAAa,0BAAb,cAA6C,OAAO,YAAqC,CAAC,CACxF,2BACA,EAAE,QAAQ,OAAO,SAAS,CAAC,aAAa,YAAY,CAAC,EAAE,CACzD,CAAC,CAAC,CAAC;AAEH,IAAa,6BAAb,cAAgD,OAAO,YAAwC,CAAC,CAC9F,8BACA,EAAE,WAAW,OAAO,SAAS;CAAC;CAAW;CAAa;AAAQ,CAAC,EAAE,CACnE,CAAC,CAAC,CAAC;AAEH,IAAa,sBAAb,cAAyC,OAAO,YAAiC,CAAC,CAChF,uBACA,EACE,QAAQ,OAAO,SAAS;CACtB;CACA;CACA;CACA;CACA;CACA;AACF,CAAC,EACH,CACF,CAAC,CAAC,CAAC;AAEH,IAAa,2BAAb,cAA8C,OAAO,YAAsC,CAAC,CAC1F,4BACA,CAAC,CACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { AuthInvocation } from "../../operations/context.mjs";
|
|
2
|
+
import { AuthenticationEvidence, AuthenticationRequirement } from "../../sessions/models.mjs";
|
|
3
|
+
import { PasswordActionRequired, PasswordUnavailable } from "./errors.mjs";
|
|
4
|
+
import { PasswordActionChallenge } from "./models.mjs";
|
|
5
|
+
import { ProofCompletionInput } from "../../proofs/ProofPersistence.mjs";
|
|
6
|
+
import { Context, Effect, Redacted } from "effect";
|
|
7
|
+
//#region src/password/methods/PasswordActionEvidence.d.ts
|
|
8
|
+
declare const PasswordActionEvidence_base: Context.ServiceClass<PasswordActionEvidence, "effect-auth/PasswordActionEvidence", {
|
|
9
|
+
readonly verify: (input: {
|
|
10
|
+
readonly challenge: PasswordActionChallenge;
|
|
11
|
+
readonly invocation: AuthInvocation;
|
|
12
|
+
readonly proof?: Redacted.Redacted<string>;
|
|
13
|
+
readonly currentPasswordEvidence?: AuthenticationEvidence;
|
|
14
|
+
readonly recovery?: ProofCompletionInput;
|
|
15
|
+
}) => Effect.Effect<{
|
|
16
|
+
readonly evidence: AuthenticationEvidence;
|
|
17
|
+
readonly requirement: AuthenticationRequirement;
|
|
18
|
+
}, PasswordActionRequired | PasswordUnavailable>;
|
|
19
|
+
}>;
|
|
20
|
+
/** Independently verify action-specific evidence against this exact challenge.
|
|
21
|
+
* proof means fresh independently verifiable input for THIS call. Hashing uses
|
|
22
|
+
* a new salt each retry: a grant bound to an earlier challenge cannot be resumed
|
|
23
|
+
* here. Such a workflow requires a separately persisted replacement intent.
|
|
24
|
+
* Consume replay-sensitive factor input in its OWN authority before returning.
|
|
25
|
+
* A later rejected password mutation does not refund that factor; retries need
|
|
26
|
+
* fresh evidence. Mere replay-counter/code consumption preserves semantic factor
|
|
27
|
+
* revision; factor replacement/revocation changes it and wins the final password CAS.
|
|
28
|
+
* This port has no atomic factor-consumption/password-write plan.
|
|
29
|
+
* No default permits mutation. Login-pending credentials are not action grants.
|
|
30
|
+
* A session is usable only with current revision/factor authority; an unexpired
|
|
31
|
+
* pure-stateless caller alone does not prove current credential-change authority.
|
|
32
|
+
* Current recovery policy may accept a reset continuation for a single-factor
|
|
33
|
+
* subject, but it must never erase/bypass enabled MFA. No client factor assertions.
|
|
34
|
+
*/
|
|
35
|
+
declare class PasswordActionEvidence extends PasswordActionEvidence_base {}
|
|
36
|
+
//#endregion
|
|
37
|
+
export { PasswordActionEvidence };
|
|
38
|
+
//# sourceMappingURL=PasswordActionEvidence.d.mts.map
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Context } from "effect";
|
|
2
|
+
//#region src/password/methods/PasswordActionEvidence.ts
|
|
3
|
+
/** Independently verify action-specific evidence against this exact challenge.
|
|
4
|
+
* proof means fresh independently verifiable input for THIS call. Hashing uses
|
|
5
|
+
* a new salt each retry: a grant bound to an earlier challenge cannot be resumed
|
|
6
|
+
* here. Such a workflow requires a separately persisted replacement intent.
|
|
7
|
+
* Consume replay-sensitive factor input in its OWN authority before returning.
|
|
8
|
+
* A later rejected password mutation does not refund that factor; retries need
|
|
9
|
+
* fresh evidence. Mere replay-counter/code consumption preserves semantic factor
|
|
10
|
+
* revision; factor replacement/revocation changes it and wins the final password CAS.
|
|
11
|
+
* This port has no atomic factor-consumption/password-write plan.
|
|
12
|
+
* No default permits mutation. Login-pending credentials are not action grants.
|
|
13
|
+
* A session is usable only with current revision/factor authority; an unexpired
|
|
14
|
+
* pure-stateless caller alone does not prove current credential-change authority.
|
|
15
|
+
* Current recovery policy may accept a reset continuation for a single-factor
|
|
16
|
+
* subject, but it must never erase/bypass enabled MFA. No client factor assertions.
|
|
17
|
+
*/
|
|
18
|
+
var PasswordActionEvidence = class extends Context.Service()("effect-auth/PasswordActionEvidence") {};
|
|
19
|
+
//#endregion
|
|
20
|
+
export { PasswordActionEvidence };
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=PasswordActionEvidence.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PasswordActionEvidence.mjs","names":[],"sources":["../../../src/password/methods/PasswordActionEvidence.ts"],"sourcesContent":["import { Context, type Effect, type Redacted } from \"effect\";\n\nimport type { AuthInvocation } from \"../../operations/context\";\nimport type { ProofCompletionInput } from \"../../proofs/ProofPersistence\";\nimport type { AuthenticationEvidence, AuthenticationRequirement } from \"../../sessions/models\";\nimport type { PasswordActionRequired, PasswordUnavailable } from \"./errors\";\nimport type { PasswordActionChallenge } from \"./models\";\n\n/** Independently verify action-specific evidence against this exact challenge.\n * proof means fresh independently verifiable input for THIS call. Hashing uses\n * a new salt each retry: a grant bound to an earlier challenge cannot be resumed\n * here. Such a workflow requires a separately persisted replacement intent.\n * Consume replay-sensitive factor input in its OWN authority before returning.\n * A later rejected password mutation does not refund that factor; retries need\n * fresh evidence. Mere replay-counter/code consumption preserves semantic factor\n * revision; factor replacement/revocation changes it and wins the final password CAS.\n * This port has no atomic factor-consumption/password-write plan.\n * No default permits mutation. Login-pending credentials are not action grants.\n * A session is usable only with current revision/factor authority; an unexpired\n * pure-stateless caller alone does not prove current credential-change authority.\n * Current recovery policy may accept a reset continuation for a single-factor\n * subject, but it must never erase/bypass enabled MFA. No client factor assertions.\n */\nexport class PasswordActionEvidence extends Context.Service<\n PasswordActionEvidence,\n {\n readonly verify: (input: {\n readonly challenge: PasswordActionChallenge;\n readonly invocation: AuthInvocation;\n readonly proof?: Redacted.Redacted<string>;\n readonly currentPasswordEvidence?: AuthenticationEvidence;\n readonly recovery?: ProofCompletionInput;\n }) => Effect.Effect<\n {\n readonly evidence: AuthenticationEvidence;\n readonly requirement: AuthenticationRequirement;\n },\n PasswordActionRequired | PasswordUnavailable\n >;\n }\n>()(\"effect-auth/PasswordActionEvidence\") {}\n"],"mappings":";;;;;;;;;;;;;;;;;AAuBA,IAAa,yBAAb,cAA4C,QAAQ,QAiBlD,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { SubjectId } from "../../Schema.mjs";
|
|
2
|
+
import { AuthenticationRevision, SecurityRevision } from "../../sessions/models.mjs";
|
|
3
|
+
import { LoginIdentifier } from "../../identity/models.mjs";
|
|
4
|
+
import { CommitJournal, PreparedCommit } from "../../hooks/commit.mjs";
|
|
5
|
+
import { SessionInvalidationWindow } from "../../sessions/invalidation.mjs";
|
|
6
|
+
import { PasswordUnavailable } from "./errors.mjs";
|
|
7
|
+
import { PasswordActionAuthorization, PasswordAttemptAdmission, PasswordAttemptDecision, PasswordAttemptId, PasswordCommandId, PasswordCredentialSnapshot, PasswordMutationDecision, PasswordReplacement } from "./models.mjs";
|
|
8
|
+
import { ProofCompletionInput } from "../../proofs/ProofPersistence.mjs";
|
|
9
|
+
import { ProofCompletionPlan } from "../../proofs/completion.mjs";
|
|
10
|
+
import { EncodedPasswordHash } from "../models.mjs";
|
|
11
|
+
import { PasswordAttemptPolicy } from "./policy.mjs";
|
|
12
|
+
import { Context, Effect, Option, Redacted } from "effect";
|
|
13
|
+
//#region src/password/methods/PasswordPersistence.d.ts
|
|
14
|
+
type PreparePasswordCommit<Value, A> = (value: Value, journal: CommitJournal) => PreparedCommit<A>;
|
|
15
|
+
interface PasswordMutationInput {
|
|
16
|
+
readonly moduleId: string;
|
|
17
|
+
readonly commandId: PasswordCommandId;
|
|
18
|
+
readonly expectedRevision: AuthenticationRevision;
|
|
19
|
+
readonly credential?: PasswordCredentialSnapshot;
|
|
20
|
+
readonly replacement: PasswordReplacement;
|
|
21
|
+
readonly authorization: PasswordActionAuthorization;
|
|
22
|
+
readonly invalidation: SessionInvalidationWindow;
|
|
23
|
+
}
|
|
24
|
+
declare const PasswordPersistence_base: Context.ServiceClass<PasswordPersistence, "effect-auth/PasswordPersistence", {
|
|
25
|
+
/** Charge existence-independent identifier/action + known-subject rolling windows
|
|
26
|
+
* and bounded in-flight admissions before KDF. Capture active subject, identifier,
|
|
27
|
+
* actual credential and semantic revisions atomically (shared authority.capture
|
|
28
|
+
* predicate). Unknown/disabled/missing/corrupt/subject-limited return no verifier.
|
|
29
|
+
* Denial shape never reveals which bucket. No refund on interruption/abandonment;
|
|
30
|
+
* expired pending attempts remain conservatively charged through window horizons.
|
|
31
|
+
*/
|
|
32
|
+
readonly admitAttempt: <A>(input: {
|
|
33
|
+
readonly moduleId: string;
|
|
34
|
+
readonly action: "sign-in" | "change";
|
|
35
|
+
readonly identifier: LoginIdentifier;
|
|
36
|
+
readonly subjectId?: SubjectId;
|
|
37
|
+
readonly policy: PasswordAttemptPolicy;
|
|
38
|
+
}, prepare: PreparePasswordCommit<PasswordAttemptAdmission, A>) => Effect.Effect<PreparedCommit<A>, PasswordUnavailable>;
|
|
39
|
+
/** Single-use settlement. verified requires SAME captured semantic revisions and
|
|
40
|
+
* attempt ownership. Rehash CAS includes old verifier/version, changes verifierVersion
|
|
41
|
+
* only and never semantic/security revisions or a newer credential's counters.
|
|
42
|
+
* A CAS miss cannot become unconditional replacement. This does NOT issue auth.
|
|
43
|
+
* Later session approval compares this same subject securityRevision. Identifier
|
|
44
|
+
* remove/rebind/verification changes that invalidate login MUST bump it atomically;
|
|
45
|
+
* identifierBindingRevision alone is not represented in AuthenticationRevision.
|
|
46
|
+
*/
|
|
47
|
+
readonly settleAttempt: <A>(input: {
|
|
48
|
+
readonly moduleId: string;
|
|
49
|
+
readonly attemptId: PasswordAttemptId;
|
|
50
|
+
readonly captured?: PasswordCredentialSnapshot;
|
|
51
|
+
readonly outcome: PasswordAttemptDecision;
|
|
52
|
+
readonly rehash?: {
|
|
53
|
+
readonly expectedVersion: SecurityRevision;
|
|
54
|
+
readonly expectedVerifier: Redacted.Redacted<EncodedPasswordHash>;
|
|
55
|
+
readonly nextVerifier: Redacted.Redacted<EncodedPasswordHash>;
|
|
56
|
+
};
|
|
57
|
+
}, prepare: PreparePasswordCommit<PasswordAttemptDecision, A>) => Effect.Effect<PreparedCommit<A>, PasswordUnavailable>;
|
|
58
|
+
readonly readForSubject: (input: {
|
|
59
|
+
readonly moduleId: string;
|
|
60
|
+
readonly subjectId: SubjectId;
|
|
61
|
+
}) => Effect.Effect<Option.Option<PasswordCredentialSnapshot>, PasswordUnavailable>;
|
|
62
|
+
/** Only eligible verified identifiers; return None for absent/inactive/ineligible. */
|
|
63
|
+
readonly recoveryTarget: (input: {
|
|
64
|
+
readonly moduleId: string;
|
|
65
|
+
readonly identifier: LoginIdentifier;
|
|
66
|
+
}) => Effect.Effect<Option.Option<PasswordCredentialSnapshot>, PasswordUnavailable>;
|
|
67
|
+
/** Require absence, current revisions/action+factor policy/fresh clock. */
|
|
68
|
+
readonly addIfAbsent: <A>(input: PasswordMutationInput, prepare: PreparePasswordCommit<PasswordMutationDecision, A>) => Effect.Effect<PreparedCommit<A>, PasswordUnavailable>;
|
|
69
|
+
/** Exact credential CAS, current action policy/freshness; bump semantic credential
|
|
70
|
+
* and subject security revisions + pending/session invalidation in SAME authority.
|
|
71
|
+
*/
|
|
72
|
+
readonly replaceIfCurrent: <A>(input: PasswordMutationInput, prepare: PreparePasswordCommit<PasswordMutationDecision, A>) => Effect.Effect<PreparedCommit<A>, PasswordUnavailable>;
|
|
73
|
+
/** Authoritative nonconsuming preflight before exposing new-password policy
|
|
74
|
+
* results or doing KDF work. Final resetWithProof repeats every predicate/CAS.
|
|
75
|
+
*/
|
|
76
|
+
readonly checkReset: (input: ProofCompletionInput) => Effect.Effect<boolean, PasswordUnavailable>;
|
|
77
|
+
/** Compose proof predicates + replacement/invalidation atomically. Never call an
|
|
78
|
+
* independently committing ProofPersistence.complete. completed iff ALL apply.
|
|
79
|
+
* D1 preplans before batch; exact lost guard discards success journal before a
|
|
80
|
+
* separate zero-write rejected receipt. Unknown SQL failure remains unavailable.
|
|
81
|
+
*/
|
|
82
|
+
readonly resetWithProof: <A>(input: PasswordMutationInput & {
|
|
83
|
+
readonly completion: ProofCompletionPlan;
|
|
84
|
+
}, prepare: PreparePasswordCommit<PasswordMutationDecision, A>) => Effect.Effect<PreparedCommit<A>, PasswordUnavailable>;
|
|
85
|
+
readonly cleanupAttempts: <A>(input: {
|
|
86
|
+
readonly moduleId: string;
|
|
87
|
+
readonly limit: number;
|
|
88
|
+
}, prepare: PreparePasswordCommit<{
|
|
89
|
+
readonly removed: number;
|
|
90
|
+
readonly hasMore: boolean;
|
|
91
|
+
}, A>) => Effect.Effect<PreparedCommit<A>, PasswordUnavailable>;
|
|
92
|
+
}>;
|
|
93
|
+
/** Semantic authority. All mutations prepare before root physical commit and
|
|
94
|
+
* join only an explicitly matching outer authority. Prepared method plans expose
|
|
95
|
+
* a commit Effect that resolves its authority from Effect context at execution.
|
|
96
|
+
* Provide the transaction-bound implementation there. A root service must reject ambient
|
|
97
|
+
* use it cannot join before writes. No generic get/put/upsert.
|
|
98
|
+
*/
|
|
99
|
+
declare class PasswordPersistence extends PasswordPersistence_base {}
|
|
100
|
+
//#endregion
|
|
101
|
+
export { PasswordMutationInput, PasswordPersistence, PreparePasswordCommit };
|
|
102
|
+
//# sourceMappingURL=PasswordPersistence.d.mts.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Context } from "effect";
|
|
2
|
+
//#region src/password/methods/PasswordPersistence.ts
|
|
3
|
+
/** Semantic authority. All mutations prepare before root physical commit and
|
|
4
|
+
* join only an explicitly matching outer authority. Prepared method plans expose
|
|
5
|
+
* a commit Effect that resolves its authority from Effect context at execution.
|
|
6
|
+
* Provide the transaction-bound implementation there. A root service must reject ambient
|
|
7
|
+
* use it cannot join before writes. No generic get/put/upsert.
|
|
8
|
+
*/
|
|
9
|
+
var PasswordPersistence = class extends Context.Service()("effect-auth/PasswordPersistence") {};
|
|
10
|
+
//#endregion
|
|
11
|
+
export { PasswordPersistence };
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=PasswordPersistence.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PasswordPersistence.mjs","names":[],"sources":["../../../src/password/methods/PasswordPersistence.ts"],"sourcesContent":["import { Context, type Effect, type Option, type Redacted } from \"effect\";\n\nimport type { CommitJournal, PreparedCommit } from \"../../hooks/commit\";\nimport type { LoginIdentifier } from \"../../identity/models\";\nimport type { ProofCompletionPlan } from \"../../proofs/completion\";\nimport type { ProofCompletionInput } from \"../../proofs/ProofPersistence\";\nimport type { SubjectId } from \"../../Schema\";\nimport type { SessionInvalidationWindow } from \"../../sessions/invalidation\";\nimport type { AuthenticationRevision, SecurityRevision } from \"../../sessions/models\";\nimport type { EncodedPasswordHash } from \"../models\";\nimport type { PasswordUnavailable } from \"./errors\";\nimport type {\n PasswordActionAuthorization,\n PasswordAttemptAdmission,\n PasswordAttemptDecision,\n PasswordAttemptId,\n PasswordCommandId,\n PasswordCredentialSnapshot,\n PasswordMutationDecision,\n PasswordReplacement,\n} from \"./models\";\nimport type { PasswordAttemptPolicy } from \"./policy\";\n\nexport type PreparePasswordCommit<Value, A> = (\n value: Value,\n journal: CommitJournal,\n) => PreparedCommit<A>;\n\nexport interface PasswordMutationInput {\n readonly moduleId: string;\n readonly commandId: PasswordCommandId;\n readonly expectedRevision: AuthenticationRevision;\n readonly credential?: PasswordCredentialSnapshot;\n readonly replacement: PasswordReplacement;\n readonly authorization: PasswordActionAuthorization;\n readonly invalidation: SessionInvalidationWindow;\n}\n\n/** Semantic authority. All mutations prepare before root physical commit and\n * join only an explicitly matching outer authority. Prepared method plans expose\n * a commit Effect that resolves its authority from Effect context at execution.\n * Provide the transaction-bound implementation there. A root service must reject ambient\n * use it cannot join before writes. No generic get/put/upsert.\n */\nexport class PasswordPersistence extends Context.Service<\n PasswordPersistence,\n {\n /** Charge existence-independent identifier/action + known-subject rolling windows\n * and bounded in-flight admissions before KDF. Capture active subject, identifier,\n * actual credential and semantic revisions atomically (shared authority.capture\n * predicate). Unknown/disabled/missing/corrupt/subject-limited return no verifier.\n * Denial shape never reveals which bucket. No refund on interruption/abandonment;\n * expired pending attempts remain conservatively charged through window horizons.\n */\n readonly admitAttempt: <A>(\n input: {\n readonly moduleId: string;\n readonly action: \"sign-in\" | \"change\";\n readonly identifier: LoginIdentifier;\n readonly subjectId?: SubjectId;\n readonly policy: PasswordAttemptPolicy;\n },\n prepare: PreparePasswordCommit<PasswordAttemptAdmission, A>,\n ) => Effect.Effect<PreparedCommit<A>, PasswordUnavailable>;\n /** Single-use settlement. verified requires SAME captured semantic revisions and\n * attempt ownership. Rehash CAS includes old verifier/version, changes verifierVersion\n * only and never semantic/security revisions or a newer credential's counters.\n * A CAS miss cannot become unconditional replacement. This does NOT issue auth.\n * Later session approval compares this same subject securityRevision. Identifier\n * remove/rebind/verification changes that invalidate login MUST bump it atomically;\n * identifierBindingRevision alone is not represented in AuthenticationRevision.\n */\n readonly settleAttempt: <A>(\n input: {\n readonly moduleId: string;\n readonly attemptId: PasswordAttemptId;\n readonly captured?: PasswordCredentialSnapshot;\n readonly outcome: PasswordAttemptDecision;\n readonly rehash?: {\n readonly expectedVersion: SecurityRevision;\n readonly expectedVerifier: Redacted.Redacted<EncodedPasswordHash>;\n readonly nextVerifier: Redacted.Redacted<EncodedPasswordHash>;\n };\n },\n prepare: PreparePasswordCommit<PasswordAttemptDecision, A>,\n ) => Effect.Effect<PreparedCommit<A>, PasswordUnavailable>;\n readonly readForSubject: (input: {\n readonly moduleId: string;\n readonly subjectId: SubjectId;\n }) => Effect.Effect<Option.Option<PasswordCredentialSnapshot>, PasswordUnavailable>;\n /** Only eligible verified identifiers; return None for absent/inactive/ineligible. */\n readonly recoveryTarget: (input: {\n readonly moduleId: string;\n readonly identifier: LoginIdentifier;\n }) => Effect.Effect<Option.Option<PasswordCredentialSnapshot>, PasswordUnavailable>;\n /** Require absence, current revisions/action+factor policy/fresh clock. */\n readonly addIfAbsent: <A>(\n input: PasswordMutationInput,\n prepare: PreparePasswordCommit<PasswordMutationDecision, A>,\n ) => Effect.Effect<PreparedCommit<A>, PasswordUnavailable>;\n /** Exact credential CAS, current action policy/freshness; bump semantic credential\n * and subject security revisions + pending/session invalidation in SAME authority.\n */\n readonly replaceIfCurrent: <A>(\n input: PasswordMutationInput,\n prepare: PreparePasswordCommit<PasswordMutationDecision, A>,\n ) => Effect.Effect<PreparedCommit<A>, PasswordUnavailable>;\n /** Authoritative nonconsuming preflight before exposing new-password policy\n * results or doing KDF work. Final resetWithProof repeats every predicate/CAS.\n */\n readonly checkReset: (\n input: ProofCompletionInput,\n ) => Effect.Effect<boolean, PasswordUnavailable>;\n /** Compose proof predicates + replacement/invalidation atomically. Never call an\n * independently committing ProofPersistence.complete. completed iff ALL apply.\n * D1 preplans before batch; exact lost guard discards success journal before a\n * separate zero-write rejected receipt. Unknown SQL failure remains unavailable.\n */\n readonly resetWithProof: <A>(\n input: PasswordMutationInput & { readonly completion: ProofCompletionPlan },\n prepare: PreparePasswordCommit<PasswordMutationDecision, A>,\n ) => Effect.Effect<PreparedCommit<A>, PasswordUnavailable>;\n readonly cleanupAttempts: <A>(\n input: { readonly moduleId: string; readonly limit: number },\n prepare: PreparePasswordCommit<{ readonly removed: number; readonly hasMore: boolean }, A>,\n ) => Effect.Effect<PreparedCommit<A>, PasswordUnavailable>;\n }\n>()(\"effect-auth/PasswordPersistence\") {}\n"],"mappings":";;;;;;;;AA4CA,IAAa,sBAAb,cAAyC,QAAQ,QAmF/C,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { SubjectId } from "../../Schema.mjs";
|
|
2
|
+
import { AuthenticationRequirement } from "../../sessions/models.mjs";
|
|
3
|
+
import { PreparedCommit } from "../../hooks/commit.mjs";
|
|
4
|
+
import { SessionInvalidationWindow } from "../../sessions/invalidation.mjs";
|
|
5
|
+
import { PasswordRejected, PasswordUnavailable } from "./errors.mjs";
|
|
6
|
+
import { PasswordAction, PasswordCommandId, PasswordMutationDecision } from "./models.mjs";
|
|
7
|
+
import { ProofCompletionInput } from "../../proofs/ProofPersistence.mjs";
|
|
8
|
+
import { ProofCompletionPlan } from "../../proofs/completion.mjs";
|
|
9
|
+
import { PasswordMutationInput, PreparePasswordCommit } from "./PasswordPersistence.mjs";
|
|
10
|
+
import { PasswordPreparedConfiguration, PasswordPreparedIntentId, PasswordPreparedReady, PasswordPreparedReservation, PasswordPreparedReset } from "./preparedModels.mjs";
|
|
11
|
+
import { Effect } from "effect";
|
|
12
|
+
//#region src/password/methods/PasswordPreparedPersistence.d.ts
|
|
13
|
+
interface PasswordPreparedMutation {
|
|
14
|
+
readonly intent: PasswordPreparedReady;
|
|
15
|
+
readonly mutation: PasswordMutationInput;
|
|
16
|
+
readonly capturedRequirement: AuthenticationRequirement;
|
|
17
|
+
readonly currentRequirement: AuthenticationRequirement;
|
|
18
|
+
readonly nowMillis: number;
|
|
19
|
+
}
|
|
20
|
+
type PasswordPreparedReserveDecision = {
|
|
21
|
+
readonly _tag: "Existing";
|
|
22
|
+
} | {
|
|
23
|
+
readonly _tag: "Reserved";
|
|
24
|
+
readonly reservation: PasswordPreparedReservation;
|
|
25
|
+
};
|
|
26
|
+
/** Optional semantic authority, separate from ordinary PasswordPersistence. Every
|
|
27
|
+
* callback is synchronous preparation before the actual root commit. A self-owned
|
|
28
|
+
* method rejects an ambient owner it cannot join. Never compose independently
|
|
29
|
+
* committed password, intent or proof writes to implement these commands.
|
|
30
|
+
*/
|
|
31
|
+
interface PasswordPreparedPersistence {
|
|
32
|
+
/** Committed admission before KDF. Enforce module/command uniqueness across all
|
|
33
|
+
* actions and subjects through retention, action+subject rolling budgets and
|
|
34
|
+
* active Preparing+Ready cap. For the admission identifier bucket use the
|
|
35
|
+
* known canonical credential identifier, or the subject key for Add; the
|
|
36
|
+
* admission counters and reservation must commit under the SAME authority.
|
|
37
|
+
* Cap/budget denial is PasswordUnavailable, never Existing; no denial charge
|
|
38
|
+
* commit is required. Return Existing only after the action's authority check. A winner
|
|
39
|
+
* captures current subject/credential revisions and authoritative ACTION policy
|
|
40
|
+
* in the same owner. Change/Reset require an existing exact credential; Add absence.
|
|
41
|
+
* Reset repeats supplied proof preflight but does not consume it. No takeover or
|
|
42
|
+
* resume of Preparing; a crashed winner needs a new command. */
|
|
43
|
+
readonly reserve: <A>(input: {
|
|
44
|
+
readonly moduleId: string;
|
|
45
|
+
readonly generation: number;
|
|
46
|
+
readonly intentId: PasswordPreparedIntentId;
|
|
47
|
+
readonly commandId: PasswordCommandId;
|
|
48
|
+
readonly action: PasswordAction;
|
|
49
|
+
readonly subjectId: SubjectId;
|
|
50
|
+
readonly nowMillis: number;
|
|
51
|
+
readonly policy: PasswordPreparedConfiguration;
|
|
52
|
+
readonly invalidation: SessionInvalidationWindow;
|
|
53
|
+
readonly reset?: PasswordPreparedReset;
|
|
54
|
+
readonly completion?: ProofCompletionInput;
|
|
55
|
+
}, prepare: PreparePasswordCommit<PasswordPreparedReserveDecision, A>) => Effect.Effect<PreparedCommit<A>, PasswordUnavailable>;
|
|
56
|
+
/** Exact Preparing version/current revision/lease CAS; attach immutable material,
|
|
57
|
+
* never overwrite or return another Ready. A changed transition owns this matching
|
|
58
|
+
* digest and bearer. Unknown commit remains unavailable, never reissues a bearer. */
|
|
59
|
+
readonly publishReady: <A>(input: {
|
|
60
|
+
readonly reservation: PasswordPreparedReservation;
|
|
61
|
+
readonly ready: PasswordPreparedReady;
|
|
62
|
+
readonly nowMillis: number;
|
|
63
|
+
}, prepare: PreparePasswordCommit<"published" | "rejected", A>) => Effect.Effect<PreparedCommit<A>, PasswordUnavailable>;
|
|
64
|
+
/** Ready only: recheck module/generation/digest/time, active subject, identifier,
|
|
65
|
+
* semantic and verifier CAS plus current ACTION policy. No Claims decoder. */
|
|
66
|
+
readonly context: (input: {
|
|
67
|
+
readonly moduleId: string;
|
|
68
|
+
readonly generation: number;
|
|
69
|
+
readonly digest: PasswordPreparedReady["digest"];
|
|
70
|
+
readonly nowMillis: number;
|
|
71
|
+
}) => Effect.Effect<{
|
|
72
|
+
readonly record: PasswordPreparedReady;
|
|
73
|
+
readonly currentRequirement: AuthenticationRequirement;
|
|
74
|
+
}, PasswordRejected | PasswordUnavailable>;
|
|
75
|
+
/** ONE owner consumes exact Ready/version/digest, applies Add/Replace, semantic
|
|
76
|
+
* revision bumps, required invalidation and command marker. At commit clock check
|
|
77
|
+
* provider AND captured AND current action requirements, all original revision
|
|
78
|
+
* entries and Change proof timestamps. Re-read under subject→identifier→sorted
|
|
79
|
+
* credentials→intent lock order. Exact zero-write postconditions roll back all.
|
|
80
|
+
* Every authoritative ACTION-policy change must atomically bump subject
|
|
81
|
+
* securityRevision; this fences queued D1 changes without a policy-only read.
|
|
82
|
+
* Native/D1 known losers may create an adapter-owned rejected receipt; never replay
|
|
83
|
+
* a consumer callback or an unknown batch. */
|
|
84
|
+
readonly complete: <A>(input: PasswordPreparedMutation, prepare: PreparePasswordCommit<PasswordMutationDecision, A>) => Effect.Effect<PreparedCommit<A>, PasswordUnavailable>;
|
|
85
|
+
/** Same transition plus original exact proof continuation consume. The supplied
|
|
86
|
+
* plan was recreated with its original bearer, not serialized from the intent. */
|
|
87
|
+
readonly resetWithProof: <A>(input: PasswordPreparedMutation & {
|
|
88
|
+
readonly completion: ProofCompletionPlan;
|
|
89
|
+
}, prepare: PreparePasswordCommit<PasswordMutationDecision, A>) => Effect.Effect<PreparedCommit<A>, PasswordUnavailable>;
|
|
90
|
+
/** Cancel only this live digest/version. Retain command tombstone/admission through
|
|
91
|
+
* retainUntil; cancellation never makes old command IDs available for takeover. */
|
|
92
|
+
readonly cancel: <A>(input: {
|
|
93
|
+
readonly record: PasswordPreparedReady;
|
|
94
|
+
readonly nowMillis: number;
|
|
95
|
+
}, prepare: PreparePasswordCommit<boolean, A>) => Effect.Effect<PreparedCommit<A>, PasswordUnavailable>;
|
|
96
|
+
/** Bounded, authoritative hasMore. Erase expired sensitive material while retaining
|
|
97
|
+
* command tombstones and active admission charges until their independent horizons.
|
|
98
|
+
* Touch at most limit distinct records, including erase-only tombstones. removed
|
|
99
|
+
* counts fully deleted rows; hasMore covers remaining due erasure OR deletion. */
|
|
100
|
+
readonly cleanup: <A>(input: {
|
|
101
|
+
readonly moduleId: string;
|
|
102
|
+
readonly limit: number;
|
|
103
|
+
readonly nowMillis: number;
|
|
104
|
+
}, prepare: PreparePasswordCommit<{
|
|
105
|
+
readonly removed: number;
|
|
106
|
+
readonly hasMore: boolean;
|
|
107
|
+
}, A>) => Effect.Effect<PreparedCommit<A>, PasswordUnavailable>;
|
|
108
|
+
}
|
|
109
|
+
//#endregion
|
|
110
|
+
export { PasswordPreparedMutation, PasswordPreparedPersistence, PasswordPreparedReserveDecision };
|
|
111
|
+
//# sourceMappingURL=PasswordPreparedPersistence.d.mts.map
|