@yielded/auth-persistence 0.1.0-beta.7

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 (526) hide show
  1. package/README.md +21 -0
  2. package/dist/Drizzle.d.mts +28 -0
  3. package/dist/Drizzle.mjs +28 -0
  4. package/dist/DrizzleD1.d.mts +963 -0
  5. package/dist/DrizzleD1.mjs +29 -0
  6. package/dist/DrizzleD1.mjs.map +1 -0
  7. package/dist/DrizzleLibsql.d.mts +2284 -0
  8. package/dist/DrizzleLibsql.mjs +92 -0
  9. package/dist/DrizzleLibsql.mjs.map +1 -0
  10. package/dist/DrizzleMysql2.d.mts +1820 -0
  11. package/dist/DrizzleMysql2.mjs +55 -0
  12. package/dist/DrizzleMysql2.mjs.map +1 -0
  13. package/dist/DrizzlePglite.d.mts +1826 -0
  14. package/dist/DrizzlePglite.mjs +53 -0
  15. package/dist/DrizzlePglite.mjs.map +1 -0
  16. package/dist/DrizzlePostgres.d.mts +1826 -0
  17. package/dist/DrizzlePostgres.mjs +53 -0
  18. package/dist/DrizzlePostgres.mjs.map +1 -0
  19. package/dist/DrizzleSqliteBun.d.mts +2279 -0
  20. package/dist/DrizzleSqliteBun.mjs +70 -0
  21. package/dist/DrizzleSqliteBun.mjs.map +1 -0
  22. package/dist/DrizzleSqliteDo.d.mts +2329 -0
  23. package/dist/DrizzleSqliteDo.mjs +105 -0
  24. package/dist/DrizzleSqliteDo.mjs.map +1 -0
  25. package/dist/DrizzleSqliteNode.d.mts +2279 -0
  26. package/dist/DrizzleSqliteNode.mjs +70 -0
  27. package/dist/DrizzleSqliteNode.mjs.map +1 -0
  28. package/dist/DrizzleSqliteWasm.d.mts +2282 -0
  29. package/dist/DrizzleSqliteWasm.mjs +70 -0
  30. package/dist/DrizzleSqliteWasm.mjs.map +1 -0
  31. package/dist/drizzle/D1BatchStatements.d.mts +11 -0
  32. package/dist/drizzle/D1BatchStatements.mjs +8 -0
  33. package/dist/drizzle/D1BatchStatements.mjs.map +1 -0
  34. package/dist/drizzle/PasswordPreparedPostconditions.mjs +12 -0
  35. package/dist/drizzle/PasswordPreparedPostconditions.mjs.map +1 -0
  36. package/dist/drizzle/SuppliedService.d.mts +10 -0
  37. package/dist/drizzle/d1-emails.d.mts +62 -0
  38. package/dist/drizzle/d1-emails.mjs +580 -0
  39. package/dist/drizzle/d1-emails.mjs.map +1 -0
  40. package/dist/drizzle/d1-generated-statement.d.mts +2 -0
  41. package/dist/drizzle/d1-generated-statement.mjs +79 -0
  42. package/dist/drizzle/d1-generated-statement.mjs.map +1 -0
  43. package/dist/drizzle/d1-identity.d.mts +31 -0
  44. package/dist/drizzle/d1-identity.mjs +119 -0
  45. package/dist/drizzle/d1-identity.mjs.map +1 -0
  46. package/dist/drizzle/d1-oauth.d.mts +301 -0
  47. package/dist/drizzle/d1-oauth.mjs +76 -0
  48. package/dist/drizzle/d1-oauth.mjs.map +1 -0
  49. package/dist/drizzle/d1-passkey.d.mts +51 -0
  50. package/dist/drizzle/d1-passkey.mjs +95 -0
  51. package/dist/drizzle/d1-passkey.mjs.map +1 -0
  52. package/dist/drizzle/d1-password-prepared.d.mts +25 -0
  53. package/dist/drizzle/d1-password-prepared.mjs +461 -0
  54. package/dist/drizzle/d1-password-prepared.mjs.map +1 -0
  55. package/dist/drizzle/d1-passwords.d.mts +87 -0
  56. package/dist/drizzle/d1-passwords.mjs +1004 -0
  57. package/dist/drizzle/d1-passwords.mjs.map +1 -0
  58. package/dist/drizzle/d1-phone.d.mts +26 -0
  59. package/dist/drizzle/d1-phone.mjs +30 -0
  60. package/dist/drizzle/d1-phone.mjs.map +1 -0
  61. package/dist/drizzle/d1-planning.d.mts +12 -0
  62. package/dist/drizzle/d1-planning.mjs +43 -0
  63. package/dist/drizzle/d1-planning.mjs.map +1 -0
  64. package/dist/drizzle/d1-proofs.d.mts +80 -0
  65. package/dist/drizzle/d1-proofs.mjs +830 -0
  66. package/dist/drizzle/d1-proofs.mjs.map +1 -0
  67. package/dist/drizzle/d1-sessions.d.mts +67 -0
  68. package/dist/drizzle/d1-sessions.mjs +966 -0
  69. package/dist/drizzle/d1-sessions.mjs.map +1 -0
  70. package/dist/drizzle/d1-totp.d.mts +26 -0
  71. package/dist/drizzle/d1-totp.mjs +27 -0
  72. package/dist/drizzle/d1-totp.mjs.map +1 -0
  73. package/dist/drizzle/email-model.d.mts +354 -0
  74. package/dist/drizzle/email-model.mjs +21 -0
  75. package/dist/drizzle/email-model.mjs.map +1 -0
  76. package/dist/drizzle/email-registration.d.mts +30 -0
  77. package/dist/drizzle/email-registration.mjs +238 -0
  78. package/dist/drizzle/email-registration.mjs.map +1 -0
  79. package/dist/drizzle/email-sql.d.mts +4 -0
  80. package/dist/drizzle/email-sql.mjs +9 -0
  81. package/dist/drizzle/email-sql.mjs.map +1 -0
  82. package/dist/drizzle/email-target.d.mts +20 -0
  83. package/dist/drizzle/email-target.mjs +72 -0
  84. package/dist/drizzle/email-target.mjs.map +1 -0
  85. package/dist/drizzle/model.d.mts +250 -0
  86. package/dist/drizzle/model.mjs +58 -0
  87. package/dist/drizzle/model.mjs.map +1 -0
  88. package/dist/drizzle/mysql-emails.d.mts +71 -0
  89. package/dist/drizzle/mysql-emails.mjs +38 -0
  90. package/dist/drizzle/mysql-emails.mjs.map +1 -0
  91. package/dist/drizzle/mysql-identity.d.mts +22 -0
  92. package/dist/drizzle/mysql-identity.mjs +94 -0
  93. package/dist/drizzle/mysql-identity.mjs.map +1 -0
  94. package/dist/drizzle/mysql-password-prepared.d.mts +30 -0
  95. package/dist/drizzle/mysql-password-prepared.mjs +16 -0
  96. package/dist/drizzle/mysql-password-prepared.mjs.map +1 -0
  97. package/dist/drizzle/mysql-passwords.d.mts +86 -0
  98. package/dist/drizzle/mysql-passwords.mjs +38 -0
  99. package/dist/drizzle/mysql-passwords.mjs.map +1 -0
  100. package/dist/drizzle/mysql-proofs.d.mts +75 -0
  101. package/dist/drizzle/mysql-proofs.mjs +23 -0
  102. package/dist/drizzle/mysql-proofs.mjs.map +1 -0
  103. package/dist/drizzle/mysql-sessions.d.mts +237 -0
  104. package/dist/drizzle/mysql-sessions.mjs +53 -0
  105. package/dist/drizzle/mysql-sessions.mjs.map +1 -0
  106. package/dist/drizzle/mysql.d.mts +70 -0
  107. package/dist/drizzle/mysql.mjs +218 -0
  108. package/dist/drizzle/mysql.mjs.map +1 -0
  109. package/dist/drizzle/oauth-accounts.mjs +358 -0
  110. package/dist/drizzle/oauth-accounts.mjs.map +1 -0
  111. package/dist/drizzle/oauth-connected-access.mjs +210 -0
  112. package/dist/drizzle/oauth-connected-access.mjs.map +1 -0
  113. package/dist/drizzle/oauth-connected-collection.mjs +202 -0
  114. package/dist/drizzle/oauth-connected-collection.mjs.map +1 -0
  115. package/dist/drizzle/oauth-connected-custody.mjs +146 -0
  116. package/dist/drizzle/oauth-connected-custody.mjs.map +1 -0
  117. package/dist/drizzle/oauth-connected-drivers.mjs +76 -0
  118. package/dist/drizzle/oauth-connected-drivers.mjs.map +1 -0
  119. package/dist/drizzle/oauth-connected-flow.mjs +247 -0
  120. package/dist/drizzle/oauth-connected-flow.mjs.map +1 -0
  121. package/dist/drizzle/oauth-connected-input.mjs +103 -0
  122. package/dist/drizzle/oauth-connected-input.mjs.map +1 -0
  123. package/dist/drizzle/oauth-connected-maintenance.mjs +214 -0
  124. package/dist/drizzle/oauth-connected-maintenance.mjs.map +1 -0
  125. package/dist/drizzle/oauth-connected-management.mjs +228 -0
  126. package/dist/drizzle/oauth-connected-management.mjs.map +1 -0
  127. package/dist/drizzle/oauth-connected-model.d.mts +278 -0
  128. package/dist/drizzle/oauth-connected-model.mjs +22 -0
  129. package/dist/drizzle/oauth-connected-model.mjs.map +1 -0
  130. package/dist/drizzle/oauth-connected-reference.d.mts +17 -0
  131. package/dist/drizzle/oauth-connected-reference.mjs +53 -0
  132. package/dist/drizzle/oauth-connected-reference.mjs.map +1 -0
  133. package/dist/drizzle/oauth-connected-settlement.mjs +117 -0
  134. package/dist/drizzle/oauth-connected-settlement.mjs.map +1 -0
  135. package/dist/drizzle/oauth-connected-state.d.mts +14 -0
  136. package/dist/drizzle/oauth-connected-state.mjs +422 -0
  137. package/dist/drizzle/oauth-connected-state.mjs.map +1 -0
  138. package/dist/drizzle/oauth-connected-target.d.mts +753 -0
  139. package/dist/drizzle/oauth-connected-target.mjs +91 -0
  140. package/dist/drizzle/oauth-connected-target.mjs.map +1 -0
  141. package/dist/drizzle/oauth-drivers.mjs +51 -0
  142. package/dist/drizzle/oauth-drivers.mjs.map +1 -0
  143. package/dist/drizzle/oauth-flow.d.mts +5 -0
  144. package/dist/drizzle/oauth-flow.mjs +253 -0
  145. package/dist/drizzle/oauth-flow.mjs.map +1 -0
  146. package/dist/drizzle/oauth-input.mjs +127 -0
  147. package/dist/drizzle/oauth-input.mjs.map +1 -0
  148. package/dist/drizzle/oauth-model.d.mts +463 -0
  149. package/dist/drizzle/oauth-model.mjs +49 -0
  150. package/dist/drizzle/oauth-model.mjs.map +1 -0
  151. package/dist/drizzle/oauth-mysql.mjs +8 -0
  152. package/dist/drizzle/oauth-mysql.mjs.map +1 -0
  153. package/dist/drizzle/oauth-owner.d.mts +4 -0
  154. package/dist/drizzle/oauth-owner.mjs +10 -0
  155. package/dist/drizzle/oauth-owner.mjs.map +1 -0
  156. package/dist/drizzle/oauth-registration.d.mts +6 -0
  157. package/dist/drizzle/oauth-registration.mjs +374 -0
  158. package/dist/drizzle/oauth-registration.mjs.map +1 -0
  159. package/dist/drizzle/oauth-state.mjs +107 -0
  160. package/dist/drizzle/oauth-state.mjs.map +1 -0
  161. package/dist/drizzle/oauth-target.d.mts +111 -0
  162. package/dist/drizzle/oauth-target.mjs +246 -0
  163. package/dist/drizzle/oauth-target.mjs.map +1 -0
  164. package/dist/drizzle/passkey-drivers.mjs +34 -0
  165. package/dist/drizzle/passkey-drivers.mjs.map +1 -0
  166. package/dist/drizzle/passkey-kernel.mjs +8 -0
  167. package/dist/drizzle/passkey-kernel.mjs.map +1 -0
  168. package/dist/drizzle/passkey-model.d.mts +272 -0
  169. package/dist/drizzle/passkey-model.mjs +34 -0
  170. package/dist/drizzle/passkey-model.mjs.map +1 -0
  171. package/dist/drizzle/passkey-registration-ceremony-model.d.mts +50 -0
  172. package/dist/drizzle/passkey-registration-ceremony-model.mjs +18 -0
  173. package/dist/drizzle/passkey-registration-ceremony-model.mjs.map +1 -0
  174. package/dist/drizzle/passkey-state.mjs +7 -0
  175. package/dist/drizzle/passkey-state.mjs.map +1 -0
  176. package/dist/drizzle/passkey-target.d.mts +9 -0
  177. package/dist/drizzle/passkey-target.mjs +7 -0
  178. package/dist/drizzle/passkey-target.mjs.map +1 -0
  179. package/dist/drizzle/passkey-write-drivers.mjs +32 -0
  180. package/dist/drizzle/passkey-write-drivers.mjs.map +1 -0
  181. package/dist/drizzle/passkey-write-model.d.mts +190 -0
  182. package/dist/drizzle/passkey-write-model.mjs +13 -0
  183. package/dist/drizzle/passkey-write-model.mjs.map +1 -0
  184. package/dist/drizzle/passkey-write-target.d.mts +11 -0
  185. package/dist/drizzle/passkey-write-target.mjs +7 -0
  186. package/dist/drizzle/passkey-write-target.mjs.map +1 -0
  187. package/dist/drizzle/password-model.d.mts +329 -0
  188. package/dist/drizzle/password-model.mjs +23 -0
  189. package/dist/drizzle/password-model.mjs.map +1 -0
  190. package/dist/drizzle/password-prepared-model.d.mts +94 -0
  191. package/dist/drizzle/password-prepared-model.mjs +11 -0
  192. package/dist/drizzle/password-prepared-model.mjs.map +1 -0
  193. package/dist/drizzle/password-prepared-sql.mjs +390 -0
  194. package/dist/drizzle/password-prepared-sql.mjs.map +1 -0
  195. package/dist/drizzle/password-prepared-state.mjs +104 -0
  196. package/dist/drizzle/password-prepared-state.mjs.map +1 -0
  197. package/dist/drizzle/password-prepared-target.d.mts +12 -0
  198. package/dist/drizzle/password-prepared-target.mjs +56 -0
  199. package/dist/drizzle/password-prepared-target.mjs.map +1 -0
  200. package/dist/drizzle/password-registration.d.mts +19 -0
  201. package/dist/drizzle/password-registration.mjs +135 -0
  202. package/dist/drizzle/password-registration.mjs.map +1 -0
  203. package/dist/drizzle/password-sql.d.mts +5 -0
  204. package/dist/drizzle/password-sql.mjs +9 -0
  205. package/dist/drizzle/password-sql.mjs.map +1 -0
  206. package/dist/drizzle/password-target.d.mts +17 -0
  207. package/dist/drizzle/password-target.mjs +61 -0
  208. package/dist/drizzle/password-target.mjs.map +1 -0
  209. package/dist/drizzle/pg-emails.d.mts +72 -0
  210. package/dist/drizzle/pg-emails.mjs +38 -0
  211. package/dist/drizzle/pg-emails.mjs.map +1 -0
  212. package/dist/drizzle/pg-password-prepared.d.mts +31 -0
  213. package/dist/drizzle/pg-password-prepared.mjs +16 -0
  214. package/dist/drizzle/pg-password-prepared.mjs.map +1 -0
  215. package/dist/drizzle/pg-passwords.d.mts +87 -0
  216. package/dist/drizzle/pg-passwords.mjs +38 -0
  217. package/dist/drizzle/pg-passwords.mjs.map +1 -0
  218. package/dist/drizzle/pg-proofs.d.mts +76 -0
  219. package/dist/drizzle/pg-proofs.mjs +22 -0
  220. package/dist/drizzle/pg-proofs.mjs.map +1 -0
  221. package/dist/drizzle/pg-sessions.d.mts +238 -0
  222. package/dist/drizzle/pg-sessions.mjs +53 -0
  223. package/dist/drizzle/pg-sessions.mjs.map +1 -0
  224. package/dist/drizzle/pg.d.mts +81 -0
  225. package/dist/drizzle/pg.mjs +290 -0
  226. package/dist/drizzle/pg.mjs.map +1 -0
  227. package/dist/drizzle/phone-model.d.mts +115 -0
  228. package/dist/drizzle/phone-model.mjs +39 -0
  229. package/dist/drizzle/phone-model.mjs.map +1 -0
  230. package/dist/drizzle/phone-state.mjs +16 -0
  231. package/dist/drizzle/phone-state.mjs.map +1 -0
  232. package/dist/drizzle/phone-target.d.mts +17 -0
  233. package/dist/drizzle/phone-target.mjs +170 -0
  234. package/dist/drizzle/phone-target.mjs.map +1 -0
  235. package/dist/drizzle/proof-model.d.mts +286 -0
  236. package/dist/drizzle/proof-model.mjs +17 -0
  237. package/dist/drizzle/proof-model.mjs.map +1 -0
  238. package/dist/drizzle/proof-sql.d.mts +4 -0
  239. package/dist/drizzle/proof-sql.mjs +8 -0
  240. package/dist/drizzle/proof-sql.mjs.map +1 -0
  241. package/dist/drizzle/proof-target.d.mts +12 -0
  242. package/dist/drizzle/proof-target.mjs +36 -0
  243. package/dist/drizzle/proof-target.mjs.map +1 -0
  244. package/dist/drizzle/query-operations.mjs +26 -0
  245. package/dist/drizzle/query-operations.mjs.map +1 -0
  246. package/dist/drizzle/session-model.d.mts +200 -0
  247. package/dist/drizzle/session-model.mjs +20 -0
  248. package/dist/drizzle/session-model.mjs.map +1 -0
  249. package/dist/drizzle/session-sql.mjs +8 -0
  250. package/dist/drizzle/session-sql.mjs.map +1 -0
  251. package/dist/drizzle/session-target.d.mts +28 -0
  252. package/dist/drizzle/session-target.mjs +47 -0
  253. package/dist/drizzle/session-target.mjs.map +1 -0
  254. package/dist/drizzle/sqlite-emails.mjs +45 -0
  255. package/dist/drizzle/sqlite-emails.mjs.map +1 -0
  256. package/dist/drizzle/sqlite-identity.mjs +91 -0
  257. package/dist/drizzle/sqlite-identity.mjs.map +1 -0
  258. package/dist/drizzle/sqlite-password-prepared.mjs +21 -0
  259. package/dist/drizzle/sqlite-password-prepared.mjs.map +1 -0
  260. package/dist/drizzle/sqlite-passwords.mjs +49 -0
  261. package/dist/drizzle/sqlite-passwords.mjs.map +1 -0
  262. package/dist/drizzle/sqlite-proofs.mjs +29 -0
  263. package/dist/drizzle/sqlite-proofs.mjs.map +1 -0
  264. package/dist/drizzle/sqlite-sessions.mjs +74 -0
  265. package/dist/drizzle/sqlite-sessions.mjs.map +1 -0
  266. package/dist/drizzle/sqlite.d.mts +78 -0
  267. package/dist/drizzle/sqlite.mjs +217 -0
  268. package/dist/drizzle/sqlite.mjs.map +1 -0
  269. package/dist/drizzle/standalone-guard.mjs +19 -0
  270. package/dist/drizzle/standalone-guard.mjs.map +1 -0
  271. package/dist/drizzle/step-up-model.d.mts +65 -0
  272. package/dist/drizzle/step-up-model.mjs +9 -0
  273. package/dist/drizzle/step-up-model.mjs.map +1 -0
  274. package/dist/drizzle/step-up-state.mjs +32 -0
  275. package/dist/drizzle/step-up-state.mjs.map +1 -0
  276. package/dist/drizzle/totp-model.d.mts +84 -0
  277. package/dist/drizzle/totp-model.mjs +13 -0
  278. package/dist/drizzle/totp-model.mjs.map +1 -0
  279. package/dist/drizzle/totp-state.d.mts +38 -0
  280. package/dist/drizzle/totp-state.mjs +287 -0
  281. package/dist/drizzle/totp-state.mjs.map +1 -0
  282. package/dist/drizzle/totp-target.d.mts +17 -0
  283. package/dist/drizzle/totp-target.mjs +81 -0
  284. package/dist/drizzle/totp-target.mjs.map +1 -0
  285. package/dist/drizzle/transaction-execution.d.mts +4 -0
  286. package/dist/drizzle/transaction-execution.mjs +11 -0
  287. package/dist/drizzle/transaction-execution.mjs.map +1 -0
  288. package/dist/drizzle/transaction-mysql.mjs +46 -0
  289. package/dist/drizzle/transaction-mysql.mjs.map +1 -0
  290. package/dist/drizzle/transaction-owner.d.mts +2 -0
  291. package/dist/drizzle/transaction-owner.mjs +8 -0
  292. package/dist/drizzle/transaction-owner.mjs.map +1 -0
  293. package/dist/index.d.mts +5 -0
  294. package/dist/index.mjs +5 -0
  295. package/dist/internal/configuration.d.mts +174 -0
  296. package/dist/internal/configuration.mjs +7 -0
  297. package/dist/internal/configuration.mjs.map +1 -0
  298. package/dist/internal/drizzle-migrations.mjs +19 -0
  299. package/dist/internal/drizzle-migrations.mjs.map +1 -0
  300. package/dist/internal/drizzle-postgres.mjs +39 -0
  301. package/dist/internal/drizzle-postgres.mjs.map +1 -0
  302. package/dist/internal/drizzle-sqlite.mjs +37 -0
  303. package/dist/internal/drizzle-sqlite.mjs.map +1 -0
  304. package/dist/internal/email-kernel.d.mts +13 -0
  305. package/dist/internal/email-kernel.mjs +487 -0
  306. package/dist/internal/email-kernel.mjs.map +1 -0
  307. package/dist/internal/mapping-error.d.mts +11 -0
  308. package/dist/internal/mapping-error.mjs +30 -0
  309. package/dist/internal/mapping-error.mjs.map +1 -0
  310. package/dist/internal/passkey/admission.d.mts +7 -0
  311. package/dist/internal/passkey/admission.mjs +216 -0
  312. package/dist/internal/passkey/admission.mjs.map +1 -0
  313. package/dist/internal/passkey/credentials.d.mts +6 -0
  314. package/dist/internal/passkey/credentials.mjs +249 -0
  315. package/dist/internal/passkey/credentials.mjs.map +1 -0
  316. package/dist/internal/passkey/enrollment.mjs +138 -0
  317. package/dist/internal/passkey/enrollment.mjs.map +1 -0
  318. package/dist/internal/passkey/flow.d.mts +10 -0
  319. package/dist/internal/passkey/flow.mjs +452 -0
  320. package/dist/internal/passkey/flow.mjs.map +1 -0
  321. package/dist/internal/passkey/management.mjs +231 -0
  322. package/dist/internal/passkey/management.mjs.map +1 -0
  323. package/dist/internal/passkey/registration-ceremony.d.mts +9 -0
  324. package/dist/internal/passkey/registration-ceremony.mjs +129 -0
  325. package/dist/internal/passkey/registration-ceremony.mjs.map +1 -0
  326. package/dist/internal/passkey/registration-custody.d.mts +2 -0
  327. package/dist/internal/passkey/registration-custody.mjs +52 -0
  328. package/dist/internal/passkey/registration-custody.mjs.map +1 -0
  329. package/dist/internal/passkey/registration-write.mjs +211 -0
  330. package/dist/internal/passkey/registration-write.mjs.map +1 -0
  331. package/dist/internal/passkey/state.d.mts +5 -0
  332. package/dist/internal/passkey/state.mjs +234 -0
  333. package/dist/internal/passkey/state.mjs.map +1 -0
  334. package/dist/internal/passkey/target.d.mts +19 -0
  335. package/dist/internal/passkey/target.mjs +190 -0
  336. package/dist/internal/passkey/target.mjs.map +1 -0
  337. package/dist/internal/passkey/write-state.mjs +345 -0
  338. package/dist/internal/passkey/write-state.mjs.map +1 -0
  339. package/dist/internal/passkey/write-target.mjs +192 -0
  340. package/dist/internal/passkey/write-target.mjs.map +1 -0
  341. package/dist/internal/passkey-kernel.mjs +49 -0
  342. package/dist/internal/passkey-kernel.mjs.map +1 -0
  343. package/dist/internal/passkeys.mjs +367 -0
  344. package/dist/internal/passkeys.mjs.map +1 -0
  345. package/dist/internal/password-kernel.d.mts +13 -0
  346. package/dist/internal/password-kernel.mjs +704 -0
  347. package/dist/internal/password-kernel.mjs.map +1 -0
  348. package/dist/internal/persistence.mjs +289 -0
  349. package/dist/internal/persistence.mjs.map +1 -0
  350. package/dist/internal/phone-kernel.mjs +434 -0
  351. package/dist/internal/phone-kernel.mjs.map +1 -0
  352. package/dist/internal/proof-kernel.d.mts +9 -0
  353. package/dist/internal/proof-kernel.mjs +619 -0
  354. package/dist/internal/proof-kernel.mjs.map +1 -0
  355. package/dist/internal/query-operations.d.mts +3 -0
  356. package/dist/internal/registration.mjs +65 -0
  357. package/dist/internal/registration.mjs.map +1 -0
  358. package/dist/internal/session-kernel.mjs +737 -0
  359. package/dist/internal/session-kernel.mjs.map +1 -0
  360. package/dist/internal/sql-persistence.d.mts +11 -0
  361. package/dist/internal/sql-persistence.mjs +37 -0
  362. package/dist/internal/sql-persistence.mjs.map +1 -0
  363. package/dist/internal/sql-query.mjs +207 -0
  364. package/dist/internal/sql-query.mjs.map +1 -0
  365. package/dist/internal/sql-table.d.mts +37 -0
  366. package/dist/internal/sql-table.mjs +71 -0
  367. package/dist/internal/sql-table.mjs.map +1 -0
  368. package/dist/internal/storage-mapping.mjs +687 -0
  369. package/dist/internal/storage-mapping.mjs.map +1 -0
  370. package/dist/internal/storage-tables.d.mts +914 -0
  371. package/dist/internal/storage-tables.mjs +387 -0
  372. package/dist/internal/storage-tables.mjs.map +1 -0
  373. package/dist/internal/storage-validation.mjs +58 -0
  374. package/dist/internal/storage-validation.mjs.map +1 -0
  375. package/dist/internal/transaction-execution-kernel.d.mts +18 -0
  376. package/dist/internal/transaction-execution-kernel.mjs +118 -0
  377. package/dist/internal/transaction-execution-kernel.mjs.map +1 -0
  378. package/dist/internal/transaction-kernel.d.mts +7 -0
  379. package/dist/internal/transaction-kernel.mjs +260 -0
  380. package/dist/internal/transaction-kernel.mjs.map +1 -0
  381. package/package.json +1 -0
  382. package/src/Drizzle.ts +378 -0
  383. package/src/DrizzleD1.ts +136 -0
  384. package/src/DrizzleLibsql.ts +301 -0
  385. package/src/DrizzleMysql2.ts +184 -0
  386. package/src/DrizzlePglite.ts +174 -0
  387. package/src/DrizzlePostgres.ts +174 -0
  388. package/src/DrizzleSqliteBun.ts +258 -0
  389. package/src/DrizzleSqliteDo.ts +473 -0
  390. package/src/DrizzleSqliteNode.ts +259 -0
  391. package/src/DrizzleSqliteWasm.ts +263 -0
  392. package/src/drizzle/D1BatchStatements.ts +10 -0
  393. package/src/drizzle/PasswordPreparedPostconditions.ts +30 -0
  394. package/src/drizzle/SuppliedService.ts +10 -0
  395. package/src/drizzle/d1-emails.ts +1829 -0
  396. package/src/drizzle/d1-generated-statement.ts +129 -0
  397. package/src/drizzle/d1-identity.ts +375 -0
  398. package/src/drizzle/d1-oauth.ts +340 -0
  399. package/src/drizzle/d1-passkey.ts +373 -0
  400. package/src/drizzle/d1-password-prepared.ts +1270 -0
  401. package/src/drizzle/d1-passwords.ts +2656 -0
  402. package/src/drizzle/d1-phone.ts +96 -0
  403. package/src/drizzle/d1-planning.ts +104 -0
  404. package/src/drizzle/d1-proofs.ts +2305 -0
  405. package/src/drizzle/d1-sessions.ts +2857 -0
  406. package/src/drizzle/d1-totp.ts +78 -0
  407. package/src/drizzle/email-model.ts +516 -0
  408. package/src/drizzle/email-registration.ts +698 -0
  409. package/src/drizzle/email-sql.ts +24 -0
  410. package/src/drizzle/email-target.ts +243 -0
  411. package/src/drizzle/model.ts +463 -0
  412. package/src/drizzle/mysql-emails.ts +321 -0
  413. package/src/drizzle/mysql-identity.ts +324 -0
  414. package/src/drizzle/mysql-password-prepared.ts +204 -0
  415. package/src/drizzle/mysql-passwords.ts +339 -0
  416. package/src/drizzle/mysql-proofs.ts +181 -0
  417. package/src/drizzle/mysql-sessions.ts +741 -0
  418. package/src/drizzle/mysql.ts +687 -0
  419. package/src/drizzle/oauth-accounts.ts +804 -0
  420. package/src/drizzle/oauth-connected-access.ts +354 -0
  421. package/src/drizzle/oauth-connected-collection.ts +324 -0
  422. package/src/drizzle/oauth-connected-custody.ts +277 -0
  423. package/src/drizzle/oauth-connected-drivers.ts +465 -0
  424. package/src/drizzle/oauth-connected-flow.ts +441 -0
  425. package/src/drizzle/oauth-connected-input.ts +127 -0
  426. package/src/drizzle/oauth-connected-maintenance.ts +345 -0
  427. package/src/drizzle/oauth-connected-management.ts +365 -0
  428. package/src/drizzle/oauth-connected-model.ts +347 -0
  429. package/src/drizzle/oauth-connected-reference.ts +112 -0
  430. package/src/drizzle/oauth-connected-settlement.ts +226 -0
  431. package/src/drizzle/oauth-connected-state.ts +845 -0
  432. package/src/drizzle/oauth-connected-target.ts +264 -0
  433. package/src/drizzle/oauth-drivers.ts +569 -0
  434. package/src/drizzle/oauth-flow.ts +462 -0
  435. package/src/drizzle/oauth-input.ts +201 -0
  436. package/src/drizzle/oauth-model.ts +617 -0
  437. package/src/drizzle/oauth-mysql.ts +10 -0
  438. package/src/drizzle/oauth-owner.ts +29 -0
  439. package/src/drizzle/oauth-registration.ts +640 -0
  440. package/src/drizzle/oauth-state.ts +215 -0
  441. package/src/drizzle/oauth-target.ts +750 -0
  442. package/src/drizzle/passkey-drivers.ts +385 -0
  443. package/src/drizzle/passkey-kernel.ts +3 -0
  444. package/src/drizzle/passkey-model.ts +353 -0
  445. package/src/drizzle/passkey-registration-ceremony-model.ts +69 -0
  446. package/src/drizzle/passkey-state.ts +3 -0
  447. package/src/drizzle/passkey-target.ts +23 -0
  448. package/src/drizzle/passkey-write-drivers.ts +395 -0
  449. package/src/drizzle/passkey-write-model.ts +271 -0
  450. package/src/drizzle/passkey-write-target.ts +9 -0
  451. package/src/drizzle/password-model.ts +491 -0
  452. package/src/drizzle/password-prepared-model.ts +259 -0
  453. package/src/drizzle/password-prepared-sql.ts +1191 -0
  454. package/src/drizzle/password-prepared-state.ts +231 -0
  455. package/src/drizzle/password-prepared-target.ts +160 -0
  456. package/src/drizzle/password-registration.ts +374 -0
  457. package/src/drizzle/password-sql.ts +12 -0
  458. package/src/drizzle/password-target.ts +224 -0
  459. package/src/drizzle/pg-emails.ts +321 -0
  460. package/src/drizzle/pg-password-prepared.ts +205 -0
  461. package/src/drizzle/pg-passwords.ts +338 -0
  462. package/src/drizzle/pg-proofs.ts +191 -0
  463. package/src/drizzle/pg-sessions.ts +750 -0
  464. package/src/drizzle/pg.ts +984 -0
  465. package/src/drizzle/phone-model.ts +190 -0
  466. package/src/drizzle/phone-state.ts +21 -0
  467. package/src/drizzle/phone-target.ts +472 -0
  468. package/src/drizzle/proof-model.ts +398 -0
  469. package/src/drizzle/proof-sql.ts +9 -0
  470. package/src/drizzle/proof-target.ts +122 -0
  471. package/src/drizzle/query-operations.ts +37 -0
  472. package/src/drizzle/session-model.ts +370 -0
  473. package/src/drizzle/session-sql.ts +13 -0
  474. package/src/drizzle/session-target.ts +338 -0
  475. package/src/drizzle/sqlite-emails.ts +366 -0
  476. package/src/drizzle/sqlite-identity.ts +344 -0
  477. package/src/drizzle/sqlite-password-prepared.ts +260 -0
  478. package/src/drizzle/sqlite-passwords.ts +497 -0
  479. package/src/drizzle/sqlite-proofs.ts +202 -0
  480. package/src/drizzle/sqlite-sessions.ts +971 -0
  481. package/src/drizzle/sqlite.ts +705 -0
  482. package/src/drizzle/standalone-guard.ts +38 -0
  483. package/src/drizzle/step-up-model.ts +128 -0
  484. package/src/drizzle/step-up-state.ts +139 -0
  485. package/src/drizzle/totp-model.ts +92 -0
  486. package/src/drizzle/totp-state.ts +525 -0
  487. package/src/drizzle/totp-target.ts +308 -0
  488. package/src/drizzle/transaction-execution.ts +12 -0
  489. package/src/drizzle/transaction-mysql.ts +104 -0
  490. package/src/drizzle/transaction-owner.ts +10 -0
  491. package/src/index.ts +4 -0
  492. package/src/internal/configuration.ts +282 -0
  493. package/src/internal/drizzle-migrations.ts +30 -0
  494. package/src/internal/drizzle-postgres.ts +81 -0
  495. package/src/internal/drizzle-sqlite.ts +79 -0
  496. package/src/internal/email-kernel.ts +1532 -0
  497. package/src/internal/mapping-error.ts +36 -0
  498. package/src/internal/passkey/admission.ts +362 -0
  499. package/src/internal/passkey/credentials.ts +511 -0
  500. package/src/internal/passkey/enrollment.ts +326 -0
  501. package/src/internal/passkey/flow.ts +1062 -0
  502. package/src/internal/passkey/management.ts +422 -0
  503. package/src/internal/passkey/registration-ceremony.ts +283 -0
  504. package/src/internal/passkey/registration-custody.ts +91 -0
  505. package/src/internal/passkey/registration-write.ts +426 -0
  506. package/src/internal/passkey/state.ts +354 -0
  507. package/src/internal/passkey/target.ts +586 -0
  508. package/src/internal/passkey/write-state.ts +681 -0
  509. package/src/internal/passkey/write-target.ts +452 -0
  510. package/src/internal/passkey-kernel.ts +102 -0
  511. package/src/internal/passkeys.ts +597 -0
  512. package/src/internal/password-kernel.ts +2122 -0
  513. package/src/internal/persistence.ts +590 -0
  514. package/src/internal/phone-kernel.ts +843 -0
  515. package/src/internal/proof-kernel.ts +1949 -0
  516. package/src/internal/query-operations.ts +26 -0
  517. package/src/internal/registration.ts +160 -0
  518. package/src/internal/session-kernel.ts +2210 -0
  519. package/src/internal/sql-persistence.ts +45 -0
  520. package/src/internal/sql-query.ts +298 -0
  521. package/src/internal/sql-table.ts +89 -0
  522. package/src/internal/storage-mapping.ts +706 -0
  523. package/src/internal/storage-tables.ts +408 -0
  524. package/src/internal/storage-validation.ts +117 -0
  525. package/src/internal/transaction-execution-kernel.ts +317 -0
  526. package/src/internal/transaction-kernel.ts +582 -0
