@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,14 +0,0 @@
|
|
|
1
|
-
import { drizzleQueryOperations } from "./query-operations.mjs";
|
|
2
|
-
import { both, makeTransactionRows } from "./transaction-owner.mjs";
|
|
3
|
-
import { CurrentPhoneTransaction, makePhoneKernel } from "@yielded/auth-persistence/Adapter";
|
|
4
|
-
//#region src/drizzle/phone-state.ts
|
|
5
|
-
const kernel = makePhoneKernel(drizzleQueryOperations, {
|
|
6
|
-
both,
|
|
7
|
-
makeTransactionRows
|
|
8
|
-
});
|
|
9
|
-
const { unavailable, equal, copiedRow, col, capturePhone, lookupPhone, admitPhone, preparePhoneMutation, cleanupPhoneAdmission } = kernel;
|
|
10
|
-
const invariant = kernel.invariant;
|
|
11
|
-
//#endregion
|
|
12
|
-
export { CurrentPhoneTransaction, admitPhone, capturePhone, cleanupPhoneAdmission, equal, invariant, lookupPhone, preparePhoneMutation, unavailable };
|
|
13
|
-
|
|
14
|
-
//# sourceMappingURL=phone-state.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"phone-state.mjs","names":[],"sources":["../../src/drizzle/phone-state.ts"],"sourcesContent":["import { makePhoneKernel } from \"@yielded/auth-persistence/Adapter\";\n\nimport { drizzleQueryOperations } from \"./query-operations\";\nimport { both, makeTransactionRows } from \"./transaction-owner\";\nexport { CurrentPhoneTransaction } from \"@yielded/auth-persistence/Adapter\";\n\nconst kernel = makePhoneKernel(drizzleQueryOperations, { both, makeTransactionRows });\n\nexport const {\n unavailable,\n equal,\n copiedRow,\n col,\n capturePhone,\n lookupPhone,\n admitPhone,\n preparePhoneMutation,\n cleanupPhoneAdmission,\n} = kernel;\n\nexport const invariant: (value: unknown) => asserts value = kernel.invariant;\n"],"mappings":";;;;AAMA,MAAM,SAAS,gBAAgB,wBAAwB;CAAE;CAAM;AAAoB,CAAC;AAEpF,MAAa,EACX,aACA,OACA,WACA,KACA,cACA,aACA,YACA,sBACA,0BACE;AAEJ,MAAa,YAA+C,OAAO"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { PersistenceMappingError as PersistenceMappingError$1 } from "./model.mjs";
|
|
2
|
-
import "./transaction-owner.mjs";
|
|
3
|
-
import "./phone-model.mjs";
|
|
4
|
-
import "./SuppliedService.mjs";
|
|
5
|
-
import { TransactionCoordinatorError } from "./transaction-execution.mjs";
|
|
6
|
-
import { NativeDatabase } from "@yielded/auth-persistence/Adapter";
|
|
7
|
-
import { Table } from "drizzle-orm";
|
|
8
|
-
import { Context, Crypto, Effect } from "effect";
|
|
9
|
-
import { LifecycleHooks } from "@yielded/auth/Hooks";
|
|
10
|
-
import { Statement } from "effect/sql/Statement";
|
|
11
|
-
import { PhoneAdmission, PhoneConfigurationError, PhoneOtpUnavailable, PhonePersistence, PhoneSignInTargets } from "@yielded/auth/PhoneOtp";
|
|
12
|
-
//#region src/drizzle/phone-target.d.ts
|
|
13
|
-
export type PhoneCoordinatorError<E> = TransactionCoordinatorError<E, PhoneOtpUnavailable> | PhoneConfigurationError | PersistenceMappingError$1;
|
|
14
|
-
//#endregion
|
|
15
|
-
//# sourceMappingURL=phone-target.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import "@yielded/auth-persistence/Adapter";
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { drizzleQueryOperations } from "./query-operations.mjs";
|
|
2
|
-
import { CurrentProofSql, makeProofKernel } from "@yielded/auth-persistence/Adapter";
|
|
3
|
-
//#region src/drizzle/proof-sql.ts
|
|
4
|
-
const { makeSqlProofPersistence, checkProofCompletionIn, completeProofPlanIn } = makeProofKernel(drizzleQueryOperations);
|
|
5
|
-
//#endregion
|
|
6
|
-
export { CurrentProofSql, checkProofCompletionIn, completeProofPlanIn, makeSqlProofPersistence };
|
|
7
|
-
|
|
8
|
-
//# sourceMappingURL=proof-sql.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"proof-sql.mjs","names":[],"sources":["../../src/drizzle/proof-sql.ts"],"sourcesContent":["import { makeProofKernel } from \"@yielded/auth-persistence/Adapter\";\n\nimport { drizzleQueryOperations } from \"./query-operations\";\nexport type { ProofSqlQuery } from \"@yielded/auth-persistence/Adapter\";\nexport type { ProofSqlDatabase } from \"@yielded/auth-persistence/Adapter\";\nexport { CurrentProofSql } from \"@yielded/auth-persistence/Adapter\";\nexport type { ProofSqlConfiguration } from \"@yielded/auth-persistence/Adapter\";\n\nexport const { makeSqlProofPersistence, checkProofCompletionIn, completeProofPlanIn } =\n makeProofKernel(drizzleQueryOperations);\n"],"mappings":";;;AAQA,MAAa,EAAE,yBAAyB,wBAAwB,wBAC9D,gBAAgB,sBAAsB"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { column, updateValues } from "./model.mjs";
|
|
2
|
-
import { balancedD1And, compactD1GeneratedStatement } from "./d1-generated-statement.mjs";
|
|
3
|
-
import { validateDrizzleStorage } from "./storage-validation.mjs";
|
|
4
|
-
import { and, asc, eq, getTableColumns, gt, gte, inArray, isNotNull, isNull, lte, ne, notExists, or, sql } from "drizzle-orm";
|
|
5
|
-
/** The shared kernel only passes tables and expressions from this compiler.
|
|
6
|
-
* Erasure stops at query shapes; row codecs and Effect errors remain explicit. */
|
|
7
|
-
const drizzleQueryOperations = {
|
|
8
|
-
validateStorage: validateDrizzleStorage,
|
|
9
|
-
and,
|
|
10
|
-
asc,
|
|
11
|
-
or,
|
|
12
|
-
eq,
|
|
13
|
-
ne,
|
|
14
|
-
gt,
|
|
15
|
-
gte,
|
|
16
|
-
lte,
|
|
17
|
-
inArray,
|
|
18
|
-
isNull,
|
|
19
|
-
isNotNull,
|
|
20
|
-
notExists,
|
|
21
|
-
sql,
|
|
22
|
-
getTableColumns,
|
|
23
|
-
column,
|
|
24
|
-
updateValues,
|
|
25
|
-
balancedD1And,
|
|
26
|
-
compactD1GeneratedStatement
|
|
27
|
-
};
|
|
28
|
-
//#endregion
|
|
29
|
-
export { drizzleQueryOperations };
|
|
30
|
-
|
|
31
|
-
//# sourceMappingURL=query-operations.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"query-operations.mjs","names":[],"sources":["../../src/drizzle/query-operations.ts"],"sourcesContent":["import type { QueryOperations } from \"@yielded/auth-persistence/Adapter\";\nimport {\n type SQL,\n type AnyColumn,\n and,\n asc,\n or,\n eq,\n ne,\n gt,\n gte,\n lte,\n inArray,\n isNull,\n isNotNull,\n notExists,\n sql,\n getTableColumns,\n} from \"drizzle-orm\";\n\nimport { balancedD1And, compactD1GeneratedStatement } from \"./d1-generated-statement\";\nimport { column, updateValues } from \"./model\";\nimport { validateDrizzleStorage } from \"./storage-validation\";\n\nconst operations = {\n validateStorage: validateDrizzleStorage,\n and,\n asc,\n or,\n eq,\n ne,\n gt,\n gte,\n lte,\n inArray,\n isNull,\n isNotNull,\n notExists,\n sql,\n getTableColumns,\n column,\n updateValues,\n balancedD1And,\n compactD1GeneratedStatement,\n};\n\n/** The shared kernel only passes tables and expressions from this compiler.\n * Erasure stops at query shapes; row codecs and Effect errors remain explicit. */\nexport const drizzleQueryOperations = operations as unknown as QueryOperations<SQL, AnyColumn>;\n"],"mappings":";;;;;;AAgDA,MAAa,yBAAyB;CAvBpC,iBAAiB;CACjB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AAKoC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import "@yielded/auth-persistence/Adapter";
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { makeDrizzleSqlTables } from "./native-sql-table.mjs";
|
|
2
|
-
import { drizzleQueryOperations } from "./query-operations.mjs";
|
|
3
|
-
import { CurrentSessionSql, makeSessionKernel } from "@yielded/auth-persistence/Adapter";
|
|
4
|
-
//#region src/drizzle/session-sql.ts
|
|
5
|
-
const { makeSqlAuthenticationAuthority, makeSqlPendingAuthentication, makeSqlStatefulSessions, makeSqlSignedValidity, makeSqlSessionStepUp } = makeSessionKernel(drizzleQueryOperations, makeDrizzleSqlTables);
|
|
6
|
-
//#endregion
|
|
7
|
-
export { CurrentSessionSql, makeSqlAuthenticationAuthority, makeSqlPendingAuthentication, makeSqlSessionStepUp, makeSqlSignedValidity, makeSqlStatefulSessions };
|
|
8
|
-
|
|
9
|
-
//# sourceMappingURL=session-sql.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-sql.mjs","names":[],"sources":["../../src/drizzle/session-sql.ts"],"sourcesContent":["import { makeSessionKernel } from \"@yielded/auth-persistence/Adapter\";\n\nimport { makeDrizzleSqlTables } from \"./native-sql-table\";\nimport { drizzleQueryOperations } from \"./query-operations\";\nexport type { SessionSqlDatabase } from \"@yielded/auth-persistence/Adapter\";\nexport { CurrentSessionSql } from \"@yielded/auth-persistence/Adapter\";\nexport type { SessionSqlOptions } from \"@yielded/auth-persistence/Adapter\";\n\nexport const {\n makeSqlAuthenticationAuthority,\n makeSqlPendingAuthentication,\n makeSqlStatefulSessions,\n makeSqlSignedValidity,\n makeSqlSessionStepUp,\n} = makeSessionKernel(drizzleQueryOperations, makeDrizzleSqlTables);\n"],"mappings":";;;;AAQA,MAAa,EACX,gCACA,8BACA,yBACA,uBACA,yBACE,kBAAkB,wBAAwB,oBAAoB"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import "./session-sql.mjs";
|
|
2
|
-
import "./standalone-guard.mjs";
|
|
3
|
-
import { NativeDatabase } from "@yielded/auth-persistence/Adapter";
|
|
4
|
-
import { Context, Effect, Layer } from "effect";
|
|
5
|
-
import { HookConfigurationError, LifecycleHooks } from "@yielded/auth/Hooks";
|
|
6
|
-
import { AuthenticationAuthority, PendingAuthentication, SessionRepository, SessionStepUpPersistence, SessionUnavailable, SignedSessionValidity, StatefulSessionPersistence } from "@yielded/auth/Sessions";
|
|
7
|
-
import "effect/sql/SqlError";
|
|
8
|
-
//#region src/drizzle/session-target.d.ts
|
|
9
|
-
export declare const authenticationAuthorityLayer: <E, R>(services: Effect.Effect<{
|
|
10
|
-
readonly authenticationAuthority: AuthenticationAuthority["Service"];
|
|
11
|
-
}, E, R>) => Layer.Layer<AuthenticationAuthority, E, Exclude<R, import("effect/Scope").Scope>>;
|
|
12
|
-
export declare const statefulSessionLayers: <Claims, E, R>(module: {
|
|
13
|
-
readonly StatefulSessionPersistence: any;
|
|
14
|
-
readonly SessionRepository: any;
|
|
15
|
-
}, services: Effect.Effect<{
|
|
16
|
-
readonly statefulSessionPersistence: StatefulSessionPersistence<Claims>;
|
|
17
|
-
readonly sessionRepository: SessionRepository;
|
|
18
|
-
}, E, R>) => Layer.Layer<unknown, E, Exclude<R, import("effect/Scope").Scope>>;
|
|
19
|
-
export declare const pendingAuthenticationLayer: <Claims, E, R>(module: {
|
|
20
|
-
readonly PendingAuthentication: any;
|
|
21
|
-
}, services: Effect.Effect<{
|
|
22
|
-
readonly pendingAuthentication: PendingAuthentication<Claims>;
|
|
23
|
-
}, E, R>) => Layer.Layer<unknown, E, Exclude<R, import("effect/Scope").Scope>>;
|
|
24
|
-
export declare const signedSessionValidityLayer: <E, R>(module: {
|
|
25
|
-
readonly SignedSessionValidity: any;
|
|
26
|
-
}, services: Effect.Effect<{
|
|
27
|
-
readonly signedSessionValidity: SignedSessionValidity;
|
|
28
|
-
}, E, R>) => Layer.Layer<unknown, E, Exclude<R, import("effect/Scope").Scope>>;
|
|
29
|
-
//#endregion
|
|
30
|
-
//# sourceMappingURL=session-target.d.mts.map
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { validateDrizzleStorage } from "./storage-validation.mjs";
|
|
2
|
-
import { CurrentSessionSql, makeSqlAuthenticationAuthority, makeSqlPendingAuthentication, makeSqlSessionStepUp, makeSqlSignedValidity, makeSqlStatefulSessions } from "./session-sql.mjs";
|
|
3
|
-
import { sqlClientStandaloneGuard } from "./standalone-guard.mjs";
|
|
4
|
-
import { Effect, Layer } from "effect";
|
|
5
|
-
import { coordinateCommit, hasCommitScope } from "@yielded/auth/Hooks";
|
|
6
|
-
import { AuthenticationAuthority, SessionUnavailable } from "@yielded/auth/Sessions";
|
|
7
|
-
//#region src/drizzle/session-target.ts
|
|
8
|
-
const sqlClientSessionStandaloneGuard = (service) => sqlClientStandaloneGuard(service, () => SessionUnavailable.make({}));
|
|
9
|
-
const options = (configuration, transactionBound = false) => ({
|
|
10
|
-
coordinated: transactionBound,
|
|
11
|
-
mode: configuration.mode,
|
|
12
|
-
locking: configuration.locking,
|
|
13
|
-
standaloneGuard: transactionBound ? Effect.void : configuration.standaloneGuard
|
|
14
|
-
});
|
|
15
|
-
const makeTargetAuthenticationAuthorityServices = (mapping, configuration) => Effect.map(makeSqlAuthenticationAuthority(mapping, options(configuration)), (authenticationAuthority) => ({ authenticationAuthority }));
|
|
16
|
-
const makeTargetPendingAuthenticationServices = (mapping, configuration) => Effect.map(makeSqlPendingAuthentication(mapping, options(configuration)), (pendingAuthentication) => ({ pendingAuthentication }));
|
|
17
|
-
const makeTargetStatefulSessionServices = (mapping, configuration) => makeSqlStatefulSessions(mapping, options(configuration));
|
|
18
|
-
const makeTargetSignedSessionValidityServices = (mapping, configuration) => Effect.map(makeSqlSignedValidity(mapping, options(configuration)), (signedSessionValidity) => ({ signedSessionValidity }));
|
|
19
|
-
/**
|
|
20
|
-
* The native transaction is the root commit owner. Interruption or owner
|
|
21
|
-
* failure rolls it back and discards the child journal; this adapter performs
|
|
22
|
-
* no hidden retry. A caller that can safely retry must rerun the complete owner
|
|
23
|
-
* operation and prepare fresh bearer material. The low-level coordinator keeps
|
|
24
|
-
* caller failures intact, including Drizzle query wrappers, and exposes a
|
|
25
|
-
* native `SqlError` when transaction acquisition fails. Captured service
|
|
26
|
-
* operations normalize their own driver failures to `SessionUnavailable`.
|
|
27
|
-
*/
|
|
28
|
-
const coordinate = (database, configuration, mapping, make, owner) => Effect.gen(function* () {
|
|
29
|
-
if (yield* hasCommitScope) return yield* SessionUnavailable.make({});
|
|
30
|
-
yield* configuration.coordinatorGuard ?? configuration.standaloneGuard;
|
|
31
|
-
yield* validateDrizzleStorage(mapping).pipe(Effect.mapError(() => SessionUnavailable.make({})));
|
|
32
|
-
return (yield* coordinateCommit(() => database.transaction((transaction) => Effect.gen(function* () {
|
|
33
|
-
return yield* owner(transaction, yield* make(transaction));
|
|
34
|
-
}).pipe(Effect.provideService(CurrentSessionSql, transaction))), { mode: configuration.mode })).value;
|
|
35
|
-
});
|
|
36
|
-
const coordinateTargetAuthenticationAuthority = (database, mapping, configuration, owner) => coordinate(database, configuration, mapping, (transaction) => Effect.map(makeSqlAuthenticationAuthority(mapping, options(configuration, true)).pipe(Effect.provideService(CurrentSessionSql, transaction)), (authenticationAuthority) => ({ authenticationAuthority })), owner);
|
|
37
|
-
const coordinateTargetPendingAuthentication = (database, mapping, configuration, owner) => coordinate(database, configuration, mapping, (transaction) => Effect.map(makeSqlPendingAuthentication(mapping, options(configuration, true)).pipe(Effect.provideService(CurrentSessionSql, transaction)), (pendingAuthentication) => ({ pendingAuthentication })), owner);
|
|
38
|
-
const coordinateTargetStatefulSessions = (database, mapping, configuration, owner) => coordinate(database, configuration, mapping, (transaction) => makeSqlStatefulSessions(mapping, options(configuration, true)).pipe(Effect.provideService(CurrentSessionSql, transaction)), owner);
|
|
39
|
-
const coordinateTargetSignedSessionValidity = (database, mapping, configuration, owner) => coordinate(database, configuration, mapping, (transaction) => Effect.map(makeSqlSignedValidity(mapping, options(configuration, true)).pipe(Effect.provideService(CurrentSessionSql, transaction)), (signedSessionValidity) => ({ signedSessionValidity })), owner);
|
|
40
|
-
const authenticationAuthorityLayer = (services) => Layer.effect(AuthenticationAuthority, Effect.map(services, (value) => value.authenticationAuthority));
|
|
41
|
-
const statefulSessionLayers = (module, services) => Layer.merge(Layer.effect(module.StatefulSessionPersistence, Effect.map(services, (value) => value.statefulSessionPersistence)), Layer.effect(module.SessionRepository, Effect.map(services, (value) => value.sessionRepository)));
|
|
42
|
-
const pendingAuthenticationLayer = (module, services) => Layer.effect(module.PendingAuthentication, Effect.map(services, (value) => value.pendingAuthentication));
|
|
43
|
-
const signedSessionValidityLayer = (module, services) => Layer.effect(module.SignedSessionValidity, Effect.map(services, (value) => value.signedSessionValidity));
|
|
44
|
-
const makeTargetSessionStepUpServices = (mapping, target, configuration) => Effect.map(makeSqlSessionStepUp(mapping, options(configuration)), (sessionStepUpPersistence) => ({ sessionStepUpPersistence: target.of(sessionStepUpPersistence) }));
|
|
45
|
-
const coordinateTargetSessionStepUp = (database, mapping, target, configuration, owner) => coordinate(database, configuration, mapping, (transaction) => Effect.map(makeSqlSessionStepUp(mapping, options(configuration, true)).pipe(Effect.provideService(CurrentSessionSql, transaction)), (sessionStepUpPersistence) => ({ sessionStepUpPersistence: target.of(sessionStepUpPersistence) })), owner);
|
|
46
|
-
//#endregion
|
|
47
|
-
export { authenticationAuthorityLayer, coordinateTargetAuthenticationAuthority, coordinateTargetPendingAuthentication, coordinateTargetSessionStepUp, coordinateTargetSignedSessionValidity, coordinateTargetStatefulSessions, makeTargetAuthenticationAuthorityServices, makeTargetPendingAuthenticationServices, makeTargetSessionStepUpServices, makeTargetSignedSessionValidityServices, makeTargetStatefulSessionServices, pendingAuthenticationLayer, signedSessionValidityLayer, sqlClientSessionStandaloneGuard, statefulSessionLayers };
|
|
48
|
-
|
|
49
|
-
//# sourceMappingURL=session-target.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-target.mjs","names":[],"sources":["../../src/drizzle/session-target.ts"],"sourcesContent":["import type { NativeDatabase } from \"@yielded/auth-persistence/Adapter\";\nimport {\n coordinateCommit,\n hasCommitScope,\n type LifecycleHooks,\n type HookConfigurationError,\n} from \"@yielded/auth/Hooks\";\nimport {\n AuthenticationAuthority,\n SessionUnavailable,\n type PendingAuthentication,\n type SessionRepository,\n type SignedSessionValidity,\n type StatefulSessionPersistence,\n type SessionStepUpPersistence,\n} from \"@yielded/auth/Sessions\";\n/* oxlint-disable no-explicit-any -- target entrypoints restore each concrete Drizzle database/table type. */\nimport { type Context, Effect, Layer } from \"effect\";\nimport type * as SqlError from \"effect/sql/SqlError\";\n\nimport {\n makeSqlAuthenticationAuthority,\n makeSqlPendingAuthentication,\n makeSqlSignedValidity,\n makeSqlStatefulSessions,\n makeSqlSessionStepUp,\n CurrentSessionSql,\n type SessionSqlDatabase,\n type SessionSqlOptions,\n} from \"./session-sql\";\nimport { sqlClientStandaloneGuard, type TransactionService } from \"./standalone-guard\";\nimport { validateDrizzleStorage } from \"./storage-validation\";\n\nexport interface SessionTargetConfiguration {\n readonly mode: \"interactive\" | \"synchronous\";\n readonly locking: boolean;\n readonly standaloneGuard: Effect.Effect<void, SessionUnavailable>;\n readonly coordinatorGuard?: Effect.Effect<void, SessionUnavailable>;\n}\n\ninterface TransactionOwner<Transaction> {\n readonly transaction: <A, E, R>(\n body: (transaction: Transaction) => Effect.Effect<A, E, R>,\n ) => Effect.Effect<A, E | SqlError.SqlError, R>;\n}\n\ntype CoordinatorError<E> = E | SessionUnavailable | HookConfigurationError | SqlError.SqlError;\n\nexport const sqlClientSessionStandaloneGuard = (\n service: TransactionService | undefined,\n): Effect.Effect<void, SessionUnavailable> =>\n sqlClientStandaloneGuard(service, () => SessionUnavailable.make({}));\n\nconst options = (\n configuration: SessionTargetConfiguration,\n transactionBound = false,\n): SessionSqlOptions => ({\n coordinated: transactionBound,\n mode: configuration.mode,\n locking: configuration.locking,\n standaloneGuard: transactionBound ? Effect.void : configuration.standaloneGuard,\n});\n\nexport const makeTargetAuthenticationAuthorityServices = <Claims>(\n mapping: any,\n configuration: SessionTargetConfiguration,\n) =>\n Effect.map(\n makeSqlAuthenticationAuthority<Claims>(mapping, options(configuration)),\n (authenticationAuthority) => ({ authenticationAuthority }),\n );\n\nexport const makeTargetPendingAuthenticationServices = <Claims>(\n mapping: any,\n configuration: SessionTargetConfiguration,\n) =>\n Effect.map(\n makeSqlPendingAuthentication<Claims>(mapping, options(configuration)),\n (pendingAuthentication) => ({ pendingAuthentication }),\n );\n\nexport const makeTargetStatefulSessionServices = <Claims>(\n mapping: any,\n configuration: SessionTargetConfiguration,\n) => makeSqlStatefulSessions<Claims>(mapping, options(configuration));\n\nexport const makeTargetSignedSessionValidityServices = (\n mapping: any,\n configuration: SessionTargetConfiguration,\n) =>\n Effect.map(makeSqlSignedValidity(mapping, options(configuration)), (signedSessionValidity) => ({\n signedSessionValidity,\n }));\n\n/**\n * The native transaction is the root commit owner. Interruption or owner\n * failure rolls it back and discards the child journal; this adapter performs\n * no hidden retry. A caller that can safely retry must rerun the complete owner\n * operation and prepare fresh bearer material. The low-level coordinator keeps\n * caller failures intact, including Drizzle query wrappers, and exposes a\n * native `SqlError` when transaction acquisition fails. Captured service\n * operations normalize their own driver failures to `SessionUnavailable`.\n */\nconst coordinate = <Transaction, Services, A, E, R>(\n database: TransactionOwner<Transaction>,\n configuration: SessionTargetConfiguration,\n mapping: object,\n make: (\n transaction: Transaction,\n ) => Effect.Effect<Services, SessionUnavailable, LifecycleHooks | NativeDatabase>,\n owner: (transaction: Transaction, services: Services) => Effect.Effect<A, E, R>,\n): Effect.Effect<A, CoordinatorError<E>, R | LifecycleHooks | NativeDatabase> =>\n Effect.gen(function* (): Effect.fn.Return<\n A,\n CoordinatorError<E>,\n R | LifecycleHooks | NativeDatabase\n > {\n if (yield* hasCommitScope) return yield* SessionUnavailable.make({});\n yield* configuration.coordinatorGuard ?? configuration.standaloneGuard;\n\n yield* validateDrizzleStorage(mapping).pipe(Effect.mapError(() => SessionUnavailable.make({})));\n\n const result = yield* coordinateCommit(\n () =>\n database.transaction((transaction) =>\n Effect.gen(function* () {\n const services = yield* make(transaction);\n\n return yield* owner(transaction, services);\n }).pipe(\n Effect.provideService(CurrentSessionSql, transaction as unknown as SessionSqlDatabase),\n ),\n ),\n { mode: configuration.mode },\n );\n\n return result.value;\n });\n\nexport const coordinateTargetAuthenticationAuthority = <Claims, Transaction, A, E, R>(\n database: TransactionOwner<Transaction>,\n mapping: any,\n configuration: SessionTargetConfiguration,\n owner: (\n transaction: Transaction,\n services: { readonly authenticationAuthority: AuthenticationAuthority[\"Service\"] },\n ) => Effect.Effect<A, E, R>,\n) =>\n coordinate(\n database,\n configuration,\n mapping,\n (transaction) =>\n Effect.map(\n makeSqlAuthenticationAuthority<Claims>(mapping, options(configuration, true)).pipe(\n Effect.provideService(CurrentSessionSql, transaction as unknown as SessionSqlDatabase),\n ),\n (authenticationAuthority) => ({ authenticationAuthority }),\n ),\n owner,\n );\n\nexport const coordinateTargetPendingAuthentication = <Claims, Transaction, A, E, R>(\n database: TransactionOwner<Transaction>,\n mapping: any,\n configuration: SessionTargetConfiguration,\n owner: (\n transaction: Transaction,\n services: { readonly pendingAuthentication: PendingAuthentication<Claims> },\n ) => Effect.Effect<A, E, R>,\n) =>\n coordinate(\n database,\n configuration,\n mapping,\n (transaction) =>\n Effect.map(\n makeSqlPendingAuthentication<Claims>(mapping, options(configuration, true)).pipe(\n Effect.provideService(CurrentSessionSql, transaction as unknown as SessionSqlDatabase),\n ),\n (pendingAuthentication) => ({ pendingAuthentication }),\n ),\n owner,\n );\n\nexport const coordinateTargetStatefulSessions = <Claims, Transaction, A, E, R>(\n database: TransactionOwner<Transaction>,\n mapping: any,\n configuration: SessionTargetConfiguration,\n owner: (\n transaction: Transaction,\n services: {\n readonly statefulSessionPersistence: StatefulSessionPersistence<Claims>;\n readonly sessionRepository: SessionRepository;\n },\n ) => Effect.Effect<A, E, R>,\n) =>\n coordinate(\n database,\n configuration,\n mapping,\n (transaction) =>\n makeSqlStatefulSessions<Claims>(mapping, options(configuration, true)).pipe(\n Effect.provideService(CurrentSessionSql, transaction as unknown as SessionSqlDatabase),\n ),\n owner,\n );\n\nexport const coordinateTargetSignedSessionValidity = <Transaction, A, E, R>(\n database: TransactionOwner<Transaction>,\n mapping: any,\n configuration: SessionTargetConfiguration,\n owner: (\n transaction: Transaction,\n services: { readonly signedSessionValidity: SignedSessionValidity },\n ) => Effect.Effect<A, E, R>,\n) =>\n coordinate(\n database,\n configuration,\n mapping,\n (transaction) =>\n Effect.map(\n makeSqlSignedValidity(mapping, options(configuration, true)).pipe(\n Effect.provideService(CurrentSessionSql, transaction as unknown as SessionSqlDatabase),\n ),\n (signedSessionValidity) => ({ signedSessionValidity }),\n ),\n owner,\n );\n\nexport const authenticationAuthorityLayer = <E, R>(\n services: Effect.Effect<\n {\n readonly authenticationAuthority: AuthenticationAuthority[\"Service\"];\n },\n E,\n R\n >,\n) =>\n Layer.effect(\n AuthenticationAuthority,\n Effect.map(services, (value) => value.authenticationAuthority),\n );\n\nexport const statefulSessionLayers = <Claims, E, R>(\n module: {\n readonly StatefulSessionPersistence: any;\n readonly SessionRepository: any;\n },\n services: Effect.Effect<\n {\n readonly statefulSessionPersistence: StatefulSessionPersistence<Claims>;\n readonly sessionRepository: SessionRepository;\n },\n E,\n R\n >,\n) =>\n Layer.merge(\n Layer.effect(\n module.StatefulSessionPersistence,\n Effect.map(services, (value) => value.statefulSessionPersistence),\n ),\n Layer.effect(\n module.SessionRepository,\n Effect.map(services, (value) => value.sessionRepository),\n ),\n );\n\nexport const pendingAuthenticationLayer = <Claims, E, R>(\n module: { readonly PendingAuthentication: any },\n services: Effect.Effect<\n {\n readonly pendingAuthentication: PendingAuthentication<Claims>;\n },\n E,\n R\n >,\n) =>\n Layer.effect(\n module.PendingAuthentication,\n Effect.map(services, (value) => value.pendingAuthentication),\n );\n\nexport const signedSessionValidityLayer = <E, R>(\n module: { readonly SignedSessionValidity: any },\n services: Effect.Effect<\n {\n readonly signedSessionValidity: SignedSessionValidity;\n },\n E,\n R\n >,\n) =>\n Layer.effect(\n module.SignedSessionValidity,\n Effect.map(services, (value) => value.signedSessionValidity),\n );\n\nexport const makeTargetSessionStepUpServices = <Claims, Id>(\n mapping: any,\n target: Context.Service<Id, SessionStepUpPersistence<Claims>>,\n configuration: SessionTargetConfiguration,\n) =>\n Effect.map(\n makeSqlSessionStepUp<Claims>(mapping, options(configuration)),\n (sessionStepUpPersistence) => ({\n sessionStepUpPersistence: target.of(sessionStepUpPersistence),\n }),\n );\n\nexport const coordinateTargetSessionStepUp = <Claims, Id, Transaction, A, E, R>(\n database: TransactionOwner<Transaction>,\n mapping: any,\n target: Context.Service<Id, SessionStepUpPersistence<Claims>>,\n configuration: SessionTargetConfiguration,\n owner: (\n transaction: Transaction,\n services: { readonly sessionStepUpPersistence: SessionStepUpPersistence<Claims> },\n ) => Effect.Effect<A, E, R>,\n) =>\n coordinate(\n database,\n configuration,\n mapping,\n (transaction) =>\n Effect.map(\n makeSqlSessionStepUp<Claims>(mapping, options(configuration, true)).pipe(\n Effect.provideService(CurrentSessionSql, transaction as unknown as SessionSqlDatabase),\n ),\n (sessionStepUpPersistence) => ({\n sessionStepUpPersistence: target.of(sessionStepUpPersistence),\n }),\n ),\n owner,\n );\n"],"mappings":";;;;;;;AAgDA,MAAa,mCACX,YAEA,yBAAyB,eAAe,mBAAmB,KAAK,CAAC,CAAC,CAAC;AAErE,MAAM,WACJ,eACA,mBAAmB,WACI;CACvB,aAAa;CACb,MAAM,cAAc;CACpB,SAAS,cAAc;CACvB,iBAAiB,mBAAmB,OAAO,OAAO,cAAc;AAClE;AAEA,MAAa,6CACX,SACA,kBAEA,OAAO,IACL,+BAAuC,SAAS,QAAQ,aAAa,CAAC,IACrE,6BAA6B,EAAE,wBAAwB,EAC1D;AAEF,MAAa,2CACX,SACA,kBAEA,OAAO,IACL,6BAAqC,SAAS,QAAQ,aAAa,CAAC,IACnE,2BAA2B,EAAE,sBAAsB,EACtD;AAEF,MAAa,qCACX,SACA,kBACG,wBAAgC,SAAS,QAAQ,aAAa,CAAC;AAEpE,MAAa,2CACX,SACA,kBAEA,OAAO,IAAI,sBAAsB,SAAS,QAAQ,aAAa,CAAC,IAAI,2BAA2B,EAC7F,sBACF,EAAE;;;;;;;;;;AAWJ,MAAM,cACJ,UACA,eACA,SACA,MAGA,UAEA,OAAO,IAAI,aAIT;CACA,IAAI,OAAO,gBAAgB,OAAO,OAAO,mBAAmB,KAAK,CAAC,CAAC;CACnE,OAAO,cAAc,oBAAoB,cAAc;CAEvD,OAAO,uBAAuB,OAAO,CAAC,CAAC,KAAK,OAAO,eAAe,mBAAmB,KAAK,CAAC,CAAC,CAAC,CAAC;CAgB9F,QAAO,OAde,uBAElB,SAAS,aAAa,gBACpB,OAAO,IAAI,aAAa;EAGtB,OAAO,OAAO,MAAM,aAAa,OAFT,KAAK,WAAW,CAEC;CAC3C,CAAC,CAAC,CAAC,KACD,OAAO,eAAe,mBAAmB,WAA4C,CACvF,CACF,GACF,EAAE,MAAM,cAAc,KAAK,CAC7B,EAAA,CAEc;AAChB,CAAC;AAEH,MAAa,2CACX,UACA,SACA,eACA,UAKA,WACE,UACA,eACA,UACC,gBACC,OAAO,IACL,+BAAuC,SAAS,QAAQ,eAAe,IAAI,CAAC,CAAC,CAAC,KAC5E,OAAO,eAAe,mBAAmB,WAA4C,CACvF,IACC,6BAA6B,EAAE,wBAAwB,EAC1D,GACF,KACF;AAEF,MAAa,yCACX,UACA,SACA,eACA,UAKA,WACE,UACA,eACA,UACC,gBACC,OAAO,IACL,6BAAqC,SAAS,QAAQ,eAAe,IAAI,CAAC,CAAC,CAAC,KAC1E,OAAO,eAAe,mBAAmB,WAA4C,CACvF,IACC,2BAA2B,EAAE,sBAAsB,EACtD,GACF,KACF;AAEF,MAAa,oCACX,UACA,SACA,eACA,UAQA,WACE,UACA,eACA,UACC,gBACC,wBAAgC,SAAS,QAAQ,eAAe,IAAI,CAAC,CAAC,CAAC,KACrE,OAAO,eAAe,mBAAmB,WAA4C,CACvF,GACF,KACF;AAEF,MAAa,yCACX,UACA,SACA,eACA,UAKA,WACE,UACA,eACA,UACC,gBACC,OAAO,IACL,sBAAsB,SAAS,QAAQ,eAAe,IAAI,CAAC,CAAC,CAAC,KAC3D,OAAO,eAAe,mBAAmB,WAA4C,CACvF,IACC,2BAA2B,EAAE,sBAAsB,EACtD,GACF,KACF;AAEF,MAAa,gCACX,aAQA,MAAM,OACJ,yBACA,OAAO,IAAI,WAAW,UAAU,MAAM,uBAAuB,CAC/D;AAEF,MAAa,yBACX,QAIA,aASA,MAAM,MACJ,MAAM,OACJ,OAAO,4BACP,OAAO,IAAI,WAAW,UAAU,MAAM,0BAA0B,CAClE,GACA,MAAM,OACJ,OAAO,mBACP,OAAO,IAAI,WAAW,UAAU,MAAM,iBAAiB,CACzD,CACF;AAEF,MAAa,8BACX,QACA,aAQA,MAAM,OACJ,OAAO,uBACP,OAAO,IAAI,WAAW,UAAU,MAAM,qBAAqB,CAC7D;AAEF,MAAa,8BACX,QACA,aAQA,MAAM,OACJ,OAAO,uBACP,OAAO,IAAI,WAAW,UAAU,MAAM,qBAAqB,CAC7D;AAEF,MAAa,mCACX,SACA,QACA,kBAEA,OAAO,IACL,qBAA6B,SAAS,QAAQ,aAAa,CAAC,IAC3D,8BAA8B,EAC7B,0BAA0B,OAAO,GAAG,wBAAwB,EAC9D,EACF;AAEF,MAAa,iCACX,UACA,SACA,QACA,eACA,UAKA,WACE,UACA,eACA,UACC,gBACC,OAAO,IACL,qBAA6B,SAAS,QAAQ,eAAe,IAAI,CAAC,CAAC,CAAC,KAClE,OAAO,eAAe,mBAAmB,WAA4C,CACvF,IACC,8BAA8B,EAC7B,0BAA0B,OAAO,GAAG,wBAAwB,EAC9D,EACF,GACF,KACF"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { acquireTransactionService, transactionService } from "./standalone-guard.mjs";
|
|
2
|
-
import { CurrentEmailSql } from "./email-sql.mjs";
|
|
3
|
-
import { coordinateTargetEmailAddress, coordinateTargetEmailRegistration, makeTargetEmailAddressServices, makeTargetEmailRegistrationServices, makeTargetEmailSignInServices } from "./email-target.mjs";
|
|
4
|
-
import { nativeDatabase } from "./native-database.mjs";
|
|
5
|
-
import { NativeDatabase } from "@yielded/auth-persistence/Adapter";
|
|
6
|
-
import { Context, Effect } from "effect";
|
|
7
|
-
import { EmailAddressPersistence } from "@yielded/auth/Email";
|
|
8
|
-
//#region src/drizzle/sqlite-emails.ts
|
|
9
|
-
const sqliteEmailConfiguration = (mode, standaloneGuard, proofStandaloneGuard, coordinatorGuard) => ({
|
|
10
|
-
mode,
|
|
11
|
-
locking: false,
|
|
12
|
-
standaloneGuard,
|
|
13
|
-
...coordinatorGuard === void 0 ? {} : { coordinatorGuard },
|
|
14
|
-
generatedSubjectRows: (query) => query.returning(),
|
|
15
|
-
proof: {
|
|
16
|
-
mode,
|
|
17
|
-
locking: false,
|
|
18
|
-
standaloneGuard: proofStandaloneGuard,
|
|
19
|
-
insertIfAbsent: (query) => query.onConflictDoNothing()
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
const makeSqliteEmailTarget = (databaseService, configuration) => {
|
|
23
|
-
const configurationFor = (database) => typeof configuration === "function" ? configuration(transactionService(database)) : configuration;
|
|
24
|
-
const standaloneConfiguration = typeof configuration === "function" ? Effect.map(acquireTransactionService(databaseService), configuration) : Effect.succeed(configuration);
|
|
25
|
-
function coordinateEmailAddress(acquire, options, body) {
|
|
26
|
-
return Effect.flatMap(nativeDatabase(acquire), (database) => coordinateTargetEmailAddress(database, options.mapping, options.proofMapping, configurationFor(database), (transaction, services) => {
|
|
27
|
-
const provided = Context.make(EmailAddressPersistence, services.emailAddressPersistence);
|
|
28
|
-
const work = Effect.provideContext(body, provided);
|
|
29
|
-
return options.transaction === void 0 ? work : Effect.provideService(work, options.transaction, options.transaction.of(transaction));
|
|
30
|
-
}).pipe(Effect.provideService(NativeDatabase, database)));
|
|
31
|
-
}
|
|
32
|
-
function coordinateEmailRegistration(acquire, options, body) {
|
|
33
|
-
return Effect.flatMap(nativeDatabase(acquire), (database) => coordinateTargetEmailRegistration(database, options.mapping, options.proofMapping, configurationFor(database), (transaction, services) => {
|
|
34
|
-
const provided = Context.make(options.target, services.registrationAuthority);
|
|
35
|
-
const work = Effect.provideContext(body, provided);
|
|
36
|
-
return options.transaction === void 0 ? work : Effect.provideService(work, options.transaction, options.transaction.of(transaction));
|
|
37
|
-
}).pipe(Effect.provideService(NativeDatabase, database)));
|
|
38
|
-
}
|
|
39
|
-
return {
|
|
40
|
-
makeEmailSignInServices: (mapping) => Effect.flatMap(standaloneConfiguration, (configuration) => makeTargetEmailSignInServices(mapping, configuration)).pipe(Effect.provideServiceEffect(CurrentEmailSql, nativeDatabase(databaseService)), Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService))),
|
|
41
|
-
makeEmailAddressServices: (mapping, proofMapping) => Effect.flatMap(standaloneConfiguration, (configuration) => makeTargetEmailAddressServices(mapping, proofMapping, configuration)).pipe(Effect.provideServiceEffect(CurrentEmailSql, nativeDatabase(databaseService)), Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService))),
|
|
42
|
-
coordinateEmailAddress,
|
|
43
|
-
makeEmailRegistrationServices: (mapping, proofMapping) => Effect.flatMap(standaloneConfiguration, (configuration) => makeTargetEmailRegistrationServices(mapping, proofMapping, configuration)).pipe(Effect.provideServiceEffect(CurrentEmailSql, nativeDatabase(databaseService)), Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService))),
|
|
44
|
-
coordinateEmailRegistration
|
|
45
|
-
};
|
|
46
|
-
};
|
|
47
|
-
//#endregion
|
|
48
|
-
export { makeSqliteEmailTarget, sqliteEmailConfiguration };
|
|
49
|
-
|
|
50
|
-
//# sourceMappingURL=sqlite-emails.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-emails.mjs","names":[],"sources":["../../src/drizzle/sqlite-emails.ts"],"sourcesContent":["import { NativeDatabase } from \"@yielded/auth-persistence/Adapter\";\nimport { EmailAddressPersistence, type EmailUnavailable } from \"@yielded/auth/Email\";\nimport type { LifecycleHooks, HookConfigurationError } from \"@yielded/auth/Hooks\";\n/* oxlint-disable no-explicit-any -- proof mapping tables are independently typed by the proof owner; this driver forwards them unchanged to the shared target. */\nimport type { AnyRelations } from \"drizzle-orm\";\nimport type { EffectLibsqlDatabase } from \"drizzle-orm/effect-libsql\";\nimport type { EffectSQLiteBunDatabase } from \"drizzle-orm/effect-sqlite-bun\";\nimport type { EffectSQLiteNodeDatabase as NodeDatabase } from \"drizzle-orm/effect-sqlite-node\";\nimport type { EffectSQLiteWasmDatabase as WasmDatabase } from \"drizzle-orm/effect-sqlite-wasm\";\nimport type { AnySQLiteTable } from \"drizzle-orm/sqlite-core\";\nimport { Effect, Context } from \"effect\";\nimport type { SqlError } from \"effect/sql/SqlError\";\n\nimport type {\n EmailAddressMapping,\n EmailRegistrationMapping,\n EmailSignInMapping,\n} from \"./email-model\";\nimport type { EmailRegistrationAuthority } from \"./email-registration\";\nimport { CurrentEmailSql } from \"./email-sql\";\nimport type { EmailSqlQuery } from \"./email-sql\";\nimport {\n coordinateTargetEmailAddress,\n coordinateTargetEmailRegistration,\n makeTargetEmailAddressServices,\n makeTargetEmailRegistrationServices,\n makeTargetEmailSignInServices,\n type EmailTargetConfiguration,\n} from \"./email-target\";\nimport { nativeDatabase } from \"./native-database\";\nimport type { ProofPersistenceMapping } from \"./proof-model\";\nimport type { ProofSqlQuery } from \"./proof-sql\";\nimport type { DatabaseValue as DODatabase } from \"./sqlite-do-database\";\nimport {\n type TransactionService,\n acquireTransactionService,\n transactionService,\n} from \"./standalone-guard\";\nimport type { SuppliedService } from \"./SuppliedService\";\n\nexport type SqliteEmailDatabase =\n | NodeDatabase<AnyRelations>\n | EffectSQLiteBunDatabase<AnyRelations>\n | EffectLibsqlDatabase<AnyRelations>\n | WasmDatabase<AnyRelations>\n | DODatabase<AnyRelations>;\n\ntype TransactionOf<D extends SqliteEmailDatabase> = Parameters<Parameters<D[\"transaction\"]>[0]>[0];\ntype ProofMapping = ProofPersistenceMapping<\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any\n>;\n\nexport const sqliteEmailConfiguration = (\n mode: \"interactive\" | \"synchronous\",\n standaloneGuard: EmailTargetConfiguration[\"standaloneGuard\"],\n proofStandaloneGuard: EmailTargetConfiguration[\"proof\"][\"standaloneGuard\"],\n coordinatorGuard?: EmailTargetConfiguration[\"coordinatorGuard\"],\n): EmailTargetConfiguration => ({\n mode,\n locking: false,\n standaloneGuard,\n ...(coordinatorGuard === undefined ? {} : { coordinatorGuard }),\n generatedSubjectRows: (query: EmailSqlQuery) => query.returning(),\n proof: {\n mode,\n locking: false,\n standaloneGuard: proofStandaloneGuard,\n insertIfAbsent: (query: ProofSqlQuery) => query.onConflictDoNothing(),\n },\n});\n\nexport const makeSqliteEmailTarget = <\n DatabaseId,\n D extends SqliteEmailDatabase,\n Synchronous extends boolean = false,\n>(\n databaseService: Context.Service<DatabaseId, D>,\n configuration:\n | EmailTargetConfiguration\n | ((service: TransactionService | undefined) => EmailTargetConfiguration),\n) => {\n const configurationFor = (database: D) =>\n typeof configuration === \"function\"\n ? configuration(transactionService(database))\n : configuration;\n\n const standaloneConfiguration =\n typeof configuration === \"function\"\n ? Effect.map(acquireTransactionService(databaseService), configuration)\n : Effect.succeed(configuration);\n\n function coordinateEmailAddress<\n Database extends D,\n S extends AnySQLiteTable,\n I extends AnySQLiteTable,\n C extends AnySQLiteTable,\n AC extends AnySQLiteTable,\n M extends AnySQLiteTable,\n NativeId,\n Out,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: EmailAddressMapping<S, I, C, AC, M, NativeId>;\n readonly proofMapping: ProofMapping;\n readonly transaction?: never;\n },\n body: Effect.Effect<Out, E, Synchronous extends true ? NoInfer<EmailAddressPersistence> : R>,\n ): Effect.Effect<\n Out,\n E | EmailUnavailable | HookConfigurationError | SqlError | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, EmailAddressPersistence>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateEmailAddress<\n Database extends D,\n S extends AnySQLiteTable,\n I extends AnySQLiteTable,\n C extends AnySQLiteTable,\n AC extends AnySQLiteTable,\n M extends AnySQLiteTable,\n NativeId,\n Out,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: EmailAddressMapping<S, I, C, AC, M, NativeId>;\n readonly proofMapping: ProofMapping;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<\n Out,\n E,\n Synchronous extends true ? NoInfer<EmailAddressPersistence | TxId> : R\n >,\n ): Effect.Effect<\n Out,\n E | EmailUnavailable | HookConfigurationError | SqlError | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, EmailAddressPersistence | TxId>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateEmailAddress<\n Database extends D,\n S extends AnySQLiteTable,\n I extends AnySQLiteTable,\n C extends AnySQLiteTable,\n AC extends AnySQLiteTable,\n M extends AnySQLiteTable,\n NativeId,\n Out,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: EmailAddressMapping<S, I, C, AC, M, NativeId>;\n readonly proofMapping: ProofMapping;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<Out, E, R>,\n ): Effect.Effect<\n Out,\n E | EmailUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, EmailAddressPersistence> | LifecycleHooks | DatabaseRequirements\n > {\n return Effect.flatMap(nativeDatabase(acquire), (database) =>\n coordinateTargetEmailAddress<\n TransactionOf<Database>,\n Out,\n E,\n Exclude<R, EmailAddressPersistence>\n >(\n database,\n options.mapping,\n options.proofMapping,\n configurationFor(database),\n (\n transaction: TransactionOf<Database>,\n services: { readonly emailAddressPersistence: EmailAddressPersistence[\"Service\"] },\n ) => {\n const provided = Context.make(EmailAddressPersistence, services.emailAddressPersistence);\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ).pipe(Effect.provideService(NativeDatabase, database)),\n );\n }\n function coordinateEmailRegistration<\n Database extends D,\n TargetId,\n Registration,\n S extends AnySQLiteTable,\n I extends AnySQLiteTable,\n C extends AnySQLiteTable,\n AC extends AnySQLiteTable,\n Rq extends AnySQLiteTable,\n NativeId,\n Out,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: EmailRegistrationMapping<NoInfer<Registration>, S, I, C, AC, Rq, NativeId>;\n readonly proofMapping: ProofMapping;\n readonly target: SuppliedService<TargetId, EmailRegistrationAuthority<Registration>>;\n readonly transaction?: never;\n },\n body: Effect.Effect<Out, E, Synchronous extends true ? NoInfer<TargetId> : R>,\n ): Effect.Effect<\n Out,\n E | EmailUnavailable | HookConfigurationError | SqlError | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, TargetId>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateEmailRegistration<\n Database extends D,\n TargetId,\n Registration,\n S extends AnySQLiteTable,\n I extends AnySQLiteTable,\n C extends AnySQLiteTable,\n AC extends AnySQLiteTable,\n Rq extends AnySQLiteTable,\n NativeId,\n Out,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: EmailRegistrationMapping<NoInfer<Registration>, S, I, C, AC, Rq, NativeId>;\n readonly proofMapping: ProofMapping;\n readonly target: SuppliedService<TargetId, EmailRegistrationAuthority<Registration>>;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<Out, E, Synchronous extends true ? NoInfer<TargetId | TxId> : R>,\n ): Effect.Effect<\n Out,\n E | EmailUnavailable | HookConfigurationError | SqlError | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, TargetId | TxId>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateEmailRegistration<\n Database extends D,\n TargetId,\n Registration,\n S extends AnySQLiteTable,\n I extends AnySQLiteTable,\n C extends AnySQLiteTable,\n AC extends AnySQLiteTable,\n Rq extends AnySQLiteTable,\n NativeId,\n Out,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: EmailRegistrationMapping<NoInfer<Registration>, S, I, C, AC, Rq, NativeId>;\n readonly proofMapping: ProofMapping;\n readonly target: SuppliedService<TargetId, EmailRegistrationAuthority<Registration>>;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<Out, E, R>,\n ): Effect.Effect<\n Out,\n E | EmailUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements\n > {\n return Effect.flatMap(nativeDatabase(acquire), (database) =>\n coordinateTargetEmailRegistration<\n Registration,\n TransactionOf<Database>,\n Out,\n E,\n Exclude<R, TargetId>\n >(\n database,\n options.mapping,\n options.proofMapping,\n configurationFor(database),\n (\n transaction: TransactionOf<Database>,\n services: { readonly registrationAuthority: EmailRegistrationAuthority<Registration> },\n ) => {\n const provided = Context.make(options.target, services.registrationAuthority);\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ).pipe(Effect.provideService(NativeDatabase, database)),\n );\n }\n\n return {\n makeEmailSignInServices: <\n S extends AnySQLiteTable,\n I extends AnySQLiteTable,\n C extends AnySQLiteTable,\n NativeId,\n >(\n mapping: EmailSignInMapping<S, I, C, NativeId>,\n ) =>\n Effect.flatMap(standaloneConfiguration, (configuration) =>\n makeTargetEmailSignInServices(mapping, configuration),\n ).pipe(\n Effect.provideServiceEffect(CurrentEmailSql, nativeDatabase(databaseService)),\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),\n ),\n makeEmailAddressServices: <\n S extends AnySQLiteTable,\n I extends AnySQLiteTable,\n C extends AnySQLiteTable,\n AC extends AnySQLiteTable,\n M extends AnySQLiteTable,\n NativeId,\n >(\n mapping: EmailAddressMapping<S, I, C, AC, M, NativeId>,\n proofMapping: ProofMapping,\n ) =>\n Effect.flatMap(standaloneConfiguration, (configuration) =>\n makeTargetEmailAddressServices(mapping, proofMapping, configuration),\n ).pipe(\n Effect.provideServiceEffect(CurrentEmailSql, nativeDatabase(databaseService)),\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),\n ),\n coordinateEmailAddress,\n makeEmailRegistrationServices: <\n Registration,\n S extends AnySQLiteTable,\n I extends AnySQLiteTable,\n C extends AnySQLiteTable,\n AC extends AnySQLiteTable,\n Rq extends AnySQLiteTable,\n NativeId,\n >(\n mapping: EmailRegistrationMapping<Registration, S, I, C, AC, Rq, NativeId>,\n proofMapping: ProofMapping,\n ) =>\n Effect.flatMap(standaloneConfiguration, (configuration) =>\n makeTargetEmailRegistrationServices<Registration>(mapping, proofMapping, configuration),\n ).pipe(\n Effect.provideServiceEffect(CurrentEmailSql, nativeDatabase(databaseService)),\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),\n ),\n coordinateEmailRegistration,\n };\n};\n"],"mappings":";;;;;;;;AA+DA,MAAa,4BACX,MACA,iBACA,sBACA,sBAC8B;CAC9B;CACA,SAAS;CACT;CACA,GAAI,qBAAqB,KAAA,IAAY,CAAC,IAAI,EAAE,iBAAiB;CAC7D,uBAAuB,UAAyB,MAAM,UAAU;CAChE,OAAO;EACL;EACA,SAAS;EACT,iBAAiB;EACjB,iBAAiB,UAAyB,MAAM,oBAAoB;CACtE;AACF;AAEA,MAAa,yBAKX,iBACA,kBAGG;CACH,MAAM,oBAAoB,aACxB,OAAO,kBAAkB,aACrB,cAAc,mBAAmB,QAAQ,CAAC,IAC1C;CAEN,MAAM,0BACJ,OAAO,kBAAkB,aACrB,OAAO,IAAI,0BAA0B,eAAe,GAAG,aAAa,IACpE,OAAO,QAAQ,aAAa;CAgElC,SAAS,uBAgBP,SACA,SAKA,MAKA;EACA,OAAO,OAAO,QAAQ,eAAe,OAAO,IAAI,aAC9C,6BAME,UACA,QAAQ,SACR,QAAQ,cACR,iBAAiB,QAAQ,IAEvB,aACA,aACG;GACH,MAAM,WAAW,QAAQ,KAAK,yBAAyB,SAAS,uBAAuB;GACvF,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;GAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;EAC1F,CACF,CAAC,CAAC,KAAK,OAAO,eAAe,gBAAgB,QAAQ,CAAC,CACxD;CACF;CAiEA,SAAS,4BAkBP,SACA,SAMA,MAKA;EACA,OAAO,OAAO,QAAQ,eAAe,OAAO,IAAI,aAC9C,kCAOE,UACA,QAAQ,SACR,QAAQ,cACR,iBAAiB,QAAQ,IAEvB,aACA,aACG;GACH,MAAM,WAAW,QAAQ,KAAK,QAAQ,QAAQ,SAAS,qBAAqB;GAC5E,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;GAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;EAC1F,CACF,CAAC,CAAC,KAAK,OAAO,eAAe,gBAAgB,QAAQ,CAAC,CACxD;CACF;CAEA,OAAO;EACL,0BAME,YAEA,OAAO,QAAQ,0BAA0B,kBACvC,8BAA8B,SAAS,aAAa,CACtD,CAAC,CAAC,KACA,OAAO,qBAAqB,iBAAiB,eAAe,eAAe,CAAC,GAC5E,OAAO,qBAAqB,gBAAgB,eAAe,eAAe,CAAC,CAC7E;EACF,2BAQE,SACA,iBAEA,OAAO,QAAQ,0BAA0B,kBACvC,+BAA+B,SAAS,cAAc,aAAa,CACrE,CAAC,CAAC,KACA,OAAO,qBAAqB,iBAAiB,eAAe,eAAe,CAAC,GAC5E,OAAO,qBAAqB,gBAAgB,eAAe,eAAe,CAAC,CAC7E;EACF;EACA,gCASE,SACA,iBAEA,OAAO,QAAQ,0BAA0B,kBACvC,oCAAkD,SAAS,cAAc,aAAa,CACxF,CAAC,CAAC,KACA,OAAO,qBAAqB,iBAAiB,eAAe,eAAe,CAAC,GAC5E,OAAO,qBAAqB,gBAAgB,eAAe,eAAe,CAAC,CAC7E;EACF;CACF;AACF"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { acquireTransactionService, transactionService } from "./standalone-guard.mjs";
|
|
2
|
-
import { CurrentPasswordSql } from "./password-sql.mjs";
|
|
3
|
-
import { coordinateTargetPasswordPreparedPersistence, makeTargetPasswordPreparedPersistenceServices } from "./password-prepared-target.mjs";
|
|
4
|
-
import { nativeDatabase } from "./native-database.mjs";
|
|
5
|
-
import { NativeDatabase } from "@yielded/auth-persistence/Adapter";
|
|
6
|
-
import { Context, Effect } from "effect";
|
|
7
|
-
//#region src/drizzle/sqlite-password-prepared.ts
|
|
8
|
-
const makeSqlitePasswordPreparedTarget = (databaseService, configuration) => {
|
|
9
|
-
const configurationFor = (database) => typeof configuration === "function" ? configuration(transactionService(database)) : configuration;
|
|
10
|
-
const standaloneConfiguration = typeof configuration === "function" ? Effect.map(acquireTransactionService(databaseService), configuration) : Effect.succeed(configuration);
|
|
11
|
-
function coordinatePasswordPreparedPersistence(acquire, options, body) {
|
|
12
|
-
return Effect.flatMap(nativeDatabase(acquire), (database) => coordinateTargetPasswordPreparedPersistence(database, options.mapping, configurationFor(database), options.proofMapping, (transaction, services) => {
|
|
13
|
-
const provided = Context.make(options.target, services.passwordPreparedPersistence);
|
|
14
|
-
const work = Effect.provideContext(body, provided);
|
|
15
|
-
return options.transaction === void 0 ? work : Effect.provideService(work, options.transaction, options.transaction.of(transaction));
|
|
16
|
-
}).pipe(Effect.provideService(NativeDatabase, database)));
|
|
17
|
-
}
|
|
18
|
-
return {
|
|
19
|
-
makePasswordPreparedPersistenceServices: (mapping, proofMapping) => Effect.flatMap(standaloneConfiguration, (configuration) => makeTargetPasswordPreparedPersistenceServices(mapping, configuration, proofMapping)).pipe(Effect.provideServiceEffect(CurrentPasswordSql, nativeDatabase(databaseService)), Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService))),
|
|
20
|
-
coordinatePasswordPreparedPersistence
|
|
21
|
-
};
|
|
22
|
-
};
|
|
23
|
-
//#endregion
|
|
24
|
-
export { makeSqlitePasswordPreparedTarget };
|
|
25
|
-
|
|
26
|
-
//# sourceMappingURL=sqlite-password-prepared.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-password-prepared.mjs","names":[],"sources":["../../src/drizzle/sqlite-password-prepared.ts"],"sourcesContent":["import { NativeDatabase } from \"@yielded/auth-persistence/Adapter\";\nimport type { LifecycleHooks, HookConfigurationError } from \"@yielded/auth/Hooks\";\nimport type { PasswordUnavailable, PasswordPreparedPersistence } from \"@yielded/auth/Password\";\nimport type { AnySQLiteTable } from \"drizzle-orm/sqlite-core\";\nimport { Effect, Context } from \"effect\";\nimport type { SqlError } from \"effect/sql/SqlError\";\n\nimport { nativeDatabase } from \"./native-database\";\nimport type {\n PasswordPreparedPersistenceMapping,\n PasswordPreparedProofMapping,\n} from \"./password-prepared-model\";\nimport {\n makeTargetPasswordPreparedPersistenceServices,\n coordinateTargetPasswordPreparedPersistence,\n} from \"./password-prepared-target\";\nimport { CurrentPasswordSql } from \"./password-sql\";\nimport type { PasswordTargetConfiguration } from \"./password-target\";\nimport type { SqlitePasswordDatabase } from \"./sqlite-passwords\";\nimport {\n type TransactionService,\n acquireTransactionService,\n transactionService,\n} from \"./standalone-guard\";\nimport type { SuppliedService } from \"./SuppliedService\";\ntype TransactionOf<D extends SqlitePasswordDatabase> = Parameters<\n Parameters<D[\"transaction\"]>[0]\n>[0];\n\nexport const makeSqlitePasswordPreparedTarget = <\n DatabaseId,\n D extends SqlitePasswordDatabase,\n Synchronous extends boolean = false,\n>(\n databaseService: Context.Service<DatabaseId, D>,\n configuration:\n | PasswordTargetConfiguration\n | ((service: TransactionService | undefined) => PasswordTargetConfiguration),\n) => {\n const configurationFor = (database: D) =>\n typeof configuration === \"function\"\n ? configuration(transactionService(database))\n : configuration;\n\n const standaloneConfiguration =\n typeof configuration === \"function\"\n ? Effect.map(acquireTransactionService(databaseService), configuration)\n : Effect.succeed(configuration);\n\n function coordinatePasswordPreparedPersistence<\n Database extends D,\n TargetId,\n S extends AnySQLiteTable,\n I extends AnySQLiteTable,\n C extends AnySQLiteTable,\n AC extends AnySQLiteTable,\n M extends AnySQLiteTable,\n T extends AnySQLiteTable,\n B extends AnySQLiteTable,\n NativeId,\n PS extends AnySQLiteTable,\n PC extends AnySQLiteTable,\n PM extends AnySQLiteTable,\n PSub extends AnySQLiteTable,\n PI extends AnySQLiteTable,\n PCr extends AnySQLiteTable,\n PNativeId,\n Out,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasswordPreparedPersistenceMapping<S, I, C, AC, M, T, B, NativeId>;\n readonly proofMapping?:\n | PasswordPreparedProofMapping<PS, PC, PM, PSub, PI, PCr, PNativeId>\n | undefined;\n readonly target: SuppliedService<TargetId, PasswordPreparedPersistence>;\n readonly transaction?: never;\n },\n body: Effect.Effect<Out, E, Synchronous extends true ? NoInfer<TargetId> : R>,\n ): Effect.Effect<\n Out,\n E | PasswordUnavailable | HookConfigurationError | SqlError | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, TargetId>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinatePasswordPreparedPersistence<\n Database extends D,\n TargetId,\n S extends AnySQLiteTable,\n I extends AnySQLiteTable,\n C extends AnySQLiteTable,\n AC extends AnySQLiteTable,\n M extends AnySQLiteTable,\n T extends AnySQLiteTable,\n B extends AnySQLiteTable,\n NativeId,\n PS extends AnySQLiteTable,\n PC extends AnySQLiteTable,\n PM extends AnySQLiteTable,\n PSub extends AnySQLiteTable,\n PI extends AnySQLiteTable,\n PCr extends AnySQLiteTable,\n PNativeId,\n Out,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasswordPreparedPersistenceMapping<S, I, C, AC, M, T, B, NativeId>;\n readonly proofMapping?:\n | PasswordPreparedProofMapping<PS, PC, PM, PSub, PI, PCr, PNativeId>\n | undefined;\n readonly target: SuppliedService<TargetId, PasswordPreparedPersistence>;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<Out, E, Synchronous extends true ? NoInfer<TargetId | TxId> : R>,\n ): Effect.Effect<\n Out,\n E | PasswordUnavailable | HookConfigurationError | SqlError | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, TargetId | TxId>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinatePasswordPreparedPersistence<\n Database extends D,\n TargetId,\n S extends AnySQLiteTable,\n I extends AnySQLiteTable,\n C extends AnySQLiteTable,\n AC extends AnySQLiteTable,\n M extends AnySQLiteTable,\n T extends AnySQLiteTable,\n B extends AnySQLiteTable,\n NativeId,\n PS extends AnySQLiteTable,\n PC extends AnySQLiteTable,\n PM extends AnySQLiteTable,\n PSub extends AnySQLiteTable,\n PI extends AnySQLiteTable,\n PCr extends AnySQLiteTable,\n PNativeId,\n Out,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasswordPreparedPersistenceMapping<S, I, C, AC, M, T, B, NativeId>;\n readonly proofMapping?:\n | PasswordPreparedProofMapping<PS, PC, PM, PSub, PI, PCr, PNativeId>\n | undefined;\n readonly target: SuppliedService<TargetId, PasswordPreparedPersistence>;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<Out, E, R>,\n ): Effect.Effect<\n Out,\n E | PasswordUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements\n > {\n return Effect.flatMap(nativeDatabase(acquire), (database) =>\n coordinateTargetPasswordPreparedPersistence<\n TransactionOf<Database>,\n Out,\n E,\n Exclude<R, TargetId>\n >(\n database,\n options.mapping,\n configurationFor(database),\n options.proofMapping,\n (\n transaction: TransactionOf<Database>,\n services: { readonly passwordPreparedPersistence: PasswordPreparedPersistence },\n ) => {\n const provided = Context.make(options.target, services.passwordPreparedPersistence);\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ).pipe(Effect.provideService(NativeDatabase, database)),\n );\n }\n\n return {\n makePasswordPreparedPersistenceServices: <\n S extends AnySQLiteTable,\n I extends AnySQLiteTable,\n C extends AnySQLiteTable,\n AC extends AnySQLiteTable,\n M extends AnySQLiteTable,\n T extends AnySQLiteTable,\n B extends AnySQLiteTable,\n NativeId,\n PS extends AnySQLiteTable = AnySQLiteTable,\n PC extends AnySQLiteTable = AnySQLiteTable,\n PM extends AnySQLiteTable = AnySQLiteTable,\n PSub extends AnySQLiteTable = AnySQLiteTable,\n PI extends AnySQLiteTable = AnySQLiteTable,\n PCr extends AnySQLiteTable = AnySQLiteTable,\n PNativeId = unknown,\n >(\n mapping: PasswordPreparedPersistenceMapping<S, I, C, AC, M, T, B, NativeId>,\n proofMapping?: PasswordPreparedProofMapping<PS, PC, PM, PSub, PI, PCr, PNativeId>,\n ) =>\n Effect.flatMap(standaloneConfiguration, (configuration) =>\n makeTargetPasswordPreparedPersistenceServices(mapping, configuration, proofMapping),\n ).pipe(\n Effect.provideServiceEffect(CurrentPasswordSql, nativeDatabase(databaseService)),\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),\n ),\n coordinatePasswordPreparedPersistence,\n };\n};\n"],"mappings":";;;;;;;AA6BA,MAAa,oCAKX,iBACA,kBAGG;CACH,MAAM,oBAAoB,aACxB,OAAO,kBAAkB,aACrB,cAAc,mBAAmB,QAAQ,CAAC,IAC1C;CAEN,MAAM,0BACJ,OAAO,kBAAkB,aACrB,OAAO,IAAI,0BAA0B,eAAe,GAAG,aAAa,IACpE,OAAO,QAAQ,aAAa;CAsFlC,SAAS,sCA0BP,SACA,SAQA,MAKA;EACA,OAAO,OAAO,QAAQ,eAAe,OAAO,IAAI,aAC9C,4CAME,UACA,QAAQ,SACR,iBAAiB,QAAQ,GACzB,QAAQ,eAEN,aACA,aACG;GACH,MAAM,WAAW,QAAQ,KAAK,QAAQ,QAAQ,SAAS,2BAA2B;GAClF,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;GAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;EAC1F,CACF,CAAC,CAAC,KAAK,OAAO,eAAe,gBAAgB,QAAQ,CAAC,CACxD;CACF;CAEA,OAAO;EACL,0CAiBE,SACA,iBAEA,OAAO,QAAQ,0BAA0B,kBACvC,8CAA8C,SAAS,eAAe,YAAY,CACpF,CAAC,CAAC,KACA,OAAO,qBAAqB,oBAAoB,eAAe,eAAe,CAAC,GAC/E,OAAO,qBAAqB,gBAAgB,eAAe,eAAe,CAAC,CAC7E;EACF;CACF;AACF"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { acquireTransactionService, transactionService } from "./standalone-guard.mjs";
|
|
2
|
-
import { CurrentPasswordSql } from "./password-sql.mjs";
|
|
3
|
-
import { coordinateTargetPasswordPersistence, coordinateTargetPasswordRegistration, makeTargetPasswordPersistenceServices, makeTargetPasswordRegistrationServices } from "./password-target.mjs";
|
|
4
|
-
import { nativeDatabase } from "./native-database.mjs";
|
|
5
|
-
import { NativeDatabase } from "@yielded/auth-persistence/Adapter";
|
|
6
|
-
import { Context, Effect } from "effect";
|
|
7
|
-
import { PasswordPersistence } from "@yielded/auth/Password";
|
|
8
|
-
//#region src/drizzle/sqlite-passwords.ts
|
|
9
|
-
const sqlitePasswordConfiguration = (mode, standaloneGuard, proofStandaloneGuard, coordinatorGuard) => ({
|
|
10
|
-
mode,
|
|
11
|
-
locking: false,
|
|
12
|
-
standaloneGuard,
|
|
13
|
-
...coordinatorGuard === void 0 ? {} : { coordinatorGuard },
|
|
14
|
-
insertIfAbsent: (query) => query.onConflictDoNothing(),
|
|
15
|
-
generatedSubjectRows: (query) => query.returning(),
|
|
16
|
-
proof: {
|
|
17
|
-
mode,
|
|
18
|
-
locking: false,
|
|
19
|
-
standaloneGuard: proofStandaloneGuard,
|
|
20
|
-
insertIfAbsent: (query) => query.onConflictDoNothing()
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
const makeSqlitePasswordPersistenceServices = (mapping, configuration, proofMapping) => makeTargetPasswordPersistenceServices(mapping, configuration, proofMapping);
|
|
24
|
-
const coordinateSqlitePasswordPersistence = (database, mapping, configuration, proofMapping, owner) => coordinateTargetPasswordPersistence(database, mapping, configuration, proofMapping, owner);
|
|
25
|
-
const makeSqlitePasswordRegistrationServices = (mapping, configuration) => makeTargetPasswordRegistrationServices(mapping, configuration);
|
|
26
|
-
const coordinateSqlitePasswordRegistration = (database, mapping, configuration, owner) => coordinateTargetPasswordRegistration(database, mapping, configuration, owner);
|
|
27
|
-
const makeSqlitePasswordTarget = (databaseService, configuration) => {
|
|
28
|
-
const configurationFor = (database) => typeof configuration === "function" ? configuration(transactionService(database)) : configuration;
|
|
29
|
-
const standaloneConfiguration = typeof configuration === "function" ? Effect.map(acquireTransactionService(databaseService), configuration) : Effect.succeed(configuration);
|
|
30
|
-
function coordinatePasswordPersistence(acquire, options, body) {
|
|
31
|
-
return Effect.flatMap(nativeDatabase(acquire), (database) => coordinateSqlitePasswordPersistence(database, options.mapping, configurationFor(database), options.proofMapping, (transaction, services) => {
|
|
32
|
-
const provided = Context.make(PasswordPersistence, services.passwordPersistence);
|
|
33
|
-
const work = Effect.provideContext(body, provided);
|
|
34
|
-
return options.transaction === void 0 ? work : Effect.provideService(work, options.transaction, options.transaction.of(transaction));
|
|
35
|
-
}).pipe(Effect.provideService(NativeDatabase, database)));
|
|
36
|
-
}
|
|
37
|
-
function coordinatePasswordRegistration(acquire, options, body) {
|
|
38
|
-
return Effect.flatMap(nativeDatabase(acquire), (database) => coordinateSqlitePasswordRegistration(database, options.mapping, configurationFor(database), (transaction, services) => {
|
|
39
|
-
const provided = Context.make(options.target, services.registrationAuthority);
|
|
40
|
-
const work = Effect.provideContext(body, provided);
|
|
41
|
-
return options.transaction === void 0 ? work : Effect.provideService(work, options.transaction, options.transaction.of(transaction));
|
|
42
|
-
}).pipe(Effect.provideService(NativeDatabase, database)));
|
|
43
|
-
}
|
|
44
|
-
return {
|
|
45
|
-
makePasswordPersistenceServices: (mapping, proofMapping) => Effect.flatMap(standaloneConfiguration, (configuration) => makeSqlitePasswordPersistenceServices(mapping, configuration, proofMapping)).pipe(Effect.provideServiceEffect(CurrentPasswordSql, nativeDatabase(databaseService)), Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService))),
|
|
46
|
-
coordinatePasswordPersistence,
|
|
47
|
-
makePasswordRegistrationServices: (mapping) => Effect.flatMap(standaloneConfiguration, (configuration) => makeSqlitePasswordRegistrationServices(mapping, configuration)).pipe(Effect.provideServiceEffect(CurrentPasswordSql, nativeDatabase(databaseService)), Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService))),
|
|
48
|
-
coordinatePasswordRegistration
|
|
49
|
-
};
|
|
50
|
-
};
|
|
51
|
-
//#endregion
|
|
52
|
-
export { coordinateSqlitePasswordPersistence, coordinateSqlitePasswordRegistration, makeSqlitePasswordPersistenceServices, makeSqlitePasswordRegistrationServices, makeSqlitePasswordTarget, sqlitePasswordConfiguration };
|
|
53
|
-
|
|
54
|
-
//# sourceMappingURL=sqlite-passwords.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-passwords.mjs","names":[],"sources":["../../src/drizzle/sqlite-passwords.ts"],"sourcesContent":["import { NativeDatabase } from \"@yielded/auth-persistence/Adapter\";\nimport type { LifecycleHooks, HookConfigurationError } from \"@yielded/auth/Hooks\";\nimport { type PasswordUnavailable, PasswordPersistence } from \"@yielded/auth/Password\";\n/* oxlint-disable no-explicit-any -- proof mapping tables are independently typed by the proof owner; this driver forwards them unchanged to the shared target. */\nimport type { AnyRelations } from \"drizzle-orm\";\nimport type { EffectLibsqlDatabase } from \"drizzle-orm/effect-libsql\";\nimport type { EffectSQLiteBunDatabase } from \"drizzle-orm/effect-sqlite-bun\";\nimport type { EffectSQLiteNodeDatabase as NodeDatabase } from \"drizzle-orm/effect-sqlite-node\";\nimport type { EffectSQLiteWasmDatabase as WasmDatabase } from \"drizzle-orm/effect-sqlite-wasm\";\nimport type { AnySQLiteTable } from \"drizzle-orm/sqlite-core\";\nimport { Effect, Context } from \"effect\";\nimport type { SqlError } from \"effect/sql/SqlError\";\n\nimport { nativeDatabase } from \"./native-database\";\nimport type { PasswordPersistenceMapping, PasswordRegistrationMapping } from \"./password-model\";\nimport type { PasswordRegistrationAuthority } from \"./password-registration\";\nimport { CurrentPasswordSql } from \"./password-sql\";\nimport type { PasswordSqlQuery } from \"./password-sql\";\nimport {\n coordinateTargetPasswordPersistence,\n coordinateTargetPasswordRegistration,\n makeTargetPasswordPersistenceServices,\n makeTargetPasswordRegistrationServices,\n type PasswordTargetConfiguration,\n} from \"./password-target\";\nimport type { ProofPersistenceMapping } from \"./proof-model\";\nimport type { ProofSqlQuery } from \"./proof-sql\";\nimport type { DatabaseValue as DODatabase } from \"./sqlite-do-database\";\nimport {\n type TransactionService,\n acquireTransactionService,\n transactionService,\n} from \"./standalone-guard\";\nimport type { SuppliedService } from \"./SuppliedService\";\n\nexport type SqlitePasswordDatabase =\n | NodeDatabase<AnyRelations>\n | EffectSQLiteBunDatabase<AnyRelations>\n | EffectLibsqlDatabase<AnyRelations>\n | WasmDatabase<AnyRelations>\n | DODatabase<AnyRelations>;\n\ntype TransactionOf<D extends SqlitePasswordDatabase> = Parameters<\n Parameters<D[\"transaction\"]>[0]\n>[0];\n\nexport const sqlitePasswordConfiguration = (\n mode: \"interactive\" | \"synchronous\",\n standaloneGuard: PasswordTargetConfiguration[\"standaloneGuard\"],\n proofStandaloneGuard: PasswordTargetConfiguration[\"proof\"][\"standaloneGuard\"],\n coordinatorGuard?: PasswordTargetConfiguration[\"coordinatorGuard\"],\n): PasswordTargetConfiguration => ({\n mode,\n locking: false,\n standaloneGuard,\n ...(coordinatorGuard === undefined ? {} : { coordinatorGuard }),\n insertIfAbsent: (query: PasswordSqlQuery) => query.onConflictDoNothing(),\n generatedSubjectRows: (query: PasswordSqlQuery) => query.returning(),\n proof: {\n mode,\n locking: false,\n standaloneGuard: proofStandaloneGuard,\n insertIfAbsent: (query: ProofSqlQuery) => query.onConflictDoNothing(),\n },\n});\n\ntype Mapping<\n S extends AnySQLiteTable,\n I extends AnySQLiteTable,\n C extends AnySQLiteTable,\n AC extends AnySQLiteTable,\n M extends AnySQLiteTable,\n NativeId,\n> = PasswordPersistenceMapping<S, I, C, AC, M, NativeId>;\n\nexport const makeSqlitePasswordPersistenceServices = <\n S extends AnySQLiteTable,\n I extends AnySQLiteTable,\n C extends AnySQLiteTable,\n AC extends AnySQLiteTable,\n M extends AnySQLiteTable,\n NativeId,\n>(\n mapping: Mapping<S, I, C, AC, M, NativeId>,\n configuration: PasswordTargetConfiguration,\n proofMapping?: ProofPersistenceMapping<\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any\n >,\n) => makeTargetPasswordPersistenceServices(mapping, configuration, proofMapping);\n\nexport const coordinateSqlitePasswordPersistence = <\n D extends SqlitePasswordDatabase,\n S extends AnySQLiteTable,\n I extends AnySQLiteTable,\n C extends AnySQLiteTable,\n AC extends AnySQLiteTable,\n M extends AnySQLiteTable,\n NativeId,\n PM extends\n | ProofPersistenceMapping<any, any, any, any, any, any, any, any, any, any, any, any>\n | undefined,\n Out,\n E,\n R,\n>(\n database: D,\n mapping: Mapping<S, I, C, AC, M, NativeId>,\n configuration: PasswordTargetConfiguration,\n proofMapping: PM,\n owner: (\n transaction: TransactionOf<D>,\n services: { readonly passwordPersistence: PasswordPersistence[\"Service\"] },\n ) => Effect.Effect<Out, E, R>,\n) =>\n coordinateTargetPasswordPersistence<TransactionOf<D>, Out, E, R>(\n database,\n mapping,\n configuration,\n proofMapping,\n owner,\n );\n\nexport const makeSqlitePasswordRegistrationServices = <\n Registration,\n S extends AnySQLiteTable,\n I extends AnySQLiteTable,\n C extends AnySQLiteTable,\n AC extends AnySQLiteTable,\n Rq extends AnySQLiteTable,\n NativeId,\n>(\n mapping: PasswordRegistrationMapping<Registration, S, I, C, AC, Rq, NativeId>,\n configuration: PasswordTargetConfiguration,\n) => makeTargetPasswordRegistrationServices<Registration>(mapping, configuration);\n\nexport const coordinateSqlitePasswordRegistration = <\n Registration,\n D extends SqlitePasswordDatabase,\n S extends AnySQLiteTable,\n I extends AnySQLiteTable,\n C extends AnySQLiteTable,\n AC extends AnySQLiteTable,\n Rq extends AnySQLiteTable,\n NativeId,\n Out,\n E,\n R,\n>(\n database: D,\n mapping: PasswordRegistrationMapping<Registration, S, I, C, AC, Rq, NativeId>,\n configuration: PasswordTargetConfiguration,\n owner: (\n transaction: TransactionOf<D>,\n services: { readonly registrationAuthority: PasswordRegistrationAuthority<Registration> },\n ) => Effect.Effect<Out, E, R>,\n) =>\n coordinateTargetPasswordRegistration<Registration, TransactionOf<D>, Out, E, R>(\n database,\n mapping,\n configuration,\n owner,\n );\n\nexport const makeSqlitePasswordTarget = <\n DatabaseId,\n D extends SqlitePasswordDatabase,\n Synchronous extends boolean = false,\n>(\n databaseService: Context.Service<DatabaseId, D>,\n configuration:\n | PasswordTargetConfiguration\n | ((service: TransactionService | undefined) => PasswordTargetConfiguration),\n) => {\n const configurationFor = (database: D) =>\n typeof configuration === \"function\"\n ? configuration(transactionService(database))\n : configuration;\n\n const standaloneConfiguration =\n typeof configuration === \"function\"\n ? Effect.map(acquireTransactionService(databaseService), configuration)\n : Effect.succeed(configuration);\n\n function coordinatePasswordPersistence<\n Database extends D,\n S extends AnySQLiteTable,\n I extends AnySQLiteTable,\n C extends AnySQLiteTable,\n AC extends AnySQLiteTable,\n M extends AnySQLiteTable,\n NativeId,\n PM extends\n | ProofPersistenceMapping<any, any, any, any, any, any, any, any, any, any, any, any>\n | undefined,\n Out,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: Mapping<S, I, C, AC, M, NativeId>;\n readonly proofMapping?: PM;\n readonly transaction?: never;\n },\n body: Effect.Effect<Out, E, Synchronous extends true ? NoInfer<PasswordPersistence> : R>,\n ): Effect.Effect<\n Out,\n E | PasswordUnavailable | HookConfigurationError | SqlError | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, PasswordPersistence>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinatePasswordPersistence<\n Database extends D,\n S extends AnySQLiteTable,\n I extends AnySQLiteTable,\n C extends AnySQLiteTable,\n AC extends AnySQLiteTable,\n M extends AnySQLiteTable,\n NativeId,\n PM extends\n | ProofPersistenceMapping<any, any, any, any, any, any, any, any, any, any, any, any>\n | undefined,\n Out,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: Mapping<S, I, C, AC, M, NativeId>;\n readonly proofMapping?: PM;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<Out, E, Synchronous extends true ? NoInfer<PasswordPersistence | TxId> : R>,\n ): Effect.Effect<\n Out,\n E | PasswordUnavailable | HookConfigurationError | SqlError | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, PasswordPersistence | TxId>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinatePasswordPersistence<\n Database extends D,\n S extends AnySQLiteTable,\n I extends AnySQLiteTable,\n C extends AnySQLiteTable,\n AC extends AnySQLiteTable,\n M extends AnySQLiteTable,\n NativeId,\n PM extends\n | ProofPersistenceMapping<any, any, any, any, any, any, any, any, any, any, any, any>\n | undefined,\n Out,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: Mapping<S, I, C, AC, M, NativeId>;\n readonly proofMapping?: PM;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<Out, E, R>,\n ): Effect.Effect<\n Out,\n E | PasswordUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, PasswordPersistence> | LifecycleHooks | DatabaseRequirements\n > {\n return Effect.flatMap(nativeDatabase(acquire), (database) =>\n coordinateSqlitePasswordPersistence(\n database,\n options.mapping,\n configurationFor(database),\n options.proofMapping,\n (\n transaction: TransactionOf<Database>,\n services: { readonly passwordPersistence: PasswordPersistence[\"Service\"] },\n ) => {\n const provided = Context.make(PasswordPersistence, services.passwordPersistence);\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ).pipe(Effect.provideService(NativeDatabase, database)),\n );\n }\n function coordinatePasswordRegistration<\n Database extends D,\n TargetId,\n Registration,\n S extends AnySQLiteTable,\n I extends AnySQLiteTable,\n C extends AnySQLiteTable,\n AC extends AnySQLiteTable,\n Rq extends AnySQLiteTable,\n NativeId,\n Out,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasswordRegistrationMapping<\n NoInfer<Registration>,\n S,\n I,\n C,\n AC,\n Rq,\n NativeId\n >;\n readonly target: SuppliedService<TargetId, PasswordRegistrationAuthority<Registration>>;\n readonly transaction?: never;\n },\n body: Effect.Effect<Out, E, Synchronous extends true ? NoInfer<TargetId> : R>,\n ): Effect.Effect<\n Out,\n E | PasswordUnavailable | HookConfigurationError | SqlError | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, TargetId>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinatePasswordRegistration<\n Database extends D,\n TargetId,\n Registration,\n S extends AnySQLiteTable,\n I extends AnySQLiteTable,\n C extends AnySQLiteTable,\n AC extends AnySQLiteTable,\n Rq extends AnySQLiteTable,\n NativeId,\n Out,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasswordRegistrationMapping<\n NoInfer<Registration>,\n S,\n I,\n C,\n AC,\n Rq,\n NativeId\n >;\n readonly target: SuppliedService<TargetId, PasswordRegistrationAuthority<Registration>>;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<Out, E, Synchronous extends true ? NoInfer<TargetId | TxId> : R>,\n ): Effect.Effect<\n Out,\n E | PasswordUnavailable | HookConfigurationError | SqlError | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, TargetId | TxId>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinatePasswordRegistration<\n Database extends D,\n TargetId,\n Registration,\n S extends AnySQLiteTable,\n I extends AnySQLiteTable,\n C extends AnySQLiteTable,\n AC extends AnySQLiteTable,\n Rq extends AnySQLiteTable,\n NativeId,\n Out,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasswordRegistrationMapping<\n NoInfer<Registration>,\n S,\n I,\n C,\n AC,\n Rq,\n NativeId\n >;\n readonly target: SuppliedService<TargetId, PasswordRegistrationAuthority<Registration>>;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<Out, E, R>,\n ): Effect.Effect<\n Out,\n E | PasswordUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements\n > {\n return Effect.flatMap(nativeDatabase(acquire), (database) =>\n coordinateSqlitePasswordRegistration(\n database,\n options.mapping,\n configurationFor(database),\n (\n transaction: TransactionOf<Database>,\n services: { readonly registrationAuthority: PasswordRegistrationAuthority<Registration> },\n ) => {\n const provided = Context.make(options.target, services.registrationAuthority);\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ).pipe(Effect.provideService(NativeDatabase, database)),\n );\n }\n\n return {\n makePasswordPersistenceServices: <\n S extends AnySQLiteTable,\n I extends AnySQLiteTable,\n C extends AnySQLiteTable,\n AC extends AnySQLiteTable,\n M extends AnySQLiteTable,\n NativeId,\n >(\n mapping: Mapping<S, I, C, AC, M, NativeId>,\n proofMapping?: ProofPersistenceMapping<\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any\n >,\n ) =>\n Effect.flatMap(standaloneConfiguration, (configuration) =>\n makeSqlitePasswordPersistenceServices(mapping, configuration, proofMapping),\n ).pipe(\n Effect.provideServiceEffect(CurrentPasswordSql, nativeDatabase(databaseService)),\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),\n ),\n coordinatePasswordPersistence,\n makePasswordRegistrationServices: <\n Registration,\n S extends AnySQLiteTable,\n I extends AnySQLiteTable,\n C extends AnySQLiteTable,\n AC extends AnySQLiteTable,\n Rq extends AnySQLiteTable,\n NativeId,\n >(\n mapping: PasswordRegistrationMapping<Registration, S, I, C, AC, Rq, NativeId>,\n ) =>\n Effect.flatMap(standaloneConfiguration, (configuration) =>\n makeSqlitePasswordRegistrationServices(mapping, configuration),\n ).pipe(\n Effect.provideServiceEffect(CurrentPasswordSql, nativeDatabase(databaseService)),\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),\n ),\n coordinatePasswordRegistration,\n };\n};\n"],"mappings":";;;;;;;;AA8CA,MAAa,+BACX,MACA,iBACA,sBACA,sBACiC;CACjC;CACA,SAAS;CACT;CACA,GAAI,qBAAqB,KAAA,IAAY,CAAC,IAAI,EAAE,iBAAiB;CAC7D,iBAAiB,UAA4B,MAAM,oBAAoB;CACvE,uBAAuB,UAA4B,MAAM,UAAU;CACnE,OAAO;EACL;EACA,SAAS;EACT,iBAAiB;EACjB,iBAAiB,UAAyB,MAAM,oBAAoB;CACtE;AACF;AAWA,MAAa,yCAQX,SACA,eACA,iBAcG,sCAAsC,SAAS,eAAe,YAAY;AAE/E,MAAa,uCAeX,UACA,SACA,eACA,cACA,UAKA,oCACE,UACA,SACA,eACA,cACA,KACF;AAEF,MAAa,0CASX,SACA,kBACG,uCAAqD,SAAS,aAAa;AAEhF,MAAa,wCAaX,UACA,SACA,eACA,UAKA,qCACE,UACA,SACA,eACA,KACF;AAEF,MAAa,4BAKX,iBACA,kBAGG;CACH,MAAM,oBAAoB,aACxB,OAAO,kBAAkB,aACrB,cAAc,mBAAmB,QAAQ,CAAC,IAC1C;CAEN,MAAM,0BACJ,OAAO,kBAAkB,aACrB,OAAO,IAAI,0BAA0B,eAAe,GAAG,aAAa,IACpE,OAAO,QAAQ,aAAa;CAkElC,SAAS,8BAmBP,SACA,SAKA,MAKA;EACA,OAAO,OAAO,QAAQ,eAAe,OAAO,IAAI,aAC9C,oCACE,UACA,QAAQ,SACR,iBAAiB,QAAQ,GACzB,QAAQ,eAEN,aACA,aACG;GACH,MAAM,WAAW,QAAQ,KAAK,qBAAqB,SAAS,mBAAmB;GAC/E,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;GAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;EAC1F,CACF,CAAC,CAAC,KAAK,OAAO,eAAe,gBAAgB,QAAQ,CAAC,CACxD;CACF;CA+EA,SAAS,+BAkBP,SACA,SAaA,MAKA;EACA,OAAO,OAAO,QAAQ,eAAe,OAAO,IAAI,aAC9C,qCACE,UACA,QAAQ,SACR,iBAAiB,QAAQ,IAEvB,aACA,aACG;GACH,MAAM,WAAW,QAAQ,KAAK,QAAQ,QAAQ,SAAS,qBAAqB;GAC5E,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;GAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;EAC1F,CACF,CAAC,CAAC,KAAK,OAAO,eAAe,gBAAgB,QAAQ,CAAC,CACxD;CACF;CAEA,OAAO;EACL,kCAQE,SACA,iBAeA,OAAO,QAAQ,0BAA0B,kBACvC,sCAAsC,SAAS,eAAe,YAAY,CAC5E,CAAC,CAAC,KACA,OAAO,qBAAqB,oBAAoB,eAAe,eAAe,CAAC,GAC/E,OAAO,qBAAqB,gBAAgB,eAAe,eAAe,CAAC,CAC7E;EACF;EACA,mCASE,YAEA,OAAO,QAAQ,0BAA0B,kBACvC,uCAAuC,SAAS,aAAa,CAC/D,CAAC,CAAC,KACA,OAAO,qBAAqB,oBAAoB,eAAe,eAAe,CAAC,GAC/E,OAAO,qBAAqB,gBAAgB,eAAe,eAAe,CAAC,CAC7E;EACF;CACF;AACF"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { acquireTransactionService, transactionService } from "./standalone-guard.mjs";
|
|
2
|
-
import { CurrentProofSql } from "./proof-sql.mjs";
|
|
3
|
-
import { coordinateTargetProofPersistence, makeTargetProofPersistenceServices } from "./proof-target.mjs";
|
|
4
|
-
import { nativeDatabase } from "./native-database.mjs";
|
|
5
|
-
import { NativeDatabase } from "@yielded/auth-persistence/Adapter";
|
|
6
|
-
import { Context, Effect } from "effect";
|
|
7
|
-
import { ProofPersistence } from "@yielded/auth/Proofs";
|
|
8
|
-
//#region src/drizzle/sqlite-proofs.ts
|
|
9
|
-
const sqliteProofConfiguration = (mode, standaloneGuard, coordinatorGuard) => ({
|
|
10
|
-
mode,
|
|
11
|
-
locking: false,
|
|
12
|
-
standaloneGuard,
|
|
13
|
-
insertIfAbsent: (query) => query.onConflictDoNothing(),
|
|
14
|
-
...coordinatorGuard === void 0 ? {} : { coordinatorGuard }
|
|
15
|
-
});
|
|
16
|
-
const makeSqliteProofTarget = (databaseService, configuration) => {
|
|
17
|
-
const configurationFor = (database) => typeof configuration === "function" ? configuration(transactionService(database)) : configuration;
|
|
18
|
-
const standaloneConfiguration = typeof configuration === "function" ? Effect.map(acquireTransactionService(databaseService), configuration) : Effect.succeed(configuration);
|
|
19
|
-
function coordinateProofPersistence(acquire, options, body) {
|
|
20
|
-
return Effect.flatMap(nativeDatabase(acquire), (database) => coordinateTargetProofPersistence(database, options.mapping, configurationFor(database), (transaction, services) => {
|
|
21
|
-
const provided = Context.make(ProofPersistence, services.proofPersistence);
|
|
22
|
-
const work = Effect.provideContext(body, provided);
|
|
23
|
-
return options.transaction === void 0 ? work : Effect.provideService(work, options.transaction, options.transaction.of(transaction));
|
|
24
|
-
}).pipe(Effect.provideService(NativeDatabase, database)));
|
|
25
|
-
}
|
|
26
|
-
return {
|
|
27
|
-
makeProofPersistenceServices: (mapping) => Effect.flatMap(standaloneConfiguration, (configuration) => makeTargetProofPersistenceServices(mapping, configuration)).pipe(Effect.provideServiceEffect(CurrentProofSql, nativeDatabase(databaseService)), Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService))),
|
|
28
|
-
coordinateProofPersistence
|
|
29
|
-
};
|
|
30
|
-
};
|
|
31
|
-
//#endregion
|
|
32
|
-
export { makeSqliteProofTarget, sqliteProofConfiguration };
|
|
33
|
-
|
|
34
|
-
//# sourceMappingURL=sqlite-proofs.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-proofs.mjs","names":[],"sources":["../../src/drizzle/sqlite-proofs.ts"],"sourcesContent":["import { NativeDatabase } from \"@yielded/auth-persistence/Adapter\";\nimport type { LifecycleHooks, HookConfigurationError } from \"@yielded/auth/Hooks\";\nimport { type ProofUnavailable, ProofPersistence } from \"@yielded/auth/Proofs\";\nimport type { AnyRelations } from \"drizzle-orm\";\nimport type { EffectLibsqlDatabase } from \"drizzle-orm/effect-libsql\";\nimport type { EffectSQLiteBunDatabase } from \"drizzle-orm/effect-sqlite-bun\";\nimport type { EffectSQLiteNodeDatabase } from \"drizzle-orm/effect-sqlite-node\";\nimport type { EffectSQLiteWasmDatabase } from \"drizzle-orm/effect-sqlite-wasm\";\nimport type { AnySQLiteTable } from \"drizzle-orm/sqlite-core\";\nimport { Effect, Context } from \"effect\";\nimport type { SqlError } from \"effect/sql/SqlError\";\n\nimport { nativeDatabase } from \"./native-database\";\nimport type { ProofPersistenceMapping } from \"./proof-model\";\nimport { CurrentProofSql } from \"./proof-sql\";\nimport {\n coordinateTargetProofPersistence,\n makeTargetProofPersistenceServices,\n type ProofTargetConfiguration,\n} from \"./proof-target\";\nimport type { DatabaseValue } from \"./sqlite-do-database\";\nimport {\n type TransactionService,\n acquireTransactionService,\n transactionService,\n} from \"./standalone-guard\";\nimport type { SuppliedService } from \"./SuppliedService\";\n\ntype Database =\n | EffectLibsqlDatabase<AnyRelations>\n | EffectSQLiteBunDatabase<AnyRelations>\n | DatabaseValue<AnyRelations>\n | EffectSQLiteNodeDatabase<AnyRelations>\n | EffectSQLiteWasmDatabase<AnyRelations>;\ntype TransactionOf<D extends Database> = Parameters<Parameters<D[\"transaction\"]>[0]>[0];\ntype Mapping<\n Rq extends AnySQLiteTable,\n S extends AnySQLiteTable,\n G extends AnySQLiteTable,\n Cn extends AnySQLiteTable,\n Rs extends AnySQLiteTable,\n A extends AnySQLiteTable,\n F extends AnySQLiteTable,\n C extends AnySQLiteTable,\n Sub extends AnySQLiteTable,\n I extends AnySQLiteTable,\n Cr extends AnySQLiteTable,\n NativeId,\n> = ProofPersistenceMapping<Rq, S, G, Cn, Rs, A, F, C, Sub, I, Cr, NativeId>;\n\nexport const sqliteProofConfiguration = (\n mode: \"interactive\" | \"synchronous\",\n standaloneGuard: Effect.Effect<void, ProofUnavailable>,\n coordinatorGuard?: Effect.Effect<void, ProofUnavailable>,\n): ProofTargetConfiguration => ({\n mode,\n locking: false,\n standaloneGuard,\n insertIfAbsent: (query) => query.onConflictDoNothing(),\n ...(coordinatorGuard === undefined ? {} : { coordinatorGuard }),\n});\n\nexport const makeSqliteProofTarget = <\n DatabaseId,\n D extends Database,\n Synchronous extends boolean = false,\n>(\n databaseService: Context.Service<DatabaseId, D>,\n configuration:\n | ProofTargetConfiguration\n | ((service: TransactionService | undefined) => ProofTargetConfiguration),\n) => {\n const configurationFor = (database: D) =>\n typeof configuration === \"function\"\n ? configuration(transactionService(database))\n : configuration;\n\n const standaloneConfiguration =\n typeof configuration === \"function\"\n ? Effect.map(acquireTransactionService(databaseService), configuration)\n : Effect.succeed(configuration);\n\n function coordinateProofPersistence<\n Database extends D,\n Rq extends AnySQLiteTable,\n S extends AnySQLiteTable,\n G extends AnySQLiteTable,\n Cn extends AnySQLiteTable,\n Rs extends AnySQLiteTable,\n Aev extends AnySQLiteTable,\n F extends AnySQLiteTable,\n C extends AnySQLiteTable,\n Sub extends AnySQLiteTable,\n I extends AnySQLiteTable,\n Cr extends AnySQLiteTable,\n NativeId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: Mapping<Rq, S, G, Cn, Rs, Aev, F, C, Sub, I, Cr, NativeId>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<ProofPersistence> : R>,\n ): Effect.Effect<\n A,\n E | ProofUnavailable | HookConfigurationError | SqlError | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, ProofPersistence>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateProofPersistence<\n Database extends D,\n Rq extends AnySQLiteTable,\n S extends AnySQLiteTable,\n G extends AnySQLiteTable,\n Cn extends AnySQLiteTable,\n Rs extends AnySQLiteTable,\n Aev extends AnySQLiteTable,\n F extends AnySQLiteTable,\n C extends AnySQLiteTable,\n Sub extends AnySQLiteTable,\n I extends AnySQLiteTable,\n Cr extends AnySQLiteTable,\n NativeId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: Mapping<Rq, S, G, Cn, Rs, Aev, F, C, Sub, I, Cr, NativeId>;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<ProofPersistence | TxId> : R>,\n ): Effect.Effect<\n A,\n E | ProofUnavailable | HookConfigurationError | SqlError | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, ProofPersistence | TxId>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateProofPersistence<\n Database extends D,\n Rq extends AnySQLiteTable,\n S extends AnySQLiteTable,\n G extends AnySQLiteTable,\n Cn extends AnySQLiteTable,\n Rs extends AnySQLiteTable,\n Aev extends AnySQLiteTable,\n F extends AnySQLiteTable,\n C extends AnySQLiteTable,\n Sub extends AnySQLiteTable,\n I extends AnySQLiteTable,\n Cr extends AnySQLiteTable,\n NativeId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: Mapping<Rq, S, G, Cn, Rs, Aev, F, C, Sub, I, Cr, NativeId>;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n E | ProofUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, ProofPersistence> | LifecycleHooks | DatabaseRequirements\n > {\n return Effect.flatMap(nativeDatabase(acquire), (database) =>\n coordinateTargetProofPersistence<TransactionOf<Database>, A, E, Exclude<R, ProofPersistence>>(\n database,\n options.mapping,\n configurationFor(database),\n (\n transaction: TransactionOf<Database>,\n services: { readonly proofPersistence: ProofPersistence[\"Service\"] },\n ) => {\n const provided = Context.make(ProofPersistence, services.proofPersistence);\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ).pipe(Effect.provideService(NativeDatabase, database)),\n );\n }\n\n return {\n makeProofPersistenceServices: <\n Rq extends AnySQLiteTable,\n S extends AnySQLiteTable,\n G extends AnySQLiteTable,\n Cn extends AnySQLiteTable,\n Rs extends AnySQLiteTable,\n A extends AnySQLiteTable,\n F extends AnySQLiteTable,\n C extends AnySQLiteTable,\n Sub extends AnySQLiteTable,\n I extends AnySQLiteTable,\n Cr extends AnySQLiteTable,\n NativeId,\n >(\n mapping: Mapping<Rq, S, G, Cn, Rs, A, F, C, Sub, I, Cr, NativeId>,\n ) =>\n Effect.flatMap(standaloneConfiguration, (configuration) =>\n makeTargetProofPersistenceServices(mapping, configuration),\n ).pipe(\n Effect.provideServiceEffect(CurrentProofSql, nativeDatabase(databaseService)),\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),\n ),\n coordinateProofPersistence,\n };\n};\n"],"mappings":";;;;;;;;AAkDA,MAAa,4BACX,MACA,iBACA,sBAC8B;CAC9B;CACA,SAAS;CACT;CACA,iBAAiB,UAAU,MAAM,oBAAoB;CACrD,GAAI,qBAAqB,KAAA,IAAY,CAAC,IAAI,EAAE,iBAAiB;AAC/D;AAEA,MAAa,yBAKX,iBACA,kBAGG;CACH,MAAM,oBAAoB,aACxB,OAAO,kBAAkB,aACrB,cAAc,mBAAmB,QAAQ,CAAC,IAC1C;CAEN,MAAM,0BACJ,OAAO,kBAAkB,aACrB,OAAO,IAAI,0BAA0B,eAAe,GAAG,aAAa,IACpE,OAAO,QAAQ,aAAa;CAsElC,SAAS,2BAsBP,SACA,SAIA,MAKA;EACA,OAAO,OAAO,QAAQ,eAAe,OAAO,IAAI,aAC9C,iCACE,UACA,QAAQ,SACR,iBAAiB,QAAQ,IAEvB,aACA,aACG;GACH,MAAM,WAAW,QAAQ,KAAK,kBAAkB,SAAS,gBAAgB;GACzE,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;GAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;EAC1F,CACF,CAAC,CAAC,KAAK,OAAO,eAAe,gBAAgB,QAAQ,CAAC,CACxD;CACF;CAEA,OAAO;EACL,+BAcE,YAEA,OAAO,QAAQ,0BAA0B,kBACvC,mCAAmC,SAAS,aAAa,CAC3D,CAAC,CAAC,KACA,OAAO,qBAAqB,iBAAiB,eAAe,eAAe,CAAC,GAC5E,OAAO,qBAAqB,gBAAgB,eAAe,eAAe,CAAC,CAC7E;EACF;CACF;AACF"}
|