@yielded/auth-persistence-drizzle 0.1.0-beta.25 → 0.1.0-beta.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (383) hide show
  1. package/README.md +4 -2
  2. package/dist/D1.d.mts +495 -1151
  3. package/dist/D1.mjs +41 -19
  4. package/dist/D1.mjs.map +1 -1
  5. package/dist/Libsql.d.mts +385 -1996
  6. package/dist/Libsql.mjs +43 -47
  7. package/dist/Libsql.mjs.map +1 -1
  8. package/dist/Mysql2.d.mts +397 -1743
  9. package/dist/Mysql2.mjs +35 -41
  10. package/dist/Mysql2.mjs.map +1 -1
  11. package/dist/Pglite.d.mts +397 -1743
  12. package/dist/Pglite.mjs +42 -31
  13. package/dist/Pglite.mjs.map +1 -1
  14. package/dist/Postgres.d.mts +397 -1743
  15. package/dist/Postgres.mjs +42 -31
  16. package/dist/Postgres.mjs.map +1 -1
  17. package/dist/SqliteBun.d.mts +385 -1992
  18. package/dist/SqliteBun.mjs +43 -43
  19. package/dist/SqliteBun.mjs.map +1 -1
  20. package/dist/SqliteDo.d.mts +385 -1991
  21. package/dist/SqliteDo.mjs +42 -41
  22. package/dist/SqliteDo.mjs.map +1 -1
  23. package/dist/SqliteNode.d.mts +385 -1992
  24. package/dist/SqliteNode.mjs +43 -43
  25. package/dist/SqliteNode.mjs.map +1 -1
  26. package/dist/SqliteWasm.d.mts +385 -1992
  27. package/dist/SqliteWasm.mjs +43 -43
  28. package/dist/SqliteWasm.mjs.map +1 -1
  29. package/dist/drizzle/d1-identity.mjs +2 -2
  30. package/dist/drizzle/d1-identity.mjs.map +1 -1
  31. package/dist/drizzle/driver-types.d.mts +15 -0
  32. package/dist/drizzle/email-drivers.mjs +32 -0
  33. package/dist/drizzle/email-drivers.mjs.map +1 -0
  34. package/dist/drizzle/email-model.d.mts +9 -13
  35. package/dist/drizzle/email-target.d.mts +10 -11
  36. package/dist/drizzle/email-target.mjs +33 -70
  37. package/dist/drizzle/email-target.mjs.map +1 -1
  38. package/dist/drizzle/model.d.mts +1 -10
  39. package/dist/drizzle/model.mjs +1 -2
  40. package/dist/drizzle/model.mjs.map +1 -1
  41. package/dist/drizzle/mysql-identity.mjs +3 -6
  42. package/dist/drizzle/mysql-identity.mjs.map +1 -1
  43. package/dist/drizzle/native-clock.d.mts +9 -0
  44. package/dist/drizzle/native-clock.mjs +18 -0
  45. package/dist/drizzle/native-clock.mjs.map +1 -0
  46. package/dist/drizzle/native-database.d.mts +46 -0
  47. package/dist/drizzle/native-database.mjs +6 -5
  48. package/dist/drizzle/native-database.mjs.map +1 -1
  49. package/dist/drizzle/native-sql-table.mjs +13 -5
  50. package/dist/drizzle/native-sql-table.mjs.map +1 -1
  51. package/dist/drizzle/native-target.d.mts +6 -0
  52. package/dist/drizzle/native-target.mjs +44 -0
  53. package/dist/drizzle/native-target.mjs.map +1 -0
  54. package/dist/drizzle/oauth-connected-drivers.mjs +4 -56
  55. package/dist/drizzle/oauth-connected-drivers.mjs.map +1 -1
  56. package/dist/drizzle/oauth-connected-model.d.mts +5 -22
  57. package/dist/drizzle/oauth-connected-model.mjs +1 -7
  58. package/dist/drizzle/oauth-connected-reference.d.mts +5 -7
  59. package/dist/drizzle/oauth-connected-reference.mjs +11 -3
  60. package/dist/drizzle/oauth-connected-reference.mjs.map +1 -1
  61. package/dist/drizzle/oauth-drivers.mjs +1 -2
  62. package/dist/drizzle/oauth-drivers.mjs.map +1 -1
  63. package/dist/drizzle/oauth-model.d.mts +11 -37
  64. package/dist/drizzle/oauth-model.mjs +3 -4
  65. package/dist/drizzle/oauth-model.mjs.map +1 -1
  66. package/dist/drizzle/oauth-proxy.d.mts +1 -1
  67. package/dist/drizzle/oauth-proxy.mjs +1 -1
  68. package/dist/drizzle/oauth-target.d.mts +9 -6
  69. package/dist/drizzle/oauth-target.mjs +47 -15
  70. package/dist/drizzle/oauth-target.mjs.map +1 -1
  71. package/dist/drizzle/passkey/target.d.mts +14 -0
  72. package/dist/drizzle/passkey/target.mjs +52 -0
  73. package/dist/drizzle/passkey/target.mjs.map +1 -0
  74. package/dist/drizzle/passkey/write-target.d.mts +11 -0
  75. package/dist/drizzle/passkey/write-target.mjs +28 -0
  76. package/dist/drizzle/passkey/write-target.mjs.map +1 -0
  77. package/dist/drizzle/passkey-drivers.mjs +2 -4
  78. package/dist/drizzle/passkey-drivers.mjs.map +1 -1
  79. package/dist/drizzle/passkey-model.d.mts +5 -26
  80. package/dist/drizzle/passkey-model.mjs +2 -8
  81. package/dist/drizzle/passkey-registration-ceremony-model.d.mts +3 -6
  82. package/dist/drizzle/passkey-write-drivers.mjs +2 -3
  83. package/dist/drizzle/passkey-write-drivers.mjs.map +1 -1
  84. package/dist/drizzle/passkey-write-model.d.mts +7 -9
  85. package/dist/drizzle/passkey-write-model.mjs +1 -3
  86. package/dist/drizzle/passkey-write-model.mjs.map +1 -1
  87. package/dist/drizzle/password-drivers.mjs +31 -0
  88. package/dist/drizzle/password-drivers.mjs.map +1 -0
  89. package/dist/drizzle/password-model.d.mts +7 -10
  90. package/dist/drizzle/password-target.d.mts +7 -8
  91. package/dist/drizzle/password-target.mjs +23 -68
  92. package/dist/drizzle/password-target.mjs.map +1 -1
  93. package/dist/drizzle/pg-identity.mjs +3 -6
  94. package/dist/drizzle/pg-identity.mjs.map +1 -1
  95. package/dist/drizzle/phone-drivers.mjs +24 -0
  96. package/dist/drizzle/phone-drivers.mjs.map +1 -0
  97. package/dist/drizzle/phone-model.d.mts +13 -104
  98. package/dist/drizzle/phone-model.mjs +5 -33
  99. package/dist/drizzle/phone-model.mjs.map +1 -1
  100. package/dist/drizzle/phone-target.mjs +22 -171
  101. package/dist/drizzle/phone-target.mjs.map +1 -1
  102. package/dist/drizzle/proof-drivers.mjs +24 -0
  103. package/dist/drizzle/proof-drivers.mjs.map +1 -0
  104. package/dist/drizzle/proof-model.d.mts +7 -15
  105. package/dist/drizzle/proof-target.d.mts +5 -5
  106. package/dist/drizzle/proof-target.mjs +14 -28
  107. package/dist/drizzle/proof-target.mjs.map +1 -1
  108. package/dist/drizzle/session-drivers.mjs +97 -0
  109. package/dist/drizzle/session-drivers.mjs.map +1 -0
  110. package/dist/drizzle/session-model.d.mts +11 -22
  111. package/dist/drizzle/sqlite-do-database.d.mts +3 -3
  112. package/dist/drizzle/sqlite-do-database.mjs +6 -1
  113. package/dist/drizzle/sqlite-do-database.mjs.map +1 -1
  114. package/dist/drizzle/sqlite-identity.mjs +3 -5
  115. package/dist/drizzle/sqlite-identity.mjs.map +1 -1
  116. package/dist/drizzle/step-up-model.d.mts +2 -5
  117. package/dist/drizzle/storage-validation.mjs +2 -1
  118. package/dist/drizzle/storage-validation.mjs.map +1 -1
  119. package/dist/drizzle/totp-model.d.mts +7 -74
  120. package/dist/drizzle/totp-model.mjs +1 -5
  121. package/dist/drizzle/totp-model.mjs.map +1 -1
  122. package/dist/drizzle/totp-target.mjs +39 -75
  123. package/dist/drizzle/totp-target.mjs.map +1 -1
  124. package/dist/drizzle/transaction-handle.mjs +13 -0
  125. package/dist/drizzle/transaction-handle.mjs.map +1 -0
  126. package/dist/drizzle/transaction-mysql.mjs +43 -12
  127. package/dist/drizzle/transaction-mysql.mjs.map +1 -1
  128. package/dist/index.d.mts +17 -22
  129. package/dist/index.mjs +10 -16
  130. package/dist/internal/drizzle-postgres.mjs +4 -6
  131. package/dist/internal/drizzle-postgres.mjs.map +1 -1
  132. package/dist/internal/drizzle-sqlite.mjs +4 -6
  133. package/dist/internal/drizzle-sqlite.mjs.map +1 -1
  134. package/package.json +1 -1
  135. package/src/D1.ts +77 -74
  136. package/src/Libsql.ts +65 -105
  137. package/src/Mysql2.ts +52 -87
  138. package/src/Pglite.ts +74 -81
  139. package/src/Postgres.ts +74 -81
  140. package/src/SqliteBun.ts +65 -113
  141. package/src/SqliteDo.ts +58 -106
  142. package/src/SqliteNode.ts +65 -113
  143. package/src/SqliteWasm.ts +65 -113
  144. package/src/drizzle/d1-identity.ts +2 -2
  145. package/src/drizzle/driver-types.ts +26 -0
  146. package/src/drizzle/email-drivers.ts +320 -0
  147. package/src/drizzle/email-model.ts +24 -78
  148. package/src/drizzle/email-target.ts +118 -211
  149. package/src/drizzle/model.ts +0 -2
  150. package/src/drizzle/mysql-identity.ts +4 -24
  151. package/src/drizzle/native-clock.ts +21 -0
  152. package/src/drizzle/native-database.ts +59 -18
  153. package/src/drizzle/native-sql-table.ts +104 -87
  154. package/src/drizzle/native-target.ts +120 -0
  155. package/src/drizzle/oauth-connected-drivers.ts +24 -233
  156. package/src/drizzle/oauth-connected-model.ts +3 -93
  157. package/src/drizzle/oauth-connected-reference.ts +16 -25
  158. package/src/drizzle/oauth-drivers.ts +58 -99
  159. package/src/drizzle/oauth-model.ts +27 -132
  160. package/src/drizzle/oauth-target.ts +250 -33
  161. package/src/drizzle/passkey/target.ts +205 -0
  162. package/src/drizzle/passkey/write-target.ts +91 -0
  163. package/src/drizzle/passkey-drivers.ts +35 -133
  164. package/src/drizzle/passkey-model.ts +3 -81
  165. package/src/drizzle/passkey-registration-ceremony-model.ts +5 -25
  166. package/src/drizzle/passkey-write-drivers.ts +32 -102
  167. package/src/drizzle/passkey-write-model.ts +10 -44
  168. package/src/drizzle/password-drivers.ts +286 -0
  169. package/src/drizzle/password-model.ts +10 -44
  170. package/src/drizzle/password-target.ts +85 -239
  171. package/src/drizzle/pg-identity.ts +4 -19
  172. package/src/drizzle/phone-drivers.ts +142 -0
  173. package/src/drizzle/phone-model.ts +22 -162
  174. package/src/drizzle/phone-target.ts +51 -493
  175. package/src/drizzle/proof-drivers.ts +123 -0
  176. package/src/drizzle/proof-model.ts +12 -123
  177. package/src/drizzle/proof-target.ts +38 -102
  178. package/src/drizzle/session-drivers.ts +696 -0
  179. package/src/drizzle/session-model.ts +54 -118
  180. package/src/drizzle/sqlite-do-database.ts +8 -0
  181. package/src/drizzle/sqlite-identity.ts +4 -22
  182. package/src/drizzle/step-up-model.ts +13 -37
  183. package/src/drizzle/storage-validation.ts +2 -1
  184. package/src/drizzle/totp-model.ts +20 -77
  185. package/src/drizzle/totp-target.ts +121 -261
  186. package/src/drizzle/transaction-handle.ts +41 -0
  187. package/src/drizzle/transaction-mysql.ts +91 -26
  188. package/src/index.ts +7 -122
  189. package/src/internal/drizzle-postgres.ts +4 -7
  190. package/src/internal/drizzle-sqlite.ts +4 -7
  191. package/dist/drizzle/crypto.mjs +0 -11
  192. package/dist/drizzle/crypto.mjs.map +0 -1
  193. package/dist/drizzle/d1-emails.d.mts +0 -62
  194. package/dist/drizzle/d1-emails.mjs +0 -626
  195. package/dist/drizzle/d1-emails.mjs.map +0 -1
  196. package/dist/drizzle/d1-generated-statement.mjs +0 -79
  197. package/dist/drizzle/d1-generated-statement.mjs.map +0 -1
  198. package/dist/drizzle/d1-oauth.d.mts +0 -331
  199. package/dist/drizzle/d1-oauth.mjs +0 -79
  200. package/dist/drizzle/d1-oauth.mjs.map +0 -1
  201. package/dist/drizzle/d1-passkey.d.mts +0 -37
  202. package/dist/drizzle/d1-passkey.mjs +0 -98
  203. package/dist/drizzle/d1-passkey.mjs.map +0 -1
  204. package/dist/drizzle/d1-password-prepared.d.mts +0 -25
  205. package/dist/drizzle/d1-password-prepared.mjs +0 -473
  206. package/dist/drizzle/d1-password-prepared.mjs.map +0 -1
  207. package/dist/drizzle/d1-passwords.d.mts +0 -70
  208. package/dist/drizzle/d1-passwords.mjs +0 -808
  209. package/dist/drizzle/d1-passwords.mjs.map +0 -1
  210. package/dist/drizzle/d1-phone.d.mts +0 -23
  211. package/dist/drizzle/d1-phone.mjs +0 -33
  212. package/dist/drizzle/d1-phone.mjs.map +0 -1
  213. package/dist/drizzle/d1-planning.d.mts +0 -11
  214. package/dist/drizzle/d1-planning.mjs +0 -43
  215. package/dist/drizzle/d1-planning.mjs.map +0 -1
  216. package/dist/drizzle/d1-proofs.d.mts +0 -80
  217. package/dist/drizzle/d1-proofs.mjs +0 -842
  218. package/dist/drizzle/d1-proofs.mjs.map +0 -1
  219. package/dist/drizzle/d1-sessions.d.mts +0 -68
  220. package/dist/drizzle/d1-sessions.mjs +0 -987
  221. package/dist/drizzle/d1-sessions.mjs.map +0 -1
  222. package/dist/drizzle/d1-totp.d.mts +0 -23
  223. package/dist/drizzle/d1-totp.mjs +0 -30
  224. package/dist/drizzle/d1-totp.mjs.map +0 -1
  225. package/dist/drizzle/email-registration.d.mts +0 -33
  226. package/dist/drizzle/email-registration.mjs +0 -281
  227. package/dist/drizzle/email-registration.mjs.map +0 -1
  228. package/dist/drizzle/email-sql.d.mts +0 -1
  229. package/dist/drizzle/email-sql.mjs +0 -9
  230. package/dist/drizzle/email-sql.mjs.map +0 -1
  231. package/dist/drizzle/mysql-emails.d.mts +0 -71
  232. package/dist/drizzle/mysql-emails.mjs +0 -43
  233. package/dist/drizzle/mysql-emails.mjs.map +0 -1
  234. package/dist/drizzle/mysql-password-prepared.d.mts +0 -30
  235. package/dist/drizzle/mysql-password-prepared.mjs +0 -21
  236. package/dist/drizzle/mysql-password-prepared.mjs.map +0 -1
  237. package/dist/drizzle/mysql-passwords.d.mts +0 -71
  238. package/dist/drizzle/mysql-passwords.mjs +0 -43
  239. package/dist/drizzle/mysql-passwords.mjs.map +0 -1
  240. package/dist/drizzle/mysql-proofs.d.mts +0 -75
  241. package/dist/drizzle/mysql-proofs.mjs +0 -28
  242. package/dist/drizzle/mysql-proofs.mjs.map +0 -1
  243. package/dist/drizzle/mysql-sessions.d.mts +0 -92
  244. package/dist/drizzle/mysql-sessions.mjs +0 -58
  245. package/dist/drizzle/mysql-sessions.mjs.map +0 -1
  246. package/dist/drizzle/oauth-connected-model.mjs.map +0 -1
  247. package/dist/drizzle/oauth-connected-target.d.mts +0 -6
  248. package/dist/drizzle/oauth-connected-target.mjs +0 -12
  249. package/dist/drizzle/oauth-connected-target.mjs.map +0 -1
  250. package/dist/drizzle/oauth-kernel.mjs +0 -11
  251. package/dist/drizzle/oauth-kernel.mjs.map +0 -1
  252. package/dist/drizzle/oauth-mysql.mjs +0 -8
  253. package/dist/drizzle/oauth-mysql.mjs.map +0 -1
  254. package/dist/drizzle/passkey-kernel.mjs +0 -8
  255. package/dist/drizzle/passkey-kernel.mjs.map +0 -1
  256. package/dist/drizzle/passkey-model.mjs.map +0 -1
  257. package/dist/drizzle/passkey-registration-ceremony-model.mjs +0 -2
  258. package/dist/drizzle/passkey-state.mjs +0 -7
  259. package/dist/drizzle/passkey-state.mjs.map +0 -1
  260. package/dist/drizzle/passkey-target.d.mts +0 -2
  261. package/dist/drizzle/passkey-target.mjs +0 -7
  262. package/dist/drizzle/passkey-target.mjs.map +0 -1
  263. package/dist/drizzle/passkey-write-target.d.mts +0 -5
  264. package/dist/drizzle/passkey-write-target.mjs +0 -7
  265. package/dist/drizzle/passkey-write-target.mjs.map +0 -1
  266. package/dist/drizzle/password-prepared-model.d.mts +0 -92
  267. package/dist/drizzle/password-prepared-model.mjs +0 -11
  268. package/dist/drizzle/password-prepared-model.mjs.map +0 -1
  269. package/dist/drizzle/password-prepared-sql.mjs +0 -395
  270. package/dist/drizzle/password-prepared-sql.mjs.map +0 -1
  271. package/dist/drizzle/password-prepared-state.mjs +0 -104
  272. package/dist/drizzle/password-prepared-state.mjs.map +0 -1
  273. package/dist/drizzle/password-prepared-target.d.mts +0 -13
  274. package/dist/drizzle/password-prepared-target.mjs +0 -62
  275. package/dist/drizzle/password-prepared-target.mjs.map +0 -1
  276. package/dist/drizzle/password-registration.d.mts +0 -7
  277. package/dist/drizzle/password-registration.mjs +0 -137
  278. package/dist/drizzle/password-registration.mjs.map +0 -1
  279. package/dist/drizzle/password-sql.d.mts +0 -1
  280. package/dist/drizzle/password-sql.mjs +0 -10
  281. package/dist/drizzle/password-sql.mjs.map +0 -1
  282. package/dist/drizzle/pg-emails.d.mts +0 -72
  283. package/dist/drizzle/pg-emails.mjs +0 -43
  284. package/dist/drizzle/pg-emails.mjs.map +0 -1
  285. package/dist/drizzle/pg-password-prepared.d.mts +0 -31
  286. package/dist/drizzle/pg-password-prepared.mjs +0 -21
  287. package/dist/drizzle/pg-password-prepared.mjs.map +0 -1
  288. package/dist/drizzle/pg-passwords.d.mts +0 -72
  289. package/dist/drizzle/pg-passwords.mjs +0 -43
  290. package/dist/drizzle/pg-passwords.mjs.map +0 -1
  291. package/dist/drizzle/pg-proofs.d.mts +0 -76
  292. package/dist/drizzle/pg-proofs.mjs +0 -27
  293. package/dist/drizzle/pg-proofs.mjs.map +0 -1
  294. package/dist/drizzle/pg-sessions.d.mts +0 -93
  295. package/dist/drizzle/pg-sessions.mjs +0 -58
  296. package/dist/drizzle/pg-sessions.mjs.map +0 -1
  297. package/dist/drizzle/phone-state.mjs +0 -14
  298. package/dist/drizzle/phone-state.mjs.map +0 -1
  299. package/dist/drizzle/phone-target.d.mts +0 -15
  300. package/dist/drizzle/proof-sql.d.mts +0 -1
  301. package/dist/drizzle/proof-sql.mjs +0 -8
  302. package/dist/drizzle/proof-sql.mjs.map +0 -1
  303. package/dist/drizzle/query-operations.mjs +0 -31
  304. package/dist/drizzle/query-operations.mjs.map +0 -1
  305. package/dist/drizzle/session-sql.d.mts +0 -1
  306. package/dist/drizzle/session-sql.mjs +0 -9
  307. package/dist/drizzle/session-sql.mjs.map +0 -1
  308. package/dist/drizzle/session-target.d.mts +0 -30
  309. package/dist/drizzle/session-target.mjs +0 -49
  310. package/dist/drizzle/session-target.mjs.map +0 -1
  311. package/dist/drizzle/sqlite-emails.mjs +0 -50
  312. package/dist/drizzle/sqlite-emails.mjs.map +0 -1
  313. package/dist/drizzle/sqlite-password-prepared.mjs +0 -26
  314. package/dist/drizzle/sqlite-password-prepared.mjs.map +0 -1
  315. package/dist/drizzle/sqlite-passwords.mjs +0 -54
  316. package/dist/drizzle/sqlite-passwords.mjs.map +0 -1
  317. package/dist/drizzle/sqlite-proofs.mjs +0 -34
  318. package/dist/drizzle/sqlite-proofs.mjs.map +0 -1
  319. package/dist/drizzle/sqlite-sessions.mjs +0 -79
  320. package/dist/drizzle/sqlite-sessions.mjs.map +0 -1
  321. package/dist/drizzle/standalone-guard.d.mts +0 -2
  322. package/dist/drizzle/standalone-guard.mjs +0 -21
  323. package/dist/drizzle/standalone-guard.mjs.map +0 -1
  324. package/dist/drizzle/totp-state.d.mts +0 -37
  325. package/dist/drizzle/totp-state.mjs +0 -287
  326. package/dist/drizzle/totp-state.mjs.map +0 -1
  327. package/dist/drizzle/totp-target.d.mts +0 -15
  328. package/dist/drizzle/transaction-execution.d.mts +0 -2
  329. package/dist/drizzle/transaction-execution.mjs +0 -11
  330. package/dist/drizzle/transaction-execution.mjs.map +0 -1
  331. package/dist/drizzle/transaction-owner.d.mts +0 -1
  332. package/dist/drizzle/transaction-owner.mjs +0 -8
  333. package/dist/drizzle/transaction-owner.mjs.map +0 -1
  334. package/src/drizzle/crypto.ts +0 -14
  335. package/src/drizzle/d1-emails.ts +0 -1945
  336. package/src/drizzle/d1-generated-statement.ts +0 -129
  337. package/src/drizzle/d1-oauth.ts +0 -360
  338. package/src/drizzle/d1-passkey.ts +0 -383
  339. package/src/drizzle/d1-password-prepared.ts +0 -1266
  340. package/src/drizzle/d1-passwords.ts +0 -2061
  341. package/src/drizzle/d1-phone.ts +0 -103
  342. package/src/drizzle/d1-planning.ts +0 -104
  343. package/src/drizzle/d1-proofs.ts +0 -2354
  344. package/src/drizzle/d1-sessions.ts +0 -2940
  345. package/src/drizzle/d1-totp.ts +0 -88
  346. package/src/drizzle/email-registration.ts +0 -850
  347. package/src/drizzle/email-sql.ts +0 -25
  348. package/src/drizzle/mysql-emails.ts +0 -343
  349. package/src/drizzle/mysql-password-prepared.ts +0 -198
  350. package/src/drizzle/mysql-passwords.ts +0 -343
  351. package/src/drizzle/mysql-proofs.ts +0 -196
  352. package/src/drizzle/mysql-sessions.ts +0 -780
  353. package/src/drizzle/oauth-connected-target.ts +0 -21
  354. package/src/drizzle/oauth-kernel.ts +0 -10
  355. package/src/drizzle/oauth-mysql.ts +0 -10
  356. package/src/drizzle/passkey-kernel.ts +0 -4
  357. package/src/drizzle/passkey-state.ts +0 -3
  358. package/src/drizzle/passkey-target.ts +0 -23
  359. package/src/drizzle/passkey-write-target.ts +0 -9
  360. package/src/drizzle/password-prepared-model.ts +0 -241
  361. package/src/drizzle/password-prepared-sql.ts +0 -1202
  362. package/src/drizzle/password-prepared-state.ts +0 -231
  363. package/src/drizzle/password-prepared-target.ts +0 -169
  364. package/src/drizzle/password-registration.ts +0 -369
  365. package/src/drizzle/password-sql.ts +0 -16
  366. package/src/drizzle/pg-emails.ts +0 -343
  367. package/src/drizzle/pg-password-prepared.ts +0 -199
  368. package/src/drizzle/pg-passwords.ts +0 -342
  369. package/src/drizzle/pg-proofs.ts +0 -206
  370. package/src/drizzle/pg-sessions.ts +0 -789
  371. package/src/drizzle/phone-state.ts +0 -21
  372. package/src/drizzle/proof-sql.ts +0 -10
  373. package/src/drizzle/query-operations.ts +0 -49
  374. package/src/drizzle/session-sql.ts +0 -15
  375. package/src/drizzle/session-target.ts +0 -337
  376. package/src/drizzle/sqlite-emails.ts +0 -393
  377. package/src/drizzle/sqlite-password-prepared.ts +0 -230
  378. package/src/drizzle/sqlite-passwords.ts +0 -497
  379. package/src/drizzle/sqlite-proofs.ts +0 -229
  380. package/src/drizzle/sqlite-sessions.ts +0 -1013
  381. package/src/drizzle/totp-state.ts +0 -525
  382. package/src/drizzle/transaction-execution.ts +0 -13
  383. package/src/drizzle/transaction-owner.ts +0 -11
