@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,293 @@
|
|
|
1
|
+
import { TokenDigest } from "../Schema.mjs";
|
|
2
|
+
import { LoginIdentifier } from "../identity/models.mjs";
|
|
3
|
+
import { HookDenied } from "../hooks/models.mjs";
|
|
4
|
+
import { makeOperation, operationGroup } from "../operations/operation.mjs";
|
|
5
|
+
import { AuthenticationFlowId, AuthenticationRevision } from "../sessions/models.mjs";
|
|
6
|
+
import { cryptoLayer, defaultLayer, hooksLayer } from "../auth/defaults.mjs";
|
|
7
|
+
import { hasCommitScope } from "../hooks/commit.mjs";
|
|
8
|
+
import { AuthenticationAuthority } from "../sessions/AuthenticationAuthority.mjs";
|
|
9
|
+
import { makeAuthStrategy } from "../auth/AuthStrategy.mjs";
|
|
10
|
+
import { ProofBinding, ProofPurpose, ProofRequestId, ProofRequestReceipt } from "../proofs/models.mjs";
|
|
11
|
+
import { RequestBindingFlowId } from "../operations/requestBindingModels.mjs";
|
|
12
|
+
import { makeRequestBinding } from "../operations/requestBinding.mjs";
|
|
13
|
+
import { PhoneSignInTargets } from "./PhoneSignInTargets.mjs";
|
|
14
|
+
import { PhoneCredentialSnapshot, PhoneNumber, PhoneOtpComplete, PhoneOtpRejected, PhoneOtpUnavailable } from "./models.mjs";
|
|
15
|
+
import { readProofCommit } from "../proofs/dispatch.mjs";
|
|
16
|
+
import { makeProofModule, snapshotProofConfiguration } from "../proofs/module.mjs";
|
|
17
|
+
import { phoneFailure } from "./failure.mjs";
|
|
18
|
+
import { PhoneDeliveryEligibility } from "./PhoneDeliveryEligibility.mjs";
|
|
19
|
+
import { makePhoneLifecycle, phoneAdmission, phoneAttemptAdmission, phoneDigest } from "./lifecycle.mjs";
|
|
20
|
+
import { Context, Crypto, DateTime, Effect, Encoding, Layer, Option, Schema } from "effect";
|
|
21
|
+
//#region src/phone/module.ts
|
|
22
|
+
const defaultPolicy = {
|
|
23
|
+
lifetimeMillis: 3e5,
|
|
24
|
+
continuationLifetimeMillis: 3e4,
|
|
25
|
+
maximumFailedAttempts: 5,
|
|
26
|
+
maximumDeliveryAttempts: 1,
|
|
27
|
+
deliveryClaimMillis: 1e4,
|
|
28
|
+
deliveryRetryMillis: 3e4,
|
|
29
|
+
requestRetentionMillis: 36e5,
|
|
30
|
+
abuse: {
|
|
31
|
+
issues: {
|
|
32
|
+
limit: 5,
|
|
33
|
+
windowMillis: 36e5
|
|
34
|
+
},
|
|
35
|
+
attempts: {
|
|
36
|
+
limit: 10,
|
|
37
|
+
windowMillis: 3e5
|
|
38
|
+
},
|
|
39
|
+
subjectIssues: {
|
|
40
|
+
limit: 5,
|
|
41
|
+
windowMillis: 36e5
|
|
42
|
+
},
|
|
43
|
+
subjectAttempts: {
|
|
44
|
+
limit: 10,
|
|
45
|
+
windowMillis: 3e5
|
|
46
|
+
},
|
|
47
|
+
actionIssues: {
|
|
48
|
+
limit: 1e3,
|
|
49
|
+
windowMillis: 36e5
|
|
50
|
+
},
|
|
51
|
+
actionAttempts: {
|
|
52
|
+
limit: 1e3,
|
|
53
|
+
windowMillis: 3e5
|
|
54
|
+
},
|
|
55
|
+
resendCooldownMillis: 3e4
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
/** Capture the phone method's proof defaults when its descriptor is constructed. */
|
|
59
|
+
const snapshotPhoneConfiguration = (input) => snapshotProofConfiguration({
|
|
60
|
+
...input,
|
|
61
|
+
policy: input.policy ?? defaultPolicy,
|
|
62
|
+
secret: {
|
|
63
|
+
_tag: "NumericCode",
|
|
64
|
+
digits: input.digits ?? 6
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
const Start = Schema.Struct({
|
|
68
|
+
flowId: RequestBindingFlowId,
|
|
69
|
+
requestId: ProofRequestId,
|
|
70
|
+
phoneNumber: PhoneNumber,
|
|
71
|
+
locale: Schema.NonEmptyString.check(Schema.isMaxLength(64))
|
|
72
|
+
});
|
|
73
|
+
const Challenge = Schema.Struct({
|
|
74
|
+
...ProofRequestReceipt.fields,
|
|
75
|
+
flowId: RequestBindingFlowId
|
|
76
|
+
});
|
|
77
|
+
const Failure = Schema.Union([
|
|
78
|
+
PhoneOtpRejected,
|
|
79
|
+
PhoneOtpUnavailable,
|
|
80
|
+
HookDenied
|
|
81
|
+
]);
|
|
82
|
+
const tuple = Schema.fromJsonString(Schema.Array(Schema.String));
|
|
83
|
+
const noAmbient = Effect.fn("PhoneOtp.noAmbient")(function* () {
|
|
84
|
+
if (yield* hasCommitScope) return yield* PhoneOtpUnavailable.make({});
|
|
85
|
+
});
|
|
86
|
+
/** Existing-account SMS sign-in. Verification consumes its proof before session
|
|
87
|
+
* issuance; failure after consumption requires a fresh code. No distributed
|
|
88
|
+
* atomicity or implicit account linking is claimed.
|
|
89
|
+
*/
|
|
90
|
+
const makePhoneOtp = (moduleId, options) => {
|
|
91
|
+
const { sessions } = options;
|
|
92
|
+
const binding = makeRequestBinding(moduleId, "phone-otp-sign-in");
|
|
93
|
+
const proof = makeProofModule(`${moduleId}/sign-in`, {
|
|
94
|
+
purpose: ProofPurpose.make("phone-otp-sign-in"),
|
|
95
|
+
binding: ProofBinding,
|
|
96
|
+
channel: "sms",
|
|
97
|
+
template: options.template,
|
|
98
|
+
keys: options.keys,
|
|
99
|
+
secret: {
|
|
100
|
+
_tag: "NumericCode",
|
|
101
|
+
digits: options.digits ?? 6
|
|
102
|
+
},
|
|
103
|
+
policy: options.policy ?? defaultPolicy
|
|
104
|
+
});
|
|
105
|
+
const ClaimsForPhone = Context.Service(`effect-auth/ClaimsForPhone/${moduleId.length}:${moduleId}`);
|
|
106
|
+
const lifecycle = makePhoneLifecycle(moduleId, {
|
|
107
|
+
...options,
|
|
108
|
+
policy: options.policy ?? defaultPolicy,
|
|
109
|
+
digits: options.digits ?? 6
|
|
110
|
+
}, ClaimsForPhone);
|
|
111
|
+
const capture = Effect.fn("PhoneOtp.capture")(function* (request) {
|
|
112
|
+
const verified = yield* (yield* binding.RequestBinding).verify(request.flowId, request.requestBinding).pipe(Effect.mapError(phoneFailure));
|
|
113
|
+
const candidate = yield* (yield* PhoneSignInTargets).lookup({
|
|
114
|
+
moduleId,
|
|
115
|
+
phoneNumber: request.phoneNumber
|
|
116
|
+
});
|
|
117
|
+
let target = Option.none();
|
|
118
|
+
if (Option.isSome(candidate)) {
|
|
119
|
+
const codec = Schema.toCodecJson(PhoneCredentialSnapshot);
|
|
120
|
+
const snapshot = yield* Schema.encodeEffect(codec)(candidate.value).pipe(Effect.flatMap(Schema.decodeEffect(codec)), Effect.mapError(phoneFailure));
|
|
121
|
+
const current = yield* (yield* AuthenticationAuthority).capture(snapshot.revision.subjectId, [snapshot.credentialId]).pipe(Effect.map(Option.some), Effect.catchTag("StaleAuthentication", () => Effect.succeed(Option.none())), Effect.mapError(phoneFailure));
|
|
122
|
+
if (Option.isSome(current)) {
|
|
123
|
+
const revision = yield* Schema.encodeEffect(Schema.toCodecJson(AuthenticationRevision))(current.value).pipe(Effect.flatMap(Schema.decodeEffect(Schema.toCodecJson(AuthenticationRevision)))).pipe(Effect.mapError(phoneFailure));
|
|
124
|
+
if (snapshot.moduleId === moduleId && snapshot.phoneNumber === request.phoneNumber && snapshot.verifiedAtMillis <= DateTime.toEpochMillis(yield* DateTime.now) && revision.subjectId === snapshot.revision.subjectId && revision.securityRevision === snapshot.revision.securityRevision && revision.credentials.some((value) => value.credentialId === snapshot.credentialId && value.revision === snapshot.credentialRevision)) target = Option.some({
|
|
125
|
+
...snapshot,
|
|
126
|
+
revision
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
const encoded = yield* Schema.encodeEffect(tuple)([
|
|
131
|
+
"effect-auth/phone-otp-sign-in/v1",
|
|
132
|
+
moduleId,
|
|
133
|
+
request.flowId,
|
|
134
|
+
verified.verifier,
|
|
135
|
+
request.phoneNumber,
|
|
136
|
+
Option.isSome(target) ? target.value.custodyRevision : ""
|
|
137
|
+
]).pipe(Effect.mapError(phoneFailure));
|
|
138
|
+
const digest = yield* (yield* Crypto.Crypto).digest("SHA-256", new TextEncoder().encode(encoded)).pipe(Effect.mapError(phoneFailure));
|
|
139
|
+
const base = {
|
|
140
|
+
flowId: request.flowId,
|
|
141
|
+
contextDigest: TokenDigest.make(Encoding.encodeBase64Url(digest)),
|
|
142
|
+
identifier: LoginIdentifier.make({
|
|
143
|
+
namespace: "phone",
|
|
144
|
+
value: request.phoneNumber
|
|
145
|
+
})
|
|
146
|
+
};
|
|
147
|
+
const proofBinding = Option.isSome(target) ? {
|
|
148
|
+
_tag: "Subject",
|
|
149
|
+
...base,
|
|
150
|
+
revision: target.value.revision
|
|
151
|
+
} : {
|
|
152
|
+
_tag: "Identifier",
|
|
153
|
+
...base
|
|
154
|
+
};
|
|
155
|
+
return {
|
|
156
|
+
target,
|
|
157
|
+
binding: proofBinding
|
|
158
|
+
};
|
|
159
|
+
});
|
|
160
|
+
const admitSignIn = Effect.fn("PhoneOtp.admitRequest")(function* (input) {
|
|
161
|
+
if (!(yield* phoneAdmission(moduleId, "request", input.requestId, yield* phoneDigest([
|
|
162
|
+
"sign-in",
|
|
163
|
+
input.flowId,
|
|
164
|
+
input.phoneNumber,
|
|
165
|
+
input.locale
|
|
166
|
+
]), options.policy?.requestRetentionMillis ?? defaultPolicy.requestRetentionMillis))) return yield* PhoneOtpRejected.make({});
|
|
167
|
+
});
|
|
168
|
+
const SignIn = makeOperation(`${moduleId}/sign-in`, {
|
|
169
|
+
payload: Start,
|
|
170
|
+
authorize: admitSignIn,
|
|
171
|
+
success: Challenge,
|
|
172
|
+
error: Failure,
|
|
173
|
+
access: "any",
|
|
174
|
+
exposure: "public",
|
|
175
|
+
replay: "non-idempotent",
|
|
176
|
+
credentials: true
|
|
177
|
+
});
|
|
178
|
+
const Complete = makeOperation(`${moduleId}/complete`, {
|
|
179
|
+
payload: PhoneOtpComplete,
|
|
180
|
+
authorize: (input) => phoneAttemptAdmission(moduleId, input.flowId, input.reference.proofId),
|
|
181
|
+
success: sessions.CompletionResult,
|
|
182
|
+
error: Failure,
|
|
183
|
+
access: "any",
|
|
184
|
+
exposure: "public",
|
|
185
|
+
replay: "single-use",
|
|
186
|
+
credentials: true
|
|
187
|
+
});
|
|
188
|
+
const handlersLayer = Layer.mergeAll(SignIn.credentialHandlerLayer(Effect.fn("PhoneOtp.signIn")(function* (input, invocation) {
|
|
189
|
+
yield* noAmbient();
|
|
190
|
+
if (invocation._tag !== "Guest") return yield* PhoneOtpRejected.make({});
|
|
191
|
+
const issued = yield* (yield* binding.RequestBinding).issue(input.flowId).pipe(Effect.mapError(phoneFailure));
|
|
192
|
+
const credential = issued.credentialCommands.find((command) => command._tag === "Issue" && command.slot === "request-binding");
|
|
193
|
+
if (credential?._tag !== "Issue") return yield* PhoneOtpUnavailable.make({});
|
|
194
|
+
const current = yield* capture({
|
|
195
|
+
...input,
|
|
196
|
+
requestBinding: credential.credential
|
|
197
|
+
});
|
|
198
|
+
const eligible = yield* (yield* PhoneDeliveryEligibility).allowed(input.phoneNumber);
|
|
199
|
+
const dispatch = yield* (yield* proof.Proofs).prepareIssue({
|
|
200
|
+
requestId: input.requestId,
|
|
201
|
+
binding: current.binding,
|
|
202
|
+
locale: input.locale,
|
|
203
|
+
eligible: Option.isSome(current.target) && eligible
|
|
204
|
+
}).pipe(Effect.flatMap(readProofCommit), Effect.mapError(phoneFailure));
|
|
205
|
+
yield* dispatch.dispatch.pipe(Effect.mapError(phoneFailure));
|
|
206
|
+
return {
|
|
207
|
+
value: {
|
|
208
|
+
...dispatch.receipt,
|
|
209
|
+
flowId: input.flowId
|
|
210
|
+
},
|
|
211
|
+
credentialCommands: issued.credentialCommands
|
|
212
|
+
};
|
|
213
|
+
})), Complete.credentialHandlerLayer(Effect.fn("PhoneOtp.completeSignIn")(function* (input, invocation) {
|
|
214
|
+
yield* noAmbient();
|
|
215
|
+
if (invocation._tag !== "Guest") return yield* PhoneOtpRejected.make({});
|
|
216
|
+
const current = yield* capture(input);
|
|
217
|
+
const verifiedAt = yield* DateTime.now;
|
|
218
|
+
const proofs = yield* proof.Proofs;
|
|
219
|
+
const attempted = yield* proofs.prepareAttempt({
|
|
220
|
+
binding: current.binding,
|
|
221
|
+
reference: input.reference,
|
|
222
|
+
credential: input.code
|
|
223
|
+
}).pipe(Effect.flatMap(readProofCommit), Effect.mapError(phoneFailure));
|
|
224
|
+
if (attempted.value._tag !== "Accepted" || Option.isNone(current.target)) return yield* PhoneOtpRejected.make({});
|
|
225
|
+
const continuation = attempted.credentialCommands.find((command) => command._tag === "Issue" && command.slot === "proof-continuation");
|
|
226
|
+
if (continuation?._tag !== "Issue") return yield* PhoneOtpUnavailable.make({});
|
|
227
|
+
if ((yield* proofs.prepareComplete({
|
|
228
|
+
binding: current.binding,
|
|
229
|
+
continuationId: attempted.value.continuation.continuationId,
|
|
230
|
+
credential: continuation.credential
|
|
231
|
+
}).pipe(Effect.flatMap(readProofCommit), Effect.mapError(phoneFailure))) !== "completed") return yield* PhoneOtpRejected.make({});
|
|
232
|
+
const evidence = {
|
|
233
|
+
flowId: AuthenticationFlowId.make(input.flowId),
|
|
234
|
+
bindingDigest: current.binding.contextDigest,
|
|
235
|
+
revision: current.target.value.revision,
|
|
236
|
+
proofs: [{
|
|
237
|
+
method: "phone-otp",
|
|
238
|
+
credentialId: current.target.value.credentialId,
|
|
239
|
+
factors: ["possession"],
|
|
240
|
+
userVerified: false,
|
|
241
|
+
phishingResistant: false,
|
|
242
|
+
verifiedAt
|
|
243
|
+
}]
|
|
244
|
+
};
|
|
245
|
+
const claimCredential = yield* Schema.encodeEffect(Schema.toCodecJson(PhoneCredentialSnapshot))(current.target.value).pipe(Effect.flatMap(Schema.decodeEffect(Schema.toCodecJson(PhoneCredentialSnapshot))), Effect.mapError(phoneFailure));
|
|
246
|
+
const claims = yield* (yield* ClaimsForPhone).resolve(claimCredential);
|
|
247
|
+
const established = yield* (yield* sessions.AuthenticationCompletion).prepare({
|
|
248
|
+
evidence,
|
|
249
|
+
claims
|
|
250
|
+
}).pipe(Effect.flatMap((receipt) => receipt.read), Effect.mapError(phoneFailure));
|
|
251
|
+
return {
|
|
252
|
+
value: established.value,
|
|
253
|
+
credentialCommands: [...established.credentialCommands, {
|
|
254
|
+
_tag: "Clear",
|
|
255
|
+
slot: "request-binding"
|
|
256
|
+
}]
|
|
257
|
+
};
|
|
258
|
+
})));
|
|
259
|
+
const layer = handlersLayer.pipe(Layer.provide(defaultLayer(binding.RequestBinding, binding.layer)), Layer.provide(defaultLayer(proof.Proofs, proof.smsLayer)), Layer.provide([cryptoLayer, hooksLayer]), Layer.merge(lifecycle.layer));
|
|
260
|
+
return Object.freeze({
|
|
261
|
+
ClaimsForPhone,
|
|
262
|
+
lifecycle,
|
|
263
|
+
binding,
|
|
264
|
+
proof,
|
|
265
|
+
layer,
|
|
266
|
+
handlersLayer: Layer.merge(handlersLayer, lifecycle.handlersLayer),
|
|
267
|
+
operations: {
|
|
268
|
+
SignIn,
|
|
269
|
+
Complete,
|
|
270
|
+
...lifecycle.operations
|
|
271
|
+
},
|
|
272
|
+
group: operationGroup(SignIn, Complete, lifecycle.operations.Begin, lifecycle.operations.Resend, lifecycle.operations.CompleteLifecycle, lifecycle.operations.Cancel, lifecycle.operations.Cleanup),
|
|
273
|
+
strategy: makeAuthStrategy({
|
|
274
|
+
signIn: Effect.fn("PhoneOtp.signInRequest")(function* (invocation, input) {
|
|
275
|
+
const crypto = yield* Crypto.Crypto;
|
|
276
|
+
const flowId = yield* crypto.randomUUIDv4.pipe(Effect.mapError(phoneFailure));
|
|
277
|
+
const requestId = yield* crypto.randomUUIDv4.pipe(Effect.mapError(phoneFailure));
|
|
278
|
+
return yield* SignIn.invoke(invocation, {
|
|
279
|
+
...input,
|
|
280
|
+
flowId,
|
|
281
|
+
requestId,
|
|
282
|
+
locale: input.locale ?? "en"
|
|
283
|
+
});
|
|
284
|
+
}),
|
|
285
|
+
completeSignIn: Complete.invoke,
|
|
286
|
+
...lifecycle.methods
|
|
287
|
+
}, layer.pipe(Layer.provideMerge(cryptoLayer)), { completion: true })
|
|
288
|
+
});
|
|
289
|
+
};
|
|
290
|
+
//#endregion
|
|
291
|
+
export { makePhoneOtp, snapshotPhoneConfiguration };
|
|
292
|
+
|
|
293
|
+
//# sourceMappingURL=module.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.mjs","names":[],"sources":["../../src/phone/module.ts"],"sourcesContent":["import {\n Context,\n Crypto,\n DateTime,\n Effect,\n Encoding,\n Layer,\n Option,\n Schema,\n type Types,\n} from \"effect\";\n\nimport { makeAuthStrategy } from \"../auth/AuthStrategy\";\nimport { cryptoLayer, defaultLayer, hooksLayer } from \"../auth/defaults\";\nimport { hasCommitScope } from \"../hooks/commit\";\nimport { HookDenied } from \"../hooks/models\";\nimport { LoginIdentifier } from \"../identity/models\";\nimport type { AuthInvocation } from \"../operations/context\";\nimport { makeOperation, operationGroup } from \"../operations/operation\";\nimport type { RequestBindingCredential } from \"../operations/requestBinding\";\nimport { makeRequestBinding, RequestBindingFlowId } from \"../operations/requestBinding\";\nimport type { ProofKeyring } from \"../proofs/crypto\";\nimport { readProofCommit } from \"../proofs/dispatch\";\nimport { ProofBinding, ProofPurpose, ProofRequestId, ProofRequestReceipt } from \"../proofs/models\";\nimport { makeProofModule, snapshotProofConfiguration } from \"../proofs/module\";\nimport type { ProofPolicy } from \"../proofs/policy\";\nimport { TokenDigest } from \"../Schema\";\nimport { AuthenticationAuthority } from \"../sessions/AuthenticationAuthority\";\nimport {\n AuthenticationFlowId,\n AuthenticationRevision,\n type AuthenticationEvidence,\n} from \"../sessions/models\";\nimport type { makeSessionModule } from \"../sessions/module\";\nimport { phoneFailure } from \"./failure\";\nimport {\n makePhoneLifecycle,\n phoneAdmission,\n phoneDigest,\n phoneAttemptAdmission,\n} from \"./lifecycle\";\nimport type { PhoneLifecyclePolicy } from \"./lifecycleModels\";\nimport {\n PhoneCredentialSnapshot,\n PhoneNumber,\n PhoneOtpComplete,\n PhoneOtpRejected,\n PhoneOtpUnavailable,\n} from \"./models\";\nimport { PhoneDeliveryEligibility } from \"./PhoneDeliveryEligibility\";\nimport { PhoneSignInTargets } from \"./PhoneSignInTargets\";\n\nconst defaultPolicy: ProofPolicy = {\n lifetimeMillis: 300_000,\n continuationLifetimeMillis: 30_000,\n maximumFailedAttempts: 5,\n maximumDeliveryAttempts: 1,\n deliveryClaimMillis: 10_000,\n deliveryRetryMillis: 30_000,\n requestRetentionMillis: 3_600_000,\n abuse: {\n issues: { limit: 5, windowMillis: 3_600_000 },\n attempts: { limit: 10, windowMillis: 300_000 },\n subjectIssues: { limit: 5, windowMillis: 3_600_000 },\n subjectAttempts: { limit: 10, windowMillis: 300_000 },\n actionIssues: { limit: 1000, windowMillis: 3_600_000 },\n actionAttempts: { limit: 1000, windowMillis: 300_000 },\n resendCooldownMillis: 30_000,\n },\n};\n\n/** Capture the phone method's proof defaults when its descriptor is constructed. */\nexport const snapshotPhoneConfiguration = <\n Configuration extends {\n readonly template: string;\n readonly keys: ProofKeyring;\n readonly policy?: ProofPolicy;\n readonly digits?: 6 | 7 | 8 | 9 | 10;\n readonly lifecycle?: PhoneLifecyclePolicy;\n },\n>(\n input: Configuration,\n) =>\n snapshotProofConfiguration({\n ...input,\n policy: input.policy ?? defaultPolicy,\n secret: { _tag: \"NumericCode\" as const, digits: input.digits ?? 6 },\n });\n\nconst Start = Schema.Struct({\n flowId: RequestBindingFlowId,\n requestId: ProofRequestId,\n phoneNumber: PhoneNumber,\n locale: Schema.NonEmptyString.check(Schema.isMaxLength(64)),\n});\n\nconst Challenge = Schema.Struct({ ...ProofRequestReceipt.fields, flowId: RequestBindingFlowId });\nconst Failure = Schema.Union([PhoneOtpRejected, PhoneOtpUnavailable, HookDenied]);\nconst tuple = Schema.fromJsonString(Schema.Array(Schema.String));\n\nconst noAmbient = Effect.fn(\"PhoneOtp.noAmbient\")(function* () {\n if (yield* hasCommitScope) return yield* PhoneOtpUnavailable.make({});\n});\n\n/** Existing-account SMS sign-in. Verification consumes its proof before session\n * issuance; failure after consumption requires a fresh code. No distributed\n * atomicity or implicit account linking is claimed.\n */\nexport const makePhoneOtp = <\n const Id extends string,\n const SessionId extends string,\n Claims extends Schema.Codec<unknown, unknown, unknown, unknown>,\n>(\n moduleId: Id,\n options: {\n readonly sessions: ReturnType<typeof makeSessionModule<SessionId, Claims>>;\n readonly template: string;\n readonly keys: ProofKeyring;\n readonly policy?: ProofPolicy;\n readonly digits?: 6 | 7 | 8 | 9 | 10;\n readonly lifecycle?: PhoneLifecyclePolicy;\n },\n) => {\n const { sessions } = options;\n const binding = makeRequestBinding(moduleId, \"phone-otp-sign-in\");\n\n const proof = makeProofModule(`${moduleId}/sign-in`, {\n purpose: ProofPurpose.make(\"phone-otp-sign-in\"),\n binding: ProofBinding,\n channel: \"sms\",\n template: options.template,\n keys: options.keys,\n secret: { _tag: \"NumericCode\", digits: options.digits ?? 6 },\n policy: options.policy ?? defaultPolicy,\n });\n\n const ClaimsForPhone = Context.Service<\n {\n readonly moduleId: Id;\n readonly kind: \"phone-claims\";\n readonly claims: Types.Invariant<Claims[\"Type\"]>;\n },\n {\n readonly resolve: (\n credential: PhoneCredentialSnapshot,\n ) => Effect.Effect<Claims[\"Type\"], PhoneOtpUnavailable>;\n }\n >(`effect-auth/ClaimsForPhone/${moduleId.length}:${moduleId}`);\n\n const lifecycle = makePhoneLifecycle(\n moduleId,\n { ...options, policy: options.policy ?? defaultPolicy, digits: options.digits ?? 6 },\n ClaimsForPhone,\n );\n\n const capture = Effect.fn(\"PhoneOtp.capture\")(function* (request: {\n readonly flowId: RequestBindingFlowId;\n readonly phoneNumber: PhoneNumber;\n readonly requestBinding: typeof RequestBindingCredential.Type;\n }) {\n const verified = yield* (yield* binding.RequestBinding)\n .verify(request.flowId, request.requestBinding)\n .pipe(Effect.mapError(phoneFailure));\n\n const candidate = yield* (yield* PhoneSignInTargets).lookup({\n moduleId,\n phoneNumber: request.phoneNumber,\n });\n\n let target: Option.Option<PhoneCredentialSnapshot> = Option.none();\n\n if (Option.isSome(candidate)) {\n const codec = Schema.toCodecJson(PhoneCredentialSnapshot);\n\n const snapshot = yield* Schema.encodeEffect(codec)(candidate.value).pipe(\n Effect.flatMap(Schema.decodeEffect(codec)),\n Effect.mapError(phoneFailure),\n );\n\n const current = yield* (yield* AuthenticationAuthority)\n .capture(snapshot.revision.subjectId, [snapshot.credentialId])\n .pipe(\n Effect.map(Option.some),\n Effect.catchTag(\"StaleAuthentication\", () => Effect.succeed(Option.none())),\n Effect.mapError(phoneFailure),\n );\n\n if (Option.isSome(current)) {\n const revision = yield* Schema.encodeEffect(Schema.toCodecJson(AuthenticationRevision))(\n current.value,\n )\n .pipe(Effect.flatMap(Schema.decodeEffect(Schema.toCodecJson(AuthenticationRevision))))\n .pipe(Effect.mapError(phoneFailure));\n\n if (\n snapshot.moduleId === moduleId &&\n snapshot.phoneNumber === request.phoneNumber &&\n snapshot.verifiedAtMillis <= DateTime.toEpochMillis(yield* DateTime.now) &&\n revision.subjectId === snapshot.revision.subjectId &&\n revision.securityRevision === snapshot.revision.securityRevision &&\n revision.credentials.some(\n (value) =>\n value.credentialId === snapshot.credentialId &&\n value.revision === snapshot.credentialRevision,\n )\n )\n target = Option.some({ ...snapshot, revision });\n }\n }\n\n const encoded = yield* Schema.encodeEffect(tuple)([\n \"effect-auth/phone-otp-sign-in/v1\",\n moduleId,\n request.flowId,\n verified.verifier,\n request.phoneNumber,\n Option.isSome(target) ? target.value.custodyRevision : \"\",\n ]).pipe(Effect.mapError(phoneFailure));\n\n const digest = yield* (yield* Crypto.Crypto)\n .digest(\"SHA-256\", new TextEncoder().encode(encoded))\n .pipe(Effect.mapError(phoneFailure));\n\n const base = {\n flowId: request.flowId,\n contextDigest: TokenDigest.make(Encoding.encodeBase64Url(digest)),\n identifier: LoginIdentifier.make({ namespace: \"phone\", value: request.phoneNumber }),\n };\n\n const proofBinding: ProofBinding = Option.isSome(target)\n ? { _tag: \"Subject\", ...base, revision: target.value.revision }\n : { _tag: \"Identifier\", ...base };\n\n return { target, binding: proofBinding };\n });\n\n const admitSignIn = Effect.fn(\"PhoneOtp.admitRequest\")(function* (input: typeof Start.Type) {\n if (\n !(yield* phoneAdmission(\n moduleId,\n \"request\",\n input.requestId,\n yield* phoneDigest([\"sign-in\", input.flowId, input.phoneNumber, input.locale]),\n options.policy?.requestRetentionMillis ?? defaultPolicy.requestRetentionMillis,\n ))\n )\n return yield* PhoneOtpRejected.make({});\n });\n\n const SignIn = makeOperation(`${moduleId}/sign-in`, {\n payload: Start,\n authorize: admitSignIn,\n success: Challenge,\n error: Failure,\n access: \"any\",\n exposure: \"public\",\n replay: \"non-idempotent\",\n credentials: true,\n });\n\n const Complete = makeOperation(`${moduleId}/complete`, {\n payload: PhoneOtpComplete,\n authorize: (input) => phoneAttemptAdmission(moduleId, input.flowId, input.reference.proofId),\n success: sessions.CompletionResult,\n error: Failure,\n access: \"any\",\n exposure: \"public\",\n replay: \"single-use\",\n credentials: true,\n });\n\n const handlersLayer = Layer.mergeAll(\n SignIn.credentialHandlerLayer(\n Effect.fn(\"PhoneOtp.signIn\")(function* (input, invocation) {\n yield* noAmbient();\n if (invocation._tag !== \"Guest\") return yield* PhoneOtpRejected.make({});\n\n const issued = yield* (yield* binding.RequestBinding)\n .issue(input.flowId)\n .pipe(Effect.mapError(phoneFailure));\n\n const credential = issued.credentialCommands.find(\n (command) => command._tag === \"Issue\" && command.slot === \"request-binding\",\n );\n\n if (credential?._tag !== \"Issue\") return yield* PhoneOtpUnavailable.make({});\n const current = yield* capture({ ...input, requestBinding: credential.credential });\n const eligible = yield* (yield* PhoneDeliveryEligibility).allowed(input.phoneNumber);\n\n const dispatch = yield* (yield* proof.Proofs)\n .prepareIssue({\n requestId: input.requestId,\n binding: current.binding,\n locale: input.locale,\n eligible: Option.isSome(current.target) && eligible,\n })\n .pipe(Effect.flatMap(readProofCommit), Effect.mapError(phoneFailure));\n\n yield* dispatch.dispatch.pipe(Effect.mapError(phoneFailure));\n\n return {\n value: { ...dispatch.receipt, flowId: input.flowId },\n credentialCommands: issued.credentialCommands,\n };\n }),\n ),\n Complete.credentialHandlerLayer(\n Effect.fn(\"PhoneOtp.completeSignIn\")(function* (input, invocation) {\n yield* noAmbient();\n if (invocation._tag !== \"Guest\") return yield* PhoneOtpRejected.make({});\n const current = yield* capture(input);\n const verifiedAt = yield* DateTime.now;\n const proofs = yield* proof.Proofs;\n\n const attempted = yield* proofs\n .prepareAttempt({\n binding: current.binding,\n reference: input.reference,\n credential: input.code,\n })\n .pipe(Effect.flatMap(readProofCommit), Effect.mapError(phoneFailure));\n\n if (attempted.value._tag !== \"Accepted\" || Option.isNone(current.target))\n return yield* PhoneOtpRejected.make({});\n\n const continuation = attempted.credentialCommands.find(\n (command) => command._tag === \"Issue\" && command.slot === \"proof-continuation\",\n );\n\n if (continuation?._tag !== \"Issue\") return yield* PhoneOtpUnavailable.make({});\n\n const consumed = yield* proofs\n .prepareComplete({\n binding: current.binding,\n continuationId: attempted.value.continuation.continuationId,\n credential: continuation.credential,\n })\n .pipe(Effect.flatMap(readProofCommit), Effect.mapError(phoneFailure));\n\n if (consumed !== \"completed\") return yield* PhoneOtpRejected.make({});\n\n const evidence: AuthenticationEvidence = {\n flowId: AuthenticationFlowId.make(input.flowId),\n bindingDigest: current.binding.contextDigest,\n revision: current.target.value.revision,\n proofs: [\n {\n method: \"phone-otp\",\n credentialId: current.target.value.credentialId,\n factors: [\"possession\"],\n userVerified: false,\n phishingResistant: false,\n verifiedAt,\n },\n ],\n };\n\n const claimCredential = yield* Schema.encodeEffect(\n Schema.toCodecJson(PhoneCredentialSnapshot),\n )(current.target.value).pipe(\n Effect.flatMap(Schema.decodeEffect(Schema.toCodecJson(PhoneCredentialSnapshot))),\n Effect.mapError(phoneFailure),\n );\n\n const claims = yield* (yield* ClaimsForPhone).resolve(claimCredential);\n\n const established = yield* (yield* sessions.AuthenticationCompletion)\n .prepare({ evidence, claims })\n .pipe(\n Effect.flatMap((receipt) => receipt.read),\n Effect.mapError(phoneFailure),\n );\n\n return {\n value: established.value,\n credentialCommands: [\n ...established.credentialCommands,\n { _tag: \"Clear\" as const, slot: \"request-binding\" as const },\n ],\n };\n }),\n ),\n );\n\n const layer = handlersLayer.pipe(\n Layer.provide(defaultLayer(binding.RequestBinding, binding.layer)),\n Layer.provide(defaultLayer(proof.Proofs, proof.smsLayer)),\n Layer.provide([cryptoLayer, hooksLayer]),\n Layer.merge(lifecycle.layer),\n );\n\n return Object.freeze({\n ClaimsForPhone,\n lifecycle,\n binding,\n proof,\n layer,\n handlersLayer: Layer.merge(handlersLayer, lifecycle.handlersLayer),\n operations: { SignIn, Complete, ...lifecycle.operations },\n group: operationGroup(\n SignIn,\n Complete,\n lifecycle.operations.Begin,\n lifecycle.operations.Resend,\n lifecycle.operations.CompleteLifecycle,\n lifecycle.operations.Cancel,\n lifecycle.operations.Cleanup,\n ),\n strategy: makeAuthStrategy(\n {\n signIn: Effect.fn(\"PhoneOtp.signInRequest\")(function* (\n invocation: AuthInvocation,\n input: { readonly phoneNumber: string; readonly locale?: string },\n ) {\n const crypto = yield* Crypto.Crypto;\n const flowId = yield* crypto.randomUUIDv4.pipe(Effect.mapError(phoneFailure));\n const requestId = yield* crypto.randomUUIDv4.pipe(Effect.mapError(phoneFailure));\n\n return yield* SignIn.invoke(invocation, {\n ...input,\n flowId,\n requestId,\n locale: input.locale ?? \"en\",\n });\n }),\n completeSignIn: Complete.invoke,\n ...lifecycle.methods,\n },\n layer.pipe(Layer.provideMerge(cryptoLayer)),\n { completion: true },\n ),\n });\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ProofDeliveryOutcome } from "./models.mjs";
|
|
2
|
+
import { ProofConfigurationError } from "./errors.mjs";
|
|
3
|
+
import { ProofDelivery, ProofDeliveryMessage, ProofVendorPolicy } from "./delivery.mjs";
|
|
4
|
+
import { Context, Effect } from "effect";
|
|
5
|
+
//#region src/proofs/EmailProofDelivery.d.ts
|
|
6
|
+
declare const EmailProofDelivery_base: Context.ServiceClass<EmailProofDelivery, "effect-auth/EmailProofDelivery", ProofDelivery>;
|
|
7
|
+
/** Consumer-selected email renderer/vendor. No core import of a vendor SDK or application config. */
|
|
8
|
+
declare class EmailProofDelivery extends EmailProofDelivery_base {
|
|
9
|
+
static readonly layer: <E, R>(vendor: ProofVendorPolicy, send: (message: ProofDeliveryMessage) => Effect.Effect<ProofDeliveryOutcome, E, R>) => import("effect/Layer").Layer<EmailProofDelivery, ProofConfigurationError, Exclude<R, import("effect/Scope").Scope>>;
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { EmailProofDelivery };
|
|
13
|
+
//# sourceMappingURL=EmailProofDelivery.d.mts.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { proofDeliveryLayer } from "./delivery.mjs";
|
|
2
|
+
import { Context } from "effect";
|
|
3
|
+
//#region src/proofs/EmailProofDelivery.ts
|
|
4
|
+
/** Consumer-selected email renderer/vendor. No core import of a vendor SDK or application config. */
|
|
5
|
+
var EmailProofDelivery = class extends Context.Service()("effect-auth/EmailProofDelivery") {
|
|
6
|
+
static layer = (vendor, send) => proofDeliveryLayer(this, vendor, send);
|
|
7
|
+
};
|
|
8
|
+
//#endregion
|
|
9
|
+
export { EmailProofDelivery };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=EmailProofDelivery.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmailProofDelivery.mjs","names":[],"sources":["../../src/proofs/EmailProofDelivery.ts"],"sourcesContent":["import { Context, type Effect } from \"effect\";\n\nimport {\n type ProofDelivery,\n type ProofDeliveryMessage,\n type ProofVendorPolicy,\n proofDeliveryLayer,\n} from \"./delivery\";\nimport type { ProofDeliveryOutcome } from \"./models\";\n\n/** Consumer-selected email renderer/vendor. No core import of a vendor SDK or application config. */\nexport class EmailProofDelivery extends Context.Service<EmailProofDelivery, ProofDelivery>()(\n \"effect-auth/EmailProofDelivery\",\n) {\n static readonly layer = <E, R>(\n vendor: ProofVendorPolicy,\n send: (message: ProofDeliveryMessage) => Effect.Effect<ProofDeliveryOutcome, E, R>,\n ) => proofDeliveryLayer(this, vendor, send);\n}\n"],"mappings":";;;;AAWA,IAAa,qBAAb,cAAwC,QAAQ,QAA2C,CAAC,CAC1F,gCACF,CAAC,CAAC;CACA,OAAgB,SACd,QACA,SACG,mBAAmB,MAAM,QAAQ,IAAI;AAC5C"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ProofIngressDenied, ProofUnavailable } from "./errors.mjs";
|
|
2
|
+
import { Context, Effect, Redacted } from "effect";
|
|
3
|
+
//#region src/proofs/HostIngressLimiter.d.ts
|
|
4
|
+
declare const HostIngressLimiter_base: Context.ServiceClass<HostIngressLimiter, "effect-auth/HostIngressLimiter", {
|
|
5
|
+
readonly check: (input: {
|
|
6
|
+
readonly action: string;
|
|
7
|
+
readonly networkKey: Redacted.Redacted<string>;
|
|
8
|
+
readonly deviceKey?: Redacted.Redacted<string>;
|
|
9
|
+
}) => Effect.Effect<void, ProofIngressDenied | ProofUnavailable>;
|
|
10
|
+
}>;
|
|
11
|
+
/**
|
|
12
|
+
* Optional host extension, invoked before RPC/HTTP parsing as well as valid calls.
|
|
13
|
+
* Only the host's trusted network extraction supplies these keys; wire payloads
|
|
14
|
+
* cannot choose their own IP/device bucket. No permissive default or process-
|
|
15
|
+
* memory implementation is presented as distributed protection.
|
|
16
|
+
*/
|
|
17
|
+
declare class HostIngressLimiter extends HostIngressLimiter_base {}
|
|
18
|
+
//#endregion
|
|
19
|
+
export { HostIngressLimiter };
|
|
20
|
+
//# sourceMappingURL=HostIngressLimiter.d.mts.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Context } from "effect";
|
|
2
|
+
//#region src/proofs/HostIngressLimiter.ts
|
|
3
|
+
/**
|
|
4
|
+
* Optional host extension, invoked before RPC/HTTP parsing as well as valid calls.
|
|
5
|
+
* Only the host's trusted network extraction supplies these keys; wire payloads
|
|
6
|
+
* cannot choose their own IP/device bucket. No permissive default or process-
|
|
7
|
+
* memory implementation is presented as distributed protection.
|
|
8
|
+
*/
|
|
9
|
+
var HostIngressLimiter = class extends Context.Service()("effect-auth/HostIngressLimiter") {};
|
|
10
|
+
//#endregion
|
|
11
|
+
export { HostIngressLimiter };
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=HostIngressLimiter.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HostIngressLimiter.mjs","names":[],"sources":["../../src/proofs/HostIngressLimiter.ts"],"sourcesContent":["import { Context, type Effect, type Redacted } from \"effect\";\n\nimport type { ProofIngressDenied, ProofUnavailable } from \"./errors\";\n\n/**\n * Optional host extension, invoked before RPC/HTTP parsing as well as valid calls.\n * Only the host's trusted network extraction supplies these keys; wire payloads\n * cannot choose their own IP/device bucket. No permissive default or process-\n * memory implementation is presented as distributed protection.\n */\nexport class HostIngressLimiter extends Context.Service<\n HostIngressLimiter,\n {\n readonly check: (input: {\n readonly action: string;\n readonly networkKey: Redacted.Redacted<string>;\n readonly deviceKey?: Redacted.Redacted<string>;\n }) => Effect.Effect<void, ProofIngressDenied | ProofUnavailable>;\n }\n>()(\"effect-auth/HostIngressLimiter\") {}\n"],"mappings":";;;;;;;;AAUA,IAAa,qBAAb,cAAwC,QAAQ,QAS9C,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { TokenDigest } from "../Schema.mjs";
|
|
2
|
+
import { CommitJournal, PreparedCommit } from "../hooks/commit.mjs";
|
|
3
|
+
import { ProofAttemptDecision, ProofBinding, ProofCleanupResult, ProofCompletionDecision, ProofContinuationId, ProofDeliveryId, ProofDeliveryOutcome, ProofId, ProofPurpose, ProofRequestId, ProofRequestReceipt, ProofVersion } from "./models.mjs";
|
|
4
|
+
import { ProofRequestConflict, ProofUnavailable } from "./errors.mjs";
|
|
5
|
+
import { ProofPolicy } from "./policy.mjs";
|
|
6
|
+
import { Context, Effect } from "effect";
|
|
7
|
+
//#region src/proofs/ProofPersistence.d.ts
|
|
8
|
+
interface ProofCompletionInput {
|
|
9
|
+
readonly moduleId: string;
|
|
10
|
+
readonly purpose: ProofPurpose;
|
|
11
|
+
readonly continuationId: ProofContinuationId;
|
|
12
|
+
readonly continuationDigest: TokenDigest;
|
|
13
|
+
readonly binding: ProofBinding;
|
|
14
|
+
readonly nowMillis: number;
|
|
15
|
+
}
|
|
16
|
+
type PrepareProofCommit<Value, A> = (value: Value, journal: CommitJournal) => PreparedCommit<A>;
|
|
17
|
+
interface ProofDigest {
|
|
18
|
+
readonly keyId: string;
|
|
19
|
+
readonly digest: TokenDigest;
|
|
20
|
+
}
|
|
21
|
+
interface ProofRecord {
|
|
22
|
+
readonly moduleId: string;
|
|
23
|
+
readonly purpose: ProofPurpose;
|
|
24
|
+
readonly proofId: ProofId;
|
|
25
|
+
readonly requestId: ProofRequestId;
|
|
26
|
+
readonly fingerprint: TokenDigest;
|
|
27
|
+
readonly deliveryId: ProofDeliveryId;
|
|
28
|
+
readonly binding: ProofBinding;
|
|
29
|
+
readonly verifier: ProofDigest;
|
|
30
|
+
readonly issuedAtMillis: number;
|
|
31
|
+
readonly expiresAtMillis: number;
|
|
32
|
+
readonly version: ProofVersion;
|
|
33
|
+
}
|
|
34
|
+
type ProofIssueDecision = {
|
|
35
|
+
readonly _tag: "Issued";
|
|
36
|
+
readonly record: ProofRecord;
|
|
37
|
+
} | {
|
|
38
|
+
readonly _tag: "Existing" | "Suppressed";
|
|
39
|
+
readonly receipt: ProofRequestReceipt;
|
|
40
|
+
};
|
|
41
|
+
type ProofDeliveryClaim = {
|
|
42
|
+
readonly _tag: "Claimed";
|
|
43
|
+
readonly claimVersion: ProofVersion;
|
|
44
|
+
} | {
|
|
45
|
+
readonly _tag: "Declined";
|
|
46
|
+
};
|
|
47
|
+
declare const ProofPersistence_base: Context.ServiceClass<ProofPersistence, "effect-auth/ProofPersistence", {
|
|
48
|
+
/**
|
|
49
|
+
* Atomically charge all identifier/subject/action issue windows (independent
|
|
50
|
+
* of flow/context/request IDs), enforce cooldown, insert a new active series
|
|
51
|
+
* generation, and supersede its predecessor. Preserve rolling failed-attempt
|
|
52
|
+
* history and send budgets across resends, consumption, cancellation and expiry.
|
|
53
|
+
* Matching request fingerprint returns Existing WITHOUT pairing its stored
|
|
54
|
+
* digest with this attempt's new secret. Mismatched reuse fails Conflict.
|
|
55
|
+
* eligible=false still charges existence-independent budgets and stores the
|
|
56
|
+
* request fingerprint, but creates no usable proof/delivery. Never disclose why.
|
|
57
|
+
* Check any captured security/credential/identifier revision against current authority.
|
|
58
|
+
*/
|
|
59
|
+
readonly issue: <A>(input: {
|
|
60
|
+
readonly record: ProofRecord;
|
|
61
|
+
readonly policy: ProofPolicy;
|
|
62
|
+
readonly eligible: boolean;
|
|
63
|
+
readonly supersedes?: ProofId;
|
|
64
|
+
}, prepare: PrepareProofCommit<ProofIssueDecision, A>) => Effect.Effect<PreparedCommit<A>, ProofRequestConflict | ProofUnavailable>;
|
|
65
|
+
/**
|
|
66
|
+
* Charge action/identifier/subject attempt windows even for missing, mismatched,
|
|
67
|
+
* consumed or malformed candidates. Compare only the row's stored keyId.
|
|
68
|
+
* Enforce active generation, exact purpose/binding, current revisions, expiry,
|
|
69
|
+
* rolling failure budget and max failures atomically. One winner consumes proof
|
|
70
|
+
* and creates a digest-only restricted continuation whose expiry is clipped to
|
|
71
|
+
* min(proof.expiresAt, now+continuationLifetime); every rejection is a committed VALUE.
|
|
72
|
+
*/
|
|
73
|
+
readonly attempt: <A>(input: {
|
|
74
|
+
readonly moduleId: string;
|
|
75
|
+
readonly purpose: ProofPurpose;
|
|
76
|
+
readonly proofId: ProofId;
|
|
77
|
+
readonly binding: ProofBinding;
|
|
78
|
+
readonly candidate?: ProofDigest;
|
|
79
|
+
readonly continuationId: ProofContinuationId;
|
|
80
|
+
readonly continuationDigest: TokenDigest;
|
|
81
|
+
readonly nowMillis: number;
|
|
82
|
+
readonly policy: ProofPolicy;
|
|
83
|
+
}, prepare: PrepareProofCommit<ProofAttemptDecision, A>) => Effect.Effect<PreparedCommit<A>, ProofUnavailable>;
|
|
84
|
+
/**
|
|
85
|
+
* Consume a continuation exactly once under matching module/purpose/binding,
|
|
86
|
+
* current revisions and expiry. Method adapters MUST couple this decision and
|
|
87
|
+
* protected credential/identifier/session writes in the same actual owner.
|
|
88
|
+
* The standalone operation chooses burn-on-downstream-failure; its result is
|
|
89
|
+
* never AuthenticationEvidence and cannot itself grant a session.
|
|
90
|
+
*/
|
|
91
|
+
readonly complete: <A>(input: ProofCompletionInput, prepare: PrepareProofCommit<ProofCompletionDecision, A>) => Effect.Effect<PreparedCommit<A>, ProofUnavailable>;
|
|
92
|
+
/**
|
|
93
|
+
* Persist a bounded send-attempt claim before network I/O. Check exact generation,
|
|
94
|
+
* active/unexpired proof and retry deadline. Concurrent/repeated calls have one
|
|
95
|
+
* claim winner. Expired claims become ambiguous; never reclaim an in-flight send
|
|
96
|
+
* as if it were definitely unsent. Only explicit idempotent-vendor retry may
|
|
97
|
+
* claim after ambiguity, with same deliveryId and within max attempt/lifetime.
|
|
98
|
+
*/
|
|
99
|
+
readonly claimDelivery: <A>(input: {
|
|
100
|
+
readonly moduleId: string;
|
|
101
|
+
readonly proofId: ProofId;
|
|
102
|
+
readonly version: ProofVersion;
|
|
103
|
+
readonly deliveryId: ProofDeliveryId;
|
|
104
|
+
readonly nowMillis: number;
|
|
105
|
+
readonly policy: ProofPolicy;
|
|
106
|
+
readonly allowAmbiguousRetry: boolean;
|
|
107
|
+
}, prepare: PrepareProofCommit<ProofDeliveryClaim, A>) => Effect.Effect<PreparedCommit<A>, ProofUnavailable>;
|
|
108
|
+
/** Conditional on this claim/generation; an old failure cannot cancel a resend. Definite failure invalidates this proof, preserving every budget. */
|
|
109
|
+
readonly settleDelivery: <A>(input: {
|
|
110
|
+
readonly moduleId: string;
|
|
111
|
+
readonly proofId: ProofId;
|
|
112
|
+
readonly version: ProofVersion;
|
|
113
|
+
readonly deliveryId: ProofDeliveryId;
|
|
114
|
+
readonly claimVersion: ProofVersion;
|
|
115
|
+
readonly outcome: ProofDeliveryOutcome;
|
|
116
|
+
readonly nowMillis: number;
|
|
117
|
+
}, prepare: PrepareProofCommit<void, A>) => Effect.Effect<PreparedCommit<A>, ProofUnavailable>;
|
|
118
|
+
readonly cancel: <A>(input: {
|
|
119
|
+
readonly moduleId: string;
|
|
120
|
+
readonly purpose: ProofPurpose;
|
|
121
|
+
readonly binding: ProofBinding;
|
|
122
|
+
readonly nowMillis: number;
|
|
123
|
+
}, prepare: PrepareProofCommit<void, A>) => Effect.Effect<PreparedCommit<A>, ProofUnavailable>;
|
|
124
|
+
/** Bounded cleanup retains budgets/fingerprints/tombstones through their own horizons; erase verifiers and delivery material when no longer needed. */
|
|
125
|
+
readonly cleanup: <A>(input: {
|
|
126
|
+
readonly moduleId: string;
|
|
127
|
+
readonly nowMillis: number;
|
|
128
|
+
readonly limit: number;
|
|
129
|
+
}, prepare: PrepareProofCommit<ProofCleanupResult, A>) => Effect.Effect<PreparedCommit<A>, ProofUnavailable>;
|
|
130
|
+
}>;
|
|
131
|
+
/**
|
|
132
|
+
* Semantic atomic commands, never generic CRUD. Every mutation owns the real
|
|
133
|
+
* transaction/batch and prepares its receipt BEFORE physical commit. Nested
|
|
134
|
+
* commands join the same owner. D1 preallocates final IDs/versions before batch.
|
|
135
|
+
* Use an authoritative fresh clock at each condition; caller timestamps are hints.
|
|
136
|
+
*/
|
|
137
|
+
declare class ProofPersistence extends ProofPersistence_base {}
|
|
138
|
+
//#endregion
|
|
139
|
+
export { PrepareProofCommit, ProofCompletionInput, ProofDeliveryClaim, ProofDigest, ProofIssueDecision, ProofPersistence, ProofRecord };
|
|
140
|
+
//# sourceMappingURL=ProofPersistence.d.mts.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Context } from "effect";
|
|
2
|
+
//#region src/proofs/ProofPersistence.ts
|
|
3
|
+
/**
|
|
4
|
+
* Semantic atomic commands, never generic CRUD. Every mutation owns the real
|
|
5
|
+
* transaction/batch and prepares its receipt BEFORE physical commit. Nested
|
|
6
|
+
* commands join the same owner. D1 preallocates final IDs/versions before batch.
|
|
7
|
+
* Use an authoritative fresh clock at each condition; caller timestamps are hints.
|
|
8
|
+
*/
|
|
9
|
+
var ProofPersistence = class extends Context.Service()("effect-auth/ProofPersistence") {};
|
|
10
|
+
//#endregion
|
|
11
|
+
export { ProofPersistence };
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=ProofPersistence.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProofPersistence.mjs","names":[],"sources":["../../src/proofs/ProofPersistence.ts"],"sourcesContent":["import { Context, type Effect } from \"effect\";\n\nimport type { CommitJournal, PreparedCommit } from \"../hooks/commit\";\nimport type { TokenDigest } from \"../Schema\";\nimport type { ProofRequestConflict, ProofUnavailable } from \"./errors\";\nimport type {\n ProofAttemptDecision,\n ProofBinding,\n ProofCleanupResult,\n ProofCompletionDecision,\n ProofContinuationId,\n ProofDeliveryId,\n ProofDeliveryOutcome,\n ProofId,\n ProofPurpose,\n ProofRequestId,\n ProofRequestReceipt,\n ProofVersion,\n} from \"./models\";\nimport type { ProofPolicy } from \"./policy\";\n\nexport interface ProofCompletionInput {\n readonly moduleId: string;\n readonly purpose: ProofPurpose;\n readonly continuationId: ProofContinuationId;\n readonly continuationDigest: TokenDigest;\n readonly binding: ProofBinding;\n readonly nowMillis: number;\n}\n\nexport type PrepareProofCommit<Value, A> = (\n value: Value,\n journal: CommitJournal,\n) => PreparedCommit<A>;\n\nexport interface ProofDigest {\n readonly keyId: string;\n readonly digest: TokenDigest;\n}\n\nexport interface ProofRecord {\n readonly moduleId: string;\n readonly purpose: ProofPurpose;\n readonly proofId: ProofId;\n readonly requestId: ProofRequestId;\n readonly fingerprint: TokenDigest;\n readonly deliveryId: ProofDeliveryId;\n readonly binding: ProofBinding;\n readonly verifier: ProofDigest;\n readonly issuedAtMillis: number;\n readonly expiresAtMillis: number;\n readonly version: ProofVersion;\n}\n\nexport type ProofIssueDecision =\n | { readonly _tag: \"Issued\"; readonly record: ProofRecord }\n | { readonly _tag: \"Existing\" | \"Suppressed\"; readonly receipt: ProofRequestReceipt };\n\nexport type ProofDeliveryClaim =\n | { readonly _tag: \"Claimed\"; readonly claimVersion: ProofVersion }\n | { readonly _tag: \"Declined\" };\n\n/**\n * Semantic atomic commands, never generic CRUD. Every mutation owns the real\n * transaction/batch and prepares its receipt BEFORE physical commit. Nested\n * commands join the same owner. D1 preallocates final IDs/versions before batch.\n * Use an authoritative fresh clock at each condition; caller timestamps are hints.\n */\nexport class ProofPersistence extends Context.Service<\n ProofPersistence,\n {\n /**\n * Atomically charge all identifier/subject/action issue windows (independent\n * of flow/context/request IDs), enforce cooldown, insert a new active series\n * generation, and supersede its predecessor. Preserve rolling failed-attempt\n * history and send budgets across resends, consumption, cancellation and expiry.\n * Matching request fingerprint returns Existing WITHOUT pairing its stored\n * digest with this attempt's new secret. Mismatched reuse fails Conflict.\n * eligible=false still charges existence-independent budgets and stores the\n * request fingerprint, but creates no usable proof/delivery. Never disclose why.\n * Check any captured security/credential/identifier revision against current authority.\n */\n readonly issue: <A>(\n input: {\n readonly record: ProofRecord;\n readonly policy: ProofPolicy;\n readonly eligible: boolean;\n readonly supersedes?: ProofId;\n },\n prepare: PrepareProofCommit<ProofIssueDecision, A>,\n ) => Effect.Effect<PreparedCommit<A>, ProofRequestConflict | ProofUnavailable>;\n /**\n * Charge action/identifier/subject attempt windows even for missing, mismatched,\n * consumed or malformed candidates. Compare only the row's stored keyId.\n * Enforce active generation, exact purpose/binding, current revisions, expiry,\n * rolling failure budget and max failures atomically. One winner consumes proof\n * and creates a digest-only restricted continuation whose expiry is clipped to\n * min(proof.expiresAt, now+continuationLifetime); every rejection is a committed VALUE.\n */\n readonly attempt: <A>(\n input: {\n readonly moduleId: string;\n readonly purpose: ProofPurpose;\n readonly proofId: ProofId;\n readonly binding: ProofBinding;\n readonly candidate?: ProofDigest;\n readonly continuationId: ProofContinuationId;\n readonly continuationDigest: TokenDigest;\n readonly nowMillis: number;\n readonly policy: ProofPolicy;\n },\n prepare: PrepareProofCommit<ProofAttemptDecision, A>,\n ) => Effect.Effect<PreparedCommit<A>, ProofUnavailable>;\n /**\n * Consume a continuation exactly once under matching module/purpose/binding,\n * current revisions and expiry. Method adapters MUST couple this decision and\n * protected credential/identifier/session writes in the same actual owner.\n * The standalone operation chooses burn-on-downstream-failure; its result is\n * never AuthenticationEvidence and cannot itself grant a session.\n */\n readonly complete: <A>(\n input: ProofCompletionInput,\n prepare: PrepareProofCommit<ProofCompletionDecision, A>,\n ) => Effect.Effect<PreparedCommit<A>, ProofUnavailable>;\n /**\n * Persist a bounded send-attempt claim before network I/O. Check exact generation,\n * active/unexpired proof and retry deadline. Concurrent/repeated calls have one\n * claim winner. Expired claims become ambiguous; never reclaim an in-flight send\n * as if it were definitely unsent. Only explicit idempotent-vendor retry may\n * claim after ambiguity, with same deliveryId and within max attempt/lifetime.\n */\n readonly claimDelivery: <A>(\n input: {\n readonly moduleId: string;\n readonly proofId: ProofId;\n readonly version: ProofVersion;\n readonly deliveryId: ProofDeliveryId;\n readonly nowMillis: number;\n readonly policy: ProofPolicy;\n readonly allowAmbiguousRetry: boolean;\n },\n prepare: PrepareProofCommit<ProofDeliveryClaim, A>,\n ) => Effect.Effect<PreparedCommit<A>, ProofUnavailable>;\n /** Conditional on this claim/generation; an old failure cannot cancel a resend. Definite failure invalidates this proof, preserving every budget. */\n readonly settleDelivery: <A>(\n input: {\n readonly moduleId: string;\n readonly proofId: ProofId;\n readonly version: ProofVersion;\n readonly deliveryId: ProofDeliveryId;\n readonly claimVersion: ProofVersion;\n readonly outcome: ProofDeliveryOutcome;\n readonly nowMillis: number;\n },\n prepare: PrepareProofCommit<void, A>,\n ) => Effect.Effect<PreparedCommit<A>, ProofUnavailable>;\n readonly cancel: <A>(\n input: {\n readonly moduleId: string;\n readonly purpose: ProofPurpose;\n readonly binding: ProofBinding;\n readonly nowMillis: number;\n },\n prepare: PrepareProofCommit<void, A>,\n ) => Effect.Effect<PreparedCommit<A>, ProofUnavailable>;\n /** Bounded cleanup retains budgets/fingerprints/tombstones through their own horizons; erase verifiers and delivery material when no longer needed. */\n readonly cleanup: <A>(\n input: { readonly moduleId: string; readonly nowMillis: number; readonly limit: number },\n prepare: PrepareProofCommit<ProofCleanupResult, A>,\n ) => Effect.Effect<PreparedCommit<A>, ProofUnavailable>;\n }\n>()(\"effect-auth/ProofPersistence\") {}\n"],"mappings":";;;;;;;;AAoEA,IAAa,mBAAb,cAAsC,QAAQ,QAuG5C,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ProofDeliveryOutcome } from "./models.mjs";
|
|
2
|
+
import { ProofConfigurationError } from "./errors.mjs";
|
|
3
|
+
import { ProofDelivery, ProofDeliveryMessage, ProofVendorPolicy } from "./delivery.mjs";
|
|
4
|
+
import { Context, Effect } from "effect";
|
|
5
|
+
//#region src/proofs/SmsProofDelivery.d.ts
|
|
6
|
+
declare const SmsProofDelivery_base: Context.ServiceClass<SmsProofDelivery, "effect-auth/SmsProofDelivery", ProofDelivery>;
|
|
7
|
+
/** The consumer owns number/country eligibility, sender identity and vendor spend policy. */
|
|
8
|
+
declare class SmsProofDelivery extends SmsProofDelivery_base {
|
|
9
|
+
static readonly layer: <E, R>(vendor: ProofVendorPolicy, send: (message: ProofDeliveryMessage) => Effect.Effect<ProofDeliveryOutcome, E, R>) => import("effect/Layer").Layer<SmsProofDelivery, ProofConfigurationError, Exclude<R, import("effect/Scope").Scope>>;
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { SmsProofDelivery };
|
|
13
|
+
//# sourceMappingURL=SmsProofDelivery.d.mts.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { proofDeliveryLayer } from "./delivery.mjs";
|
|
2
|
+
import { Context } from "effect";
|
|
3
|
+
//#region src/proofs/SmsProofDelivery.ts
|
|
4
|
+
/** The consumer owns number/country eligibility, sender identity and vendor spend policy. */
|
|
5
|
+
var SmsProofDelivery = class extends Context.Service()("effect-auth/SmsProofDelivery") {
|
|
6
|
+
static layer = (vendor, send) => proofDeliveryLayer(this, vendor, send);
|
|
7
|
+
};
|
|
8
|
+
//#endregion
|
|
9
|
+
export { SmsProofDelivery };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=SmsProofDelivery.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SmsProofDelivery.mjs","names":[],"sources":["../../src/proofs/SmsProofDelivery.ts"],"sourcesContent":["import { Context, type Effect } from \"effect\";\n\nimport {\n type ProofDelivery,\n type ProofDeliveryMessage,\n type ProofVendorPolicy,\n proofDeliveryLayer,\n} from \"./delivery\";\nimport type { ProofDeliveryOutcome } from \"./models\";\n\n/** The consumer owns number/country eligibility, sender identity and vendor spend policy. */\nexport class SmsProofDelivery extends Context.Service<SmsProofDelivery, ProofDelivery>()(\n \"effect-auth/SmsProofDelivery\",\n) {\n static readonly layer = <E, R>(\n vendor: ProofVendorPolicy,\n send: (message: ProofDeliveryMessage) => Effect.Effect<ProofDeliveryOutcome, E, R>,\n ) => proofDeliveryLayer(this, vendor, send);\n}\n"],"mappings":";;;;AAWA,IAAa,mBAAb,cAAsC,QAAQ,QAAyC,CAAC,CACtF,8BACF,CAAC,CAAC;CACA,OAAgB,SACd,QACA,SACG,mBAAmB,MAAM,QAAQ,IAAI;AAC5C"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { SubjectId } from "../Schema.mjs";
|
|
2
|
+
import { LoginIdentifier } from "../identity/models.mjs";
|
|
3
|
+
import { ProofBinding, ProofPurpose } from "./models.mjs";
|
|
4
|
+
//#region src/proofs/abuse.d.ts
|
|
5
|
+
/** Structured composite keys. Every dimension is independent of flow, context, request, and proof IDs. */
|
|
6
|
+
interface ProofAbuseScope {
|
|
7
|
+
readonly moduleId: string;
|
|
8
|
+
readonly purpose: ProofPurpose;
|
|
9
|
+
readonly identifier: LoginIdentifier;
|
|
10
|
+
readonly subjectId?: SubjectId;
|
|
11
|
+
}
|
|
12
|
+
declare const proofAbuseScope: (moduleId: string, purpose: ProofPurpose, binding: ProofBinding) => ProofAbuseScope;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { ProofAbuseScope, proofAbuseScope };
|
|
15
|
+
//# sourceMappingURL=abuse.d.mts.map
|