@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,497 @@
1
+ import type { LifecycleHooks, HookConfigurationError } from "@yielded/auth/Hooks";
2
+ import { type PasswordUnavailable, PasswordPersistence } from "@yielded/auth/Password";
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 { EffectLibsqlDatabase } from "drizzle-orm/effect-libsql";
6
+ import type { EffectSQLiteBunDatabase } from "drizzle-orm/effect-sqlite-bun";
7
+ import type { EffectSQLiteDoDatabase as DODatabase } from "drizzle-orm/effect-sqlite-do";
8
+ import type { EffectSQLiteNodeDatabase as NodeDatabase } from "drizzle-orm/effect-sqlite-node";
9
+ import type { EffectSQLiteWasmDatabase as WasmDatabase } from "drizzle-orm/effect-sqlite-wasm";
10
+ import type { AnySQLiteTable } from "drizzle-orm/sqlite-core";
11
+ import { Effect, Context } from "effect";
12
+ import type { SqlError } from "effect/unstable/sql/SqlError";
13
+
14
+ import type { PasswordPersistenceMapping, PasswordRegistrationMapping } from "./password-model";
15
+ import type { PasswordRegistrationAuthority } from "./password-registration";
16
+ import type { PasswordSqlQuery } from "./password-sql";
17
+ import {
18
+ coordinateTargetPasswordPersistence,
19
+ coordinateTargetPasswordRegistration,
20
+ makeTargetPasswordPersistenceServices,
21
+ makeTargetPasswordRegistrationServices,
22
+ type PasswordTargetConfiguration,
23
+ } from "./password-target";
24
+ import type { ProofPersistenceMapping } from "./proof-model";
25
+ import type { ProofSqlQuery } from "./proof-sql";
26
+ import type { SuppliedService } from "./SuppliedService";
27
+
28
+ export type SqlitePasswordDatabase =
29
+ | NodeDatabase<AnyRelations>
30
+ | EffectSQLiteBunDatabase<AnyRelations>
31
+ | EffectLibsqlDatabase<AnyRelations>
32
+ | WasmDatabase<AnyRelations>
33
+ | DODatabase<AnyRelations>;
34
+
35
+ type TransactionOf<D extends SqlitePasswordDatabase> = Parameters<
36
+ Parameters<D["transaction"]>[0]
37
+ >[0];
38
+
39
+ export const sqlitePasswordConfiguration = (
40
+ mode: "interactive" | "synchronous",
41
+ standaloneGuard: PasswordTargetConfiguration["standaloneGuard"],
42
+ proofStandaloneGuard: PasswordTargetConfiguration["proof"]["standaloneGuard"],
43
+ coordinatorGuard?: PasswordTargetConfiguration["coordinatorGuard"],
44
+ ): PasswordTargetConfiguration => ({
45
+ mode,
46
+ locking: false,
47
+ standaloneGuard,
48
+ ...(coordinatorGuard === undefined ? {} : { coordinatorGuard }),
49
+ insertIfAbsent: (query: PasswordSqlQuery) => query.onConflictDoNothing(),
50
+ generatedSubjectRows: (query: PasswordSqlQuery) => query.returning(),
51
+ proof: {
52
+ mode,
53
+ locking: false,
54
+ standaloneGuard: proofStandaloneGuard,
55
+ insertIfAbsent: (query: ProofSqlQuery) => query.onConflictDoNothing(),
56
+ },
57
+ });
58
+
59
+ type Mapping<
60
+ S extends AnySQLiteTable,
61
+ I extends AnySQLiteTable,
62
+ C extends AnySQLiteTable,
63
+ AC extends AnySQLiteTable,
64
+ A extends AnySQLiteTable,
65
+ RS extends AnySQLiteTable,
66
+ CE extends AnySQLiteTable,
67
+ M extends AnySQLiteTable,
68
+ NativeId,
69
+ > = PasswordPersistenceMapping<S, I, C, AC, A, RS, CE, M, NativeId>;
70
+
71
+ export const makeSqlitePasswordPersistenceServices = <
72
+ S extends AnySQLiteTable,
73
+ I extends AnySQLiteTable,
74
+ C extends AnySQLiteTable,
75
+ AC extends AnySQLiteTable,
76
+ A extends AnySQLiteTable,
77
+ RS extends AnySQLiteTable,
78
+ CE extends AnySQLiteTable,
79
+ M extends AnySQLiteTable,
80
+ NativeId,
81
+ >(
82
+ database: SqlitePasswordDatabase,
83
+ mapping: Mapping<S, I, C, AC, A, RS, CE, M, NativeId>,
84
+ configuration: PasswordTargetConfiguration,
85
+ proofMapping?: ProofPersistenceMapping<
86
+ any,
87
+ any,
88
+ any,
89
+ any,
90
+ any,
91
+ any,
92
+ any,
93
+ any,
94
+ any,
95
+ any,
96
+ any,
97
+ any
98
+ >,
99
+ ) => makeTargetPasswordPersistenceServices(database, mapping, configuration, proofMapping);
100
+
101
+ export const coordinateSqlitePasswordPersistence = <
102
+ D extends SqlitePasswordDatabase,
103
+ S extends AnySQLiteTable,
104
+ I extends AnySQLiteTable,
105
+ C extends AnySQLiteTable,
106
+ AC extends AnySQLiteTable,
107
+ A extends AnySQLiteTable,
108
+ RS extends AnySQLiteTable,
109
+ CE extends AnySQLiteTable,
110
+ M extends AnySQLiteTable,
111
+ NativeId,
112
+ PM extends
113
+ | ProofPersistenceMapping<any, any, any, any, any, any, any, any, any, any, any, any>
114
+ | undefined,
115
+ Out,
116
+ E,
117
+ R,
118
+ >(
119
+ database: D,
120
+ mapping: Mapping<S, I, C, AC, A, RS, CE, M, NativeId>,
121
+ configuration: PasswordTargetConfiguration,
122
+ proofMapping: PM,
123
+ owner: (
124
+ transaction: TransactionOf<D>,
125
+ services: { readonly passwordPersistence: PasswordPersistence["Service"] },
126
+ ) => Effect.Effect<Out, E, R>,
127
+ ) =>
128
+ coordinateTargetPasswordPersistence<TransactionOf<D>, Out, E, R>(
129
+ database,
130
+ mapping,
131
+ configuration,
132
+ proofMapping,
133
+ owner,
134
+ );
135
+
136
+ export const makeSqlitePasswordRegistrationServices = <
137
+ Registration,
138
+ S extends AnySQLiteTable,
139
+ I extends AnySQLiteTable,
140
+ C extends AnySQLiteTable,
141
+ AC extends AnySQLiteTable,
142
+ Rq extends AnySQLiteTable,
143
+ NativeId,
144
+ >(
145
+ database: SqlitePasswordDatabase,
146
+ mapping: PasswordRegistrationMapping<Registration, S, I, C, AC, Rq, NativeId>,
147
+ configuration: PasswordTargetConfiguration,
148
+ ) => makeTargetPasswordRegistrationServices<Registration>(database, mapping, configuration);
149
+
150
+ export const coordinateSqlitePasswordRegistration = <
151
+ Registration,
152
+ D extends SqlitePasswordDatabase,
153
+ S extends AnySQLiteTable,
154
+ I extends AnySQLiteTable,
155
+ C extends AnySQLiteTable,
156
+ AC extends AnySQLiteTable,
157
+ Rq extends AnySQLiteTable,
158
+ NativeId,
159
+ Out,
160
+ E,
161
+ R,
162
+ >(
163
+ database: D,
164
+ mapping: PasswordRegistrationMapping<Registration, S, I, C, AC, Rq, NativeId>,
165
+ configuration: PasswordTargetConfiguration,
166
+ owner: (
167
+ transaction: TransactionOf<D>,
168
+ services: { readonly registrationAuthority: PasswordRegistrationAuthority<Registration> },
169
+ ) => Effect.Effect<Out, E, R>,
170
+ ) =>
171
+ coordinateTargetPasswordRegistration<Registration, TransactionOf<D>, Out, E, R>(
172
+ database,
173
+ mapping,
174
+ configuration,
175
+ owner,
176
+ );
177
+
178
+ export const makeSqlitePasswordTarget = <
179
+ D extends SqlitePasswordDatabase,
180
+ Synchronous extends boolean = false,
181
+ >(
182
+ configuration: PasswordTargetConfiguration | ((database: D) => PasswordTargetConfiguration),
183
+ ) => {
184
+ const configurationFor = (database: D) =>
185
+ typeof configuration === "function" ? configuration(database) : configuration;
186
+
187
+ function coordinatePasswordPersistence<
188
+ Database extends D,
189
+ S extends AnySQLiteTable,
190
+ I extends AnySQLiteTable,
191
+ C extends AnySQLiteTable,
192
+ AC extends AnySQLiteTable,
193
+ A extends AnySQLiteTable,
194
+ RS extends AnySQLiteTable,
195
+ CE extends AnySQLiteTable,
196
+ M extends AnySQLiteTable,
197
+ NativeId,
198
+ PM extends
199
+ | ProofPersistenceMapping<any, any, any, any, any, any, any, any, any, any, any, any>
200
+ | undefined,
201
+ Out,
202
+ E,
203
+ R,
204
+ DatabaseError,
205
+ DatabaseRequirements,
206
+ >(
207
+ acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,
208
+ options: {
209
+ readonly mapping: Mapping<S, I, C, AC, A, RS, CE, M, NativeId>;
210
+ readonly proofMapping?: PM;
211
+ readonly transaction?: never;
212
+ },
213
+ body: Effect.Effect<Out, E, Synchronous extends true ? NoInfer<PasswordPersistence> : R>,
214
+ ): Effect.Effect<
215
+ Out,
216
+ E | PasswordUnavailable | HookConfigurationError | SqlError | DatabaseError,
217
+ | (Synchronous extends true ? never : Exclude<R, PasswordPersistence>)
218
+ | LifecycleHooks
219
+ | DatabaseRequirements
220
+ >;
221
+ function coordinatePasswordPersistence<
222
+ Database extends D,
223
+ S extends AnySQLiteTable,
224
+ I extends AnySQLiteTable,
225
+ C extends AnySQLiteTable,
226
+ AC extends AnySQLiteTable,
227
+ A extends AnySQLiteTable,
228
+ RS extends AnySQLiteTable,
229
+ CE extends AnySQLiteTable,
230
+ M extends AnySQLiteTable,
231
+ NativeId,
232
+ PM extends
233
+ | ProofPersistenceMapping<any, any, any, any, any, any, any, any, any, any, any, any>
234
+ | undefined,
235
+ Out,
236
+ E,
237
+ R,
238
+ DatabaseError,
239
+ DatabaseRequirements,
240
+ TxId,
241
+ TxShape,
242
+ >(
243
+ acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,
244
+ options: {
245
+ readonly mapping: Mapping<S, I, C, AC, A, RS, CE, M, NativeId>;
246
+ readonly proofMapping?: PM;
247
+ readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;
248
+ },
249
+ body: Effect.Effect<Out, E, Synchronous extends true ? NoInfer<PasswordPersistence | TxId> : R>,
250
+ ): Effect.Effect<
251
+ Out,
252
+ E | PasswordUnavailable | HookConfigurationError | SqlError | DatabaseError,
253
+ | (Synchronous extends true ? never : Exclude<R, PasswordPersistence | TxId>)
254
+ | LifecycleHooks
255
+ | DatabaseRequirements
256
+ >;
257
+ function coordinatePasswordPersistence<
258
+ Database extends D,
259
+ S extends AnySQLiteTable,
260
+ I extends AnySQLiteTable,
261
+ C extends AnySQLiteTable,
262
+ AC extends AnySQLiteTable,
263
+ A extends AnySQLiteTable,
264
+ RS extends AnySQLiteTable,
265
+ CE extends AnySQLiteTable,
266
+ M extends AnySQLiteTable,
267
+ NativeId,
268
+ PM extends
269
+ | ProofPersistenceMapping<any, any, any, any, any, any, any, any, any, any, any, any>
270
+ | undefined,
271
+ Out,
272
+ E,
273
+ R,
274
+ DatabaseError,
275
+ DatabaseRequirements,
276
+ TxId,
277
+ TxShape,
278
+ >(
279
+ acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,
280
+ options: {
281
+ readonly mapping: Mapping<S, I, C, AC, A, RS, CE, M, NativeId>;
282
+ readonly proofMapping?: PM;
283
+ readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;
284
+ },
285
+ body: Effect.Effect<Out, E, R>,
286
+ ): Effect.Effect<
287
+ Out,
288
+ E | PasswordUnavailable | HookConfigurationError | SqlError | DatabaseError,
289
+ Exclude<R, PasswordPersistence> | LifecycleHooks | DatabaseRequirements
290
+ > {
291
+ return Effect.flatMap(acquire, (database) =>
292
+ coordinateSqlitePasswordPersistence(
293
+ database,
294
+ options.mapping,
295
+ configurationFor(database),
296
+ options.proofMapping,
297
+ (
298
+ transaction: TransactionOf<Database>,
299
+ services: { readonly passwordPersistence: PasswordPersistence["Service"] },
300
+ ) => {
301
+ const provided = Context.make(PasswordPersistence, services.passwordPersistence);
302
+ const work = Effect.provideContext(body, provided);
303
+
304
+ return options.transaction === undefined
305
+ ? work
306
+ : Effect.provideService(work, options.transaction, options.transaction.of(transaction));
307
+ },
308
+ ),
309
+ );
310
+ }
311
+ function coordinatePasswordRegistration<
312
+ Database extends D,
313
+ TargetId,
314
+ Registration,
315
+ S extends AnySQLiteTable,
316
+ I extends AnySQLiteTable,
317
+ C extends AnySQLiteTable,
318
+ AC extends AnySQLiteTable,
319
+ Rq extends AnySQLiteTable,
320
+ NativeId,
321
+ Out,
322
+ E,
323
+ R,
324
+ DatabaseError,
325
+ DatabaseRequirements,
326
+ >(
327
+ acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,
328
+ options: {
329
+ readonly mapping: PasswordRegistrationMapping<
330
+ NoInfer<Registration>,
331
+ S,
332
+ I,
333
+ C,
334
+ AC,
335
+ Rq,
336
+ NativeId
337
+ >;
338
+ readonly target: SuppliedService<TargetId, PasswordRegistrationAuthority<Registration>>;
339
+ readonly transaction?: never;
340
+ },
341
+ body: Effect.Effect<Out, E, Synchronous extends true ? NoInfer<TargetId> : R>,
342
+ ): Effect.Effect<
343
+ Out,
344
+ E | PasswordUnavailable | HookConfigurationError | SqlError | DatabaseError,
345
+ | (Synchronous extends true ? never : Exclude<R, TargetId>)
346
+ | LifecycleHooks
347
+ | DatabaseRequirements
348
+ >;
349
+ function coordinatePasswordRegistration<
350
+ Database extends D,
351
+ TargetId,
352
+ Registration,
353
+ S extends AnySQLiteTable,
354
+ I extends AnySQLiteTable,
355
+ C extends AnySQLiteTable,
356
+ AC extends AnySQLiteTable,
357
+ Rq extends AnySQLiteTable,
358
+ NativeId,
359
+ Out,
360
+ E,
361
+ R,
362
+ DatabaseError,
363
+ DatabaseRequirements,
364
+ TxId,
365
+ TxShape,
366
+ >(
367
+ acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,
368
+ options: {
369
+ readonly mapping: PasswordRegistrationMapping<
370
+ NoInfer<Registration>,
371
+ S,
372
+ I,
373
+ C,
374
+ AC,
375
+ Rq,
376
+ NativeId
377
+ >;
378
+ readonly target: SuppliedService<TargetId, PasswordRegistrationAuthority<Registration>>;
379
+ readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;
380
+ },
381
+ body: Effect.Effect<Out, E, Synchronous extends true ? NoInfer<TargetId | TxId> : R>,
382
+ ): Effect.Effect<
383
+ Out,
384
+ E | PasswordUnavailable | HookConfigurationError | SqlError | DatabaseError,
385
+ | (Synchronous extends true ? never : Exclude<R, TargetId | TxId>)
386
+ | LifecycleHooks
387
+ | DatabaseRequirements
388
+ >;
389
+ function coordinatePasswordRegistration<
390
+ Database extends D,
391
+ TargetId,
392
+ Registration,
393
+ S extends AnySQLiteTable,
394
+ I extends AnySQLiteTable,
395
+ C extends AnySQLiteTable,
396
+ AC extends AnySQLiteTable,
397
+ Rq extends AnySQLiteTable,
398
+ NativeId,
399
+ Out,
400
+ E,
401
+ R,
402
+ DatabaseError,
403
+ DatabaseRequirements,
404
+ TxId,
405
+ TxShape,
406
+ >(
407
+ acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,
408
+ options: {
409
+ readonly mapping: PasswordRegistrationMapping<
410
+ NoInfer<Registration>,
411
+ S,
412
+ I,
413
+ C,
414
+ AC,
415
+ Rq,
416
+ NativeId
417
+ >;
418
+ readonly target: SuppliedService<TargetId, PasswordRegistrationAuthority<Registration>>;
419
+ readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;
420
+ },
421
+ body: Effect.Effect<Out, E, R>,
422
+ ): Effect.Effect<
423
+ Out,
424
+ E | PasswordUnavailable | HookConfigurationError | SqlError | DatabaseError,
425
+ Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements
426
+ > {
427
+ return Effect.flatMap(acquire, (database) =>
428
+ coordinateSqlitePasswordRegistration(
429
+ database,
430
+ options.mapping,
431
+ configurationFor(database),
432
+ (
433
+ transaction: TransactionOf<Database>,
434
+ services: { readonly registrationAuthority: PasswordRegistrationAuthority<Registration> },
435
+ ) => {
436
+ const provided = Context.make(options.target, services.registrationAuthority);
437
+ const work = Effect.provideContext(body, provided);
438
+
439
+ return options.transaction === undefined
440
+ ? work
441
+ : Effect.provideService(work, options.transaction, options.transaction.of(transaction));
442
+ },
443
+ ),
444
+ );
445
+ }
446
+
447
+ return {
448
+ makePasswordPersistenceServices: <
449
+ S extends AnySQLiteTable,
450
+ I extends AnySQLiteTable,
451
+ C extends AnySQLiteTable,
452
+ AC extends AnySQLiteTable,
453
+ A extends AnySQLiteTable,
454
+ RS extends AnySQLiteTable,
455
+ CE extends AnySQLiteTable,
456
+ M extends AnySQLiteTable,
457
+ NativeId,
458
+ >(
459
+ database: D,
460
+ mapping: Mapping<S, I, C, AC, A, RS, CE, M, NativeId>,
461
+ proofMapping?: ProofPersistenceMapping<
462
+ any,
463
+ any,
464
+ any,
465
+ any,
466
+ any,
467
+ any,
468
+ any,
469
+ any,
470
+ any,
471
+ any,
472
+ any,
473
+ any
474
+ >,
475
+ ) =>
476
+ makeSqlitePasswordPersistenceServices(
477
+ database,
478
+ mapping,
479
+ configurationFor(database),
480
+ proofMapping,
481
+ ),
482
+ coordinatePasswordPersistence,
483
+ makePasswordRegistrationServices: <
484
+ Registration,
485
+ S extends AnySQLiteTable,
486
+ I extends AnySQLiteTable,
487
+ C extends AnySQLiteTable,
488
+ AC extends AnySQLiteTable,
489
+ Rq extends AnySQLiteTable,
490
+ NativeId,
491
+ >(
492
+ database: D,
493
+ mapping: PasswordRegistrationMapping<Registration, S, I, C, AC, Rq, NativeId>,
494
+ ) => makeSqlitePasswordRegistrationServices(database, mapping, configurationFor(database)),
495
+ coordinatePasswordRegistration,
496
+ };
497
+ };
@@ -0,0 +1,202 @@
1
+ import type { LifecycleHooks, HookConfigurationError } from "@yielded/auth/Hooks";
2
+ import { type ProofUnavailable, ProofPersistence } from "@yielded/auth/Proofs";
3
+ import type { AnyRelations } from "drizzle-orm";
4
+ import type { EffectLibsqlDatabase } from "drizzle-orm/effect-libsql";
5
+ import type { EffectSQLiteBunDatabase } from "drizzle-orm/effect-sqlite-bun";
6
+ import type { EffectSQLiteDoDatabase } from "drizzle-orm/effect-sqlite-do";
7
+ import type { EffectSQLiteNodeDatabase } from "drizzle-orm/effect-sqlite-node";
8
+ import type { EffectSQLiteWasmDatabase } from "drizzle-orm/effect-sqlite-wasm";
9
+ import type { AnySQLiteTable } from "drizzle-orm/sqlite-core";
10
+ import { Effect, Context } from "effect";
11
+ import type { SqlError } from "effect/unstable/sql/SqlError";
12
+
13
+ import type { ProofPersistenceMapping } from "./proof-model";
14
+ import {
15
+ coordinateTargetProofPersistence,
16
+ makeTargetProofPersistenceServices,
17
+ type ProofTargetConfiguration,
18
+ } from "./proof-target";
19
+ import type { SuppliedService } from "./SuppliedService";
20
+
21
+ type Database =
22
+ | EffectLibsqlDatabase<AnyRelations>
23
+ | EffectSQLiteBunDatabase<AnyRelations>
24
+ | EffectSQLiteDoDatabase<AnyRelations>
25
+ | EffectSQLiteNodeDatabase<AnyRelations>
26
+ | EffectSQLiteWasmDatabase<AnyRelations>;
27
+ type TransactionOf<D extends Database> = Parameters<Parameters<D["transaction"]>[0]>[0];
28
+ type Mapping<
29
+ Rq extends AnySQLiteTable,
30
+ S extends AnySQLiteTable,
31
+ G extends AnySQLiteTable,
32
+ Cn extends AnySQLiteTable,
33
+ Rs extends AnySQLiteTable,
34
+ A extends AnySQLiteTable,
35
+ F extends AnySQLiteTable,
36
+ C extends AnySQLiteTable,
37
+ Sub extends AnySQLiteTable,
38
+ I extends AnySQLiteTable,
39
+ Cr extends AnySQLiteTable,
40
+ NativeId,
41
+ > = ProofPersistenceMapping<Rq, S, G, Cn, Rs, A, F, C, Sub, I, Cr, NativeId>;
42
+
43
+ export const sqliteProofConfiguration = (
44
+ mode: "interactive" | "synchronous",
45
+ standaloneGuard: Effect.Effect<void, ProofUnavailable>,
46
+ coordinatorGuard?: Effect.Effect<void, ProofUnavailable>,
47
+ ): ProofTargetConfiguration => ({
48
+ mode,
49
+ locking: false,
50
+ standaloneGuard,
51
+ insertIfAbsent: (query) => query.onConflictDoNothing(),
52
+ ...(coordinatorGuard === undefined ? {} : { coordinatorGuard }),
53
+ });
54
+
55
+ export const makeSqliteProofTarget = <D extends Database, Synchronous extends boolean = false>(
56
+ configuration: ProofTargetConfiguration | ((database: D) => ProofTargetConfiguration),
57
+ ) => {
58
+ const configurationFor = (database: D) =>
59
+ typeof configuration === "function" ? configuration(database) : configuration;
60
+
61
+ function coordinateProofPersistence<
62
+ Database extends D,
63
+ Rq extends AnySQLiteTable,
64
+ S extends AnySQLiteTable,
65
+ G extends AnySQLiteTable,
66
+ Cn extends AnySQLiteTable,
67
+ Rs extends AnySQLiteTable,
68
+ Aev extends AnySQLiteTable,
69
+ F extends AnySQLiteTable,
70
+ C extends AnySQLiteTable,
71
+ Sub extends AnySQLiteTable,
72
+ I extends AnySQLiteTable,
73
+ Cr extends AnySQLiteTable,
74
+ NativeId,
75
+ A,
76
+ E,
77
+ R,
78
+ DatabaseError,
79
+ DatabaseRequirements,
80
+ >(
81
+ acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,
82
+ options: {
83
+ readonly mapping: Mapping<Rq, S, G, Cn, Rs, Aev, F, C, Sub, I, Cr, NativeId>;
84
+ readonly transaction?: never;
85
+ },
86
+ body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<ProofPersistence> : R>,
87
+ ): Effect.Effect<
88
+ A,
89
+ E | ProofUnavailable | HookConfigurationError | SqlError | DatabaseError,
90
+ | (Synchronous extends true ? never : Exclude<R, ProofPersistence>)
91
+ | LifecycleHooks
92
+ | DatabaseRequirements
93
+ >;
94
+ function coordinateProofPersistence<
95
+ Database extends D,
96
+ Rq extends AnySQLiteTable,
97
+ S extends AnySQLiteTable,
98
+ G extends AnySQLiteTable,
99
+ Cn extends AnySQLiteTable,
100
+ Rs extends AnySQLiteTable,
101
+ Aev extends AnySQLiteTable,
102
+ F extends AnySQLiteTable,
103
+ C extends AnySQLiteTable,
104
+ Sub extends AnySQLiteTable,
105
+ I extends AnySQLiteTable,
106
+ Cr extends AnySQLiteTable,
107
+ NativeId,
108
+ A,
109
+ E,
110
+ R,
111
+ DatabaseError,
112
+ DatabaseRequirements,
113
+ TxId,
114
+ TxShape,
115
+ >(
116
+ acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,
117
+ options: {
118
+ readonly mapping: Mapping<Rq, S, G, Cn, Rs, Aev, F, C, Sub, I, Cr, NativeId>;
119
+ readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;
120
+ },
121
+ body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<ProofPersistence | TxId> : R>,
122
+ ): Effect.Effect<
123
+ A,
124
+ E | ProofUnavailable | HookConfigurationError | SqlError | DatabaseError,
125
+ | (Synchronous extends true ? never : Exclude<R, ProofPersistence | TxId>)
126
+ | LifecycleHooks
127
+ | DatabaseRequirements
128
+ >;
129
+ function coordinateProofPersistence<
130
+ Database extends D,
131
+ Rq extends AnySQLiteTable,
132
+ S extends AnySQLiteTable,
133
+ G extends AnySQLiteTable,
134
+ Cn extends AnySQLiteTable,
135
+ Rs extends AnySQLiteTable,
136
+ Aev extends AnySQLiteTable,
137
+ F extends AnySQLiteTable,
138
+ C extends AnySQLiteTable,
139
+ Sub extends AnySQLiteTable,
140
+ I extends AnySQLiteTable,
141
+ Cr extends AnySQLiteTable,
142
+ NativeId,
143
+ A,
144
+ E,
145
+ R,
146
+ DatabaseError,
147
+ DatabaseRequirements,
148
+ TxId,
149
+ TxShape,
150
+ >(
151
+ acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,
152
+ options: {
153
+ readonly mapping: Mapping<Rq, S, G, Cn, Rs, Aev, F, C, Sub, I, Cr, NativeId>;
154
+ readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;
155
+ },
156
+ body: Effect.Effect<A, E, R>,
157
+ ): Effect.Effect<
158
+ A,
159
+ E | ProofUnavailable | HookConfigurationError | SqlError | DatabaseError,
160
+ Exclude<R, ProofPersistence> | LifecycleHooks | DatabaseRequirements
161
+ > {
162
+ return Effect.flatMap(acquire, (database) =>
163
+ coordinateTargetProofPersistence<TransactionOf<Database>, A, E, Exclude<R, ProofPersistence>>(
164
+ database,
165
+ options.mapping,
166
+ configurationFor(database),
167
+ (
168
+ transaction: TransactionOf<Database>,
169
+ services: { readonly proofPersistence: ProofPersistence["Service"] },
170
+ ) => {
171
+ const provided = Context.make(ProofPersistence, services.proofPersistence);
172
+ const work = Effect.provideContext(body, provided);
173
+
174
+ return options.transaction === undefined
175
+ ? work
176
+ : Effect.provideService(work, options.transaction, options.transaction.of(transaction));
177
+ },
178
+ ),
179
+ );
180
+ }
181
+
182
+ return {
183
+ makeProofPersistenceServices: <
184
+ Rq extends AnySQLiteTable,
185
+ S extends AnySQLiteTable,
186
+ G extends AnySQLiteTable,
187
+ Cn extends AnySQLiteTable,
188
+ Rs extends AnySQLiteTable,
189
+ A extends AnySQLiteTable,
190
+ F extends AnySQLiteTable,
191
+ C extends AnySQLiteTable,
192
+ Sub extends AnySQLiteTable,
193
+ I extends AnySQLiteTable,
194
+ Cr extends AnySQLiteTable,
195
+ NativeId,
196
+ >(
197
+ database: D,
198
+ mapping: Mapping<Rq, S, G, Cn, Rs, A, F, C, Sub, I, Cr, NativeId>,
199
+ ) => makeTargetProofPersistenceServices(database, mapping, configurationFor(database)),
200
+ coordinateProofPersistence,
201
+ };
202
+ };