@@ -1,48 +1,265 @@
1
- import type { OAuthKernel } from "@yielded/auth-persistence/Adapter";
1
+ import {
2
+ captureOAuthMapping,
3
+ makeNativeOAuthSignInServices,
4
+ makeNativeOAuthAccountsServices,
5
+ makeNativeOAuthRegistrationIntentServices,
6
+ makeNativeOAuthRegistrationServices,
7
+ makeNativeOAuthConnectedServices,
8
+ makeNativeOAuthRevocationServices,
9
+ type OAuthNativeReadMapping,
10
+ type OAuthNativeAccountsMapping,
11
+ type OAuthNativeRegistrationIntentMapping,
12
+ type OAuthNativeRegistrationMapping,
13
+ type OAuthNativeConnectedMapping,
14
+ type OAuthNativeRevocationMapping,
15
+ } from "@yielded/auth-persistence/Adapter";
16
+ import type { LifecycleHooks } from "@yielded/auth/Hooks";
17
+ import { OAuthUnavailable } from "@yielded/auth/OAuth";
18
+ import { Effect } from "effect";
19
+
20
+ import type { D1BatchStatements } from "./D1BatchStatements";
21
+ import type { NativeDatabaseHandle } from "./native-database";
22
+ import {
23
+ nativeTarget,
24
+ coordinateNativeTarget,
25
+ type NativeTargetConfiguration,
26
+ } from "./native-target";
27
+ import { validateDrizzleStorage } from "./storage-validation";
2
28
 
