@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,741 @@
1
+ import type { LifecycleHooks, HookConfigurationError } from "@yielded/auth/Hooks";
2
+ import {
3
+ AuthenticationAuthority,
4
+ type SessionUnavailable,
5
+ type PendingAuthentication,
6
+ type SessionRepository,
7
+ type SignedSessionValidity,
8
+ type StatefulSessionPersistence,
9
+ type SessionStepUpPersistence,
10
+ } from "@yielded/auth/Sessions";
11
+ import type { AnyRelations } from "drizzle-orm";
12
+ import type { EffectMysql2Database } from "drizzle-orm/effect-mysql2";
13
+ import type { AnyMySqlTable } from "drizzle-orm/mysql-core";
14
+ import { Effect, Context } from "effect";
15
+ import type { SqlError } from "effect/unstable/sql/SqlError";
16
+
17
+ import type {
18
+ AuthenticationAuthorityMapping,
19
+ PendingAuthenticationMapping,
20
+ SignedSessionValidityMapping,
21
+ StatefulSessionMapping,
22
+ } from "./session-model";
23
+ import {
24
+ coordinateTargetAuthenticationAuthority,
25
+ coordinateTargetPendingAuthentication,
26
+ coordinateTargetSignedSessionValidity,
27
+ coordinateTargetStatefulSessions,
28
+ makeTargetAuthenticationAuthorityServices,
29
+ makeTargetPendingAuthenticationServices,
30
+ makeTargetSignedSessionValidityServices,
31
+ makeTargetStatefulSessionServices,
32
+ sqlClientSessionStandaloneGuard,
33
+ makeTargetSessionStepUpServices,
34
+ coordinateTargetSessionStepUp,
35
+ } from "./session-target";
36
+ import type { SuppliedService } from "./SuppliedService";
37
+
38
+ type Database = EffectMysql2Database<AnyRelations>;
39
+ type Transaction = Parameters<Parameters<Database["transaction"]>[0]>[0];
40
+
41
+ const configuration = (database: Database) => ({
42
+ mode: "interactive" as const,
43
+ locking: true,
44
+ standaloneGuard: sqlClientSessionStandaloneGuard(database),
45
+ });
46
+
47
+ export const makeMysqlAuthenticationAuthorityServices = <
48
+ Claims,
49
+ S extends AnyMySqlTable,
50
+ C extends AnyMySqlTable,
51
+ F extends AnyMySqlTable,
52
+ P extends AnyMySqlTable,
53
+ NativeId,
54
+ >(
55
+ database: Database,
56
+ mapping: AuthenticationAuthorityMapping<Claims, S, C, F, P, NativeId>,
57
+ ) => makeTargetAuthenticationAuthorityServices<Claims>(database, mapping, configuration(database));
58
+
59
+ export const makeMysqlPendingAuthenticationServices = <
60
+ Claims,
61
+ S extends AnyMySqlTable,
62
+ C extends AnyMySqlTable,
63
+ P extends AnyMySqlTable,
64
+ F extends AnyMySqlTable,
65
+ NativeId,
66
+ >(
67
+ database: Database,
68
+ mapping: PendingAuthenticationMapping<Claims, S, C, P, F, NativeId>,
69
+ ) => makeTargetPendingAuthenticationServices<Claims>(database, mapping, configuration(database));
70
+
71
+ export const makeMysqlStatefulSessionServices = <
72
+ Claims,
73
+ S extends AnyMySqlTable,
74
+ C extends AnyMySqlTable,
75
+ Session extends AnyMySqlTable,
76
+ F extends AnyMySqlTable,
77
+ P extends AnyMySqlTable,
78
+ NativeId,
79
+ NativeSessionId,
80
+ >(
81
+ database: Database,
82
+ mapping: StatefulSessionMapping<Claims, S, C, Session, F, P, NativeId, NativeSessionId>,
83
+ ) => makeTargetStatefulSessionServices<Claims>(database, mapping, configuration(database));
84
+
85
+ export const makeMysqlSignedSessionValidityServices = <
86
+ S extends AnyMySqlTable,
87
+ T extends AnyMySqlTable,
88
+ NativeId,
89
+ NativeSessionId,
90
+ >(
91
+ database: Database,
92
+ mapping: SignedSessionValidityMapping<S, T, NativeId, NativeSessionId>,
93
+ ) => makeTargetSignedSessionValidityServices(database, mapping, configuration(database));
94
+
95
+ export function coordinateMysqlAuthenticationAuthority<
96
+ D extends Database,
97
+ Claims,
98
+ S extends AnyMySqlTable,
99
+ C extends AnyMySqlTable,
100
+ F extends AnyMySqlTable,
101
+ P extends AnyMySqlTable,
102
+ NativeId,
103
+ A,
104
+ E,
105
+ R,
106
+ DatabaseError,
107
+ DatabaseRequirements,
108
+ >(
109
+ acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
110
+ options: {
111
+ readonly mapping: AuthenticationAuthorityMapping<Claims, S, C, F, P, NativeId>;
112
+ readonly transaction?: never;
113
+ },
114
+ body: Effect.Effect<A, E, R>,
115
+ ): Effect.Effect<
116
+ A,
117
+ E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,
118
+ Exclude<R, AuthenticationAuthority> | LifecycleHooks | DatabaseRequirements
119
+ >;
120
+
121
+ export function coordinateMysqlAuthenticationAuthority<
122
+ D extends Database,
123
+ Claims,
124
+ S extends AnyMySqlTable,
125
+ C extends AnyMySqlTable,
126
+ F extends AnyMySqlTable,
127
+ P extends AnyMySqlTable,
128
+ NativeId,
129
+ A,
130
+ E,
131
+ R,
132
+ DatabaseError,
133
+ DatabaseRequirements,
134
+ TxId,
135
+ TxShape,
136
+ >(
137
+ acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
138
+ options: {
139
+ readonly mapping: AuthenticationAuthorityMapping<Claims, S, C, F, P, NativeId>;
140
+ readonly transaction: SuppliedService<TxId, NoInfer<Transaction>, TxShape>;
141
+ },
142
+ body: Effect.Effect<A, E, R>,
143
+ ): Effect.Effect<
144
+ A,
145
+ E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,
146
+ Exclude<R, AuthenticationAuthority | TxId> | LifecycleHooks | DatabaseRequirements
147
+ >;
148
+
149
+ export function coordinateMysqlAuthenticationAuthority<
150
+ D extends Database,
151
+ Claims,
152
+ S extends AnyMySqlTable,
153
+ C extends AnyMySqlTable,
154
+ F extends AnyMySqlTable,
155
+ P extends AnyMySqlTable,
156
+ NativeId,
157
+ A,
158
+ E,
159
+ R,
160
+ DatabaseError,
161
+ DatabaseRequirements,
162
+ TxId,
163
+ TxShape,
164
+ >(
165
+ acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
166
+ options: {
167
+ readonly mapping: AuthenticationAuthorityMapping<Claims, S, C, F, P, NativeId>;
168
+ readonly transaction?: SuppliedService<TxId, NoInfer<Transaction>, TxShape>;
169
+ },
170
+ body: Effect.Effect<A, E, R>,
171
+ ): Effect.Effect<
172
+ A,
173
+ E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,
174
+ Exclude<R, AuthenticationAuthority> | LifecycleHooks | DatabaseRequirements
175
+ > {
176
+ return Effect.flatMap(acquire, (database) =>
177
+ coordinateTargetAuthenticationAuthority<
178
+ Claims,
179
+ Transaction,
180
+ A,
181
+ E,
182
+ Exclude<R, AuthenticationAuthority>
183
+ >(
184
+ database,
185
+ options.mapping,
186
+ configuration(database),
187
+ (
188
+ transaction: Transaction,
189
+ services: { readonly authenticationAuthority: AuthenticationAuthority["Service"] },
190
+ ) => {
191
+ const provided = Context.make(AuthenticationAuthority, services.authenticationAuthority);
192
+ const work = Effect.provideContext(body, provided);
193
+
194
+ return options.transaction === undefined
195
+ ? work
196
+ : Effect.provideService(work, options.transaction, options.transaction.of(transaction));
197
+ },
198
+ ),
199
+ );
200
+ }
201
+
202
+ export function coordinateMysqlPendingAuthentication<
203
+ D extends Database,
204
+ TargetId,
205
+ Claims,
206
+ S extends AnyMySqlTable,
207
+ C extends AnyMySqlTable,
208
+ P extends AnyMySqlTable,
209
+ F extends AnyMySqlTable,
210
+ NativeId,
211
+ A,
212
+ E,
213
+ R,
214
+ DatabaseError,
215
+ DatabaseRequirements,
216
+ >(
217
+ acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
218
+ options: {
219
+ readonly mapping: PendingAuthenticationMapping<NoInfer<Claims>, S, C, P, F, NativeId>;
220
+ readonly target: SuppliedService<TargetId, PendingAuthentication<Claims>>;
221
+ readonly transaction?: never;
222
+ },
223
+ body: Effect.Effect<A, E, R>,
224
+ ): Effect.Effect<
225
+ A,
226
+ E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,
227
+ Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements
228
+ >;
229
+
230
+ export function coordinateMysqlPendingAuthentication<
231
+ D extends Database,
232
+ TargetId,
233
+ Claims,
234
+ S extends AnyMySqlTable,
235
+ C extends AnyMySqlTable,
236
+ P extends AnyMySqlTable,
237
+ F extends AnyMySqlTable,
238
+ NativeId,
239
+ A,
240
+ E,
241
+ R,
242
+ DatabaseError,
243
+ DatabaseRequirements,
244
+ TxId,
245
+ TxShape,
246
+ >(
247
+ acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
248
+ options: {
249
+ readonly mapping: PendingAuthenticationMapping<NoInfer<Claims>, S, C, P, F, NativeId>;
250
+ readonly target: SuppliedService<TargetId, PendingAuthentication<Claims>>;
251
+ readonly transaction: SuppliedService<TxId, NoInfer<Transaction>, TxShape>;
252
+ },
253
+ body: Effect.Effect<A, E, R>,
254
+ ): Effect.Effect<
255
+ A,
256
+ E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,
257
+ Exclude<R, TargetId | TxId> | LifecycleHooks | DatabaseRequirements
258
+ >;
259
+
260
+ export function coordinateMysqlPendingAuthentication<
261
+ D extends Database,
262
+ TargetId,
263
+ Claims,
264
+ S extends AnyMySqlTable,
265
+ C extends AnyMySqlTable,
266
+ P extends AnyMySqlTable,
267
+ F extends AnyMySqlTable,
268
+ NativeId,
269
+ A,
270
+ E,
271
+ R,
272
+ DatabaseError,
273
+ DatabaseRequirements,
274
+ TxId,
275
+ TxShape,
276
+ >(
277
+ acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
278
+ options: {
279
+ readonly mapping: PendingAuthenticationMapping<NoInfer<Claims>, S, C, P, F, NativeId>;
280
+ readonly target: SuppliedService<TargetId, PendingAuthentication<Claims>>;
281
+ readonly transaction?: SuppliedService<TxId, NoInfer<Transaction>, TxShape>;
282
+ },
283
+ body: Effect.Effect<A, E, R>,
284
+ ): Effect.Effect<
285
+ A,
286
+ E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,
287
+ Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements
288
+ > {
289
+ return Effect.flatMap(acquire, (database) =>
290
+ coordinateTargetPendingAuthentication<Claims, Transaction, A, E, Exclude<R, TargetId>>(
291
+ database,
292
+ options.mapping,
293
+ configuration(database),
294
+ (
295
+ transaction: Transaction,
296
+ services: { readonly pendingAuthentication: PendingAuthentication<Claims> },
297
+ ) => {
298
+ const provided = Context.make(options.target, services.pendingAuthentication);
299
+ const work = Effect.provideContext(body, provided);
300
+
301
+ return options.transaction === undefined
302
+ ? work
303
+ : Effect.provideService(work, options.transaction, options.transaction.of(transaction));
304
+ },
305
+ ),
306
+ );
307
+ }
308
+
309
+ export function coordinateMysqlStatefulSessions<
310
+ D extends Database,
311
+ PersistenceId,
312
+ RepositoryId,
313
+ Claims,
314
+ S extends AnyMySqlTable,
315
+ C extends AnyMySqlTable,
316
+ Session extends AnyMySqlTable,
317
+ F extends AnyMySqlTable,
318
+ P extends AnyMySqlTable,
319
+ NativeId,
320
+ NativeSessionId,
321
+ A,
322
+ E,
323
+ R,
324
+ DatabaseError,
325
+ DatabaseRequirements,
326
+ >(
327
+ acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
328
+ options: {
329
+ readonly mapping: StatefulSessionMapping<
330
+ NoInfer<Claims>,
331
+ S,
332
+ C,
333
+ Session,
334
+ F,
335
+ P,
336
+ NativeId,
337
+ NativeSessionId
338
+ >;
339
+ readonly persistence: SuppliedService<PersistenceId, StatefulSessionPersistence<Claims>>;
340
+ readonly repository: SuppliedService<RepositoryId, SessionRepository>;
341
+ readonly transaction?: never;
342
+ },
343
+ body: Effect.Effect<A, E, R>,
344
+ ): Effect.Effect<
345
+ A,
346
+ E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,
347
+ Exclude<R, PersistenceId | RepositoryId> | LifecycleHooks | DatabaseRequirements
348
+ >;
349
+
350
+ export function coordinateMysqlStatefulSessions<
351
+ D extends Database,
352
+ PersistenceId,
353
+ RepositoryId,
354
+ Claims,
355
+ S extends AnyMySqlTable,
356
+ C extends AnyMySqlTable,
357
+ Session extends AnyMySqlTable,
358
+ F extends AnyMySqlTable,
359
+ P extends AnyMySqlTable,
360
+ NativeId,
361
+ NativeSessionId,
362
+ A,
363
+ E,
364
+ R,
365
+ DatabaseError,
366
+ DatabaseRequirements,
367
+ TxId,
368
+ TxShape,
369
+ >(
370
+ acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
371
+ options: {
372
+ readonly mapping: StatefulSessionMapping<
373
+ NoInfer<Claims>,
374
+ S,
375
+ C,
376
+ Session,
377
+ F,
378
+ P,
379
+ NativeId,
380
+ NativeSessionId
381
+ >;
382
+ readonly persistence: SuppliedService<PersistenceId, StatefulSessionPersistence<Claims>>;
383
+ readonly repository: SuppliedService<RepositoryId, SessionRepository>;
384
+ readonly transaction: SuppliedService<TxId, NoInfer<Transaction>, TxShape>;
385
+ },
386
+ body: Effect.Effect<A, E, R>,
387
+ ): Effect.Effect<
388
+ A,
389
+ E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,
390
+ Exclude<R, PersistenceId | RepositoryId | TxId> | LifecycleHooks | DatabaseRequirements
391
+ >;
392
+
393
+ export function coordinateMysqlStatefulSessions<
394
+ D extends Database,
395
+ PersistenceId,
396
+ RepositoryId,
397
+ Claims,
398
+ S extends AnyMySqlTable,
399
+ C extends AnyMySqlTable,
400
+ Session extends AnyMySqlTable,
401
+ F extends AnyMySqlTable,
402
+ P extends AnyMySqlTable,
403
+ NativeId,
404
+ NativeSessionId,
405
+ A,
406
+ E,
407
+ R,
408
+ DatabaseError,
409
+ DatabaseRequirements,
410
+ TxId,
411
+ TxShape,
412
+ >(
413
+ acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
414
+ options: {
415
+ readonly mapping: StatefulSessionMapping<
416
+ NoInfer<Claims>,
417
+ S,
418
+ C,
419
+ Session,
420
+ F,
421
+ P,
422
+ NativeId,
423
+ NativeSessionId
424
+ >;
425
+ readonly persistence: SuppliedService<PersistenceId, StatefulSessionPersistence<Claims>>;
426
+ readonly repository: SuppliedService<RepositoryId, SessionRepository>;
427
+ readonly transaction?: SuppliedService<TxId, NoInfer<Transaction>, TxShape>;
428
+ },
429
+ body: Effect.Effect<A, E, R>,
430
+ ): Effect.Effect<
431
+ A,
432
+ E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,
433
+ Exclude<R, PersistenceId | RepositoryId> | LifecycleHooks | DatabaseRequirements
434
+ > {
435
+ return Effect.flatMap(acquire, (database) =>
436
+ coordinateTargetStatefulSessions<
437
+ Claims,
438
+ Transaction,
439
+ A,
440
+ E,
441
+ Exclude<R, PersistenceId | RepositoryId>
442
+ >(
443
+ database,
444
+ options.mapping,
445
+ configuration(database),
446
+ (
447
+ transaction: Transaction,
448
+ services: {
449
+ readonly statefulSessionPersistence: StatefulSessionPersistence<Claims>;
450
+ readonly sessionRepository: SessionRepository;
451
+ },
452
+ ) => {
453
+ const provided = Context.make(
454
+ options.persistence,
455
+ services.statefulSessionPersistence,
456
+ ).pipe(Context.add(options.repository, services.sessionRepository));
457
+
458
+ const work = Effect.provideContext(body, provided);
459
+
460
+ return options.transaction === undefined
461
+ ? work
462
+ : Effect.provideService(work, options.transaction, options.transaction.of(transaction));
463
+ },
464
+ ),
465
+ );
466
+ }
467
+
468
+ export function coordinateMysqlSignedSessionValidity<
469
+ D extends Database,
470
+ TargetId,
471
+ S extends AnyMySqlTable,
472
+ T extends AnyMySqlTable,
473
+ NativeId,
474
+ NativeSessionId,
475
+ A,
476
+ E,
477
+ R,
478
+ DatabaseError,
479
+ DatabaseRequirements,
480
+ >(
481
+ acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
482
+ options: {
483
+ readonly mapping: SignedSessionValidityMapping<S, T, NativeId, NativeSessionId>;
484
+ readonly target: SuppliedService<TargetId, SignedSessionValidity>;
485
+ readonly transaction?: never;
486
+ },
487
+ body: Effect.Effect<A, E, R>,
488
+ ): Effect.Effect<
489
+ A,
490
+ E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,
491
+ Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements
492
+ >;
493
+
494
+ export function coordinateMysqlSignedSessionValidity<
495
+ D extends Database,
496
+ TargetId,
497
+ S extends AnyMySqlTable,
498
+ T extends AnyMySqlTable,
499
+ NativeId,
500
+ NativeSessionId,
501
+ A,
502
+ E,
503
+ R,
504
+ DatabaseError,
505
+ DatabaseRequirements,
506
+ TxId,
507
+ TxShape,
508
+ >(
509
+ acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
510
+ options: {
511
+ readonly mapping: SignedSessionValidityMapping<S, T, NativeId, NativeSessionId>;
512
+ readonly target: SuppliedService<TargetId, SignedSessionValidity>;
513
+ readonly transaction: SuppliedService<TxId, NoInfer<Transaction>, TxShape>;
514
+ },
515
+ body: Effect.Effect<A, E, R>,
516
+ ): Effect.Effect<
517
+ A,
518
+ E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,
519
+ Exclude<R, TargetId | TxId> | LifecycleHooks | DatabaseRequirements
520
+ >;
521
+
522
+ export function coordinateMysqlSignedSessionValidity<
523
+ D extends Database,
524
+ TargetId,
525
+ S extends AnyMySqlTable,
526
+ T extends AnyMySqlTable,
527
+ NativeId,
528
+ NativeSessionId,
529
+ A,
530
+ E,
531
+ R,
532
+ DatabaseError,
533
+ DatabaseRequirements,
534
+ TxId,
535
+ TxShape,
536
+ >(
537
+ acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
538
+ options: {
539
+ readonly mapping: SignedSessionValidityMapping<S, T, NativeId, NativeSessionId>;
540
+ readonly target: SuppliedService<TargetId, SignedSessionValidity>;
541
+ readonly transaction?: SuppliedService<TxId, NoInfer<Transaction>, TxShape>;
542
+ },
543
+ body: Effect.Effect<A, E, R>,
544
+ ): Effect.Effect<
545
+ A,
546
+ E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,
547
+ Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements
548
+ > {
549
+ return Effect.flatMap(acquire, (database) =>
550
+ coordinateTargetSignedSessionValidity<Transaction, A, E, Exclude<R, TargetId>>(
551
+ database,
552
+ options.mapping,
553
+ configuration(database),
554
+ (
555
+ transaction: Transaction,
556
+ services: { readonly signedSessionValidity: SignedSessionValidity },
557
+ ) => {
558
+ const provided = Context.make(options.target, services.signedSessionValidity);
559
+ const work = Effect.provideContext(body, provided);
560
+
561
+ return options.transaction === undefined
562
+ ? work
563
+ : Effect.provideService(work, options.transaction, options.transaction.of(transaction));
564
+ },
565
+ ),
566
+ );
567
+ }
568
+
569
+ import type { SessionStepUpMapping } from "./step-up-model";
570
+
571
+ export const makeMysqlSessionStepUpServices = <
572
+ Claims,
573
+ Id,
574
+ S extends AnyMySqlTable,
575
+ C extends AnyMySqlTable,
576
+ I extends AnyMySqlTable,
577
+ Session extends AnyMySqlTable,
578
+ T extends AnyMySqlTable,
579
+ NativeId,
580
+ NativeSessionId,
581
+ >(
582
+ database: Database,
583
+ mapping: SessionStepUpMapping<NoInfer<Claims>, S, C, I, Session, T, NativeId, NativeSessionId>,
584
+ target: Context.Service<Id, SessionStepUpPersistence<Claims>>,
585
+ ) => makeTargetSessionStepUpServices(database, mapping, target, configuration(database));
586
+
587
+ export function coordinateMysqlSessionStepUp<
588
+ Claims,
589
+ Id,
590
+ S extends AnyMySqlTable,
591
+ C extends AnyMySqlTable,
592
+ I extends AnyMySqlTable,
593
+ Session extends AnyMySqlTable,
594
+ T extends AnyMySqlTable,
595
+ NativeId,
596
+ NativeSessionId,
597
+ D extends Database,
598
+ A,
599
+ E,
600
+ R,
601
+ DatabaseError,
602
+ DatabaseRequirements,
603
+ >(
604
+ acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
605
+ options: {
606
+ readonly mapping: SessionStepUpMapping<
607
+ NoInfer<Claims>,
608
+ S,
609
+ C,
610
+ I,
611
+ Session,
612
+ T,
613
+ NativeId,
614
+ NativeSessionId
615
+ >;
616
+ readonly target: SuppliedService<Id, SessionStepUpPersistence<Claims>>;
617
+ readonly transaction?: never;
618
+ },
619
+ body: Effect.Effect<A, E, R>,
620
+ ): Effect.Effect<
621
+ A,
622
+ E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,
623
+ Exclude<R, Id> | LifecycleHooks | DatabaseRequirements
624
+ >;
625
+
626
+ export function coordinateMysqlSessionStepUp<
627
+ Claims,
628
+ Id,
629
+ S extends AnyMySqlTable,
630
+ C extends AnyMySqlTable,
631
+ I extends AnyMySqlTable,
632
+ Session extends AnyMySqlTable,
633
+ T extends AnyMySqlTable,
634
+ NativeId,
635
+ NativeSessionId,
636
+ D extends Database,
637
+ A,
638
+ E,
639
+ R,
640
+ DatabaseError,
641
+ DatabaseRequirements,
642
+ TxId,
643
+ TxShape,
644
+ >(
645
+ acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
646
+ options: {
647
+ readonly mapping: SessionStepUpMapping<
648
+ NoInfer<Claims>,
649
+ S,
650
+ C,
651
+ I,
652
+ Session,
653
+ T,
654
+ NativeId,
655
+ NativeSessionId
656
+ >;
657
+ readonly target: SuppliedService<Id, SessionStepUpPersistence<Claims>>;
658
+ readonly transaction: SuppliedService<
659
+ TxId,
660
+ NoInfer<Parameters<Parameters<D["transaction"]>[0]>[0]>,
661
+ TxShape
662
+ >;
663
+ },
664
+ body: Effect.Effect<A, E, R>,
665
+ ): Effect.Effect<
666
+ A,
667
+ E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,
668
+ Exclude<R, Id | TxId> | LifecycleHooks | DatabaseRequirements
669
+ >;
670
+
671
+ export function coordinateMysqlSessionStepUp<
672
+ Claims,
673
+ Id,
674
+ S extends AnyMySqlTable,
675
+ C extends AnyMySqlTable,
676
+ I extends AnyMySqlTable,
677
+ Session extends AnyMySqlTable,
678
+ T extends AnyMySqlTable,
679
+ NativeId,
680
+ NativeSessionId,
681
+ D extends Database,
682
+ A,
683
+ E,
684
+ R,
685
+ DatabaseError,
686
+ DatabaseRequirements,
687
+ TxId,
688
+ TxShape,
689
+ >(
690
+ acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
691
+ options: {
692
+ readonly mapping: SessionStepUpMapping<
693
+ NoInfer<Claims>,
694
+ S,
695
+ C,
696
+ I,
697
+ Session,
698
+ T,
699
+ NativeId,
700
+ NativeSessionId
701
+ >;
702
+ readonly target: SuppliedService<Id, SessionStepUpPersistence<Claims>>;
703
+ readonly transaction?: SuppliedService<
704
+ TxId,
705
+ NoInfer<Parameters<Parameters<D["transaction"]>[0]>[0]>,
706
+ TxShape
707
+ >;
708
+ },
709
+ body: Effect.Effect<A, E, R>,
710
+ ): Effect.Effect<
711
+ A,
712
+ E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,
713
+ Exclude<R, Id> | LifecycleHooks | DatabaseRequirements
714
+ > {
715
+ return Effect.flatMap(acquire, (database) =>
716
+ coordinateTargetSessionStepUp<
717
+ Claims,
718
+ Id,
719
+ Parameters<Parameters<D["transaction"]>[0]>[0],
720
+ A,
721
+ E,
722
+ Exclude<R, Id>
723
+ >(
724
+ database,
725
+ options.mapping,
726
+ options.target,
727
+ configuration(database),
728
+ (
729
+ transaction: Parameters<Parameters<D["transaction"]>[0]>[0],
730
+ services: { readonly sessionStepUpPersistence: SessionStepUpPersistence<Claims> },
731
+ ) => {
732
+ const provided = Context.make(options.target, services.sessionStepUpPersistence);
733
+ const work = Effect.provideContext(body, provided);
734
+
735
+ return options.transaction === undefined
736
+ ? work
737
+ : Effect.provideService(work, options.transaction, options.transaction.of(transaction));
738
+ },
739
+ ),
740
+ );
741
+ }