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