3
- import { oauthKernel } from "./oauth-kernel";
29
+ export {
30
+ oauthAccountsPersistenceLayer,
31
+ oauthSignInPersistenceLayer,
32
+ oauthRegistrationIntentsLayer,
33
+ oauthRegistrationAuthorityLayer,
34
+ oauthConnectedPersistenceLayer,
35
+ oauthConnectedRevocationsLayer,
36
+ } from "@yielded/auth-persistence/Adapter";
4
37
 
5
- export const sqlClientOAuthStandaloneGuard: OAuthKernel["target"]["sqlClientOAuthStandaloneGuard"] =
6
- oauthKernel.target.sqlClientOAuthStandaloneGuard;
38
+ export type OAuthTargetConfiguration = NativeTargetConfiguration;
7
39
 
8
- export const makeTargetOAuthSignInServices: OAuthKernel["target"]["makeTargetOAuthSignInServices"] =
9
- oauthKernel.target.makeTargetOAuthSignInServices;
40
+ export type OAuthCoordinatorError<E> = E | OAuthUnavailable;
41
+ const unavailable = () => OAuthUnavailable.make({});
10
42
 
11
- export const makeTargetOAuthRegistrationIntentServices: OAuthKernel["target"]["makeTargetOAuthRegistrationIntentServices"] =
12
- oauthKernel.target.makeTargetOAuthRegistrationIntentServices;
43
+ const mapped = Effect.fnUntraced(function* (
44
+ original: unknown,
45
+ configuration: OAuthTargetConfiguration,
46
+ ) {
47
+ const mapping = captureOAuthMapping(original);
13
48
 
14
- export const makeTargetOAuthRegistrationServices: OAuthKernel["target"]["makeTargetOAuthRegistrationServices"] =
15
- oauthKernel.target.makeTargetOAuthRegistrationServices;
49
+ yield* validateDrizzleStorage(mapping).pipe(Effect.mapError(unavailable));
50
+ if (
51
+ configuration.mode === "batch" &&
52
+ !(
53
+ typeof mapping === "object" &&
54
+ mapping !== null &&
55
+ "d1" in mapping &&
56
+ typeof mapping.d1 === "object" &&
57
+ mapping.d1 !== null &&
58
+ "primary" in mapping.d1 &&
59
+ mapping.d1.primary === true
60
+ )
61
+ )
62
+ return yield* unavailable();
16
63
 
17
- export const coordinateTargetOAuthRegistration: OAuthKernel["target"]["coordinateTargetOAuthRegistration"] =
18
- oauthKernel.target.coordinateTargetOAuthRegistration;
64
+ return { mapping, ...(yield* nativeTarget(configuration)) };
65
+ });
19
66
 
