@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.
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 +90 -25
  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 -1265
  340. package/src/drizzle/d1-passwords.ts +0 -2060
  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 -1201
  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,19 +1,51 @@
1
- import { oauthKernel } from "./oauth-kernel.mjs";
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 sqlClientOAuthStandaloneGuard = oauthKernel.target.sqlClientOAuthStandaloneGuard;
4
- const makeTargetOAuthSignInServices = oauthKernel.target.makeTargetOAuthSignInServices;
5
- const makeTargetOAuthRegistrationIntentServices = oauthKernel.target.makeTargetOAuthRegistrationIntentServices;
6
- const makeTargetOAuthRegistrationServices = oauthKernel.target.makeTargetOAuthRegistrationServices;
7
- const coordinateTargetOAuthRegistration = oauthKernel.target.coordinateTargetOAuthRegistration;
8
- const coordinateTargetOAuthSignIn = oauthKernel.target.coordinateTargetOAuthSignIn;
9
- const coordinateTargetOAuthRegistrationIntents = oauthKernel.target.coordinateTargetOAuthRegistrationIntents;
10
- const coordinateTargetOAuthAccounts = oauthKernel.target.coordinateTargetOAuthAccounts;
11
- const makeTargetOAuthAccountsServices = oauthKernel.target.makeTargetOAuthAccountsServices;
12
- const oauthAccountsPersistenceLayer = oauthKernel.target.oauthAccountsPersistenceLayer;
13
- const oauthSignInPersistenceLayer = oauthKernel.target.oauthSignInPersistenceLayer;
14
- const oauthRegistrationIntentsLayer = oauthKernel.target.oauthRegistrationIntentsLayer;
15
- const oauthRegistrationAuthorityLayer = oauthKernel.target.oauthRegistrationAuthorityLayer;
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, sqlClientOAuthStandaloneGuard };
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, makeTargetPasskeyEnrollmentContext, makeTargetPasskeyPersistence, makeTargetPasskeyRegistration } from "./passkey-target.mjs";
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, PasskeyChargeInsert, PasskeyChargeKind, PasskeyCredentialServices, PasskeyEnrollmentContextServices, PasskeyFlowInsert, PasskeyFlowState, PasskeyMappingSource, PasskeyPersistenceServices, PasskeySubjectIdCodec, passkeyCredentialsLayer, passkeyEnrollmentContextLayer, passkeyPersistenceLayer, requiredPasskeyCredentialConstraints, requiredPasskeyPersistenceConstraints } from "@yielded/auth-persistence/Adapter";
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 PasskeyCredentialOwnershipTable<T extends Table, N> = Shared.PasskeyCredentialOwnershipTable<DrizzleTableModel<T>, N, SQL>;
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 PasskeyAdmissionTable<T extends Table> = Shared.PasskeyAdmissionTable<DrizzleTableModel<T>>;
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, Module extends Table, Flow extends Table, Admission extends Table, Charge extends Table, N> = Shared.PasskeyPersistenceMapping<Read, DrizzleTableModel<Module>, DrizzleTableModel<Flow>, DrizzleTableModel<Admission>, DrizzleTableModel<Charge>, N, SQL, DrizzleTableModel<CredentialTable<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 PasskeyChargeInsert, type PasskeyChargeKind, type PasskeyCredentialServices, type PasskeyEnrollmentContextServices, type PasskeyFlowInsert, type PasskeyFlowState, type PasskeyMappingSource, type PasskeyPersistenceServices, type PasskeySubjectIdCodec, passkeyCredentialsLayer, passkeyEnrollmentContextLayer, passkeyPersistenceLayer, requiredPasskeyCredentialConstraints, requiredPasskeyPersistenceConstraints };
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 * as Shared from "@yielded/auth-persistence/Adapter";
2
- import { passkeyCredentialsLayer, passkeyEnrollmentContextLayer, passkeyPersistenceLayer, requiredPasskeyCredentialConstraints, requiredPasskeyPersistenceConstraints } from "@yielded/auth-persistence/Adapter";
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, requiredPasskeyRegistrationCeremonyConstraints } from "@yielded/auth-persistence/Adapter";
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
- /** Read-only custody supplied by a separate registration issuance authority.
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 { type PasskeyRegistrationCeremonyCapabilities, type PasskeyRegistrationCeremonyServices, requiredPasskeyRegistrationCeremonyConstraints };
8
+ export type { PasskeyRegistrationCeremonyCapabilities, PasskeyRegistrationCeremonyServices };
12
9
  //# sourceMappingURL=passkey-registration-ceremony-model.d.mts.map
@@ -1,6 +1,5 @@
1
- import { coordinateTargetPasskeyManagement, coordinateTargetPasskeyRegistrationWriter, makeTargetPasskeyManagement, makeTargetPasskeyRegistrationWriter } from "./passkey-write-target.mjs";
2
- import { nativeDatabase } from "./native-database.mjs";
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, requiredPasskeyManagementConstraints, requiredPasskeyRegistrationWriteConstraints } from "@yielded/auth-persistence/Adapter";
4
- import { InferInsertModel, SQL, Table } from "drizzle-orm";
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, O extends Table, H extends Table, N> = Shared.PasskeyWriteTables<DrizzleTableModel<S>, DrizzleTableModel<C>, DrizzleTableModel<F>, DrizzleTableModel<O>, DrizzleTableModel<H>, N, SQL>;
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<InferInsertModel<T>>;
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 PasskeyCommandTable<T extends Table, N> = Shared.PasskeyCommandTable<DrizzleTableModel<T>, N>;
16
- export type PasskeyManagementMapping<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, Command extends Table, N> = Shared.PasskeyManagementMapping<DrizzleTableModel<S>, DrizzleTableModel<C>, DrizzleTableModel<F>, DrizzleTableModel<O>, DrizzleTableModel<H>, DrizzleTableModel<M>, DrizzleTableModel<Flow>, DrizzleTableModel<A>, DrizzleTableModel<Charge>, DrizzleTableModel<Command>, N, SQL>;
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 { type PasskeyCredentialInsert, type PasskeyInvalidationInput, type PasskeyManagementServices, type PasskeyRegistrationServices, type PasskeyRegistrationWriter, requiredPasskeyManagementConstraints, requiredPasskeyRegistrationWriteConstraints };
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, requiredPasskeyManagementConstraints, requiredPasskeyRegistrationWriteConstraints };
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 { InferInsertModel, SQL, Table } from \"drizzle-orm\";\n\nimport type { DrizzleTableModel } from \"./table-model\";\n\nexport {\n type PasskeyCredentialInsert,\n type PasskeyInvalidationInput,\n requiredPasskeyManagementConstraints,\n type PasskeyManagementServices,\n type PasskeyRegistrationWriter,\n type PasskeyRegistrationServices,\n requiredPasskeyRegistrationWriteConstraints,\n} from \"@yielded/auth-persistence/Adapter\";\n\nexport type PasskeyWriteTables<\n S extends Table,\n C extends Table,\n F extends Table,\n O extends Table,\n H extends Table,\n N,\n> = Shared.PasskeyWriteTables<\n DrizzleTableModel<S>,\n DrizzleTableModel<C>,\n DrizzleTableModel<F>,\n DrizzleTableModel<O>,\n DrizzleTableModel<H>,\n N,\n SQL\n>;\n\nexport type PasskeyInvalidationMutation<N> = Shared.PasskeyInvalidationMutation<N, SQL>;\n\n/** Same-owner updates for consumer session/pending tables. No external effects or callbacks after commit. */\nexport const passkeyInvalidationMutation = <T extends Table, N>(input: {\n readonly table: T;\n readonly where: (input: Shared.PasskeyInvalidationInput<N>) => SQL;\n readonly values: (input: Shared.PasskeyInvalidationInput<N>) => Partial<InferInsertModel<T>>;\n readonly postcondition: (input: Shared.PasskeyInvalidationInput<N>) => SQL;\n}): PasskeyInvalidationMutation<N> =>\n Shared.passkeyInvalidationMutation<DrizzleTableModel<T>, N, SQL>(input);\n\nexport type PasskeyCommandTable<T extends Table, N> = Shared.PasskeyCommandTable<\n DrizzleTableModel<T>,\n N\n>;\n\nexport type PasskeyManagementMapping<\n S extends Table,\n C extends Table,\n F extends Table,\n O extends Table,\n H extends Table,\n M extends Table,\n Flow extends Table,\n A extends Table,\n Charge extends Table,\n Command extends Table,\n N,\n> = Shared.PasskeyManagementMapping<\n DrizzleTableModel<S>,\n DrizzleTableModel<C>,\n DrizzleTableModel<F>,\n DrizzleTableModel<O>,\n DrizzleTableModel<H>,\n DrizzleTableModel<M>,\n DrizzleTableModel<Flow>,\n DrizzleTableModel<A>,\n DrizzleTableModel<Charge>,\n DrizzleTableModel<Command>,\n N,\n SQL\n>;\n\nexport type PasskeyRegistrationMapping<\n S extends Table,\n C extends Table,\n F extends Table,\n O extends Table,\n H extends Table,\n M extends Table,\n Flow extends Table,\n A extends Table,\n Charge extends Table,\n Intent extends Table,\n N,\n R,\n> = Shared.PasskeyRegistrationMapping<\n DrizzleTableModel<S>,\n DrizzleTableModel<C>,\n DrizzleTableModel<F>,\n DrizzleTableModel<O>,\n DrizzleTableModel<H>,\n DrizzleTableModel<M>,\n DrizzleTableModel<Flow>,\n DrizzleTableModel<A>,\n DrizzleTableModel<Charge>,\n DrizzleTableModel<Intent>,\n N,\n R,\n SQL\n>;\n"],"mappings":";;;;AAmCA,MAAa,+BAAmD,UAM9D,OAAO,4BAA0D,KAAK"}
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