@yielded/auth-persistence-drizzle 0.1.0-beta.24 → 0.1.0-beta.26
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 +90 -25
- 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 -1265
- package/src/drizzle/d1-passwords.ts +0 -2060
- 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 -1201
- 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,393 +0,0 @@
|
|
|
1
|
-
import { NativeDatabase } from "@yielded/auth-persistence/Adapter";
|
|
2
|
-
import { EmailAddressPersistence, type EmailUnavailable } from "@yielded/auth/Email";
|
|
3
|
-
import type { LifecycleHooks, HookConfigurationError } from "@yielded/auth/Hooks";
|
|
4
|
-
/* oxlint-disable no-explicit-any -- proof mapping tables are independently typed by the proof owner; this driver forwards them unchanged to the shared target. */
|
|
5
|
-
import type { AnyRelations } from "drizzle-orm";
|
|
6
|
-
import type { EffectLibsqlDatabase } from "drizzle-orm/effect-libsql";
|
|
7
|
-
import type { EffectSQLiteBunDatabase } from "drizzle-orm/effect-sqlite-bun";
|
|
8
|
-
import type { EffectSQLiteNodeDatabase as NodeDatabase } from "drizzle-orm/effect-sqlite-node";
|
|
9
|
-
import type { EffectSQLiteWasmDatabase as WasmDatabase } from "drizzle-orm/effect-sqlite-wasm";
|
|
10
|
-
import type { AnySQLiteTable } from "drizzle-orm/sqlite-core";
|
|
11
|
-
import { Effect, Context } from "effect";
|
|
12
|
-
import type { SqlError } from "effect/sql/SqlError";
|
|
13
|
-
|
|
14
|
-
import type {
|
|
15
|
-
EmailAddressMapping,
|
|
16
|
-
EmailRegistrationMapping,
|
|
17
|
-
EmailSignInMapping,
|
|
18
|
-
} from "./email-model";
|
|
19
|
-
import type { EmailRegistrationAuthority } from "./email-registration";
|
|
20
|
-
import { CurrentEmailSql } from "./email-sql";
|
|
21
|
-
import type { EmailSqlQuery } from "./email-sql";
|
|
22
|
-
import {
|
|
23
|
-
coordinateTargetEmailAddress,
|
|
24
|
-
coordinateTargetEmailRegistration,
|
|
25
|
-
makeTargetEmailAddressServices,
|
|
26
|
-
makeTargetEmailRegistrationServices,
|
|
27
|
-
makeTargetEmailSignInServices,
|
|
28
|
-
type EmailTargetConfiguration,
|
|
29
|
-
} from "./email-target";
|
|
30
|
-
import { nativeDatabase } from "./native-database";
|
|
31
|
-
import type { ProofPersistenceMapping } from "./proof-model";
|
|
32
|
-
import type { ProofSqlQuery } from "./proof-sql";
|
|
33
|
-
import type { DatabaseValue as DODatabase } from "./sqlite-do-database";
|
|
34
|
-
import {
|
|
35
|
-
type TransactionService,
|
|
36
|
-
acquireTransactionService,
|
|
37
|
-
transactionService,
|
|
38
|
-
} from "./standalone-guard";
|
|
39
|
-
import type { SuppliedService } from "./SuppliedService";
|
|
40
|
-
|
|
41
|
-
export type SqliteEmailDatabase =
|
|
42
|
-
| NodeDatabase<AnyRelations>
|
|
43
|
-
| EffectSQLiteBunDatabase<AnyRelations>
|
|
44
|
-
| EffectLibsqlDatabase<AnyRelations>
|
|
45
|
-
| WasmDatabase<AnyRelations>
|
|
46
|
-
| DODatabase<AnyRelations>;
|
|
47
|
-
|
|
48
|
-
type TransactionOf<D extends SqliteEmailDatabase> = Parameters<Parameters<D["transaction"]>[0]>[0];
|
|
49
|
-
type ProofMapping = ProofPersistenceMapping<
|
|
50
|
-
any,
|
|
51
|
-
any,
|
|
52
|
-
any,
|
|
53
|
-
any,
|
|
54
|
-
any,
|
|
55
|
-
any,
|
|
56
|
-
any,
|
|
57
|
-
any,
|
|
58
|
-
any,
|
|
59
|
-
any,
|
|
60
|
-
any,
|
|
61
|
-
any
|
|
62
|
-
>;
|
|
63
|
-
|
|
64
|
-
export const sqliteEmailConfiguration = (
|
|
65
|
-
mode: "interactive" | "synchronous",
|
|
66
|
-
standaloneGuard: EmailTargetConfiguration["standaloneGuard"],
|
|
67
|
-
proofStandaloneGuard: EmailTargetConfiguration["proof"]["standaloneGuard"],
|
|
68
|
-
coordinatorGuard?: EmailTargetConfiguration["coordinatorGuard"],
|
|
69
|
-
): EmailTargetConfiguration => ({
|
|
70
|
-
mode,
|
|
71
|
-
locking: false,
|
|
72
|
-
standaloneGuard,
|
|
73
|
-
...(coordinatorGuard === undefined ? {} : { coordinatorGuard }),
|
|
74
|
-
generatedSubjectRows: (query: EmailSqlQuery) => query.returning(),
|
|
75
|
-
proof: {
|
|
76
|
-
mode,
|
|
77
|
-
locking: false,
|
|
78
|
-
standaloneGuard: proofStandaloneGuard,
|
|
79
|
-
insertIfAbsent: (query: ProofSqlQuery) => query.onConflictDoNothing(),
|
|
80
|
-
},
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
export const makeSqliteEmailTarget = <
|
|
84
|
-
DatabaseId,
|
|
85
|
-
D extends SqliteEmailDatabase,
|
|
86
|
-
Synchronous extends boolean = false,
|
|
87
|
-
>(
|
|
88
|
-
databaseService: Context.Service<DatabaseId, D>,
|
|
89
|
-
configuration:
|
|
90
|
-
| EmailTargetConfiguration
|
|
91
|
-
| ((service: TransactionService | undefined) => EmailTargetConfiguration),
|
|
92
|
-
) => {
|
|
93
|
-
const configurationFor = (database: D) =>
|
|
94
|
-
typeof configuration === "function"
|
|
95
|
-
? configuration(transactionService(database))
|
|
96
|
-
: configuration;
|
|
97
|
-
|
|
98
|
-
const standaloneConfiguration =
|
|
99
|
-
typeof configuration === "function"
|
|
100
|
-
? Effect.map(acquireTransactionService(databaseService), configuration)
|
|
101
|
-
: Effect.succeed(configuration);
|
|
102
|
-
|
|
103
|
-
function coordinateEmailAddress<
|
|
104
|
-
Database extends D,
|
|
105
|
-
S extends AnySQLiteTable,
|
|
106
|
-
I extends AnySQLiteTable,
|
|
107
|
-
C extends AnySQLiteTable,
|
|
108
|
-
AC extends AnySQLiteTable,
|
|
109
|
-
M extends AnySQLiteTable,
|
|
110
|
-
NativeId,
|
|
111
|
-
Out,
|
|
112
|
-
E,
|
|
113
|
-
R,
|
|
114
|
-
DatabaseError,
|
|
115
|
-
DatabaseRequirements,
|
|
116
|
-
>(
|
|
117
|
-
acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,
|
|
118
|
-
options: {
|
|
119
|
-
readonly mapping: EmailAddressMapping<S, I, C, AC, M, NativeId>;
|
|
120
|
-
readonly proofMapping: ProofMapping;
|
|
121
|
-
readonly transaction?: never;
|
|
122
|
-
},
|
|
123
|
-
body: Effect.Effect<Out, E, Synchronous extends true ? NoInfer<EmailAddressPersistence> : R>,
|
|
124
|
-
): Effect.Effect<
|
|
125
|
-
Out,
|
|
126
|
-
E | EmailUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
127
|
-
| (Synchronous extends true ? never : Exclude<R, EmailAddressPersistence>)
|
|
128
|
-
| LifecycleHooks
|
|
129
|
-
| DatabaseRequirements
|
|
130
|
-
>;
|
|
131
|
-
function coordinateEmailAddress<
|
|
132
|
-
Database extends D,
|
|
133
|
-
S extends AnySQLiteTable,
|
|
134
|
-
I extends AnySQLiteTable,
|
|
135
|
-
C extends AnySQLiteTable,
|
|
136
|
-
AC extends AnySQLiteTable,
|
|
137
|
-
M extends AnySQLiteTable,
|
|
138
|
-
NativeId,
|
|
139
|
-
Out,
|
|
140
|
-
E,
|
|
141
|
-
R,
|
|
142
|
-
DatabaseError,
|
|
143
|
-
DatabaseRequirements,
|
|
144
|
-
TxId,
|
|
145
|
-
TxShape,
|
|
146
|
-
>(
|
|
147
|
-
acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,
|
|
148
|
-
options: {
|
|
149
|
-
readonly mapping: EmailAddressMapping<S, I, C, AC, M, NativeId>;
|
|
150
|
-
readonly proofMapping: ProofMapping;
|
|
151
|
-
readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;
|
|
152
|
-
},
|
|
153
|
-
body: Effect.Effect<
|
|
154
|
-
Out,
|
|
155
|
-
E,
|
|
156
|
-
Synchronous extends true ? NoInfer<EmailAddressPersistence | TxId> : R
|
|
157
|
-
>,
|
|
158
|
-
): Effect.Effect<
|
|
159
|
-
Out,
|
|
160
|
-
E | EmailUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
161
|
-
| (Synchronous extends true ? never : Exclude<R, EmailAddressPersistence | TxId>)
|
|
162
|
-
| LifecycleHooks
|
|
163
|
-
| DatabaseRequirements
|
|
164
|
-
>;
|
|
165
|
-
function coordinateEmailAddress<
|
|
166
|
-
Database extends D,
|
|
167
|
-
S extends AnySQLiteTable,
|
|
168
|
-
I extends AnySQLiteTable,
|
|
169
|
-
C extends AnySQLiteTable,
|
|
170
|
-
AC extends AnySQLiteTable,
|
|
171
|
-
M extends AnySQLiteTable,
|
|
172
|
-
NativeId,
|
|
173
|
-
Out,
|
|
174
|
-
E,
|
|
175
|
-
R,
|
|
176
|
-
DatabaseError,
|
|
177
|
-
DatabaseRequirements,
|
|
178
|
-
TxId,
|
|
179
|
-
TxShape,
|
|
180
|
-
>(
|
|
181
|
-
acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,
|
|
182
|
-
options: {
|
|
183
|
-
readonly mapping: EmailAddressMapping<S, I, C, AC, M, NativeId>;
|
|
184
|
-
readonly proofMapping: ProofMapping;
|
|
185
|
-
readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;
|
|
186
|
-
},
|
|
187
|
-
body: Effect.Effect<Out, E, R>,
|
|
188
|
-
): Effect.Effect<
|
|
189
|
-
Out,
|
|
190
|
-
E | EmailUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
191
|
-
Exclude<R, EmailAddressPersistence> | LifecycleHooks | DatabaseRequirements
|
|
192
|
-
> {
|
|
193
|
-
return Effect.flatMap(nativeDatabase(acquire), (database) =>
|
|
194
|
-
coordinateTargetEmailAddress<
|
|
195
|
-
TransactionOf<Database>,
|
|
196
|
-
Out,
|
|
197
|
-
E,
|
|
198
|
-
Exclude<R, EmailAddressPersistence>
|
|
199
|
-
>(
|
|
200
|
-
database,
|
|
201
|
-
options.mapping,
|
|
202
|
-
options.proofMapping,
|
|
203
|
-
configurationFor(database),
|
|
204
|
-
(
|
|
205
|
-
transaction: TransactionOf<Database>,
|
|
206
|
-
services: { readonly emailAddressPersistence: EmailAddressPersistence["Service"] },
|
|
207
|
-
) => {
|
|
208
|
-
const provided = Context.make(EmailAddressPersistence, services.emailAddressPersistence);
|
|
209
|
-
const work = Effect.provideContext(body, provided);
|
|
210
|
-
|
|
211
|
-
return options.transaction === undefined
|
|
212
|
-
? work
|
|
213
|
-
: Effect.provideService(work, options.transaction, options.transaction.of(transaction));
|
|
214
|
-
},
|
|
215
|
-
).pipe(Effect.provideService(NativeDatabase, database)),
|
|
216
|
-
);
|
|
217
|
-
}
|
|
218
|
-
function coordinateEmailRegistration<
|
|
219
|
-
Database extends D,
|
|
220
|
-
TargetId,
|
|
221
|
-
Registration,
|
|
222
|
-
S extends AnySQLiteTable,
|
|
223
|
-
I extends AnySQLiteTable,
|
|
224
|
-
C extends AnySQLiteTable,
|
|
225
|
-
AC extends AnySQLiteTable,
|
|
226
|
-
Rq extends AnySQLiteTable,
|
|
227
|
-
NativeId,
|
|
228
|
-
Out,
|
|
229
|
-
E,
|
|
230
|
-
R,
|
|
231
|
-
DatabaseError,
|
|
232
|
-
DatabaseRequirements,
|
|
233
|
-
>(
|
|
234
|
-
acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,
|
|
235
|
-
options: {
|
|
236
|
-
readonly mapping: EmailRegistrationMapping<NoInfer<Registration>, S, I, C, AC, Rq, NativeId>;
|
|
237
|
-
readonly proofMapping: ProofMapping;
|
|
238
|
-
readonly target: SuppliedService<TargetId, EmailRegistrationAuthority<Registration>>;
|
|
239
|
-
readonly transaction?: never;
|
|
240
|
-
},
|
|
241
|
-
body: Effect.Effect<Out, E, Synchronous extends true ? NoInfer<TargetId> : R>,
|
|
242
|
-
): Effect.Effect<
|
|
243
|
-
Out,
|
|
244
|
-
E | EmailUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
245
|
-
| (Synchronous extends true ? never : Exclude<R, TargetId>)
|
|
246
|
-
| LifecycleHooks
|
|
247
|
-
| DatabaseRequirements
|
|
248
|
-
>;
|
|
249
|
-
function coordinateEmailRegistration<
|
|
250
|
-
Database extends D,
|
|
251
|
-
TargetId,
|
|
252
|
-
Registration,
|
|
253
|
-
S extends AnySQLiteTable,
|
|
254
|
-
I extends AnySQLiteTable,
|
|
255
|
-
C extends AnySQLiteTable,
|
|
256
|
-
AC extends AnySQLiteTable,
|
|
257
|
-
Rq extends AnySQLiteTable,
|
|
258
|
-
NativeId,
|
|
259
|
-
Out,
|
|
260
|
-
E,
|
|
261
|
-
R,
|
|
262
|
-
DatabaseError,
|
|
263
|
-
DatabaseRequirements,
|
|
264
|
-
TxId,
|
|
265
|
-
TxShape,
|
|
266
|
-
>(
|
|
267
|
-
acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,
|
|
268
|
-
options: {
|
|
269
|
-
readonly mapping: EmailRegistrationMapping<NoInfer<Registration>, S, I, C, AC, Rq, NativeId>;
|
|
270
|
-
readonly proofMapping: ProofMapping;
|
|
271
|
-
readonly target: SuppliedService<TargetId, EmailRegistrationAuthority<Registration>>;
|
|
272
|
-
readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;
|
|
273
|
-
},
|
|
274
|
-
body: Effect.Effect<Out, E, Synchronous extends true ? NoInfer<TargetId | TxId> : R>,
|
|
275
|
-
): Effect.Effect<
|
|
276
|
-
Out,
|
|
277
|
-
E | EmailUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
278
|
-
| (Synchronous extends true ? never : Exclude<R, TargetId | TxId>)
|
|
279
|
-
| LifecycleHooks
|
|
280
|
-
| DatabaseRequirements
|
|
281
|
-
>;
|
|
282
|
-
function coordinateEmailRegistration<
|
|
283
|
-
Database extends D,
|
|
284
|
-
TargetId,
|
|
285
|
-
Registration,
|
|
286
|
-
S extends AnySQLiteTable,
|
|
287
|
-
I extends AnySQLiteTable,
|
|
288
|
-
C extends AnySQLiteTable,
|
|
289
|
-
AC extends AnySQLiteTable,
|
|
290
|
-
Rq extends AnySQLiteTable,
|
|
291
|
-
NativeId,
|
|
292
|
-
Out,
|
|
293
|
-
E,
|
|
294
|
-
R,
|
|
295
|
-
DatabaseError,
|
|
296
|
-
DatabaseRequirements,
|
|
297
|
-
TxId,
|
|
298
|
-
TxShape,
|
|
299
|
-
>(
|
|
300
|
-
acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,
|
|
301
|
-
options: {
|
|
302
|
-
readonly mapping: EmailRegistrationMapping<NoInfer<Registration>, S, I, C, AC, Rq, NativeId>;
|
|
303
|
-
readonly proofMapping: ProofMapping;
|
|
304
|
-
readonly target: SuppliedService<TargetId, EmailRegistrationAuthority<Registration>>;
|
|
305
|
-
readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;
|
|
306
|
-
},
|
|
307
|
-
body: Effect.Effect<Out, E, R>,
|
|
308
|
-
): Effect.Effect<
|
|
309
|
-
Out,
|
|
310
|
-
E | EmailUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
311
|
-
Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements
|
|
312
|
-
> {
|
|
313
|
-
return Effect.flatMap(nativeDatabase(acquire), (database) =>
|
|
314
|
-
coordinateTargetEmailRegistration<
|
|
315
|
-
Registration,
|
|
316
|
-
TransactionOf<Database>,
|
|
317
|
-
Out,
|
|
318
|
-
E,
|
|
319
|
-
Exclude<R, TargetId>
|
|
320
|
-
>(
|
|
321
|
-
database,
|
|
322
|
-
options.mapping,
|
|
323
|
-
options.proofMapping,
|
|
324
|
-
configurationFor(database),
|
|
325
|
-
(
|
|
326
|
-
transaction: TransactionOf<Database>,
|
|
327
|
-
services: { readonly registrationAuthority: EmailRegistrationAuthority<Registration> },
|
|
328
|
-
) => {
|
|
329
|
-
const provided = Context.make(options.target, services.registrationAuthority);
|
|
330
|
-
const work = Effect.provideContext(body, provided);
|
|
331
|
-
|
|
332
|
-
return options.transaction === undefined
|
|
333
|
-
? work
|
|
334
|
-
: Effect.provideService(work, options.transaction, options.transaction.of(transaction));
|
|
335
|
-
},
|
|
336
|
-
).pipe(Effect.provideService(NativeDatabase, database)),
|
|
337
|
-
);
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
return {
|
|
341
|
-
makeEmailSignInServices: <
|
|
342
|
-
S extends AnySQLiteTable,
|
|
343
|
-
I extends AnySQLiteTable,
|
|
344
|
-
C extends AnySQLiteTable,
|
|
345
|
-
NativeId,
|
|
346
|
-
>(
|
|
347
|
-
mapping: EmailSignInMapping<S, I, C, NativeId>,
|
|
348
|
-
) =>
|
|
349
|
-
Effect.flatMap(standaloneConfiguration, (configuration) =>
|
|
350
|
-
makeTargetEmailSignInServices(mapping, configuration),
|
|
351
|
-
).pipe(
|
|
352
|
-
Effect.provideServiceEffect(CurrentEmailSql, nativeDatabase(databaseService)),
|
|
353
|
-
Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),
|
|
354
|
-
),
|
|
355
|
-
makeEmailAddressServices: <
|
|
356
|
-
S extends AnySQLiteTable,
|
|
357
|
-
I extends AnySQLiteTable,
|
|
358
|
-
C extends AnySQLiteTable,
|
|
359
|
-
AC extends AnySQLiteTable,
|
|
360
|
-
M extends AnySQLiteTable,
|
|
361
|
-
NativeId,
|
|
362
|
-
>(
|
|
363
|
-
mapping: EmailAddressMapping<S, I, C, AC, M, NativeId>,
|
|
364
|
-
proofMapping: ProofMapping,
|
|
365
|
-
) =>
|
|
366
|
-
Effect.flatMap(standaloneConfiguration, (configuration) =>
|
|
367
|
-
makeTargetEmailAddressServices(mapping, proofMapping, configuration),
|
|
368
|
-
).pipe(
|
|
369
|
-
Effect.provideServiceEffect(CurrentEmailSql, nativeDatabase(databaseService)),
|
|
370
|
-
Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),
|
|
371
|
-
),
|
|
372
|
-
coordinateEmailAddress,
|
|
373
|
-
makeEmailRegistrationServices: <
|
|
374
|
-
Registration,
|
|
375
|
-
S extends AnySQLiteTable,
|
|
376
|
-
I extends AnySQLiteTable,
|
|
377
|
-
C extends AnySQLiteTable,
|
|
378
|
-
AC extends AnySQLiteTable,
|
|
379
|
-
Rq extends AnySQLiteTable,
|
|
380
|
-
NativeId,
|
|
381
|
-
>(
|
|
382
|
-
mapping: EmailRegistrationMapping<Registration, S, I, C, AC, Rq, NativeId>,
|
|
383
|
-
proofMapping: ProofMapping,
|
|
384
|
-
) =>
|
|
385
|
-
Effect.flatMap(standaloneConfiguration, (configuration) =>
|
|
386
|
-
makeTargetEmailRegistrationServices<Registration>(mapping, proofMapping, configuration),
|
|
387
|
-
).pipe(
|
|
388
|
-
Effect.provideServiceEffect(CurrentEmailSql, nativeDatabase(databaseService)),
|
|
389
|
-
Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),
|
|
390
|
-
),
|
|
391
|
-
coordinateEmailRegistration,
|
|
392
|
-
};
|
|
393
|
-
};
|
|
@@ -1,230 +0,0 @@
|
|
|
1
|
-
import { NativeDatabase } from "@yielded/auth-persistence/Adapter";
|
|
2
|
-
import type { LifecycleHooks, HookConfigurationError } from "@yielded/auth/Hooks";
|
|
3
|
-
import type { PasswordUnavailable, PasswordPreparedPersistence } from "@yielded/auth/Password";
|
|
4
|
-
import type { AnySQLiteTable } from "drizzle-orm/sqlite-core";
|
|
5
|
-
import { Effect, Context } from "effect";
|
|
6
|
-
import type { SqlError } from "effect/sql/SqlError";
|
|
7
|
-
|
|
8
|
-
import { nativeDatabase } from "./native-database";
|
|
9
|
-
import type {
|
|
10
|
-
PasswordPreparedPersistenceMapping,
|
|
11
|
-
PasswordPreparedProofMapping,
|
|
12
|
-
} from "./password-prepared-model";
|
|
13
|
-
import {
|
|
14
|
-
makeTargetPasswordPreparedPersistenceServices,
|
|
15
|
-
coordinateTargetPasswordPreparedPersistence,
|
|
16
|
-
} from "./password-prepared-target";
|
|
17
|
-
import { CurrentPasswordSql } from "./password-sql";
|
|
18
|
-
import type { PasswordTargetConfiguration } from "./password-target";
|
|
19
|
-
import type { SqlitePasswordDatabase } from "./sqlite-passwords";
|
|
20
|
-
import {
|
|
21
|
-
type TransactionService,
|
|
22
|
-
acquireTransactionService,
|
|
23
|
-
transactionService,
|
|
24
|
-
} from "./standalone-guard";
|
|
25
|
-
import type { SuppliedService } from "./SuppliedService";
|
|
26
|
-
type TransactionOf<D extends SqlitePasswordDatabase> = Parameters<
|
|
27
|
-
Parameters<D["transaction"]>[0]
|
|
28
|
-
>[0];
|
|
29
|
-
|
|
30
|
-
export const makeSqlitePasswordPreparedTarget = <
|
|
31
|
-
DatabaseId,
|
|
32
|
-
D extends SqlitePasswordDatabase,
|
|
33
|
-
Synchronous extends boolean = false,
|
|
34
|
-
>(
|
|
35
|
-
databaseService: Context.Service<DatabaseId, D>,
|
|
36
|
-
configuration:
|
|
37
|
-
| PasswordTargetConfiguration
|
|
38
|
-
| ((service: TransactionService | undefined) => PasswordTargetConfiguration),
|
|
39
|
-
) => {
|
|
40
|
-
const configurationFor = (database: D) =>
|
|
41
|
-
typeof configuration === "function"
|
|
42
|
-
? configuration(transactionService(database))
|
|
43
|
-
: configuration;
|
|
44
|
-
|
|
45
|
-
const standaloneConfiguration =
|
|
46
|
-
typeof configuration === "function"
|
|
47
|
-
? Effect.map(acquireTransactionService(databaseService), configuration)
|
|
48
|
-
: Effect.succeed(configuration);
|
|
49
|
-
|
|
50
|
-
function coordinatePasswordPreparedPersistence<
|
|
51
|
-
Database extends D,
|
|
52
|
-
TargetId,
|
|
53
|
-
S extends AnySQLiteTable,
|
|
54
|
-
I extends AnySQLiteTable,
|
|
55
|
-
C extends AnySQLiteTable,
|
|
56
|
-
AC extends AnySQLiteTable,
|
|
57
|
-
M extends AnySQLiteTable,
|
|
58
|
-
T extends AnySQLiteTable,
|
|
59
|
-
B extends AnySQLiteTable,
|
|
60
|
-
NativeId,
|
|
61
|
-
PS extends AnySQLiteTable,
|
|
62
|
-
PC extends AnySQLiteTable,
|
|
63
|
-
PM extends AnySQLiteTable,
|
|
64
|
-
PSub extends AnySQLiteTable,
|
|
65
|
-
PI extends AnySQLiteTable,
|
|
66
|
-
PCr extends AnySQLiteTable,
|
|
67
|
-
PNativeId,
|
|
68
|
-
Out,
|
|
69
|
-
E,
|
|
70
|
-
R,
|
|
71
|
-
DatabaseError,
|
|
72
|
-
DatabaseRequirements,
|
|
73
|
-
>(
|
|
74
|
-
acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,
|
|
75
|
-
options: {
|
|
76
|
-
readonly mapping: PasswordPreparedPersistenceMapping<S, I, C, AC, M, T, B, NativeId>;
|
|
77
|
-
readonly proofMapping?:
|
|
78
|
-
| PasswordPreparedProofMapping<PS, PC, PM, PSub, PI, PCr, PNativeId>
|
|
79
|
-
| undefined;
|
|
80
|
-
readonly target: SuppliedService<TargetId, PasswordPreparedPersistence>;
|
|
81
|
-
readonly transaction?: never;
|
|
82
|
-
},
|
|
83
|
-
body: Effect.Effect<Out, E, Synchronous extends true ? NoInfer<TargetId> : R>,
|
|
84
|
-
): Effect.Effect<
|
|
85
|
-
Out,
|
|
86
|
-
E | PasswordUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
87
|
-
| (Synchronous extends true ? never : Exclude<R, TargetId>)
|
|
88
|
-
| LifecycleHooks
|
|
89
|
-
| DatabaseRequirements
|
|
90
|
-
>;
|
|
91
|
-
function coordinatePasswordPreparedPersistence<
|
|
92
|
-
Database extends D,
|
|
93
|
-
TargetId,
|
|
94
|
-
S extends AnySQLiteTable,
|
|
95
|
-
I extends AnySQLiteTable,
|
|
96
|
-
C extends AnySQLiteTable,
|
|
97
|
-
AC extends AnySQLiteTable,
|
|
98
|
-
M extends AnySQLiteTable,
|
|
99
|
-
T extends AnySQLiteTable,
|
|
100
|
-
B extends AnySQLiteTable,
|
|
101
|
-
NativeId,
|
|
102
|
-
PS extends AnySQLiteTable,
|
|
103
|
-
PC extends AnySQLiteTable,
|
|
104
|
-
PM extends AnySQLiteTable,
|
|
105
|
-
PSub extends AnySQLiteTable,
|
|
106
|
-
PI extends AnySQLiteTable,
|
|
107
|
-
PCr extends AnySQLiteTable,
|
|
108
|
-
PNativeId,
|
|
109
|
-
Out,
|
|
110
|
-
E,
|
|
111
|
-
R,
|
|
112
|
-
DatabaseError,
|
|
113
|
-
DatabaseRequirements,
|
|
114
|
-
TxId,
|
|
115
|
-
TxShape,
|
|
116
|
-
>(
|
|
117
|
-
acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,
|
|
118
|
-
options: {
|
|
119
|
-
readonly mapping: PasswordPreparedPersistenceMapping<S, I, C, AC, M, T, B, NativeId>;
|
|
120
|
-
readonly proofMapping?:
|
|
121
|
-
| PasswordPreparedProofMapping<PS, PC, PM, PSub, PI, PCr, PNativeId>
|
|
122
|
-
| undefined;
|
|
123
|
-
readonly target: SuppliedService<TargetId, PasswordPreparedPersistence>;
|
|
124
|
-
readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;
|
|
125
|
-
},
|
|
126
|
-
body: Effect.Effect<Out, E, Synchronous extends true ? NoInfer<TargetId | TxId> : R>,
|
|
127
|
-
): Effect.Effect<
|
|
128
|
-
Out,
|
|
129
|
-
E | PasswordUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
130
|
-
| (Synchronous extends true ? never : Exclude<R, TargetId | TxId>)
|
|
131
|
-
| LifecycleHooks
|
|
132
|
-
| DatabaseRequirements
|
|
133
|
-
>;
|
|
134
|
-
function coordinatePasswordPreparedPersistence<
|
|
135
|
-
Database extends D,
|
|
136
|
-
TargetId,
|
|
137
|
-
S extends AnySQLiteTable,
|
|
138
|
-
I extends AnySQLiteTable,
|
|
139
|
-
C extends AnySQLiteTable,
|
|
140
|
-
AC extends AnySQLiteTable,
|
|
141
|
-
M extends AnySQLiteTable,
|
|
142
|
-
T extends AnySQLiteTable,
|
|
143
|
-
B extends AnySQLiteTable,
|
|
144
|
-
NativeId,
|
|
145
|
-
PS extends AnySQLiteTable,
|
|
146
|
-
PC extends AnySQLiteTable,
|
|
147
|
-
PM extends AnySQLiteTable,
|
|
148
|
-
PSub extends AnySQLiteTable,
|
|
149
|
-
PI extends AnySQLiteTable,
|
|
150
|
-
PCr extends AnySQLiteTable,
|
|
151
|
-
PNativeId,
|
|
152
|
-
Out,
|
|
153
|
-
E,
|
|
154
|
-
R,
|
|
155
|
-
DatabaseError,
|
|
156
|
-
DatabaseRequirements,
|
|
157
|
-
TxId,
|
|
158
|
-
TxShape,
|
|
159
|
-
>(
|
|
160
|
-
acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,
|
|
161
|
-
options: {
|
|
162
|
-
readonly mapping: PasswordPreparedPersistenceMapping<S, I, C, AC, M, T, B, NativeId>;
|
|
163
|
-
readonly proofMapping?:
|
|
164
|
-
| PasswordPreparedProofMapping<PS, PC, PM, PSub, PI, PCr, PNativeId>
|
|
165
|
-
| undefined;
|
|
166
|
-
readonly target: SuppliedService<TargetId, PasswordPreparedPersistence>;
|
|
167
|
-
readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;
|
|
168
|
-
},
|
|
169
|
-
body: Effect.Effect<Out, E, R>,
|
|
170
|
-
): Effect.Effect<
|
|
171
|
-
Out,
|
|
172
|
-
E | PasswordUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
173
|
-
Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements
|
|
174
|
-
> {
|
|
175
|
-
return Effect.flatMap(nativeDatabase(acquire), (database) =>
|
|
176
|
-
coordinateTargetPasswordPreparedPersistence<
|
|
177
|
-
TransactionOf<Database>,
|
|
178
|
-
Out,
|
|
179
|
-
E,
|
|
180
|
-
Exclude<R, TargetId>
|
|
181
|
-
>(
|
|
182
|
-
database,
|
|
183
|
-
options.mapping,
|
|
184
|
-
configurationFor(database),
|
|
185
|
-
options.proofMapping,
|
|
186
|
-
(
|
|
187
|
-
transaction: TransactionOf<Database>,
|
|
188
|
-
services: { readonly passwordPreparedPersistence: PasswordPreparedPersistence },
|
|
189
|
-
) => {
|
|
190
|
-
const provided = Context.make(options.target, services.passwordPreparedPersistence);
|
|
191
|
-
const work = Effect.provideContext(body, provided);
|
|
192
|
-
|
|
193
|
-
return options.transaction === undefined
|
|
194
|
-
? work
|
|
195
|
-
: Effect.provideService(work, options.transaction, options.transaction.of(transaction));
|
|
196
|
-
},
|
|
197
|
-
).pipe(Effect.provideService(NativeDatabase, database)),
|
|
198
|
-
);
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
return {
|
|
202
|
-
makePasswordPreparedPersistenceServices: <
|
|
203
|
-
S extends AnySQLiteTable,
|
|
204
|
-
I extends AnySQLiteTable,
|
|
205
|
-
C extends AnySQLiteTable,
|
|
206
|
-
AC extends AnySQLiteTable,
|
|
207
|
-
M extends AnySQLiteTable,
|
|
208
|
-
T extends AnySQLiteTable,
|
|
209
|
-
B extends AnySQLiteTable,
|
|
210
|
-
NativeId,
|
|
211
|
-
PS extends AnySQLiteTable = AnySQLiteTable,
|
|
212
|
-
PC extends AnySQLiteTable = AnySQLiteTable,
|
|
213
|
-
PM extends AnySQLiteTable = AnySQLiteTable,
|
|
214
|
-
PSub extends AnySQLiteTable = AnySQLiteTable,
|
|
215
|
-
PI extends AnySQLiteTable = AnySQLiteTable,
|
|
216
|
-
PCr extends AnySQLiteTable = AnySQLiteTable,
|
|
217
|
-
PNativeId = unknown,
|
|
218
|
-
>(
|
|
219
|
-
mapping: PasswordPreparedPersistenceMapping<S, I, C, AC, M, T, B, NativeId>,
|
|
220
|
-
proofMapping?: PasswordPreparedProofMapping<PS, PC, PM, PSub, PI, PCr, PNativeId>,
|
|
221
|
-
) =>
|
|
222
|
-
Effect.flatMap(standaloneConfiguration, (configuration) =>
|
|
223
|
-
makeTargetPasswordPreparedPersistenceServices(mapping, configuration, proofMapping),
|
|
224
|
-
).pipe(
|
|
225
|
-
Effect.provideServiceEffect(CurrentPasswordSql, nativeDatabase(databaseService)),
|
|
226
|
-
Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),
|
|
227
|
-
),
|
|
228
|
-
coordinatePasswordPreparedPersistence,
|
|
229
|
-
};
|
|
230
|
-
};
|