20
- export const coordinateTargetOAuthSignIn: OAuthKernel["target"]["coordinateTargetOAuthSignIn"] =
21
- oauthKernel.target.coordinateTargetOAuthSignIn;
67
+ export const makeTargetOAuthSignInServices = (
68
+ source: unknown,
69
+ configuration: OAuthTargetConfiguration,
70
+ ) =>
71
+ Effect.gen(function* () {
72
+ const target = yield* mapped(source, configuration);
22
73
 
23
- export const coordinateTargetOAuthRegistrationIntents: OAuthKernel["target"]["coordinateTargetOAuthRegistrationIntents"] =
24
- oauthKernel.target.coordinateTargetOAuthRegistrationIntents;
74
+ return yield* target.provide(
75
+ makeNativeOAuthSignInServices(
76
+ target.tables,
77
+ target.mapping as OAuthNativeReadMapping,
78
+ target.batch,
79
+ ),
80
+ );
81
+ });
25
82
 
26
- export const coordinateTargetOAuthAccounts: OAuthKernel["target"]["coordinateTargetOAuthAccounts"] =
27
- oauthKernel.target.coordinateTargetOAuthAccounts;
83
+ export const makeTargetOAuthAccountsServices = (
84
+ source: unknown,
85
+ configuration: OAuthTargetConfiguration,
86
+ ) =>
87
+ Effect.gen(function* () {
88
+ const target = yield* mapped(source, configuration);
28
89
 
29
- export const makeTargetOAuthAccountsServices: OAuthKernel["target"]["makeTargetOAuthAccountsServices"] =
30
- oauthKernel.target.makeTargetOAuthAccountsServices;
90
+ return yield* target.provide(
91
+ makeNativeOAuthAccountsServices(
92
+ target.tables,
93
+ target.mapping as OAuthNativeAccountsMapping,
94
+ target.batch,
95
+ ),
96
+ );
97
+ });
31
98
 
