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