@yielded/auth-persistence-drizzle 0.1.0-beta.25 → 0.1.0-beta.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (383) hide show
  1. package/README.md +4 -2
  2. package/dist/D1.d.mts +495 -1151
  3. package/dist/D1.mjs +41 -19
  4. package/dist/D1.mjs.map +1 -1
  5. package/dist/Libsql.d.mts +385 -1996
  6. package/dist/Libsql.mjs +43 -47
  7. package/dist/Libsql.mjs.map +1 -1
  8. package/dist/Mysql2.d.mts +397 -1743
  9. package/dist/Mysql2.mjs +35 -41
  10. package/dist/Mysql2.mjs.map +1 -1
  11. package/dist/Pglite.d.mts +397 -1743
  12. package/dist/Pglite.mjs +42 -31
  13. package/dist/Pglite.mjs.map +1 -1
  14. package/dist/Postgres.d.mts +397 -1743
  15. package/dist/Postgres.mjs +42 -31
  16. package/dist/Postgres.mjs.map +1 -1
  17. package/dist/SqliteBun.d.mts +385 -1992
  18. package/dist/SqliteBun.mjs +43 -43
  19. package/dist/SqliteBun.mjs.map +1 -1
  20. package/dist/SqliteDo.d.mts +385 -1991
  21. package/dist/SqliteDo.mjs +42 -41
  22. package/dist/SqliteDo.mjs.map +1 -1
  23. package/dist/SqliteNode.d.mts +385 -1992
  24. package/dist/SqliteNode.mjs +43 -43
  25. package/dist/SqliteNode.mjs.map +1 -1
  26. package/dist/SqliteWasm.d.mts +385 -1992
  27. package/dist/SqliteWasm.mjs +43 -43
  28. package/dist/SqliteWasm.mjs.map +1 -1
  29. package/dist/drizzle/d1-identity.mjs +2 -2
  30. package/dist/drizzle/d1-identity.mjs.map +1 -1
  31. package/dist/drizzle/driver-types.d.mts +15 -0
  32. package/dist/drizzle/email-drivers.mjs +32 -0
  33. package/dist/drizzle/email-drivers.mjs.map +1 -0
  34. package/dist/drizzle/email-model.d.mts +9 -13
  35. package/dist/drizzle/email-target.d.mts +10 -11
  36. package/dist/drizzle/email-target.mjs +33 -70
  37. package/dist/drizzle/email-target.mjs.map +1 -1
  38. package/dist/drizzle/model.d.mts +1 -10
  39. package/dist/drizzle/model.mjs +1 -2
  40. package/dist/drizzle/model.mjs.map +1 -1
  41. package/dist/drizzle/mysql-identity.mjs +3 -6
  42. package/dist/drizzle/mysql-identity.mjs.map +1 -1
  43. package/dist/drizzle/native-clock.d.mts +9 -0
  44. package/dist/drizzle/native-clock.mjs +18 -0
  45. package/dist/drizzle/native-clock.mjs.map +1 -0
  46. package/dist/drizzle/native-database.d.mts +46 -0
  47. package/dist/drizzle/native-database.mjs +6 -5
  48. package/dist/drizzle/native-database.mjs.map +1 -1
  49. package/dist/drizzle/native-sql-table.mjs +13 -5
  50. package/dist/drizzle/native-sql-table.mjs.map +1 -1
  51. package/dist/drizzle/native-target.d.mts +6 -0
  52. package/dist/drizzle/native-target.mjs +44 -0
  53. package/dist/drizzle/native-target.mjs.map +1 -0
  54. package/dist/drizzle/oauth-connected-drivers.mjs +4 -56
  55. package/dist/drizzle/oauth-connected-drivers.mjs.map +1 -1
  56. package/dist/drizzle/oauth-connected-model.d.mts +5 -22
  57. package/dist/drizzle/oauth-connected-model.mjs +1 -7
  58. package/dist/drizzle/oauth-connected-reference.d.mts +5 -7
  59. package/dist/drizzle/oauth-connected-reference.mjs +11 -3
  60. package/dist/drizzle/oauth-connected-reference.mjs.map +1 -1
  61. package/dist/drizzle/oauth-drivers.mjs +1 -2
  62. package/dist/drizzle/oauth-drivers.mjs.map +1 -1
  63. package/dist/drizzle/oauth-model.d.mts +11 -37
  64. package/dist/drizzle/oauth-model.mjs +3 -4
  65. package/dist/drizzle/oauth-model.mjs.map +1 -1
  66. package/dist/drizzle/oauth-proxy.d.mts +1 -1
  67. package/dist/drizzle/oauth-proxy.mjs +1 -1
  68. package/dist/drizzle/oauth-target.d.mts +9 -6
  69. package/dist/drizzle/oauth-target.mjs +47 -15
  70. package/dist/drizzle/oauth-target.mjs.map +1 -1
  71. package/dist/drizzle/passkey/target.d.mts +14 -0
  72. package/dist/drizzle/passkey/target.mjs +52 -0
  73. package/dist/drizzle/passkey/target.mjs.map +1 -0
  74. package/dist/drizzle/passkey/write-target.d.mts +11 -0
  75. package/dist/drizzle/passkey/write-target.mjs +28 -0
  76. package/dist/drizzle/passkey/write-target.mjs.map +1 -0
  77. package/dist/drizzle/passkey-drivers.mjs +2 -4
  78. package/dist/drizzle/passkey-drivers.mjs.map +1 -1
  79. package/dist/drizzle/passkey-model.d.mts +5 -26
  80. package/dist/drizzle/passkey-model.mjs +2 -8
  81. package/dist/drizzle/passkey-registration-ceremony-model.d.mts +3 -6
  82. package/dist/drizzle/passkey-write-drivers.mjs +2 -3
  83. package/dist/drizzle/passkey-write-drivers.mjs.map +1 -1
  84. package/dist/drizzle/passkey-write-model.d.mts +7 -9
  85. package/dist/drizzle/passkey-write-model.mjs +1 -3
  86. package/dist/drizzle/passkey-write-model.mjs.map +1 -1
  87. package/dist/drizzle/password-drivers.mjs +31 -0
  88. package/dist/drizzle/password-drivers.mjs.map +1 -0
  89. package/dist/drizzle/password-model.d.mts +7 -10
  90. package/dist/drizzle/password-target.d.mts +7 -8
  91. package/dist/drizzle/password-target.mjs +23 -68
  92. package/dist/drizzle/password-target.mjs.map +1 -1
  93. package/dist/drizzle/pg-identity.mjs +3 -6
  94. package/dist/drizzle/pg-identity.mjs.map +1 -1
  95. package/dist/drizzle/phone-drivers.mjs +24 -0
  96. package/dist/drizzle/phone-drivers.mjs.map +1 -0
  97. package/dist/drizzle/phone-model.d.mts +13 -104
  98. package/dist/drizzle/phone-model.mjs +5 -33
  99. package/dist/drizzle/phone-model.mjs.map +1 -1
  100. package/dist/drizzle/phone-target.mjs +22 -171
  101. package/dist/drizzle/phone-target.mjs.map +1 -1
  102. package/dist/drizzle/proof-drivers.mjs +24 -0
  103. package/dist/drizzle/proof-drivers.mjs.map +1 -0
  104. package/dist/drizzle/proof-model.d.mts +7 -15
  105. package/dist/drizzle/proof-target.d.mts +5 -5
  106. package/dist/drizzle/proof-target.mjs +14 -28
  107. package/dist/drizzle/proof-target.mjs.map +1 -1
  108. package/dist/drizzle/session-drivers.mjs +97 -0
  109. package/dist/drizzle/session-drivers.mjs.map +1 -0
  110. package/dist/drizzle/session-model.d.mts +11 -22
  111. package/dist/drizzle/sqlite-do-database.d.mts +3 -3
  112. package/dist/drizzle/sqlite-do-database.mjs +6 -1
  113. package/dist/drizzle/sqlite-do-database.mjs.map +1 -1
  114. package/dist/drizzle/sqlite-identity.mjs +3 -5
  115. package/dist/drizzle/sqlite-identity.mjs.map +1 -1
  116. package/dist/drizzle/step-up-model.d.mts +2 -5
  117. package/dist/drizzle/storage-validation.mjs +2 -1
  118. package/dist/drizzle/storage-validation.mjs.map +1 -1
  119. package/dist/drizzle/totp-model.d.mts +7 -74
  120. package/dist/drizzle/totp-model.mjs +1 -5
  121. package/dist/drizzle/totp-model.mjs.map +1 -1
  122. package/dist/drizzle/totp-target.mjs +39 -75
  123. package/dist/drizzle/totp-target.mjs.map +1 -1
  124. package/dist/drizzle/transaction-handle.mjs +13 -0
  125. package/dist/drizzle/transaction-handle.mjs.map +1 -0
  126. package/dist/drizzle/transaction-mysql.mjs +43 -12
  127. package/dist/drizzle/transaction-mysql.mjs.map +1 -1
  128. package/dist/index.d.mts +17 -22
  129. package/dist/index.mjs +10 -16
  130. package/dist/internal/drizzle-postgres.mjs +4 -6
  131. package/dist/internal/drizzle-postgres.mjs.map +1 -1
  132. package/dist/internal/drizzle-sqlite.mjs +4 -6
  133. package/dist/internal/drizzle-sqlite.mjs.map +1 -1
  134. package/package.json +1 -1
  135. package/src/D1.ts +77 -74
  136. package/src/Libsql.ts +65 -105
  137. package/src/Mysql2.ts +52 -87
  138. package/src/Pglite.ts +74 -81
  139. package/src/Postgres.ts +74 -81
  140. package/src/SqliteBun.ts +65 -113
  141. package/src/SqliteDo.ts +58 -106
  142. package/src/SqliteNode.ts +65 -113
  143. package/src/SqliteWasm.ts +65 -113
  144. package/src/drizzle/d1-identity.ts +2 -2
  145. package/src/drizzle/driver-types.ts +26 -0
  146. package/src/drizzle/email-drivers.ts +320 -0
  147. package/src/drizzle/email-model.ts +24 -78
  148. package/src/drizzle/email-target.ts +118 -211
  149. package/src/drizzle/model.ts +0 -2
  150. package/src/drizzle/mysql-identity.ts +4 -24
  151. package/src/drizzle/native-clock.ts +21 -0
  152. package/src/drizzle/native-database.ts +59 -18
  153. package/src/drizzle/native-sql-table.ts +104 -87
  154. package/src/drizzle/native-target.ts +120 -0
  155. package/src/drizzle/oauth-connected-drivers.ts +24 -233
  156. package/src/drizzle/oauth-connected-model.ts +3 -93
  157. package/src/drizzle/oauth-connected-reference.ts +16 -25
  158. package/src/drizzle/oauth-drivers.ts +58 -99
  159. package/src/drizzle/oauth-model.ts +27 -132
  160. package/src/drizzle/oauth-target.ts +250 -33
  161. package/src/drizzle/passkey/target.ts +205 -0
  162. package/src/drizzle/passkey/write-target.ts +91 -0
  163. package/src/drizzle/passkey-drivers.ts +35 -133
  164. package/src/drizzle/passkey-model.ts +3 -81
  165. package/src/drizzle/passkey-registration-ceremony-model.ts +5 -25
  166. package/src/drizzle/passkey-write-drivers.ts +32 -102
  167. package/src/drizzle/passkey-write-model.ts +10 -44
  168. package/src/drizzle/password-drivers.ts +286 -0
  169. package/src/drizzle/password-model.ts +10 -44
  170. package/src/drizzle/password-target.ts +85 -239
  171. package/src/drizzle/pg-identity.ts +4 -19
  172. package/src/drizzle/phone-drivers.ts +142 -0
  173. package/src/drizzle/phone-model.ts +22 -162
  174. package/src/drizzle/phone-target.ts +51 -493
  175. package/src/drizzle/proof-drivers.ts +123 -0
  176. package/src/drizzle/proof-model.ts +12 -123
  177. package/src/drizzle/proof-target.ts +38 -102
  178. package/src/drizzle/session-drivers.ts +696 -0
  179. package/src/drizzle/session-model.ts +54 -118
  180. package/src/drizzle/sqlite-do-database.ts +8 -0
  181. package/src/drizzle/sqlite-identity.ts +4 -22
  182. package/src/drizzle/step-up-model.ts +13 -37
  183. package/src/drizzle/storage-validation.ts +2 -1
  184. package/src/drizzle/totp-model.ts +20 -77
  185. package/src/drizzle/totp-target.ts +121 -261
  186. package/src/drizzle/transaction-handle.ts +41 -0
  187. package/src/drizzle/transaction-mysql.ts +90 -25
  188. package/src/index.ts +7 -122
  189. package/src/internal/drizzle-postgres.ts +4 -7
  190. package/src/internal/drizzle-sqlite.ts +4 -7
  191. package/dist/drizzle/crypto.mjs +0 -11
  192. package/dist/drizzle/crypto.mjs.map +0 -1
  193. package/dist/drizzle/d1-emails.d.mts +0 -62
  194. package/dist/drizzle/d1-emails.mjs +0 -626
  195. package/dist/drizzle/d1-emails.mjs.map +0 -1
  196. package/dist/drizzle/d1-generated-statement.mjs +0 -79
  197. package/dist/drizzle/d1-generated-statement.mjs.map +0 -1
  198. package/dist/drizzle/d1-oauth.d.mts +0 -331
  199. package/dist/drizzle/d1-oauth.mjs +0 -79
  200. package/dist/drizzle/d1-oauth.mjs.map +0 -1
  201. package/dist/drizzle/d1-passkey.d.mts +0 -37
  202. package/dist/drizzle/d1-passkey.mjs +0 -98
  203. package/dist/drizzle/d1-passkey.mjs.map +0 -1
  204. package/dist/drizzle/d1-password-prepared.d.mts +0 -25
  205. package/dist/drizzle/d1-password-prepared.mjs +0 -473
  206. package/dist/drizzle/d1-password-prepared.mjs.map +0 -1
  207. package/dist/drizzle/d1-passwords.d.mts +0 -70
  208. package/dist/drizzle/d1-passwords.mjs +0 -808
  209. package/dist/drizzle/d1-passwords.mjs.map +0 -1
  210. package/dist/drizzle/d1-phone.d.mts +0 -23
  211. package/dist/drizzle/d1-phone.mjs +0 -33
  212. package/dist/drizzle/d1-phone.mjs.map +0 -1
  213. package/dist/drizzle/d1-planning.d.mts +0 -11
  214. package/dist/drizzle/d1-planning.mjs +0 -43
  215. package/dist/drizzle/d1-planning.mjs.map +0 -1
  216. package/dist/drizzle/d1-proofs.d.mts +0 -80
  217. package/dist/drizzle/d1-proofs.mjs +0 -842
  218. package/dist/drizzle/d1-proofs.mjs.map +0 -1
  219. package/dist/drizzle/d1-sessions.d.mts +0 -68
  220. package/dist/drizzle/d1-sessions.mjs +0 -987
  221. package/dist/drizzle/d1-sessions.mjs.map +0 -1
  222. package/dist/drizzle/d1-totp.d.mts +0 -23
  223. package/dist/drizzle/d1-totp.mjs +0 -30
  224. package/dist/drizzle/d1-totp.mjs.map +0 -1
  225. package/dist/drizzle/email-registration.d.mts +0 -33
  226. package/dist/drizzle/email-registration.mjs +0 -281
  227. package/dist/drizzle/email-registration.mjs.map +0 -1
  228. package/dist/drizzle/email-sql.d.mts +0 -1
  229. package/dist/drizzle/email-sql.mjs +0 -9
  230. package/dist/drizzle/email-sql.mjs.map +0 -1
  231. package/dist/drizzle/mysql-emails.d.mts +0 -71
  232. package/dist/drizzle/mysql-emails.mjs +0 -43
  233. package/dist/drizzle/mysql-emails.mjs.map +0 -1
  234. package/dist/drizzle/mysql-password-prepared.d.mts +0 -30
  235. package/dist/drizzle/mysql-password-prepared.mjs +0 -21
  236. package/dist/drizzle/mysql-password-prepared.mjs.map +0 -1
  237. package/dist/drizzle/mysql-passwords.d.mts +0 -71
  238. package/dist/drizzle/mysql-passwords.mjs +0 -43
  239. package/dist/drizzle/mysql-passwords.mjs.map +0 -1
  240. package/dist/drizzle/mysql-proofs.d.mts +0 -75
  241. package/dist/drizzle/mysql-proofs.mjs +0 -28
  242. package/dist/drizzle/mysql-proofs.mjs.map +0 -1
  243. package/dist/drizzle/mysql-sessions.d.mts +0 -92
  244. package/dist/drizzle/mysql-sessions.mjs +0 -58
  245. package/dist/drizzle/mysql-sessions.mjs.map +0 -1
  246. package/dist/drizzle/oauth-connected-model.mjs.map +0 -1
  247. package/dist/drizzle/oauth-connected-target.d.mts +0 -6
  248. package/dist/drizzle/oauth-connected-target.mjs +0 -12
  249. package/dist/drizzle/oauth-connected-target.mjs.map +0 -1
  250. package/dist/drizzle/oauth-kernel.mjs +0 -11
  251. package/dist/drizzle/oauth-kernel.mjs.map +0 -1
  252. package/dist/drizzle/oauth-mysql.mjs +0 -8
  253. package/dist/drizzle/oauth-mysql.mjs.map +0 -1
  254. package/dist/drizzle/passkey-kernel.mjs +0 -8
  255. package/dist/drizzle/passkey-kernel.mjs.map +0 -1
  256. package/dist/drizzle/passkey-model.mjs.map +0 -1
  257. package/dist/drizzle/passkey-registration-ceremony-model.mjs +0 -2
  258. package/dist/drizzle/passkey-state.mjs +0 -7
  259. package/dist/drizzle/passkey-state.mjs.map +0 -1
  260. package/dist/drizzle/passkey-target.d.mts +0 -2
  261. package/dist/drizzle/passkey-target.mjs +0 -7
  262. package/dist/drizzle/passkey-target.mjs.map +0 -1
  263. package/dist/drizzle/passkey-write-target.d.mts +0 -5
  264. package/dist/drizzle/passkey-write-target.mjs +0 -7
  265. package/dist/drizzle/passkey-write-target.mjs.map +0 -1
  266. package/dist/drizzle/password-prepared-model.d.mts +0 -92
  267. package/dist/drizzle/password-prepared-model.mjs +0 -11
  268. package/dist/drizzle/password-prepared-model.mjs.map +0 -1
  269. package/dist/drizzle/password-prepared-sql.mjs +0 -395
  270. package/dist/drizzle/password-prepared-sql.mjs.map +0 -1
  271. package/dist/drizzle/password-prepared-state.mjs +0 -104
  272. package/dist/drizzle/password-prepared-state.mjs.map +0 -1
  273. package/dist/drizzle/password-prepared-target.d.mts +0 -13
  274. package/dist/drizzle/password-prepared-target.mjs +0 -62
  275. package/dist/drizzle/password-prepared-target.mjs.map +0 -1
  276. package/dist/drizzle/password-registration.d.mts +0 -7
  277. package/dist/drizzle/password-registration.mjs +0 -137
  278. package/dist/drizzle/password-registration.mjs.map +0 -1
  279. package/dist/drizzle/password-sql.d.mts +0 -1
  280. package/dist/drizzle/password-sql.mjs +0 -10
  281. package/dist/drizzle/password-sql.mjs.map +0 -1
  282. package/dist/drizzle/pg-emails.d.mts +0 -72
  283. package/dist/drizzle/pg-emails.mjs +0 -43
  284. package/dist/drizzle/pg-emails.mjs.map +0 -1
  285. package/dist/drizzle/pg-password-prepared.d.mts +0 -31
  286. package/dist/drizzle/pg-password-prepared.mjs +0 -21
  287. package/dist/drizzle/pg-password-prepared.mjs.map +0 -1
  288. package/dist/drizzle/pg-passwords.d.mts +0 -72
  289. package/dist/drizzle/pg-passwords.mjs +0 -43
  290. package/dist/drizzle/pg-passwords.mjs.map +0 -1
  291. package/dist/drizzle/pg-proofs.d.mts +0 -76
  292. package/dist/drizzle/pg-proofs.mjs +0 -27
  293. package/dist/drizzle/pg-proofs.mjs.map +0 -1
  294. package/dist/drizzle/pg-sessions.d.mts +0 -93
  295. package/dist/drizzle/pg-sessions.mjs +0 -58
  296. package/dist/drizzle/pg-sessions.mjs.map +0 -1
  297. package/dist/drizzle/phone-state.mjs +0 -14
  298. package/dist/drizzle/phone-state.mjs.map +0 -1
  299. package/dist/drizzle/phone-target.d.mts +0 -15
  300. package/dist/drizzle/proof-sql.d.mts +0 -1
  301. package/dist/drizzle/proof-sql.mjs +0 -8
  302. package/dist/drizzle/proof-sql.mjs.map +0 -1
  303. package/dist/drizzle/query-operations.mjs +0 -31
  304. package/dist/drizzle/query-operations.mjs.map +0 -1
  305. package/dist/drizzle/session-sql.d.mts +0 -1
  306. package/dist/drizzle/session-sql.mjs +0 -9
  307. package/dist/drizzle/session-sql.mjs.map +0 -1
  308. package/dist/drizzle/session-target.d.mts +0 -30
  309. package/dist/drizzle/session-target.mjs +0 -49
  310. package/dist/drizzle/session-target.mjs.map +0 -1
  311. package/dist/drizzle/sqlite-emails.mjs +0 -50
  312. package/dist/drizzle/sqlite-emails.mjs.map +0 -1
  313. package/dist/drizzle/sqlite-password-prepared.mjs +0 -26
  314. package/dist/drizzle/sqlite-password-prepared.mjs.map +0 -1
  315. package/dist/drizzle/sqlite-passwords.mjs +0 -54
  316. package/dist/drizzle/sqlite-passwords.mjs.map +0 -1
  317. package/dist/drizzle/sqlite-proofs.mjs +0 -34
  318. package/dist/drizzle/sqlite-proofs.mjs.map +0 -1
  319. package/dist/drizzle/sqlite-sessions.mjs +0 -79
  320. package/dist/drizzle/sqlite-sessions.mjs.map +0 -1
  321. package/dist/drizzle/standalone-guard.d.mts +0 -2
  322. package/dist/drizzle/standalone-guard.mjs +0 -21
  323. package/dist/drizzle/standalone-guard.mjs.map +0 -1
  324. package/dist/drizzle/totp-state.d.mts +0 -37
  325. package/dist/drizzle/totp-state.mjs +0 -287
  326. package/dist/drizzle/totp-state.mjs.map +0 -1
  327. package/dist/drizzle/totp-target.d.mts +0 -15
  328. package/dist/drizzle/transaction-execution.d.mts +0 -2
  329. package/dist/drizzle/transaction-execution.mjs +0 -11
  330. package/dist/drizzle/transaction-execution.mjs.map +0 -1
  331. package/dist/drizzle/transaction-owner.d.mts +0 -1
  332. package/dist/drizzle/transaction-owner.mjs +0 -8
  333. package/dist/drizzle/transaction-owner.mjs.map +0 -1
  334. package/src/drizzle/crypto.ts +0 -14
  335. package/src/drizzle/d1-emails.ts +0 -1945
  336. package/src/drizzle/d1-generated-statement.ts +0 -129
  337. package/src/drizzle/d1-oauth.ts +0 -360
  338. package/src/drizzle/d1-passkey.ts +0 -383
  339. package/src/drizzle/d1-password-prepared.ts +0 -1266
  340. package/src/drizzle/d1-passwords.ts +0 -2061
  341. package/src/drizzle/d1-phone.ts +0 -103
  342. package/src/drizzle/d1-planning.ts +0 -104
  343. package/src/drizzle/d1-proofs.ts +0 -2354
  344. package/src/drizzle/d1-sessions.ts +0 -2940
  345. package/src/drizzle/d1-totp.ts +0 -88
  346. package/src/drizzle/email-registration.ts +0 -850
  347. package/src/drizzle/email-sql.ts +0 -25
  348. package/src/drizzle/mysql-emails.ts +0 -343
  349. package/src/drizzle/mysql-password-prepared.ts +0 -198
  350. package/src/drizzle/mysql-passwords.ts +0 -343
  351. package/src/drizzle/mysql-proofs.ts +0 -196
  352. package/src/drizzle/mysql-sessions.ts +0 -780
  353. package/src/drizzle/oauth-connected-target.ts +0 -21
  354. package/src/drizzle/oauth-kernel.ts +0 -10
  355. package/src/drizzle/oauth-mysql.ts +0 -10
  356. package/src/drizzle/passkey-kernel.ts +0 -4
  357. package/src/drizzle/passkey-state.ts +0 -3
  358. package/src/drizzle/passkey-target.ts +0 -23
  359. package/src/drizzle/passkey-write-target.ts +0 -9
  360. package/src/drizzle/password-prepared-model.ts +0 -241
  361. package/src/drizzle/password-prepared-sql.ts +0 -1202
  362. package/src/drizzle/password-prepared-state.ts +0 -231
  363. package/src/drizzle/password-prepared-target.ts +0 -169
  364. package/src/drizzle/password-registration.ts +0 -369
  365. package/src/drizzle/password-sql.ts +0 -16
  366. package/src/drizzle/pg-emails.ts +0 -343
  367. package/src/drizzle/pg-password-prepared.ts +0 -199
  368. package/src/drizzle/pg-passwords.ts +0 -342
  369. package/src/drizzle/pg-proofs.ts +0 -206
  370. package/src/drizzle/pg-sessions.ts +0 -789
  371. package/src/drizzle/phone-state.ts +0 -21
  372. package/src/drizzle/proof-sql.ts +0 -10
  373. package/src/drizzle/query-operations.ts +0 -49
  374. package/src/drizzle/session-sql.ts +0 -15
  375. package/src/drizzle/session-target.ts +0 -337
  376. package/src/drizzle/sqlite-emails.ts +0 -393
  377. package/src/drizzle/sqlite-password-prepared.ts +0 -230
  378. package/src/drizzle/sqlite-passwords.ts +0 -497
  379. package/src/drizzle/sqlite-proofs.ts +0 -229
  380. package/src/drizzle/sqlite-sessions.ts +0 -1013
  381. package/src/drizzle/totp-state.ts +0 -525
  382. package/src/drizzle/transaction-execution.ts +0 -13
  383. package/src/drizzle/transaction-owner.ts +0 -11
