@yielded/auth-persistence 0.1.0-beta.7
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/README.md +21 -0
- package/dist/Drizzle.d.mts +28 -0
- package/dist/Drizzle.mjs +28 -0
- package/dist/DrizzleD1.d.mts +963 -0
- package/dist/DrizzleD1.mjs +29 -0
- package/dist/DrizzleD1.mjs.map +1 -0
- package/dist/DrizzleLibsql.d.mts +2284 -0
- package/dist/DrizzleLibsql.mjs +92 -0
- package/dist/DrizzleLibsql.mjs.map +1 -0
- package/dist/DrizzleMysql2.d.mts +1820 -0
- package/dist/DrizzleMysql2.mjs +55 -0
- package/dist/DrizzleMysql2.mjs.map +1 -0
- package/dist/DrizzlePglite.d.mts +1826 -0
- package/dist/DrizzlePglite.mjs +53 -0
- package/dist/DrizzlePglite.mjs.map +1 -0
- package/dist/DrizzlePostgres.d.mts +1826 -0
- package/dist/DrizzlePostgres.mjs +53 -0
- package/dist/DrizzlePostgres.mjs.map +1 -0
- package/dist/DrizzleSqliteBun.d.mts +2279 -0
- package/dist/DrizzleSqliteBun.mjs +70 -0
- package/dist/DrizzleSqliteBun.mjs.map +1 -0
- package/dist/DrizzleSqliteDo.d.mts +2329 -0
- package/dist/DrizzleSqliteDo.mjs +105 -0
- package/dist/DrizzleSqliteDo.mjs.map +1 -0
- package/dist/DrizzleSqliteNode.d.mts +2279 -0
- package/dist/DrizzleSqliteNode.mjs +70 -0
- package/dist/DrizzleSqliteNode.mjs.map +1 -0
- package/dist/DrizzleSqliteWasm.d.mts +2282 -0
- package/dist/DrizzleSqliteWasm.mjs +70 -0
- package/dist/DrizzleSqliteWasm.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 +62 -0
- package/dist/drizzle/d1-emails.mjs +580 -0
- package/dist/drizzle/d1-emails.mjs.map +1 -0
- package/dist/drizzle/d1-generated-statement.d.mts +2 -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 +31 -0
- package/dist/drizzle/d1-identity.mjs +119 -0
- package/dist/drizzle/d1-identity.mjs.map +1 -0
- package/dist/drizzle/d1-oauth.d.mts +301 -0
- package/dist/drizzle/d1-oauth.mjs +76 -0
- package/dist/drizzle/d1-oauth.mjs.map +1 -0
- package/dist/drizzle/d1-passkey.d.mts +51 -0
- package/dist/drizzle/d1-passkey.mjs +95 -0
- package/dist/drizzle/d1-passkey.mjs.map +1 -0
- package/dist/drizzle/d1-password-prepared.d.mts +25 -0
- package/dist/drizzle/d1-password-prepared.mjs +461 -0
- package/dist/drizzle/d1-password-prepared.mjs.map +1 -0
- package/dist/drizzle/d1-passwords.d.mts +87 -0
- package/dist/drizzle/d1-passwords.mjs +1004 -0
- package/dist/drizzle/d1-passwords.mjs.map +1 -0
- package/dist/drizzle/d1-phone.d.mts +26 -0
- package/dist/drizzle/d1-phone.mjs +30 -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 +80 -0
- package/dist/drizzle/d1-proofs.mjs +830 -0
- package/dist/drizzle/d1-proofs.mjs.map +1 -0
- package/dist/drizzle/d1-sessions.d.mts +67 -0
- package/dist/drizzle/d1-sessions.mjs +966 -0
- package/dist/drizzle/d1-sessions.mjs.map +1 -0
- package/dist/drizzle/d1-totp.d.mts +26 -0
- package/dist/drizzle/d1-totp.mjs +27 -0
- package/dist/drizzle/d1-totp.mjs.map +1 -0
- package/dist/drizzle/email-model.d.mts +354 -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 +30 -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 +4 -0
- package/dist/drizzle/email-sql.mjs +9 -0
- package/dist/drizzle/email-sql.mjs.map +1 -0
- package/dist/drizzle/email-target.d.mts +20 -0
- package/dist/drizzle/email-target.mjs +72 -0
- package/dist/drizzle/email-target.mjs.map +1 -0
- package/dist/drizzle/model.d.mts +250 -0
- package/dist/drizzle/model.mjs +58 -0
- package/dist/drizzle/model.mjs.map +1 -0
- package/dist/drizzle/mysql-emails.d.mts +71 -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 +22 -0
- package/dist/drizzle/mysql-identity.mjs +94 -0
- package/dist/drizzle/mysql-identity.mjs.map +1 -0
- package/dist/drizzle/mysql-password-prepared.d.mts +30 -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 +86 -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 +75 -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 +237 -0
- package/dist/drizzle/mysql-sessions.mjs +53 -0
- package/dist/drizzle/mysql-sessions.mjs.map +1 -0
- package/dist/drizzle/mysql.d.mts +70 -0
- package/dist/drizzle/mysql.mjs +218 -0
- package/dist/drizzle/mysql.mjs.map +1 -0
- package/dist/drizzle/oauth-accounts.mjs +358 -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 +76 -0
- package/dist/drizzle/oauth-connected-drivers.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-flow.mjs +247 -0
- package/dist/drizzle/oauth-connected-flow.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-input.mjs +103 -0
- package/dist/drizzle/oauth-connected-input.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-maintenance.mjs +214 -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 +14 -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 +753 -0
- package/dist/drizzle/oauth-connected-target.mjs +91 -0
- package/dist/drizzle/oauth-connected-target.mjs.map +1 -0
- package/dist/drizzle/oauth-drivers.mjs +51 -0
- package/dist/drizzle/oauth-drivers.mjs.map +1 -0
- package/dist/drizzle/oauth-flow.d.mts +5 -0
- package/dist/drizzle/oauth-flow.mjs +253 -0
- package/dist/drizzle/oauth-flow.mjs.map +1 -0
- package/dist/drizzle/oauth-input.mjs +127 -0
- package/dist/drizzle/oauth-input.mjs.map +1 -0
- package/dist/drizzle/oauth-model.d.mts +463 -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 +6 -0
- package/dist/drizzle/oauth-registration.mjs +374 -0
- package/dist/drizzle/oauth-registration.mjs.map +1 -0
- package/dist/drizzle/oauth-state.mjs +107 -0
- package/dist/drizzle/oauth-state.mjs.map +1 -0
- package/dist/drizzle/oauth-target.d.mts +111 -0
- package/dist/drizzle/oauth-target.mjs +246 -0
- package/dist/drizzle/oauth-target.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-kernel.mjs +8 -0
- package/dist/drizzle/passkey-kernel.mjs.map +1 -0
- package/dist/drizzle/passkey-model.d.mts +272 -0
- package/dist/drizzle/passkey-model.mjs +34 -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-state.mjs +7 -0
- package/dist/drizzle/passkey-state.mjs.map +1 -0
- package/dist/drizzle/passkey-target.d.mts +9 -0
- package/dist/drizzle/passkey-target.mjs +7 -0
- package/dist/drizzle/passkey-target.mjs.map +1 -0
- package/dist/drizzle/passkey-write-drivers.mjs +32 -0
- package/dist/drizzle/passkey-write-drivers.mjs.map +1 -0
- package/dist/drizzle/passkey-write-model.d.mts +190 -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-target.d.mts +11 -0
- package/dist/drizzle/passkey-write-target.mjs +7 -0
- package/dist/drizzle/passkey-write-target.mjs.map +1 -0
- package/dist/drizzle/password-model.d.mts +329 -0
- package/dist/drizzle/password-model.mjs +23 -0
- package/dist/drizzle/password-model.mjs.map +1 -0
- package/dist/drizzle/password-prepared-model.d.mts +94 -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 +390 -0
- package/dist/drizzle/password-prepared-sql.mjs.map +1 -0
- package/dist/drizzle/password-prepared-state.mjs +104 -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 +56 -0
- package/dist/drizzle/password-prepared-target.mjs.map +1 -0
- package/dist/drizzle/password-registration.d.mts +19 -0
- package/dist/drizzle/password-registration.mjs +135 -0
- package/dist/drizzle/password-registration.mjs.map +1 -0
- package/dist/drizzle/password-sql.d.mts +5 -0
- package/dist/drizzle/password-sql.mjs +9 -0
- package/dist/drizzle/password-sql.mjs.map +1 -0
- package/dist/drizzle/password-target.d.mts +17 -0
- package/dist/drizzle/password-target.mjs +61 -0
- package/dist/drizzle/password-target.mjs.map +1 -0
- package/dist/drizzle/pg-emails.d.mts +72 -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 +31 -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 +87 -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 +76 -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 +238 -0
- package/dist/drizzle/pg-sessions.mjs +53 -0
- package/dist/drizzle/pg-sessions.mjs.map +1 -0
- package/dist/drizzle/pg.d.mts +81 -0
- package/dist/drizzle/pg.mjs +290 -0
- package/dist/drizzle/pg.mjs.map +1 -0
- package/dist/drizzle/phone-model.d.mts +115 -0
- package/dist/drizzle/phone-model.mjs +39 -0
- package/dist/drizzle/phone-model.mjs.map +1 -0
- package/dist/drizzle/phone-state.mjs +16 -0
- package/dist/drizzle/phone-state.mjs.map +1 -0
- package/dist/drizzle/phone-target.d.mts +17 -0
- package/dist/drizzle/phone-target.mjs +170 -0
- package/dist/drizzle/phone-target.mjs.map +1 -0
- package/dist/drizzle/proof-model.d.mts +286 -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 +4 -0
- package/dist/drizzle/proof-sql.mjs +8 -0
- package/dist/drizzle/proof-sql.mjs.map +1 -0
- package/dist/drizzle/proof-target.d.mts +12 -0
- package/dist/drizzle/proof-target.mjs +36 -0
- package/dist/drizzle/proof-target.mjs.map +1 -0
- package/dist/drizzle/query-operations.mjs +26 -0
- package/dist/drizzle/query-operations.mjs.map +1 -0
- package/dist/drizzle/session-model.d.mts +200 -0
- package/dist/drizzle/session-model.mjs +20 -0
- package/dist/drizzle/session-model.mjs.map +1 -0
- package/dist/drizzle/session-sql.mjs +8 -0
- package/dist/drizzle/session-sql.mjs.map +1 -0
- package/dist/drizzle/session-target.d.mts +28 -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 +91 -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 +78 -0
- package/dist/drizzle/sqlite.mjs +217 -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 +32 -0
- package/dist/drizzle/step-up-state.mjs.map +1 -0
- package/dist/drizzle/totp-model.d.mts +84 -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 +38 -0
- package/dist/drizzle/totp-state.mjs +287 -0
- package/dist/drizzle/totp-state.mjs.map +1 -0
- package/dist/drizzle/totp-target.d.mts +17 -0
- package/dist/drizzle/totp-target.mjs +81 -0
- package/dist/drizzle/totp-target.mjs.map +1 -0
- package/dist/drizzle/transaction-execution.d.mts +4 -0
- package/dist/drizzle/transaction-execution.mjs +11 -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 +2 -0
- package/dist/drizzle/transaction-owner.mjs +8 -0
- package/dist/drizzle/transaction-owner.mjs.map +1 -0
- package/dist/index.d.mts +5 -0
- package/dist/index.mjs +5 -0
- package/dist/internal/configuration.d.mts +174 -0
- package/dist/internal/configuration.mjs +7 -0
- package/dist/internal/configuration.mjs.map +1 -0
- package/dist/internal/drizzle-migrations.mjs +19 -0
- package/dist/internal/drizzle-migrations.mjs.map +1 -0
- package/dist/internal/drizzle-postgres.mjs +39 -0
- package/dist/internal/drizzle-postgres.mjs.map +1 -0
- package/dist/internal/drizzle-sqlite.mjs +37 -0
- package/dist/internal/drizzle-sqlite.mjs.map +1 -0
- package/dist/internal/email-kernel.d.mts +13 -0
- package/dist/internal/email-kernel.mjs +487 -0
- package/dist/internal/email-kernel.mjs.map +1 -0
- package/dist/internal/mapping-error.d.mts +11 -0
- package/dist/internal/mapping-error.mjs +30 -0
- package/dist/internal/mapping-error.mjs.map +1 -0
- package/dist/internal/passkey/admission.d.mts +7 -0
- package/dist/internal/passkey/admission.mjs +216 -0
- package/dist/internal/passkey/admission.mjs.map +1 -0
- package/dist/internal/passkey/credentials.d.mts +6 -0
- package/dist/internal/passkey/credentials.mjs +249 -0
- package/dist/internal/passkey/credentials.mjs.map +1 -0
- package/dist/internal/passkey/enrollment.mjs +138 -0
- package/dist/internal/passkey/enrollment.mjs.map +1 -0
- package/dist/internal/passkey/flow.d.mts +10 -0
- package/dist/internal/passkey/flow.mjs +452 -0
- package/dist/internal/passkey/flow.mjs.map +1 -0
- package/dist/internal/passkey/management.mjs +231 -0
- package/dist/internal/passkey/management.mjs.map +1 -0
- package/dist/internal/passkey/registration-ceremony.d.mts +9 -0
- package/dist/internal/passkey/registration-ceremony.mjs +129 -0
- package/dist/internal/passkey/registration-ceremony.mjs.map +1 -0
- package/dist/internal/passkey/registration-custody.d.mts +2 -0
- package/dist/internal/passkey/registration-custody.mjs +52 -0
- package/dist/internal/passkey/registration-custody.mjs.map +1 -0
- package/dist/internal/passkey/registration-write.mjs +211 -0
- package/dist/internal/passkey/registration-write.mjs.map +1 -0
- package/dist/internal/passkey/state.d.mts +5 -0
- package/dist/internal/passkey/state.mjs +234 -0
- package/dist/internal/passkey/state.mjs.map +1 -0
- package/dist/internal/passkey/target.d.mts +19 -0
- package/dist/internal/passkey/target.mjs +190 -0
- package/dist/internal/passkey/target.mjs.map +1 -0
- package/dist/internal/passkey/write-state.mjs +345 -0
- package/dist/internal/passkey/write-state.mjs.map +1 -0
- package/dist/internal/passkey/write-target.mjs +192 -0
- package/dist/internal/passkey/write-target.mjs.map +1 -0
- package/dist/internal/passkey-kernel.mjs +49 -0
- package/dist/internal/passkey-kernel.mjs.map +1 -0
- package/dist/internal/passkeys.mjs +367 -0
- package/dist/internal/passkeys.mjs.map +1 -0
- package/dist/internal/password-kernel.d.mts +13 -0
- package/dist/internal/password-kernel.mjs +704 -0
- package/dist/internal/password-kernel.mjs.map +1 -0
- package/dist/internal/persistence.mjs +289 -0
- package/dist/internal/persistence.mjs.map +1 -0
- package/dist/internal/phone-kernel.mjs +434 -0
- package/dist/internal/phone-kernel.mjs.map +1 -0
- package/dist/internal/proof-kernel.d.mts +9 -0
- package/dist/internal/proof-kernel.mjs +619 -0
- package/dist/internal/proof-kernel.mjs.map +1 -0
- package/dist/internal/query-operations.d.mts +3 -0
- package/dist/internal/registration.mjs +65 -0
- package/dist/internal/registration.mjs.map +1 -0
- package/dist/internal/session-kernel.mjs +737 -0
- package/dist/internal/session-kernel.mjs.map +1 -0
- package/dist/internal/sql-persistence.d.mts +11 -0
- package/dist/internal/sql-persistence.mjs +37 -0
- package/dist/internal/sql-persistence.mjs.map +1 -0
- package/dist/internal/sql-query.mjs +207 -0
- package/dist/internal/sql-query.mjs.map +1 -0
- package/dist/internal/sql-table.d.mts +37 -0
- package/dist/internal/sql-table.mjs +71 -0
- package/dist/internal/sql-table.mjs.map +1 -0
- package/dist/internal/storage-mapping.mjs +687 -0
- package/dist/internal/storage-mapping.mjs.map +1 -0
- package/dist/internal/storage-tables.d.mts +914 -0
- package/dist/internal/storage-tables.mjs +387 -0
- package/dist/internal/storage-tables.mjs.map +1 -0
- package/dist/internal/storage-validation.mjs +58 -0
- package/dist/internal/storage-validation.mjs.map +1 -0
- package/dist/internal/transaction-execution-kernel.d.mts +18 -0
- package/dist/internal/transaction-execution-kernel.mjs +118 -0
- package/dist/internal/transaction-execution-kernel.mjs.map +1 -0
- package/dist/internal/transaction-kernel.d.mts +7 -0
- package/dist/internal/transaction-kernel.mjs +260 -0
- package/dist/internal/transaction-kernel.mjs.map +1 -0
- package/package.json +1 -0
- package/src/Drizzle.ts +378 -0
- package/src/DrizzleD1.ts +136 -0
- package/src/DrizzleLibsql.ts +301 -0
- package/src/DrizzleMysql2.ts +184 -0
- package/src/DrizzlePglite.ts +174 -0
- package/src/DrizzlePostgres.ts +174 -0
- package/src/DrizzleSqliteBun.ts +258 -0
- package/src/DrizzleSqliteDo.ts +473 -0
- package/src/DrizzleSqliteNode.ts +259 -0
- package/src/DrizzleSqliteWasm.ts +263 -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 +1829 -0
- package/src/drizzle/d1-generated-statement.ts +129 -0
- package/src/drizzle/d1-identity.ts +375 -0
- package/src/drizzle/d1-oauth.ts +340 -0
- package/src/drizzle/d1-passkey.ts +373 -0
- package/src/drizzle/d1-password-prepared.ts +1270 -0
- package/src/drizzle/d1-passwords.ts +2656 -0
- package/src/drizzle/d1-phone.ts +96 -0
- package/src/drizzle/d1-planning.ts +104 -0
- package/src/drizzle/d1-proofs.ts +2305 -0
- package/src/drizzle/d1-sessions.ts +2857 -0
- package/src/drizzle/d1-totp.ts +78 -0
- package/src/drizzle/email-model.ts +516 -0
- package/src/drizzle/email-registration.ts +698 -0
- package/src/drizzle/email-sql.ts +24 -0
- package/src/drizzle/email-target.ts +243 -0
- package/src/drizzle/model.ts +463 -0
- package/src/drizzle/mysql-emails.ts +321 -0
- package/src/drizzle/mysql-identity.ts +324 -0
- package/src/drizzle/mysql-password-prepared.ts +204 -0
- package/src/drizzle/mysql-passwords.ts +339 -0
- package/src/drizzle/mysql-proofs.ts +181 -0
- package/src/drizzle/mysql-sessions.ts +741 -0
- package/src/drizzle/mysql.ts +687 -0
- package/src/drizzle/oauth-accounts.ts +804 -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 +465 -0
- package/src/drizzle/oauth-connected-flow.ts +441 -0
- package/src/drizzle/oauth-connected-input.ts +127 -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 +845 -0
- package/src/drizzle/oauth-connected-target.ts +264 -0
- package/src/drizzle/oauth-drivers.ts +569 -0
- package/src/drizzle/oauth-flow.ts +462 -0
- package/src/drizzle/oauth-input.ts +201 -0
- package/src/drizzle/oauth-model.ts +617 -0
- package/src/drizzle/oauth-mysql.ts +10 -0
- package/src/drizzle/oauth-owner.ts +29 -0
- package/src/drizzle/oauth-registration.ts +640 -0
- package/src/drizzle/oauth-state.ts +215 -0
- package/src/drizzle/oauth-target.ts +750 -0
- package/src/drizzle/passkey-drivers.ts +385 -0
- package/src/drizzle/passkey-kernel.ts +3 -0
- package/src/drizzle/passkey-model.ts +353 -0
- package/src/drizzle/passkey-registration-ceremony-model.ts +69 -0
- package/src/drizzle/passkey-state.ts +3 -0
- package/src/drizzle/passkey-target.ts +23 -0
- package/src/drizzle/passkey-write-drivers.ts +395 -0
- package/src/drizzle/passkey-write-model.ts +271 -0
- package/src/drizzle/passkey-write-target.ts +9 -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 +1191 -0
- package/src/drizzle/password-prepared-state.ts +231 -0
- package/src/drizzle/password-prepared-target.ts +160 -0
- package/src/drizzle/password-registration.ts +374 -0
- package/src/drizzle/password-sql.ts +12 -0
- package/src/drizzle/password-target.ts +224 -0
- package/src/drizzle/pg-emails.ts +321 -0
- package/src/drizzle/pg-password-prepared.ts +205 -0
- package/src/drizzle/pg-passwords.ts +338 -0
- package/src/drizzle/pg-proofs.ts +191 -0
- package/src/drizzle/pg-sessions.ts +750 -0
- package/src/drizzle/pg.ts +984 -0
- package/src/drizzle/phone-model.ts +190 -0
- package/src/drizzle/phone-state.ts +21 -0
- package/src/drizzle/phone-target.ts +472 -0
- package/src/drizzle/proof-model.ts +398 -0
- package/src/drizzle/proof-sql.ts +9 -0
- package/src/drizzle/proof-target.ts +122 -0
- package/src/drizzle/query-operations.ts +37 -0
- package/src/drizzle/session-model.ts +370 -0
- package/src/drizzle/session-sql.ts +13 -0
- package/src/drizzle/session-target.ts +338 -0
- package/src/drizzle/sqlite-emails.ts +366 -0
- package/src/drizzle/sqlite-identity.ts +344 -0
- package/src/drizzle/sqlite-password-prepared.ts +260 -0
- package/src/drizzle/sqlite-passwords.ts +497 -0
- package/src/drizzle/sqlite-proofs.ts +202 -0
- package/src/drizzle/sqlite-sessions.ts +971 -0
- package/src/drizzle/sqlite.ts +705 -0
- package/src/drizzle/standalone-guard.ts +38 -0
- package/src/drizzle/step-up-model.ts +128 -0
- package/src/drizzle/step-up-state.ts +139 -0
- package/src/drizzle/totp-model.ts +92 -0
- package/src/drizzle/totp-state.ts +525 -0
- package/src/drizzle/totp-target.ts +308 -0
- package/src/drizzle/transaction-execution.ts +12 -0
- package/src/drizzle/transaction-mysql.ts +104 -0
- package/src/drizzle/transaction-owner.ts +10 -0
- package/src/index.ts +4 -0
- package/src/internal/configuration.ts +282 -0
- package/src/internal/drizzle-migrations.ts +30 -0
- package/src/internal/drizzle-postgres.ts +81 -0
- package/src/internal/drizzle-sqlite.ts +79 -0
- package/src/internal/email-kernel.ts +1532 -0
- package/src/internal/mapping-error.ts +36 -0
- package/src/internal/passkey/admission.ts +362 -0
- package/src/internal/passkey/credentials.ts +511 -0
- package/src/internal/passkey/enrollment.ts +326 -0
- package/src/internal/passkey/flow.ts +1062 -0
- package/src/internal/passkey/management.ts +422 -0
- package/src/internal/passkey/registration-ceremony.ts +283 -0
- package/src/internal/passkey/registration-custody.ts +91 -0
- package/src/internal/passkey/registration-write.ts +426 -0
- package/src/internal/passkey/state.ts +354 -0
- package/src/internal/passkey/target.ts +586 -0
- package/src/internal/passkey/write-state.ts +681 -0
- package/src/internal/passkey/write-target.ts +452 -0
- package/src/internal/passkey-kernel.ts +102 -0
- package/src/internal/passkeys.ts +597 -0
- package/src/internal/password-kernel.ts +2122 -0
- package/src/internal/persistence.ts +590 -0
- package/src/internal/phone-kernel.ts +843 -0
- package/src/internal/proof-kernel.ts +1949 -0
- package/src/internal/query-operations.ts +26 -0
- package/src/internal/registration.ts +160 -0
- package/src/internal/session-kernel.ts +2210 -0
- package/src/internal/sql-persistence.ts +45 -0
- package/src/internal/sql-query.ts +298 -0
- package/src/internal/sql-table.ts +89 -0
- package/src/internal/storage-mapping.ts +706 -0
- package/src/internal/storage-tables.ts +408 -0
- package/src/internal/storage-validation.ts +117 -0
- package/src/internal/transaction-execution-kernel.ts +317 -0
- package/src/internal/transaction-kernel.ts +582 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pg-proofs.mjs","names":[],"sources":["../../src/drizzle/pg-proofs.ts"],"sourcesContent":["import type { LifecycleHooks, HookConfigurationError } from \"@yielded/auth/Hooks\";\nimport { type ProofUnavailable, ProofPersistence } from \"@yielded/auth/Proofs\";\nimport type { AnyRelations } from \"drizzle-orm\";\nimport type { EffectPgDatabase as PgliteDatabase } from \"drizzle-orm/effect-pglite\";\nimport type { EffectPgDatabase as PostgresDatabase } from \"drizzle-orm/effect-postgres\";\nimport type { AnyPgTable } from \"drizzle-orm/pg-core\";\nimport { Effect, Context } from \"effect\";\nimport type { SqlError } from \"effect/unstable/sql/SqlError\";\n\nimport type { ProofPersistenceMapping } from \"./proof-model\";\nimport type { ProofSqlQuery } from \"./proof-sql\";\nimport {\n coordinateTargetProofPersistence,\n makeTargetProofPersistenceServices,\n sqlClientProofStandaloneGuard,\n} from \"./proof-target\";\nimport type { SuppliedService } from \"./SuppliedService\";\n\ntype Database = PostgresDatabase<AnyRelations> | PgliteDatabase<AnyRelations>;\ntype TransactionOf<D extends Database> = Parameters<Parameters<D[\"transaction\"]>[0]>[0];\ntype Mapping<\n Request extends AnyPgTable,\n Series extends AnyPgTable,\n Generation extends AnyPgTable,\n Continuation extends AnyPgTable,\n RateScope extends AnyPgTable,\n AbuseEvent extends AnyPgTable,\n FailureEvent extends AnyPgTable,\n Command extends AnyPgTable,\n Subject extends AnyPgTable,\n Identifier extends AnyPgTable,\n Credential extends AnyPgTable,\n NativeSubjectId,\n> = ProofPersistenceMapping<\n Request,\n Series,\n Generation,\n Continuation,\n RateScope,\n AbuseEvent,\n FailureEvent,\n Command,\n Subject,\n Identifier,\n Credential,\n NativeSubjectId\n>;\n\nconst configuration = (database: Database) => ({\n mode: \"interactive\" as const,\n locking: true,\n standaloneGuard: sqlClientProofStandaloneGuard(database),\n insertIfAbsent: (query: ProofSqlQuery) => query.onConflictDoNothing(),\n});\n\nexport const makePgProofPersistenceServices = <\n Rq extends AnyPgTable,\n S extends AnyPgTable,\n G extends AnyPgTable,\n Cn extends AnyPgTable,\n Rs extends AnyPgTable,\n A extends AnyPgTable,\n F extends AnyPgTable,\n C extends AnyPgTable,\n Sub extends AnyPgTable,\n I extends AnyPgTable,\n Cr extends AnyPgTable,\n NativeId,\n>(\n database: Database,\n mapping: Mapping<Rq, S, G, Cn, Rs, A, F, C, Sub, I, Cr, NativeId>,\n) => makeTargetProofPersistenceServices(database, mapping, configuration(database));\n\nexport function coordinatePgProofPersistence<\n D extends Database,\n Rq extends AnyPgTable,\n S extends AnyPgTable,\n G extends AnyPgTable,\n Cn extends AnyPgTable,\n Rs extends AnyPgTable,\n Aev extends AnyPgTable,\n F extends AnyPgTable,\n C extends AnyPgTable,\n Sub extends AnyPgTable,\n I extends AnyPgTable,\n Cr extends AnyPgTable,\n NativeId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: Mapping<Rq, S, G, Cn, Rs, Aev, F, C, Sub, I, Cr, NativeId>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | ProofUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, ProofPersistence> | LifecycleHooks | DatabaseRequirements\n>;\n\nexport function coordinatePgProofPersistence<\n D extends Database,\n Rq extends AnyPgTable,\n S extends AnyPgTable,\n G extends AnyPgTable,\n Cn extends AnyPgTable,\n Rs extends AnyPgTable,\n Aev extends AnyPgTable,\n F extends AnyPgTable,\n C extends AnyPgTable,\n Sub extends AnyPgTable,\n I extends AnyPgTable,\n Cr extends AnyPgTable,\n NativeId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: Mapping<Rq, S, G, Cn, Rs, Aev, F, C, Sub, I, Cr, NativeId>;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | ProofUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, ProofPersistence | TxId> | LifecycleHooks | DatabaseRequirements\n>;\n\nexport function coordinatePgProofPersistence<\n D extends Database,\n Rq extends AnyPgTable,\n S extends AnyPgTable,\n G extends AnyPgTable,\n Cn extends AnyPgTable,\n Rs extends AnyPgTable,\n Aev extends AnyPgTable,\n F extends AnyPgTable,\n C extends AnyPgTable,\n Sub extends AnyPgTable,\n I extends AnyPgTable,\n Cr extends AnyPgTable,\n NativeId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: Mapping<Rq, S, G, Cn, Rs, Aev, F, C, Sub, I, Cr, NativeId>;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | ProofUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, ProofPersistence> | LifecycleHooks | DatabaseRequirements\n> {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetProofPersistence<TransactionOf<D>, A, E, Exclude<R, ProofPersistence>>(\n database,\n options.mapping,\n configuration(database),\n (\n transaction: TransactionOf<D>,\n services: { readonly proofPersistence: ProofPersistence[\"Service\"] },\n ) => {\n const provided = Context.make(ProofPersistence, services.proofPersistence);\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ),\n );\n}\n"],"mappings":";;;;AAgDA,MAAM,iBAAiB,cAAwB;CAC7C,MAAM;CACN,SAAS;CACT,iBAAiB,8BAA8B,QAAQ;CACvD,iBAAiB,UAAyB,MAAM,oBAAoB;AACtE;AAEA,MAAa,kCAcX,UACA,YACG,mCAAmC,UAAU,SAAS,cAAc,QAAQ,CAAC;AAoElF,SAAgB,6BAsBd,SACA,SAIA,MAKA;CACA,OAAO,OAAO,QAAQ,UAAU,aAC9B,iCACE,UACA,QAAQ,SACR,cAAc,QAAQ,IAEpB,aACA,aACG;EACH,MAAM,WAAW,QAAQ,KAAK,kBAAkB,SAAS,gBAAgB;EACzE,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;EAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;CAC1F,CACF,CACF;AACF"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import { AuthenticationAuthorityMapping, PendingAuthenticationMapping, SignedSessionValidityMapping, StatefulSessionMapping } from "./session-model.mjs";
|
|
2
|
+
import { SessionStepUpMapping } from "./step-up-model.mjs";
|
|
3
|
+
import { SuppliedService } from "./SuppliedService.mjs";
|
|
4
|
+
import { Context, Effect } from "effect";
|
|
5
|
+
import { HookConfigurationError, LifecycleHooks } from "@yielded/auth/Hooks";
|
|
6
|
+
import { AuthenticationAuthority, PendingAuthentication, SessionRepository, SessionStepUpPersistence, SessionUnavailable, SignedSessionValidity, StatefulSessionPersistence } from "@yielded/auth/Sessions";
|
|
7
|
+
import { AnyRelations } from "drizzle-orm";
|
|
8
|
+
import { EffectPgDatabase } from "drizzle-orm/effect-pglite";
|
|
9
|
+
import { AnyPgTable } from "drizzle-orm/pg-core";
|
|
10
|
+
import { EffectPgDatabase as EffectPgDatabase$1 } from "drizzle-orm/effect-postgres";
|
|
11
|
+
import { SqlError } from "effect/unstable/sql/SqlError";
|
|
12
|
+
//#region src/drizzle/pg-sessions.d.ts
|
|
13
|
+
type Database = EffectPgDatabase$1<AnyRelations> | EffectPgDatabase<AnyRelations>;
|
|
14
|
+
type TransactionOf<D extends Database> = Parameters<Parameters<D["transaction"]>[0]>[0];
|
|
15
|
+
declare const makePgAuthenticationAuthorityServices: <Claims, Subject extends AnyPgTable, Credential extends AnyPgTable, Flow extends AnyPgTable, Pending extends AnyPgTable, NativeSubjectId>(database: Database, mapping: AuthenticationAuthorityMapping<Claims, Subject, Credential, Flow, Pending, NativeSubjectId>) => Effect.Effect<{
|
|
16
|
+
authenticationAuthority: {
|
|
17
|
+
capture: (subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">, credentialIds: readonly string[]) => Effect.Effect<{
|
|
18
|
+
subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
|
|
19
|
+
securityRevision: import("@yielded/auth/Sessions").SecurityRevision;
|
|
20
|
+
credentials: {
|
|
21
|
+
credentialId: any;
|
|
22
|
+
revision: any;
|
|
23
|
+
}[];
|
|
24
|
+
}, SessionUnavailable | import("@yielded/auth/Sessions").StaleAuthentication, never>;
|
|
25
|
+
requirements: (evidence: {
|
|
26
|
+
readonly revision: {
|
|
27
|
+
readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
|
|
28
|
+
readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
29
|
+
readonly credentials: readonly {
|
|
30
|
+
readonly credentialId: string;
|
|
31
|
+
readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
32
|
+
}[];
|
|
33
|
+
};
|
|
34
|
+
readonly flowId: string & import("effect/Brand").Brand<"effect-auth/AuthenticationFlowId">;
|
|
35
|
+
readonly bindingDigest: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
|
|
36
|
+
readonly proofs: readonly [{
|
|
37
|
+
readonly method: string;
|
|
38
|
+
readonly credentialId: string;
|
|
39
|
+
readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
|
|
40
|
+
readonly userVerified: boolean;
|
|
41
|
+
readonly phishingResistant: boolean;
|
|
42
|
+
readonly verifiedAt: import("effect/DateTime").Utc;
|
|
43
|
+
}, ...{
|
|
44
|
+
readonly method: string;
|
|
45
|
+
readonly credentialId: string;
|
|
46
|
+
readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
|
|
47
|
+
readonly userVerified: boolean;
|
|
48
|
+
readonly phishingResistant: boolean;
|
|
49
|
+
readonly verifiedAt: import("effect/DateTime").Utc;
|
|
50
|
+
}[]];
|
|
51
|
+
}) => Effect.Effect<{
|
|
52
|
+
readonly alternatives: readonly [{
|
|
53
|
+
readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
|
|
54
|
+
readonly userVerified: boolean;
|
|
55
|
+
readonly phishingResistant: boolean;
|
|
56
|
+
readonly minimumCredentials: number;
|
|
57
|
+
}, ...{
|
|
58
|
+
readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
|
|
59
|
+
readonly userVerified: boolean;
|
|
60
|
+
readonly phishingResistant: boolean;
|
|
61
|
+
readonly minimumCredentials: number;
|
|
62
|
+
}[]];
|
|
63
|
+
readonly maximumAgeMillis: number;
|
|
64
|
+
}, SessionUnavailable | import("@yielded/auth/Sessions").StaleAuthentication, never>;
|
|
65
|
+
approve: <A>(input: {
|
|
66
|
+
readonly evidence: import("@yielded/auth/Sessions").AuthenticationEvidence;
|
|
67
|
+
readonly now: import("effect/DateTime").Utc;
|
|
68
|
+
readonly expiresAt: import("effect/DateTime").Utc;
|
|
69
|
+
readonly absoluteExpiresAt: import("effect/DateTime").Utc;
|
|
70
|
+
readonly pending?: import("@yielded/auth/Sessions").PendingConsumption;
|
|
71
|
+
}, prepare: import("@yielded/auth/Sessions").PrepareSessionCommit<void, A>) => Effect.Effect<import("@yielded/auth/Hooks").PreparedCommit<A>, import("@yielded/auth/Sessions").PendingAuthenticationInvalid | SessionUnavailable | import("@yielded/auth/Sessions").StaleAuthentication, never>;
|
|
72
|
+
};
|
|
73
|
+
}, never, LifecycleHooks>;
|
|
74
|
+
declare const makePgPendingAuthenticationServices: <Claims, Subject extends AnyPgTable, Credential extends AnyPgTable, Pending extends AnyPgTable, Flow extends AnyPgTable, NativeSubjectId>(database: Database, mapping: PendingAuthenticationMapping<Claims, Subject, Credential, Pending, Flow, NativeSubjectId>) => Effect.Effect<{
|
|
75
|
+
pendingAuthentication: {
|
|
76
|
+
create: <A>(input: Omit<import("@yielded/auth/Sessions").PendingAuthenticationRecord<Claims>, "version">, now: import("effect/DateTime").Utc, prepare: import("@yielded/auth/Sessions").PrepareSessionCommit<import("@yielded/auth/Sessions").PendingAuthenticationRecord<Claims>, A>) => Effect.Effect<import("@yielded/auth/Hooks").PreparedCommit<A>, import("@yielded/auth/Sessions").SessionConflict | SessionUnavailable | import("@yielded/auth/Sessions").StaleAuthentication, never>;
|
|
77
|
+
context: (input: {
|
|
78
|
+
readonly digest: import("@yielded/auth/Schema").TokenDigest;
|
|
79
|
+
readonly now: import("effect/DateTime").Utc;
|
|
80
|
+
}) => Effect.Effect<Readonly<{
|
|
81
|
+
flowId: string & import("effect/Brand").Brand<"effect-auth/AuthenticationFlowId">;
|
|
82
|
+
bindingDigest: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
|
|
83
|
+
expiresAtMillis: number;
|
|
84
|
+
revision: Readonly<{
|
|
85
|
+
subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
|
|
86
|
+
securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
87
|
+
credentials: readonly Readonly<{
|
|
88
|
+
credentialId: string;
|
|
89
|
+
revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
90
|
+
}>[];
|
|
91
|
+
}>;
|
|
92
|
+
}>, import("@yielded/auth/Sessions").PendingAuthenticationInvalid | SessionUnavailable, never>;
|
|
93
|
+
read: (input: {
|
|
94
|
+
readonly digest: import("@yielded/auth/Schema").TokenDigest;
|
|
95
|
+
readonly bindingDigest: import("@yielded/auth/Schema").TokenDigest;
|
|
96
|
+
readonly now: import("effect/DateTime").Utc;
|
|
97
|
+
}) => Effect.Effect<import("@yielded/auth/Sessions").PendingAuthenticationRecord<Claims>, import("@yielded/auth/Sessions").PendingAuthenticationInvalid | SessionUnavailable, never>;
|
|
98
|
+
reject: <A>(input: {
|
|
99
|
+
readonly digest: import("@yielded/auth/Schema").TokenDigest;
|
|
100
|
+
readonly bindingDigest: import("@yielded/auth/Schema").TokenDigest;
|
|
101
|
+
readonly now: import("effect/DateTime").Utc;
|
|
102
|
+
}, prepare: import("@yielded/auth/Sessions").PrepareSessionCommit<{
|
|
103
|
+
readonly _tag: "Rejected";
|
|
104
|
+
}, A>) => Effect.Effect<import("@yielded/auth/Hooks").PreparedCommit<A>, SessionUnavailable, never>;
|
|
105
|
+
};
|
|
106
|
+
}, never, LifecycleHooks>;
|
|
107
|
+
declare const makePgStatefulSessionServices: <Claims, Subject extends AnyPgTable, Credential extends AnyPgTable, Session extends AnyPgTable, Flow extends AnyPgTable, Pending extends AnyPgTable, NativeSubjectId, NativeSessionId>(database: Database, mapping: StatefulSessionMapping<Claims, Subject, Credential, Session, Flow, Pending, NativeSubjectId, NativeSessionId>) => Effect.Effect<{
|
|
108
|
+
statefulSessionPersistence: {
|
|
109
|
+
establish: <A>(input: {
|
|
110
|
+
readonly session: Omit<import("@yielded/auth/Sessions").StatefulSessionRecord<Claims>, "sessionId" | "version">;
|
|
111
|
+
readonly evidence: import("@yielded/auth/Sessions").AuthenticationEvidence;
|
|
112
|
+
readonly pending?: import("@yielded/auth/Sessions").PendingConsumption;
|
|
113
|
+
readonly now: import("effect/DateTime").Utc;
|
|
114
|
+
}, prepare: import("@yielded/auth/Sessions").PrepareSessionCommit<import("@yielded/auth/Sessions").StatefulSessionRecord<Claims>, A>) => Effect.Effect<import("@yielded/auth/Hooks").PreparedCommit<A>, import("@yielded/auth/Sessions").PendingAuthenticationInvalid | import("@yielded/auth/Sessions").SessionConflict | SessionUnavailable | import("@yielded/auth/Sessions").StaleAuthentication, never>;
|
|
115
|
+
verify: (input: {
|
|
116
|
+
readonly digest: import("@yielded/auth/Schema").TokenDigest;
|
|
117
|
+
readonly now: import("effect/DateTime").Utc;
|
|
118
|
+
}) => Effect.Effect<import("@yielded/auth/Sessions").StatefulSessionRecord<Claims>, import("@yielded/auth/Sessions").SessionInvalid | SessionUnavailable, never>;
|
|
119
|
+
rotate: <A>(input: {
|
|
120
|
+
readonly sessionId: import("@yielded/auth/Sessions").SessionId;
|
|
121
|
+
readonly expectedDigest: import("@yielded/auth/Schema").TokenDigest;
|
|
122
|
+
readonly expectedVersion: import("@yielded/auth/Sessions").SecurityRevision;
|
|
123
|
+
readonly expectedSecurityRevision: import("@yielded/auth/Sessions").SecurityRevision;
|
|
124
|
+
readonly nextDigest: import("@yielded/auth/Schema").TokenDigest;
|
|
125
|
+
readonly nextCredentialVersion: import("@yielded/auth/Sessions").SessionCredentialVersion;
|
|
126
|
+
readonly nextExpiresAt: import("effect/DateTime").Utc;
|
|
127
|
+
readonly now: import("effect/DateTime").Utc;
|
|
128
|
+
}, prepare: import("@yielded/auth/Sessions").PrepareSessionCommit<import("@yielded/auth/Sessions").StatefulSessionRecord<Claims>, A>) => Effect.Effect<import("@yielded/auth/Hooks").PreparedCommit<A>, import("@yielded/auth/Sessions").SessionConflict | SessionUnavailable, never>;
|
|
129
|
+
revokeDigest: <A>(digest: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">, prepare: import("@yielded/auth/Sessions").PrepareSessionCommit<boolean, A>) => Effect.Effect<import("@yielded/auth/Hooks").PreparedCommit<A>, SessionUnavailable, never>;
|
|
130
|
+
revoke: <A>(input: {
|
|
131
|
+
readonly subjectId: import("@yielded/auth/Schema").SubjectId;
|
|
132
|
+
readonly sessionId: import("@yielded/auth/Sessions").SessionId;
|
|
133
|
+
readonly expectedSecurityRevision: import("@yielded/auth/Sessions").SecurityRevision;
|
|
134
|
+
}, prepare: import("@yielded/auth/Sessions").PrepareSessionCommit<void, A>) => Effect.Effect<import("@yielded/auth/Hooks").PreparedCommit<A>, SessionUnavailable | import("@yielded/auth/Sessions").StaleAuthentication, never>;
|
|
135
|
+
revokeAll: <A>(input: {
|
|
136
|
+
readonly subjectId: import("@yielded/auth/Schema").SubjectId;
|
|
137
|
+
readonly expectedSecurityRevision: import("@yielded/auth/Sessions").SecurityRevision;
|
|
138
|
+
}, prepare: import("@yielded/auth/Sessions").PrepareSessionCommit<void, A>) => Effect.Effect<import("@yielded/auth/Hooks").PreparedCommit<A>, SessionUnavailable | import("@yielded/auth/Sessions").StaleAuthentication, never>;
|
|
139
|
+
};
|
|
140
|
+
sessionRepository: {
|
|
141
|
+
list: (input: {
|
|
142
|
+
readonly subjectId: import("@yielded/auth/Schema").SubjectId;
|
|
143
|
+
readonly cursor?: string;
|
|
144
|
+
readonly limit: number;
|
|
145
|
+
readonly now: import("effect/DateTime").Utc;
|
|
146
|
+
}) => Effect.Effect<{
|
|
147
|
+
sessions: {
|
|
148
|
+
readonly sessionId: string & import("effect/Brand").Brand<"effect-auth/SessionId">;
|
|
149
|
+
readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
|
|
150
|
+
readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
151
|
+
readonly assurance: import("@yielded/auth/Operations").AuthenticationAssurance;
|
|
152
|
+
readonly issuedAt: import("effect/DateTime").Utc;
|
|
153
|
+
readonly expiresAt: import("effect/DateTime").Utc;
|
|
154
|
+
readonly absoluteExpiresAt: import("effect/DateTime").Utc;
|
|
155
|
+
}[];
|
|
156
|
+
nextCursor?: (string & import("effect/Brand").Brand<"effect-auth/SessionId">) | undefined;
|
|
157
|
+
}, SessionUnavailable, never>;
|
|
158
|
+
};
|
|
159
|
+
}, never, LifecycleHooks>;
|
|
160
|
+
declare const makePgSignedSessionValidityServices: <Subject extends AnyPgTable, Tombstone extends AnyPgTable, NativeSubjectId, NativeSessionId>(database: Database, mapping: SignedSessionValidityMapping<Subject, Tombstone, NativeSubjectId, NativeSessionId>) => Effect.Effect<{
|
|
161
|
+
signedSessionValidity: {
|
|
162
|
+
verify: (session: {
|
|
163
|
+
readonly sessionId: string & import("effect/Brand").Brand<"effect-auth/SessionId">;
|
|
164
|
+
readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
|
|
165
|
+
readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
166
|
+
readonly assurance: import("@yielded/auth/Operations").AuthenticationAssurance;
|
|
167
|
+
readonly issuedAt: import("effect/DateTime").Utc;
|
|
168
|
+
readonly expiresAt: import("effect/DateTime").Utc;
|
|
169
|
+
readonly absoluteExpiresAt: import("effect/DateTime").Utc;
|
|
170
|
+
}, now: import("effect/DateTime").Utc) => Effect.Effect<undefined, import("@yielded/auth/Sessions").SessionInvalid | SessionUnavailable, never>;
|
|
171
|
+
revoke: <A>(input: {
|
|
172
|
+
readonly subjectId: import("@yielded/auth/Schema").SubjectId;
|
|
173
|
+
readonly sessionId: import("@yielded/auth/Sessions").SessionId;
|
|
174
|
+
readonly absoluteExpiresAt: import("effect/DateTime").Utc;
|
|
175
|
+
readonly expectedSecurityRevision: import("@yielded/auth/Sessions").SecurityRevision;
|
|
176
|
+
}, prepare: import("@yielded/auth/Sessions").PrepareSessionCommit<void, A>) => Effect.Effect<import("@yielded/auth/Hooks").PreparedCommit<A>, SessionUnavailable | import("@yielded/auth/Sessions").StaleAuthentication, never>;
|
|
177
|
+
revokeAll: <A>(input: {
|
|
178
|
+
readonly subjectId: import("@yielded/auth/Schema").SubjectId;
|
|
179
|
+
readonly expectedSecurityRevision: import("@yielded/auth/Sessions").SecurityRevision;
|
|
180
|
+
}, prepare: import("@yielded/auth/Sessions").PrepareSessionCommit<void, A>) => Effect.Effect<import("@yielded/auth/Hooks").PreparedCommit<A>, SessionUnavailable | import("@yielded/auth/Sessions").StaleAuthentication, never>;
|
|
181
|
+
};
|
|
182
|
+
}, never, LifecycleHooks>;
|
|
183
|
+
declare function coordinatePgAuthenticationAuthority<Claims, D extends Database, S extends AnyPgTable, C extends AnyPgTable, F extends AnyPgTable, P extends AnyPgTable, NativeId, A, E, R, DatabaseError, DatabaseRequirements>(acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>, options: {
|
|
184
|
+
readonly mapping: AuthenticationAuthorityMapping<Claims, S, C, F, P, NativeId>;
|
|
185
|
+
readonly transaction?: never;
|
|
186
|
+
}, body: Effect.Effect<A, E, R>): Effect.Effect<A, E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError, Exclude<R, AuthenticationAuthority> | LifecycleHooks | DatabaseRequirements>;
|
|
187
|
+
declare function coordinatePgAuthenticationAuthority<Claims, D extends Database, S extends AnyPgTable, C extends AnyPgTable, F extends AnyPgTable, P extends AnyPgTable, NativeId, A, E, R, DatabaseError, DatabaseRequirements, TxId, TxShape>(acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>, options: {
|
|
188
|
+
readonly mapping: AuthenticationAuthorityMapping<Claims, S, C, F, P, NativeId>;
|
|
189
|
+
readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
|
|
190
|
+
}, body: Effect.Effect<A, E, R>): Effect.Effect<A, E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError, Exclude<R, AuthenticationAuthority | TxId> | LifecycleHooks | DatabaseRequirements>;
|
|
191
|
+
declare function coordinatePgPendingAuthentication<TargetId, Claims, D extends Database, S extends AnyPgTable, C extends AnyPgTable, P extends AnyPgTable, F extends AnyPgTable, NativeId, A, E, R, DatabaseError, DatabaseRequirements>(acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>, options: {
|
|
192
|
+
readonly mapping: PendingAuthenticationMapping<NoInfer<Claims>, S, C, P, F, NativeId>;
|
|
193
|
+
readonly target: SuppliedService<TargetId, PendingAuthentication<Claims>>;
|
|
194
|
+
readonly transaction?: never;
|
|
195
|
+
}, body: Effect.Effect<A, E, R>): Effect.Effect<A, E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError, Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements>;
|
|
196
|
+
declare function coordinatePgPendingAuthentication<TargetId, Claims, D extends Database, S extends AnyPgTable, C extends AnyPgTable, P extends AnyPgTable, F extends AnyPgTable, NativeId, A, E, R, DatabaseError, DatabaseRequirements, TxId, TxShape>(acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>, options: {
|
|
197
|
+
readonly mapping: PendingAuthenticationMapping<NoInfer<Claims>, S, C, P, F, NativeId>;
|
|
198
|
+
readonly target: SuppliedService<TargetId, PendingAuthentication<Claims>>;
|
|
199
|
+
readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
|
|
200
|
+
}, body: Effect.Effect<A, E, R>): Effect.Effect<A, E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError, Exclude<R, TargetId | TxId> | LifecycleHooks | DatabaseRequirements>;
|
|
201
|
+
declare function coordinatePgStatefulSessions<PersistenceId, RepositoryId, Claims, D extends Database, S extends AnyPgTable, C extends AnyPgTable, Session extends AnyPgTable, F extends AnyPgTable, P extends AnyPgTable, NativeId, NativeSessionId, A, E, R, DatabaseError, DatabaseRequirements>(acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>, options: {
|
|
202
|
+
readonly mapping: StatefulSessionMapping<NoInfer<Claims>, S, C, Session, F, P, NativeId, NativeSessionId>;
|
|
203
|
+
readonly persistence: SuppliedService<PersistenceId, StatefulSessionPersistence<Claims>>;
|
|
204
|
+
readonly repository: SuppliedService<RepositoryId, SessionRepository>;
|
|
205
|
+
readonly transaction?: never;
|
|
206
|
+
}, body: Effect.Effect<A, E, R>): Effect.Effect<A, E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError, Exclude<R, PersistenceId | RepositoryId> | LifecycleHooks | DatabaseRequirements>;
|
|
207
|
+
declare function coordinatePgStatefulSessions<PersistenceId, RepositoryId, Claims, D extends Database, S extends AnyPgTable, C extends AnyPgTable, Session extends AnyPgTable, F extends AnyPgTable, P extends AnyPgTable, NativeId, NativeSessionId, A, E, R, DatabaseError, DatabaseRequirements, TxId, TxShape>(acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>, options: {
|
|
208
|
+
readonly mapping: StatefulSessionMapping<NoInfer<Claims>, S, C, Session, F, P, NativeId, NativeSessionId>;
|
|
209
|
+
readonly persistence: SuppliedService<PersistenceId, StatefulSessionPersistence<Claims>>;
|
|
210
|
+
readonly repository: SuppliedService<RepositoryId, SessionRepository>;
|
|
211
|
+
readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
|
|
212
|
+
}, body: Effect.Effect<A, E, R>): Effect.Effect<A, E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError, Exclude<R, PersistenceId | RepositoryId | TxId> | LifecycleHooks | DatabaseRequirements>;
|
|
213
|
+
declare function coordinatePgSignedSessionValidity<TargetId, D extends Database, S extends AnyPgTable, T extends AnyPgTable, NativeId, NativeSessionId, A, E, R, DatabaseError, DatabaseRequirements>(acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>, options: {
|
|
214
|
+
readonly mapping: SignedSessionValidityMapping<S, T, NativeId, NativeSessionId>;
|
|
215
|
+
readonly target: SuppliedService<TargetId, SignedSessionValidity>;
|
|
216
|
+
readonly transaction?: never;
|
|
217
|
+
}, body: Effect.Effect<A, E, R>): Effect.Effect<A, E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError, Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements>;
|
|
218
|
+
declare function coordinatePgSignedSessionValidity<TargetId, D extends Database, S extends AnyPgTable, T extends AnyPgTable, NativeId, NativeSessionId, A, E, R, DatabaseError, DatabaseRequirements, TxId, TxShape>(acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>, options: {
|
|
219
|
+
readonly mapping: SignedSessionValidityMapping<S, T, NativeId, NativeSessionId>;
|
|
220
|
+
readonly target: SuppliedService<TargetId, SignedSessionValidity>;
|
|
221
|
+
readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
|
|
222
|
+
}, body: Effect.Effect<A, E, R>): Effect.Effect<A, E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError, Exclude<R, TargetId | TxId> | LifecycleHooks | DatabaseRequirements>;
|
|
223
|
+
declare const makePgSessionStepUpServices: <Claims, Id, S extends AnyPgTable, C extends AnyPgTable, I extends AnyPgTable, Session extends AnyPgTable, T extends AnyPgTable, NativeId, NativeSessionId>(database: Database, mapping: SessionStepUpMapping<NoInfer<Claims>, S, C, I, Session, T, NativeId, NativeSessionId>, target: Context.Service<Id, SessionStepUpPersistence<Claims>>) => Effect.Effect<{
|
|
224
|
+
sessionStepUpPersistence: SessionStepUpPersistence<Claims>;
|
|
225
|
+
}, never, LifecycleHooks>;
|
|
226
|
+
declare function coordinatePgSessionStepUp<Claims, Id, S extends AnyPgTable, C extends AnyPgTable, I extends AnyPgTable, Session extends AnyPgTable, T extends AnyPgTable, NativeId, NativeSessionId, D extends Database, A, E, R, DatabaseError, DatabaseRequirements>(acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>, options: {
|
|
227
|
+
readonly mapping: SessionStepUpMapping<NoInfer<Claims>, S, C, I, Session, T, NativeId, NativeSessionId>;
|
|
228
|
+
readonly target: SuppliedService<Id, SessionStepUpPersistence<Claims>>;
|
|
229
|
+
readonly transaction?: never;
|
|
230
|
+
}, body: Effect.Effect<A, E, R>): Effect.Effect<A, E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError, Exclude<R, Id> | LifecycleHooks | DatabaseRequirements>;
|
|
231
|
+
declare function coordinatePgSessionStepUp<Claims, Id, S extends AnyPgTable, C extends AnyPgTable, I extends AnyPgTable, Session extends AnyPgTable, T extends AnyPgTable, NativeId, NativeSessionId, D extends Database, A, E, R, DatabaseError, DatabaseRequirements, TxId, TxShape>(acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>, options: {
|
|
232
|
+
readonly mapping: SessionStepUpMapping<NoInfer<Claims>, S, C, I, Session, T, NativeId, NativeSessionId>;
|
|
233
|
+
readonly target: SuppliedService<Id, SessionStepUpPersistence<Claims>>;
|
|
234
|
+
readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
|
|
235
|
+
}, body: Effect.Effect<A, E, R>): Effect.Effect<A, E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError, Exclude<R, Id | TxId> | LifecycleHooks | DatabaseRequirements>;
|
|
236
|
+
//#endregion
|
|
237
|
+
export { coordinatePgAuthenticationAuthority, coordinatePgPendingAuthentication, coordinatePgSessionStepUp, coordinatePgSignedSessionValidity, coordinatePgStatefulSessions, makePgAuthenticationAuthorityServices, makePgPendingAuthenticationServices, makePgSessionStepUpServices, makePgSignedSessionValidityServices, makePgStatefulSessionServices };
|
|
238
|
+
//# sourceMappingURL=pg-sessions.d.mts.map
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { coordinateTargetAuthenticationAuthority, coordinateTargetPendingAuthentication, coordinateTargetSessionStepUp, coordinateTargetSignedSessionValidity, coordinateTargetStatefulSessions, makeTargetAuthenticationAuthorityServices, makeTargetPendingAuthenticationServices, makeTargetSessionStepUpServices, makeTargetSignedSessionValidityServices, makeTargetStatefulSessionServices, sqlClientSessionStandaloneGuard } from "./session-target.mjs";
|
|
2
|
+
import { Context, Effect } from "effect";
|
|
3
|
+
import { AuthenticationAuthority } from "@yielded/auth/Sessions";
|
|
4
|
+
//#region src/drizzle/pg-sessions.ts
|
|
5
|
+
const configuration = (database) => ({
|
|
6
|
+
mode: "interactive",
|
|
7
|
+
locking: true,
|
|
8
|
+
standaloneGuard: sqlClientSessionStandaloneGuard(database)
|
|
9
|
+
});
|
|
10
|
+
const makePgAuthenticationAuthorityServices = (database, mapping) => makeTargetAuthenticationAuthorityServices(database, mapping, configuration(database));
|
|
11
|
+
const makePgPendingAuthenticationServices = (database, mapping) => makeTargetPendingAuthenticationServices(database, mapping, configuration(database));
|
|
12
|
+
const makePgStatefulSessionServices = (database, mapping) => makeTargetStatefulSessionServices(database, mapping, configuration(database));
|
|
13
|
+
const makePgSignedSessionValidityServices = (database, mapping) => makeTargetSignedSessionValidityServices(database, mapping, configuration(database));
|
|
14
|
+
function coordinatePgAuthenticationAuthority(acquire, options, body) {
|
|
15
|
+
return Effect.flatMap(acquire, (database) => coordinateTargetAuthenticationAuthority(database, options.mapping, configuration(database), (transaction, services) => {
|
|
16
|
+
const provided = Context.make(AuthenticationAuthority, services.authenticationAuthority);
|
|
17
|
+
const work = Effect.provideContext(body, provided);
|
|
18
|
+
return options.transaction === void 0 ? work : Effect.provideService(work, options.transaction, options.transaction.of(transaction));
|
|
19
|
+
}));
|
|
20
|
+
}
|
|
21
|
+
function coordinatePgPendingAuthentication(acquire, options, body) {
|
|
22
|
+
return Effect.flatMap(acquire, (database) => coordinateTargetPendingAuthentication(database, options.mapping, configuration(database), (transaction, services) => {
|
|
23
|
+
const provided = Context.make(options.target, services.pendingAuthentication);
|
|
24
|
+
const work = Effect.provideContext(body, provided);
|
|
25
|
+
return options.transaction === void 0 ? work : Effect.provideService(work, options.transaction, options.transaction.of(transaction));
|
|
26
|
+
}));
|
|
27
|
+
}
|
|
28
|
+
function coordinatePgStatefulSessions(acquire, options, body) {
|
|
29
|
+
return Effect.flatMap(acquire, (database) => coordinateTargetStatefulSessions(database, options.mapping, configuration(database), (transaction, services) => {
|
|
30
|
+
const provided = Context.make(options.persistence, services.statefulSessionPersistence).pipe(Context.add(options.repository, services.sessionRepository));
|
|
31
|
+
const work = Effect.provideContext(body, provided);
|
|
32
|
+
return options.transaction === void 0 ? work : Effect.provideService(work, options.transaction, options.transaction.of(transaction));
|
|
33
|
+
}));
|
|
34
|
+
}
|
|
35
|
+
function coordinatePgSignedSessionValidity(acquire, options, body) {
|
|
36
|
+
return Effect.flatMap(acquire, (database) => coordinateTargetSignedSessionValidity(database, options.mapping, configuration(database), (transaction, services) => {
|
|
37
|
+
const provided = Context.make(options.target, services.signedSessionValidity);
|
|
38
|
+
const work = Effect.provideContext(body, provided);
|
|
39
|
+
return options.transaction === void 0 ? work : Effect.provideService(work, options.transaction, options.transaction.of(transaction));
|
|
40
|
+
}));
|
|
41
|
+
}
|
|
42
|
+
const makePgSessionStepUpServices = (database, mapping, target) => makeTargetSessionStepUpServices(database, mapping, target, configuration(database));
|
|
43
|
+
function coordinatePgSessionStepUp(acquire, options, body) {
|
|
44
|
+
return Effect.flatMap(acquire, (database) => coordinateTargetSessionStepUp(database, options.mapping, options.target, configuration(database), (transaction, services) => {
|
|
45
|
+
const provided = Context.make(options.target, services.sessionStepUpPersistence);
|
|
46
|
+
const work = Effect.provideContext(body, provided);
|
|
47
|
+
return options.transaction === void 0 ? work : Effect.provideService(work, options.transaction, options.transaction.of(transaction));
|
|
48
|
+
}));
|
|
49
|
+
}
|
|
50
|
+
//#endregion
|
|
51
|
+
export { coordinatePgAuthenticationAuthority, coordinatePgPendingAuthentication, coordinatePgSessionStepUp, coordinatePgSignedSessionValidity, coordinatePgStatefulSessions, makePgAuthenticationAuthorityServices, makePgPendingAuthenticationServices, makePgSessionStepUpServices, makePgSignedSessionValidityServices, makePgStatefulSessionServices };
|
|
52
|
+
|
|
53
|
+
//# sourceMappingURL=pg-sessions.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pg-sessions.mjs","names":[],"sources":["../../src/drizzle/pg-sessions.ts"],"sourcesContent":["import type { LifecycleHooks, HookConfigurationError } from \"@yielded/auth/Hooks\";\nimport {\n AuthenticationAuthority,\n type SessionUnavailable,\n type PendingAuthentication,\n type SessionRepository,\n type SignedSessionValidity,\n type StatefulSessionPersistence,\n type SessionStepUpPersistence,\n} from \"@yielded/auth/Sessions\";\nimport type { AnyRelations } from \"drizzle-orm\";\nimport type { EffectPgDatabase as PgliteDatabase } from \"drizzle-orm/effect-pglite\";\nimport type { EffectPgDatabase as PostgresDatabase } from \"drizzle-orm/effect-postgres\";\nimport type { AnyPgTable } from \"drizzle-orm/pg-core\";\nimport { Effect, Context } from \"effect\";\nimport type { SqlError } from \"effect/unstable/sql/SqlError\";\n\nimport type {\n AuthenticationAuthorityMapping,\n PendingAuthenticationMapping,\n SignedSessionValidityMapping,\n StatefulSessionMapping,\n} from \"./session-model\";\nimport {\n coordinateTargetAuthenticationAuthority,\n coordinateTargetPendingAuthentication,\n coordinateTargetSignedSessionValidity,\n coordinateTargetStatefulSessions,\n makeTargetAuthenticationAuthorityServices,\n makeTargetPendingAuthenticationServices,\n makeTargetSignedSessionValidityServices,\n makeTargetStatefulSessionServices,\n sqlClientSessionStandaloneGuard,\n makeTargetSessionStepUpServices,\n coordinateTargetSessionStepUp,\n} from \"./session-target\";\nimport type { SuppliedService } from \"./SuppliedService\";\n\ntype Database = PostgresDatabase<AnyRelations> | PgliteDatabase<AnyRelations>;\ntype TransactionOf<D extends Database> = Parameters<Parameters<D[\"transaction\"]>[0]>[0];\n\nconst configuration = (database: Database) => ({\n mode: \"interactive\" as const,\n locking: true,\n standaloneGuard: sqlClientSessionStandaloneGuard(database),\n});\n\nexport const makePgAuthenticationAuthorityServices = <\n Claims,\n Subject extends AnyPgTable,\n Credential extends AnyPgTable,\n Flow extends AnyPgTable,\n Pending extends AnyPgTable,\n NativeSubjectId,\n>(\n database: Database,\n mapping: AuthenticationAuthorityMapping<\n Claims,\n Subject,\n Credential,\n Flow,\n Pending,\n NativeSubjectId\n >,\n) => makeTargetAuthenticationAuthorityServices<Claims>(database, mapping, configuration(database));\n\nexport const makePgPendingAuthenticationServices = <\n Claims,\n Subject extends AnyPgTable,\n Credential extends AnyPgTable,\n Pending extends AnyPgTable,\n Flow extends AnyPgTable,\n NativeSubjectId,\n>(\n database: Database,\n mapping: PendingAuthenticationMapping<\n Claims,\n Subject,\n Credential,\n Pending,\n Flow,\n NativeSubjectId\n >,\n) => makeTargetPendingAuthenticationServices<Claims>(database, mapping, configuration(database));\n\nexport const makePgStatefulSessionServices = <\n Claims,\n Subject extends AnyPgTable,\n Credential extends AnyPgTable,\n Session extends AnyPgTable,\n Flow extends AnyPgTable,\n Pending extends AnyPgTable,\n NativeSubjectId,\n NativeSessionId,\n>(\n database: Database,\n mapping: StatefulSessionMapping<\n Claims,\n Subject,\n Credential,\n Session,\n Flow,\n Pending,\n NativeSubjectId,\n NativeSessionId\n >,\n) => makeTargetStatefulSessionServices<Claims>(database, mapping, configuration(database));\n\nexport const makePgSignedSessionValidityServices = <\n Subject extends AnyPgTable,\n Tombstone extends AnyPgTable,\n NativeSubjectId,\n NativeSessionId,\n>(\n database: Database,\n mapping: SignedSessionValidityMapping<Subject, Tombstone, NativeSubjectId, NativeSessionId>,\n) => makeTargetSignedSessionValidityServices(database, mapping, configuration(database));\n\nexport function coordinatePgAuthenticationAuthority<\n Claims,\n D extends Database,\n S extends AnyPgTable,\n C extends AnyPgTable,\n F extends AnyPgTable,\n P extends AnyPgTable,\n NativeId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: AuthenticationAuthorityMapping<Claims, S, C, F, P, NativeId>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, AuthenticationAuthority> | LifecycleHooks | DatabaseRequirements\n>;\n\nexport function coordinatePgAuthenticationAuthority<\n Claims,\n D extends Database,\n S extends AnyPgTable,\n C extends AnyPgTable,\n F extends AnyPgTable,\n P extends AnyPgTable,\n NativeId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: AuthenticationAuthorityMapping<Claims, S, C, F, P, NativeId>;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, AuthenticationAuthority | TxId> | LifecycleHooks | DatabaseRequirements\n>;\n\nexport function coordinatePgAuthenticationAuthority<\n Claims,\n D extends Database,\n S extends AnyPgTable,\n C extends AnyPgTable,\n F extends AnyPgTable,\n P extends AnyPgTable,\n NativeId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: AuthenticationAuthorityMapping<Claims, S, C, F, P, NativeId>;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, AuthenticationAuthority> | LifecycleHooks | DatabaseRequirements\n> {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetAuthenticationAuthority<\n Claims,\n TransactionOf<D>,\n A,\n E,\n Exclude<R, AuthenticationAuthority>\n >(\n database,\n options.mapping,\n configuration(database),\n (\n transaction: TransactionOf<D>,\n services: { readonly authenticationAuthority: AuthenticationAuthority[\"Service\"] },\n ) => {\n const provided = Context.make(AuthenticationAuthority, services.authenticationAuthority);\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ),\n );\n}\n\nexport function coordinatePgPendingAuthentication<\n TargetId,\n Claims,\n D extends Database,\n S extends AnyPgTable,\n C extends AnyPgTable,\n P extends AnyPgTable,\n F extends AnyPgTable,\n NativeId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PendingAuthenticationMapping<NoInfer<Claims>, S, C, P, F, NativeId>;\n readonly target: SuppliedService<TargetId, PendingAuthentication<Claims>>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements\n>;\n\nexport function coordinatePgPendingAuthentication<\n TargetId,\n Claims,\n D extends Database,\n S extends AnyPgTable,\n C extends AnyPgTable,\n P extends AnyPgTable,\n F extends AnyPgTable,\n NativeId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PendingAuthenticationMapping<NoInfer<Claims>, S, C, P, F, NativeId>;\n readonly target: SuppliedService<TargetId, PendingAuthentication<Claims>>;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, TargetId | TxId> | LifecycleHooks | DatabaseRequirements\n>;\n\nexport function coordinatePgPendingAuthentication<\n TargetId,\n Claims,\n D extends Database,\n S extends AnyPgTable,\n C extends AnyPgTable,\n P extends AnyPgTable,\n F extends AnyPgTable,\n NativeId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PendingAuthenticationMapping<NoInfer<Claims>, S, C, P, F, NativeId>;\n readonly target: SuppliedService<TargetId, PendingAuthentication<Claims>>;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements\n> {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetPendingAuthentication<Claims, TransactionOf<D>, A, E, Exclude<R, TargetId>>(\n database,\n options.mapping,\n configuration(database),\n (\n transaction: TransactionOf<D>,\n services: { readonly pendingAuthentication: PendingAuthentication<Claims> },\n ) => {\n const provided = Context.make(options.target, services.pendingAuthentication);\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ),\n );\n}\n\nexport function coordinatePgStatefulSessions<\n PersistenceId,\n RepositoryId,\n Claims,\n D extends Database,\n S extends AnyPgTable,\n C extends AnyPgTable,\n Session extends AnyPgTable,\n F extends AnyPgTable,\n P extends AnyPgTable,\n NativeId,\n NativeSessionId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: StatefulSessionMapping<\n NoInfer<Claims>,\n S,\n C,\n Session,\n F,\n P,\n NativeId,\n NativeSessionId\n >;\n readonly persistence: SuppliedService<PersistenceId, StatefulSessionPersistence<Claims>>;\n readonly repository: SuppliedService<RepositoryId, SessionRepository>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, PersistenceId | RepositoryId> | LifecycleHooks | DatabaseRequirements\n>;\n\nexport function coordinatePgStatefulSessions<\n PersistenceId,\n RepositoryId,\n Claims,\n D extends Database,\n S extends AnyPgTable,\n C extends AnyPgTable,\n Session extends AnyPgTable,\n F extends AnyPgTable,\n P extends AnyPgTable,\n NativeId,\n NativeSessionId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: StatefulSessionMapping<\n NoInfer<Claims>,\n S,\n C,\n Session,\n F,\n P,\n NativeId,\n NativeSessionId\n >;\n readonly persistence: SuppliedService<PersistenceId, StatefulSessionPersistence<Claims>>;\n readonly repository: SuppliedService<RepositoryId, SessionRepository>;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, PersistenceId | RepositoryId | TxId> | LifecycleHooks | DatabaseRequirements\n>;\n\nexport function coordinatePgStatefulSessions<\n PersistenceId,\n RepositoryId,\n Claims,\n D extends Database,\n S extends AnyPgTable,\n C extends AnyPgTable,\n Session extends AnyPgTable,\n F extends AnyPgTable,\n P extends AnyPgTable,\n NativeId,\n NativeSessionId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: StatefulSessionMapping<\n NoInfer<Claims>,\n S,\n C,\n Session,\n F,\n P,\n NativeId,\n NativeSessionId\n >;\n readonly persistence: SuppliedService<PersistenceId, StatefulSessionPersistence<Claims>>;\n readonly repository: SuppliedService<RepositoryId, SessionRepository>;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, PersistenceId | RepositoryId> | LifecycleHooks | DatabaseRequirements\n> {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetStatefulSessions<\n Claims,\n TransactionOf<D>,\n A,\n E,\n Exclude<R, PersistenceId | RepositoryId>\n >(\n database,\n options.mapping,\n configuration(database),\n (\n transaction: TransactionOf<D>,\n services: {\n readonly statefulSessionPersistence: StatefulSessionPersistence<Claims>;\n readonly sessionRepository: SessionRepository;\n },\n ) => {\n const provided = Context.make(\n options.persistence,\n services.statefulSessionPersistence,\n ).pipe(Context.add(options.repository, services.sessionRepository));\n\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ),\n );\n}\n\nexport function coordinatePgSignedSessionValidity<\n TargetId,\n D extends Database,\n S extends AnyPgTable,\n T extends AnyPgTable,\n NativeId,\n NativeSessionId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: SignedSessionValidityMapping<S, T, NativeId, NativeSessionId>;\n readonly target: SuppliedService<TargetId, SignedSessionValidity>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements\n>;\n\nexport function coordinatePgSignedSessionValidity<\n TargetId,\n D extends Database,\n S extends AnyPgTable,\n T extends AnyPgTable,\n NativeId,\n NativeSessionId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: SignedSessionValidityMapping<S, T, NativeId, NativeSessionId>;\n readonly target: SuppliedService<TargetId, SignedSessionValidity>;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, TargetId | TxId> | LifecycleHooks | DatabaseRequirements\n>;\n\nexport function coordinatePgSignedSessionValidity<\n TargetId,\n D extends Database,\n S extends AnyPgTable,\n T extends AnyPgTable,\n NativeId,\n NativeSessionId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: SignedSessionValidityMapping<S, T, NativeId, NativeSessionId>;\n readonly target: SuppliedService<TargetId, SignedSessionValidity>;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements\n> {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetSignedSessionValidity<TransactionOf<D>, A, E, Exclude<R, TargetId>>(\n database,\n options.mapping,\n configuration(database),\n (\n transaction: TransactionOf<D>,\n services: { readonly signedSessionValidity: SignedSessionValidity },\n ) => {\n const provided = Context.make(options.target, services.signedSessionValidity);\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ),\n );\n}\n\nimport type { SessionStepUpMapping } from \"./step-up-model\";\n\nexport const makePgSessionStepUpServices = <\n Claims,\n Id,\n S extends AnyPgTable,\n C extends AnyPgTable,\n I extends AnyPgTable,\n Session extends AnyPgTable,\n T extends AnyPgTable,\n NativeId,\n NativeSessionId,\n>(\n database: Database,\n mapping: SessionStepUpMapping<NoInfer<Claims>, S, C, I, Session, T, NativeId, NativeSessionId>,\n target: Context.Service<Id, SessionStepUpPersistence<Claims>>,\n) => makeTargetSessionStepUpServices(database, mapping, target, configuration(database));\n\nexport function coordinatePgSessionStepUp<\n Claims,\n Id,\n S extends AnyPgTable,\n C extends AnyPgTable,\n I extends AnyPgTable,\n Session extends AnyPgTable,\n T extends AnyPgTable,\n NativeId,\n NativeSessionId,\n D extends Database,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: SessionStepUpMapping<\n NoInfer<Claims>,\n S,\n C,\n I,\n Session,\n T,\n NativeId,\n NativeSessionId\n >;\n readonly target: SuppliedService<Id, SessionStepUpPersistence<Claims>>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, Id> | LifecycleHooks | DatabaseRequirements\n>;\n\nexport function coordinatePgSessionStepUp<\n Claims,\n Id,\n S extends AnyPgTable,\n C extends AnyPgTable,\n I extends AnyPgTable,\n Session extends AnyPgTable,\n T extends AnyPgTable,\n NativeId,\n NativeSessionId,\n D extends Database,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: SessionStepUpMapping<\n NoInfer<Claims>,\n S,\n C,\n I,\n Session,\n T,\n NativeId,\n NativeSessionId\n >;\n readonly target: SuppliedService<Id, SessionStepUpPersistence<Claims>>;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, Id | TxId> | LifecycleHooks | DatabaseRequirements\n>;\n\nexport function coordinatePgSessionStepUp<\n Claims,\n Id,\n S extends AnyPgTable,\n C extends AnyPgTable,\n I extends AnyPgTable,\n Session extends AnyPgTable,\n T extends AnyPgTable,\n NativeId,\n NativeSessionId,\n D extends Database,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: SessionStepUpMapping<\n NoInfer<Claims>,\n S,\n C,\n I,\n Session,\n T,\n NativeId,\n NativeSessionId\n >;\n readonly target: SuppliedService<Id, SessionStepUpPersistence<Claims>>;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, Id> | LifecycleHooks | DatabaseRequirements\n> {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetSessionStepUp<Claims, Id, TransactionOf<D>, A, E, Exclude<R, Id>>(\n database,\n options.mapping,\n options.target,\n configuration(database),\n (\n transaction: TransactionOf<D>,\n services: { readonly sessionStepUpPersistence: SessionStepUpPersistence<Claims> },\n ) => {\n const provided = Context.make(options.target, services.sessionStepUpPersistence);\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ),\n );\n}\n"],"mappings":";;;;AAyCA,MAAM,iBAAiB,cAAwB;CAC7C,MAAM;CACN,SAAS;CACT,iBAAiB,gCAAgC,QAAQ;AAC3D;AAEA,MAAa,yCAQX,UACA,YAQG,0CAAkD,UAAU,SAAS,cAAc,QAAQ,CAAC;AAEjG,MAAa,uCAQX,UACA,YAQG,wCAAgD,UAAU,SAAS,cAAc,QAAQ,CAAC;AAE/F,MAAa,iCAUX,UACA,YAUG,kCAA0C,UAAU,SAAS,cAAc,QAAQ,CAAC;AAEzF,MAAa,uCAMX,UACA,YACG,wCAAwC,UAAU,SAAS,cAAc,QAAQ,CAAC;AAwDvF,SAAgB,oCAgBd,SACA,SAIA,MAKA;CACA,OAAO,OAAO,QAAQ,UAAU,aAC9B,wCAOE,UACA,QAAQ,SACR,cAAc,QAAQ,IAEpB,aACA,aACG;EACH,MAAM,WAAW,QAAQ,KAAK,yBAAyB,SAAS,uBAAuB;EACvF,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;EAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;CAC1F,CACF,CACF;AACF;AA4DA,SAAgB,kCAiBd,SACA,SAKA,MAKA;CACA,OAAO,OAAO,QAAQ,UAAU,aAC9B,sCACE,UACA,QAAQ,SACR,cAAc,QAAQ,IAEpB,aACA,aACG;EACH,MAAM,WAAW,QAAQ,KAAK,QAAQ,QAAQ,SAAS,qBAAqB;EAC5E,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;EAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;CAC1F,CACF,CACF;AACF;AAsFA,SAAgB,6BAoBd,SACA,SAeA,MAKA;CACA,OAAO,OAAO,QAAQ,UAAU,aAC9B,iCAOE,UACA,QAAQ,SACR,cAAc,QAAQ,IAEpB,aACA,aAIG;EACH,MAAM,WAAW,QAAQ,KACvB,QAAQ,aACR,SAAS,0BACX,CAAC,CAAC,KAAK,QAAQ,IAAI,QAAQ,YAAY,SAAS,iBAAiB,CAAC;EAElE,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;EAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;CAC1F,CACF,CACF;AACF;AAwDA,SAAgB,kCAed,SACA,SAKA,MAKA;CACA,OAAO,OAAO,QAAQ,UAAU,aAC9B,sCACE,UACA,QAAQ,SACR,cAAc,QAAQ,IAEpB,aACA,aACG;EACH,MAAM,WAAW,QAAQ,KAAK,QAAQ,QAAQ,SAAS,qBAAqB;EAC5E,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;EAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;CAC1F,CACF,CACF;AACF;AAIA,MAAa,+BAWX,UACA,SACA,WACG,gCAAgC,UAAU,SAAS,QAAQ,cAAc,QAAQ,CAAC;AAkFvF,SAAgB,0BAmBd,SACA,SAcA,MAKA;CACA,OAAO,OAAO,QAAQ,UAAU,aAC9B,8BACE,UACA,QAAQ,SACR,QAAQ,QACR,cAAc,QAAQ,IAEpB,aACA,aACG;EACH,MAAM,WAAW,QAAQ,KAAK,QAAQ,QAAQ,SAAS,wBAAwB;EAC/E,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;EAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;CAC1F,CACF,CACF;AACF"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { AuthStoreTables, AuthTables, ChallengeConsumeDecision, ConsumeDecision, ExternalIdentityTables, OAuthStateTables, SubjectProvisioningTables } from "./model.mjs";
|
|
2
|
+
import { SuppliedService } from "./SuppliedService.mjs";
|
|
3
|
+
import { Context, Effect, Layer } from "effect";
|
|
4
|
+
import { AuthStoreDecisions } from "@yielded/auth/Persistence";
|
|
5
|
+
import { ConsumeChallenge, ConsumeRegistration, NewChallenge, NewRegistration, SubjectId, TokenDigest, VerifiedEmail } from "@yielded/auth/Schema";
|
|
6
|
+
import { ExternalIdentity, ExternalIdentityMutation, IdentityConflict, IdentityUnavailable, SubjectProvisioner, SubjectProvisioningInput } from "@yielded/auth/Identity";
|
|
7
|
+
import { AuthStore, EmailOtpRejected } from "@yielded/auth/AuthStore";
|
|
8
|
+
import { AuthStoreError, InvalidRegistration } from "@yielded/auth/Errors";
|
|
9
|
+
import { InvalidOAuthState, OAuthState, OAuthStateDecisions, OAuthStateStore } from "@yielded/auth/OAuth";
|
|
10
|
+
import { AnyRelations } from "drizzle-orm";
|
|
11
|
+
import { EffectPgDatabase } from "drizzle-orm/effect-pglite";
|
|
12
|
+
import { AnyPgTable } from "drizzle-orm/pg-core";
|
|
13
|
+
import { EffectPgDatabase as EffectPgDatabase$1 } from "drizzle-orm/effect-postgres";
|
|
14
|
+
import { SqlError } from "effect/unstable/sql/SqlError";
|
|
15
|
+
//#region src/drizzle/pg.d.ts
|
|
16
|
+
type Database = EffectPgDatabase$1<AnyRelations> | EffectPgDatabase<AnyRelations>;
|
|
17
|
+
type TransactionOf<D extends Database> = Parameters<Parameters<D["transaction"]>[0]>[0];
|
|
18
|
+
declare const makePgAuthStoreServices: <C extends AnyPgTable, R extends AnyPgTable>(database: Database, mapping: AuthStoreTables<C, R>) => {
|
|
19
|
+
readonly authStore: {
|
|
20
|
+
readonly issueChallenge: (input: NewChallenge) => Effect.Effect<void, import("@yielded/auth/AuthStore").IssueChallengeError>;
|
|
21
|
+
readonly consumeChallenge: (input: ConsumeChallenge) => Effect.Effect<VerifiedEmail, EmailOtpRejected | AuthStoreError>;
|
|
22
|
+
readonly issueRegistration: (input: NewRegistration) => Effect.Effect<void, AuthStoreError>;
|
|
23
|
+
readonly inspectRegistration: (tokenDigest: TokenDigest) => Effect.Effect<import("@yielded/auth/Schema").PendingRegistration, InvalidRegistration | AuthStoreError>;
|
|
24
|
+
readonly consumeRegistration: (input: ConsumeRegistration) => Effect.Effect<void, InvalidRegistration | AuthStoreError>;
|
|
25
|
+
};
|
|
26
|
+
readonly decisions: {
|
|
27
|
+
readonly consumeChallenge: (input: ConsumeChallenge) => Effect.Effect<ChallengeConsumeDecision, AuthStoreError, never>;
|
|
28
|
+
readonly consumeRegistration: (input: ConsumeRegistration) => Effect.Effect<ConsumeDecision<void>, AuthStoreError, never>;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
declare const makePgOAuthStateServices: <S extends AnyPgTable>(database: Database, mapping: OAuthStateTables<S>) => {
|
|
32
|
+
readonly oauthStateStore: {
|
|
33
|
+
readonly issue: (state: OAuthState) => Effect.Effect<void, AuthStoreError>;
|
|
34
|
+
readonly consume: (stateDigest: TokenDigest) => Effect.Effect<OAuthState, InvalidOAuthState | AuthStoreError>;
|
|
35
|
+
};
|
|
36
|
+
readonly decisions: {
|
|
37
|
+
readonly consumeOAuthState: (digest: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">) => Effect.Effect<ConsumeDecision<OAuthState>, AuthStoreError, never>;
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Owns the native outer commit. Keep rejection as a decision value inside the
|
|
42
|
+
* owner; interruption before commit rolls back. Retry an unknown commit outcome
|
|
43
|
+
* only with the same stable request identity.
|
|
44
|
+
*/
|
|
45
|
+
declare function coordinatePgAuthStoreTransaction<D extends Database, C extends AnyPgTable, R extends AnyPgTable, A, E, Requirements, DatabaseError, DatabaseRequirements>(acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>, options: {
|
|
46
|
+
readonly mapping: AuthStoreTables<C, R>;
|
|
47
|
+
readonly transaction?: never;
|
|
48
|
+
}, body: Effect.Effect<A, E, Requirements>): Effect.Effect<A, E | DatabaseError | SqlError, Exclude<Requirements, AuthStoreDecisions> | DatabaseRequirements>;
|
|
49
|
+
declare function coordinatePgAuthStoreTransaction<D extends Database, C extends AnyPgTable, R extends AnyPgTable, A, E, Requirements, DatabaseError, DatabaseRequirements, TxId, TxShape>(acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>, options: {
|
|
50
|
+
readonly mapping: AuthStoreTables<C, R>;
|
|
51
|
+
readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
|
|
52
|
+
}, body: Effect.Effect<A, E, Requirements>): Effect.Effect<A, E | DatabaseError | SqlError, Exclude<Requirements, AuthStoreDecisions | TxId> | DatabaseRequirements>;
|
|
53
|
+
declare function coordinatePgOAuthStateTransaction<D extends Database, S extends AnyPgTable, A, E, Requirements, DatabaseError, DatabaseRequirements>(acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>, options: {
|
|
54
|
+
readonly mapping: OAuthStateTables<S>;
|
|
55
|
+
readonly transaction?: never;
|
|
56
|
+
}, body: Effect.Effect<A, E, Requirements>): Effect.Effect<A, E | DatabaseError | SqlError, Exclude<Requirements, OAuthStateDecisions> | DatabaseRequirements>;
|
|
57
|
+
declare function coordinatePgOAuthStateTransaction<D extends Database, S extends AnyPgTable, A, E, Requirements, DatabaseError, DatabaseRequirements, TxId, TxShape>(acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>, options: {
|
|
58
|
+
readonly mapping: OAuthStateTables<S>;
|
|
59
|
+
readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
|
|
60
|
+
}, body: Effect.Effect<A, E, Requirements>): Effect.Effect<A, E | DatabaseError | SqlError, Exclude<Requirements, OAuthStateDecisions | TxId> | DatabaseRequirements>;
|
|
61
|
+
declare function coordinatePgAuthTransaction<D extends Database, C extends AnyPgTable, R extends AnyPgTable, S extends AnyPgTable, A, E, Requirements, DatabaseError, DatabaseRequirements>(acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>, options: {
|
|
62
|
+
readonly mapping: AuthTables<C, R, S>;
|
|
63
|
+
readonly transaction?: never;
|
|
64
|
+
}, body: Effect.Effect<A, E, Requirements>): Effect.Effect<A, E | DatabaseError | SqlError, Exclude<Requirements, AuthStoreDecisions | OAuthStateDecisions> | DatabaseRequirements>;
|
|
65
|
+
declare function coordinatePgAuthTransaction<D extends Database, C extends AnyPgTable, R extends AnyPgTable, S extends AnyPgTable, A, E, Requirements, DatabaseError, DatabaseRequirements, TxId, TxShape>(acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>, options: {
|
|
66
|
+
readonly mapping: AuthTables<C, R, S>;
|
|
67
|
+
readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
|
|
68
|
+
}, body: Effect.Effect<A, E, Requirements>): Effect.Effect<A, E | DatabaseError | SqlError, Exclude<Requirements, AuthStoreDecisions | OAuthStateDecisions | TxId> | DatabaseRequirements>;
|
|
69
|
+
declare const makePgSubjectProvisioningServices: <Subject extends AnyPgTable, Identifier extends AnyPgTable, Request extends AnyPgTable, NativeId>(database: Database, mapping: SubjectProvisioningTables<Subject, Identifier, Request, NativeId>) => {
|
|
70
|
+
readonly subjectProvisioner: {
|
|
71
|
+
readonly provision: (input: SubjectProvisioningInput) => Effect.Effect<import("@yielded/auth/Identity").ProvisioningResult, IdentityConflict | IdentityUnavailable>;
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
declare const makePgExternalIdentityServices: <Subject extends AnyPgTable, External extends AnyPgTable, NativeId>(database: Database, mapping: ExternalIdentityTables<Subject, External, NativeId>) => {
|
|
75
|
+
readonly externalIdentityMutation: {
|
|
76
|
+
readonly bind: (subjectId: SubjectId, identity: ExternalIdentity) => Effect.Effect<void, IdentityConflict | IdentityUnavailable>;
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
//#endregion
|
|
80
|
+
export { coordinatePgAuthStoreTransaction, coordinatePgAuthTransaction, coordinatePgOAuthStateTransaction, makePgAuthStoreServices, makePgExternalIdentityServices, makePgOAuthStateServices, makePgSubjectProvisioningServices };
|
|
81
|
+
//# sourceMappingURL=pg.d.mts.map
|