@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 @@
|
|
|
1
|
+
{"version":3,"file":"d1-passwords.mjs","names":[],"sources":["../../src/drizzle/d1-passwords.ts"],"sourcesContent":["/* oxlint-disable no-explicit-any -- D1 plans bridge consumer-owned Drizzle rows and SQL statements. */\nimport type { D1Client } from \"@effect/sql-d1/D1Client\";\nimport {\n and,\n count,\n eq,\n gte,\n inArray,\n lte,\n notExists,\n sql,\n type AnyRelations,\n type SQL,\n type Table,\n} from \"drizzle-orm\";\nimport type { EffectDrizzleQueryError } from \"drizzle-orm/effect-core\";\nimport type { EffectSQLiteD1Database } from \"drizzle-orm/effect-d1\";\nimport type { AnySQLiteTable } from \"drizzle-orm/sqlite-core\";\nimport { Cause, DateTime, Effect, Option, Predicate, Redacted, Schema, Context } from \"effect\";\nimport type { Statement } from \"effect/unstable/sql/Statement\";\n\nimport {\n coordinateCommit,\n CurrentCommitJournal,\n hasCommitScope,\n type CommitJournal,\n type PreparedCommit,\n} from \"../hooks/commit\";\nimport { LifecycleHooks } from \"../hooks/LifecycleHooks\";\nimport { HookConfigurationError } from \"../hooks/models\";\nimport type { LoginIdentifier } from \"../identity/models\";\nimport { reportPersistenceFailure } from \"../internal/diagnostics\";\nimport { PasswordUnavailable } from \"../password/methods/errors\";\nimport type {\n PasswordAction,\n PasswordAttemptDecision,\n PasswordCredentialSnapshot,\n PasswordMutationDecision,\n} from \"../password/methods/models\";\nimport {\n PasswordPersistence,\n type PasswordMutationInput,\n type PreparePasswordCommit,\n} from \"../password/methods/PasswordPersistence\";\nimport type { PasswordAttemptPolicy } from \"../password/methods/policy\";\nimport {\n snapshotPasswordCredential,\n snapshotPasswordRequirement,\n snapshotPasswordRevision,\n} from \"../password/methods/snapshot\";\nimport type { ProofCompletionPlan } from \"../proofs/completion\";\nimport { ProofUnavailable } from \"../proofs/errors\";\nimport type { ProofCompletionDecision } from \"../proofs/models\";\nimport type { ProofCompletionInput } from \"../proofs/ProofPersistence\";\nimport { snapshotAuthenticationEvidence } from \"../sessions/assurance\";\nimport {\n AuthenticationEvidence,\n AuthenticationRequirement,\n type SecurityRevision,\n} from \"../sessions/models\";\nimport { balancedD1And } from \"./d1-generated-statement\";\nimport { CurrentD1PlanningDatabase, makeD1Owner } from \"./d1-planning\";\nimport { compileD1ProofCompletionPlan, type D1ProtectedProofMutation } from \"./d1-proofs\";\nimport { D1BatchStatements } from \"./D1BatchStatements\";\nimport { column, isMappedConstraintConflict, DrizzleMappingError, updateValues } from \"./model\";\nimport {\n type AnyPasswordRegistrationMapping,\n type D1PasswordPersistenceMapping,\n type PasswordAttemptRecord,\n type PasswordRateScopeKind,\n type PasswordRegistrationMapping,\n type PasswordScopeKeys,\n requiredPasswordConstraints,\n requiredPasswordRegistrationConstraints,\n} from \"./password-model\";\nimport type { PasswordRegistrationAuthority } from \"./password-registration\";\nimport type { D1ProofPersistenceMapping } from \"./proof-model\";\nimport type { SuppliedService } from \"./SuppliedService\";\n\ntype PlanPrepare<Method extends (...args: any[]) => any, A> = (\n value: Parameters<Parameters<Method>[1]>[0],\n journal: CommitJournal,\n) => PreparedCommit<A>;\n\ntype Database = EffectSQLiteD1Database<AnyRelations> & { readonly $client: D1Client };\ntype Mapping = D1PasswordPersistenceMapping<\n Table,\n Table,\n Table,\n Table,\n Table,\n Table,\n Table,\n Table,\n unknown\n>;\ntype RegistrationMapping<Registration> = AnyPasswordRegistrationMapping<Registration>;\ntype AdapterFailure = DrizzleMappingError | EffectDrizzleQueryError;\nconst mapAdapter = <A>(effect: Effect.Effect<A, AdapterFailure>) => effect;\n\ninterface Planned<A> {\n readonly receipt: A;\n readonly statements: ReadonlyArray<Statement<any>>;\n readonly retryable?: (cause: unknown) => boolean;\n readonly journalGuard?: PreparedCommit<void>;\n}\n\nconst unavailable = () => PasswordUnavailable.make({});\n\nconst everyFailureMatches = (\n cause: Cause.Cause<unknown>,\n classify: ((cause: unknown) => boolean) | undefined,\n): boolean =>\n classify !== undefined &&\n cause.reasons.length > 0 &&\n cause.reasons.every((reason) => Cause.isFailReason(reason) && classify(Cause.fail(reason.error)));\n\nconst validConstraints = (mapping: Mapping) =>\n Object.entries(requiredPasswordConstraints).every(\n ([key, value]) =>\n mapping.constraints[key as keyof typeof requiredPasswordConstraints] === value,\n );\n\nconst validRegistrationConstraints = <Registration>(mapping: RegistrationMapping<Registration>) =>\n Object.entries(requiredPasswordRegistrationConstraints).every(\n ([key, value]) =>\n mapping.constraints[key as keyof typeof requiredPasswordRegistrationConstraints] === value,\n );\n\nconst containsFailure = (failure: unknown, predicate: (value: unknown) => boolean): boolean => {\n const seen = new Set<unknown>();\n const pending: Array<unknown> = [failure];\n\n for (let inspected = 0; inspected < 32 && pending.length > 0; inspected++) {\n const current = pending.shift();\n\n if (current === undefined || current === null || seen.has(current)) continue;\n seen.add(current);\n if (predicate(current)) return true;\n if (Cause.isCause(current)) {\n for (const reason of current.reasons) {\n if (Cause.isFailReason(reason)) pending.push(reason.error);\n else if (Cause.isDieReason(reason)) pending.push(reason.defect);\n }\n continue;\n }\n if (typeof current !== \"object\") continue;\n\n const wrapped = current as {\n readonly cause?: unknown;\n readonly reason?: unknown;\n readonly message?: unknown;\n };\n\n if (wrapped.cause !== undefined) pending.push(wrapped.cause);\n if (wrapped.reason !== undefined) pending.push(wrapped.reason);\n if (wrapped.message !== undefined) pending.push(wrapped.message);\n }\n\n return false;\n};\n\n// Match only workerd's native SQLite diagnostic. A wrapper that merely echoes\n// the bound marker is not evidence that the guard ran and rolled back the batch.\nconst isGuardFailure = (cause: unknown, marker: string) => {\n const path = `$[${marker.replaceAll(\"'\", \"''\")}]`;\n const native = `bad JSON path: '${path}': SQLITE_ERROR`;\n\n return containsFailure(cause, (value) => value === native || value === `D1_ERROR: ${native}`);\n};\n\nconst statement = Effect.fn(function* (query: {\n readonly toSQL: () => { readonly sql: string; readonly params: unknown[] };\n}) {\n const database = yield* CurrentD1PlanningDatabase;\n const rendered = query.toSQL();\n\n return database.$client.unsafe(rendered.sql, rendered.params);\n});\n\nconst assertion = Effect.fn(function* (condition: SQL, marker: string) {\n const database = yield* CurrentD1PlanningDatabase;\n\n return yield* statement(\n database\n .select({\n ok: sql`case when ${condition} then 1 else json_extract('[]', ${`$[${marker}]`}) end`.as(\n \"ok\",\n ),\n })\n .from(sql`(select 1)`),\n );\n});\n\nconst readEngineNowMillis = Effect.fn(\"Drizzle.readEngineNowMillis\")(function* (mapping: Mapping) {\n const database = yield* CurrentD1PlanningDatabase;\n\n return yield* database\n .select({ value: mapping.d1.engineNowMillis.as(\"engine_now_millis\") })\n .from(sql`(select 1)`)\n .pipe(\n Effect.flatMap((rows) => {\n const value = Number(rows[0]?.value);\n\n return Number.isFinite(value) ? Effect.succeed(value) : Effect.fail(unavailable());\n }),\n );\n});\n\nconst driverValues = (values: object, entries: ReadonlyArray<readonly [string, unknown]>) => ({\n ...values,\n ...Object.fromEntries(entries),\n});\n\nconst allocate = <A>(\n asyncValue: Effect.Effect<A, DrizzleMappingError> | undefined,\n syncValue: (() => A) | undefined,\n) =>\n asyncValue !== undefined\n ? asyncValue\n : syncValue === undefined\n ? Effect.fail(unavailable())\n : Effect.try({\n try: syncValue,\n catch: (cause) => new DrizzleMappingError({ operation: \"mapping\", cause }),\n });\n\nconst allocateNextSecurityRevision = (mapping: Mapping, current: SecurityRevision) =>\n allocate(\n mapping.subject.nextSecurityRevision?.(current) ?? mapping.allocateRevision,\n mapping.subject.nextSecurityRevisionSync === undefined\n ? mapping.allocateRevisionSync\n : () => mapping.subject.nextSecurityRevisionSync!(current),\n );\n\nconst subjectColumns = (mapping: Mapping) => ({\n id: column(mapping.subject.table, mapping.subject.id),\n status: column(mapping.subject.table, mapping.subject.status),\n securityRevision: column(mapping.subject.table, mapping.subject.securityRevision),\n});\n\nconst identifierColumns = (mapping: Mapping) => ({\n namespace: column(mapping.identifier.table, mapping.identifier.namespace),\n value: column(mapping.identifier.table, mapping.identifier.value),\n subjectId: column(mapping.identifier.table, mapping.identifier.subjectId),\n verifiedAt: column(mapping.identifier.table, mapping.identifier.verifiedAt),\n bindingRevision: column(mapping.identifier.table, mapping.identifier.bindingRevision),\n});\n\nconst credentialColumns = (mapping: Mapping) => ({\n moduleId: column(mapping.credential.table, mapping.credential.moduleId),\n subjectId: column(mapping.credential.table, mapping.credential.subjectId),\n credentialId: column(mapping.credential.table, mapping.credential.credentialId),\n credentialRevision: column(mapping.credential.table, mapping.credential.credentialRevision),\n verifierVersion: column(mapping.credential.table, mapping.credential.verifierVersion),\n verifier: column(mapping.credential.table, mapping.credential.verifier),\n normalization: column(mapping.credential.table, mapping.credential.normalization),\n});\n\nconst authorityColumns = (mapping: Mapping) => ({\n subjectId: column(mapping.authorityCredential.table, mapping.authorityCredential.subjectId),\n credentialId: column(mapping.authorityCredential.table, mapping.authorityCredential.credentialId),\n revision: column(mapping.authorityCredential.table, mapping.authorityCredential.revision),\n status:\n mapping.authorityCredential.status === undefined\n ? undefined\n : column(mapping.authorityCredential.table, mapping.authorityCredential.status),\n});\n\nconst attemptColumns = (mapping: Mapping) => ({\n moduleId: column(mapping.attempt.table, mapping.attempt.moduleId),\n action: column(mapping.attempt.table, mapping.attempt.action),\n attemptId: column(mapping.attempt.table, mapping.attempt.attemptId),\n identifierNamespace: column(mapping.attempt.table, mapping.attempt.identifierNamespace),\n identifierValue: column(mapping.attempt.table, mapping.attempt.identifierValue),\n subjectId: column(mapping.attempt.table, mapping.attempt.subjectId),\n credentialId: column(mapping.attempt.table, mapping.attempt.credentialId),\n securityRevision: column(mapping.attempt.table, mapping.attempt.securityRevision),\n credentialRevision: column(mapping.attempt.table, mapping.attempt.credentialRevision),\n verifierVersion: column(mapping.attempt.table, mapping.attempt.verifierVersion),\n identifierBindingRevision: column(\n mapping.attempt.table,\n mapping.attempt.identifierBindingRevision,\n ),\n admittedAt: column(mapping.attempt.table, mapping.attempt.admittedAt),\n deadline: column(mapping.attempt.table, mapping.attempt.deadline),\n retentionUntil: column(mapping.attempt.table, mapping.attempt.retentionUntil),\n state: column(mapping.attempt.table, mapping.attempt.state),\n});\n\nconst scopeColumns = (mapping: Mapping) => ({\n moduleId: column(mapping.rateScope.table, mapping.rateScope.moduleId),\n action: column(mapping.rateScope.table, mapping.rateScope.action),\n scopeKind: column(mapping.rateScope.table, mapping.rateScope.scopeKind),\n scopeKey: column(mapping.rateScope.table, mapping.rateScope.scopeKey),\n});\n\nconst chargeColumns = (mapping: Mapping) => ({\n moduleId: column(mapping.charge.table, mapping.charge.moduleId),\n action: column(mapping.charge.table, mapping.charge.action),\n scopeKind: column(mapping.charge.table, mapping.charge.scopeKind),\n scopeKey: column(mapping.charge.table, mapping.charge.scopeKey),\n attemptId: column(mapping.charge.table, mapping.charge.attemptId),\n occurredAt: column(mapping.charge.table, mapping.charge.occurredAt),\n retentionUntil: column(mapping.charge.table, mapping.charge.retentionUntil),\n});\n\nconst commandColumns = (mapping: Mapping) => ({\n moduleId: column(mapping.command.table, mapping.command.moduleId),\n commandId: column(mapping.command.table, mapping.command.commandId),\n action: column(mapping.command.table, mapping.command.action),\n bindingDigest: column(mapping.command.table, mapping.command.bindingDigest),\n decision: column(mapping.command.table, mapping.command.decision),\n retentionUntil: column(mapping.command.table, mapping.command.retentionUntil),\n});\n\nconst readIdentifier = Effect.fn(\"Drizzle.readIdentifier\")(function* (\n mapping: Mapping,\n identifier: LoginIdentifier,\n) {\n const database = yield* CurrentD1PlanningDatabase;\n\n const c = identifierColumns(mapping);\n\n return yield* database\n .select()\n .from(mapping.identifier.table)\n .where(and(eq(c.namespace, identifier.namespace), eq(c.value, identifier.value)))\n .limit(1);\n});\n\nconst readSubjectNative = Effect.fn(\"Drizzle.readSubjectNative\")(function* (\n mapping: Mapping,\n nativeSubjectId: unknown,\n) {\n const database = yield* CurrentD1PlanningDatabase;\n\n return yield* database\n .select()\n .from(mapping.subject.table)\n .where(eq(subjectColumns(mapping).id, nativeSubjectId))\n .limit(1);\n});\n\nconst readCredentialNative = Effect.fn(\"Drizzle.readCredentialNative\")(function* (\n mapping: Mapping,\n moduleId: string,\n nativeSubjectId: unknown,\n) {\n const database = yield* CurrentD1PlanningDatabase;\n\n const c = credentialColumns(mapping);\n\n return yield* database\n .select()\n .from(mapping.credential.table)\n .where(and(eq(c.moduleId, moduleId), eq(c.subjectId, nativeSubjectId)))\n .limit(1);\n});\n\ninterface Resolved {\n readonly nativeSubjectId: unknown;\n readonly subject: any;\n readonly identifier: any;\n readonly credential?: any;\n readonly snapshot?: PasswordCredentialSnapshot;\n}\n\nconst resolveCredential = Effect.fn(\"DrizzleD1Password.resolveCredential\")(function* (\n mapping: Mapping,\n moduleId: string,\n identifier: LoginIdentifier,\n requestedSubjectId?: string,\n) {\n const identifierRow = (yield* readIdentifier(mapping, identifier))[0];\n\n if (identifierRow === undefined || !mapping.identifier.isCurrent(identifierRow)) return undefined;\n const nativeSubjectId = identifierRow[mapping.identifier.subjectId];\n const subject = (yield* readSubjectNative(mapping, nativeSubjectId))[0];\n\n if (subject === undefined || !mapping.subject.isActiveStatus(subject[mapping.subject.status]))\n return undefined;\n const subjectId = yield* mapping.subjectId.toSubject(nativeSubjectId);\n\n if (requestedSubjectId !== undefined && subjectId !== requestedSubjectId) return undefined;\n const credential = (yield* readCredentialNative(mapping, moduleId, nativeSubjectId))[0];\n\n if (credential === undefined) return { nativeSubjectId, subject, identifier: identifierRow };\n\n const snapshot = yield* mapping.credential\n .decode({ moduleId, subject, identifier: identifierRow, credential })\n .pipe(Effect.flatMap(snapshotPasswordCredential));\n\n return { nativeSubjectId, subject, identifier: identifierRow, credential, snapshot };\n});\n\ninterface ScopeEntry {\n readonly kind: PasswordRateScopeKind;\n readonly key: string;\n readonly limit: number;\n readonly windowMillis: number;\n}\n\nconst scopeEntries = (keys: PasswordScopeKeys, policy: PasswordAttemptPolicy) => {\n const entries: ScopeEntry[] = [\n { kind: \"action\", key: keys.action, ...policy.action },\n { kind: \"identifier\", key: keys.identifier, ...policy.identifier },\n ];\n\n if (keys.subject !== undefined)\n entries.push({ kind: \"subject\", key: keys.subject, ...policy.subject });\n\n return entries;\n};\n\nconst scopeAdmissionCondition = (\n mapping: Mapping,\n moduleId: string,\n action: \"sign-in\" | \"change\",\n entry: ScopeEntry,\n policy: PasswordAttemptPolicy,\n identifier: LoginIdentifier,\n nativeSubjectId: unknown | undefined,\n) => {\n const c = chargeColumns(mapping);\n const a = attemptColumns(mapping);\n\n const pending =\n entry.kind === \"action\"\n ? and(eq(a.moduleId, moduleId), eq(a.action, action), eq(a.state, \"pending\"))\n : entry.kind === \"identifier\"\n ? and(\n eq(a.moduleId, moduleId),\n eq(a.action, action),\n eq(a.identifierNamespace, identifier.namespace),\n eq(a.identifierValue, identifier.value),\n eq(a.state, \"pending\"),\n )\n : and(\n eq(a.moduleId, moduleId),\n eq(a.action, action),\n eq(a.subjectId, nativeSubjectId),\n eq(a.state, \"pending\"),\n );\n\n return sql`(select count(*) from ${mapping.charge.table} where ${c.moduleId} = ${sql.param(moduleId, c.moduleId)} and ${c.action} = ${sql.param(action, c.action)} and ${c.scopeKind} = ${sql.param(entry.kind, c.scopeKind)} and ${c.scopeKey} = ${sql.param(entry.key, c.scopeKey)} and ${c.occurredAt} >= ${mapping.d1.engineInstantMinus(entry.windowMillis)}) < ${entry.limit} and (select count(*) from ${mapping.attempt.table} where ${pending}) < ${policy.maximumPending}`;\n};\n\nconst readScopeAdmission = Effect.fn(\"DrizzleD1Password.readScopeAdmission\")(function* (\n mapping: Mapping,\n moduleId: string,\n action: \"sign-in\" | \"change\",\n entries: ReadonlyArray<ScopeEntry>,\n policy: PasswordAttemptPolicy,\n identifier: LoginIdentifier,\n nativeSubjectId: unknown | undefined,\n now: number,\n) {\n const database = yield* CurrentD1PlanningDatabase;\n\n const c = chargeColumns(mapping);\n const a = attemptColumns(mapping);\n const admitted: ScopeEntry[] = [];\n\n for (let index = 0; index < entries.length; index++) {\n const entry = entries[index]!;\n\n const chargeRows = yield* mapAdapter(\n database\n .select({ total: count() })\n .from(mapping.charge.table)\n .where(\n and(\n eq(c.moduleId, moduleId),\n eq(c.action, action),\n eq(c.scopeKind, entry.kind),\n eq(c.scopeKey, entry.key),\n gte(c.occurredAt, mapping.encodeInstant(now - entry.windowMillis)),\n ),\n ),\n );\n\n const pendingWhere =\n entry.kind === \"action\"\n ? and(eq(a.moduleId, moduleId), eq(a.action, action), eq(a.state, \"pending\"))\n : entry.kind === \"identifier\"\n ? and(\n eq(a.moduleId, moduleId),\n eq(a.action, action),\n eq(a.identifierNamespace, identifier.namespace),\n eq(a.identifierValue, identifier.value),\n eq(a.state, \"pending\"),\n )\n : and(\n eq(a.moduleId, moduleId),\n eq(a.action, action),\n eq(a.subjectId, nativeSubjectId),\n eq(a.state, \"pending\"),\n );\n\n const pendingRows = yield* mapAdapter(\n database.select({ total: count() }).from(mapping.attempt.table).where(pendingWhere),\n );\n\n const admittedHere =\n Number(chargeRows[0]?.total ?? 0) < entry.limit &&\n Number(pendingRows[0]?.total ?? 0) < policy.maximumPending;\n\n if (admittedHere) admitted.push(entry);\n else if (index === 0) break;\n }\n\n return admitted;\n});\n\nconst evidenceProofsJson = Schema.encodeSync(\n Schema.fromJsonString(AuthenticationEvidence.fields.proofs),\n);\n\nconst alternativesJson = Schema.encodeSync(\n Schema.fromJsonString(AuthenticationRequirement.fields.alternatives),\n);\n\nconst assuranceCondition = (\n mapping: Mapping,\n evidence: PasswordMutationInput[\"authorization\"][\"evidence\"],\n requirement: PasswordMutationInput[\"authorization\"][\"requirement\"],\n) => {\n const proofs = evidenceProofsJson(evidence.proofs);\n const fresh = sql`json_extract(proof.value, '$.verifiedAt') <= ${mapping.d1.engineNowMillis} and ${mapping.d1.engineNowMillis} - json_extract(proof.value, '$.verifiedAt') < ${requirement.maximumAgeMillis}`;\n\n return sql`exists(\n select 1 from json_each(${alternativesJson(requirement.alternatives)}) as alternative\n where not exists(select 1 from json_each(${proofs}) as proof where json_extract(proof.value, '$.verifiedAt') > ${mapping.d1.engineNowMillis})\n and not exists(select 1 from json_each(alternative.value, '$.factors') as factor where not exists(select 1 from json_each(${proofs}) as proof, json_each(proof.value, '$.factors') as held where ${fresh} and held.value = factor.value))\n and (select count(distinct json_extract(proof.value, '$.credentialId')) from json_each(${proofs}) as proof where ${fresh}) >= json_extract(alternative.value, '$.minimumCredentials')\n and exists(select 1 from json_each(${proofs}) as proof where ${fresh} and (json_extract(alternative.value, '$.userVerified') = 0 or json_extract(proof.value, '$.userVerified') = 1) and (json_extract(alternative.value, '$.phishingResistant') = 0 or json_extract(proof.value, '$.phishingResistant') = 1))\n )`;\n};\n\nconst sameIdentifier = (left: LoginIdentifier, right: LoginIdentifier) =>\n left.namespace === right.namespace && left.value === right.value;\n\nconst sameSnapshot = (left: PasswordCredentialSnapshot, right: PasswordCredentialSnapshot) =>\n left.moduleId === right.moduleId &&\n left.revision.subjectId === right.revision.subjectId &&\n left.revision.securityRevision === right.revision.securityRevision &&\n left.credentialId === right.credentialId &&\n left.credentialRevision === right.credentialRevision &&\n left.verifierVersion === right.verifierVersion &&\n left.normalization === right.normalization &&\n left.identifierVerifiedAtMillis === right.identifierVerifiedAtMillis &&\n left.revision.credentials.length === right.revision.credentials.length &&\n left.revision.credentials.every((entry) =>\n right.revision.credentials.some(\n (other) => other.credentialId === entry.credentialId && other.revision === entry.revision,\n ),\n ) &&\n left.identifierBindingRevision === right.identifierBindingRevision &&\n sameIdentifier(left.identifier, right.identifier) &&\n Redacted.value(left.verifier) === Redacted.value(right.verifier);\n\nconst evidenceSatisfiedAt = (\n evidence: PasswordMutationInput[\"authorization\"][\"evidence\"],\n requirement: PasswordMutationInput[\"authorization\"][\"requirement\"],\n now: number,\n) => {\n if (evidence.proofs.length > 64 || evidence.revision.credentials.length > 64) return false;\n const revisions = new Map<string, string>();\n\n for (const revision of evidence.revision.credentials) {\n if (revisions.has(revision.credentialId)) return false;\n revisions.set(revision.credentialId, revision.revision);\n }\n if (evidence.proofs.some((proof) => !revisions.has(proof.credentialId))) return false;\n if (evidence.proofs.some((proof) => now < DateTime.toEpochMillis(proof.verifiedAt))) return false;\n\n const fresh = evidence.proofs.filter(\n (proof) => now - DateTime.toEpochMillis(proof.verifiedAt) < requirement.maximumAgeMillis,\n );\n\n const factors = new Set(fresh.flatMap((proof) => proof.factors));\n const credentials = new Set(fresh.map((proof) => proof.credentialId));\n\n return requirement.alternatives.some(\n (alternative) =>\n alternative.factors.every((factor) => factors.has(factor)) &&\n credentials.size >= alternative.minimumCredentials &&\n fresh.some(\n (proof) =>\n (!alternative.userVerified || proof.userVerified) &&\n (!alternative.phishingResistant || proof.phishingResistant),\n ),\n );\n};\n\nconst snapshotMutationInput = Effect.fn(\"DrizzleD1Password.snapshotMutationInput\")(function* (\n input: PasswordMutationInput,\n) {\n const expectedRevision = snapshotPasswordRevision(input.expectedRevision);\n\n const evidence = yield* snapshotAuthenticationEvidence(input.authorization.evidence).pipe(\n Effect.mapError(unavailable),\n );\n\n const requirement = yield* snapshotPasswordRequirement(input.authorization.requirement);\n\n const credential =\n input.credential === undefined\n ? undefined\n : yield* snapshotPasswordCredential(input.credential);\n\n return Object.freeze({\n ...input,\n expectedRevision,\n replacement: Object.freeze({\n verifier: Redacted.make(Redacted.value(input.replacement.verifier)),\n normalization: input.replacement.normalization,\n }),\n invalidation: Object.freeze({ ...input.invalidation }),\n ...(credential === undefined ? {} : { credential }),\n authorization: Object.freeze({\n challenge: Object.freeze({\n ...input.authorization.challenge,\n revision: snapshotPasswordRevision(input.authorization.challenge.revision),\n }),\n evidence,\n requirement,\n }),\n });\n});\n\nconst completionMatchesPassword = (\n input: PasswordMutationInput & { readonly completion: ProofCompletionPlan },\n) => {\n const completion = input.completion.input;\n const binding = completion.binding;\n\n if (\n completion.moduleId !== `${input.moduleId}/reset` ||\n completion.purpose !== \"password-reset\" ||\n binding._tag !== \"Subject\" ||\n input.credential === undefined ||\n binding.revision.subjectId !== input.expectedRevision.subjectId ||\n binding.revision.securityRevision !== input.expectedRevision.securityRevision ||\n !sameIdentifier(binding.identifier, input.credential.identifier)\n )\n return false;\n\n const expected = [...input.expectedRevision.credentials].sort((left, right) =>\n left.credentialId.localeCompare(right.credentialId),\n );\n\n const actual = [...binding.revision.credentials].sort((left, right) =>\n left.credentialId.localeCompare(right.credentialId),\n );\n\n return (\n expected.length === actual.length &&\n expected.every(\n (item, index) =>\n item.credentialId === actual[index]!.credentialId &&\n item.revision === actual[index]!.revision,\n )\n );\n};\n\nconst probeProofCompletion = Effect.fn(\"DrizzleD1.probeProofCompletion\")(function* (\n mapping: D1ProofPersistenceMapping<any, any, any, any, any, any, any, any, any, any, any, any>,\n input: ProofCompletionInput,\n) {\n const database = yield* CurrentD1PlanningDatabase;\n\n const plan: ProofCompletionPlan = {\n input,\n prepare: (decision, journal, project) => journal.prepare(project(decision)),\n };\n\n const marker = `effect-auth-proof-guard:protected:${input.continuationId}`;\n\n const once = coordinateCommit(\n () =>\n Effect.gen(function* () {\n const compiled = yield* compileD1ProofCompletionPlan(\n mapping,\n plan,\n { statements: [], appliedCondition: sql`false` },\n () => false,\n );\n\n if (compiled.statements.length === 0) return false;\n yield* database.$client.batch(compiled.statements);\n\n return false;\n }),\n { mode: \"batch\" },\n );\n\n return yield* once.pipe(\n Effect.as(false),\n Effect.catchCause((cause) =>\n isGuardFailure(cause, marker) ? Effect.succeed(true) : Effect.failCause(cause),\n ),\n );\n});\n\nconst identifierCurrentCondition = (\n mapping: Mapping,\n input: PasswordMutationInput,\n nativeSubjectId: unknown,\n nativeVerifiedAt: unknown,\n) => {\n if (input.credential === undefined) return sql`true`;\n\n const ic = identifierColumns(mapping),\n snapshot = input.credential;\n\n return and(\n mapping.identifier.d1CurrentCondition({ identifier: snapshot.identifier, nativeSubjectId }),\n sql`exists(select 1 from ${mapping.identifier.table} where ${ic.namespace} = ${sql.param(snapshot.identifier.namespace, ic.namespace)} and ${ic.value} = ${sql.param(snapshot.identifier.value, ic.value)} and ${ic.subjectId} = ${sql.param(nativeSubjectId, ic.subjectId)} and ${ic.bindingRevision} = ${sql.param(snapshot.identifierBindingRevision, ic.bindingRevision)} and ${Predicate.isNullish(nativeVerifiedAt) ? sql`${ic.verifiedAt} is null` : sql`${ic.verifiedAt} = ${sql.param(nativeVerifiedAt, ic.verifiedAt)}`})`,\n )!;\n};\n\nconst readAuthority = Effect.fn(\"DrizzleD1Password.readAuthority\")(function* (\n mapping: Mapping,\n input: PasswordMutationInput,\n action: PasswordAction,\n) {\n const database = yield* CurrentD1PlanningDatabase;\n\n if (\n input.authorization.evidence.proofs.length > 64 ||\n input.authorization.evidence.revision.credentials.length > 64\n )\n return undefined;\n\n const revisionIds = new Set(\n input.authorization.evidence.revision.credentials.map((item) => item.credentialId),\n );\n\n if (\n revisionIds.size !== input.authorization.evidence.revision.credentials.length ||\n input.authorization.evidence.proofs.some((proof) => !revisionIds.has(proof.credentialId))\n )\n return undefined;\n const nativeSubjectId = yield* mapping.subjectId.toNative(input.expectedRevision.subjectId);\n const subject = (yield* readSubjectNative(mapping, nativeSubjectId))[0];\n\n if (\n subject === undefined ||\n !mapping.subject.isActiveStatus(subject[mapping.subject.status]) ||\n subject[mapping.subject.securityRevision] !== input.expectedRevision.securityRevision ||\n input.authorization.challenge.moduleId !== input.moduleId ||\n input.authorization.challenge.action !== action ||\n input.authorization.challenge.commandId !== input.commandId ||\n input.authorization.challenge.revision.subjectId !== input.expectedRevision.subjectId ||\n input.authorization.challenge.revision.securityRevision !==\n input.expectedRevision.securityRevision ||\n input.authorization.evidence.revision.subjectId !== input.expectedRevision.subjectId ||\n input.authorization.evidence.revision.securityRevision !==\n input.expectedRevision.securityRevision ||\n (input.authorization.evidence.flowId as string) !== (input.commandId as string) ||\n input.authorization.evidence.bindingDigest !== input.authorization.challenge.bindingDigest ||\n (action === \"add-password\" &&\n (input.credential !== undefined ||\n input.authorization.challenge.targetCredentialId !== undefined)) ||\n input.expectedRevision.credentials.some(\n (expected) =>\n !input.authorization.evidence.revision.credentials.some(\n (actual) =>\n actual.credentialId === expected.credentialId && actual.revision === expected.revision,\n ),\n )\n )\n return undefined;\n let identifierCondition: SQL = sql`true`;\n\n if (input.credential !== undefined) {\n const identifier = (yield* readIdentifier(mapping, input.credential.identifier))[0];\n\n if (\n identifier === undefined ||\n input.authorization.challenge.targetCredentialId !== input.credential.credentialId ||\n !mapping.identifier.isCurrent(identifier) ||\n !mapping.subjectId.equals(identifier[mapping.identifier.subjectId], nativeSubjectId) ||\n identifier[mapping.identifier.bindingRevision] !== input.credential.identifierBindingRevision\n )\n return undefined;\n const credential = (yield* readCredentialNative(mapping, input.moduleId, nativeSubjectId))[0];\n\n if (credential === undefined) return undefined;\n\n const snapshot = yield* mapping.credential.decode({\n moduleId: input.moduleId,\n subject,\n identifier,\n credential,\n });\n\n if (!sameSnapshot(snapshot, input.credential)) return undefined;\n identifierCondition = identifierCurrentCondition(\n mapping,\n input,\n nativeSubjectId,\n identifier[mapping.identifier.verifiedAt],\n );\n const ic = identifierColumns(mapping);\n\n identifierCondition = and(\n identifierCondition,\n sql`exists(select 1 from ${mapping.identifier.table} where ${ic.namespace} = ${sql.param(input.credential.identifier.namespace, ic.namespace)} and ${ic.value} = ${sql.param(input.credential.identifier.value, ic.value)} and ${ic.subjectId} = ${sql.param(nativeSubjectId, ic.subjectId)} and ${ic.bindingRevision} = ${sql.param(input.credential.identifierBindingRevision, ic.bindingRevision)})`,\n )!;\n }\n\n const expected = [\n ...new Map(\n [\n ...input.expectedRevision.credentials,\n ...input.authorization.evidence.revision.credentials,\n ].map((item) => [item.credentialId, item]),\n ).values(),\n ].sort((left, right) => left.credentialId.localeCompare(right.credentialId));\n\n const ac = authorityColumns(mapping);\n\n const rows =\n expected.length === 0\n ? []\n : yield* database\n .select()\n .from(mapping.authorityCredential.table)\n .where(\n and(\n eq(ac.subjectId, nativeSubjectId),\n inArray(\n ac.credentialId,\n expected.map((item) => item.credentialId),\n ),\n ),\n );\n\n const sortedRows = [...rows].sort((left: any, right: any) =>\n String(left[mapping.authorityCredential.credentialId]).localeCompare(\n String(right[mapping.authorityCredential.credentialId]),\n ),\n );\n\n if (\n sortedRows.length !== expected.length ||\n sortedRows.some(\n (row: any, index) =>\n row[mapping.authorityCredential.credentialId] !== expected[index]!.credentialId ||\n row[mapping.authorityCredential.revision] !== expected[index]!.revision ||\n (mapping.authorityCredential.status !== undefined &&\n mapping.authorityCredential.isActiveStatus?.(row[mapping.authorityCredential.status]) !==\n true),\n )\n )\n return undefined;\n const requirement = yield* mapping.subject.decodeActionRequirement(subject, action);\n const engineNow = yield* readEngineNowMillis(mapping);\n\n if (\n !evidenceSatisfiedAt(\n input.authorization.evidence,\n input.authorization.requirement,\n engineNow,\n ) ||\n !evidenceSatisfiedAt(input.authorization.evidence, requirement, engineNow)\n )\n return undefined;\n if (\n input.invalidation.existingSessions === \"immediate\" &&\n mapping.sessionInvalidation !== \"same-authority-immediate\"\n )\n return undefined;\n const s = subjectColumns(mapping);\n\n const credentialConditions = expected.map(\n (item) =>\n sql`exists(select 1 from ${mapping.authorityCredential.table} where ${ac.subjectId} = ${sql.param(nativeSubjectId, ac.subjectId)} and ${ac.credentialId} = ${sql.param(item.credentialId, ac.credentialId)} and ${ac.revision} = ${sql.param(item.revision, ac.revision)}${ac.status === undefined ? sql`` : sql` and ${ac.status} = ${sql.param(mapping.authorityCredential.d1ActiveStatusValue, ac.status)}`})`,\n );\n\n return {\n nativeSubjectId,\n subject,\n requirement,\n identifierCondition,\n condition: balancedD1And(\n sql`exists(select 1 from ${mapping.subject.table} where ${s.id} = ${sql.param(nativeSubjectId, s.id)} and ${s.status} = ${sql.param(mapping.subject.d1ActiveStatusValue, s.status)} and ${s.securityRevision} = ${sql.param(input.expectedRevision.securityRevision, s.securityRevision)})`,\n identifierCondition,\n ...credentialConditions,\n assuranceCondition(mapping, input.authorization.evidence, input.authorization.requirement),\n assuranceCondition(mapping, input.authorization.evidence, requirement),\n )!,\n };\n});\n\nconst commandAbsentCondition = (mapping: Mapping, moduleId: string, commandId: string) => {\n const c = commandColumns(mapping);\n\n return sql`not exists(select 1 from ${mapping.command.table} where ${c.moduleId} = ${sql.param(moduleId, c.moduleId)} and ${c.commandId} = ${sql.param(commandId, c.commandId)})`;\n};\n\nconst credentialCurrentCondition = (\n mapping: Mapping,\n input: PasswordMutationInput,\n nativeSubjectId: unknown,\n) => {\n const c = credentialColumns(mapping);\n\n return input.credential === undefined\n ? sql`false`\n : sql`exists(select 1 from ${mapping.credential.table} where ${c.moduleId} = ${sql.param(input.moduleId, c.moduleId)} and ${c.subjectId} = ${sql.param(nativeSubjectId, c.subjectId)} and ${c.credentialId} = ${sql.param(input.credential.credentialId, c.credentialId)} and ${c.credentialRevision} = ${sql.param(input.credential.credentialRevision, c.credentialRevision)} and ${c.verifierVersion} = ${sql.param(input.credential.verifierVersion, c.verifierVersion)} and ${c.verifier} = ${sql.param(Redacted.value(input.credential.verifier), c.verifier)} and ${c.normalization} = ${sql.param(input.credential.normalization, c.normalization)})`;\n};\n\nconst admittedSnapshotCondition = (\n mapping: Mapping,\n resolved: Resolved | undefined,\n moduleId: string,\n) => {\n const snapshot = resolved?.snapshot;\n\n if (snapshot === undefined || resolved === undefined) return sql`true`;\n const s = subjectColumns(mapping);\n const i = identifierColumns(mapping);\n const c = credentialColumns(mapping);\n const ac = authorityColumns(mapping);\n\n return and(\n sql`exists(select 1 from ${mapping.subject.table} where ${s.id} = ${sql.param(resolved.nativeSubjectId, s.id)} and ${s.status} = ${sql.param(mapping.subject.d1ActiveStatusValue, s.status)} and ${s.securityRevision} = ${sql.param(snapshot.revision.securityRevision, s.securityRevision)})`,\n mapping.identifier.d1CurrentCondition({\n identifier: snapshot.identifier,\n nativeSubjectId: resolved.nativeSubjectId,\n }),\n sql`exists(select 1 from ${mapping.identifier.table} where ${i.namespace} = ${sql.param(snapshot.identifier.namespace, i.namespace)} and ${i.value} = ${sql.param(snapshot.identifier.value, i.value)} and ${i.subjectId} = ${sql.param(resolved.nativeSubjectId, i.subjectId)} and ${i.bindingRevision} = ${sql.param(snapshot.identifierBindingRevision, i.bindingRevision)})`,\n sql`exists(select 1 from ${mapping.credential.table} where ${c.moduleId} = ${sql.param(moduleId, c.moduleId)} and ${c.subjectId} = ${sql.param(resolved.nativeSubjectId, c.subjectId)} and ${c.credentialId} = ${sql.param(snapshot.credentialId, c.credentialId)} and ${c.credentialRevision} = ${sql.param(snapshot.credentialRevision, c.credentialRevision)} and ${c.verifierVersion} = ${sql.param(snapshot.verifierVersion, c.verifierVersion)} and ${c.verifier} = ${sql.param(Redacted.value(snapshot.verifier), c.verifier)} and ${c.normalization} = ${sql.param(snapshot.normalization, c.normalization)})`,\n ...snapshot.revision.credentials.map(\n (item) =>\n sql`exists(select 1 from ${mapping.authorityCredential.table} where ${ac.subjectId} = ${sql.param(resolved.nativeSubjectId, ac.subjectId)} and ${ac.credentialId} = ${sql.param(item.credentialId, ac.credentialId)} and ${ac.revision} = ${sql.param(item.revision, ac.revision)}${ac.status === undefined ? sql`` : sql` and ${ac.status} = ${sql.param(mapping.authorityCredential.d1ActiveStatusValue, ac.status)}`})`,\n ),\n )!;\n};\n\nconst mutationStatements = Effect.fn(function* (\n mapping: Mapping,\n input: PasswordMutationInput,\n nativeSubjectId: unknown,\n revisions: {\n readonly credentialRevision: SecurityRevision;\n readonly verifierVersion: SecurityRevision;\n readonly nextSecurityRevision: SecurityRevision;\n },\n now: number,\n) {\n const database = yield* CurrentD1PlanningDatabase;\n const c = credentialColumns(mapping);\n const s = subjectColumns(mapping);\n const ac = authorityColumns(mapping);\n\n return [\n yield* statement(\n database\n .update(mapping.credential.table)\n .set(\n mapping.credential.encodeReplacement({\n replacement: input.replacement,\n credentialRevision: revisions.credentialRevision,\n verifierVersion: revisions.verifierVersion,\n }),\n )\n .where(\n and(\n eq(c.moduleId, input.moduleId),\n eq(c.subjectId, nativeSubjectId),\n eq(c.credentialId, input.credential!.credentialId),\n eq(c.credentialRevision, input.credential!.credentialRevision),\n eq(c.verifierVersion, input.credential!.verifierVersion),\n eq(c.verifier, Redacted.value(input.credential!.verifier)),\n eq(c.normalization, input.credential!.normalization),\n ),\n ),\n ),\n yield* statement(\n database\n .update(mapping.subject.table)\n .set(updateValues([[mapping.subject.securityRevision, revisions.nextSecurityRevision]]))\n .where(\n and(\n eq(s.id, nativeSubjectId),\n eq(s.securityRevision, input.expectedRevision.securityRevision),\n ),\n ),\n ),\n yield* statement(\n database\n .update(mapping.authorityCredential.table)\n .set(mapping.authorityCredential.encodeRevision(revisions.credentialRevision))\n .where(\n and(\n eq(ac.subjectId, nativeSubjectId),\n eq(ac.credentialId, input.credential!.credentialId),\n eq(ac.revision, input.credential!.credentialRevision),\n ),\n ),\n ),\n yield* statement(\n database.insert(mapping.command.table).values(\n mapping.command.encodeInsert({\n moduleId: input.moduleId,\n commandId: input.commandId,\n action: input.authorization.challenge.action,\n bindingDigest: input.authorization.challenge.bindingDigest,\n decision: \"changed\",\n retentionUntilMillis: now + mapping.commandRetentionMillis,\n }),\n ),\n ),\n ];\n});\n\nconst replacementApplied = (\n mapping: Mapping,\n input: PasswordMutationInput,\n nativeSubjectId: unknown,\n revisions: {\n readonly credentialRevision: SecurityRevision;\n readonly verifierVersion: SecurityRevision;\n readonly nextSecurityRevision: SecurityRevision;\n },\n now: number,\n identifierCondition: SQL,\n) => {\n const c = credentialColumns(mapping);\n const s = subjectColumns(mapping);\n const ac = authorityColumns(mapping);\n const mc = commandColumns(mapping);\n\n return and(\n sql`exists(select 1 from ${mapping.credential.table} where ${c.moduleId} = ${sql.param(input.moduleId, c.moduleId)} and ${c.subjectId} = ${sql.param(nativeSubjectId, c.subjectId)} and ${c.credentialId} = ${sql.param(input.credential!.credentialId, c.credentialId)} and ${c.credentialRevision} = ${sql.param(revisions.credentialRevision, c.credentialRevision)} and ${c.verifierVersion} = ${sql.param(revisions.verifierVersion, c.verifierVersion)} and ${c.verifier} = ${sql.param(Redacted.value(input.replacement.verifier), c.verifier)} and ${c.normalization} = ${sql.param(input.replacement.normalization, c.normalization)})`,\n sql`exists(select 1 from ${mapping.subject.table} where ${s.id} = ${sql.param(nativeSubjectId, s.id)} and ${s.securityRevision} = ${sql.param(revisions.nextSecurityRevision, s.securityRevision)} and ${s.status} = ${sql.param(mapping.subject.d1ActiveStatusValue, s.status)})`,\n sql`exists(select 1 from ${mapping.authorityCredential.table} where ${ac.subjectId} = ${sql.param(nativeSubjectId, ac.subjectId)} and ${ac.credentialId} = ${sql.param(input.credential!.credentialId, ac.credentialId)} and ${ac.revision} = ${sql.param(revisions.credentialRevision, ac.revision)}${ac.status === undefined ? sql`` : sql` and ${ac.status} = ${sql.param(mapping.authorityCredential.d1ActiveStatusValue, ac.status)}`})`,\n sql`exists(select 1 from ${mapping.command.table} where ${mc.moduleId} = ${sql.param(input.moduleId, mc.moduleId)} and ${mc.commandId} = ${sql.param(input.commandId, mc.commandId)} and ${mc.bindingDigest} = ${sql.param(input.authorization.challenge.bindingDigest, mc.bindingDigest)} and ${mc.action} = ${sql.param(input.authorization.challenge.action, mc.action)} and ${mc.decision} = ${sql.param(\"changed\", mc.decision)} and ${mc.retentionUntil} = ${sql.param(mapping.encodeInstant(now + mapping.commandRetentionMillis), mc.retentionUntil)})`,\n identifierCondition,\n sql`true`,\n )!;\n};\n\nconst compileAddMutation = Effect.fn(\"DrizzleD1Password.compileAddMutation\")(function* (\n mapping: Mapping,\n input: PasswordMutationInput,\n revisions: {\n readonly credentialId: string;\n readonly credentialRevision: SecurityRevision;\n readonly verifierVersion: SecurityRevision;\n readonly nextSecurityRevision: SecurityRevision;\n },\n) {\n const database = yield* CurrentD1PlanningDatabase;\n\n const { credentialId, credentialRevision, verifierVersion, nextSecurityRevision } = revisions;\n\n const authority = yield* readAuthority(mapping, input, \"add-password\");\n\n if (authority === undefined) return undefined;\n const now = yield* readEngineNowMillis(mapping);\n const c = credentialColumns(mapping);\n const s = subjectColumns(mapping);\n const ac = authorityColumns(mapping);\n const mc = commandColumns(mapping);\n const marker = `effect-auth-password-guard:add:${input.commandId}`;\n const absent = sql`not exists(select 1 from ${mapping.credential.table} where ${c.moduleId} = ${sql.param(input.moduleId, c.moduleId)} and ${c.subjectId} = ${sql.param(authority.nativeSubjectId, c.subjectId)})`;\n\n const guard = and(\n authority.condition,\n absent,\n commandAbsentCondition(mapping, input.moduleId, input.commandId),\n )!;\n\n const appliedCondition = and(\n sql`exists(select 1 from ${mapping.credential.table} where ${c.moduleId} = ${sql.param(input.moduleId, c.moduleId)} and ${c.subjectId} = ${sql.param(authority.nativeSubjectId, c.subjectId)} and ${c.credentialId} = ${sql.param(credentialId, c.credentialId)} and ${c.credentialRevision} = ${sql.param(credentialRevision, c.credentialRevision)} and ${c.verifierVersion} = ${sql.param(verifierVersion, c.verifierVersion)} and ${c.verifier} = ${sql.param(Redacted.value(input.replacement.verifier), c.verifier)} and ${c.normalization} = ${sql.param(input.replacement.normalization, c.normalization)})`,\n sql`exists(select 1 from ${mapping.authorityCredential.table} where ${ac.subjectId} = ${sql.param(authority.nativeSubjectId, ac.subjectId)} and ${ac.credentialId} = ${sql.param(credentialId, ac.credentialId)} and ${ac.revision} = ${sql.param(credentialRevision, ac.revision)}${ac.status === undefined ? sql`` : sql` and ${ac.status} = ${sql.param(mapping.authorityCredential.d1ActiveStatusValue, ac.status)}`})`,\n sql`exists(select 1 from ${mapping.subject.table} where ${s.id} = ${sql.param(authority.nativeSubjectId, s.id)} and ${s.securityRevision} = ${sql.param(nextSecurityRevision, s.securityRevision)} and ${s.status} = ${sql.param(mapping.subject.d1ActiveStatusValue, s.status)})`,\n sql`exists(select 1 from ${mapping.command.table} where ${mc.moduleId} = ${sql.param(input.moduleId, mc.moduleId)} and ${mc.commandId} = ${sql.param(input.commandId, mc.commandId)} and ${mc.bindingDigest} = ${sql.param(input.authorization.challenge.bindingDigest, mc.bindingDigest)} and ${mc.action} = ${sql.param(\"add-password\", mc.action)} and ${mc.decision} = ${sql.param(\"changed\", mc.decision)} and ${mc.retentionUntil} = ${sql.param(mapping.encodeInstant(now + mapping.commandRetentionMillis), mc.retentionUntil)})`,\n )!;\n\n const statements: Statement<any>[] = [\n yield* assertion(guard, marker),\n yield* statement(\n database.insert(mapping.credential.table).values(\n mapping.credential.encodeInsert({\n moduleId: input.moduleId,\n subjectId: authority.nativeSubjectId,\n credentialId,\n credentialRevision,\n verifierVersion,\n replacement: input.replacement,\n }),\n ),\n ),\n yield* statement(\n database.insert(mapping.authorityCredential.table).values(\n mapping.authorityCredential.encodeInsert({\n subjectId: authority.nativeSubjectId,\n credentialId,\n revision: credentialRevision,\n }),\n ),\n ),\n yield* statement(\n database\n .update(mapping.subject.table)\n .set(updateValues([[mapping.subject.securityRevision, nextSecurityRevision]]))\n .where(\n and(\n eq(s.id, authority.nativeSubjectId),\n eq(s.securityRevision, input.expectedRevision.securityRevision),\n ),\n ),\n ),\n yield* statement(\n database.insert(mapping.command.table).values(\n mapping.command.encodeInsert({\n moduleId: input.moduleId,\n commandId: input.commandId,\n action: \"add-password\",\n bindingDigest: input.authorization.challenge.bindingDigest,\n decision: \"changed\",\n retentionUntilMillis: now + mapping.commandRetentionMillis,\n }),\n ),\n ),\n yield* assertion(appliedCondition, marker),\n ];\n\n return {\n statements,\n appliedCondition,\n retryable: (cause: unknown) => isGuardFailure(cause, marker),\n };\n});\n\nconst makePasswordPlans = (\n mapping: Mapping,\n proofMapping?: D1ProofPersistenceMapping<\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any\n >,\n) => {\n const run = <A, E, R>(plan: Effect.Effect<Planned<A>, E, R>) =>\n Effect.gen(function* () {\n if (!validConstraints(mapping)) return yield* unavailable();\n\n return yield* plan;\n });\n\n return {\n admitAttempt: <A>(\n input: Parameters<PasswordPersistence[\"Service\"][\"admitAttempt\"]>[0],\n prepare: PlanPrepare<PasswordPersistence[\"Service\"][\"admitAttempt\"], A>,\n ) =>\n Effect.gen(function* () {\n const database = yield* CurrentD1PlanningDatabase;\n\n const attemptId = yield* allocate(mapping.allocateAttemptId, mapping.allocateAttemptIdSync);\n\n return yield* run(\n Effect.gen(function* () {\n const journal = yield* CurrentCommitJournal;\n\n const now = yield* readEngineNowMillis(mapping);\n\n const resolved = yield* resolveCredential(\n mapping,\n input.moduleId,\n input.identifier,\n input.subjectId,\n );\n\n const keys = mapping.scopeKeys({\n moduleId: input.moduleId,\n action: input.action,\n identifier: input.identifier,\n ...(resolved?.snapshot === undefined\n ? {}\n : { subjectId: resolved.snapshot.revision.subjectId }),\n });\n\n const scopes = scopeEntries(keys, input.policy);\n\n const admitted = yield* readScopeAdmission(\n mapping,\n input.moduleId,\n input.action,\n scopes,\n input.policy,\n input.identifier,\n resolved?.nativeSubjectId,\n now,\n );\n\n const allAdmitted = admitted.length === scopes.length;\n const considered = admitted.length === 0 ? scopes.slice(0, 1) : scopes;\n\n const receipt = prepare(\n allAdmitted\n ? {\n _tag: \"Admitted\" as const,\n attemptId,\n ...(resolved?.snapshot === undefined ? {} : { credential: resolved.snapshot }),\n }\n : { _tag: \"Denied\" as const },\n journal,\n );\n\n const marker = `effect-auth-password-guard:admit:${attemptId}`;\n const statements: Statement<any>[] = [];\n\n for (const entry of considered) {\n statements.push(\n yield* statement(\n database\n .insert(mapping.rateScope.table)\n .values(\n mapping.rateScope.encodeInsert({\n moduleId: input.moduleId,\n action: input.action,\n scopeKind: entry.kind,\n scopeKey: entry.key,\n }),\n )\n .onConflictDoNothing(),\n ),\n );\n }\n\n const conditions = considered.map((entry) => {\n const condition = scopeAdmissionCondition(\n mapping,\n input.moduleId,\n input.action,\n entry,\n input.policy,\n input.identifier,\n resolved?.nativeSubjectId,\n );\n\n return admitted.includes(entry) ? condition : sql`not (${condition})`;\n });\n\n statements.push(\n yield* assertion(\n and(\n ...conditions,\n ...(allAdmitted\n ? [admittedSnapshotCondition(mapping, resolved, input.moduleId)]\n : []),\n )!,\n marker,\n ),\n );\n for (const entry of admitted)\n statements.push(\n yield* statement(\n database.insert(mapping.charge.table).values(\n driverValues(\n mapping.charge.encodeInsert({\n moduleId: input.moduleId,\n action: input.action,\n scopeKind: entry.kind,\n scopeKey: entry.key,\n attemptId,\n occurredAtMillis: now,\n retentionUntilMillis: now + entry.windowMillis,\n }),\n [\n [mapping.charge.occurredAt, mapping.d1.engineNow],\n [\n mapping.charge.retentionUntil,\n mapping.d1.engineInstantPlus(entry.windowMillis),\n ],\n ],\n ),\n ),\n ),\n );\n if (allAdmitted) {\n const snapshot = resolved?.snapshot;\n\n const record: PasswordAttemptRecord = {\n moduleId: input.moduleId,\n action: input.action,\n attemptId,\n identifier: input.identifier,\n ...(snapshot === undefined\n ? {}\n : {\n subjectId: snapshot.revision.subjectId,\n credentialId: snapshot.credentialId,\n securityRevision: snapshot.revision.securityRevision,\n credentialRevision: snapshot.credentialRevision,\n verifierVersion: snapshot.verifierVersion,\n identifierBindingRevision: snapshot.identifierBindingRevision,\n }),\n admittedAtMillis: now,\n deadlineMillis: now + input.policy.attemptLifetimeMillis,\n retentionUntilMillis: Math.max(\n now + input.policy.attemptLifetimeMillis,\n ...scopes.map((entry) => now + entry.windowMillis),\n ),\n };\n\n statements.push(\n yield* statement(\n database.insert(mapping.attempt.table).values(\n driverValues(\n mapping.attempt.encodeInsert(record, {\n ...(resolved?.nativeSubjectId === undefined\n ? {}\n : { nativeSubjectId: resolved.nativeSubjectId }),\n state: \"pending\",\n }),\n [\n [mapping.attempt.admittedAt, mapping.d1.engineNow],\n [\n mapping.attempt.deadline,\n mapping.d1.engineInstantPlus(input.policy.attemptLifetimeMillis),\n ],\n [\n mapping.attempt.retentionUntil,\n mapping.d1.engineInstantPlus(\n Math.max(\n input.policy.attemptLifetimeMillis,\n ...scopes.map((entry) => entry.windowMillis),\n ),\n ),\n ],\n ],\n ),\n ),\n ),\n );\n }\n\n return {\n receipt,\n statements,\n retryable: (cause: unknown) => isGuardFailure(cause, marker),\n };\n }),\n );\n }),\n settleAttempt: <A>(\n uncaptured: Parameters<PasswordPersistence[\"Service\"][\"settleAttempt\"]>[0],\n prepare: PlanPrepare<PasswordPersistence[\"Service\"][\"settleAttempt\"], A>,\n ) =>\n Effect.gen(function* () {\n const database = yield* CurrentD1PlanningDatabase;\n\n const captured =\n uncaptured.captured === undefined\n ? undefined\n : yield* snapshotPasswordCredential(uncaptured.captured);\n\n const input = { ...uncaptured, ...(captured === undefined ? {} : { captured }) };\n\n return yield* run(\n Effect.gen(function* () {\n const journal = yield* CurrentCommitJournal;\n\n const a = attemptColumns(mapping);\n\n const rows = yield* database\n .select()\n .from(mapping.attempt.table)\n .where(and(eq(a.moduleId, input.moduleId), eq(a.attemptId, input.attemptId)))\n .limit(1);\n\n const row = rows[0];\n const engineNow = yield* readEngineNowMillis(mapping);\n\n const deadline =\n row === undefined\n ? undefined\n : yield* mapping.decodeInstant(row[mapping.attempt.deadline]);\n\n let resolved: Resolved | undefined;\n let verified = false;\n\n if (\n row !== undefined &&\n row[mapping.attempt.state] === \"pending\" &&\n input.outcome === \"verified\" &&\n input.captured !== undefined &&\n deadline !== undefined &&\n deadline > engineNow\n ) {\n resolved = yield* resolveCredential(\n mapping,\n input.moduleId,\n input.captured.identifier,\n input.captured.revision.subjectId,\n );\n verified =\n input.captured.moduleId === input.moduleId &&\n resolved?.snapshot !== undefined &&\n sameSnapshot(resolved.snapshot, input.captured) &&\n mapping.subjectId.equals(\n row[mapping.attempt.subjectId],\n resolved.nativeSubjectId,\n ) &&\n row[mapping.attempt.identifierNamespace] === input.captured.identifier.namespace &&\n row[mapping.attempt.identifierValue] === input.captured.identifier.value &&\n row[mapping.attempt.credentialId] === input.captured.credentialId &&\n row[mapping.attempt.securityRevision] ===\n input.captured.revision.securityRevision &&\n row[mapping.attempt.credentialRevision] === input.captured.credentialRevision &&\n row[mapping.attempt.verifierVersion] === input.captured.verifierVersion &&\n row[mapping.attempt.identifierBindingRevision] ===\n input.captured.identifierBindingRevision;\n }\n const decision: PasswordAttemptDecision = verified ? \"verified\" : \"rejected\";\n const receipt = prepare(decision, journal);\n\n if (row === undefined || row[mapping.attempt.state] !== \"pending\")\n return { receipt, statements: [] };\n const marker = `effect-auth-password-guard:settle:${input.attemptId}`;\n\n const base = and(\n eq(a.moduleId, input.moduleId),\n eq(a.attemptId, input.attemptId),\n eq(a.state, \"pending\"),\n )!;\n\n const condition = verified\n ? and(base, sql`${a.deadline} > ${mapping.d1.engineNow}`)!\n : base;\n\n const statements: Statement<any>[] = [\n yield* assertion(\n sql`exists(select 1 from ${mapping.attempt.table} where ${condition})`,\n marker,\n ),\n yield* statement(\n database\n .update(mapping.attempt.table)\n .set(updateValues([[mapping.attempt.state, decision]]))\n .where(condition),\n ),\n ];\n\n if (verified && resolved?.snapshot !== undefined) {\n const captured = input.captured!;\n const s = subjectColumns(mapping);\n const i = identifierColumns(mapping);\n const c = credentialColumns(mapping);\n\n const authority = and(\n sql`exists(select 1 from ${mapping.subject.table} where ${s.id} = ${sql.param(resolved.nativeSubjectId, s.id)} and ${s.status} = ${sql.param(mapping.subject.d1ActiveStatusValue, s.status)} and ${s.securityRevision} = ${sql.param(input.captured!.revision.securityRevision, s.securityRevision)})`,\n mapping.identifier.d1CurrentCondition({\n identifier: input.captured!.identifier,\n nativeSubjectId: resolved.nativeSubjectId,\n }),\n sql`exists(select 1 from ${mapping.credential.table} where ${c.moduleId} = ${sql.param(input.moduleId, c.moduleId)} and ${c.subjectId} = ${sql.param(resolved.nativeSubjectId, c.subjectId)} and ${c.credentialId} = ${sql.param(input.captured!.credentialId, c.credentialId)} and ${c.credentialRevision} = ${sql.param(input.captured!.credentialRevision, c.credentialRevision)} and ${c.verifierVersion} = ${sql.param(input.captured!.verifierVersion, c.verifierVersion)} and ${c.verifier} = ${sql.param(Redacted.value(input.captured!.verifier), c.verifier)})`,\n sql`exists(select 1 from ${mapping.identifier.table} where ${i.namespace} = ${sql.param(input.captured!.identifier.namespace, i.namespace)} and ${i.value} = ${sql.param(input.captured!.identifier.value, i.value)} and ${i.subjectId} = ${sql.param(resolved.nativeSubjectId, i.subjectId)} and ${i.bindingRevision} = ${sql.param(input.captured!.identifierBindingRevision, i.bindingRevision)})`,\n )!;\n\n statements.splice(1, 0, yield* assertion(authority, marker));\n if (\n input.rehash !== undefined &&\n input.rehash.expectedVersion === captured.verifierVersion &&\n Redacted.value(input.rehash.expectedVerifier) === Redacted.value(captured.verifier)\n ) {\n const nextVersion = yield* allocate(\n mapping.allocateRevision,\n mapping.allocateRevisionSync,\n );\n\n statements.push(\n yield* statement(\n database\n .update(mapping.credential.table)\n .set(\n mapping.credential.encodeVerifier(input.rehash.nextVerifier, nextVersion),\n )\n .where(\n and(\n eq(c.moduleId, input.moduleId),\n eq(c.subjectId, resolved.nativeSubjectId),\n eq(c.credentialId, captured.credentialId),\n eq(c.credentialRevision, captured.credentialRevision),\n eq(c.verifierVersion, input.rehash.expectedVersion),\n eq(c.verifier, Redacted.value(input.rehash.expectedVerifier)),\n ),\n ),\n ),\n );\n }\n }\n\n return {\n receipt,\n statements,\n retryable: (cause: unknown) => isGuardFailure(cause, marker),\n };\n }),\n );\n }),\n readForSubject: (input: Parameters<PasswordPersistence[\"Service\"][\"readForSubject\"]>[0]) =>\n Effect.gen(function* () {\n const database = yield* CurrentD1PlanningDatabase;\n\n if (yield* hasCommitScope) return yield* unavailable();\n const nativeSubjectId = yield* mapping.subjectId.toNative(input.subjectId);\n const subject = (yield* readSubjectNative(mapping, nativeSubjectId))[0];\n\n if (\n subject === undefined ||\n !mapping.subject.isActiveStatus(subject[mapping.subject.status])\n )\n return Option.none();\n\n const credential = (yield* readCredentialNative(\n mapping,\n input.moduleId,\n nativeSubjectId,\n ))[0];\n\n if (credential === undefined) return Option.none();\n const ic = identifierColumns(mapping);\n\n const identifiers = yield* database\n .select()\n .from(mapping.identifier.table)\n .where(eq(ic.subjectId, nativeSubjectId));\n\n const identifier = identifiers.find((row: any) => mapping.identifier.isCurrent(row));\n\n if (identifier === undefined) return Option.none();\n\n return Option.some(\n yield* mapping.credential\n .decode({ moduleId: input.moduleId, subject, identifier, credential })\n .pipe(Effect.flatMap(snapshotPasswordCredential)),\n );\n }),\n recoveryTarget: (input: Parameters<PasswordPersistence[\"Service\"][\"recoveryTarget\"]>[0]) =>\n Effect.gen(function* () {\n if (yield* hasCommitScope) return yield* unavailable();\n const resolved = yield* resolveCredential(mapping, input.moduleId, input.identifier);\n\n return resolved?.snapshot === undefined ||\n resolved.snapshot.identifierVerifiedAtMillis === undefined\n ? Option.none()\n : Option.some(resolved.snapshot);\n }),\n addIfAbsent: <A>(\n uncaptured: Parameters<PasswordPersistence[\"Service\"][\"addIfAbsent\"]>[0],\n prepare: PlanPrepare<PasswordPersistence[\"Service\"][\"addIfAbsent\"], A>,\n ) =>\n Effect.gen(function* () {\n const input = yield* snapshotMutationInput(uncaptured);\n\n const credentialId = yield* allocate(\n mapping.allocateCredentialId,\n mapping.allocateCredentialIdSync,\n );\n\n const credentialRevision = yield* allocate(\n mapping.allocateRevision,\n mapping.allocateRevisionSync,\n );\n\n const verifierVersion = yield* allocate(\n mapping.allocateRevision,\n mapping.allocateRevisionSync,\n );\n\n const nextSecurityRevision = yield* allocateNextSecurityRevision(\n mapping,\n input.expectedRevision.securityRevision,\n );\n\n if (nextSecurityRevision === input.expectedRevision.securityRevision)\n return yield* unavailable();\n\n return yield* run(\n Effect.gen(function* () {\n const journal = yield* CurrentCommitJournal;\n\n const compiled = yield* compileAddMutation(mapping, input, {\n credentialId,\n credentialRevision,\n verifierVersion,\n nextSecurityRevision,\n });\n\n return {\n receipt: prepare(compiled === undefined ? \"rejected\" : \"changed\", journal),\n statements: compiled?.statements ?? [],\n retryable: compiled?.retryable,\n };\n }),\n );\n }),\n replaceIfCurrent: <A>(\n uncaptured: Parameters<PasswordPersistence[\"Service\"][\"replaceIfCurrent\"]>[0],\n prepare: PlanPrepare<PasswordPersistence[\"Service\"][\"replaceIfCurrent\"], A>,\n ) =>\n Effect.flatMap(snapshotMutationInput(uncaptured), (input) =>\n replacementPlan(mapping, proofMapping, input, prepare, \"change-password\"),\n ),\n checkReset: (input: Parameters<PasswordPersistence[\"Service\"][\"checkReset\"]>[0]) =>\n proofMapping === undefined\n ? Effect.fail(unavailable())\n : Effect.gen(function* () {\n if (yield* hasCommitScope) return yield* unavailable();\n if (\n input.moduleId.length <= \"/reset\".length ||\n !input.moduleId.endsWith(\"/reset\") ||\n input.purpose !== \"password-reset\" ||\n input.binding._tag !== \"Subject\"\n )\n return false;\n const binding = input.binding;\n\n const resolved = yield* resolveCredential(\n mapping,\n input.moduleId.slice(0, -\"/reset\".length),\n binding.identifier,\n binding.revision.subjectId,\n );\n\n const current =\n resolved?.snapshot !== undefined &&\n resolved.snapshot.revision.securityRevision === binding.revision.securityRevision &&\n binding.revision.credentials.every((item) =>\n resolved.snapshot!.revision.credentials.some(\n (current) =>\n current.credentialId === item.credentialId &&\n current.revision === item.revision,\n ),\n );\n\n return current ? yield* probeProofCompletion(proofMapping, input) : false;\n }),\n resetWithProof: <A>(\n uncaptured: Parameters<PasswordPersistence[\"Service\"][\"resetWithProof\"]>[0],\n prepare: PlanPrepare<PasswordPersistence[\"Service\"][\"resetWithProof\"], A>,\n ) =>\n proofMapping === undefined\n ? Effect.fail(unavailable())\n : Effect.flatMap(snapshotMutationInput(uncaptured), (captured) =>\n replacementPlan(\n mapping,\n proofMapping,\n Object.freeze({ ...captured, completion: uncaptured.completion }),\n prepare,\n \"reset-password\",\n ),\n ),\n cleanupAttempts: <A>(\n input: Parameters<PasswordPersistence[\"Service\"][\"cleanupAttempts\"]>[0],\n prepare: PlanPrepare<PasswordPersistence[\"Service\"][\"cleanupAttempts\"], A>,\n ) =>\n run(\n Effect.gen(function* () {\n return yield* cleanupPlan(mapping, input, prepare);\n }),\n ),\n };\n};\n\nconst compileReplacementMutation = Effect.fn(\"DrizzleD1Password.compileReplacementMutation\")(\n function* (\n mapping: Mapping,\n input: PasswordMutationInput,\n action: \"change-password\" | \"reset-password\",\n revisions: {\n readonly credentialRevision: SecurityRevision;\n readonly verifierVersion: SecurityRevision;\n readonly nextSecurityRevision: SecurityRevision;\n },\n ) {\n const { credentialRevision, verifierVersion, nextSecurityRevision } = revisions;\n const authority = yield* readAuthority(mapping, input, action);\n\n const current =\n authority === undefined || input.credential === undefined\n ? undefined\n : (yield* readCredentialNative(mapping, input.moduleId, authority.nativeSubjectId))[0];\n\n const currentMatches =\n current !== undefined &&\n current[mapping.credential.credentialId] === input.credential!.credentialId &&\n current[mapping.credential.credentialRevision] === input.credential!.credentialRevision &&\n current[mapping.credential.verifierVersion] === input.credential!.verifierVersion &&\n current[mapping.credential.verifier] === Redacted.value(input.credential!.verifier) &&\n current[mapping.credential.normalization] === input.credential!.normalization;\n\n if (authority === undefined || !currentMatches) return undefined;\n const now = yield* readEngineNowMillis(mapping);\n\n const guard = and(\n authority.condition,\n credentialCurrentCondition(mapping, input, authority.nativeSubjectId),\n commandAbsentCondition(mapping, input.moduleId, input.commandId),\n )!;\n\n const marker = `effect-auth-password-guard:${action}:${input.commandId}`;\n\n const protectedMutation: D1ProtectedProofMutation = {\n statements: [\n yield* assertion(guard, marker),\n ...(yield* mutationStatements(\n mapping,\n input,\n authority.nativeSubjectId,\n { credentialRevision, verifierVersion, nextSecurityRevision },\n now,\n )),\n ],\n appliedCondition: replacementApplied(\n mapping,\n input,\n authority.nativeSubjectId,\n {\n credentialRevision,\n verifierVersion,\n nextSecurityRevision,\n },\n now,\n authority.identifierCondition,\n ),\n };\n\n return { protectedMutation, marker };\n },\n);\n\nconst replacementPlan = Effect.fn(\"Drizzle.replacementPlan\")(function* <A>(\n mapping: Mapping,\n proofMapping:\n | D1ProofPersistenceMapping<any, any, any, any, any, any, any, any, any, any, any, any>\n | undefined,\n input: PasswordMutationInput & { readonly completion?: any },\n prepare: PreparePasswordCommit<PasswordMutationDecision, A>,\n action: \"change-password\" | \"reset-password\",\n) {\n const credentialRevision = yield* allocate(\n mapping.allocateRevision,\n mapping.allocateRevisionSync,\n );\n\n const verifierVersion = yield* allocate(mapping.allocateRevision, mapping.allocateRevisionSync);\n\n const nextSecurityRevision = yield* allocateNextSecurityRevision(\n mapping,\n input.expectedRevision.securityRevision,\n );\n\n if (\n nextSecurityRevision === input.expectedRevision.securityRevision ||\n (input.credential !== undefined && credentialRevision === input.credential.credentialRevision)\n )\n return yield* unavailable();\n\n const journal = yield* CurrentCommitJournal;\n\n const compiledMutation = yield* compileReplacementMutation(mapping, input, action, {\n credentialRevision,\n verifierVersion,\n nextSecurityRevision,\n });\n\n if (compiledMutation === undefined)\n return { receipt: prepare(\"rejected\", journal), statements: [] };\n const { protectedMutation, marker } = compiledMutation;\n\n if (action === \"reset-password\") {\n if (\n proofMapping === undefined ||\n input.completion === undefined ||\n !completionMatchesPassword(\n input as PasswordMutationInput & { readonly completion: ProofCompletionPlan },\n )\n )\n return { receipt: prepare(\"rejected\", journal), statements: [] };\n let passwordReceipt: PreparedCommit<A> | undefined;\n\n const compiled = yield* compileD1ProofCompletionPlan(\n proofMapping,\n input.completion,\n protectedMutation,\n (decision: ProofCompletionDecision) => {\n passwordReceipt = prepare(decision === \"completed\" ? \"changed\" : \"rejected\", journal);\n\n return decision;\n },\n );\n\n return {\n receipt: passwordReceipt ?? prepare(\"rejected\", journal),\n statements: compiled.statements,\n retryable: (cause: unknown) =>\n isGuardFailure(cause, marker) ||\n isGuardFailure(\n cause,\n `effect-auth-proof-guard:complete:${input.completion.input.continuationId}`,\n ) ||\n isGuardFailure(\n cause,\n `effect-auth-proof-guard:protected:${input.completion.input.continuationId}`,\n ),\n };\n }\n\n return {\n receipt: prepare(\"changed\", journal),\n statements: [\n ...protectedMutation.statements,\n yield* assertion(protectedMutation.appliedCondition, marker),\n ],\n retryable: (cause: unknown) => isGuardFailure(cause, marker),\n };\n});\n\nconst cleanupPlan = Effect.fn(\"Drizzle.cleanupPlan\")(function* <A>(\n mapping: Mapping,\n input: { readonly moduleId: string; readonly limit: number },\n prepare: PreparePasswordCommit<{ readonly removed: number; readonly hasMore: boolean }, A>,\n) {\n const database = yield* CurrentD1PlanningDatabase;\n const journal = yield* CurrentCommitJournal;\n\n const now = yield* readEngineNowMillis(mapping);\n const nativeNow = mapping.encodeInstant(now);\n const a = attemptColumns(mapping);\n const c = chargeColumns(mapping);\n const sc = scopeColumns(mapping);\n let remaining = input.limit;\n let hasMore = false;\n\n const attempts = yield* database\n .select({ attemptId: a.attemptId })\n .from(mapping.attempt.table)\n .where(and(eq(a.moduleId, input.moduleId), lte(a.retentionUntil, nativeNow)))\n .limit(remaining + 1);\n\n if (attempts.length > remaining) hasMore = true;\n const selectedAttempts = attempts.slice(0, remaining);\n\n remaining -= selectedAttempts.length;\n\n const charges = yield* database\n .select({\n action: c.action,\n scopeKind: c.scopeKind,\n scopeKey: c.scopeKey,\n attemptId: c.attemptId,\n })\n .from(mapping.charge.table)\n .where(and(eq(c.moduleId, input.moduleId), lte(c.retentionUntil, nativeNow)))\n .limit(remaining + 1);\n\n if (charges.length > remaining) hasMore = true;\n const selectedCharges = charges.slice(0, remaining);\n\n remaining -= selectedCharges.length;\n\n const scopes = yield* database\n .select({ action: sc.action, scopeKind: sc.scopeKind, scopeKey: sc.scopeKey })\n .from(mapping.rateScope.table)\n .where(\n and(\n eq(sc.moduleId, input.moduleId),\n notExists(\n database\n .select({ one: sql`1` })\n .from(mapping.charge.table)\n .where(\n and(\n eq(c.moduleId, sc.moduleId),\n eq(c.action, sc.action),\n eq(c.scopeKind, sc.scopeKind),\n eq(c.scopeKey, sc.scopeKey),\n ),\n ),\n ),\n ),\n )\n .limit(remaining + 1);\n\n if (scopes.length > remaining) hasMore = true;\n const selectedScopes = scopes.slice(0, remaining);\n const marker = `effect-auth-password-guard:cleanup:${input.moduleId}:${now}`;\n const statements: Statement<any>[] = [];\n\n for (const row of selectedAttempts) {\n const condition = and(\n eq(a.moduleId, input.moduleId),\n eq(a.attemptId, row.attemptId),\n lte(a.retentionUntil, mapping.d1.engineNow),\n )!;\n\n statements.push(\n yield* assertion(\n sql`exists(select 1 from ${mapping.attempt.table} where ${condition})`,\n marker,\n ),\n yield* statement(database.delete(mapping.attempt.table).where(condition)),\n );\n }\n for (const row of selectedCharges) {\n const condition = and(\n eq(c.moduleId, input.moduleId),\n eq(c.action, row.action),\n eq(c.scopeKind, row.scopeKind),\n eq(c.scopeKey, row.scopeKey),\n eq(c.attemptId, row.attemptId),\n lte(c.retentionUntil, mapping.d1.engineNow),\n )!;\n\n statements.push(\n yield* assertion(\n sql`exists(select 1 from ${mapping.charge.table} where ${condition})`,\n marker,\n ),\n yield* statement(database.delete(mapping.charge.table).where(condition)),\n );\n }\n for (const row of selectedScopes) {\n const condition = and(\n eq(sc.moduleId, input.moduleId),\n eq(sc.action, row.action),\n eq(sc.scopeKind, row.scopeKind),\n eq(sc.scopeKey, row.scopeKey),\n notExists(\n database\n .select({ one: sql`1` })\n .from(mapping.charge.table)\n .where(\n and(\n eq(c.moduleId, sc.moduleId),\n eq(c.action, sc.action),\n eq(c.scopeKind, sc.scopeKind),\n eq(c.scopeKey, sc.scopeKey),\n ),\n ),\n ),\n )!;\n\n statements.push(\n yield* assertion(\n sql`exists(select 1 from ${mapping.rateScope.table} where ${condition})`,\n marker,\n ),\n yield* statement(database.delete(mapping.rateScope.table).where(condition)),\n );\n }\n\n return {\n receipt: prepare(\n {\n removed: selectedAttempts.length + selectedCharges.length + selectedScopes.length,\n hasMore,\n },\n journal,\n ),\n statements,\n retryable: (cause: unknown) => isGuardFailure(cause, marker),\n };\n});\n\nexport const makeD1PasswordPersistenceServices = <\n S extends AnySQLiteTable,\n I extends AnySQLiteTable,\n C extends AnySQLiteTable,\n AC extends AnySQLiteTable,\n A extends AnySQLiteTable,\n RS extends AnySQLiteTable,\n CE extends AnySQLiteTable,\n M extends AnySQLiteTable,\n NativeId,\n>(\n database: Database,\n mapping: D1PasswordPersistenceMapping<S, I, C, AC, A, RS, CE, M, NativeId>,\n proofMapping?: D1ProofPersistenceMapping<\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any\n >,\n) =>\n Effect.gen(function* () {\n const hooks = yield* LifecycleHooks;\n const plans = makePasswordPlans(mapping as unknown as Mapping, proofMapping);\n\n const run = <Out, Err, Env>(plan: Effect.Effect<Planned<Out>, Err, Env>) =>\n Effect.gen(function* () {\n if (yield* hasCommitScope) return yield* unavailable();\n\n return yield* executeStandalone(plan, 2);\n }).pipe(\n Effect.provideService(CurrentD1PlanningDatabase, database),\n Effect.provideService(LifecycleHooks, hooks),\n );\n\n const service: PasswordPersistence[\"Service\"] = {\n admitAttempt: (input, prepare) =>\n run(plans.admitAttempt(input, prepare)).pipe(translateFailure),\n settleAttempt: (input, prepare) =>\n run(plans.settleAttempt(input, prepare)).pipe(translateFailure),\n readForSubject: (input) =>\n plans\n .readForSubject(input)\n .pipe(\n Effect.provideService(CurrentD1PlanningDatabase, database),\n Effect.provideService(LifecycleHooks, hooks),\n translateFailure,\n ),\n recoveryTarget: (input) =>\n plans\n .recoveryTarget(input)\n .pipe(\n Effect.provideService(CurrentD1PlanningDatabase, database),\n Effect.provideService(LifecycleHooks, hooks),\n translateFailure,\n ),\n addIfAbsent: (input, prepare) =>\n run(plans.addIfAbsent(input, prepare)).pipe(translateFailure),\n replaceIfCurrent: (input, prepare) =>\n run(plans.replaceIfCurrent(input, prepare)).pipe(translateFailure),\n checkReset: (input) =>\n plans\n .checkReset(input)\n .pipe(\n Effect.provideService(CurrentD1PlanningDatabase, database),\n Effect.provideService(LifecycleHooks, hooks),\n translateFailure,\n ),\n resetWithProof: (input, prepare) =>\n run(plans.resetWithProof(input, prepare)).pipe(translateFailure),\n cleanupAttempts: (input, prepare) =>\n run(plans.cleanupAttempts(input, prepare)).pipe(translateFailure),\n };\n\n return { passwordPersistence: service };\n });\n\ntype CoordinatorError<E> = E | PasswordUnavailable | HookConfigurationError;\n\n/**\n * Owns one password transition plus application statements in one D1 batch.\n * The owner Effect is invoked once and is never replayed after an ambiguous or\n * guarded batch failure. Standalone adapter-owned commands may replan boundedly.\n */\nexport function coordinateD1PasswordPersistence<\n S extends AnySQLiteTable,\n I extends AnySQLiteTable,\n C extends AnySQLiteTable,\n AC extends AnySQLiteTable,\n At extends AnySQLiteTable,\n RS extends AnySQLiteTable,\n CE extends AnySQLiteTable,\n M extends AnySQLiteTable,\n NativeId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n>(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: D1PasswordPersistenceMapping<S, I, C, AC, At, RS, CE, M, NativeId>;\n readonly proofMapping?:\n | D1ProofPersistenceMapping<any, any, any, any, any, any, any, any, any, any, any, any>\n | undefined;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n CoordinatorError<E> | DatabaseError,\n Exclude<R, PasswordPersistence | D1BatchStatements> | LifecycleHooks | DatabaseRequirements\n> {\n return Effect.flatMap(acquire, (database) =>\n Effect.gen(function* () {\n const hooks = yield* LifecycleHooks;\n\n if (yield* hasCommitScope) return yield* unavailable();\n\n const result = yield* coordinateCommit(\n () =>\n Effect.gen(function* () {\n const statements: Statement<any>[] = [];\n let mutation: Planned<any> | undefined;\n\n const nativeCollector = D1BatchStatements.of({\n append: (statement) => Effect.sync(() => statements.push(statement)),\n });\n\n const owner = yield* makeD1Owner(unavailable()).pipe(\n Effect.provideService(D1BatchStatements, nativeCollector),\n );\n\n const plans = makePasswordPlans(\n options.mapping as unknown as Mapping,\n options.proofMapping,\n );\n\n const run = <Out, Err, Env>(plan: Effect.Effect<Planned<Out>, Err, Env>) =>\n coordinateCommit(\n () =>\n Effect.gen(function* () {\n const journal = yield* CurrentCommitJournal;\n const planned = yield* plan;\n\n yield* owner.check;\n if (mutation !== undefined) return yield* unavailable();\n const guarded = { ...planned, journalGuard: journal.prepare(undefined) };\n\n mutation = guarded;\n statements.push(...guarded.statements);\n\n return guarded.receipt;\n }),\n { mode: \"batch\" },\n ).pipe(\n Effect.map((result) => result.value),\n Effect.provideService(CurrentD1PlanningDatabase, database),\n Effect.provideService(LifecycleHooks, hooks),\n );\n\n const service: PasswordPersistence[\"Service\"] = {\n admitAttempt: (input, prepare) =>\n owner.run(run(plans.admitAttempt(input, prepare)).pipe(translateFailure)),\n settleAttempt: (input, prepare) =>\n owner.run(run(plans.settleAttempt(input, prepare)).pipe(translateFailure)),\n readForSubject: (input) =>\n owner.run(\n plans\n .readForSubject(input)\n .pipe(\n Effect.provideService(CurrentD1PlanningDatabase, database),\n Effect.provideService(LifecycleHooks, hooks),\n translateFailure,\n ),\n ),\n recoveryTarget: (input) =>\n owner.run(\n plans\n .recoveryTarget(input)\n .pipe(\n Effect.provideService(CurrentD1PlanningDatabase, database),\n Effect.provideService(LifecycleHooks, hooks),\n translateFailure,\n ),\n ),\n addIfAbsent: (input, prepare) =>\n owner.run(run(plans.addIfAbsent(input, prepare)).pipe(translateFailure)),\n replaceIfCurrent: (input, prepare) =>\n owner.run(run(plans.replaceIfCurrent(input, prepare)).pipe(translateFailure)),\n checkReset: (input) =>\n owner.run(\n plans\n .checkReset(input)\n .pipe(\n Effect.provideService(CurrentD1PlanningDatabase, database),\n Effect.provideService(LifecycleHooks, hooks),\n translateFailure,\n ),\n ),\n resetWithProof: (input, prepare) =>\n owner.run(run(plans.resetWithProof(input, prepare)).pipe(translateFailure)),\n cleanupAttempts: (input, prepare) =>\n owner.run(run(plans.cleanupAttempts(input, prepare)).pipe(translateFailure)),\n };\n\n const provided = Context.make(PasswordPersistence, service).pipe(\n Context.add(D1BatchStatements, owner.collector),\n );\n\n const value = yield* owner.close(Effect.provideContext(body, provided));\n\n if (mutation?.journalGuard !== undefined) {\n const status = yield* Effect.result(mutation.journalGuard.read);\n\n if (status._tag === \"Success\" || status.failure._tag !== \"CommitPending\")\n return yield* unavailable();\n }\n yield* database.$client.batch(statements).pipe(\n Effect.catchCause((cause) =>\n Effect.failCause(\n Cause.map(cause, (error) =>\n everyFailureMatches(cause, mutation?.retryable) ? unavailable() : error,\n ),\n ),\n ),\n translateFailure,\n );\n\n return value;\n }),\n { mode: \"batch\" },\n ).pipe(Effect.provideService(LifecycleHooks, hooks));\n\n return result.value;\n }),\n );\n}\n\nconst registrationRows = Effect.fn(\"Drizzle.registrationRows\")(function* <Registration>(\n mapping: RegistrationMapping<Registration>,\n moduleId: string,\n requestId: string,\n) {\n const database = yield* CurrentD1PlanningDatabase;\n\n const module = column(mapping.registration.table, mapping.registration.moduleId);\n const request = column(mapping.registration.table, mapping.registration.requestId);\n\n return yield* database\n .select()\n .from(mapping.registration.table)\n .where(and(eq(module, moduleId), eq(request, requestId)))\n .limit(1);\n});\n\nconst registrationIdentifierRows = Effect.fn(\"Drizzle.registrationIdentifierRows\")(function* <\n Registration,\n>(mapping: RegistrationMapping<Registration>, identifier: LoginIdentifier) {\n const database = yield* CurrentD1PlanningDatabase;\n\n const namespace = column(mapping.identifier.table, mapping.identifier.namespace);\n const value = column(mapping.identifier.table, mapping.identifier.value);\n\n return yield* database\n .select()\n .from(mapping.identifier.table)\n .where(and(eq(namespace, identifier.namespace), eq(value, identifier.value)))\n .limit(1);\n});\n\nconst planRegistration = Effect.fn(\"Drizzle.planRegistration\")(function* <Registration, A>(\n mapping: RegistrationMapping<Registration>,\n input: {\n readonly moduleId: string;\n readonly requestId: string;\n readonly identifier: LoginIdentifier;\n readonly registration: Registration;\n readonly replacement: PasswordMutationInput[\"replacement\"];\n },\n allocated: {\n readonly credentialId: string;\n readonly securityRevision: SecurityRevision;\n readonly identifierRevision: SecurityRevision;\n readonly credentialRevision: SecurityRevision;\n readonly verifierVersion: SecurityRevision;\n readonly nativeSubjectId?: unknown;\n readonly recoveryReference?: any;\n },\n prepare: PreparePasswordCommit<\n import(\"../password/methods/module\").PasswordRegistrationDecision,\n A\n >,\n) {\n const database = yield* CurrentD1PlanningDatabase;\n const journal = yield* CurrentCommitJournal;\n\n const existing = (yield* registrationRows(mapping, input.moduleId, input.requestId))[0];\n\n if (existing !== undefined)\n return {\n receipt: prepare(yield* mapping.registration.decodeReplay(existing), journal),\n statements: [],\n };\n\n const intent = {\n moduleId: input.moduleId,\n requestId: input.requestId,\n identifier: input.identifier,\n registration: input.registration,\n replacement: input.replacement,\n };\n\n if (mapping.mode === \"pending\") {\n if (allocated.recoveryReference === undefined) return yield* unavailable();\n\n return {\n receipt: prepare({ _tag: \"Pending\", reference: allocated.recoveryReference }, journal),\n statements: [\n yield* statement(\n database.insert(mapping.registration.table).values(\n mapping.registration.encodeInsert(intent, {\n state: \"pending\",\n recoveryReference: allocated.recoveryReference,\n }),\n ),\n ),\n ],\n retryable: (cause: unknown) => isMappedConstraintConflict(mapping.isRequestConflict, cause),\n };\n }\n if (mapping.provisioning.idMode === \"generated\" || allocated.nativeSubjectId === undefined)\n return yield* unavailable();\n if ((yield* registrationIdentifierRows(mapping, input.identifier)).length > 0)\n return { receipt: prepare({ _tag: \"Suppressed\" }, journal), statements: [] };\n const nativeSubjectId = allocated.nativeSubjectId;\n const subjectId = yield* mapping.subjectId.toSubject(nativeSubjectId);\n\n return {\n receipt: prepare({ _tag: \"Created\", subjectId }, journal),\n statements: [\n yield* statement(\n database.insert(mapping.subject.table).values(\n mapping.provisioning.encodeSubjectInsert(intent, {\n nativeSubjectId,\n securityRevision: allocated.securityRevision,\n }),\n ),\n ),\n yield* statement(\n database\n .insert(mapping.identifier.table)\n .values(\n mapping.identifier.encodeInitialInsert(\n input.identifier,\n nativeSubjectId,\n allocated.identifierRevision,\n ),\n ),\n ),\n yield* statement(\n database.insert(mapping.credential.table).values(\n mapping.credential.encodeInsert({\n moduleId: input.moduleId,\n subjectId: nativeSubjectId,\n credentialId: allocated.credentialId,\n credentialRevision: allocated.credentialRevision,\n verifierVersion: allocated.verifierVersion,\n replacement: input.replacement,\n }),\n ),\n ),\n yield* statement(\n database.insert(mapping.authorityCredential.table).values(\n mapping.authorityCredential.encodeInsert({\n subjectId: nativeSubjectId,\n credentialId: allocated.credentialId,\n revision: allocated.credentialRevision,\n }),\n ),\n ),\n yield* statement(\n database.insert(mapping.registration.table).values(\n mapping.registration.encodeInsert(intent, {\n state: \"created\",\n nativeSubjectId,\n }),\n ),\n ),\n ],\n retryable: (cause: unknown) =>\n isMappedConstraintConflict(mapping.isRequestConflict, cause) ||\n isMappedConstraintConflict(mapping.isIdentifierConflict, cause),\n };\n});\n\nconst allocateRegistration = <Registration>(mapping: RegistrationMapping<Registration>) =>\n Effect.gen(function* () {\n const credentialId = yield* allocate(\n mapping.allocateCredentialId,\n mapping.allocateCredentialIdSync,\n );\n\n const securityRevision = yield* allocate(\n mapping.allocateRevision,\n mapping.allocateRevisionSync,\n );\n\n const identifierRevision = yield* allocate(\n mapping.allocateRevision,\n mapping.allocateRevisionSync,\n );\n\n const credentialRevision = yield* allocate(\n mapping.allocateRevision,\n mapping.allocateRevisionSync,\n );\n\n const verifierVersion = yield* allocate(mapping.allocateRevision, mapping.allocateRevisionSync);\n\n const nativeSubjectId =\n mapping.mode !== \"atomic\" || mapping.provisioning.idMode === \"generated\"\n ? undefined\n : yield* allocate(\n mapping.provisioning.allocateSubjectId,\n mapping.provisioning.allocateSubjectIdSync,\n );\n\n const recoveryReference =\n mapping.mode === \"pending\"\n ? yield* allocate(mapping.allocateRecoveryReference, mapping.allocateRecoveryReferenceSync)\n : undefined;\n\n return {\n credentialId,\n securityRevision,\n identifierRevision,\n credentialRevision,\n verifierVersion,\n ...(nativeSubjectId === undefined ? {} : { nativeSubjectId }),\n ...(recoveryReference === undefined ? {} : { recoveryReference }),\n };\n });\n\nconst makeRegistrationPlans = <Registration>(mapping: RegistrationMapping<Registration>) => ({\n register: <A>(\n input: Parameters<PasswordRegistrationAuthority<Registration>[\"register\"]>[0],\n prepare: PlanPrepare<PasswordRegistrationAuthority<Registration>[\"register\"], A>,\n ) =>\n Effect.gen(function* () {\n if (!validRegistrationConstraints(mapping)) return yield* unavailable();\n if (mapping.mode === \"atomic\" && mapping.provisioning.idMode === \"generated\")\n return yield* unavailable();\n const allocated = yield* allocateRegistration(mapping);\n\n return yield* planRegistration(mapping, input, allocated, prepare);\n }),\n});\n\nexport const makeD1PasswordRegistrationServices = <\n Registration,\n S extends AnySQLiteTable,\n I extends AnySQLiteTable,\n C extends AnySQLiteTable,\n AC extends AnySQLiteTable,\n Rq extends AnySQLiteTable,\n NativeId,\n>(\n database: Database,\n mapping: PasswordRegistrationMapping<Registration, S, I, C, AC, Rq, NativeId>,\n) =>\n Effect.gen(function* () {\n const hooks = yield* LifecycleHooks;\n const plans = makeRegistrationPlans(mapping as unknown as RegistrationMapping<Registration>);\n\n const run = <Out, Err, Env>(plan: Effect.Effect<Planned<Out>, Err, Env>) =>\n Effect.gen(function* () {\n if (yield* hasCommitScope) return yield* unavailable();\n\n return yield* executeStandalone(plan, 2);\n }).pipe(\n Effect.provideService(CurrentD1PlanningDatabase, database),\n Effect.provideService(LifecycleHooks, hooks),\n );\n\n const service: PasswordRegistrationAuthority<Registration> = {\n register: (input, prepare) => run(plans.register(input, prepare)).pipe(translateFailure),\n };\n\n return { registrationAuthority: service };\n });\n\nexport function coordinateD1PasswordRegistration<\n TargetId,\n Registration,\n S extends AnySQLiteTable,\n I extends AnySQLiteTable,\n C extends AnySQLiteTable,\n AC extends AnySQLiteTable,\n Rq extends AnySQLiteTable,\n NativeId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n>(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasswordRegistrationMapping<NoInfer<Registration>, S, I, C, AC, Rq, NativeId>;\n readonly target: SuppliedService<TargetId, PasswordRegistrationAuthority<Registration>>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n CoordinatorError<E> | DatabaseError,\n Exclude<R, TargetId | D1BatchStatements> | LifecycleHooks | DatabaseRequirements\n> {\n return Effect.flatMap(acquire, (database) =>\n Effect.gen(function* () {\n const hooks = yield* LifecycleHooks;\n\n if (yield* hasCommitScope) return yield* unavailable();\n\n const result = yield* coordinateCommit(\n () =>\n Effect.gen(function* () {\n const statements: Statement<any>[] = [];\n let mutation: Planned<any> | undefined;\n\n const nativeCollector = D1BatchStatements.of({\n append: (statement) => Effect.sync(() => statements.push(statement)),\n });\n\n const owner = yield* makeD1Owner(unavailable()).pipe(\n Effect.provideService(D1BatchStatements, nativeCollector),\n );\n\n const plans = makeRegistrationPlans(\n options.mapping as unknown as RegistrationMapping<Registration>,\n );\n\n const run = <Out, Err, Env>(plan: Effect.Effect<Planned<Out>, Err, Env>) =>\n coordinateCommit(\n () =>\n Effect.gen(function* () {\n const journal = yield* CurrentCommitJournal;\n const planned = yield* plan;\n\n yield* owner.check;\n if (mutation !== undefined) return yield* unavailable();\n const guarded = { ...planned, journalGuard: journal.prepare(undefined) };\n\n mutation = guarded;\n statements.push(...guarded.statements);\n\n return guarded.receipt;\n }),\n { mode: \"batch\" },\n ).pipe(\n Effect.map((result) => result.value),\n Effect.provideService(CurrentD1PlanningDatabase, database),\n Effect.provideService(LifecycleHooks, hooks),\n );\n\n const service: PasswordRegistrationAuthority<Registration> = {\n register: (input, prepare) =>\n owner.run(run(plans.register(input, prepare)).pipe(translateFailure)),\n };\n\n const provided = Context.make(options.target, service).pipe(\n Context.add(D1BatchStatements, owner.collector),\n );\n\n const value = yield* owner.close(Effect.provideContext(body, provided));\n\n if (mutation?.journalGuard !== undefined) {\n const status = yield* Effect.result(mutation.journalGuard.read);\n\n if (status._tag === \"Success\" || status.failure._tag !== \"CommitPending\")\n return yield* unavailable();\n }\n yield* database.$client.batch(statements).pipe(\n Effect.catchCause((cause) =>\n Effect.failCause(\n Cause.map(cause, (error) =>\n everyFailureMatches(cause, mutation?.retryable) ? unavailable() : error,\n ),\n ),\n ),\n translateFailure,\n );\n\n return value;\n }),\n { mode: \"batch\" },\n ).pipe(Effect.provideService(LifecycleHooks, hooks));\n\n return result.value;\n }),\n );\n}\n\n/** Private prepared compiler seam: it never replays a caller or prepared callback. */\nexport const passwordD1Kernel = {\n statement,\n assertion,\n readEngineNowMillis,\n allocate,\n allocateNextSecurityRevision,\n subjectColumns,\n identifierColumns,\n credentialColumns,\n authorityColumns,\n readAuthority,\n assuranceCondition,\n credentialCurrentCondition,\n commandAbsentCondition,\n compileAddMutation,\n compileReplacementMutation,\n completionMatchesPassword,\n isGuardFailure,\n};\n\nconst translateFailure = <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n): Effect.Effect<A, PasswordUnavailable, R> =>\n reportPersistenceFailure(\n effect,\n (error) =>\n Schema.is(PasswordUnavailable)(error) ||\n Schema.is(ProofUnavailable)(error) ||\n Schema.is(HookConfigurationError)(error),\n ).pipe(Effect.catchCause((cause) => Effect.failCause(Cause.map(cause, () => unavailable()))));\n\nconst executeStandalone = <A, E, R>(\n plan: Effect.Effect<Planned<A>, E, R>,\n retries = 2,\n): Effect.Effect<\n A,\n | E\n | import(\"../hooks/models\").HookConfigurationError\n | import(\"effect/unstable/sql/SqlError\").SqlError,\n Exclude<R, CurrentCommitJournal> | CurrentD1PlanningDatabase | LifecycleHooks\n> =>\n Effect.suspend(() => {\n let retryable: ((cause: unknown) => boolean) | undefined;\n\n const once = coordinateCommit(\n () =>\n Effect.gen(function* () {\n const database = yield* CurrentD1PlanningDatabase;\n const planned = yield* plan;\n\n retryable = planned.retryable;\n yield* database.$client.batch(planned.statements);\n\n return planned.receipt;\n }),\n { mode: \"batch\" },\n ).pipe(Effect.map((result) => result.value));\n\n return once.pipe(\n Effect.catchCause((cause) =>\n retries > 0 && everyFailureMatches(cause, retryable)\n ? executeStandalone(plan, retries - 1)\n : Effect.failCause(cause),\n ),\n );\n });\n"],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { LifecycleHooks } from "../hooks/LifecycleHooks.mjs";
|
|
2
|
+
import { DrizzleMappingError } from "./model.mjs";
|
|
3
|
+
import { PhoneConfigurationError } from "../phone/lifecycleModels.mjs";
|
|
4
|
+
import { PhoneAdmission } from "../phone/PhoneAdmission.mjs";
|
|
5
|
+
import { PhonePersistence } from "../phone/PhonePersistence.mjs";
|
|
6
|
+
import { PhoneSignInTargets } from "../phone/PhoneSignInTargets.mjs";
|
|
7
|
+
import { D1PhoneMapping, PhoneMapping, PhoneMappingSource, PhonePersistenceServices } from "./phone-model.mjs";
|
|
8
|
+
import { D1BatchStatements } from "./D1BatchStatements.mjs";
|
|
9
|
+
import "../PhoneOtp.mjs";
|
|
10
|
+
import { PhoneCoordinatorError } from "./phone-target.mjs";
|
|
11
|
+
import { Effect } from "effect";
|
|
12
|
+
import { AnyRelations } from "drizzle-orm";
|
|
13
|
+
import { D1Client } from "@effect/sql-d1/D1Client";
|
|
14
|
+
import { EffectSQLiteD1Database } from "drizzle-orm/effect-d1";
|
|
15
|
+
import { AnySQLiteTable } from "drizzle-orm/sqlite-core";
|
|
16
|
+
//#region src/drizzle/d1-phone.d.ts
|
|
17
|
+
type Database = EffectSQLiteD1Database<AnyRelations> & {
|
|
18
|
+
readonly $client: D1Client;
|
|
19
|
+
};
|
|
20
|
+
type Table$1 = AnySQLiteTable;
|
|
21
|
+
declare const makePhonePersistenceServices: <Database extends EffectSQLiteD1Database<import("drizzle-orm").TablesRelationalConfig> & {
|
|
22
|
+
readonly $client: D1Client;
|
|
23
|
+
}, S extends Table$1, I extends Table$1, F extends Table$1, C extends Table$1, N, RSetup = never>(database: Database, mapping: PhoneMappingSource<PhoneMapping<S, I, C, F, N> & D1PhoneMapping, RSetup>) => Effect.Effect<PhonePersistenceServices, DrizzleMappingError | PhoneConfigurationError, RSetup | LifecycleHooks>;
|
|
24
|
+
declare const coordinatePhonePersistence: <D extends Database, S extends Table$1, I extends Table$1, F extends Table$1, C extends Table$1, N, A, E, R, RSetup = never, DatabaseError = never, DatabaseRequirements = never>(acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>, options: {
|
|
25
|
+
readonly mapping: PhoneMappingSource<PhoneMapping<S, I, C, F, N> & D1PhoneMapping, RSetup>;
|
|
26
|
+
}, body: Effect.Effect<A, E, R>) => Effect.Effect<A, PhoneCoordinatorError<E> | DatabaseError, Exclude<R, PhonePersistence | PhoneAdmission | PhoneSignInTargets | D1BatchStatements> | LifecycleHooks | RSetup | DatabaseRequirements>;
|
|
27
|
+
//#endregion
|
|
28
|
+
export { coordinatePhonePersistence, makePhonePersistenceServices };
|
|
29
|
+
//# sourceMappingURL=d1-phone.d.mts.map
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { PhoneAdmission } from "../phone/PhoneAdmission.mjs";
|
|
2
|
+
import { PhonePersistence } from "../phone/PhonePersistence.mjs";
|
|
3
|
+
import { PhoneSignInTargets } from "../phone/PhoneSignInTargets.mjs";
|
|
4
|
+
import { D1BatchStatements } from "./D1BatchStatements.mjs";
|
|
5
|
+
import { makeD1Owner } from "./d1-planning.mjs";
|
|
6
|
+
import { PhoneOtpUnavailable } from "../phone/models.mjs";
|
|
7
|
+
import { coordinateTargetPhone, makePhoneTarget } from "./phone-target.mjs";
|
|
8
|
+
import { Context, Effect } from "effect";
|
|
9
|
+
//#region src/drizzle/d1-phone.ts
|
|
10
|
+
const configuration = {
|
|
11
|
+
mode: "batch",
|
|
12
|
+
dialect: "sqlite",
|
|
13
|
+
locking: false,
|
|
14
|
+
standaloneGuard: () => Effect.void
|
|
15
|
+
};
|
|
16
|
+
const { makePhonePersistenceServices } = makePhoneTarget(configuration);
|
|
17
|
+
const coordinatePhonePersistence = (acquire, options, body) => Effect.flatMap(acquire, (database) => coordinateTargetPhone(database, options.mapping, configuration, (_transaction, services, append) => Effect.gen(function* () {
|
|
18
|
+
const original = services.phonePersistence;
|
|
19
|
+
const nativeCollector = D1BatchStatements.of({ append: (statement) => Effect.sync(() => append(statement)) });
|
|
20
|
+
const owner = yield* makeD1Owner(PhoneOtpUnavailable.make({})).pipe(Effect.provideService(D1BatchStatements, nativeCollector));
|
|
21
|
+
const provided = Context.make(PhonePersistence, {
|
|
22
|
+
target: (input) => owner.run(original.target(input)),
|
|
23
|
+
mutate: (input, prepare) => owner.run(original.mutate(input, prepare))
|
|
24
|
+
}).pipe(Context.add(D1BatchStatements, owner.collector), Context.add(PhoneAdmission, {
|
|
25
|
+
admit: (input) => owner.run(services.phoneAdmission.admit(input)),
|
|
26
|
+
cleanup: (input) => owner.run(services.phoneAdmission.cleanup(input))
|
|
27
|
+
}), Context.add(PhoneSignInTargets, { lookup: (input) => owner.run(services.phoneSignInTargets.lookup(input)) }));
|
|
28
|
+
return yield* owner.close(Effect.provideContext(body, provided));
|
|
29
|
+
})));
|
|
30
|
+
//#endregion
|
|
31
|
+
export { coordinatePhonePersistence, makePhonePersistenceServices };
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=d1-phone.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"d1-phone.mjs","names":["PhoneUnavailable"],"sources":["../../src/drizzle/d1-phone.ts"],"sourcesContent":["import type { D1Client } from \"@effect/sql-d1/D1Client\";\nimport type { AnyRelations } from \"drizzle-orm\";\nimport type { EffectSQLiteD1Database } from \"drizzle-orm/effect-d1\";\nimport type { AnySQLiteTable } from \"drizzle-orm/sqlite-core\";\nimport { Context, Effect } from \"effect\";\n\nimport type { LifecycleHooks } from \"../hooks/LifecycleHooks\";\nimport { PhoneOtpUnavailable as PhoneUnavailable } from \"../phone/models\";\nimport { PhoneAdmission } from \"../phone/PhoneAdmission\";\nimport { PhonePersistence } from \"../phone/PhonePersistence\";\nimport { PhoneSignInTargets } from \"../phone/PhoneSignInTargets\";\nimport { makeD1Owner } from \"./d1-planning\";\nimport { D1BatchStatements } from \"./D1BatchStatements\";\nimport type { D1PhoneMapping, PhoneMapping, PhoneMappingSource } from \"./phone-model\";\nimport { coordinateTargetPhone, makePhoneTarget, type PhoneCoordinatorError } from \"./phone-target\";\ntype Database = EffectSQLiteD1Database<AnyRelations> & { readonly $client: D1Client };\ntype Table = AnySQLiteTable;\n\nconst configuration = {\n mode: \"batch\" as const,\n dialect: \"sqlite\" as const,\n locking: false,\n standaloneGuard: () => Effect.void,\n};\n\n/** Reads use a primary D1 session; observations and expiry are asserted in the same batch. */\nconst target = makePhoneTarget<Database, Table, D1PhoneMapping>(configuration);\n\nexport const { makePhonePersistenceServices } = target;\n\nexport const coordinatePhonePersistence = <\n D extends Database,\n S extends Table,\n I extends Table,\n F extends Table,\n C extends Table,\n N,\n A,\n E,\n R,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PhoneMappingSource<PhoneMapping<S, I, C, F, N> & D1PhoneMapping, RSetup>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n PhoneCoordinatorError<E> | DatabaseError,\n | Exclude<R, PhonePersistence | PhoneAdmission | PhoneSignInTargets | D1BatchStatements>\n | LifecycleHooks\n | RSetup\n | DatabaseRequirements\n> =>\n Effect.flatMap(acquire, (database) =>\n coordinateTargetPhone(\n database,\n options.mapping,\n configuration,\n (_transaction, services, append) =>\n Effect.gen(function* () {\n const original = services.phonePersistence;\n\n const nativeCollector = D1BatchStatements.of({\n append: (statement) => Effect.sync(() => append(statement)),\n });\n\n const owner = yield* makeD1Owner(PhoneUnavailable.make({})).pipe(\n Effect.provideService(D1BatchStatements, nativeCollector),\n );\n\n const service: PhonePersistence[\"Service\"] = {\n target: (input) => owner.run(original.target(input)),\n mutate: (input, prepare) => owner.run(original.mutate(input, prepare)),\n };\n\n const provided = Context.make(PhonePersistence, service).pipe(\n Context.add(D1BatchStatements, owner.collector),\n Context.add(PhoneAdmission, {\n admit: (input) => owner.run(services.phoneAdmission.admit(input)),\n cleanup: (input) => owner.run(services.phoneAdmission.cleanup(input)),\n }),\n Context.add(PhoneSignInTargets, {\n lookup: (input) => owner.run(services.phoneSignInTargets.lookup(input)),\n }),\n );\n\n return yield* owner.close(Effect.provideContext(body, provided));\n }),\n ),\n );\n"],"mappings":";;;;;;;;;AAkBA,MAAM,gBAAgB;CACpB,MAAM;CACN,SAAS;CACT,SAAS;CACT,uBAAuB,OAAO;AAChC;AAKA,MAAa,EAAE,iCAFA,gBAAiD,aAEhB;AAEhD,MAAa,8BAcX,SACA,SAGA,SASA,OAAO,QAAQ,UAAU,aACvB,sBACE,UACA,QAAQ,SACR,gBACC,cAAc,UAAU,WACvB,OAAO,IAAI,aAAa;CACtB,MAAM,WAAW,SAAS;CAE1B,MAAM,kBAAkB,kBAAkB,GAAG,EAC3C,SAAS,cAAc,OAAO,WAAW,OAAO,SAAS,CAAC,EAC5D,CAAC;CAED,MAAM,QAAQ,OAAO,YAAYA,oBAAiB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAC1D,OAAO,eAAe,mBAAmB,eAAe,CAC1D;CAOA,MAAM,WAAW,QAAQ,KAAK,kBAAkB;EAJ9C,SAAS,UAAU,MAAM,IAAI,SAAS,OAAO,KAAK,CAAC;EACnD,SAAS,OAAO,YAAY,MAAM,IAAI,SAAS,OAAO,OAAO,OAAO,CAAC;CAGjB,CAAC,CAAC,CAAC,KACvD,QAAQ,IAAI,mBAAmB,MAAM,SAAS,GAC9C,QAAQ,IAAI,gBAAgB;EAC1B,QAAQ,UAAU,MAAM,IAAI,SAAS,eAAe,MAAM,KAAK,CAAC;EAChE,UAAU,UAAU,MAAM,IAAI,SAAS,eAAe,QAAQ,KAAK,CAAC;CACtE,CAAC,GACD,QAAQ,IAAI,oBAAoB,EAC9B,SAAS,UAAU,MAAM,IAAI,SAAS,mBAAmB,OAAO,KAAK,CAAC,EACxE,CAAC,CACH;CAEA,OAAO,OAAO,MAAM,MAAM,OAAO,eAAe,MAAM,QAAQ,CAAC;AACjE,CAAC,CACL,CACF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import "./D1BatchStatements.mjs";
|
|
2
|
+
import { Context, Effect } from "effect";
|
|
3
|
+
import { AnyRelations } from "drizzle-orm";
|
|
4
|
+
import { D1Client } from "@effect/sql-d1/D1Client";
|
|
5
|
+
import { EffectSQLiteD1Database } from "drizzle-orm/effect-d1";
|
|
6
|
+
//#region src/drizzle/d1-planning.d.ts
|
|
7
|
+
type D1PlanningDatabase = EffectSQLiteD1Database<AnyRelations> & {
|
|
8
|
+
readonly $client: D1Client;
|
|
9
|
+
};
|
|
10
|
+
//#endregion
|
|
11
|
+
export { D1PlanningDatabase };
|
|
12
|
+
//# sourceMappingURL=d1-planning.d.mts.map
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { HookConfigurationError } from "../hooks/models.mjs";
|
|
2
|
+
import { D1BatchStatements } from "./D1BatchStatements.mjs";
|
|
3
|
+
import { Context, Effect } from "effect";
|
|
4
|
+
//#region src/drizzle/d1-planning.ts
|
|
5
|
+
var CurrentD1PlanningDatabase = class extends Context.Service()("effect-auth/drizzle/CurrentD1PlanningDatabase") {};
|
|
6
|
+
const closedCollector = () => HookConfigurationError.make({
|
|
7
|
+
reason: "closed-journal",
|
|
8
|
+
contribution: "d1-batch"
|
|
9
|
+
});
|
|
10
|
+
const makeD1Owner = (closed) => Effect.map(D1BatchStatements, (nativeCollector) => {
|
|
11
|
+
let accepting = true;
|
|
12
|
+
let active = 0;
|
|
13
|
+
let collector;
|
|
14
|
+
const valid = (current) => accepting && current._tag === "Some" && current.value === collector;
|
|
15
|
+
const checkWith = (failure) => Effect.serviceOption(D1BatchStatements).pipe(Effect.flatMap((current) => valid(current) ? Effect.void : Effect.fail(failure)));
|
|
16
|
+
const enterWith = (failure) => Effect.serviceOption(D1BatchStatements).pipe(Effect.flatMap((current) => {
|
|
17
|
+
if (!valid(current)) return Effect.fail(failure);
|
|
18
|
+
active++;
|
|
19
|
+
return Effect.void;
|
|
20
|
+
}));
|
|
21
|
+
const runWith = (failure, effect) => Effect.uninterruptibleMask((restore) => enterWith(failure).pipe(Effect.flatMap(() => restore(effect).pipe(Effect.flatMap((value) => checkWith(failure).pipe(Effect.as(value))), Effect.ensuring(Effect.sync(() => {
|
|
22
|
+
active--;
|
|
23
|
+
}))))));
|
|
24
|
+
const check = checkWith(closed);
|
|
25
|
+
const run = (effect) => runWith(closed, effect);
|
|
26
|
+
collector = D1BatchStatements.of({ append: (statement) => runWith(closedCollector(), Effect.suspend(() => nativeCollector.append(statement))).pipe(Effect.orDie) });
|
|
27
|
+
return {
|
|
28
|
+
collector,
|
|
29
|
+
check,
|
|
30
|
+
run,
|
|
31
|
+
close: (effect) => {
|
|
32
|
+
let activeAtClose = false;
|
|
33
|
+
return effect.pipe(Effect.ensuring(Effect.sync(() => {
|
|
34
|
+
accepting = false;
|
|
35
|
+
activeAtClose = active !== 0;
|
|
36
|
+
})), Effect.flatMap((value) => activeAtClose ? Effect.fail(closed) : Effect.succeed(value)));
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
});
|
|
40
|
+
//#endregion
|
|
41
|
+
export { CurrentD1PlanningDatabase, makeD1Owner };
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=d1-planning.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"d1-planning.mjs","names":[],"sources":["../../src/drizzle/d1-planning.ts"],"sourcesContent":["import type { D1Client } from \"@effect/sql-d1/D1Client\";\nimport type { AnyRelations } from \"drizzle-orm\";\nimport type { EffectSQLiteD1Database } from \"drizzle-orm/effect-d1\";\nimport type { Option } from \"effect\";\nimport { Context, Effect } from \"effect\";\n\nimport { HookConfigurationError } from \"../hooks/models\";\nimport { D1BatchStatements } from \"./D1BatchStatements\";\n\nexport type D1PlanningDatabase = EffectSQLiteD1Database<AnyRelations> & {\n readonly $client: D1Client;\n};\n\nexport class CurrentD1PlanningDatabase extends Context.Service<\n CurrentD1PlanningDatabase,\n D1PlanningDatabase\n>()(\"effect-auth/drizzle/CurrentD1PlanningDatabase\") {}\n\nexport interface D1Owner<Closed> {\n readonly collector: D1BatchStatements[\"Service\"];\n readonly check: Effect.Effect<void, Closed>;\n readonly run: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E | Closed, R>;\n readonly close: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E | Closed, R>;\n}\n\nconst closedCollector = () =>\n HookConfigurationError.make({ reason: \"closed-journal\", contribution: \"d1-batch\" });\n\nexport const makeD1Owner = <Closed>(\n closed: Closed,\n): Effect.Effect<D1Owner<Closed>, never, D1BatchStatements> =>\n Effect.map(D1BatchStatements, (nativeCollector) => {\n let accepting = true;\n let active = 0;\n let collector: D1BatchStatements[\"Service\"];\n\n const valid = (current: Option.Option<D1BatchStatements[\"Service\"]>) =>\n accepting && current._tag === \"Some\" && current.value === collector;\n\n const checkWith = <Failure>(failure: Failure): Effect.Effect<void, Failure> =>\n Effect.serviceOption(D1BatchStatements).pipe(\n Effect.flatMap((current) => (valid(current) ? Effect.void : Effect.fail(failure))),\n );\n\n const enterWith = <Failure>(failure: Failure): Effect.Effect<void, Failure> =>\n Effect.serviceOption(D1BatchStatements).pipe(\n Effect.flatMap((current) => {\n if (!valid(current)) return Effect.fail(failure);\n active++;\n\n return Effect.void;\n }),\n );\n\n const runWith = <A, E, R, Failure>(\n failure: Failure,\n effect: Effect.Effect<A, E, R>,\n ): Effect.Effect<A, E | Failure, R> =>\n Effect.uninterruptibleMask((restore) =>\n enterWith(failure).pipe(\n Effect.flatMap(() =>\n restore(effect).pipe(\n Effect.flatMap((value) => checkWith(failure).pipe(Effect.as(value))),\n Effect.ensuring(\n Effect.sync(() => {\n active--;\n }),\n ),\n ),\n ),\n ),\n );\n\n const check = checkWith(closed);\n\n const run = <A, E, R>(effect: Effect.Effect<A, E, R>): Effect.Effect<A, E | Closed, R> =>\n runWith(closed, effect);\n\n collector = D1BatchStatements.of({\n append: (statement) =>\n runWith(\n closedCollector(),\n Effect.suspend(() => nativeCollector.append(statement)),\n ).pipe(Effect.orDie),\n });\n\n return {\n collector,\n check,\n run,\n close: (effect) => {\n let activeAtClose = false;\n\n return effect.pipe(\n Effect.ensuring(\n Effect.sync(() => {\n accepting = false;\n activeAtClose = active !== 0;\n }),\n ),\n Effect.flatMap((value) => (activeAtClose ? Effect.fail(closed) : Effect.succeed(value))),\n );\n },\n };\n });\n"],"mappings":";;;;AAaA,IAAa,4BAAb,cAA+C,QAAQ,QAGrD,CAAC,CAAC,+CAA+C,CAAC,CAAC,CAAC;AAStD,MAAM,wBACJ,uBAAuB,KAAK;CAAE,QAAQ;CAAkB,cAAc;AAAW,CAAC;AAEpF,MAAa,eACX,WAEA,OAAO,IAAI,oBAAoB,oBAAoB;CACjD,IAAI,YAAY;CAChB,IAAI,SAAS;CACb,IAAI;CAEJ,MAAM,SAAS,YACb,aAAa,QAAQ,SAAS,UAAU,QAAQ,UAAU;CAE5D,MAAM,aAAsB,YAC1B,OAAO,cAAc,iBAAiB,CAAC,CAAC,KACtC,OAAO,SAAS,YAAa,MAAM,OAAO,IAAI,OAAO,OAAO,OAAO,KAAK,OAAO,CAAE,CACnF;CAEF,MAAM,aAAsB,YAC1B,OAAO,cAAc,iBAAiB,CAAC,CAAC,KACtC,OAAO,SAAS,YAAY;EAC1B,IAAI,CAAC,MAAM,OAAO,GAAG,OAAO,OAAO,KAAK,OAAO;EAC/C;EAEA,OAAO,OAAO;CAChB,CAAC,CACH;CAEF,MAAM,WACJ,SACA,WAEA,OAAO,qBAAqB,YAC1B,UAAU,OAAO,CAAC,CAAC,KACjB,OAAO,cACL,QAAQ,MAAM,CAAC,CAAC,KACd,OAAO,SAAS,UAAU,UAAU,OAAO,CAAC,CAAC,KAAK,OAAO,GAAG,KAAK,CAAC,CAAC,GACnE,OAAO,SACL,OAAO,WAAW;EAChB;CACF,CAAC,CACH,CACF,CACF,CACF,CACF;CAEF,MAAM,QAAQ,UAAU,MAAM;CAE9B,MAAM,OAAgB,WACpB,QAAQ,QAAQ,MAAM;CAExB,YAAY,kBAAkB,GAAG,EAC/B,SAAS,cACP,QACE,gBAAgB,GAChB,OAAO,cAAc,gBAAgB,OAAO,SAAS,CAAC,CACxD,CAAC,CAAC,KAAK,OAAO,KAAK,EACvB,CAAC;CAED,OAAO;EACL;EACA;EACA;EACA,QAAQ,WAAW;GACjB,IAAI,gBAAgB;GAEpB,OAAO,OAAO,KACZ,OAAO,SACL,OAAO,WAAW;IAChB,YAAY;IACZ,gBAAgB,WAAW;GAC7B,CAAC,CACH,GACA,OAAO,SAAS,UAAW,gBAAgB,OAAO,KAAK,MAAM,IAAI,OAAO,QAAQ,KAAK,CAAE,CACzF;EACF;CACF;AACF,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { TokenDigest } from "../Schema.mjs";
|
|
2
|
+
import { HookConfigurationError } from "../hooks/models.mjs";
|
|
3
|
+
import { LifecycleHooks } from "../hooks/LifecycleHooks.mjs";
|
|
4
|
+
import { PreparedCommit } from "../hooks/commit.mjs";
|
|
5
|
+
import { ProofAttemptDecision, ProofBinding, ProofCleanupResult, ProofCompletionDecision, ProofContinuationId, ProofDeliveryId, ProofDeliveryOutcome, ProofId, ProofPurpose, ProofVersion } from "../proofs/models.mjs";
|
|
6
|
+
import "./model.mjs";
|
|
7
|
+
import { ProofRequestConflict, ProofUnavailable } from "../proofs/errors.mjs";
|
|
8
|
+
import { ProofPolicy } from "../proofs/policy.mjs";
|
|
9
|
+
import { PrepareProofCommit, ProofCompletionInput, ProofDeliveryClaim, ProofDigest, ProofIssueDecision, ProofPersistence, ProofRecord } from "../proofs/ProofPersistence.mjs";
|
|
10
|
+
import "../proofs/completion.mjs";
|
|
11
|
+
import "../Proofs.mjs";
|
|
12
|
+
import { D1ProofPersistenceMapping } from "./proof-model.mjs";
|
|
13
|
+
import { D1BatchStatements } from "./D1BatchStatements.mjs";
|
|
14
|
+
import "./d1-planning.mjs";
|
|
15
|
+
import { Effect } from "effect";
|
|
16
|
+
import { AnyRelations, SQL, Table } from "drizzle-orm";
|
|
17
|
+
import "drizzle-orm/effect-core";
|
|
18
|
+
import { Statement } from "effect/unstable/sql/Statement";
|
|
19
|
+
import { D1Client } from "@effect/sql-d1/D1Client";
|
|
20
|
+
import { EffectSQLiteD1Database } from "drizzle-orm/effect-d1";
|
|
21
|
+
import { AnySQLiteTable } from "drizzle-orm/sqlite-core";
|
|
22
|
+
//#region src/drizzle/d1-proofs.d.ts
|
|
23
|
+
type Database = EffectSQLiteD1Database<AnyRelations> & {
|
|
24
|
+
readonly $client: D1Client;
|
|
25
|
+
};
|
|
26
|
+
declare const makeD1ProofPersistenceServices: <Rq extends AnySQLiteTable, S extends AnySQLiteTable, G extends AnySQLiteTable, Cn extends AnySQLiteTable, Rs extends AnySQLiteTable, A extends AnySQLiteTable, F extends AnySQLiteTable, C extends AnySQLiteTable, Sub extends AnySQLiteTable, I extends AnySQLiteTable, Cr extends AnySQLiteTable, NativeId>(database: Database, mapping: D1ProofPersistenceMapping<Rq, S, G, Cn, Rs, A, F, C, Sub, I, Cr, NativeId>) => Effect.Effect<{
|
|
27
|
+
proofPersistence: {
|
|
28
|
+
readonly issue: <A_1>(input: {
|
|
29
|
+
readonly record: ProofRecord;
|
|
30
|
+
readonly policy: ProofPolicy;
|
|
31
|
+
readonly eligible: boolean;
|
|
32
|
+
readonly supersedes?: ProofId;
|
|
33
|
+
}, prepare: PrepareProofCommit<ProofIssueDecision, A_1>) => Effect.Effect<PreparedCommit<A_1>, ProofRequestConflict | ProofUnavailable>;
|
|
34
|
+
readonly attempt: <A_1>(input: {
|
|
35
|
+
readonly moduleId: string;
|
|
36
|
+
readonly purpose: ProofPurpose;
|
|
37
|
+
readonly proofId: ProofId;
|
|
38
|
+
readonly binding: ProofBinding;
|
|
39
|
+
readonly candidate?: ProofDigest;
|
|
40
|
+
readonly continuationId: ProofContinuationId;
|
|
41
|
+
readonly continuationDigest: TokenDigest;
|
|
42
|
+
readonly nowMillis: number;
|
|
43
|
+
readonly policy: ProofPolicy;
|
|
44
|
+
}, prepare: PrepareProofCommit<ProofAttemptDecision, A_1>) => Effect.Effect<PreparedCommit<A_1>, ProofUnavailable>;
|
|
45
|
+
readonly complete: <A_1>(input: ProofCompletionInput, prepare: PrepareProofCommit<ProofCompletionDecision, A_1>) => Effect.Effect<PreparedCommit<A_1>, ProofUnavailable>;
|
|
46
|
+
readonly claimDelivery: <A_1>(input: {
|
|
47
|
+
readonly moduleId: string;
|
|
48
|
+
readonly proofId: ProofId;
|
|
49
|
+
readonly version: ProofVersion;
|
|
50
|
+
readonly deliveryId: ProofDeliveryId;
|
|
51
|
+
readonly nowMillis: number;
|
|
52
|
+
readonly policy: ProofPolicy;
|
|
53
|
+
readonly allowAmbiguousRetry: boolean;
|
|
54
|
+
}, prepare: PrepareProofCommit<ProofDeliveryClaim, A_1>) => Effect.Effect<PreparedCommit<A_1>, ProofUnavailable>;
|
|
55
|
+
readonly settleDelivery: <A_1>(input: {
|
|
56
|
+
readonly moduleId: string;
|
|
57
|
+
readonly proofId: ProofId;
|
|
58
|
+
readonly version: ProofVersion;
|
|
59
|
+
readonly deliveryId: ProofDeliveryId;
|
|
60
|
+
readonly claimVersion: ProofVersion;
|
|
61
|
+
readonly outcome: ProofDeliveryOutcome;
|
|
62
|
+
readonly nowMillis: number;
|
|
63
|
+
}, prepare: PrepareProofCommit<void, A_1>) => Effect.Effect<PreparedCommit<A_1>, ProofUnavailable>;
|
|
64
|
+
readonly cancel: <A_1>(input: {
|
|
65
|
+
readonly moduleId: string;
|
|
66
|
+
readonly purpose: ProofPurpose;
|
|
67
|
+
readonly binding: ProofBinding;
|
|
68
|
+
readonly nowMillis: number;
|
|
69
|
+
}, prepare: PrepareProofCommit<void, A_1>) => Effect.Effect<PreparedCommit<A_1>, ProofUnavailable>;
|
|
70
|
+
readonly cleanup: <A_1>(input: {
|
|
71
|
+
readonly moduleId: string;
|
|
72
|
+
readonly nowMillis: number;
|
|
73
|
+
readonly limit: number;
|
|
74
|
+
}, prepare: PrepareProofCommit<ProofCleanupResult, A_1>) => Effect.Effect<PreparedCommit<A_1>, ProofUnavailable>;
|
|
75
|
+
};
|
|
76
|
+
}, never, LifecycleHooks>;
|
|
77
|
+
type CoordinatorError<E> = E | ProofUnavailable | HookConfigurationError;
|
|
78
|
+
/**
|
|
79
|
+
* Owns one proof transition plus application statements in one D1 batch. It
|
|
80
|
+
* never replays the owner effect. A reserved guard or named race becomes
|
|
81
|
+
* ProofUnavailable so the caller can retry the entire command with fresh secrets.
|
|
82
|
+
*/
|
|
83
|
+
declare function coordinateD1ProofPersistence<Rq extends AnySQLiteTable, S extends AnySQLiteTable, G extends AnySQLiteTable, Cn extends AnySQLiteTable, Rs extends AnySQLiteTable, Aev extends AnySQLiteTable, F extends AnySQLiteTable, C extends AnySQLiteTable, Sub extends AnySQLiteTable, I extends AnySQLiteTable, Cr extends AnySQLiteTable, NativeId, A, E, R, DatabaseError, DatabaseRequirements>(acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>, options: {
|
|
84
|
+
readonly mapping: D1ProofPersistenceMapping<Rq, S, G, Cn, Rs, Aev, F, C, Sub, I, Cr, NativeId>;
|
|
85
|
+
}, body: Effect.Effect<A, E, R>): Effect.Effect<A, CoordinatorError<E> | DatabaseError, Exclude<R, ProofPersistence | D1BatchStatements> | LifecycleHooks | DatabaseRequirements>;
|
|
86
|
+
//#endregion
|
|
87
|
+
export { coordinateD1ProofPersistence, makeD1ProofPersistenceServices };
|
|
88
|
+
//# sourceMappingURL=d1-proofs.d.mts.map
|