32
- export const oauthAccountsPersistenceLayer: OAuthKernel["target"]["oauthAccountsPersistenceLayer"] =
33
- oauthKernel.target.oauthAccountsPersistenceLayer;
99
+ export const makeTargetOAuthRegistrationIntentServices = (
100
+ source: unknown,
101
+ configuration: OAuthTargetConfiguration,
102
+ ) =>
103
+ Effect.gen(function* () {
104
+ const target = yield* mapped(source, configuration);
34
105
 
35
- export const oauthSignInPersistenceLayer: OAuthKernel["target"]["oauthSignInPersistenceLayer"] =
36
- oauthKernel.target.oauthSignInPersistenceLayer;
106
+ return yield* target.provide(
107
+ makeNativeOAuthRegistrationIntentServices(
108
+ target.tables,
109
+ target.mapping as OAuthNativeRegistrationIntentMapping,
110
+ target.batch,
111
+ ),
112
+ );
113
+ });
37
114
 
38
- export const oauthRegistrationIntentsLayer: OAuthKernel["target"]["oauthRegistrationIntentsLayer"] =
39
- oauthKernel.target.oauthRegistrationIntentsLayer;
115
+ export const makeTargetOAuthConnectedServices = (
116
+ source: unknown,
117
+ configuration: OAuthTargetConfiguration,
118
+ ) =>
119
+ Effect.gen(function* () {
120
+ const target = yield* mapped(source, configuration);
40
121
 
41
- export const oauthRegistrationAuthorityLayer: OAuthKernel["target"]["oauthRegistrationAuthorityLayer"] =
42
- oauthKernel.target.oauthRegistrationAuthorityLayer;
122
+ return yield* target.provide(
123
+ makeNativeOAuthConnectedServices(
124
+ target.tables,
125
+ target.mapping as OAuthNativeConnectedMapping,
126
+ target.batch,
127
+ ),
128
+ );
129
+ });
43
130
 