@@ -0,0 +1,321 @@
1
+ import { EmailAddressPersistence, type EmailUnavailable } from "@yielded/auth/Email";
2
+ import type { LifecycleHooks, HookConfigurationError } from "@yielded/auth/Hooks";
3
+ /* oxlint-disable no-explicit-any -- proof mapping tables are independently typed by the proof owner; this driver forwards them unchanged to the shared target. */
4
+ import type { AnyRelations } from "drizzle-orm";
5
+ import type { EffectPgDatabase as PgliteDatabase } from "drizzle-orm/effect-pglite";
6
+ import type { EffectPgDatabase as PostgresDatabase } from "drizzle-orm/effect-postgres";
7
+ import type { AnyPgTable } from "drizzle-orm/pg-core";
8
+ import { Effect, Context } from "effect";
9
+ import type { SqlError } from "effect/unstable/sql/SqlError";
10
+
11
+ import type {
12
+ EmailAddressMapping,
13
+ EmailRegistrationMapping,
14
+ EmailSignInMapping,
15
+ } from "./email-model";
16
+ import type { EmailRegistrationAuthority } from "./email-registration";
17
+ import type { EmailSqlQuery } from "./email-sql";
18
+ import {
19
+ coordinateTargetEmailAddress,
20
+ coordinateTargetEmailRegistration,
21
+ makeTargetEmailAddressServices,
22
+ makeTargetEmailRegistrationServices,
23
+ makeTargetEmailSignInServices,
24
+ sqlClientEmailStandaloneGuard,
25
+ } from "./email-target";
26
+ import type { ProofPersistenceMapping } from "./proof-model";
27
+ import type { ProofSqlQuery } from "./proof-sql";
28
+ import { sqlClientProofStandaloneGuard } from "./proof-target";
29
+ import type { SuppliedService } from "./SuppliedService";
30
+
31
+ type Database = PostgresDatabase<AnyRelations> | PgliteDatabase<AnyRelations>;
32
+ type TransactionOf<D extends Database> = Parameters<Parameters<D["transaction"]>[0]>[0];
33
+ type ProofMapping = ProofPersistenceMapping<
34
+ any,
35
+ any,
36
+ any,
37
+ any,
38
+ any,
39
+ any,
40
+ any,
41
+ any,
42
+ any,
43
+ any,
44
+ any,
45
+ any
46
+ >;
47
+
48
+ const configuration = (database: Database) => ({
49
+ mode: "interactive" as const,
50
+ locking: true,
51
+ standaloneGuard: sqlClientEmailStandaloneGuard(database),
52
+ generatedSubjectRows: (query: EmailSqlQuery) => query.returning(),
53
+ proof: {
54
+ mode: "interactive" as const,
55
+ locking: true,
56
+ standaloneGuard: sqlClientProofStandaloneGuard(database),
57
+ insertIfAbsent: (query: ProofSqlQuery) => query.onConflictDoNothing(),
58
+ },
59
+ });
60
+
61
+ export const makePgEmailSignInServices = <
62
+ S extends AnyPgTable,
63
+ I extends AnyPgTable,
64
+ C extends AnyPgTable,
65
+ NativeId,
66
+ >(
67
+ database: Database,
68
+ mapping: EmailSignInMapping<S, I, C, NativeId>,
69
+ ) => makeTargetEmailSignInServices(database, mapping, configuration(database));
70
+
71
+ export const makePgEmailAddressServices = <
72
+ S extends AnyPgTable,
73
+ I extends AnyPgTable,
74
+ C extends AnyPgTable,
75
+ AC extends AnyPgTable,
76
+ M extends AnyPgTable,
77
+ NativeId,
78
+ >(
79
+ database: Database,
80
+ mapping: EmailAddressMapping<S, I, C, AC, M, NativeId>,
81
+ proofMapping: ProofMapping,
82
+ ) => makeTargetEmailAddressServices(database, mapping, proofMapping, configuration(database));
83
+
84
+ export function coordinatePgEmailAddress<
85
+ D extends Database,
86
+ S extends AnyPgTable,
87
+ I extends AnyPgTable,
88
+ C extends AnyPgTable,
89
+ AC extends AnyPgTable,
90
+ M extends AnyPgTable,
91
+ NativeId,
92
+ Out,
93
+ E,
94
+ R,
95
+ DatabaseError,
96
+ DatabaseRequirements,
97
+ >(
98
+ acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
99
+ options: {
100
+ readonly mapping: EmailAddressMapping<S, I, C, AC, M, NativeId>;
101
+ readonly proofMapping: ProofMapping;
102
+ readonly transaction?: never;
103
+ },
104
+ body: Effect.Effect<Out, E, R>,
105
+ ): Effect.Effect<
106
+ Out,
107
+ E | EmailUnavailable | HookConfigurationError | SqlError | DatabaseError,
108
+ Exclude<R, EmailAddressPersistence> | LifecycleHooks | DatabaseRequirements
109
+ >;
110
+
111
+ export function coordinatePgEmailAddress<
112
+ D extends Database,
113
+ S extends AnyPgTable,
114
+ I extends AnyPgTable,
115
+ C extends AnyPgTable,
116
+ AC extends AnyPgTable,
117
+ M extends AnyPgTable,
118
+ NativeId,
119
+ Out,
120
+ E,
121
+ R,
122
+ DatabaseError,
123
+ DatabaseRequirements,
124
+ TxId,
125
+ TxShape,
126
+ >(
127
+ acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
128
+ options: {
129
+ readonly mapping: EmailAddressMapping<S, I, C, AC, M, NativeId>;
130
+ readonly proofMapping: ProofMapping;
131
+ readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
132
+ },
133
+ body: Effect.Effect<Out, E, R>,
134
+ ): Effect.Effect<
135
+ Out,
136
+ E | EmailUnavailable | HookConfigurationError | SqlError | DatabaseError,
137
+ Exclude<R, EmailAddressPersistence | TxId> | LifecycleHooks | DatabaseRequirements
138
+ >;
139
+
140
+ export function coordinatePgEmailAddress<
141
+ D extends Database,
142
+ S extends AnyPgTable,
143
+ I extends AnyPgTable,
144
+ C extends AnyPgTable,
145
+ AC extends AnyPgTable,
146
+ M extends AnyPgTable,
147
+ NativeId,
148
+ Out,
149
+ E,
150
+ R,
151
+ DatabaseError,
152
+ DatabaseRequirements,
153
+ TxId,
154
+ TxShape,
155
+ >(
156
+ acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
157
+ options: {
158
+ readonly mapping: EmailAddressMapping<S, I, C, AC, M, NativeId>;
159
+ readonly proofMapping: ProofMapping;
160
+ readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
161
+ },
162
+ body: Effect.Effect<Out, E, R>,
163
+ ): Effect.Effect<
164
+ Out,
165
+ E | EmailUnavailable | HookConfigurationError | SqlError | DatabaseError,
166
+ Exclude<R, EmailAddressPersistence> | LifecycleHooks | DatabaseRequirements
167
+ > {
168
+ return Effect.flatMap(acquire, (database) =>
169
+ coordinateTargetEmailAddress<TransactionOf<D>, Out, E, Exclude<R, EmailAddressPersistence>>(
170
+ database,
171
+ options.mapping,
172
+ options.proofMapping,
173
+ configuration(database),
174
+ (
175
+ transaction: TransactionOf<D>,
176
+ services: { readonly emailAddressPersistence: EmailAddressPersistence["Service"] },
177
+ ) => {
178
+ const provided = Context.make(EmailAddressPersistence, services.emailAddressPersistence);
179
+ const work = Effect.provideContext(body, provided);
180
+
181
+ return options.transaction === undefined
182
+ ? work
183
+ : Effect.provideService(work, options.transaction, options.transaction.of(transaction));
184
+ },
185
+ ),
186
+ );
187
+ }
188
+
189
+ export const makePgEmailRegistrationServices = <
190
+ Registration,
191
+ S extends AnyPgTable,
192
+ I extends AnyPgTable,
193
+ C extends AnyPgTable,
194
+ AC extends AnyPgTable,
195
+ Rq extends AnyPgTable,
196
+ NativeId,
197
+ >(
198
+ database: Database,
199
+ mapping: EmailRegistrationMapping<Registration, S, I, C, AC, Rq, NativeId>,
200
+ proofMapping: ProofMapping,
201
+ ) =>
202
+ makeTargetEmailRegistrationServices<Registration>(
203
+ database,
204
+ mapping,
205
+ proofMapping,
206
+ configuration(database),
207
+ );
208
+
209
+ export function coordinatePgEmailRegistration<
210
+ TargetId,
211
+ Registration,
212
+ D extends Database,
213
+ S extends AnyPgTable,
214
+ I extends AnyPgTable,
215
+ C extends AnyPgTable,
216
+ AC extends AnyPgTable,
217
+ Rq extends AnyPgTable,
218
+ NativeId,
219
+ Out,
220
+ E,
221
+ R,
222
+ DatabaseError,
223
+ DatabaseRequirements,
224
+ >(
225
+ acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
226
+ options: {
227
+ readonly mapping: EmailRegistrationMapping<NoInfer<Registration>, S, I, C, AC, Rq, NativeId>;
228
+ readonly proofMapping: ProofMapping;
229
+ readonly target: SuppliedService<TargetId, EmailRegistrationAuthority<Registration>>;
230
+ readonly transaction?: never;
231
+ },
232
+ body: Effect.Effect<Out, E, R>,
233
+ ): Effect.Effect<
234
+ Out,
235
+ E | EmailUnavailable | HookConfigurationError | SqlError | DatabaseError,
236
+ Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements
237
+ >;
238
+
239
+ export function coordinatePgEmailRegistration<
240
+ TargetId,
241
+ Registration,
242
+ D extends Database,
243
+ S extends AnyPgTable,
244
+ I extends AnyPgTable,
245
+ C extends AnyPgTable,
246
+ AC extends AnyPgTable,
247
+ Rq extends AnyPgTable,
248
+ NativeId,
249
+ Out,
250
+ E,
251
+ R,
252
+ DatabaseError,
253
+ DatabaseRequirements,
254
+ TxId,
255
+ TxShape,
256
+ >(
257
+ acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
258
+ options: {
259
+ readonly mapping: EmailRegistrationMapping<NoInfer<Registration>, S, I, C, AC, Rq, NativeId>;
260
+ readonly proofMapping: ProofMapping;
261
+ readonly target: SuppliedService<TargetId, EmailRegistrationAuthority<Registration>>;
262
+ readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
263
+ },
264
+ body: Effect.Effect<Out, E, R>,
265
+ ): Effect.Effect<
266
+ Out,
267
+ E | EmailUnavailable | HookConfigurationError | SqlError | DatabaseError,
268
+ Exclude<R, TargetId | TxId> | LifecycleHooks | DatabaseRequirements
269
+ >;
270
+
271
+ export function coordinatePgEmailRegistration<
272
+ TargetId,
273
+ Registration,
274
+ D extends Database,
275
+ S extends AnyPgTable,
276
+ I extends AnyPgTable,
277
+ C extends AnyPgTable,
278
+ AC extends AnyPgTable,
279
+ Rq extends AnyPgTable,
280
+ NativeId,
281
+ Out,
282
+ E,
283
+ R,
284
+ DatabaseError,
285
+ DatabaseRequirements,
286
+ TxId,
287
+ TxShape,
288
+ >(
289
+ acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
290
+ options: {
291
+ readonly mapping: EmailRegistrationMapping<NoInfer<Registration>, S, I, C, AC, Rq, NativeId>;
292
+ readonly proofMapping: ProofMapping;
293
+ readonly target: SuppliedService<TargetId, EmailRegistrationAuthority<Registration>>;
294
+ readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
295
+ },
296
+ body: Effect.Effect<Out, E, R>,
297
+ ): Effect.Effect<
298
+ Out,
299
+ E | EmailUnavailable | HookConfigurationError | SqlError | DatabaseError,
300
+ Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements
301
+ > {
302
+ return Effect.flatMap(acquire, (database) =>
303
+ coordinateTargetEmailRegistration<Registration, TransactionOf<D>, Out, E, Exclude<R, TargetId>>(
304
+ database,
305
+ options.mapping,
306
+ options.proofMapping,
307
+ configuration(database),
308
+ (
309
+ transaction: TransactionOf<D>,
310
+ services: { readonly registrationAuthority: EmailRegistrationAuthority<Registration> },
311
+ ) => {
312
+ const provided = Context.make(options.target, services.registrationAuthority);
313
+ const work = Effect.provideContext(body, provided);
314
+
315
+ return options.transaction === undefined
316
+ ? work
317
+ : Effect.provideService(work, options.transaction, options.transaction.of(transaction));
318
+ },
319
+ ),
320
+ );
321
+ }
@@ -0,0 +1,205 @@
1
+ import type { LifecycleHooks, HookConfigurationError } from "@yielded/auth/Hooks";
2
+ import type { PasswordUnavailable, PasswordPreparedPersistence } from "@yielded/auth/Password";
3
+ import type { AnyRelations } from "drizzle-orm";
4
+ import type { EffectPgDatabase as PgliteDatabase } from "drizzle-orm/effect-pglite";
5
+ import type { EffectPgDatabase as PostgresDatabase } from "drizzle-orm/effect-postgres";
6
+ import type { AnyPgTable } from "drizzle-orm/pg-core";
7
+ import { Effect, Context } from "effect";
8
+ import type { SqlError } from "effect/unstable/sql/SqlError";
9
+
10
+ import type {
11
+ PasswordPreparedPersistenceMapping,
12
+ PasswordPreparedProofMapping,
13
+ } from "./password-prepared-model";
14
+ import {
15
+ makeTargetPasswordPreparedPersistenceServices,
16
+ coordinateTargetPasswordPreparedPersistence,
17
+ } from "./password-prepared-target";
18
+ import { pgPasswordConfiguration as configuration } from "./pg-passwords";
19
+ import type { SuppliedService } from "./SuppliedService";
20
+ type Database = PostgresDatabase<AnyRelations> | PgliteDatabase<AnyRelations>;
21
+ type TransactionOf<D extends Database> = Parameters<Parameters<D["transaction"]>[0]>[0];
22
+
23
+ export const makePgPasswordPreparedPersistenceServices = <
24
+ S extends AnyPgTable,
25
+ I extends AnyPgTable,
26
+ C extends AnyPgTable,
27
+ AC extends AnyPgTable,
28
+ A extends AnyPgTable,
29
+ RS extends AnyPgTable,
30
+ CE extends AnyPgTable,
31
+ M extends AnyPgTable,
32
+ T extends AnyPgTable,
33
+ B extends AnyPgTable,
34
+ NativeId,
35
+ PS extends AnyPgTable = AnyPgTable,
36
+ PC extends AnyPgTable = AnyPgTable,
37
+ PM extends AnyPgTable = AnyPgTable,
38
+ PSub extends AnyPgTable = AnyPgTable,
39
+ PI extends AnyPgTable = AnyPgTable,
40
+ PCr extends AnyPgTable = AnyPgTable,
41
+ PNativeId = unknown,
42
+ >(
43
+ database: Database,
44
+ mapping: PasswordPreparedPersistenceMapping<S, I, C, AC, A, RS, CE, M, T, B, NativeId>,
45
+ proofMapping?: PasswordPreparedProofMapping<PS, PC, PM, PSub, PI, PCr, PNativeId>,
46
+ ) =>
47
+ makeTargetPasswordPreparedPersistenceServices(
48
+ database,
49
+ mapping,
50
+ configuration(database),
51
+ proofMapping,
52
+ );
53
+
54
+ export function coordinatePgPasswordPreparedPersistence<
55
+ TargetId,
56
+ D extends Database,
57
+ S extends AnyPgTable,
58
+ I extends AnyPgTable,
59
+ C extends AnyPgTable,
60
+ AC extends AnyPgTable,
61
+ A extends AnyPgTable,
62
+ RS extends AnyPgTable,
63
+ CE extends AnyPgTable,
64
+ M extends AnyPgTable,
65
+ T extends AnyPgTable,
66
+ B extends AnyPgTable,
67
+ NativeId,
68
+ PS extends AnyPgTable,
69
+ PC extends AnyPgTable,
70
+ PM extends AnyPgTable,
71
+ PSub extends AnyPgTable,
72
+ PI extends AnyPgTable,
73
+ PCr extends AnyPgTable,
74
+ PNativeId,
75
+ Out,
76
+ E,
77
+ R,
78
+ DatabaseError,
79
+ DatabaseRequirements,
80
+ >(
81
+ acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
82
+ options: {
83
+ readonly mapping: PasswordPreparedPersistenceMapping<S, I, C, AC, A, RS, CE, M, T, B, NativeId>;
84
+ readonly proofMapping?:
85
+ | PasswordPreparedProofMapping<PS, PC, PM, PSub, PI, PCr, PNativeId>
86
+ | undefined;
87
+ readonly target: SuppliedService<TargetId, PasswordPreparedPersistence>;
88
+ readonly transaction?: never;
89
+ },
90
+ body: Effect.Effect<Out, E, R>,
91
+ ): Effect.Effect<
92
+ Out,
93
+ E | PasswordUnavailable | HookConfigurationError | SqlError | DatabaseError,
94
+ Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements
95
+ >;
96
+
97
+ export function coordinatePgPasswordPreparedPersistence<
98
+ TargetId,
99
+ D extends Database,
100
+ S extends AnyPgTable,
101
+ I extends AnyPgTable,
102
+ C extends AnyPgTable,
103
+ AC extends AnyPgTable,
104
+ A extends AnyPgTable,
105
+ RS extends AnyPgTable,
106
+ CE extends AnyPgTable,
107
+ M extends AnyPgTable,
108
+ T extends AnyPgTable,
109
+ B extends AnyPgTable,
110
+ NativeId,
111
+ PS extends AnyPgTable,
112
+ PC extends AnyPgTable,
113
+ PM extends AnyPgTable,
114
+ PSub extends AnyPgTable,
115
+ PI extends AnyPgTable,
116
+ PCr extends AnyPgTable,
117
+ PNativeId,
118
+ Out,
119
+ E,
120
+ R,
121
+ DatabaseError,
122
+ DatabaseRequirements,
123
+ TxId,
124
+ TxShape,
125
+ >(
126
+ acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
127
+ options: {
128
+ readonly mapping: PasswordPreparedPersistenceMapping<S, I, C, AC, A, RS, CE, M, T, B, NativeId>;
129
+ readonly proofMapping?:
130
+ | PasswordPreparedProofMapping<PS, PC, PM, PSub, PI, PCr, PNativeId>
131
+ | undefined;
132
+ readonly target: SuppliedService<TargetId, PasswordPreparedPersistence>;
133
+ readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
134
+ },
135
+ body: Effect.Effect<Out, E, R>,
136
+ ): Effect.Effect<
137
+ Out,
138
+ E | PasswordUnavailable | HookConfigurationError | SqlError | DatabaseError,
139
+ Exclude<R, TargetId | TxId> | LifecycleHooks | DatabaseRequirements
140
+ >;
141
+
142
+ export function coordinatePgPasswordPreparedPersistence<
143
+ TargetId,
144
+ D extends Database,
145
+ S extends AnyPgTable,
146
+ I extends AnyPgTable,
147
+ C extends AnyPgTable,
148
+ AC extends AnyPgTable,
149
+ A extends AnyPgTable,
150
+ RS extends AnyPgTable,
151
+ CE extends AnyPgTable,
152
+ M extends AnyPgTable,
153
+ T extends AnyPgTable,
154
+ B extends AnyPgTable,
155
+ NativeId,
156
+ PS extends AnyPgTable,
157
+ PC extends AnyPgTable,
158
+ PM extends AnyPgTable,
159
+ PSub extends AnyPgTable,
160
+ PI extends AnyPgTable,
161
+ PCr extends AnyPgTable,
162
+ PNativeId,
163
+ Out,
164
+ E,
165
+ R,
166
+ DatabaseError,
167
+ DatabaseRequirements,
168
+ TxId,
169
+ TxShape,
170
+ >(
171
+ acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
172
+ options: {
173
+ readonly mapping: PasswordPreparedPersistenceMapping<S, I, C, AC, A, RS, CE, M, T, B, NativeId>;
174
+ readonly proofMapping?:
175
+ | PasswordPreparedProofMapping<PS, PC, PM, PSub, PI, PCr, PNativeId>
176
+ | undefined;
177
+ readonly target: SuppliedService<TargetId, PasswordPreparedPersistence>;
178
+ readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
179
+ },
180
+ body: Effect.Effect<Out, E, R>,
181
+ ): Effect.Effect<
182
+ Out,
183
+ E | PasswordUnavailable | HookConfigurationError | SqlError | DatabaseError,
184
+ Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements
185
+ > {
186
+ return Effect.flatMap(acquire, (database) =>
187
+ coordinateTargetPasswordPreparedPersistence<TransactionOf<D>, Out, E, Exclude<R, TargetId>>(
188
+ database,
189
+ options.mapping,
190
+ configuration(database),
191
+ options.proofMapping,
192
+ (
193
+ transaction: TransactionOf<D>,
194
+ services: { readonly passwordPreparedPersistence: PasswordPreparedPersistence },
195
+ ) => {
196
+ const provided = Context.make(options.target, services.passwordPreparedPersistence);
197
+ const work = Effect.provideContext(body, provided);
198
+
199
+ return options.transaction === undefined
200
+ ? work
201
+ : Effect.provideService(work, options.transaction, options.transaction.of(transaction));
202
+ },
203
+ ),
204
+ );
205
+ }