@yielded/auth-persistence-drizzle 0.1.0-beta.0
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 +17 -0
- package/dist/D1.d.mts +963 -0
- package/dist/D1.mjs +29 -0
- package/dist/D1.mjs.map +1 -0
- package/dist/Libsql.d.mts +2134 -0
- package/dist/Libsql.mjs +77 -0
- package/dist/Libsql.mjs.map +1 -0
- package/dist/Mysql2.d.mts +1817 -0
- package/dist/Mysql2.mjs +55 -0
- package/dist/Mysql2.mjs.map +1 -0
- package/dist/Pglite.d.mts +1821 -0
- package/dist/Pglite.mjs +53 -0
- package/dist/Pglite.mjs.map +1 -0
- package/dist/Postgres.d.mts +1821 -0
- package/dist/Postgres.mjs +53 -0
- package/dist/Postgres.mjs.map +1 -0
- package/dist/SqliteBun.d.mts +2129 -0
- package/dist/SqliteBun.mjs +70 -0
- package/dist/SqliteBun.mjs.map +1 -0
- package/dist/SqliteDo.d.mts +2181 -0
- package/dist/SqliteDo.mjs +105 -0
- package/dist/SqliteDo.mjs.map +1 -0
- package/dist/SqliteNode.d.mts +2129 -0
- package/dist/SqliteNode.mjs +70 -0
- package/dist/SqliteNode.mjs.map +1 -0
- package/dist/SqliteWasm.d.mts +2132 -0
- package/dist/SqliteWasm.mjs +70 -0
- package/dist/SqliteWasm.mjs.map +1 -0
- package/dist/_virtual/_rolldown/runtime.mjs +13 -0
- package/dist/drizzle/D1BatchStatements.d.mts +10 -0
- package/dist/drizzle/D1BatchStatements.mjs +8 -0
- package/dist/drizzle/D1BatchStatements.mjs.map +1 -0
- package/dist/drizzle/SuppliedService.d.mts +9 -0
- package/dist/drizzle/d1-emails.d.mts +61 -0
- package/dist/drizzle/d1-emails.mjs +578 -0
- package/dist/drizzle/d1-emails.mjs.map +1 -0
- package/dist/drizzle/d1-generated-statement.mjs +79 -0
- package/dist/drizzle/d1-generated-statement.mjs.map +1 -0
- package/dist/drizzle/d1-identity.d.mts +30 -0
- package/dist/drizzle/d1-identity.mjs +118 -0
- package/dist/drizzle/d1-identity.mjs.map +1 -0
- package/dist/drizzle/d1-oauth.d.mts +300 -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 +47 -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 +24 -0
- package/dist/drizzle/d1-password-prepared.mjs +460 -0
- package/dist/drizzle/d1-password-prepared.mjs.map +1 -0
- package/dist/drizzle/d1-passwords.d.mts +86 -0
- package/dist/drizzle/d1-passwords.mjs +1003 -0
- package/dist/drizzle/d1-passwords.mjs.map +1 -0
- package/dist/drizzle/d1-phone.d.mts +23 -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 +11 -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 +79 -0
- package/dist/drizzle/d1-proofs.mjs +829 -0
- package/dist/drizzle/d1-proofs.mjs.map +1 -0
- package/dist/drizzle/d1-sessions.d.mts +66 -0
- package/dist/drizzle/d1-sessions.mjs +965 -0
- package/dist/drizzle/d1-sessions.mjs.map +1 -0
- package/dist/drizzle/d1-totp.d.mts +23 -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 +30 -0
- package/dist/drizzle/email-model.mjs +2 -0
- package/dist/drizzle/email-registration.d.mts +29 -0
- package/dist/drizzle/email-registration.mjs +236 -0
- package/dist/drizzle/email-registration.mjs.map +1 -0
- package/dist/drizzle/email-sql.d.mts +1 -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 +19 -0
- package/dist/drizzle/email-target.mjs +72 -0
- package/dist/drizzle/email-target.mjs.map +1 -0
- package/dist/drizzle/model.d.mts +245 -0
- package/dist/drizzle/model.mjs +55 -0
- package/dist/drizzle/model.mjs.map +1 -0
- package/dist/drizzle/mysql-emails.d.mts +70 -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 +21 -0
- package/dist/drizzle/mysql-identity.mjs +93 -0
- package/dist/drizzle/mysql-identity.mjs.map +1 -0
- package/dist/drizzle/mysql-password-prepared.d.mts +29 -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 +85 -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 +74 -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 +91 -0
- package/dist/drizzle/mysql-sessions.mjs +53 -0
- package/dist/drizzle/mysql-sessions.mjs.map +1 -0
- package/dist/drizzle/mysql.d.mts +69 -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 +277 -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 +16 -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 +1954 -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 +752 -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 +22 -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 +461 -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 +10 -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 +5 -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 +109 -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 +43 -0
- package/dist/drizzle/passkey-model.mjs +8 -0
- package/dist/drizzle/passkey-model.mjs.map +1 -0
- package/dist/drizzle/passkey-registration-ceremony-model.d.mts +12 -0
- package/dist/drizzle/passkey-registration-ceremony-model.mjs +2 -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 +2 -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 +20 -0
- package/dist/drizzle/passkey-write-model.mjs +9 -0
- package/dist/drizzle/passkey-write-model.mjs.map +1 -0
- package/dist/drizzle/passkey-write-target.d.mts +5 -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 +24 -0
- package/dist/drizzle/password-model.mjs +2 -0
- package/dist/drizzle/password-prepared-model.d.mts +92 -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 +389 -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 +11 -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 +7 -0
- package/dist/drizzle/password-registration.mjs +134 -0
- package/dist/drizzle/password-registration.mjs.map +1 -0
- package/dist/drizzle/password-sql.d.mts +1 -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 +16 -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 +71 -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 +30 -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 +86 -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 +75 -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 +92 -0
- package/dist/drizzle/pg-sessions.mjs +53 -0
- package/dist/drizzle/pg-sessions.mjs.map +1 -0
- package/dist/drizzle/pg.d.mts +80 -0
- package/dist/drizzle/pg.mjs +289 -0
- package/dist/drizzle/pg.mjs.map +1 -0
- package/dist/drizzle/phone-model.d.mts +113 -0
- package/dist/drizzle/phone-model.mjs +39 -0
- package/dist/drizzle/phone-model.mjs.map +1 -0
- package/dist/drizzle/phone-state.mjs +14 -0
- package/dist/drizzle/phone-state.mjs.map +1 -0
- package/dist/drizzle/phone-target.d.mts +14 -0
- package/dist/drizzle/phone-target.mjs +168 -0
- package/dist/drizzle/phone-target.mjs.map +1 -0
- package/dist/drizzle/proof-model.d.mts +21 -0
- package/dist/drizzle/proof-model.mjs +2 -0
- package/dist/drizzle/proof-sql.d.mts +1 -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 +11 -0
- package/dist/drizzle/proof-target.mjs +36 -0
- package/dist/drizzle/proof-target.mjs.map +1 -0
- package/dist/drizzle/query-operations.mjs +27 -0
- package/dist/drizzle/query-operations.mjs.map +1 -0
- package/dist/drizzle/session-model.d.mts +31 -0
- package/dist/drizzle/session-model.mjs +2 -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 +27 -0
- package/dist/drizzle/session-target.mjs +46 -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 +90 -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 +77 -0
- package/dist/drizzle/sqlite.mjs +217 -0
- package/dist/drizzle/sqlite.mjs.map +1 -0
- package/dist/drizzle/standalone-guard.mjs +17 -0
- package/dist/drizzle/standalone-guard.mjs.map +1 -0
- package/dist/drizzle/step-up-model.d.mts +16 -0
- package/dist/drizzle/step-up-model.mjs +2 -0
- package/dist/drizzle/table-model.d.mts +11 -0
- package/dist/drizzle/totp-model.d.mts +82 -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 +37 -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 +14 -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 +2 -0
- package/dist/drizzle/transaction-execution.mjs +11 -0
- package/dist/drizzle/transaction-execution.mjs.map +1 -0
- package/dist/drizzle/transaction-mysql.mjs +47 -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 +27 -0
- package/dist/index.mjs +27 -0
- package/dist/internal/drizzle-migrations.mjs +19 -0
- package/dist/internal/drizzle-migrations.mjs.map +1 -0
- package/dist/internal/drizzle-postgres.mjs +37 -0
- package/dist/internal/drizzle-postgres.mjs.map +1 -0
- package/dist/internal/drizzle-sqlite.mjs +35 -0
- package/dist/internal/drizzle-sqlite.mjs.map +1 -0
- package/package.json +1 -0
- package/src/D1.ts +136 -0
- package/src/Libsql.ts +257 -0
- package/src/Mysql2.ts +184 -0
- package/src/Pglite.ts +174 -0
- package/src/Postgres.ts +174 -0
- package/src/SqliteBun.ts +258 -0
- package/src/SqliteDo.ts +473 -0
- package/src/SqliteNode.ts +259 -0
- package/src/SqliteWasm.ts +263 -0
- package/src/drizzle/D1BatchStatements.ts +10 -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 +202 -0
- package/src/drizzle/email-registration.ts +698 -0
- package/src/drizzle/email-sql.ts +25 -0
- package/src/drizzle/email-target.ts +243 -0
- package/src/drizzle/model.ts +459 -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 +4 -0
- package/src/drizzle/passkey-model.ts +153 -0
- package/src/drizzle/passkey-registration-ceremony-model.ts +32 -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 +103 -0
- package/src/drizzle/passkey-write-target.ts +9 -0
- package/src/drizzle/password-model.ts +169 -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 +363 -0
- package/src/drizzle/password-sql.ts +13 -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 +139 -0
- package/src/drizzle/proof-sql.ts +10 -0
- package/src/drizzle/proof-target.ts +122 -0
- package/src/drizzle/query-operations.ts +43 -0
- package/src/drizzle/session-model.ts +215 -0
- package/src/drizzle/session-sql.ts +14 -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 +32 -0
- package/src/drizzle/step-up-model.ts +73 -0
- package/src/drizzle/table-model.ts +9 -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 +13 -0
- package/src/drizzle/transaction-mysql.ts +106 -0
- package/src/drizzle/transaction-owner.ts +11 -0
- package/src/index.ts +378 -0
- package/src/internal/drizzle-migrations.ts +29 -0
- package/src/internal/drizzle-postgres.ts +83 -0
- package/src/internal/drizzle-sqlite.ts +81 -0
|
@@ -0,0 +1,750 @@
|
|
|
1
|
+
import type { LifecycleHooks, HookConfigurationError } from "@yielded/auth/Hooks";
|
|
2
|
+
import {
|
|
3
|
+
AuthenticationAuthority,
|
|
4
|
+
type SessionUnavailable,
|
|
5
|
+
type PendingAuthentication,
|
|
6
|
+
type SessionRepository,
|
|
7
|
+
type SignedSessionValidity,
|
|
8
|
+
type StatefulSessionPersistence,
|
|
9
|
+
type SessionStepUpPersistence,
|
|
10
|
+
} from "@yielded/auth/Sessions";
|
|
11
|
+
import type { AnyRelations } from "drizzle-orm";
|
|
12
|
+
import type { EffectPgDatabase as PgliteDatabase } from "drizzle-orm/effect-pglite";
|
|
13
|
+
import type { EffectPgDatabase as PostgresDatabase } from "drizzle-orm/effect-postgres";
|
|
14
|
+
import type { AnyPgTable } from "drizzle-orm/pg-core";
|
|
15
|
+
import { Effect, Context } from "effect";
|
|
16
|
+
import type { SqlError } from "effect/unstable/sql/SqlError";
|
|
17
|
+
|
|
18
|
+
import type {
|
|
19
|
+
AuthenticationAuthorityMapping,
|
|
20
|
+
PendingAuthenticationMapping,
|
|
21
|
+
SignedSessionValidityMapping,
|
|
22
|
+
StatefulSessionMapping,
|
|
23
|
+
} from "./session-model";
|
|
24
|
+
import {
|
|
25
|
+
coordinateTargetAuthenticationAuthority,
|
|
26
|
+
coordinateTargetPendingAuthentication,
|
|
27
|
+
coordinateTargetSignedSessionValidity,
|
|
28
|
+
coordinateTargetStatefulSessions,
|
|
29
|
+
makeTargetAuthenticationAuthorityServices,
|
|
30
|
+
makeTargetPendingAuthenticationServices,
|
|
31
|
+
makeTargetSignedSessionValidityServices,
|
|
32
|
+
makeTargetStatefulSessionServices,
|
|
33
|
+
sqlClientSessionStandaloneGuard,
|
|
34
|
+
makeTargetSessionStepUpServices,
|
|
35
|
+
coordinateTargetSessionStepUp,
|
|
36
|
+
} from "./session-target";
|
|
37
|
+
import type { SuppliedService } from "./SuppliedService";
|
|
38
|
+
|
|
39
|
+
type Database = PostgresDatabase<AnyRelations> | PgliteDatabase<AnyRelations>;
|
|
40
|
+
type TransactionOf<D extends Database> = Parameters<Parameters<D["transaction"]>[0]>[0];
|
|
41
|
+
|
|
42
|
+
const configuration = (database: Database) => ({
|
|
43
|
+
mode: "interactive" as const,
|
|
44
|
+
locking: true,
|
|
45
|
+
standaloneGuard: sqlClientSessionStandaloneGuard(database),
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
export const makePgAuthenticationAuthorityServices = <
|
|
49
|
+
Claims,
|
|
50
|
+
Subject extends AnyPgTable,
|
|
51
|
+
Credential extends AnyPgTable,
|
|
52
|
+
Flow extends AnyPgTable,
|
|
53
|
+
Pending extends AnyPgTable,
|
|
54
|
+
NativeSubjectId,
|
|
55
|
+
>(
|
|
56
|
+
database: Database,
|
|
57
|
+
mapping: AuthenticationAuthorityMapping<
|
|
58
|
+
Claims,
|
|
59
|
+
Subject,
|
|
60
|
+
Credential,
|
|
61
|
+
Flow,
|
|
62
|
+
Pending,
|
|
63
|
+
NativeSubjectId
|
|
64
|
+
>,
|
|
65
|
+
) => makeTargetAuthenticationAuthorityServices<Claims>(database, mapping, configuration(database));
|
|
66
|
+
|
|
67
|
+
export const makePgPendingAuthenticationServices = <
|
|
68
|
+
Claims,
|
|
69
|
+
Subject extends AnyPgTable,
|
|
70
|
+
Credential extends AnyPgTable,
|
|
71
|
+
Pending extends AnyPgTable,
|
|
72
|
+
Flow extends AnyPgTable,
|
|
73
|
+
NativeSubjectId,
|
|
74
|
+
>(
|
|
75
|
+
database: Database,
|
|
76
|
+
mapping: PendingAuthenticationMapping<
|
|
77
|
+
Claims,
|
|
78
|
+
Subject,
|
|
79
|
+
Credential,
|
|
80
|
+
Pending,
|
|
81
|
+
Flow,
|
|
82
|
+
NativeSubjectId
|
|
83
|
+
>,
|
|
84
|
+
) => makeTargetPendingAuthenticationServices<Claims>(database, mapping, configuration(database));
|
|
85
|
+
|
|
86
|
+
export const makePgStatefulSessionServices = <
|
|
87
|
+
Claims,
|
|
88
|
+
Subject extends AnyPgTable,
|
|
89
|
+
Credential extends AnyPgTable,
|
|
90
|
+
Session extends AnyPgTable,
|
|
91
|
+
Flow extends AnyPgTable,
|
|
92
|
+
Pending extends AnyPgTable,
|
|
93
|
+
NativeSubjectId,
|
|
94
|
+
NativeSessionId,
|
|
95
|
+
>(
|
|
96
|
+
database: Database,
|
|
97
|
+
mapping: StatefulSessionMapping<
|
|
98
|
+
Claims,
|
|
99
|
+
Subject,
|
|
100
|
+
Credential,
|
|
101
|
+
Session,
|
|
102
|
+
Flow,
|
|
103
|
+
Pending,
|
|
104
|
+
NativeSubjectId,
|
|
105
|
+
NativeSessionId
|
|
106
|
+
>,
|
|
107
|
+
) => makeTargetStatefulSessionServices<Claims>(database, mapping, configuration(database));
|
|
108
|
+
|
|
109
|
+
export const makePgSignedSessionValidityServices = <
|
|
110
|
+
Subject extends AnyPgTable,
|
|
111
|
+
Tombstone extends AnyPgTable,
|
|
112
|
+
NativeSubjectId,
|
|
113
|
+
NativeSessionId,
|
|
114
|
+
>(
|
|
115
|
+
database: Database,
|
|
116
|
+
mapping: SignedSessionValidityMapping<Subject, Tombstone, NativeSubjectId, NativeSessionId>,
|
|
117
|
+
) => makeTargetSignedSessionValidityServices(database, mapping, configuration(database));
|
|
118
|
+
|
|
119
|
+
export function coordinatePgAuthenticationAuthority<
|
|
120
|
+
Claims,
|
|
121
|
+
D extends Database,
|
|
122
|
+
S extends AnyPgTable,
|
|
123
|
+
C extends AnyPgTable,
|
|
124
|
+
F extends AnyPgTable,
|
|
125
|
+
P extends AnyPgTable,
|
|
126
|
+
NativeId,
|
|
127
|
+
A,
|
|
128
|
+
E,
|
|
129
|
+
R,
|
|
130
|
+
DatabaseError,
|
|
131
|
+
DatabaseRequirements,
|
|
132
|
+
>(
|
|
133
|
+
acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
|
|
134
|
+
options: {
|
|
135
|
+
readonly mapping: AuthenticationAuthorityMapping<Claims, S, C, F, P, NativeId>;
|
|
136
|
+
readonly transaction?: never;
|
|
137
|
+
},
|
|
138
|
+
body: Effect.Effect<A, E, R>,
|
|
139
|
+
): Effect.Effect<
|
|
140
|
+
A,
|
|
141
|
+
E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
142
|
+
Exclude<R, AuthenticationAuthority> | LifecycleHooks | DatabaseRequirements
|
|
143
|
+
>;
|
|
144
|
+
|
|
145
|
+
export function coordinatePgAuthenticationAuthority<
|
|
146
|
+
Claims,
|
|
147
|
+
D extends Database,
|
|
148
|
+
S extends AnyPgTable,
|
|
149
|
+
C extends AnyPgTable,
|
|
150
|
+
F extends AnyPgTable,
|
|
151
|
+
P extends AnyPgTable,
|
|
152
|
+
NativeId,
|
|
153
|
+
A,
|
|
154
|
+
E,
|
|
155
|
+
R,
|
|
156
|
+
DatabaseError,
|
|
157
|
+
DatabaseRequirements,
|
|
158
|
+
TxId,
|
|
159
|
+
TxShape,
|
|
160
|
+
>(
|
|
161
|
+
acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
|
|
162
|
+
options: {
|
|
163
|
+
readonly mapping: AuthenticationAuthorityMapping<Claims, S, C, F, P, NativeId>;
|
|
164
|
+
readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
|
|
165
|
+
},
|
|
166
|
+
body: Effect.Effect<A, E, R>,
|
|
167
|
+
): Effect.Effect<
|
|
168
|
+
A,
|
|
169
|
+
E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
170
|
+
Exclude<R, AuthenticationAuthority | TxId> | LifecycleHooks | DatabaseRequirements
|
|
171
|
+
>;
|
|
172
|
+
|
|
173
|
+
export function coordinatePgAuthenticationAuthority<
|
|
174
|
+
Claims,
|
|
175
|
+
D extends Database,
|
|
176
|
+
S extends AnyPgTable,
|
|
177
|
+
C extends AnyPgTable,
|
|
178
|
+
F extends AnyPgTable,
|
|
179
|
+
P extends AnyPgTable,
|
|
180
|
+
NativeId,
|
|
181
|
+
A,
|
|
182
|
+
E,
|
|
183
|
+
R,
|
|
184
|
+
DatabaseError,
|
|
185
|
+
DatabaseRequirements,
|
|
186
|
+
TxId,
|
|
187
|
+
TxShape,
|
|
188
|
+
>(
|
|
189
|
+
acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
|
|
190
|
+
options: {
|
|
191
|
+
readonly mapping: AuthenticationAuthorityMapping<Claims, S, C, F, P, NativeId>;
|
|
192
|
+
readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
|
|
193
|
+
},
|
|
194
|
+
body: Effect.Effect<A, E, R>,
|
|
195
|
+
): Effect.Effect<
|
|
196
|
+
A,
|
|
197
|
+
E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
198
|
+
Exclude<R, AuthenticationAuthority> | LifecycleHooks | DatabaseRequirements
|
|
199
|
+
> {
|
|
200
|
+
return Effect.flatMap(acquire, (database) =>
|
|
201
|
+
coordinateTargetAuthenticationAuthority<
|
|
202
|
+
Claims,
|
|
203
|
+
TransactionOf<D>,
|
|
204
|
+
A,
|
|
205
|
+
E,
|
|
206
|
+
Exclude<R, AuthenticationAuthority>
|
|
207
|
+
>(
|
|
208
|
+
database,
|
|
209
|
+
options.mapping,
|
|
210
|
+
configuration(database),
|
|
211
|
+
(
|
|
212
|
+
transaction: TransactionOf<D>,
|
|
213
|
+
services: { readonly authenticationAuthority: AuthenticationAuthority["Service"] },
|
|
214
|
+
) => {
|
|
215
|
+
const provided = Context.make(AuthenticationAuthority, services.authenticationAuthority);
|
|
216
|
+
const work = Effect.provideContext(body, provided);
|
|
217
|
+
|
|
218
|
+
return options.transaction === undefined
|
|
219
|
+
? work
|
|
220
|
+
: Effect.provideService(work, options.transaction, options.transaction.of(transaction));
|
|
221
|
+
},
|
|
222
|
+
),
|
|
223
|
+
);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
export function coordinatePgPendingAuthentication<
|
|
227
|
+
TargetId,
|
|
228
|
+
Claims,
|
|
229
|
+
D extends Database,
|
|
230
|
+
S extends AnyPgTable,
|
|
231
|
+
C extends AnyPgTable,
|
|
232
|
+
P extends AnyPgTable,
|
|
233
|
+
F extends AnyPgTable,
|
|
234
|
+
NativeId,
|
|
235
|
+
A,
|
|
236
|
+
E,
|
|
237
|
+
R,
|
|
238
|
+
DatabaseError,
|
|
239
|
+
DatabaseRequirements,
|
|
240
|
+
>(
|
|
241
|
+
acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
|
|
242
|
+
options: {
|
|
243
|
+
readonly mapping: PendingAuthenticationMapping<NoInfer<Claims>, S, C, P, F, NativeId>;
|
|
244
|
+
readonly target: SuppliedService<TargetId, PendingAuthentication<Claims>>;
|
|
245
|
+
readonly transaction?: never;
|
|
246
|
+
},
|
|
247
|
+
body: Effect.Effect<A, E, R>,
|
|
248
|
+
): Effect.Effect<
|
|
249
|
+
A,
|
|
250
|
+
E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
251
|
+
Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements
|
|
252
|
+
>;
|
|
253
|
+
|
|
254
|
+
export function coordinatePgPendingAuthentication<
|
|
255
|
+
TargetId,
|
|
256
|
+
Claims,
|
|
257
|
+
D extends Database,
|
|
258
|
+
S extends AnyPgTable,
|
|
259
|
+
C extends AnyPgTable,
|
|
260
|
+
P extends AnyPgTable,
|
|
261
|
+
F extends AnyPgTable,
|
|
262
|
+
NativeId,
|
|
263
|
+
A,
|
|
264
|
+
E,
|
|
265
|
+
R,
|
|
266
|
+
DatabaseError,
|
|
267
|
+
DatabaseRequirements,
|
|
268
|
+
TxId,
|
|
269
|
+
TxShape,
|
|
270
|
+
>(
|
|
271
|
+
acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
|
|
272
|
+
options: {
|
|
273
|
+
readonly mapping: PendingAuthenticationMapping<NoInfer<Claims>, S, C, P, F, NativeId>;
|
|
274
|
+
readonly target: SuppliedService<TargetId, PendingAuthentication<Claims>>;
|
|
275
|
+
readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
|
|
276
|
+
},
|
|
277
|
+
body: Effect.Effect<A, E, R>,
|
|
278
|
+
): Effect.Effect<
|
|
279
|
+
A,
|
|
280
|
+
E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
281
|
+
Exclude<R, TargetId | TxId> | LifecycleHooks | DatabaseRequirements
|
|
282
|
+
>;
|
|
283
|
+
|
|
284
|
+
export function coordinatePgPendingAuthentication<
|
|
285
|
+
TargetId,
|
|
286
|
+
Claims,
|
|
287
|
+
D extends Database,
|
|
288
|
+
S extends AnyPgTable,
|
|
289
|
+
C extends AnyPgTable,
|
|
290
|
+
P extends AnyPgTable,
|
|
291
|
+
F extends AnyPgTable,
|
|
292
|
+
NativeId,
|
|
293
|
+
A,
|
|
294
|
+
E,
|
|
295
|
+
R,
|
|
296
|
+
DatabaseError,
|
|
297
|
+
DatabaseRequirements,
|
|
298
|
+
TxId,
|
|
299
|
+
TxShape,
|
|
300
|
+
>(
|
|
301
|
+
acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
|
|
302
|
+
options: {
|
|
303
|
+
readonly mapping: PendingAuthenticationMapping<NoInfer<Claims>, S, C, P, F, NativeId>;
|
|
304
|
+
readonly target: SuppliedService<TargetId, PendingAuthentication<Claims>>;
|
|
305
|
+
readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
|
|
306
|
+
},
|
|
307
|
+
body: Effect.Effect<A, E, R>,
|
|
308
|
+
): Effect.Effect<
|
|
309
|
+
A,
|
|
310
|
+
E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
311
|
+
Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements
|
|
312
|
+
> {
|
|
313
|
+
return Effect.flatMap(acquire, (database) =>
|
|
314
|
+
coordinateTargetPendingAuthentication<Claims, TransactionOf<D>, A, E, Exclude<R, TargetId>>(
|
|
315
|
+
database,
|
|
316
|
+
options.mapping,
|
|
317
|
+
configuration(database),
|
|
318
|
+
(
|
|
319
|
+
transaction: TransactionOf<D>,
|
|
320
|
+
services: { readonly pendingAuthentication: PendingAuthentication<Claims> },
|
|
321
|
+
) => {
|
|
322
|
+
const provided = Context.make(options.target, services.pendingAuthentication);
|
|
323
|
+
const work = Effect.provideContext(body, provided);
|
|
324
|
+
|
|
325
|
+
return options.transaction === undefined
|
|
326
|
+
? work
|
|
327
|
+
: Effect.provideService(work, options.transaction, options.transaction.of(transaction));
|
|
328
|
+
},
|
|
329
|
+
),
|
|
330
|
+
);
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
export function coordinatePgStatefulSessions<
|
|
334
|
+
PersistenceId,
|
|
335
|
+
RepositoryId,
|
|
336
|
+
Claims,
|
|
337
|
+
D extends Database,
|
|
338
|
+
S extends AnyPgTable,
|
|
339
|
+
C extends AnyPgTable,
|
|
340
|
+
Session extends AnyPgTable,
|
|
341
|
+
F extends AnyPgTable,
|
|
342
|
+
P extends AnyPgTable,
|
|
343
|
+
NativeId,
|
|
344
|
+
NativeSessionId,
|
|
345
|
+
A,
|
|
346
|
+
E,
|
|
347
|
+
R,
|
|
348
|
+
DatabaseError,
|
|
349
|
+
DatabaseRequirements,
|
|
350
|
+
>(
|
|
351
|
+
acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
|
|
352
|
+
options: {
|
|
353
|
+
readonly mapping: StatefulSessionMapping<
|
|
354
|
+
NoInfer<Claims>,
|
|
355
|
+
S,
|
|
356
|
+
C,
|
|
357
|
+
Session,
|
|
358
|
+
F,
|
|
359
|
+
P,
|
|
360
|
+
NativeId,
|
|
361
|
+
NativeSessionId
|
|
362
|
+
>;
|
|
363
|
+
readonly persistence: SuppliedService<PersistenceId, StatefulSessionPersistence<Claims>>;
|
|
364
|
+
readonly repository: SuppliedService<RepositoryId, SessionRepository>;
|
|
365
|
+
readonly transaction?: never;
|
|
366
|
+
},
|
|
367
|
+
body: Effect.Effect<A, E, R>,
|
|
368
|
+
): Effect.Effect<
|
|
369
|
+
A,
|
|
370
|
+
E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
371
|
+
Exclude<R, PersistenceId | RepositoryId> | LifecycleHooks | DatabaseRequirements
|
|
372
|
+
>;
|
|
373
|
+
|
|
374
|
+
export function coordinatePgStatefulSessions<
|
|
375
|
+
PersistenceId,
|
|
376
|
+
RepositoryId,
|
|
377
|
+
Claims,
|
|
378
|
+
D extends Database,
|
|
379
|
+
S extends AnyPgTable,
|
|
380
|
+
C extends AnyPgTable,
|
|
381
|
+
Session extends AnyPgTable,
|
|
382
|
+
F extends AnyPgTable,
|
|
383
|
+
P extends AnyPgTable,
|
|
384
|
+
NativeId,
|
|
385
|
+
NativeSessionId,
|
|
386
|
+
A,
|
|
387
|
+
E,
|
|
388
|
+
R,
|
|
389
|
+
DatabaseError,
|
|
390
|
+
DatabaseRequirements,
|
|
391
|
+
TxId,
|
|
392
|
+
TxShape,
|
|
393
|
+
>(
|
|
394
|
+
acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
|
|
395
|
+
options: {
|
|
396
|
+
readonly mapping: StatefulSessionMapping<
|
|
397
|
+
NoInfer<Claims>,
|
|
398
|
+
S,
|
|
399
|
+
C,
|
|
400
|
+
Session,
|
|
401
|
+
F,
|
|
402
|
+
P,
|
|
403
|
+
NativeId,
|
|
404
|
+
NativeSessionId
|
|
405
|
+
>;
|
|
406
|
+
readonly persistence: SuppliedService<PersistenceId, StatefulSessionPersistence<Claims>>;
|
|
407
|
+
readonly repository: SuppliedService<RepositoryId, SessionRepository>;
|
|
408
|
+
readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
|
|
409
|
+
},
|
|
410
|
+
body: Effect.Effect<A, E, R>,
|
|
411
|
+
): Effect.Effect<
|
|
412
|
+
A,
|
|
413
|
+
E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
414
|
+
Exclude<R, PersistenceId | RepositoryId | TxId> | LifecycleHooks | DatabaseRequirements
|
|
415
|
+
>;
|
|
416
|
+
|
|
417
|
+
export function coordinatePgStatefulSessions<
|
|
418
|
+
PersistenceId,
|
|
419
|
+
RepositoryId,
|
|
420
|
+
Claims,
|
|
421
|
+
D extends Database,
|
|
422
|
+
S extends AnyPgTable,
|
|
423
|
+
C extends AnyPgTable,
|
|
424
|
+
Session extends AnyPgTable,
|
|
425
|
+
F extends AnyPgTable,
|
|
426
|
+
P extends AnyPgTable,
|
|
427
|
+
NativeId,
|
|
428
|
+
NativeSessionId,
|
|
429
|
+
A,
|
|
430
|
+
E,
|
|
431
|
+
R,
|
|
432
|
+
DatabaseError,
|
|
433
|
+
DatabaseRequirements,
|
|
434
|
+
TxId,
|
|
435
|
+
TxShape,
|
|
436
|
+
>(
|
|
437
|
+
acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
|
|
438
|
+
options: {
|
|
439
|
+
readonly mapping: StatefulSessionMapping<
|
|
440
|
+
NoInfer<Claims>,
|
|
441
|
+
S,
|
|
442
|
+
C,
|
|
443
|
+
Session,
|
|
444
|
+
F,
|
|
445
|
+
P,
|
|
446
|
+
NativeId,
|
|
447
|
+
NativeSessionId
|
|
448
|
+
>;
|
|
449
|
+
readonly persistence: SuppliedService<PersistenceId, StatefulSessionPersistence<Claims>>;
|
|
450
|
+
readonly repository: SuppliedService<RepositoryId, SessionRepository>;
|
|
451
|
+
readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
|
|
452
|
+
},
|
|
453
|
+
body: Effect.Effect<A, E, R>,
|
|
454
|
+
): Effect.Effect<
|
|
455
|
+
A,
|
|
456
|
+
E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
457
|
+
Exclude<R, PersistenceId | RepositoryId> | LifecycleHooks | DatabaseRequirements
|
|
458
|
+
> {
|
|
459
|
+
return Effect.flatMap(acquire, (database) =>
|
|
460
|
+
coordinateTargetStatefulSessions<
|
|
461
|
+
Claims,
|
|
462
|
+
TransactionOf<D>,
|
|
463
|
+
A,
|
|
464
|
+
E,
|
|
465
|
+
Exclude<R, PersistenceId | RepositoryId>
|
|
466
|
+
>(
|
|
467
|
+
database,
|
|
468
|
+
options.mapping,
|
|
469
|
+
configuration(database),
|
|
470
|
+
(
|
|
471
|
+
transaction: TransactionOf<D>,
|
|
472
|
+
services: {
|
|
473
|
+
readonly statefulSessionPersistence: StatefulSessionPersistence<Claims>;
|
|
474
|
+
readonly sessionRepository: SessionRepository;
|
|
475
|
+
},
|
|
476
|
+
) => {
|
|
477
|
+
const provided = Context.make(
|
|
478
|
+
options.persistence,
|
|
479
|
+
services.statefulSessionPersistence,
|
|
480
|
+
).pipe(Context.add(options.repository, services.sessionRepository));
|
|
481
|
+
|
|
482
|
+
const work = Effect.provideContext(body, provided);
|
|
483
|
+
|
|
484
|
+
return options.transaction === undefined
|
|
485
|
+
? work
|
|
486
|
+
: Effect.provideService(work, options.transaction, options.transaction.of(transaction));
|
|
487
|
+
},
|
|
488
|
+
),
|
|
489
|
+
);
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
export function coordinatePgSignedSessionValidity<
|
|
493
|
+
TargetId,
|
|
494
|
+
D extends Database,
|
|
495
|
+
S extends AnyPgTable,
|
|
496
|
+
T extends AnyPgTable,
|
|
497
|
+
NativeId,
|
|
498
|
+
NativeSessionId,
|
|
499
|
+
A,
|
|
500
|
+
E,
|
|
501
|
+
R,
|
|
502
|
+
DatabaseError,
|
|
503
|
+
DatabaseRequirements,
|
|
504
|
+
>(
|
|
505
|
+
acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
|
|
506
|
+
options: {
|
|
507
|
+
readonly mapping: SignedSessionValidityMapping<S, T, NativeId, NativeSessionId>;
|
|
508
|
+
readonly target: SuppliedService<TargetId, SignedSessionValidity>;
|
|
509
|
+
readonly transaction?: never;
|
|
510
|
+
},
|
|
511
|
+
body: Effect.Effect<A, E, R>,
|
|
512
|
+
): Effect.Effect<
|
|
513
|
+
A,
|
|
514
|
+
E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
515
|
+
Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements
|
|
516
|
+
>;
|
|
517
|
+
|
|
518
|
+
export function coordinatePgSignedSessionValidity<
|
|
519
|
+
TargetId,
|
|
520
|
+
D extends Database,
|
|
521
|
+
S extends AnyPgTable,
|
|
522
|
+
T extends AnyPgTable,
|
|
523
|
+
NativeId,
|
|
524
|
+
NativeSessionId,
|
|
525
|
+
A,
|
|
526
|
+
E,
|
|
527
|
+
R,
|
|
528
|
+
DatabaseError,
|
|
529
|
+
DatabaseRequirements,
|
|
530
|
+
TxId,
|
|
531
|
+
TxShape,
|
|
532
|
+
>(
|
|
533
|
+
acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
|
|
534
|
+
options: {
|
|
535
|
+
readonly mapping: SignedSessionValidityMapping<S, T, NativeId, NativeSessionId>;
|
|
536
|
+
readonly target: SuppliedService<TargetId, SignedSessionValidity>;
|
|
537
|
+
readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
|
|
538
|
+
},
|
|
539
|
+
body: Effect.Effect<A, E, R>,
|
|
540
|
+
): Effect.Effect<
|
|
541
|
+
A,
|
|
542
|
+
E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
543
|
+
Exclude<R, TargetId | TxId> | LifecycleHooks | DatabaseRequirements
|
|
544
|
+
>;
|
|
545
|
+
|
|
546
|
+
export function coordinatePgSignedSessionValidity<
|
|
547
|
+
TargetId,
|
|
548
|
+
D extends Database,
|
|
549
|
+
S extends AnyPgTable,
|
|
550
|
+
T extends AnyPgTable,
|
|
551
|
+
NativeId,
|
|
552
|
+
NativeSessionId,
|
|
553
|
+
A,
|
|
554
|
+
E,
|
|
555
|
+
R,
|
|
556
|
+
DatabaseError,
|
|
557
|
+
DatabaseRequirements,
|
|
558
|
+
TxId,
|
|
559
|
+
TxShape,
|
|
560
|
+
>(
|
|
561
|
+
acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
|
|
562
|
+
options: {
|
|
563
|
+
readonly mapping: SignedSessionValidityMapping<S, T, NativeId, NativeSessionId>;
|
|
564
|
+
readonly target: SuppliedService<TargetId, SignedSessionValidity>;
|
|
565
|
+
readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
|
|
566
|
+
},
|
|
567
|
+
body: Effect.Effect<A, E, R>,
|
|
568
|
+
): Effect.Effect<
|
|
569
|
+
A,
|
|
570
|
+
E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
571
|
+
Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements
|
|
572
|
+
> {
|
|
573
|
+
return Effect.flatMap(acquire, (database) =>
|
|
574
|
+
coordinateTargetSignedSessionValidity<TransactionOf<D>, A, E, Exclude<R, TargetId>>(
|
|
575
|
+
database,
|
|
576
|
+
options.mapping,
|
|
577
|
+
configuration(database),
|
|
578
|
+
(
|
|
579
|
+
transaction: TransactionOf<D>,
|
|
580
|
+
services: { readonly signedSessionValidity: SignedSessionValidity },
|
|
581
|
+
) => {
|
|
582
|
+
const provided = Context.make(options.target, services.signedSessionValidity);
|
|
583
|
+
const work = Effect.provideContext(body, provided);
|
|
584
|
+
|
|
585
|
+
return options.transaction === undefined
|
|
586
|
+
? work
|
|
587
|
+
: Effect.provideService(work, options.transaction, options.transaction.of(transaction));
|
|
588
|
+
},
|
|
589
|
+
),
|
|
590
|
+
);
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
import type { SessionStepUpMapping } from "./step-up-model";
|
|
594
|
+
|
|
595
|
+
export const makePgSessionStepUpServices = <
|
|
596
|
+
Claims,
|
|
597
|
+
Id,
|
|
598
|
+
S extends AnyPgTable,
|
|
599
|
+
C extends AnyPgTable,
|
|
600
|
+
I extends AnyPgTable,
|
|
601
|
+
Session extends AnyPgTable,
|
|
602
|
+
T extends AnyPgTable,
|
|
603
|
+
NativeId,
|
|
604
|
+
NativeSessionId,
|
|
605
|
+
>(
|
|
606
|
+
database: Database,
|
|
607
|
+
mapping: SessionStepUpMapping<NoInfer<Claims>, S, C, I, Session, T, NativeId, NativeSessionId>,
|
|
608
|
+
target: Context.Service<Id, SessionStepUpPersistence<Claims>>,
|
|
609
|
+
) => makeTargetSessionStepUpServices(database, mapping, target, configuration(database));
|
|
610
|
+
|
|
611
|
+
export function coordinatePgSessionStepUp<
|
|
612
|
+
Claims,
|
|
613
|
+
Id,
|
|
614
|
+
S extends AnyPgTable,
|
|
615
|
+
C extends AnyPgTable,
|
|
616
|
+
I extends AnyPgTable,
|
|
617
|
+
Session extends AnyPgTable,
|
|
618
|
+
T extends AnyPgTable,
|
|
619
|
+
NativeId,
|
|
620
|
+
NativeSessionId,
|
|
621
|
+
D extends Database,
|
|
622
|
+
A,
|
|
623
|
+
E,
|
|
624
|
+
R,
|
|
625
|
+
DatabaseError,
|
|
626
|
+
DatabaseRequirements,
|
|
627
|
+
>(
|
|
628
|
+
acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
|
|
629
|
+
options: {
|
|
630
|
+
readonly mapping: SessionStepUpMapping<
|
|
631
|
+
NoInfer<Claims>,
|
|
632
|
+
S,
|
|
633
|
+
C,
|
|
634
|
+
I,
|
|
635
|
+
Session,
|
|
636
|
+
T,
|
|
637
|
+
NativeId,
|
|
638
|
+
NativeSessionId
|
|
639
|
+
>;
|
|
640
|
+
readonly target: SuppliedService<Id, SessionStepUpPersistence<Claims>>;
|
|
641
|
+
readonly transaction?: never;
|
|
642
|
+
},
|
|
643
|
+
body: Effect.Effect<A, E, R>,
|
|
644
|
+
): Effect.Effect<
|
|
645
|
+
A,
|
|
646
|
+
E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
647
|
+
Exclude<R, Id> | LifecycleHooks | DatabaseRequirements
|
|
648
|
+
>;
|
|
649
|
+
|
|
650
|
+
export function coordinatePgSessionStepUp<
|
|
651
|
+
Claims,
|
|
652
|
+
Id,
|
|
653
|
+
S extends AnyPgTable,
|
|
654
|
+
C extends AnyPgTable,
|
|
655
|
+
I extends AnyPgTable,
|
|
656
|
+
Session extends AnyPgTable,
|
|
657
|
+
T extends AnyPgTable,
|
|
658
|
+
NativeId,
|
|
659
|
+
NativeSessionId,
|
|
660
|
+
D extends Database,
|
|
661
|
+
A,
|
|
662
|
+
E,
|
|
663
|
+
R,
|
|
664
|
+
DatabaseError,
|
|
665
|
+
DatabaseRequirements,
|
|
666
|
+
TxId,
|
|
667
|
+
TxShape,
|
|
668
|
+
>(
|
|
669
|
+
acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
|
|
670
|
+
options: {
|
|
671
|
+
readonly mapping: SessionStepUpMapping<
|
|
672
|
+
NoInfer<Claims>,
|
|
673
|
+
S,
|
|
674
|
+
C,
|
|
675
|
+
I,
|
|
676
|
+
Session,
|
|
677
|
+
T,
|
|
678
|
+
NativeId,
|
|
679
|
+
NativeSessionId
|
|
680
|
+
>;
|
|
681
|
+
readonly target: SuppliedService<Id, SessionStepUpPersistence<Claims>>;
|
|
682
|
+
readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
|
|
683
|
+
},
|
|
684
|
+
body: Effect.Effect<A, E, R>,
|
|
685
|
+
): Effect.Effect<
|
|
686
|
+
A,
|
|
687
|
+
E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
688
|
+
Exclude<R, Id | TxId> | LifecycleHooks | DatabaseRequirements
|
|
689
|
+
>;
|
|
690
|
+
|
|
691
|
+
export function coordinatePgSessionStepUp<
|
|
692
|
+
Claims,
|
|
693
|
+
Id,
|
|
694
|
+
S extends AnyPgTable,
|
|
695
|
+
C extends AnyPgTable,
|
|
696
|
+
I extends AnyPgTable,
|
|
697
|
+
Session extends AnyPgTable,
|
|
698
|
+
T extends AnyPgTable,
|
|
699
|
+
NativeId,
|
|
700
|
+
NativeSessionId,
|
|
701
|
+
D extends Database,
|
|
702
|
+
A,
|
|
703
|
+
E,
|
|
704
|
+
R,
|
|
705
|
+
DatabaseError,
|
|
706
|
+
DatabaseRequirements,
|
|
707
|
+
TxId,
|
|
708
|
+
TxShape,
|
|
709
|
+
>(
|
|
710
|
+
acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
|
|
711
|
+
options: {
|
|
712
|
+
readonly mapping: SessionStepUpMapping<
|
|
713
|
+
NoInfer<Claims>,
|
|
714
|
+
S,
|
|
715
|
+
C,
|
|
716
|
+
I,
|
|
717
|
+
Session,
|
|
718
|
+
T,
|
|
719
|
+
NativeId,
|
|
720
|
+
NativeSessionId
|
|
721
|
+
>;
|
|
722
|
+
readonly target: SuppliedService<Id, SessionStepUpPersistence<Claims>>;
|
|
723
|
+
readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
|
|
724
|
+
},
|
|
725
|
+
body: Effect.Effect<A, E, R>,
|
|
726
|
+
): Effect.Effect<
|
|
727
|
+
A,
|
|
728
|
+
E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
729
|
+
Exclude<R, Id> | LifecycleHooks | DatabaseRequirements
|
|
730
|
+
> {
|
|
731
|
+
return Effect.flatMap(acquire, (database) =>
|
|
732
|
+
coordinateTargetSessionStepUp<Claims, Id, TransactionOf<D>, A, E, Exclude<R, Id>>(
|
|
733
|
+
database,
|
|
734
|
+
options.mapping,
|
|
735
|
+
options.target,
|
|
736
|
+
configuration(database),
|
|
737
|
+
(
|
|
738
|
+
transaction: TransactionOf<D>,
|
|
739
|
+
services: { readonly sessionStepUpPersistence: SessionStepUpPersistence<Claims> },
|
|
740
|
+
) => {
|
|
741
|
+
const provided = Context.make(options.target, services.sessionStepUpPersistence);
|
|
742
|
+
const work = Effect.provideContext(body, provided);
|
|
743
|
+
|
|
744
|
+
return options.transaction === undefined
|
|
745
|
+
? work
|
|
746
|
+
: Effect.provideService(work, options.transaction, options.transaction.of(transaction));
|
|
747
|
+
},
|
|
748
|
+
),
|
|
749
|
+
);
|
|
750
|
+
}
|