@@ -1,231 +0,0 @@
1
- import {
2
- PasswordUnavailable,
3
- PasswordAction,
4
- PasswordCommandId,
5
- PasswordCredentialSnapshot,
6
- PasswordPreparedConfiguration,
7
- PasswordPreparedIntentId,
8
- PasswordPreparedReservation,
9
- PasswordPreparedReset,
10
- PasswordPreparedRequirement,
11
- snapshotPasswordPreparedReservation,
12
- snapshotPasswordPreparedReady,
13
- encodePasswordPreparedReady,
14
- type PasswordPreparedReady,
15
- type PasswordPreparedMutation,
16
- type PasswordPreparedPersistence,
17
- } from "@yielded/auth/Password";
18
- import { ProofBinding, ProofContinuationId, ProofPurpose } from "@yielded/auth/Proofs";
19
- import { SubjectId, TokenDigest } from "@yielded/auth/Schema";
20
- import {
21
- SessionInvalidationWindow,
22
- AuthenticationProof,
23
- AuthenticationRequirement,
24
- type AuthenticationRevision,
25
- } from "@yielded/auth/Sessions";
26
- import { DateTime, Effect, Redacted, Schema } from "effect";
27
-
28
- import { passwordSqlKernel } from "./password-sql";
29
-
30
- export const unavailable = () => PasswordUnavailable.make({});
31
- const Instant = Schema.Int.check(Schema.isBetween({ minimum: 0, maximum: 8640000000000000 }));
32
- const Label = Schema.NonEmptyString.check(Schema.isMaxLength(256));
33
-
34
- export const CompletionInput = Schema.Struct({
35
- moduleId: Label,
36
- purpose: ProofPurpose,
37
- continuationId: ProofContinuationId,
38
- continuationDigest: TokenDigest.check(Schema.isMaxLength(256)),
39
- binding: ProofBinding,
40
- nowMillis: Instant,
41
- });
42
-
43
- export const ContextInput = Schema.Struct({
44
- moduleId: Label,
45
- generation: PasswordPreparedConfiguration.fields.generation,
46
- digest: TokenDigest.check(Schema.isMaxLength(256)),
47
- nowMillis: Instant,
48
- });
49
-
50
- const ReserveInput = Schema.Struct({
51
- moduleId: Label,
52
- generation: PasswordPreparedConfiguration.fields.generation,
53
- intentId: PasswordPreparedIntentId,
54
- commandId: PasswordCommandId,
55
- action: PasswordAction,
56
- subjectId: SubjectId.check(Schema.isMaxLength(256)),
57
- nowMillis: Instant,
58
- policy: PasswordPreparedConfiguration,
59
- invalidation: SessionInvalidationWindow,
60
- reset: Schema.optionalKey(PasswordPreparedReset),
61
- completion: Schema.optionalKey(CompletionInput),
62
- });
63
-
64
- const reserveCodec = Schema.fromJsonString(ReserveInput);
65
-
66
- export const snapshotReserve = (input: Parameters<PasswordPreparedPersistence["reserve"]>[0]) =>
67
- Schema.encodeEffect(reserveCodec)(input).pipe(
68
- Effect.flatMap(Schema.decodeEffect(Schema.String.check(Schema.isMaxLength(131072)))),
69
- Effect.flatMap(Schema.decodeEffect(reserveCodec)),
70
- Effect.mapError(unavailable),
71
- );
72
-
73
- const reservationCodec = Schema.fromJsonString(PasswordPreparedReservation);
74
-
75
- export const encodeReservation = (input: PasswordPreparedReservation) =>
76
- snapshotPasswordPreparedReservation(input).pipe(
77
- Effect.flatMap(Schema.encodeEffect(reservationCodec)),
78
- Effect.mapError(unavailable),
79
- );
80
-
81
- export const decodeReservation = (input: string) =>
82
- Schema.decodeEffect(Schema.String.check(Schema.isMaxLength(131072)))(input).pipe(
83
- Effect.flatMap(Schema.decodeEffect(reservationCodec)),
84
- Effect.flatMap(snapshotPasswordPreparedReservation),
85
- Effect.mapError(unavailable),
86
- );
87
-
88
- export const reservationOf = (ready: PasswordPreparedReady): PasswordPreparedReservation => {
89
- const {
90
- replacement: _replacement,
91
- challenge: _challenge,
92
- baseEvidence: _evidence,
93
- digest: _digest,
94
- issuedAtMillis: _issued,
95
- expiresAtMillis: _expires,
96
- ...reservation
97
- } = ready;
98
-
99
- return { ...reservation, _tag: "Preparing" };
100
- };
101
-
102
- export const sameRevision = (a: AuthenticationRevision, b: AuthenticationRevision) =>
103
- a.subjectId === b.subjectId &&
104
- a.securityRevision === b.securityRevision &&
105
- a.credentials.length === b.credentials.length &&
106
- a.credentials.every((c) =>
107
- b.credentials.some((d) => c.credentialId === d.credentialId && c.revision === d.revision),
108
- );
109
-
110
- const scopeJson = Schema.encodeSync(Schema.fromJsonString(Schema.Array(Schema.String)));
111
- const invalidationJson = Schema.encodeSync(Schema.fromJsonString(SessionInvalidationWindow));
112
- const proofJson = Schema.encodeSync(Schema.fromJsonString(AuthenticationProof));
113
-
114
- export const identifierScope = (
115
- record: Pick<PasswordPreparedReservation, "credential" | "revision">,
116
- ) =>
117
- record.credential === undefined
118
- ? scopeJson(["prepared-subject", record.revision.subjectId])
119
- : scopeJson([
120
- "prepared-identifier",
121
- record.credential.identifier.namespace,
122
- record.credential.identifier.value,
123
- ]);
124
-
125
- const credentialCodec = Schema.fromJsonString(PasswordCredentialSnapshot);
126
-
127
- const sameCredential = Effect.fn("DrizzlePasswordPrepared.sameCredential")(function* (
128
- a: PasswordPreparedReservation["credential"],
129
- b: PasswordPreparedReservation["credential"],
130
- ) {
131
- if (a === undefined || b === undefined) return a === b;
132
-
133
- return (
134
- (yield* Schema.encodeEffect(credentialCodec)(a).pipe(Effect.mapError(unavailable))) ===
135
- (yield* Schema.encodeEffect(credentialCodec)(b).pipe(Effect.mapError(unavailable)))
136
- );
137
- });
138
-
139
- const requirementJson = Schema.encodeSync(
140
- Schema.fromJsonString(AuthenticationRequirement.fields.alternatives),
141
- );
142
-
143
- const requirementShape = (value: AuthenticationRequirement) => requirementJson(value.alternatives);
144
-
145
- export const snapshotMutation = Effect.fn("DrizzlePasswordPrepared.snapshotMutation")(function* (
146
- input: PasswordPreparedMutation,
147
- ) {
148
- const intent = yield* snapshotPasswordPreparedReady(input.intent);
149
- const mutation = yield* passwordSqlKernel.snapshotMutationInput(input.mutation);
150
-
151
- const capturedRequirement = yield* Schema.decodeEffect(PasswordPreparedRequirement)(
152
- input.capturedRequirement,
153
- ).pipe(Effect.mapError(unavailable));
154
-
155
- const currentRequirement = yield* Schema.decodeEffect(PasswordPreparedRequirement)(
156
- input.currentRequirement,
157
- ).pipe(Effect.mapError(unavailable));
158
-
159
- const original = intent.challenge,
160
- actual = mutation.authorization.challenge;
161
-
162
- if (
163
- mutation.moduleId !== intent.moduleId ||
164
- mutation.commandId !== intent.commandId ||
165
- !sameRevision(mutation.expectedRevision, intent.revision) ||
166
- !(yield* sameCredential(mutation.credential, intent.credential)) ||
167
- Redacted.value(mutation.replacement.verifier) !== Redacted.value(intent.replacement.verifier) ||
168
- mutation.replacement.normalization !== intent.replacement.normalization ||
169
- actual.moduleId !== original.moduleId ||
170
- actual.action !== original.action ||
171
- actual.commandId !== original.commandId ||
172
- actual.bindingDigest !== original.bindingDigest ||
173
- actual.targetCredentialId !== original.targetCredentialId ||
174
- !sameRevision(actual.revision, original.revision) ||
175
- invalidationJson(mutation.invalidation) !== invalidationJson(intent.invalidation) ||
176
- requirementShape(capturedRequirement) !== requirementShape(intent.capturedRequirement) ||
177
- capturedRequirement.maximumAgeMillis > intent.capturedRequirement.maximumAgeMillis
178
- )
179
- return yield* unavailable();
180
-
181
- return { intent, mutation, capturedRequirement, currentRequirement, nowMillis: input.nowMillis };
182
- });
183
-
184
- export const evidenceCurrent = (
185
- input: PasswordPreparedMutation,
186
- current: AuthenticationRequirement,
187
- now: number,
188
- ) => {
189
- const requirements = [
190
- input.mutation.authorization.requirement,
191
- input.intent.capturedRequirement,
192
- input.capturedRequirement,
193
- current,
194
- input.currentRequirement,
195
- ];
196
-
197
- if (
198
- requirementShape(input.currentRequirement) !== requirementShape(current) ||
199
- input.currentRequirement.maximumAgeMillis > current.maximumAgeMillis ||
200
- now < input.intent.issuedAtMillis ||
201
- now >= input.intent.expiresAtMillis ||
202
- !requirements.every((requirement) =>
203
- passwordSqlKernel.evidenceSatisfiedAt(
204
- input.mutation.authorization.evidence,
205
- requirement,
206
- now,
207
- ),
208
- )
209
- )
210
- return false;
211
- const age = Math.min(...requirements.map((requirement) => requirement.maximumAgeMillis));
212
-
213
- return (input.intent.baseEvidence?.proofs ?? []).every((proof) => {
214
- const verified = DateTime.toEpochMillis(proof.verifiedAt);
215
-
216
- return (
217
- verified <= now &&
218
- now - verified < age &&
219
- input.mutation.authorization.evidence.proofs.some(
220
- (actual) => proofJson(actual) === proofJson(proof),
221
- )
222
- );
223
- });
224
- };
225
-
226
- export const sameReady = Effect.fn("DrizzlePasswordPrepared.sameReady")(function* (
227
- a: PasswordPreparedReady,
228
- b: PasswordPreparedReady,
229
- ) {
230
- return (yield* encodePasswordPreparedReady(a)) === (yield* encodePasswordPreparedReady(b));
231
- });
@@ -1,169 +0,0 @@
1
- import {
2
- type NativeDatabase,
3
- CurrentPasswordPreparedTransaction,
4
- PasswordPreparedPostconditions,
5
- PasswordPreparedJournalGuards,
6
- type PasswordPreparedPostcondition,
7
- } from "@yielded/auth-persistence/Adapter";
8
- import {
9
- coordinateCommit,
10
- hasCommitScope,
11
- type PreparedCommit,
12
- LifecycleHooks,
13
- } from "@yielded/auth/Hooks";
14
- import { PasswordUnavailable, type PasswordPreparedPersistence } from "@yielded/auth/Password";
15
- /* oxlint-disable no-explicit-any -- concrete driver modules restore native table/database types. */
16
- import { type Context, Cause, Effect, Layer } from "effect";
17
- import type * as SqlError from "effect/sql/SqlError";
18
-
19
- import { makeSqlPasswordPreparedPersistence } from "./password-prepared-sql";
20
- import { CurrentPasswordSql } from "./password-sql";
21
- import type { PasswordSqlDatabase } from "./password-sql";
22
- import {
23
- passwordOptions,
24
- type PasswordTargetConfiguration,
25
- type PasswordCoordinatorError,
26
- } from "./password-target";
27
- import { validateDrizzleStorage } from "./storage-validation";
28
-
29
- export const makeTargetPasswordPreparedPersistenceServices = (
30
- mapping: any,
31
- configuration: PasswordTargetConfiguration,
32
- proofMapping?: any,
33
- ) =>
34
- Effect.gen(function* () {
35
- return {
36
- passwordPreparedPersistence: yield* makeSqlPasswordPreparedPersistence(
37
- mapping,
38
- passwordOptions(configuration, proofMapping),
39
- ),
40
- };
41
- });
42
-
43
- export const coordinateTargetPasswordPreparedPersistence = <Transaction, A, E, R>(
44
- database: {
45
- readonly transaction: <Out, Err, Env>(
46
- body: (transaction: Transaction) => Effect.Effect<Out, Err, Env>,
47
- ) => Effect.Effect<Out, Err | SqlError.SqlError, Env>;
48
- },
49
- mapping: any,
50
- configuration: PasswordTargetConfiguration,
51
- proofMapping: any | undefined,
52
- owner: (
53
- transaction: Transaction,
54
- services: { readonly passwordPreparedPersistence: PasswordPreparedPersistence },
55
- ) => Effect.Effect<A, E, R>,
56
- ): Effect.Effect<A, PasswordCoordinatorError<E>, R | LifecycleHooks | NativeDatabase> =>
57
- Effect.gen(function* () {
58
- const hooks = yield* LifecycleHooks;
59
-
60
- if (yield* hasCommitScope) return yield* PasswordUnavailable.make({});
61
- yield* configuration.coordinatorGuard ?? configuration.standaloneGuard;
62
-
63
- yield* validateDrizzleStorage({ ...mapping, proof: proofMapping }).pipe(
64
- Effect.mapError(() => PasswordUnavailable.make({})),
65
- );
66
-
67
- const result = yield* coordinateCommit(
68
- () =>
69
- database.transaction((transaction) =>
70
- Effect.gen(function* () {
71
- const guards: Array<PreparedCommit<void>> = [];
72
- const postconditions: Array<PasswordPreparedPostcondition> = [];
73
- let poisoned = false;
74
- let acceptingPostconditions = true;
75
-
76
- const services = yield* makeSqlPasswordPreparedPersistence(
77
- mapping,
78
- passwordOptions(configuration, proofMapping, true),
79
- ).pipe(
80
- Effect.provideService(
81
- CurrentPasswordSql,
82
- transaction as unknown as PasswordSqlDatabase,
83
- ),
84
- );
85
-
86
- const protect = <Out, Err, Env>(effect: Effect.Effect<Out, Err, Env>) =>
87
- effect.pipe(
88
- Effect.onError(() =>
89
- Effect.sync(() => {
90
- poisoned = true;
91
- }),
92
- ),
93
- );
94
-
95
- const value = yield* owner(transaction, {
96
- passwordPreparedPersistence: {
97
- reserve: (input, prepare) => protect(services.reserve(input, prepare)),
98
- publishReady: (input, prepare) => protect(services.publishReady(input, prepare)),
99
- context: (input) => protect(services.context(input)),
100
- complete: (input, prepare) => protect(services.complete(input, prepare)),
101
- resetWithProof: (input, prepare) =>
102
- protect(services.resetWithProof(input, prepare)),
103
- cancel: (input, prepare) => protect(services.cancel(input, prepare)),
104
- cleanup: (input, prepare) => protect(services.cleanup(input, prepare)),
105
- },
106
- }).pipe(
107
- Effect.provideService(PasswordPreparedJournalGuards, {
108
- register: (guard) => {
109
- if (!acceptingPostconditions) return false;
110
- guards.push(guard);
111
-
112
- return true;
113
- },
114
- }),
115
- Effect.provideService(PasswordPreparedPostconditions, {
116
- register: (check) => {
117
- if (!acceptingPostconditions) return false;
118
- postconditions.push(check);
119
-
120
- return true;
121
- },
122
- }),
123
- Effect.ensuring(
124
- Effect.sync(() => {
125
- acceptingPostconditions = false;
126
- }),
127
- ),
128
- );
129
-
130
- if (poisoned) return yield* PasswordUnavailable.make({});
131
- for (const guard of guards) {
132
- const status = yield* Effect.result(guard.read);
133
-
134
- if (status._tag === "Success" || status.failure._tag !== "CommitPending")
135
- return yield* PasswordUnavailable.make({});
136
- }
137
-
138
- for (const check of postconditions)
139
- yield* check.pipe(
140
- Effect.provideService(
141
- CurrentPasswordPreparedTransaction,
142
- transaction as unknown as PasswordSqlDatabase,
143
- ),
144
- Effect.catchCause((cause) =>
145
- Effect.failCause(Cause.map(cause, () => PasswordUnavailable.make({}))),
146
- ),
147
- );
148
-
149
- return value;
150
- }),
151
- ),
152
- { mode: configuration.mode },
153
- ).pipe(Effect.provideService(LifecycleHooks, hooks));
154
-
155
- return result.value;
156
- });
157
-
158
- export const passwordPreparedPersistenceLayer = <Id, E, R>(
159
- tag: Context.Key<Id, PasswordPreparedPersistence>,
160
- services: Effect.Effect<
161
- { readonly passwordPreparedPersistence: PasswordPreparedPersistence },
162
- E,
163
- R
164
- >,
165
- ) =>
166
- Layer.effect(
167
- tag,
168
- Effect.map(services, (value) => value.passwordPreparedPersistence),
169
- );