@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,19 +1,51 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { coordinateNativeTarget, nativeTarget } from "./native-target.mjs";
|
|
2
|
+
import { validateDrizzleStorage } from "./storage-validation.mjs";
|
|
3
|
+
import { captureOAuthMapping, makeNativeOAuthAccountsServices, makeNativeOAuthConnectedServices, makeNativeOAuthRegistrationIntentServices, makeNativeOAuthRegistrationServices, makeNativeOAuthRevocationServices, makeNativeOAuthSignInServices, oauthAccountsPersistenceLayer, oauthConnectedPersistenceLayer, oauthConnectedRevocationsLayer, oauthRegistrationAuthorityLayer, oauthRegistrationIntentsLayer, oauthSignInPersistenceLayer } from "@yielded/auth-persistence/Adapter";
|
|
4
|
+
import { Effect } from "effect";
|
|
5
|
+
import { OAuthUnavailable } from "@yielded/auth/OAuth";
|
|
2
6
|
//#region src/drizzle/oauth-target.ts
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
|
|
7
|
+
const unavailable = () => OAuthUnavailable.make({});
|
|
8
|
+
const mapped = Effect.fnUntraced(function* (original, configuration) {
|
|
9
|
+
const mapping = captureOAuthMapping(original);
|
|
10
|
+
yield* validateDrizzleStorage(mapping).pipe(Effect.mapError(unavailable));
|
|
11
|
+
if (configuration.mode === "batch" && !(typeof mapping === "object" && mapping !== null && "d1" in mapping && typeof mapping.d1 === "object" && mapping.d1 !== null && "primary" in mapping.d1 && mapping.d1.primary === true)) return yield* unavailable();
|
|
12
|
+
return {
|
|
13
|
+
mapping,
|
|
14
|
+
...yield* nativeTarget(configuration)
|
|
15
|
+
};
|
|
16
|
+
});
|
|
17
|
+
const makeTargetOAuthSignInServices = (source, configuration) => Effect.gen(function* () {
|
|
18
|
+
const target = yield* mapped(source, configuration);
|
|
19
|
+
return yield* target.provide(makeNativeOAuthSignInServices(target.tables, target.mapping, target.batch));
|
|
20
|
+
});
|
|
21
|
+
const makeTargetOAuthAccountsServices = (source, configuration) => Effect.gen(function* () {
|
|
22
|
+
const target = yield* mapped(source, configuration);
|
|
23
|
+
return yield* target.provide(makeNativeOAuthAccountsServices(target.tables, target.mapping, target.batch));
|
|
24
|
+
});
|
|
25
|
+
const makeTargetOAuthRegistrationIntentServices = (source, configuration) => Effect.gen(function* () {
|
|
26
|
+
const target = yield* mapped(source, configuration);
|
|
27
|
+
return yield* target.provide(makeNativeOAuthRegistrationIntentServices(target.tables, target.mapping, target.batch));
|
|
28
|
+
});
|
|
29
|
+
const makeTargetOAuthConnectedServices = (source, configuration) => Effect.gen(function* () {
|
|
30
|
+
const target = yield* mapped(source, configuration);
|
|
31
|
+
return yield* target.provide(makeNativeOAuthConnectedServices(target.tables, target.mapping, target.batch));
|
|
32
|
+
});
|
|
33
|
+
const makeTargetOAuthConnectedRevocationServices = (source, configuration) => Effect.gen(function* () {
|
|
34
|
+
const target = yield* mapped(source, configuration);
|
|
35
|
+
return yield* target.provide(makeNativeOAuthRevocationServices(target.tables, target.mapping, target.batch));
|
|
36
|
+
});
|
|
37
|
+
const makeTargetOAuthRegistrationServices = (source, configuration) => Effect.gen(function* () {
|
|
38
|
+
const target = yield* mapped(source, configuration);
|
|
39
|
+
return yield* target.provide(makeNativeOAuthRegistrationServices(target.tables, target.mapping, target.batch));
|
|
40
|
+
});
|
|
41
|
+
const coordinateOwner = (database, configuration, make, body) => coordinateNativeTarget(unavailable, database, configuration, make, body);
|
|
42
|
+
const coordinateTargetOAuthSignIn = (database, mapping, configuration, body) => coordinateOwner(database, configuration, makeTargetOAuthSignInServices(mapping, configuration), body);
|
|
43
|
+
const coordinateTargetOAuthAccounts = (database, mapping, configuration, body) => coordinateOwner(database, configuration, makeTargetOAuthAccountsServices(mapping, configuration), body);
|
|
44
|
+
const coordinateTargetOAuthRegistrationIntents = (database, mapping, configuration, body) => coordinateOwner(database, configuration, makeTargetOAuthRegistrationIntentServices(mapping, configuration), body);
|
|
45
|
+
const coordinateTargetOAuthConnected = (database, mapping, configuration, body) => coordinateOwner(database, configuration, makeTargetOAuthConnectedServices(mapping, configuration), body);
|
|
46
|
+
const coordinateTargetOAuthConnectedRevocations = (database, mapping, configuration, body) => coordinateOwner(database, configuration, makeTargetOAuthConnectedRevocationServices(mapping, configuration), body);
|
|
47
|
+
const coordinateTargetOAuthRegistration = (database, mapping, configuration, body) => coordinateOwner(database, configuration, makeTargetOAuthRegistrationServices(mapping, configuration), body);
|
|
16
48
|
//#endregion
|
|
17
|
-
export { coordinateTargetOAuthAccounts, coordinateTargetOAuthRegistration, coordinateTargetOAuthRegistrationIntents, coordinateTargetOAuthSignIn, makeTargetOAuthAccountsServices, makeTargetOAuthRegistrationIntentServices, makeTargetOAuthRegistrationServices, makeTargetOAuthSignInServices, oauthAccountsPersistenceLayer, oauthRegistrationAuthorityLayer, oauthRegistrationIntentsLayer, oauthSignInPersistenceLayer
|
|
49
|
+
export { coordinateTargetOAuthAccounts, coordinateTargetOAuthConnected, coordinateTargetOAuthConnectedRevocations, coordinateTargetOAuthRegistration, coordinateTargetOAuthRegistrationIntents, coordinateTargetOAuthSignIn, makeTargetOAuthAccountsServices, makeTargetOAuthConnectedRevocationServices, makeTargetOAuthConnectedServices, makeTargetOAuthRegistrationIntentServices, makeTargetOAuthRegistrationServices, makeTargetOAuthSignInServices, oauthAccountsPersistenceLayer, oauthConnectedPersistenceLayer, oauthConnectedRevocationsLayer, oauthRegistrationAuthorityLayer, oauthRegistrationIntentsLayer, oauthSignInPersistenceLayer };
|
|
18
50
|
|
|
19
51
|
//# sourceMappingURL=oauth-target.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-target.mjs","names":[],"sources":["../../src/drizzle/oauth-target.ts"],"sourcesContent":["import type { OAuthKernel } from \"@yielded/auth-persistence/Adapter\";\n\nimport { oauthKernel } from \"./oauth-kernel\";\n\nexport const sqlClientOAuthStandaloneGuard: OAuthKernel[\"target\"][\"sqlClientOAuthStandaloneGuard\"] =\n oauthKernel.target.sqlClientOAuthStandaloneGuard;\n\nexport const makeTargetOAuthSignInServices: OAuthKernel[\"target\"][\"makeTargetOAuthSignInServices\"] =\n oauthKernel.target.makeTargetOAuthSignInServices;\n\nexport const makeTargetOAuthRegistrationIntentServices: OAuthKernel[\"target\"][\"makeTargetOAuthRegistrationIntentServices\"] =\n oauthKernel.target.makeTargetOAuthRegistrationIntentServices;\n\nexport const makeTargetOAuthRegistrationServices: OAuthKernel[\"target\"][\"makeTargetOAuthRegistrationServices\"] =\n oauthKernel.target.makeTargetOAuthRegistrationServices;\n\nexport const coordinateTargetOAuthRegistration: OAuthKernel[\"target\"][\"coordinateTargetOAuthRegistration\"] =\n oauthKernel.target.coordinateTargetOAuthRegistration;\n\nexport const coordinateTargetOAuthSignIn: OAuthKernel[\"target\"][\"coordinateTargetOAuthSignIn\"] =\n oauthKernel.target.coordinateTargetOAuthSignIn;\n\nexport const coordinateTargetOAuthRegistrationIntents: OAuthKernel[\"target\"][\"coordinateTargetOAuthRegistrationIntents\"] =\n oauthKernel.target.coordinateTargetOAuthRegistrationIntents;\n\nexport const coordinateTargetOAuthAccounts: OAuthKernel[\"target\"][\"coordinateTargetOAuthAccounts\"] =\n oauthKernel.target.coordinateTargetOAuthAccounts;\n\nexport const makeTargetOAuthAccountsServices: OAuthKernel[\"target\"][\"makeTargetOAuthAccountsServices\"] =\n oauthKernel.target.makeTargetOAuthAccountsServices;\n\nexport const oauthAccountsPersistenceLayer: OAuthKernel[\"target\"][\"oauthAccountsPersistenceLayer\"] =\n oauthKernel.target.oauthAccountsPersistenceLayer;\n\nexport const oauthSignInPersistenceLayer: OAuthKernel[\"target\"][\"oauthSignInPersistenceLayer\"] =\n oauthKernel.target.oauthSignInPersistenceLayer;\n\nexport const oauthRegistrationIntentsLayer: OAuthKernel[\"target\"][\"oauthRegistrationIntentsLayer\"] =\n oauthKernel.target.oauthRegistrationIntentsLayer;\n\nexport const oauthRegistrationAuthorityLayer: OAuthKernel[\"target\"][\"oauthRegistrationAuthorityLayer\"] =\n oauthKernel.target.oauthRegistrationAuthorityLayer;\n\nexport type {\n OAuthTargetConfiguration,\n OAuthCoordinatorError,\n OAuthExecution,\n} from \"@yielded/auth-persistence/Adapter\";\n"],"mappings":";;AAIA,MAAa,gCACX,YAAY,OAAO;AAErB,MAAa,gCACX,YAAY,OAAO;AAErB,MAAa,4CACX,YAAY,OAAO;AAErB,MAAa,sCACX,YAAY,OAAO;AAErB,MAAa,oCACX,YAAY,OAAO;AAErB,MAAa,8BACX,YAAY,OAAO;AAErB,MAAa,2CACX,YAAY,OAAO;AAErB,MAAa,gCACX,YAAY,OAAO;AAErB,MAAa,kCACX,YAAY,OAAO;AAErB,MAAa,gCACX,YAAY,OAAO;AAErB,MAAa,8BACX,YAAY,OAAO;AAErB,MAAa,gCACX,YAAY,OAAO;AAErB,MAAa,kCACX,YAAY,OAAO"}
|
|
1
|
+
{"version":3,"file":"oauth-target.mjs","names":[],"sources":["../../src/drizzle/oauth-target.ts"],"sourcesContent":["import {\n captureOAuthMapping,\n makeNativeOAuthSignInServices,\n makeNativeOAuthAccountsServices,\n makeNativeOAuthRegistrationIntentServices,\n makeNativeOAuthRegistrationServices,\n makeNativeOAuthConnectedServices,\n makeNativeOAuthRevocationServices,\n type OAuthNativeReadMapping,\n type OAuthNativeAccountsMapping,\n type OAuthNativeRegistrationIntentMapping,\n type OAuthNativeRegistrationMapping,\n type OAuthNativeConnectedMapping,\n type OAuthNativeRevocationMapping,\n} from \"@yielded/auth-persistence/Adapter\";\nimport type { LifecycleHooks } from \"@yielded/auth/Hooks\";\nimport { OAuthUnavailable } from \"@yielded/auth/OAuth\";\nimport { Effect } from \"effect\";\n\nimport type { D1BatchStatements } from \"./D1BatchStatements\";\nimport type { NativeDatabaseHandle } from \"./native-database\";\nimport {\n nativeTarget,\n coordinateNativeTarget,\n type NativeTargetConfiguration,\n} from \"./native-target\";\nimport { validateDrizzleStorage } from \"./storage-validation\";\n\nexport {\n oauthAccountsPersistenceLayer,\n oauthSignInPersistenceLayer,\n oauthRegistrationIntentsLayer,\n oauthRegistrationAuthorityLayer,\n oauthConnectedPersistenceLayer,\n oauthConnectedRevocationsLayer,\n} from \"@yielded/auth-persistence/Adapter\";\n\nexport type OAuthTargetConfiguration = NativeTargetConfiguration;\n\nexport type OAuthCoordinatorError<E> = E | OAuthUnavailable;\nconst unavailable = () => OAuthUnavailable.make({});\n\nconst mapped = Effect.fnUntraced(function* (\n original: unknown,\n configuration: OAuthTargetConfiguration,\n) {\n const mapping = captureOAuthMapping(original);\n\n yield* validateDrizzleStorage(mapping).pipe(Effect.mapError(unavailable));\n if (\n configuration.mode === \"batch\" &&\n !(\n typeof mapping === \"object\" &&\n mapping !== null &&\n \"d1\" in mapping &&\n typeof mapping.d1 === \"object\" &&\n mapping.d1 !== null &&\n \"primary\" in mapping.d1 &&\n mapping.d1.primary === true\n )\n )\n return yield* unavailable();\n\n return { mapping, ...(yield* nativeTarget(configuration)) };\n});\n\nexport const makeTargetOAuthSignInServices = (\n source: unknown,\n configuration: OAuthTargetConfiguration,\n) =>\n Effect.gen(function* () {\n const target = yield* mapped(source, configuration);\n\n return yield* target.provide(\n makeNativeOAuthSignInServices(\n target.tables,\n target.mapping as OAuthNativeReadMapping,\n target.batch,\n ),\n );\n });\n\nexport const makeTargetOAuthAccountsServices = (\n source: unknown,\n configuration: OAuthTargetConfiguration,\n) =>\n Effect.gen(function* () {\n const target = yield* mapped(source, configuration);\n\n return yield* target.provide(\n makeNativeOAuthAccountsServices(\n target.tables,\n target.mapping as OAuthNativeAccountsMapping,\n target.batch,\n ),\n );\n });\n\nexport const makeTargetOAuthRegistrationIntentServices = (\n source: unknown,\n configuration: OAuthTargetConfiguration,\n) =>\n Effect.gen(function* () {\n const target = yield* mapped(source, configuration);\n\n return yield* target.provide(\n makeNativeOAuthRegistrationIntentServices(\n target.tables,\n target.mapping as OAuthNativeRegistrationIntentMapping,\n target.batch,\n ),\n );\n });\n\nexport const makeTargetOAuthConnectedServices = (\n source: unknown,\n configuration: OAuthTargetConfiguration,\n) =>\n Effect.gen(function* () {\n const target = yield* mapped(source, configuration);\n\n return yield* target.provide(\n makeNativeOAuthConnectedServices(\n target.tables,\n target.mapping as OAuthNativeConnectedMapping,\n target.batch,\n ),\n );\n });\n\nexport const makeTargetOAuthConnectedRevocationServices = (\n source: unknown,\n configuration: OAuthTargetConfiguration,\n) =>\n Effect.gen(function* () {\n const target = yield* mapped(source, configuration);\n\n return yield* target.provide(\n makeNativeOAuthRevocationServices(\n target.tables,\n target.mapping as OAuthNativeRevocationMapping,\n target.batch,\n ),\n );\n });\n\nexport const makeTargetOAuthRegistrationServices = <Registration>(\n source: unknown,\n configuration: OAuthTargetConfiguration,\n) =>\n Effect.gen(function* () {\n const target = yield* mapped(source, configuration);\n\n return yield* target.provide(\n makeNativeOAuthRegistrationServices(\n target.tables,\n target.mapping as OAuthNativeRegistrationMapping<Registration>,\n target.batch,\n ),\n );\n });\n\nconst coordinateOwner = <Services, Transaction, A, E, R, ES, RS>(\n database: NativeDatabaseHandle,\n configuration: OAuthTargetConfiguration,\n make: Effect.Effect<Services, ES, RS>,\n body: (transaction: Transaction, services: Services) => Effect.Effect<A, E, R>,\n): Effect.Effect<A, E | OAuthUnavailable, Exclude<R, D1BatchStatements> | RS | LifecycleHooks> =>\n coordinateNativeTarget(unavailable, database, configuration, make, body);\n\nexport const coordinateTargetOAuthSignIn = <Transaction, A, E, R>(\n database: NativeDatabaseHandle,\n mapping: unknown,\n configuration: OAuthTargetConfiguration,\n body: (\n transaction: Transaction,\n services: Effect.Success<ReturnType<typeof makeTargetOAuthSignInServices>>,\n ) => Effect.Effect<A, E, R>,\n) =>\n coordinateOwner(\n database,\n configuration,\n makeTargetOAuthSignInServices(mapping, configuration),\n body,\n );\n\nexport const coordinateTargetOAuthAccounts = <Transaction, A, E, R>(\n database: NativeDatabaseHandle,\n mapping: unknown,\n configuration: OAuthTargetConfiguration,\n body: (\n transaction: Transaction,\n services: Effect.Success<ReturnType<typeof makeTargetOAuthAccountsServices>>,\n ) => Effect.Effect<A, E, R>,\n) =>\n coordinateOwner(\n database,\n configuration,\n makeTargetOAuthAccountsServices(mapping, configuration),\n body,\n );\n\nexport const coordinateTargetOAuthRegistrationIntents = <Transaction, A, E, R>(\n database: NativeDatabaseHandle,\n mapping: unknown,\n configuration: OAuthTargetConfiguration,\n body: (\n transaction: Transaction,\n services: Effect.Success<ReturnType<typeof makeTargetOAuthRegistrationIntentServices>>,\n ) => Effect.Effect<A, E, R>,\n) =>\n coordinateOwner(\n database,\n configuration,\n makeTargetOAuthRegistrationIntentServices(mapping, configuration),\n body,\n );\n\nexport const coordinateTargetOAuthConnected = <Transaction, A, E, R>(\n database: NativeDatabaseHandle,\n mapping: unknown,\n configuration: OAuthTargetConfiguration,\n body: (\n transaction: Transaction,\n services: Effect.Success<ReturnType<typeof makeTargetOAuthConnectedServices>>,\n ) => Effect.Effect<A, E, R>,\n) =>\n coordinateOwner(\n database,\n configuration,\n makeTargetOAuthConnectedServices(mapping, configuration),\n body,\n );\n\nexport const coordinateTargetOAuthConnectedRevocations = <Transaction, A, E, R>(\n database: NativeDatabaseHandle,\n mapping: unknown,\n configuration: OAuthTargetConfiguration,\n body: (\n transaction: Transaction,\n services: Effect.Success<ReturnType<typeof makeTargetOAuthConnectedRevocationServices>>,\n ) => Effect.Effect<A, E, R>,\n) =>\n coordinateOwner(\n database,\n configuration,\n makeTargetOAuthConnectedRevocationServices(mapping, configuration),\n body,\n );\n\nexport const coordinateTargetOAuthRegistration = <Registration, Transaction, A, E, R>(\n database: NativeDatabaseHandle,\n mapping: unknown,\n configuration: OAuthTargetConfiguration,\n body: (\n transaction: Transaction,\n services: Effect.Success<ReturnType<typeof makeTargetOAuthRegistrationServices<Registration>>>,\n ) => Effect.Effect<A, E, R>,\n) =>\n coordinateOwner(\n database,\n configuration,\n makeTargetOAuthRegistrationServices<Registration>(mapping, configuration),\n body,\n );\n"],"mappings":";;;;;;AAwCA,MAAM,oBAAoB,iBAAiB,KAAK,CAAC,CAAC;AAElD,MAAM,SAAS,OAAO,WAAW,WAC/B,UACA,eACA;CACA,MAAM,UAAU,oBAAoB,QAAQ;CAE5C,OAAO,uBAAuB,OAAO,CAAC,CAAC,KAAK,OAAO,SAAS,WAAW,CAAC;CACxE,IACE,cAAc,SAAS,WACvB,EACE,OAAO,YAAY,YACnB,YAAY,QACZ,QAAQ,WACR,OAAO,QAAQ,OAAO,YACtB,QAAQ,OAAO,QACf,aAAa,QAAQ,MACrB,QAAQ,GAAG,YAAY,OAGzB,OAAO,OAAO,YAAY;CAE5B,OAAO;EAAE;EAAS,GAAI,OAAO,aAAa,aAAa;CAAG;AAC5D,CAAC;AAED,MAAa,iCACX,QACA,kBAEA,OAAO,IAAI,aAAa;CACtB,MAAM,SAAS,OAAO,OAAO,QAAQ,aAAa;CAElD,OAAO,OAAO,OAAO,QACnB,8BACE,OAAO,QACP,OAAO,SACP,OAAO,KACT,CACF;AACF,CAAC;AAEH,MAAa,mCACX,QACA,kBAEA,OAAO,IAAI,aAAa;CACtB,MAAM,SAAS,OAAO,OAAO,QAAQ,aAAa;CAElD,OAAO,OAAO,OAAO,QACnB,gCACE,OAAO,QACP,OAAO,SACP,OAAO,KACT,CACF;AACF,CAAC;AAEH,MAAa,6CACX,QACA,kBAEA,OAAO,IAAI,aAAa;CACtB,MAAM,SAAS,OAAO,OAAO,QAAQ,aAAa;CAElD,OAAO,OAAO,OAAO,QACnB,0CACE,OAAO,QACP,OAAO,SACP,OAAO,KACT,CACF;AACF,CAAC;AAEH,MAAa,oCACX,QACA,kBAEA,OAAO,IAAI,aAAa;CACtB,MAAM,SAAS,OAAO,OAAO,QAAQ,aAAa;CAElD,OAAO,OAAO,OAAO,QACnB,iCACE,OAAO,QACP,OAAO,SACP,OAAO,KACT,CACF;AACF,CAAC;AAEH,MAAa,8CACX,QACA,kBAEA,OAAO,IAAI,aAAa;CACtB,MAAM,SAAS,OAAO,OAAO,QAAQ,aAAa;CAElD,OAAO,OAAO,OAAO,QACnB,kCACE,OAAO,QACP,OAAO,SACP,OAAO,KACT,CACF;AACF,CAAC;AAEH,MAAa,uCACX,QACA,kBAEA,OAAO,IAAI,aAAa;CACtB,MAAM,SAAS,OAAO,OAAO,QAAQ,aAAa;CAElD,OAAO,OAAO,OAAO,QACnB,oCACE,OAAO,QACP,OAAO,SACP,OAAO,KACT,CACF;AACF,CAAC;AAEH,MAAM,mBACJ,UACA,eACA,MACA,SAEA,uBAAuB,aAAa,UAAU,eAAe,MAAM,IAAI;AAEzE,MAAa,+BACX,UACA,SACA,eACA,SAKA,gBACE,UACA,eACA,8BAA8B,SAAS,aAAa,GACpD,IACF;AAEF,MAAa,iCACX,UACA,SACA,eACA,SAKA,gBACE,UACA,eACA,gCAAgC,SAAS,aAAa,GACtD,IACF;AAEF,MAAa,4CACX,UACA,SACA,eACA,SAKA,gBACE,UACA,eACA,0CAA0C,SAAS,aAAa,GAChE,IACF;AAEF,MAAa,kCACX,UACA,SACA,eACA,SAKA,gBACE,UACA,eACA,iCAAiC,SAAS,aAAa,GACvD,IACF;AAEF,MAAa,6CACX,UACA,SACA,eACA,SAKA,gBACE,UACA,eACA,2CAA2C,SAAS,aAAa,GACjE,IACF;AAEF,MAAa,qCACX,UACA,SACA,eACA,SAKA,gBACE,UACA,eACA,oCAAkD,SAAS,aAAa,GACxE,IACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { PersistenceMappingError as PersistenceMappingError$1 } from "../model.mjs";
|
|
2
|
+
import "../passkey-model.mjs";
|
|
3
|
+
import "../native-database.mjs";
|
|
4
|
+
import "../D1BatchStatements.mjs";
|
|
5
|
+
import "../native-target.mjs";
|
|
6
|
+
import { SqlBatchCommit, makeNativePasskeyServices } from "@yielded/auth-persistence/Adapter";
|
|
7
|
+
import { Effect } from "effect";
|
|
8
|
+
import { LifecycleHooks } from "@yielded/auth/Hooks";
|
|
9
|
+
import { SqlClient } from "effect/sql";
|
|
10
|
+
import { PasskeyConfigurationError, PasskeyUnavailable } from "@yielded/auth/Passkey";
|
|
11
|
+
//#region src/drizzle/passkey/target.d.ts
|
|
12
|
+
export type PasskeyCoordinatorError<E> = E | PasskeyUnavailable | PasskeyConfigurationError | PersistenceMappingError$1;
|
|
13
|
+
//#endregion
|
|
14
|
+
//# sourceMappingURL=target.d.mts.map
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { NativeDatabase } from "../native-database.mjs";
|
|
2
|
+
import { coordinateNativeTarget, nativeTarget } from "../native-target.mjs";
|
|
3
|
+
import { validateDrizzleStorage } from "../storage-validation.mjs";
|
|
4
|
+
import { makeBatchPasskeyServices, makeNativePasskeyCeremonyServices, makeNativePasskeyCredentialServices, makeNativePasskeyServices } from "@yielded/auth-persistence/Adapter";
|
|
5
|
+
import { Effect } from "effect";
|
|
6
|
+
import { LifecycleHooks } from "@yielded/auth/Hooks";
|
|
7
|
+
import { PasskeyConfigurationError, PasskeyUnavailable } from "@yielded/auth/Passkey";
|
|
8
|
+
//#region src/drizzle/passkey/target.ts
|
|
9
|
+
const unavailable = () => PasskeyUnavailable.make({});
|
|
10
|
+
const emptyHooks = {
|
|
11
|
+
before: () => Effect.void,
|
|
12
|
+
after: () => Effect.succeed([])
|
|
13
|
+
};
|
|
14
|
+
const capturePasskeyMapping = (source, configuration) => Effect.flatMap(Effect.isEffect(source) ? source : Effect.succeed(source), (mapping) => validateDrizzleStorage(mapping).pipe(Effect.andThen(Effect.try({
|
|
15
|
+
try: () => {
|
|
16
|
+
if (configuration.mode === "batch" && !(typeof mapping === "object" && mapping !== null && "d1" in mapping && typeof mapping.d1 === "object" && mapping.d1 !== null && "primary" in mapping.d1 && mapping.d1.primary === true)) throw PasskeyConfigurationError.make({});
|
|
17
|
+
return mapping;
|
|
18
|
+
},
|
|
19
|
+
catch: () => PasskeyConfigurationError.make({})
|
|
20
|
+
}))));
|
|
21
|
+
const makePasskeyMapped = Effect.fnUntraced(function* (source, configuration) {
|
|
22
|
+
const mapping = yield* capturePasskeyMapping(source, configuration);
|
|
23
|
+
const database = yield* NativeDatabase;
|
|
24
|
+
const { tables, batch, provide } = yield* nativeTarget(configuration);
|
|
25
|
+
const native = mapping;
|
|
26
|
+
return {
|
|
27
|
+
mapping,
|
|
28
|
+
database,
|
|
29
|
+
tables,
|
|
30
|
+
batch,
|
|
31
|
+
provide,
|
|
32
|
+
base: () => provide(configuration.mode === "batch" ? makeBatchPasskeyServices(tables, native) : makeNativePasskeyServices(tables, native))
|
|
33
|
+
};
|
|
34
|
+
});
|
|
35
|
+
const makeTargetPasskeyCredentials = (source, configuration) => Effect.gen(function* () {
|
|
36
|
+
const target = yield* makePasskeyMapped(source, configuration);
|
|
37
|
+
return yield* target.provide(makeNativePasskeyCredentialServices(target.tables, target.mapping)).pipe(Effect.provideService(LifecycleHooks, emptyHooks));
|
|
38
|
+
}).pipe(Effect.catchDefect(() => Effect.fail(PasskeyConfigurationError.make({}))));
|
|
39
|
+
const makeTargetPasskeyPersistence = (source, configuration) => Effect.gen(function* () {
|
|
40
|
+
return { passkeyPersistence: (yield* (yield* makePasskeyMapped(source, configuration)).base()).passkeyPersistence };
|
|
41
|
+
});
|
|
42
|
+
const makeTargetPasskeyRegistration = (source, configuration) => Effect.gen(function* () {
|
|
43
|
+
const target = yield* makePasskeyMapped(source, configuration);
|
|
44
|
+
return yield* target.provide(makeNativePasskeyCeremonyServices(target.tables, target.mapping, configuration.mode === "batch" ? target.batch : void 0));
|
|
45
|
+
});
|
|
46
|
+
const coordinatePasskeyOwner = (database, configuration, make, body) => coordinateNativeTarget(unavailable, database, configuration, make, body);
|
|
47
|
+
const coordinateTargetPasskey = (database, source, configuration, body) => coordinatePasskeyOwner(database, configuration, makeTargetPasskeyPersistence(source, configuration), body);
|
|
48
|
+
const coordinateTargetPasskeyRegistration = (database, source, configuration, body) => coordinatePasskeyOwner(database, configuration, makeTargetPasskeyRegistration(source, configuration), body);
|
|
49
|
+
//#endregion
|
|
50
|
+
export { capturePasskeyMapping, coordinatePasskeyOwner, coordinateTargetPasskey, coordinateTargetPasskeyRegistration, makePasskeyMapped, makeTargetPasskeyCredentials, makeTargetPasskeyPersistence, makeTargetPasskeyRegistration };
|
|
51
|
+
|
|
52
|
+
//# sourceMappingURL=target.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target.mjs","names":[],"sources":["../../../src/drizzle/passkey/target.ts"],"sourcesContent":["import {\n type SqlBatchCommit,\n makeBatchPasskeyServices,\n makeNativePasskeyCeremonyServices,\n makeNativePasskeyCredentialServices,\n makeNativePasskeyServices,\n type NativeSqlTables,\n type NativePasskeyCeremonyMapping,\n type PasskeyNativeMapping,\n type PasskeyNativeRead,\n} from \"@yielded/auth-persistence/Adapter\";\nimport { LifecycleHooks } from \"@yielded/auth/Hooks\";\nimport { PasskeyConfigurationError, PasskeyUnavailable } from \"@yielded/auth/Passkey\";\nimport { type Crypto, Effect } from \"effect\";\nimport type { SqlClient } from \"effect/sql\";\n\nimport type { D1BatchStatements } from \"../D1BatchStatements\";\nimport type { PersistenceMappingError } from \"../model\";\nimport {\n NativeDatabase,\n type NativeDatabaseHandle,\n type NativePhysicalDatabase,\n} from \"../native-database\";\nimport {\n nativeTarget,\n coordinateNativeTarget,\n type NativeTargetConfiguration,\n} from \"../native-target\";\nimport type { PasskeyPersistenceServices, PasskeyMappingSource } from \"../passkey-model\";\nimport { validateDrizzleStorage } from \"../storage-validation\";\nexport type PasskeyTargetConfiguration = NativeTargetConfiguration;\n\nexport type PasskeyCoordinatorError<E> =\n | E\n | PasskeyUnavailable\n | PasskeyConfigurationError\n | PersistenceMappingError;\n\nconst unavailable = () => PasskeyUnavailable.make({});\n\nconst emptyHooks: LifecycleHooks[\"Service\"] = {\n before: () => Effect.void,\n after: () => Effect.succeed([]),\n};\n\n// Mapped table/SQL generics end here. Persisted values are decoded by shared schemas.\nexport const capturePasskeyMapping = <M, R>(\n source: PasskeyMappingSource<M, R>,\n configuration: PasskeyTargetConfiguration,\n) =>\n Effect.flatMap(Effect.isEffect(source) ? source : Effect.succeed(source), (mapping) =>\n validateDrizzleStorage(mapping).pipe(\n Effect.andThen(\n Effect.try({\n try: () => {\n if (\n configuration.mode === \"batch\" &&\n !(\n typeof mapping === \"object\" &&\n mapping !== null &&\n \"d1\" in mapping &&\n typeof mapping.d1 === \"object\" &&\n mapping.d1 !== null &&\n \"primary\" in mapping.d1 &&\n mapping.d1.primary === true\n )\n )\n throw PasskeyConfigurationError.make({});\n\n return mapping;\n },\n catch: () => PasskeyConfigurationError.make({}),\n }),\n ),\n ),\n );\n\ntype NativePasskeyServices = Effect.Success<ReturnType<typeof makeNativePasskeyServices>>;\n\ninterface PasskeyMapped<M> {\n readonly mapping: M;\n readonly database: NativePhysicalDatabase;\n readonly tables: NativeSqlTables;\n readonly batch: SqlBatchCommit[\"Service\"] | undefined;\n readonly provide: <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n ) => Effect.Effect<A, E, Exclude<Exclude<R, SqlClient.SqlClient>, SqlBatchCommit>>;\n readonly base: () => Effect.Effect<NativePasskeyServices, never, Crypto.Crypto | LifecycleHooks>;\n}\n\nexport const makePasskeyMapped = Effect.fnUntraced(function* <M, R>(\n source: PasskeyMappingSource<M, R>,\n configuration: PasskeyTargetConfiguration,\n): Effect.fn.Return<\n PasskeyMapped<M>,\n PasskeyConfigurationError | PersistenceMappingError,\n R | NativeDatabase\n> {\n const mapping = yield* capturePasskeyMapping(source, configuration);\n const database = yield* NativeDatabase;\n const { tables, batch, provide } = yield* nativeTarget(configuration);\n const native = mapping as unknown as PasskeyNativeMapping;\n\n return {\n mapping,\n database,\n tables,\n batch,\n provide,\n base: () =>\n provide(\n configuration.mode === \"batch\"\n ? makeBatchPasskeyServices(tables, native)\n : makeNativePasskeyServices(tables, native),\n ),\n };\n});\n\nexport const makeTargetPasskeyCredentials = <M, R>(\n source: PasskeyMappingSource<M, R>,\n configuration: PasskeyTargetConfiguration,\n) =>\n Effect.gen(function* () {\n const target = yield* makePasskeyMapped(source, configuration);\n\n return yield* target\n .provide(\n makeNativePasskeyCredentialServices(\n target.tables,\n target.mapping as unknown as PasskeyNativeRead,\n ),\n )\n .pipe(Effect.provideService(LifecycleHooks, emptyHooks));\n }).pipe(Effect.catchDefect(() => Effect.fail(PasskeyConfigurationError.make({}))));\n\nexport const makeTargetPasskeyPersistence = <M, R>(\n source: PasskeyMappingSource<M, R>,\n configuration: PasskeyTargetConfiguration,\n) =>\n Effect.gen(function* () {\n const target = yield* makePasskeyMapped(source, configuration);\n\n const base = yield* target.base();\n\n return { passkeyPersistence: base.passkeyPersistence } satisfies PasskeyPersistenceServices;\n });\n\nexport const makeTargetPasskeyRegistration = <M, R>(\n source: PasskeyMappingSource<M, R>,\n configuration: PasskeyTargetConfiguration,\n) =>\n Effect.gen(function* () {\n const target = yield* makePasskeyMapped(source, configuration);\n\n return yield* target.provide(\n makeNativePasskeyCeremonyServices(\n target.tables,\n target.mapping as unknown as NativePasskeyCeremonyMapping,\n configuration.mode === \"batch\" ? target.batch : undefined,\n ),\n );\n });\n\nexport const coordinatePasskeyOwner = <S, Transaction, A, E, R, ESetup, RSetup>(\n database: NativeDatabaseHandle,\n configuration: PasskeyTargetConfiguration,\n make: Effect.Effect<S, ESetup, RSetup>,\n body: (transaction: Transaction, services: S) => Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | PasskeyUnavailable,\n Exclude<R, D1BatchStatements> | RSetup | LifecycleHooks\n> => coordinateNativeTarget(unavailable, database, configuration, make, body);\n\nexport const coordinateTargetPasskey = <M, RSetup, Transaction, A, E, R>(\n database: NativeDatabaseHandle,\n source: PasskeyMappingSource<M, RSetup>,\n configuration: PasskeyTargetConfiguration,\n body: (\n transaction: Transaction,\n services: Effect.Success<ReturnType<typeof makeTargetPasskeyPersistence>>,\n ) => Effect.Effect<A, E, R>,\n) =>\n coordinatePasskeyOwner(\n database,\n configuration,\n makeTargetPasskeyPersistence(source, configuration),\n body,\n );\n\nexport const coordinateTargetPasskeyRegistration = <M, RSetup, Transaction, A, E, R>(\n database: NativeDatabaseHandle,\n source: PasskeyMappingSource<M, RSetup>,\n configuration: PasskeyTargetConfiguration,\n body: (\n transaction: Transaction,\n services: Effect.Success<ReturnType<typeof makeTargetPasskeyRegistration>>,\n ) => Effect.Effect<A, E, R>,\n) =>\n coordinatePasskeyOwner(\n database,\n configuration,\n makeTargetPasskeyRegistration(source, configuration),\n body,\n );\n"],"mappings":";;;;;;;;AAsCA,MAAM,oBAAoB,mBAAmB,KAAK,CAAC,CAAC;AAEpD,MAAM,aAAwC;CAC5C,cAAc,OAAO;CACrB,aAAa,OAAO,QAAQ,CAAC,CAAC;AAChC;AAGA,MAAa,yBACX,QACA,kBAEA,OAAO,QAAQ,OAAO,SAAS,MAAM,IAAI,SAAS,OAAO,QAAQ,MAAM,IAAI,YACzE,uBAAuB,OAAO,CAAC,CAAC,KAC9B,OAAO,QACL,OAAO,IAAI;CACT,WAAW;EACT,IACE,cAAc,SAAS,WACvB,EACE,OAAO,YAAY,YACnB,YAAY,QACZ,QAAQ,WACR,OAAO,QAAQ,OAAO,YACtB,QAAQ,OAAO,QACf,aAAa,QAAQ,MACrB,QAAQ,GAAG,YAAY,OAGzB,MAAM,0BAA0B,KAAK,CAAC,CAAC;EAEzC,OAAO;CACT;CACA,aAAa,0BAA0B,KAAK,CAAC,CAAC;AAChD,CAAC,CACH,CACF,CACF;AAeF,MAAa,oBAAoB,OAAO,WAAW,WACjD,QACA,eAKA;CACA,MAAM,UAAU,OAAO,sBAAsB,QAAQ,aAAa;CAClE,MAAM,WAAW,OAAO;CACxB,MAAM,EAAE,QAAQ,OAAO,YAAY,OAAO,aAAa,aAAa;CACpE,MAAM,SAAS;CAEf,OAAO;EACL;EACA;EACA;EACA;EACA;EACA,YACE,QACE,cAAc,SAAS,UACnB,yBAAyB,QAAQ,MAAM,IACvC,0BAA0B,QAAQ,MAAM,CAC9C;CACJ;AACF,CAAC;AAED,MAAa,gCACX,QACA,kBAEA,OAAO,IAAI,aAAa;CACtB,MAAM,SAAS,OAAO,kBAAkB,QAAQ,aAAa;CAE7D,OAAO,OAAO,OACX,QACC,oCACE,OAAO,QACP,OAAO,OACT,CACF,CAAC,CACA,KAAK,OAAO,eAAe,gBAAgB,UAAU,CAAC;AAC3D,CAAC,CAAC,CAAC,KAAK,OAAO,kBAAkB,OAAO,KAAK,0BAA0B,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAEnF,MAAa,gCACX,QACA,kBAEA,OAAO,IAAI,aAAa;CAKtB,OAAO,EAAE,qBAAoB,QAFT,OAFE,kBAAkB,QAAQ,aAAa,EAAA,CAElC,KAAK,EAAA,CAEE,mBAAmB;AACvD,CAAC;AAEH,MAAa,iCACX,QACA,kBAEA,OAAO,IAAI,aAAa;CACtB,MAAM,SAAS,OAAO,kBAAkB,QAAQ,aAAa;CAE7D,OAAO,OAAO,OAAO,QACnB,kCACE,OAAO,QACP,OAAO,SACP,cAAc,SAAS,UAAU,OAAO,QAAQ,KAAA,CAClD,CACF;AACF,CAAC;AAEH,MAAa,0BACX,UACA,eACA,MACA,SAKG,uBAAuB,aAAa,UAAU,eAAe,MAAM,IAAI;AAE5E,MAAa,2BACX,UACA,QACA,eACA,SAKA,uBACE,UACA,eACA,6BAA6B,QAAQ,aAAa,GAClD,IACF;AAEF,MAAa,uCACX,UACA,QACA,eACA,SAKA,uBACE,UACA,eACA,8BAA8B,QAAQ,aAAa,GACnD,IACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import "../passkey-model.mjs";
|
|
2
|
+
import "../native-database.mjs";
|
|
3
|
+
import "../D1BatchStatements.mjs";
|
|
4
|
+
import { PasskeyManagementServices } from "../passkey-write-model.mjs";
|
|
5
|
+
import "./target.mjs";
|
|
6
|
+
import { Effect, Layer } from "effect";
|
|
7
|
+
import { PasskeyManagementPersistence } from "@yielded/auth/Passkey";
|
|
8
|
+
//#region src/drizzle/passkey/write-target.d.ts
|
|
9
|
+
export declare const passkeyManagementPersistenceLayer: <E, R>(services: Effect.Effect<PasskeyManagementServices, E, R>) => Layer.Layer<PasskeyManagementPersistence, E, Exclude<R, import("effect/Scope").Scope>>;
|
|
10
|
+
//#endregion
|
|
11
|
+
//# sourceMappingURL=write-target.d.mts.map
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { coordinatePasskeyOwner, makePasskeyMapped } from "./target.mjs";
|
|
2
|
+
import { makePasskeyNativeManagement, makePasskeyNativeRegistration } from "@yielded/auth-persistence/Adapter";
|
|
3
|
+
import { Effect, Layer } from "effect";
|
|
4
|
+
import { PasskeyManagementPersistence } from "@yielded/auth/Passkey";
|
|
5
|
+
//#region src/drizzle/passkey/write-target.ts
|
|
6
|
+
const passkeyManagementPersistenceLayer = (services) => Layer.effect(PasskeyManagementPersistence, Effect.map(services, (value) => value.passkeyManagementPersistence));
|
|
7
|
+
const makeTargetPasskeyManagement = (source, configuration) => Effect.gen(function* () {
|
|
8
|
+
const target = yield* makePasskeyMapped(source, configuration);
|
|
9
|
+
const base = yield* target.base();
|
|
10
|
+
return {
|
|
11
|
+
passkeyPersistence: base.passkeyPersistence,
|
|
12
|
+
...makePasskeyNativeManagement(base, target.mapping)
|
|
13
|
+
};
|
|
14
|
+
});
|
|
15
|
+
const makeTargetPasskeyRegistrationWriter = (source, configuration) => Effect.gen(function* () {
|
|
16
|
+
const target = yield* makePasskeyMapped(source, configuration);
|
|
17
|
+
const base = yield* target.base();
|
|
18
|
+
return {
|
|
19
|
+
passkeyPersistence: base.passkeyPersistence,
|
|
20
|
+
...makePasskeyNativeRegistration(base, target.mapping)
|
|
21
|
+
};
|
|
22
|
+
});
|
|
23
|
+
const coordinateTargetPasskeyManagement = (database, source, configuration, body) => coordinatePasskeyOwner(database, configuration, makeTargetPasskeyManagement(source, configuration), body);
|
|
24
|
+
const coordinateTargetPasskeyRegistrationWriter = (database, source, configuration, body) => coordinatePasskeyOwner(database, configuration, makeTargetPasskeyRegistrationWriter(source, configuration), body);
|
|
25
|
+
//#endregion
|
|
26
|
+
export { coordinateTargetPasskeyManagement, coordinateTargetPasskeyRegistrationWriter, makeTargetPasskeyManagement, makeTargetPasskeyRegistrationWriter, passkeyManagementPersistenceLayer };
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=write-target.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-target.mjs","names":[],"sources":["../../../src/drizzle/passkey/write-target.ts"],"sourcesContent":["import {\n makePasskeyNativeManagement,\n makePasskeyNativeRegistration,\n type NativePasskeyManagementMapping,\n type NativePasskeyRegistrationMapping,\n} from \"@yielded/auth-persistence/Adapter\";\nimport { PasskeyManagementPersistence } from \"@yielded/auth/Passkey\";\nimport { Effect, Layer } from \"effect\";\n\nimport type { NativeDatabaseHandle } from \"../native-database\";\nimport type { PasskeyMappingSource } from \"../passkey-model\";\nimport type {\n PasskeyManagementServices,\n PasskeyRegistrationServices,\n} from \"../passkey-write-model\";\nimport {\n coordinatePasskeyOwner,\n makePasskeyMapped,\n type PasskeyTargetConfiguration,\n} from \"./target\";\n\nexport const passkeyManagementPersistenceLayer = <E, R>(\n services: Effect.Effect<PasskeyManagementServices, E, R>,\n) =>\n Layer.effect(\n PasskeyManagementPersistence,\n Effect.map(services, (value) => value.passkeyManagementPersistence),\n );\n\nexport const makeTargetPasskeyManagement = <M, R>(\n source: PasskeyMappingSource<M, R>,\n configuration: PasskeyTargetConfiguration,\n) =>\n Effect.gen(function* () {\n const target = yield* makePasskeyMapped(source, configuration);\n const base = yield* target.base();\n\n return {\n passkeyPersistence: base.passkeyPersistence,\n ...makePasskeyNativeManagement(\n base,\n target.mapping as unknown as NativePasskeyManagementMapping,\n ),\n };\n });\n\nexport const makeTargetPasskeyRegistrationWriter = <M, Value, R>(\n source: PasskeyMappingSource<M, R>,\n configuration: PasskeyTargetConfiguration,\n) =>\n Effect.gen(function* () {\n const target = yield* makePasskeyMapped(source, configuration);\n const base = yield* target.base();\n\n return {\n passkeyPersistence: base.passkeyPersistence,\n ...makePasskeyNativeRegistration(\n base,\n target.mapping as unknown as NativePasskeyRegistrationMapping<Value>,\n ),\n };\n });\n\nexport const coordinateTargetPasskeyManagement = <M, RSetup, Transaction, A, E, R>(\n database: NativeDatabaseHandle,\n source: PasskeyMappingSource<M, RSetup>,\n configuration: PasskeyTargetConfiguration,\n body: (transaction: Transaction, services: PasskeyManagementServices) => Effect.Effect<A, E, R>,\n) =>\n coordinatePasskeyOwner(\n database,\n configuration,\n makeTargetPasskeyManagement(source, configuration),\n body,\n );\n\nexport const coordinateTargetPasskeyRegistrationWriter = <M, Value, RSetup, Transaction, A, E, R>(\n database: NativeDatabaseHandle,\n source: PasskeyMappingSource<M, RSetup>,\n configuration: PasskeyTargetConfiguration,\n body: (\n transaction: Transaction,\n services: PasskeyRegistrationServices<Value>,\n ) => Effect.Effect<A, E, R>,\n) =>\n coordinatePasskeyOwner(\n database,\n configuration,\n makeTargetPasskeyRegistrationWriter<M, Value, RSetup>(source, configuration),\n body,\n );\n"],"mappings":";;;;;AAqBA,MAAa,qCACX,aAEA,MAAM,OACJ,8BACA,OAAO,IAAI,WAAW,UAAU,MAAM,4BAA4B,CACpE;AAEF,MAAa,+BACX,QACA,kBAEA,OAAO,IAAI,aAAa;CACtB,MAAM,SAAS,OAAO,kBAAkB,QAAQ,aAAa;CAC7D,MAAM,OAAO,OAAO,OAAO,KAAK;CAEhC,OAAO;EACL,oBAAoB,KAAK;EACzB,GAAG,4BACD,MACA,OAAO,OACT;CACF;AACF,CAAC;AAEH,MAAa,uCACX,QACA,kBAEA,OAAO,IAAI,aAAa;CACtB,MAAM,SAAS,OAAO,kBAAkB,QAAQ,aAAa;CAC7D,MAAM,OAAO,OAAO,OAAO,KAAK;CAEhC,OAAO;EACL,oBAAoB,KAAK;EACzB,GAAG,8BACD,MACA,OAAO,OACT;CACF;AACF,CAAC;AAEH,MAAa,qCACX,UACA,QACA,eACA,SAEA,uBACE,UACA,eACA,4BAA4B,QAAQ,aAAa,GACjD,IACF;AAEF,MAAa,6CACX,UACA,QACA,eACA,SAKA,uBACE,UACA,eACA,oCAAsD,QAAQ,aAAa,GAC3E,IACF"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { nativeDatabase } from "./native-database.mjs";
|
|
2
|
-
import { coordinateTargetPasskey, coordinateTargetPasskeyRegistration, makeTargetPasskeyCredentials,
|
|
1
|
+
import { NativeDatabase, nativeDatabase } from "./native-database.mjs";
|
|
2
|
+
import { coordinateTargetPasskey, coordinateTargetPasskeyRegistration, makeTargetPasskeyCredentials, makeTargetPasskeyPersistence, makeTargetPasskeyRegistration } from "./passkey/target.mjs";
|
|
3
3
|
import { makePasskeyWriteTarget } from "./passkey-write-drivers.mjs";
|
|
4
|
-
import { NativeDatabase } from "@yielded/auth-persistence/Adapter";
|
|
5
4
|
import { Context, Effect } from "effect";
|
|
6
5
|
import { PasskeyPersistence } from "@yielded/auth/Passkey";
|
|
7
6
|
//#region src/drizzle/passkey-drivers.ts
|
|
@@ -23,7 +22,6 @@ const makePasskeyTarget = (databaseService, configuration) => {
|
|
|
23
22
|
return {
|
|
24
23
|
...makePasskeyWriteTarget(databaseService, configuration),
|
|
25
24
|
makePasskeyCredentialServices: (mapping) => makeTargetPasskeyCredentials(mapping, configuration).pipe(Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService))),
|
|
26
|
-
makePasskeyEnrollmentContextServices: (mapping) => makeTargetPasskeyEnrollmentContext(mapping, configuration).pipe(Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService))),
|
|
27
25
|
makePasskeyPersistenceServices: (mapping) => makeTargetPasskeyPersistence(mapping, configuration).pipe(Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService))),
|
|
28
26
|
makePasskeyRegistrationCeremonyServices: (mapping) => makeTargetPasskeyRegistration(mapping, configuration).pipe(Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService))),
|
|
29
27
|
coordinatePasskeyPersistence,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"passkey-drivers.mjs","names":[],"sources":["../../src/drizzle/passkey-drivers.ts"],"sourcesContent":["import { NativeDatabase } from \"@yielded/auth-persistence/Adapter\";\nimport type { LifecycleHooks } from \"@yielded/auth/Hooks\";\nimport { PasskeyPersistence } from \"@yielded/auth/Passkey\";\nimport type { Table } from \"drizzle-orm\";\nimport { type Crypto, Effect, Context } from \"effect\";\n\nimport { nativeDatabase } from \"./native-database\";\nimport type {\n PasskeyCredentialMapping,\n PasskeyEnrollmentContextMapping,\n PasskeyMappingSource,\n PasskeyPersistenceMapping,\n PasskeyPersistenceServices,\n} from \"./passkey-model\";\nimport type {\n PasskeyRegistrationCeremonyMapping,\n PasskeyRegistrationCeremonyServices,\n} from \"./passkey-registration-ceremony-model\";\nimport {\n type PasskeyCoordinatorError,\n coordinateTargetPasskey,\n coordinateTargetPasskeyRegistration,\n makeTargetPasskeyCredentials,\n makeTargetPasskeyEnrollmentContext,\n makeTargetPasskeyPersistence,\n makeTargetPasskeyRegistration,\n type PasskeyTargetConfiguration,\n} from \"./passkey-target\";\nimport { makePasskeyWriteTarget } from \"./passkey-write-drivers\";\nimport type { SuppliedService } from \"./SuppliedService\";\n\n// oxlint-disable-next-line no-explicit-any -- inspect only the concrete database's installed generic transaction callback.\ntype TransactionOf<D> = D extends { readonly transaction: (...args: any[]) => any }\n ? Parameters<Parameters<D[\"transaction\"]>[0]>[0]\n : never;\n\nexport const makePasskeyTarget = <\n DatabaseId,\n D,\n T extends Table,\n Extra = unknown,\n Synchronous extends boolean = false,\n>(\n databaseService: Context.Service<DatabaseId, D>,\n configuration: PasskeyTargetConfiguration,\n) => {\n function coordinatePasskeyPersistence<\n Database extends D,\n S extends T,\n C extends T,\n F extends T,\n O extends T,\n H extends T,\n M extends T,\n Flow extends T,\n Admission extends T,\n Charge extends T,\n N,\n A,\n E,\n R,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyPersistenceMapping<\n PasskeyCredentialMapping<S, C, F, O, H, N>,\n M,\n Flow,\n Admission,\n Charge,\n N\n > &\n Extra,\n RSetup\n >;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<PasskeyPersistence> : R>,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, PasskeyPersistence>)\n | Crypto.Crypto\n | LifecycleHooks\n | DatabaseRequirements\n | RSetup\n >;\n function coordinatePasskeyPersistence<\n Database extends D,\n S extends T,\n C extends T,\n F extends T,\n O extends T,\n H extends T,\n M extends T,\n Flow extends T,\n Admission extends T,\n Charge extends T,\n N,\n A,\n E,\n R,\n TxId,\n TxShape,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyPersistenceMapping<\n PasskeyCredentialMapping<S, C, F, O, H, N>,\n M,\n Flow,\n Admission,\n Charge,\n N\n > &\n Extra,\n RSetup\n >;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<PasskeyPersistence | TxId> : R>,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, PasskeyPersistence | TxId>)\n | Crypto.Crypto\n | LifecycleHooks\n | DatabaseRequirements\n | RSetup\n >;\n function coordinatePasskeyPersistence<\n Database extends D,\n S extends T,\n C extends T,\n F extends T,\n O extends T,\n H extends T,\n M extends T,\n Flow extends T,\n Admission extends T,\n Charge extends T,\n N,\n A,\n E,\n R,\n TxId,\n TxShape,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyPersistenceMapping<\n PasskeyCredentialMapping<S, C, F, O, H, N>,\n M,\n Flow,\n Admission,\n Charge,\n N\n > &\n Extra,\n RSetup\n >;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n Exclude<R, PasskeyPersistence> | Crypto.Crypto | LifecycleHooks | DatabaseRequirements | RSetup\n > {\n return Effect.flatMap(nativeDatabase(acquire), (database) =>\n coordinateTargetPasskey(\n database,\n options.mapping,\n configuration,\n (transaction: TransactionOf<Database>, services: PasskeyPersistenceServices) => {\n const provided = Context.make(PasskeyPersistence, services.passkeyPersistence);\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 coordinatePasskeyRegistrationCeremony<\n Database extends D,\n M extends T,\n Flow extends T,\n Admission extends T,\n Charge extends T,\n Intent extends T,\n H extends T,\n A,\n E,\n R,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyRegistrationCeremonyMapping<M, Flow, Admission, Charge, Intent, H> & Extra,\n RSetup\n >;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<PasskeyPersistence> : R>,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, PasskeyPersistence>)\n | Crypto.Crypto\n | LifecycleHooks\n | DatabaseRequirements\n | RSetup\n >;\n function coordinatePasskeyRegistrationCeremony<\n Database extends D,\n M extends T,\n Flow extends T,\n Admission extends T,\n Charge extends T,\n Intent extends T,\n H extends T,\n A,\n E,\n R,\n TxId,\n TxShape,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyRegistrationCeremonyMapping<M, Flow, Admission, Charge, Intent, H> & Extra,\n RSetup\n >;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<PasskeyPersistence | TxId> : R>,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, PasskeyPersistence | TxId>)\n | Crypto.Crypto\n | LifecycleHooks\n | DatabaseRequirements\n | RSetup\n >;\n function coordinatePasskeyRegistrationCeremony<\n Database extends D,\n M extends T,\n Flow extends T,\n Admission extends T,\n Charge extends T,\n Intent extends T,\n H extends T,\n A,\n E,\n R,\n TxId,\n TxShape,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyRegistrationCeremonyMapping<M, Flow, Admission, Charge, Intent, H> & Extra,\n RSetup\n >;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n Exclude<R, PasskeyPersistence> | Crypto.Crypto | LifecycleHooks | DatabaseRequirements | RSetup\n > {\n return Effect.flatMap(nativeDatabase(acquire), (database) =>\n coordinateTargetPasskeyRegistration(\n database,\n options.mapping,\n configuration,\n (transaction: TransactionOf<Database>, services: PasskeyRegistrationCeremonyServices) => {\n const provided = Context.make(PasskeyPersistence, services.passkeyPersistence);\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 ...makePasskeyWriteTarget<DatabaseId, D, T, Extra, Synchronous>(databaseService, configuration),\n makePasskeyCredentialServices: <\n S extends T,\n C extends T,\n F extends T,\n O extends T,\n H extends T,\n N,\n RSetup = never,\n >(\n mapping: PasskeyMappingSource<PasskeyCredentialMapping<S, C, F, O, H, N> & Extra, RSetup>,\n ) =>\n makeTargetPasskeyCredentials(mapping, configuration).pipe(\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),\n ),\n makePasskeyEnrollmentContextServices: <\n S extends T,\n C extends T,\n F extends T,\n O extends T,\n H extends T,\n M extends T,\n N,\n RSetup = never,\n >(\n mapping: PasskeyMappingSource<\n PasskeyEnrollmentContextMapping<PasskeyCredentialMapping<S, C, F, O, H, N>, M, N> & Extra,\n RSetup\n >,\n ) =>\n makeTargetPasskeyEnrollmentContext(mapping, configuration).pipe(\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),\n ),\n makePasskeyPersistenceServices: <\n S extends T,\n C extends T,\n F extends T,\n O extends T,\n H extends T,\n M extends T,\n Flow extends T,\n Admission extends T,\n Charge extends T,\n N,\n RSetup = never,\n >(\n mapping: PasskeyMappingSource<\n PasskeyPersistenceMapping<\n PasskeyCredentialMapping<S, C, F, O, H, N>,\n M,\n Flow,\n Admission,\n Charge,\n N\n > &\n Extra,\n RSetup\n >,\n ) =>\n makeTargetPasskeyPersistence(mapping, configuration).pipe(\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),\n ),\n makePasskeyRegistrationCeremonyServices: <\n M extends T,\n Flow extends T,\n Admission extends T,\n Charge extends T,\n Intent extends T,\n H extends T,\n RSetup = never,\n >(\n mapping: PasskeyMappingSource<\n PasskeyRegistrationCeremonyMapping<M, Flow, Admission, Charge, Intent, H> & Extra,\n RSetup\n >,\n ) =>\n makeTargetPasskeyRegistration(mapping, configuration).pipe(\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),\n ),\n coordinatePasskeyPersistence,\n coordinatePasskeyRegistrationCeremony,\n };\n};\n"],"mappings":";;;;;;;AAoCA,MAAa,qBAOX,iBACA,kBACG;CA6FH,SAAS,6BAqBP,SACA,SAeA,MAKA;EACA,OAAO,OAAO,QAAQ,eAAe,OAAO,IAAI,aAC9C,wBACE,UACA,QAAQ,SACR,gBACC,aAAsC,aAAyC;GAC9E,MAAM,WAAW,QAAQ,KAAK,oBAAoB,SAAS,kBAAkB;GAC7E,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;CAqEA,SAAS,sCAiBP,SACA,SAOA,MAKA;EACA,OAAO,OAAO,QAAQ,eAAe,OAAO,IAAI,aAC9C,oCACE,UACA,QAAQ,SACR,gBACC,aAAsC,aAAkD;GACvF,MAAM,WAAW,QAAQ,KAAK,oBAAoB,SAAS,kBAAkB;GAC7E,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,GAAG,uBAA6D,iBAAiB,aAAa;EAC9F,gCASE,YAEA,6BAA6B,SAAS,aAAa,CAAC,CAAC,KACnD,OAAO,qBAAqB,gBAAgB,eAAe,eAAe,CAAC,CAC7E;EACF,uCAUE,YAKA,mCAAmC,SAAS,aAAa,CAAC,CAAC,KACzD,OAAO,qBAAqB,gBAAgB,eAAe,eAAe,CAAC,CAC7E;EACF,iCAaE,YAaA,6BAA6B,SAAS,aAAa,CAAC,CAAC,KACnD,OAAO,qBAAqB,gBAAgB,eAAe,eAAe,CAAC,CAC7E;EACF,0CASE,YAKA,8BAA8B,SAAS,aAAa,CAAC,CAAC,KACpD,OAAO,qBAAqB,gBAAgB,eAAe,eAAe,CAAC,CAC7E;EACF;EACA;CACF;AACF"}
|
|
1
|
+
{"version":3,"file":"passkey-drivers.mjs","names":[],"sources":["../../src/drizzle/passkey-drivers.ts"],"sourcesContent":["import type { LifecycleHooks } from \"@yielded/auth/Hooks\";\nimport { PasskeyPersistence } from \"@yielded/auth/Passkey\";\nimport type { Table } from \"drizzle-orm\";\nimport { type Crypto, Effect, Context } from \"effect\";\n\nimport type { D1BatchStatements } from \"./D1BatchStatements\";\nimport { NativeDatabase, nativeDatabase } from \"./native-database\";\nimport type {\n PasskeyCredentialMapping,\n PasskeyMappingSource,\n PasskeyPersistenceMapping,\n PasskeyPersistenceServices,\n} from \"./passkey-model\";\nimport type {\n PasskeyRegistrationCeremonyMapping,\n PasskeyRegistrationCeremonyServices,\n} from \"./passkey-registration-ceremony-model\";\nimport { makePasskeyWriteTarget } from \"./passkey-write-drivers\";\nimport {\n type PasskeyCoordinatorError,\n coordinateTargetPasskey,\n coordinateTargetPasskeyRegistration,\n makeTargetPasskeyCredentials,\n makeTargetPasskeyPersistence,\n makeTargetPasskeyRegistration,\n type PasskeyTargetConfiguration,\n} from \"./passkey/target\";\nimport type { SuppliedService } from \"./SuppliedService\";\n\n// oxlint-disable-next-line no-explicit-any -- inspect only the concrete database's installed generic transaction callback.\ntype TransactionOf<D> = D extends { readonly transaction: (...args: any[]) => any }\n ? Parameters<Parameters<D[\"transaction\"]>[0]>[0]\n : never;\n\nexport const makePasskeyTarget = <\n DatabaseId,\n D,\n T extends Table,\n Extra = unknown,\n Provided extends D1BatchStatements = never,\n>(\n databaseService: Context.Service<DatabaseId, D>,\n configuration: PasskeyTargetConfiguration,\n) => {\n function coordinatePasskeyPersistence<\n Database extends D,\n S extends T,\n C extends T,\n F extends T,\n Flow extends T,\n N,\n A,\n E,\n R,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyPersistenceMapping<PasskeyCredentialMapping<S, C, F, N>, Flow, N> & Extra,\n RSetup\n >;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n | Exclude<R, PasskeyPersistence | Provided>\n | Crypto.Crypto\n | LifecycleHooks\n | DatabaseRequirements\n | RSetup\n >;\n function coordinatePasskeyPersistence<\n Database extends D,\n S extends T,\n C extends T,\n F extends T,\n Flow extends T,\n N,\n A,\n E,\n R,\n TxId,\n TxShape,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyPersistenceMapping<PasskeyCredentialMapping<S, C, F, N>, Flow, N> & Extra,\n RSetup\n >;\n readonly transaction: SuppliedService<\n TxId,\n NoInfer<[Provided] extends [never] ? TransactionOf<Database> : never>,\n TxShape\n >;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n | Exclude<R, PasskeyPersistence | TxId | Provided>\n | Crypto.Crypto\n | LifecycleHooks\n | DatabaseRequirements\n | RSetup\n >;\n function coordinatePasskeyPersistence<\n Database extends D,\n S extends T,\n C extends T,\n F extends T,\n Flow extends T,\n N,\n A,\n E,\n R,\n TxId,\n TxShape,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyPersistenceMapping<PasskeyCredentialMapping<S, C, F, N>, Flow, N> & Extra,\n RSetup\n >;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n Exclude<R, PasskeyPersistence> | Crypto.Crypto | LifecycleHooks | DatabaseRequirements | RSetup\n > {\n return Effect.flatMap(nativeDatabase(acquire), (database) =>\n coordinateTargetPasskey(\n database,\n options.mapping,\n configuration,\n (transaction: TransactionOf<Database>, services: PasskeyPersistenceServices) => {\n const provided = Context.make(PasskeyPersistence, services.passkeyPersistence);\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 coordinatePasskeyRegistrationCeremony<\n Database extends D,\n Flow extends T,\n A,\n E,\n R,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyRegistrationCeremonyMapping<Flow> & Extra,\n RSetup\n >;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n | Exclude<R, PasskeyPersistence | Provided>\n | Crypto.Crypto\n | LifecycleHooks\n | DatabaseRequirements\n | RSetup\n >;\n function coordinatePasskeyRegistrationCeremony<\n Database extends D,\n Flow extends T,\n A,\n E,\n R,\n TxId,\n TxShape,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyRegistrationCeremonyMapping<Flow> & Extra,\n RSetup\n >;\n readonly transaction: SuppliedService<\n TxId,\n NoInfer<[Provided] extends [never] ? TransactionOf<Database> : never>,\n TxShape\n >;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n | Exclude<R, PasskeyPersistence | TxId | Provided>\n | Crypto.Crypto\n | LifecycleHooks\n | DatabaseRequirements\n | RSetup\n >;\n function coordinatePasskeyRegistrationCeremony<\n Database extends D,\n Flow extends T,\n A,\n E,\n R,\n TxId,\n TxShape,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyRegistrationCeremonyMapping<Flow> & Extra,\n RSetup\n >;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n Exclude<R, PasskeyPersistence> | Crypto.Crypto | LifecycleHooks | DatabaseRequirements | RSetup\n > {\n return Effect.flatMap(nativeDatabase(acquire), (database) =>\n coordinateTargetPasskeyRegistration(\n database,\n options.mapping,\n configuration,\n (transaction: TransactionOf<Database>, services: PasskeyRegistrationCeremonyServices) => {\n const provided = Context.make(PasskeyPersistence, services.passkeyPersistence);\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 ...makePasskeyWriteTarget<DatabaseId, D, T, Extra, Provided>(databaseService, configuration),\n makePasskeyCredentialServices: <S extends T, C extends T, F extends T, N, RSetup = never>(\n mapping: PasskeyMappingSource<PasskeyCredentialMapping<S, C, F, N> & Extra, RSetup>,\n ) =>\n makeTargetPasskeyCredentials(mapping, configuration).pipe(\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),\n ),\n makePasskeyPersistenceServices: <\n S extends T,\n C extends T,\n F extends T,\n Flow extends T,\n N,\n RSetup = never,\n >(\n mapping: PasskeyMappingSource<\n PasskeyPersistenceMapping<PasskeyCredentialMapping<S, C, F, N>, Flow, N> & Extra,\n RSetup\n >,\n ) =>\n makeTargetPasskeyPersistence(mapping, configuration).pipe(\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),\n ),\n makePasskeyRegistrationCeremonyServices: <Flow extends T, RSetup = never>(\n mapping: PasskeyMappingSource<PasskeyRegistrationCeremonyMapping<Flow> & Extra, RSetup>,\n ) =>\n makeTargetPasskeyRegistration(mapping, configuration).pipe(\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),\n ),\n coordinatePasskeyPersistence,\n coordinatePasskeyRegistrationCeremony,\n };\n};\n"],"mappings":";;;;;;AAkCA,MAAa,qBAOX,iBACA,kBACG;CAuEH,SAAS,6BAgBP,SACA,SAOA,MAKA;EACA,OAAO,OAAO,QAAQ,eAAe,OAAO,IAAI,aAC9C,wBACE,UACA,QAAQ,SACR,gBACC,aAAsC,aAAyC;GAC9E,MAAM,WAAW,QAAQ,KAAK,oBAAoB,SAAS,kBAAkB;GAC7E,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+DA,SAAS,sCAYP,SACA,SAOA,MAKA;EACA,OAAO,OAAO,QAAQ,eAAe,OAAO,IAAI,aAC9C,oCACE,UACA,QAAQ,SACR,gBACC,aAAsC,aAAkD;GACvF,MAAM,WAAW,QAAQ,KAAK,oBAAoB,SAAS,kBAAkB;GAC7E,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,GAAG,uBAA0D,iBAAiB,aAAa;EAC3F,gCACE,YAEA,6BAA6B,SAAS,aAAa,CAAC,CAAC,KACnD,OAAO,qBAAqB,gBAAgB,eAAe,eAAe,CAAC,CAC7E;EACF,iCAQE,YAKA,6BAA6B,SAAS,aAAa,CAAC,CAAC,KACnD,OAAO,qBAAqB,gBAAgB,eAAe,eAAe,CAAC,CAC7E;EACF,0CACE,YAEA,8BAA8B,SAAS,aAAa,CAAC,CAAC,KACpD,OAAO,qBAAqB,gBAAgB,eAAe,eAAe,CAAC,CAC7E;EACF;EACA;CACF;AACF"}
|
|
@@ -1,43 +1,22 @@
|
|
|
1
1
|
import { DrizzleTableModel } from "./table-model.mjs";
|
|
2
2
|
import * as Shared from "@yielded/auth-persistence/Adapter";
|
|
3
|
-
import { D1PasskeyMapping,
|
|
3
|
+
import { D1PasskeyMapping, PasskeyCredentialServices, PasskeyFlowInsert, PasskeyMappingSource, PasskeyPersistenceServices, PasskeySubjectIdCodec, passkeyCredentialsLayer, passkeyPersistenceLayer, requiredPasskeyCredentialConstraints, requiredPasskeyPersistenceConstraints } from "@yielded/auth-persistence/Adapter";
|
|
4
4
|
import { SQL, Table } from "drizzle-orm";
|
|
5
5
|
//#region src/drizzle/passkey-model.d.ts
|
|
6
6
|
export type PasskeyColumn<T extends Table> = Shared.PasskeyColumn<DrizzleTableModel<T>>;
|
|
7
7
|
export type PasskeyClock = Shared.PasskeyClock<SQL>;
|
|
8
8
|
export type PasskeySubjectReadTable<T extends Table, N> = Shared.PasskeySubjectReadTable<DrizzleTableModel<T>, N, SQL>;
|
|
9
9
|
export type PasskeyFactorReadTable<T extends Table> = Shared.PasskeyFactorReadTable<DrizzleTableModel<T>, SQL>;
|
|
10
|
-
/** decode uses only these declared columns. Counter columns are native integral
|
|
11
|
-
* numbers; BS may use a consumer enum. Name/creation metadata is not required. */
|
|
12
10
|
export type PasskeyCredentialReadTable<T extends Table, N> = Shared.PasskeyCredentialReadTable<DrizzleTableModel<T>, N, SQL>;
|
|
13
|
-
export type
|
|
14
|
-
/** Reservations do not manufacture a subject; bound handles are RP-global. */
|
|
15
|
-
export type PasskeyHandleReadTable<T extends Table> = Shared.PasskeyHandleReadTable<DrizzleTableModel<T>>;
|
|
16
|
-
export type PasskeyHandleReservationTable<T extends Table> = Shared.PasskeyHandleReservationTable<DrizzleTableModel<T>, SQL>;
|
|
17
|
-
export type PasskeyHandleOwnershipTable<T extends Table, N> = Shared.PasskeyHandleOwnershipTable<DrizzleTableModel<T>, N, SQL>;
|
|
18
|
-
export type PasskeyCredentialMapping<S extends Table, C extends Table, F extends Table, Ownership extends Table, Handle extends Table, N> = Shared.PasskeyCredentialMapping<DrizzleTableModel<S>, DrizzleTableModel<C>, DrizzleTableModel<F>, DrizzleTableModel<Ownership>, DrizzleTableModel<Handle>, N, SQL>;
|
|
19
|
-
export type PasskeyPolicyGuard = Shared.PasskeyPolicyGuard<SQL>;
|
|
20
|
-
export declare const passkeyPolicyGuard: <T extends Table>(input: {
|
|
21
|
-
readonly scope: string;
|
|
22
|
-
readonly table: T;
|
|
23
|
-
readonly columns: ReadonlyArray<PasskeyColumn<T>>;
|
|
24
|
-
readonly where: (moduleId: string) => SQL;
|
|
25
|
-
readonly condition: (moduleId: string) => SQL;
|
|
26
|
-
}) => PasskeyPolicyGuard;
|
|
27
|
-
export type PasskeyModuleTable<T extends Table> = Shared.PasskeyModuleTable<DrizzleTableModel<T>, SQL>;
|
|
11
|
+
export type PasskeyCredentialMapping<S extends Table, C extends Table, F extends Table, N> = Shared.PasskeyCredentialMapping<DrizzleTableModel<S>, DrizzleTableModel<C>, DrizzleTableModel<F>, N, SQL>;
|
|
28
12
|
export type PasskeyFlowTable<T extends Table> = Shared.PasskeyFlowTable<DrizzleTableModel<T>>;
|
|
29
|
-
export type
|
|
30
|
-
/** Charge scope is canonical core identity text; this subject-free descriptor
|
|
31
|
-
* can count all purposes without decoding any unrelated native subject. */
|
|
32
|
-
export type PasskeyChargeTable<T extends Table> = Shared.PasskeyChargeTable<DrizzleTableModel<T>>;
|
|
33
|
-
export type PasskeyCeremonyMapping<Module extends Table, Flow extends Table, Admission extends Table, Charge extends Table> = Shared.PasskeyCeremonyMapping<DrizzleTableModel<Module>, DrizzleTableModel<Flow>, DrizzleTableModel<Admission>, DrizzleTableModel<Charge>, SQL>;
|
|
13
|
+
export type PasskeyCeremonyMapping<Flow extends Table> = Shared.PasskeyCeremonyMapping<DrizzleTableModel<Flow>, SQL>;
|
|
34
14
|
type CredentialTable<Read> = Read extends {
|
|
35
15
|
readonly credential: {
|
|
36
16
|
readonly table: infer T extends Table;
|
|
37
17
|
};
|
|
38
18
|
} ? T : never;
|
|
39
|
-
export type PasskeyPersistenceMapping<Read,
|
|
40
|
-
export type PasskeyEnrollmentContextMapping<Read, Module extends Table, N> = Shared.PasskeyEnrollmentContextMapping<Read, DrizzleTableModel<Module>, N, SQL>;
|
|
19
|
+
export type PasskeyPersistenceMapping<Read, Flow extends Table, N> = Shared.PasskeyPersistenceMapping<Read, DrizzleTableModel<Flow>, N, SQL, DrizzleTableModel<CredentialTable<Read>>>;
|
|
41
20
|
//#endregion
|
|
42
|
-
export { type D1PasskeyMapping, type
|
|
21
|
+
export { type D1PasskeyMapping, type PasskeyCredentialServices, type PasskeyFlowInsert, type PasskeyMappingSource, type PasskeyPersistenceServices, type PasskeySubjectIdCodec, passkeyCredentialsLayer, passkeyPersistenceLayer, requiredPasskeyCredentialConstraints, requiredPasskeyPersistenceConstraints };
|
|
43
22
|
//# sourceMappingURL=passkey-model.d.mts.map
|
|
@@ -1,8 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
//#region src/drizzle/passkey-model.ts
|
|
4
|
-
const passkeyPolicyGuard = (input) => Shared.passkeyPolicyGuard(input);
|
|
5
|
-
//#endregion
|
|
6
|
-
export { passkeyCredentialsLayer, passkeyEnrollmentContextLayer, passkeyPersistenceLayer, passkeyPolicyGuard, requiredPasskeyCredentialConstraints, requiredPasskeyPersistenceConstraints };
|
|
7
|
-
|
|
8
|
-
//# sourceMappingURL=passkey-model.mjs.map
|
|
1
|
+
import { passkeyCredentialsLayer, passkeyPersistenceLayer, requiredPasskeyCredentialConstraints, requiredPasskeyPersistenceConstraints } from "@yielded/auth-persistence/Adapter";
|
|
2
|
+
export { passkeyCredentialsLayer, passkeyPersistenceLayer, requiredPasskeyCredentialConstraints, requiredPasskeyPersistenceConstraints };
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import { DrizzleTableModel } from "./table-model.mjs";
|
|
2
2
|
import * as Shared from "@yielded/auth-persistence/Adapter";
|
|
3
|
-
import { PasskeyRegistrationCeremonyCapabilities, PasskeyRegistrationCeremonyServices
|
|
3
|
+
import { PasskeyRegistrationCeremonyCapabilities, PasskeyRegistrationCeremonyServices } from "@yielded/auth-persistence/Adapter";
|
|
4
4
|
import { SQL, Table } from "drizzle-orm";
|
|
5
5
|
//#region src/drizzle/passkey-registration-ceremony-model.d.ts
|
|
6
|
-
|
|
7
|
-
* No application payload codec, subject codec or provisioning callback runs here. */
|
|
8
|
-
export type PasskeyRegistrationIntentReadTable<T extends Table> = Shared.PasskeyRegistrationIntentReadTable<DrizzleTableModel<T>, SQL>;
|
|
9
|
-
export type PasskeyRegistrationCeremonyMapping<Module extends Table, Flow extends Table, Admission extends Table, Charge extends Table, Intent extends Table, Handle extends Table> = Shared.PasskeyRegistrationCeremonyMapping<DrizzleTableModel<Module>, DrizzleTableModel<Flow>, DrizzleTableModel<Admission>, DrizzleTableModel<Charge>, DrizzleTableModel<Intent>, DrizzleTableModel<Handle>, SQL>;
|
|
6
|
+
export type PasskeyRegistrationCeremonyMapping<Flow extends Table> = Shared.PasskeyRegistrationCeremonyMapping<DrizzleTableModel<Flow>, SQL>;
|
|
10
7
|
//#endregion
|
|
11
|
-
export {
|
|
8
|
+
export type { PasskeyRegistrationCeremonyCapabilities, PasskeyRegistrationCeremonyServices };
|
|
12
9
|
//# sourceMappingURL=passkey-registration-ceremony-model.d.mts.map
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { NativeDatabase } from "@yielded/auth-persistence/Adapter";
|
|
1
|
+
import { NativeDatabase, nativeDatabase } from "./native-database.mjs";
|
|
2
|
+
import { coordinateTargetPasskeyManagement, coordinateTargetPasskeyRegistrationWriter, makeTargetPasskeyManagement, makeTargetPasskeyRegistrationWriter } from "./passkey/write-target.mjs";
|
|
4
3
|
import { Context, Effect } from "effect";
|
|
5
4
|
import { PasskeyManagementPersistence, PasskeyPersistence } from "@yielded/auth/Passkey";
|
|
6
5
|
//#region src/drizzle/passkey-write-drivers.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"passkey-write-drivers.mjs","names":[],"sources":["../../src/drizzle/passkey-write-drivers.ts"],"sourcesContent":["import { NativeDatabase } from \"@yielded/auth-persistence/Adapter\";\nimport type { LifecycleHooks } from \"@yielded/auth/Hooks\";\nimport { PasskeyManagementPersistence, PasskeyPersistence } from \"@yielded/auth/Passkey\";\nimport type { Table } from \"drizzle-orm\";\nimport { type Crypto, Context, Effect } from \"effect\";\n\nimport { nativeDatabase } from \"./native-database\";\nimport type { PasskeyMappingSource } from \"./passkey-model\";\nimport type { PasskeyCoordinatorError, PasskeyTargetConfiguration } from \"./passkey-target\";\nimport type {\n PasskeyManagementMapping,\n PasskeyRegistrationMapping,\n PasskeyRegistrationWriter,\n} from \"./passkey-write-model\";\nimport {\n coordinateTargetPasskeyManagement,\n coordinateTargetPasskeyRegistrationWriter,\n makeTargetPasskeyManagement,\n makeTargetPasskeyRegistrationWriter,\n} from \"./passkey-write-target\";\nimport type { SuppliedService } from \"./SuppliedService\";\n// oxlint-disable-next-line no-explicit-any -- inspect the installed concrete transaction callback.\ntype TransactionOf<D> = D extends { readonly transaction: (...args: any[]) => any }\n ? Parameters<Parameters<D[\"transaction\"]>[0]>[0]\n : never;\n\nexport const makePasskeyWriteTarget = <\n DatabaseId,\n D,\n T extends Table,\n Extra = unknown,\n Synchronous extends boolean = false,\n>(\n databaseService: Context.Service<DatabaseId, D>,\n configuration: PasskeyTargetConfiguration,\n) => {\n function coordinatePasskeyManagement<\n Database extends D,\n S extends T,\n C extends T,\n F extends T,\n O extends T,\n H extends T,\n M extends T,\n Flow extends T,\n Admission extends T,\n Charge extends T,\n Command extends T,\n N,\n A,\n E,\n R,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyManagementMapping<S, C, F, O, H, M, Flow, Admission, Charge, Command, N> & Extra,\n RSetup\n >;\n readonly transaction?: never;\n },\n body: Effect.Effect<\n A,\n E,\n Synchronous extends true ? NoInfer<PasskeyPersistence | PasskeyManagementPersistence> : R\n >,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true\n ? never\n : Exclude<R, PasskeyPersistence | PasskeyManagementPersistence>)\n | Crypto.Crypto\n | LifecycleHooks\n | RSetup\n | DatabaseRequirements\n >;\n function coordinatePasskeyManagement<\n Database extends D,\n S extends T,\n C extends T,\n F extends T,\n O extends T,\n H extends T,\n M extends T,\n Flow extends T,\n Admission extends T,\n Charge extends T,\n Command extends T,\n N,\n A,\n E,\n R,\n TxId,\n TxShape,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyManagementMapping<S, C, F, O, H, M, Flow, Admission, Charge, Command, N> & Extra,\n RSetup\n >;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<\n A,\n E,\n Synchronous extends true\n ? NoInfer<PasskeyPersistence | PasskeyManagementPersistence | TxId>\n : R\n >,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true\n ? never\n : Exclude<R, PasskeyPersistence | PasskeyManagementPersistence | TxId>)\n | Crypto.Crypto\n | LifecycleHooks\n | RSetup\n | DatabaseRequirements\n >;\n function coordinatePasskeyManagement<\n Database extends D,\n S extends T,\n C extends T,\n F extends T,\n O extends T,\n H extends T,\n M extends T,\n Flow extends T,\n Admission extends T,\n Charge extends T,\n Command extends T,\n N,\n A,\n E,\n R,\n TxId,\n TxShape,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyManagementMapping<S, C, F, O, H, M, Flow, Admission, Charge, Command, N> & Extra,\n RSetup\n >;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n | Exclude<R, PasskeyPersistence | PasskeyManagementPersistence>\n | Crypto.Crypto\n | LifecycleHooks\n | RSetup\n | DatabaseRequirements\n > {\n return Effect.flatMap(nativeDatabase(acquire), (database) =>\n coordinateTargetPasskeyManagement(\n database,\n options.mapping,\n configuration,\n (\n transaction: TransactionOf<Database>,\n services,\n ): Effect.Effect<A, E, Exclude<R, PasskeyPersistence | PasskeyManagementPersistence>> => {\n const context = Context.make(PasskeyPersistence, services.passkeyPersistence).pipe(\n Context.add(PasskeyManagementPersistence, services.passkeyManagementPersistence),\n );\n\n const work = Effect.provideContext(body, context);\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 const makePasskeyManagementServices = <\n S extends T,\n C extends T,\n F extends T,\n O extends T,\n H extends T,\n M extends T,\n Flow extends T,\n Admission extends T,\n Charge extends T,\n Command extends T,\n N,\n RSetup = never,\n >(\n mapping: PasskeyMappingSource<\n PasskeyManagementMapping<S, C, F, O, H, M, Flow, Admission, Charge, Command, N> & Extra,\n RSetup\n >,\n ) =>\n makeTargetPasskeyManagement(mapping, configuration).pipe(\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),\n );\n\n function coordinatePasskeyRegistration<\n Database extends D,\n S extends T,\n C extends T,\n F extends T,\n O extends T,\n H extends T,\n M extends T,\n Flow extends T,\n Admission extends T,\n Charge extends T,\n Intent extends T,\n N,\n Value,\n A,\n E,\n R,\n AuthorityId,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyRegistrationMapping<S, C, F, O, H, M, Flow, Admission, Charge, Intent, N, Value> &\n Extra,\n RSetup\n >;\n readonly authority: Context.Key<AuthorityId, PasskeyRegistrationWriter<Value>>;\n readonly transaction?: never;\n },\n body: Effect.Effect<\n A,\n E,\n Synchronous extends true ? NoInfer<PasskeyPersistence | AuthorityId> : R\n >,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, PasskeyPersistence | AuthorityId>)\n | Crypto.Crypto\n | LifecycleHooks\n | RSetup\n | DatabaseRequirements\n >;\n function coordinatePasskeyRegistration<\n Database extends D,\n S extends T,\n C extends T,\n F extends T,\n O extends T,\n H extends T,\n M extends T,\n Flow extends T,\n Admission extends T,\n Charge extends T,\n Intent extends T,\n N,\n Value,\n A,\n E,\n R,\n AuthorityId,\n TxId,\n TxShape,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyRegistrationMapping<S, C, F, O, H, M, Flow, Admission, Charge, Intent, N, Value> &\n Extra,\n RSetup\n >;\n readonly authority: Context.Key<AuthorityId, PasskeyRegistrationWriter<Value>>;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<\n A,\n E,\n Synchronous extends true ? NoInfer<PasskeyPersistence | AuthorityId | TxId> : R\n >,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, PasskeyPersistence | AuthorityId | TxId>)\n | Crypto.Crypto\n | LifecycleHooks\n | RSetup\n | DatabaseRequirements\n >;\n function coordinatePasskeyRegistration<\n Database extends D,\n S extends T,\n C extends T,\n F extends T,\n O extends T,\n H extends T,\n M extends T,\n Flow extends T,\n Admission extends T,\n Charge extends T,\n Intent extends T,\n N,\n Value,\n A,\n E,\n R,\n AuthorityId,\n TxId,\n TxShape,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyRegistrationMapping<S, C, F, O, H, M, Flow, Admission, Charge, Intent, N, Value> &\n Extra,\n RSetup\n >;\n readonly authority: Context.Key<AuthorityId, PasskeyRegistrationWriter<Value>>;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n | Exclude<R, PasskeyPersistence | AuthorityId>\n | Crypto.Crypto\n | LifecycleHooks\n | RSetup\n | DatabaseRequirements\n > {\n return Effect.flatMap(nativeDatabase(acquire), (database) =>\n coordinateTargetPasskeyRegistrationWriter(\n database,\n options.mapping,\n configuration,\n (\n transaction: TransactionOf<Database>,\n services: import(\"./passkey-write-model\").PasskeyRegistrationServices<Value>,\n ) => {\n const context = Context.make(PasskeyPersistence, services.passkeyPersistence).pipe(\n Context.add(options.authority, services.passkeyRegistrationAuthority),\n );\n\n const work = Effect.provideContext(body, context);\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 const makePasskeyRegistrationServices = <\n S extends T,\n C extends T,\n F extends T,\n O extends T,\n H extends T,\n M extends T,\n Flow extends T,\n Admission extends T,\n Charge extends T,\n Intent extends T,\n N,\n Value,\n RSetup = never,\n >(\n mapping: PasskeyMappingSource<\n PasskeyRegistrationMapping<S, C, F, O, H, M, Flow, Admission, Charge, Intent, N, Value> &\n Extra,\n RSetup\n >,\n ) =>\n makeTargetPasskeyRegistrationWriter<\n PasskeyRegistrationMapping<S, C, F, O, H, M, Flow, Admission, Charge, Intent, N, Value> &\n Extra,\n Value,\n RSetup\n >(mapping, configuration).pipe(\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),\n );\n\n return {\n makePasskeyManagementServices,\n makePasskeyRegistrationServices,\n coordinatePasskeyManagement,\n coordinatePasskeyRegistration,\n };\n};\n"],"mappings":";;;;;;AA0BA,MAAa,0BAOX,iBACA,kBACG;CA6FH,SAAS,4BAsBP,SACA,SAOA,MASA;EACA,OAAO,OAAO,QAAQ,eAAe,OAAO,IAAI,aAC9C,kCACE,UACA,QAAQ,SACR,gBAEE,aACA,aACuF;GACvF,MAAM,UAAU,QAAQ,KAAK,oBAAoB,SAAS,kBAAkB,CAAC,CAAC,KAC5E,QAAQ,IAAI,8BAA8B,SAAS,4BAA4B,CACjF;GAEA,MAAM,OAAO,OAAO,eAAe,MAAM,OAAO;GAEhD,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,MAAM,iCAcJ,YAKA,4BAA4B,SAAS,aAAa,CAAC,CAAC,KAClD,OAAO,qBAAqB,gBAAgB,eAAe,eAAe,CAAC,CAC7E;CAgGF,SAAS,8BAwBP,SACA,SASA,MASA;EACA,OAAO,OAAO,QAAQ,eAAe,OAAO,IAAI,aAC9C,0CACE,UACA,QAAQ,SACR,gBAEE,aACA,aACG;GACH,MAAM,UAAU,QAAQ,KAAK,oBAAoB,SAAS,kBAAkB,CAAC,CAAC,KAC5E,QAAQ,IAAI,QAAQ,WAAW,SAAS,4BAA4B,CACtE;GAEA,MAAM,OAAO,OAAO,eAAe,MAAM,OAAO;GAEhD,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,MAAM,mCAeJ,YAMA,oCAKE,SAAS,aAAa,CAAC,CAAC,KACxB,OAAO,qBAAqB,gBAAgB,eAAe,eAAe,CAAC,CAC7E;CAEF,OAAO;EACL;EACA;EACA;EACA;CACF;AACF"}
|
|
1
|
+
{"version":3,"file":"passkey-write-drivers.mjs","names":[],"sources":["../../src/drizzle/passkey-write-drivers.ts"],"sourcesContent":["import type { LifecycleHooks } from \"@yielded/auth/Hooks\";\nimport { PasskeyManagementPersistence, PasskeyPersistence } from \"@yielded/auth/Passkey\";\nimport type { Table } from \"drizzle-orm\";\nimport { type Crypto, Context, Effect } from \"effect\";\n\nimport type { D1BatchStatements } from \"./D1BatchStatements\";\nimport { NativeDatabase, nativeDatabase } from \"./native-database\";\nimport type { PasskeyMappingSource } from \"./passkey-model\";\nimport type {\n PasskeyManagementMapping,\n PasskeyRegistrationMapping,\n PasskeyRegistrationWriter,\n} from \"./passkey-write-model\";\nimport type { PasskeyCoordinatorError, PasskeyTargetConfiguration } from \"./passkey/target\";\nimport {\n coordinateTargetPasskeyManagement,\n coordinateTargetPasskeyRegistrationWriter,\n makeTargetPasskeyManagement,\n makeTargetPasskeyRegistrationWriter,\n} from \"./passkey/write-target\";\nimport type { SuppliedService } from \"./SuppliedService\";\n// oxlint-disable-next-line no-explicit-any -- inspect the installed concrete transaction callback.\ntype TransactionOf<D> = D extends { readonly transaction: (...args: any[]) => any }\n ? Parameters<Parameters<D[\"transaction\"]>[0]>[0]\n : never;\n\nexport const makePasskeyWriteTarget = <\n DatabaseId,\n D,\n T extends Table,\n Extra = unknown,\n Provided extends D1BatchStatements = never,\n>(\n databaseService: Context.Service<DatabaseId, D>,\n configuration: PasskeyTargetConfiguration,\n) => {\n function coordinatePasskeyManagement<\n Database extends D,\n S extends T,\n C extends T,\n F extends T,\n Flow extends T,\n N,\n A,\n E,\n R,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyManagementMapping<S, C, F, Flow, N> & Extra,\n RSetup\n >;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n | Exclude<R, PasskeyPersistence | PasskeyManagementPersistence | Provided>\n | Crypto.Crypto\n | LifecycleHooks\n | RSetup\n | DatabaseRequirements\n >;\n function coordinatePasskeyManagement<\n Database extends D,\n S extends T,\n C extends T,\n F extends T,\n Flow extends T,\n N,\n A,\n E,\n R,\n TxId,\n TxShape,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyManagementMapping<S, C, F, Flow, N> & Extra,\n RSetup\n >;\n readonly transaction: SuppliedService<\n TxId,\n NoInfer<[Provided] extends [never] ? TransactionOf<Database> : never>,\n TxShape\n >;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n | Exclude<R, PasskeyPersistence | PasskeyManagementPersistence | TxId | Provided>\n | Crypto.Crypto\n | LifecycleHooks\n | RSetup\n | DatabaseRequirements\n >;\n function coordinatePasskeyManagement<\n Database extends D,\n S extends T,\n C extends T,\n F extends T,\n Flow extends T,\n N,\n A,\n E,\n R,\n TxId,\n TxShape,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyManagementMapping<S, C, F, Flow, N> & Extra,\n RSetup\n >;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n | Exclude<R, PasskeyPersistence | PasskeyManagementPersistence>\n | Crypto.Crypto\n | LifecycleHooks\n | RSetup\n | DatabaseRequirements\n > {\n return Effect.flatMap(nativeDatabase(acquire), (database) =>\n coordinateTargetPasskeyManagement(\n database,\n options.mapping,\n configuration,\n (\n transaction: TransactionOf<Database>,\n services,\n ): Effect.Effect<A, E, Exclude<R, PasskeyPersistence | PasskeyManagementPersistence>> => {\n const context = Context.make(PasskeyPersistence, services.passkeyPersistence).pipe(\n Context.add(PasskeyManagementPersistence, services.passkeyManagementPersistence),\n );\n\n const work = Effect.provideContext(body, context);\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 const makePasskeyManagementServices = <\n S extends T,\n C extends T,\n F extends T,\n Flow extends T,\n N,\n RSetup = never,\n >(\n mapping: PasskeyMappingSource<PasskeyManagementMapping<S, C, F, Flow, N> & Extra, RSetup>,\n ) =>\n makeTargetPasskeyManagement(mapping, configuration).pipe(\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),\n );\n\n function coordinatePasskeyRegistration<\n Database extends D,\n S extends T,\n C extends T,\n F extends T,\n Flow extends T,\n N,\n Value,\n A,\n E,\n R,\n AuthorityId,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyRegistrationMapping<S, C, F, Flow, N, Value> & Extra,\n RSetup\n >;\n readonly authority: Context.Key<AuthorityId, PasskeyRegistrationWriter<Value>>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n | Exclude<R, PasskeyPersistence | AuthorityId | Provided>\n | Crypto.Crypto\n | LifecycleHooks\n | RSetup\n | DatabaseRequirements\n >;\n function coordinatePasskeyRegistration<\n Database extends D,\n S extends T,\n C extends T,\n F extends T,\n Flow extends T,\n N,\n Value,\n A,\n E,\n R,\n AuthorityId,\n TxId,\n TxShape,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyRegistrationMapping<S, C, F, Flow, N, Value> & Extra,\n RSetup\n >;\n readonly authority: Context.Key<AuthorityId, PasskeyRegistrationWriter<Value>>;\n readonly transaction: SuppliedService<\n TxId,\n NoInfer<[Provided] extends [never] ? TransactionOf<Database> : never>,\n TxShape\n >;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n | Exclude<R, PasskeyPersistence | AuthorityId | TxId | Provided>\n | Crypto.Crypto\n | LifecycleHooks\n | RSetup\n | DatabaseRequirements\n >;\n function coordinatePasskeyRegistration<\n Database extends D,\n S extends T,\n C extends T,\n F extends T,\n Flow extends T,\n N,\n Value,\n A,\n E,\n R,\n AuthorityId,\n TxId,\n TxShape,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyRegistrationMapping<S, C, F, Flow, N, Value> & Extra,\n RSetup\n >;\n readonly authority: Context.Key<AuthorityId, PasskeyRegistrationWriter<Value>>;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n | Exclude<R, PasskeyPersistence | AuthorityId>\n | Crypto.Crypto\n | LifecycleHooks\n | RSetup\n | DatabaseRequirements\n > {\n return Effect.flatMap(nativeDatabase(acquire), (database) =>\n coordinateTargetPasskeyRegistrationWriter(\n database,\n options.mapping,\n configuration,\n (\n transaction: TransactionOf<Database>,\n services: import(\"./passkey-write-model\").PasskeyRegistrationServices<Value>,\n ) => {\n const context = Context.make(PasskeyPersistence, services.passkeyPersistence).pipe(\n Context.add(options.authority, services.passkeyRegistrationAuthority),\n );\n\n const work = Effect.provideContext(body, context);\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 const makePasskeyRegistrationServices = <\n S extends T,\n C extends T,\n F extends T,\n Flow extends T,\n N,\n Value,\n RSetup = never,\n >(\n mapping: PasskeyMappingSource<\n PasskeyRegistrationMapping<S, C, F, Flow, N, Value> & Extra,\n RSetup\n >,\n ) =>\n makeTargetPasskeyRegistrationWriter<\n PasskeyRegistrationMapping<S, C, F, Flow, N, Value> & Extra,\n Value,\n RSetup\n >(mapping, configuration).pipe(\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),\n );\n\n return {\n makePasskeyManagementServices,\n makePasskeyRegistrationServices,\n coordinatePasskeyManagement,\n coordinatePasskeyRegistration,\n };\n};\n"],"mappings":";;;;;AA0BA,MAAa,0BAOX,iBACA,kBACG;CAuEH,SAAS,4BAgBP,SACA,SAOA,MASA;EACA,OAAO,OAAO,QAAQ,eAAe,OAAO,IAAI,aAC9C,kCACE,UACA,QAAQ,SACR,gBAEE,aACA,aACuF;GACvF,MAAM,UAAU,QAAQ,KAAK,oBAAoB,SAAS,kBAAkB,CAAC,CAAC,KAC5E,QAAQ,IAAI,8BAA8B,SAAS,4BAA4B,CACjF;GAEA,MAAM,OAAO,OAAO,eAAe,MAAM,OAAO;GAEhD,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,MAAM,iCAQJ,YAEA,4BAA4B,SAAS,aAAa,CAAC,CAAC,KAClD,OAAO,qBAAqB,gBAAgB,eAAe,eAAe,CAAC,CAC7E;CA8EF,SAAS,8BAkBP,SACA,SAQA,MASA;EACA,OAAO,OAAO,QAAQ,eAAe,OAAO,IAAI,aAC9C,0CACE,UACA,QAAQ,SACR,gBAEE,aACA,aACG;GACH,MAAM,UAAU,QAAQ,KAAK,oBAAoB,SAAS,kBAAkB,CAAC,CAAC,KAC5E,QAAQ,IAAI,QAAQ,WAAW,SAAS,4BAA4B,CACtE;GAEA,MAAM,OAAO,OAAO,eAAe,MAAM,OAAO;GAEhD,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,MAAM,mCASJ,YAKA,oCAIE,SAAS,aAAa,CAAC,CAAC,KACxB,OAAO,qBAAqB,gBAAgB,eAAe,eAAe,CAAC,CAC7E;CAEF,OAAO;EACL;EACA;EACA;EACA;CACF;AACF"}
|
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
import { DrizzleTableModel } from "./table-model.mjs";
|
|
2
2
|
import * as Shared from "@yielded/auth-persistence/Adapter";
|
|
3
|
-
import { PasskeyCredentialInsert, PasskeyInvalidationInput, PasskeyManagementServices, PasskeyRegistrationServices, PasskeyRegistrationWriter
|
|
4
|
-
import {
|
|
3
|
+
import { PasskeyCredentialInsert, PasskeyInvalidationInput, PasskeyManagementServices, PasskeyRegistrationServices, PasskeyRegistrationWriter } from "@yielded/auth-persistence/Adapter";
|
|
4
|
+
import { SQL, Table } from "drizzle-orm";
|
|
5
5
|
//#region src/drizzle/passkey-write-model.d.ts
|
|
6
|
-
export type PasskeyWriteTables<S extends Table, C extends Table, F extends Table,
|
|
6
|
+
export type PasskeyWriteTables<S extends Table, C extends Table, F extends Table, N> = Shared.PasskeyWriteTables<DrizzleTableModel<S>, DrizzleTableModel<C>, DrizzleTableModel<F>, N, SQL>;
|
|
7
7
|
export type PasskeyInvalidationMutation<N> = Shared.PasskeyInvalidationMutation<N, SQL>;
|
|
8
|
-
/** Same-owner updates for consumer session/pending tables. No external effects or callbacks after commit. */
|
|
9
8
|
export declare const passkeyInvalidationMutation: <T extends Table, N>(input: {
|
|
10
9
|
readonly table: T;
|
|
11
10
|
readonly where: (input: Shared.PasskeyInvalidationInput<N>) => SQL;
|
|
12
|
-
readonly values: (input: Shared.PasskeyInvalidationInput<N>) => Partial<
|
|
11
|
+
readonly values: (input: Shared.PasskeyInvalidationInput<N>) => Partial<DrizzleTableModel<T>["insert"]>;
|
|
13
12
|
readonly postcondition: (input: Shared.PasskeyInvalidationInput<N>) => SQL;
|
|
14
13
|
}) => PasskeyInvalidationMutation<N>;
|
|
15
|
-
export type
|
|
16
|
-
export type
|
|
17
|
-
export type PasskeyRegistrationMapping<S extends Table, C extends Table, F extends Table, O extends Table, H extends Table, M extends Table, Flow extends Table, A extends Table, Charge extends Table, Intent extends Table, N, R> = Shared.PasskeyRegistrationMapping<DrizzleTableModel<S>, DrizzleTableModel<C>, DrizzleTableModel<F>, DrizzleTableModel<O>, DrizzleTableModel<H>, DrizzleTableModel<M>, DrizzleTableModel<Flow>, DrizzleTableModel<A>, DrizzleTableModel<Charge>, DrizzleTableModel<Intent>, N, R, SQL>;
|
|
14
|
+
export type PasskeyManagementMapping<S extends Table, C extends Table, F extends Table, Flow extends Table, N> = Shared.PasskeyManagementMapping<DrizzleTableModel<S>, DrizzleTableModel<C>, DrizzleTableModel<F>, DrizzleTableModel<Flow>, N, SQL>;
|
|
15
|
+
export type PasskeyRegistrationMapping<S extends Table, C extends Table, F extends Table, Flow extends Table, N, R> = Shared.PasskeyRegistrationMapping<DrizzleTableModel<S>, DrizzleTableModel<C>, DrizzleTableModel<F>, DrizzleTableModel<Flow>, N, R, SQL>;
|
|
18
16
|
//#endregion
|
|
19
|
-
export {
|
|
17
|
+
export type { PasskeyCredentialInsert, PasskeyInvalidationInput, PasskeyManagementServices, PasskeyRegistrationServices, PasskeyRegistrationWriter };
|
|
20
18
|
//# sourceMappingURL=passkey-write-model.d.mts.map
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import * as Shared from "@yielded/auth-persistence/Adapter";
|
|
2
|
-
import { requiredPasskeyManagementConstraints, requiredPasskeyRegistrationWriteConstraints } from "@yielded/auth-persistence/Adapter";
|
|
3
2
|
//#region src/drizzle/passkey-write-model.ts
|
|
4
|
-
/** Same-owner updates for consumer session/pending tables. No external effects or callbacks after commit. */
|
|
5
3
|
const passkeyInvalidationMutation = (input) => Shared.passkeyInvalidationMutation(input);
|
|
6
4
|
//#endregion
|
|
7
|
-
export { passkeyInvalidationMutation
|
|
5
|
+
export { passkeyInvalidationMutation };
|
|
8
6
|
|
|
9
7
|
//# sourceMappingURL=passkey-write-model.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"passkey-write-model.mjs","names":[],"sources":["../../src/drizzle/passkey-write-model.ts"],"sourcesContent":["import * as Shared from \"@yielded/auth-persistence/Adapter\";\nimport type {
|
|
1
|
+
{"version":3,"file":"passkey-write-model.mjs","names":[],"sources":["../../src/drizzle/passkey-write-model.ts"],"sourcesContent":["import * as Shared from \"@yielded/auth-persistence/Adapter\";\nimport type { SQL, Table } from \"drizzle-orm\";\n\nimport type { DrizzleTableModel } from \"./table-model\";\n\nexport type {\n PasskeyCredentialInsert,\n PasskeyInvalidationInput,\n PasskeyManagementServices,\n PasskeyRegistrationWriter,\n PasskeyRegistrationServices,\n} from \"@yielded/auth-persistence/Adapter\";\n\nexport type PasskeyWriteTables<\n S extends Table,\n C extends Table,\n F extends Table,\n N,\n> = Shared.PasskeyWriteTables<\n DrizzleTableModel<S>,\n DrizzleTableModel<C>,\n DrizzleTableModel<F>,\n N,\n SQL\n>;\n\nexport type PasskeyInvalidationMutation<N> = Shared.PasskeyInvalidationMutation<N, SQL>;\n\nexport const passkeyInvalidationMutation = <T extends Table, N>(input: {\n readonly table: T;\n readonly where: (input: Shared.PasskeyInvalidationInput<N>) => SQL;\n readonly values: (\n input: Shared.PasskeyInvalidationInput<N>,\n ) => Partial<DrizzleTableModel<T>[\"insert\"]>;\n readonly postcondition: (input: Shared.PasskeyInvalidationInput<N>) => SQL;\n}): PasskeyInvalidationMutation<N> =>\n Shared.passkeyInvalidationMutation<DrizzleTableModel<T>, N, SQL>(input);\n\nexport type PasskeyManagementMapping<\n S extends Table,\n C extends Table,\n F extends Table,\n Flow extends Table,\n N,\n> = Shared.PasskeyManagementMapping<\n DrizzleTableModel<S>,\n DrizzleTableModel<C>,\n DrizzleTableModel<F>,\n DrizzleTableModel<Flow>,\n N,\n SQL\n>;\n\nexport type PasskeyRegistrationMapping<\n S extends Table,\n C extends Table,\n F extends Table,\n Flow extends Table,\n N,\n R,\n> = Shared.PasskeyRegistrationMapping<\n DrizzleTableModel<S>,\n DrizzleTableModel<C>,\n DrizzleTableModel<F>,\n DrizzleTableModel<Flow>,\n N,\n R,\n SQL\n>;\n"],"mappings":";;AA4BA,MAAa,+BAAmD,UAQ9D,OAAO,4BAA0D,KAAK"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { NativeDatabase, nativeDatabase } from "./native-database.mjs";
|
|
2
|
+
import { coordinateTargetPasswordPersistence, coordinateTargetPasswordRegistration, makeTargetPasswordPersistenceServices, makeTargetPasswordRegistrationServices } from "./password-target.mjs";
|
|
3
|
+
import { Effect } from "effect";
|
|
4
|
+
import { PasswordPersistence } from "@yielded/auth/Password";
|
|
5
|
+
//#region src/drizzle/password-drivers.ts
|
|
6
|
+
/** Foreign table callback variance is erased only after these public signatures;
|
|
7
|
+
* the target validates physical metadata and the workflow invokes row codecs. */
|
|
8
|
+
const makePasswordTarget = (databaseService, configuration) => {
|
|
9
|
+
function coordinatePasswordPersistence(acquire, options, body) {
|
|
10
|
+
return Effect.flatMap(nativeDatabase(acquire), (database) => coordinateTargetPasswordPersistence(database, options.mapping, configuration, (transaction, services) => {
|
|
11
|
+
const work = Effect.provideService(body, PasswordPersistence, services.passwordPersistence);
|
|
12
|
+
return options.transaction === void 0 ? work : Effect.provideService(work, options.transaction, options.transaction.of(transaction));
|
|
13
|
+
}, options.proofMapping));
|
|
14
|
+
}
|
|
15
|
+
function coordinatePasswordRegistration(acquire, options, body) {
|
|
16
|
+
return Effect.flatMap(nativeDatabase(acquire), (database) => coordinateTargetPasswordRegistration(database, options.mapping, configuration, (transaction, services) => {
|
|
17
|
+
const work = Effect.provideService(body, options.target, services.registrationAuthority);
|
|
18
|
+
return options.transaction === void 0 ? work : Effect.provideService(work, options.transaction, options.transaction.of(transaction));
|
|
19
|
+
}));
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
makePasswordPersistenceServices: (mapping, proofMapping) => makeTargetPasswordPersistenceServices(mapping, configuration, proofMapping).pipe(Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService))),
|
|
23
|
+
makePasswordRegistrationServices: (mapping) => makeTargetPasswordRegistrationServices(mapping, configuration).pipe(Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService))),
|
|
24
|
+
coordinatePasswordPersistence,
|
|
25
|
+
coordinatePasswordRegistration
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
//#endregion
|
|
29
|
+
export { makePasswordTarget };
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=password-drivers.mjs.map
|