44
- export type {
45
- OAuthTargetConfiguration,
46
- OAuthCoordinatorError,
47
- OAuthExecution,
48
- } from "@yielded/auth-persistence/Adapter";
131
+ export const makeTargetOAuthConnectedRevocationServices = (
132
+ source: unknown,
133
+ configuration: OAuthTargetConfiguration,
134
+ ) =>
135
+ Effect.gen(function* () {
136
+ const target = yield* mapped(source, configuration);
137
+
138
+ return yield* target.provide(
139
+ makeNativeOAuthRevocationServices(
140
+ target.tables,
141
+ target.mapping as OAuthNativeRevocationMapping,
142
+ target.batch,
143
+ ),
144
+ );
145
+ });
146
+
147
+ export const makeTargetOAuthRegistrationServices = <Registration>(
148
+ source: unknown,
149
+ configuration: OAuthTargetConfiguration,
150
+ ) =>
151
+ Effect.gen(function* () {
152
+ const target = yield* mapped(source, configuration);
153
+
154
+ return yield* target.provide(
155
+ makeNativeOAuthRegistrationServices(
156
+ target.tables,
157
+ target.mapping as OAuthNativeRegistrationMapping<Registration>,
158
+ target.batch,
159
+ ),
160
+ );
161
+ });
162
+
163
+ const coordinateOwner = <Services, Transaction, A, E, R, ES, RS>(
164
+ database: NativeDatabaseHandle,
165
+ configuration: OAuthTargetConfiguration,
166
+ make: Effect.Effect<Services, ES, RS>,
167
+ body: (transaction: Transaction, services: Services) => Effect.Effect<A, E, R>,
168
+ ): Effect.Effect<A, E | OAuthUnavailable, Exclude<R, D1BatchStatements> | RS | LifecycleHooks> =>
169
+ coordinateNativeTarget(unavailable, database, configuration, make, body);
170
+
171
+ export const coordinateTargetOAuthSignIn = <Transaction, A, E, R>(
172
+ database: NativeDatabaseHandle,
173
+ mapping: unknown,
174
+ configuration: OAuthTargetConfiguration,
175
+ body: (
176
+ transaction: Transaction,
177
+ services: Effect.Success<ReturnType<typeof makeTargetOAuthSignInServices>>,
178
+ ) => Effect.Effect<A, E, R>,
179
+ ) =>
180
+ coordinateOwner(
181
+ database,
182
+ configuration,
183
+ makeTargetOAuthSignInServices(mapping, configuration),
184
+ body,
185
+ );
186
+
187
+ export const coordinateTargetOAuthAccounts = <Transaction, A, E, R>(
188
+ database: NativeDatabaseHandle,
189
+ mapping: unknown,
190
+ configuration: OAuthTargetConfiguration,
191
+ body: (
192
+ transaction: Transaction,
193
+ services: Effect.Success<ReturnType<typeof makeTargetOAuthAccountsServices>>,
194
+ ) => Effect.Effect<A, E, R>,
195
+ ) =>
196
+ coordinateOwner(
197
+ database,
198
+ configuration,
199
+ makeTargetOAuthAccountsServices(mapping, configuration),
200
+ body,
201
+ );
202
+
203
+ export const coordinateTargetOAuthRegistrationIntents = <Transaction, A, E, R>(
204
+ database: NativeDatabaseHandle,
205
+ mapping: unknown,
206
+ configuration: OAuthTargetConfiguration,
207
+ body: (
208
+ transaction: Transaction,
209
+ services: Effect.Success<ReturnType<typeof makeTargetOAuthRegistrationIntentServices>>,
210
+ ) => Effect.Effect<A, E, R>,
211
+ ) =>
212
+ coordinateOwner(
213
+ database,
214
+ configuration,
215
+ makeTargetOAuthRegistrationIntentServices(mapping, configuration),
216
+ body,
217
+ );
218
+
219
+ export const coordinateTargetOAuthConnected = <Transaction, A, E, R>(
220
+ database: NativeDatabaseHandle,
221
+ mapping: unknown,
222
+ configuration: OAuthTargetConfiguration,
223
+ body: (
224
+ transaction: Transaction,
225
+ services: Effect.Success<ReturnType<typeof makeTargetOAuthConnectedServices>>,
226
+ ) => Effect.Effect<A, E, R>,
227
+ ) =>
228
+ coordinateOwner(
229
+ database,
230
+ configuration,
231
+ makeTargetOAuthConnectedServices(mapping, configuration),
232
+ body,
233
+ );
234
+
235
+ export const coordinateTargetOAuthConnectedRevocations = <Transaction, A, E, R>(
236
+ database: NativeDatabaseHandle,
237
+ mapping: unknown,
238
+ configuration: OAuthTargetConfiguration,
239
+ body: (
240
+ transaction: Transaction,
241
+ services: Effect.Success<ReturnType<typeof makeTargetOAuthConnectedRevocationServices>>,
242
+ ) => Effect.Effect<A, E, R>,
243
+ ) =>
244
+ coordinateOwner(
245
+ database,
246
+ configuration,
247
+ makeTargetOAuthConnectedRevocationServices(mapping, configuration),
248
+ body,
249
+ );
250
+
251
+ export const coordinateTargetOAuthRegistration = <Registration, Transaction, A, E, R>(
252
+ database: NativeDatabaseHandle,
253
+ mapping: unknown,
254
+ configuration: OAuthTargetConfiguration,
255
+ body: (
256
+ transaction: Transaction,
257
+ services: Effect.Success<ReturnType<typeof makeTargetOAuthRegistrationServices<Registration>>>,
258
+ ) => Effect.Effect<A, E, R>,
259
+ ) =>
260
+ coordinateOwner(
261
+ database,
262
+ configuration,
263
+ makeTargetOAuthRegistrationServices<Registration>(mapping, configuration),
264
+ body,
265
+ );
@@ -0,0 +1,205 @@
1
+ import {
2
+ type SqlBatchCommit,
3
+ makeBatchPasskeyServices,
4
+ makeNativePasskeyCeremonyServices,
5
+ makeNativePasskeyCredentialServices,
6
+ makeNativePasskeyServices,
7
+ type NativeSqlTables,
8
+ type NativePasskeyCeremonyMapping,
9
+ type PasskeyNativeMapping,
10
+ type PasskeyNativeRead,
11
+ } from "@yielded/auth-persistence/Adapter";
12
+ import { LifecycleHooks } from "@yielded/auth/Hooks";
13
+ import { PasskeyConfigurationError, PasskeyUnavailable } from "@yielded/auth/Passkey";
14
+ import { type Crypto, Effect } from "effect";
15
+ import type { SqlClient } from "effect/sql";
16
+
17
+ import type { D1BatchStatements } from "../D1BatchStatements";
18
+ import type { PersistenceMappingError } from "../model";
19
+ import {
20
+ NativeDatabase,
21
+ type NativeDatabaseHandle,
22
+ type NativePhysicalDatabase,
23
+ } from "../native-database";
24
+ import {
25
+ nativeTarget,
26
+ coordinateNativeTarget,
27
+ type NativeTargetConfiguration,
28
+ } from "../native-target";
29
+ import type { PasskeyPersistenceServices, PasskeyMappingSource } from "../passkey-model";
30
+ import { validateDrizzleStorage } from "../storage-validation";
31
+ export type PasskeyTargetConfiguration = NativeTargetConfiguration;
32
+
33
+ export type PasskeyCoordinatorError<E> =
34
+ | E
35
+ | PasskeyUnavailable
36
+ | PasskeyConfigurationError
37
+ | PersistenceMappingError;
38
+
39
+ const unavailable = () => PasskeyUnavailable.make({});
40
+
41
+ const emptyHooks: LifecycleHooks["Service"] = {
42
+ before: () => Effect.void,
43
+ after: () => Effect.succeed([]),
44
+ };
45
+
46
+ // Mapped table/SQL generics end here. Persisted values are decoded by shared schemas.
47
+ export const capturePasskeyMapping = <M, R>(
48
+ source: PasskeyMappingSource<M, R>,
49
+ configuration: PasskeyTargetConfiguration,
50
+ ) =>
51
+ Effect.flatMap(Effect.isEffect(source) ? source : Effect.succeed(source), (mapping) =>
52
+ validateDrizzleStorage(mapping).pipe(
53
+ Effect.andThen(
54
+ Effect.try({
55
+ try: () => {
56
+ if (
57
+ configuration.mode === "batch" &&
58
+ !(
59
+ typeof mapping === "object" &&
60
+ mapping !== null &&
61
+ "d1" in mapping &&
62
+ typeof mapping.d1 === "object" &&
63
+ mapping.d1 !== null &&
64
+ "primary" in mapping.d1 &&
65
+ mapping.d1.primary === true
66
+ )
67
+ )
68
+ throw PasskeyConfigurationError.make({});
69
+
70
+ return mapping;
71
+ },
72
+ catch: () => PasskeyConfigurationError.make({}),
73
+ }),
74
+ ),
75
+ ),
76
+ );
77
+
78
+ type NativePasskeyServices = Effect.Success<ReturnType<typeof makeNativePasskeyServices>>;
79
+
80
+ interface PasskeyMapped<M> {
81
+ readonly mapping: M;
82
+ readonly database: NativePhysicalDatabase;
83
+ readonly tables: NativeSqlTables;
84
+ readonly batch: SqlBatchCommit["Service"] | undefined;
85
+ readonly provide: <A, E, R>(
86
+ effect: Effect.Effect<A, E, R>,
87
+ ) => Effect.Effect<A, E, Exclude<Exclude<R, SqlClient.SqlClient>, SqlBatchCommit>>;
88
+ readonly base: () => Effect.Effect<NativePasskeyServices, never, Crypto.Crypto | LifecycleHooks>;
89
+ }
90
+
91
+ export const makePasskeyMapped = Effect.fnUntraced(function* <M, R>(
92
+ source: PasskeyMappingSource<M, R>,
93
+ configuration: PasskeyTargetConfiguration,
94
+ ): Effect.fn.Return<
95
+ PasskeyMapped<M>,
96
+ PasskeyConfigurationError | PersistenceMappingError,
97
+ R | NativeDatabase
98
+ > {
99
+ const mapping = yield* capturePasskeyMapping(source, configuration);
100
+ const database = yield* NativeDatabase;
101
+ const { tables, batch, provide } = yield* nativeTarget(configuration);
102
+ const native = mapping as unknown as PasskeyNativeMapping;
103
+
104
+ return {
105
+ mapping,
106
+ database,
107
+ tables,
108
+ batch,
109
+ provide,
110
+ base: () =>
111
+ provide(
112
+ configuration.mode === "batch"
113
+ ? makeBatchPasskeyServices(tables, native)
114
+ : makeNativePasskeyServices(tables, native),
115
+ ),
116
+ };
117
+ });
118
+
119
+ export const makeTargetPasskeyCredentials = <M, R>(
120
+ source: PasskeyMappingSource<M, R>,
121
+ configuration: PasskeyTargetConfiguration,
122
+ ) =>
123
+ Effect.gen(function* () {
124
+ const target = yield* makePasskeyMapped(source, configuration);
125
+
126
+ return yield* target
127
+ .provide(
128
+ makeNativePasskeyCredentialServices(
129
+ target.tables,
130
+ target.mapping as unknown as PasskeyNativeRead,
131
+ ),
132
+ )
133
+ .pipe(Effect.provideService(LifecycleHooks, emptyHooks));
134
+ }).pipe(Effect.catchDefect(() => Effect.fail(PasskeyConfigurationError.make({}))));
135
+
136
+ export const makeTargetPasskeyPersistence = <M, R>(
137
+ source: PasskeyMappingSource<M, R>,
138
+ configuration: PasskeyTargetConfiguration,
139
+ ) =>
140
+ Effect.gen(function* () {
141
+ const target = yield* makePasskeyMapped(source, configuration);
142
+
143
+ const base = yield* target.base();
144
+
145
+ return { passkeyPersistence: base.passkeyPersistence } satisfies PasskeyPersistenceServices;
146
+ });
147
+
148
+ export const makeTargetPasskeyRegistration = <M, R>(
149
+ source: PasskeyMappingSource<M, R>,
150
+ configuration: PasskeyTargetConfiguration,
151
+ ) =>
152
+ Effect.gen(function* () {
153
+ const target = yield* makePasskeyMapped(source, configuration);
154
+
155
+ return yield* target.provide(
156
+ makeNativePasskeyCeremonyServices(
157
+ target.tables,
158
+ target.mapping as unknown as NativePasskeyCeremonyMapping,
159
+ configuration.mode === "batch" ? target.batch : undefined,
160
+ ),
161
+ );
162
+ });
163
+
164
+ export const coordinatePasskeyOwner = <S, Transaction, A, E, R, ESetup, RSetup>(
165
+ database: NativeDatabaseHandle,
166
+ configuration: PasskeyTargetConfiguration,
167
+ make: Effect.Effect<S, ESetup, RSetup>,
168
+ body: (transaction: Transaction, services: S) => Effect.Effect<A, E, R>,
169
+ ): Effect.Effect<
170
+ A,
171
+ E | PasskeyUnavailable,
172
+ Exclude<R, D1BatchStatements> | RSetup | LifecycleHooks
173
+ > => coordinateNativeTarget(unavailable, database, configuration, make, body);
174
+
175
+ export const coordinateTargetPasskey = <M, RSetup, Transaction, A, E, R>(
176
+ database: NativeDatabaseHandle,
177
+ source: PasskeyMappingSource<M, RSetup>,
178
+ configuration: PasskeyTargetConfiguration,
179
+ body: (
180
+ transaction: Transaction,
181
+ services: Effect.Success<ReturnType<typeof makeTargetPasskeyPersistence>>,
182
+ ) => Effect.Effect<A, E, R>,
183
+ ) =>
184
+ coordinatePasskeyOwner(
185
+ database,
186
+ configuration,
187
+ makeTargetPasskeyPersistence(source, configuration),
188
+ body,
189
+ );
190
+
191
+ export const coordinateTargetPasskeyRegistration = <M, RSetup, Transaction, A, E, R>(
192
+ database: NativeDatabaseHandle,
193
+ source: PasskeyMappingSource<M, RSetup>,
194
+ configuration: PasskeyTargetConfiguration,
195
+ body: (
196
+ transaction: Transaction,
197
+ services: Effect.Success<ReturnType<typeof makeTargetPasskeyRegistration>>,
198
+ ) => Effect.Effect<A, E, R>,
199
+ ) =>
200
+ coordinatePasskeyOwner(
201
+ database,
202
+ configuration,
203
+ makeTargetPasskeyRegistration(source, configuration),
204
+ body,
205
+ );
@@ -0,0 +1,91 @@
1
+ import {
2
+ makePasskeyNativeManagement,
3
+ makePasskeyNativeRegistration,
4
+ type NativePasskeyManagementMapping,
5
+ type NativePasskeyRegistrationMapping,
6
+ } from "@yielded/auth-persistence/Adapter";
7
+ import { PasskeyManagementPersistence } from "@yielded/auth/Passkey";
8
+ import { Effect, Layer } from "effect";
9
+
10
+ import type { NativeDatabaseHandle } from "../native-database";
11
+ import type { PasskeyMappingSource } from "../passkey-model";
12
+ import type {
13
+ PasskeyManagementServices,
14
+ PasskeyRegistrationServices,
15
+ } from "../passkey-write-model";
16
+ import {
17
+ coordinatePasskeyOwner,
18
+ makePasskeyMapped,
19
+ type PasskeyTargetConfiguration,
20
+ } from "./target";
21
+
22
+ export const passkeyManagementPersistenceLayer = <E, R>(
23
+ services: Effect.Effect<PasskeyManagementServices, E, R>,
24
+ ) =>
25
+ Layer.effect(
26
+ PasskeyManagementPersistence,
27
+ Effect.map(services, (value) => value.passkeyManagementPersistence),
28
+ );
29
+
30
+ export const makeTargetPasskeyManagement = <M, R>(
31
+ source: PasskeyMappingSource<M, R>,
32
+ configuration: PasskeyTargetConfiguration,
33
+ ) =>
34
+ Effect.gen(function* () {
35
+ const target = yield* makePasskeyMapped(source, configuration);
36
+ const base = yield* target.base();
37
+
38
+ return {
39
+ passkeyPersistence: base.passkeyPersistence,
40
+ ...makePasskeyNativeManagement(
41
+ base,
42
+ target.mapping as unknown as NativePasskeyManagementMapping,
43
+ ),
44
+ };
45
+ });
46
+
47
+ export const makeTargetPasskeyRegistrationWriter = <M, Value, R>(
48
+ source: PasskeyMappingSource<M, R>,
49
+ configuration: PasskeyTargetConfiguration,
50
+ ) =>
51
+ Effect.gen(function* () {
52
+ const target = yield* makePasskeyMapped(source, configuration);
53
+ const base = yield* target.base();
54
+
55
+ return {
56
+ passkeyPersistence: base.passkeyPersistence,
57
+ ...makePasskeyNativeRegistration(
58
+ base,
59
+ target.mapping as unknown as NativePasskeyRegistrationMapping<Value>,
60
+ ),
61
+ };
62
+ });
63
+
64
+ export const coordinateTargetPasskeyManagement = <M, RSetup, Transaction, A, E, R>(
65
+ database: NativeDatabaseHandle,
66
+ source: PasskeyMappingSource<M, RSetup>,
67
+ configuration: PasskeyTargetConfiguration,
68
+ body: (transaction: Transaction, services: PasskeyManagementServices) => Effect.Effect<A, E, R>,
69
+ ) =>
70
+ coordinatePasskeyOwner(
71
+ database,
72
+ configuration,
73
+ makeTargetPasskeyManagement(source, configuration),
74
+ body,
75
+ );
76
+
77
+ export const coordinateTargetPasskeyRegistrationWriter = <M, Value, RSetup, Transaction, A, E, R>(
78
+ database: NativeDatabaseHandle,
79
+ source: PasskeyMappingSource<M, RSetup>,
80
+ configuration: PasskeyTargetConfiguration,
81
+ body: (
82
+ transaction: Transaction,
83
+ services: PasskeyRegistrationServices<Value>,
84
+ ) => Effect.Effect<A, E, R>,
85
+ ) =>
86
+ coordinatePasskeyOwner(
87
+ database,
88
+ configuration,
89
+ makeTargetPasskeyRegistrationWriter<M, Value, RSetup>(source, configuration),
90
+ body,
91
+ );