@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,23 +1,64 @@
1
- import type {
2
- TransactionNativeDatabase,
3
- SessionSqlDatabase,
4
- PasswordSqlDatabase,
5
- EmailSqlDatabase,
6
- ProofSqlDatabase,
7
- } from "@yielded/auth-persistence/Adapter";
8
- import { Effect } from "effect";
1
+ import type { SQL } from "drizzle-orm";
2
+ import type { EffectDrizzleQueryError } from "drizzle-orm/effect-core";
3
+ import { Context, Effect } from "effect";
4
+ import type { SqlClient } from "effect/sql/SqlClient";
5
+ import type { SqlError } from "effect/sql/SqlError";
6
+ import type { Statement } from "effect/sql/Statement";
9
7
 
10
- /** Drizzle omits its captured $client from database class types, and only D1
11
- * exposes batch. Its generic query builders implement the SQL kernel contracts
12
- * through drizzleQueryOperations. The selected driver mode controls native calls. */
8
+ /** Only installed driver handles are erased; domain values keep their schemas. */
9
+ export interface NativePhysicalDatabase {
10
+ readonly $client: SqlClient & {
11
+ readonly batch: (
12
+ statements: ReadonlyArray<Statement<unknown>>,
13
+ ) => Effect.Effect<unknown, SqlError>;
14
+ };
15
+ readonly transaction: <A, E, R>(
16
+ body: (transaction: NativeDatabaseHandle) => Effect.Effect<A, E, R>,
17
+ ) => Effect.Effect<A, E | SqlError, R>;
18
+ }
19
+
20
+ /** The captured native Drizzle owner; never a shared/raw SQL resource. */
21
+ export class NativeDatabase extends Context.Service<NativeDatabase, NativePhysicalDatabase>()(
22
+ "effect-auth/persistence/NativeDatabase",
23
+ ) {}
24
+
25
+ export type NativeDatabaseHandle = NativeSqlDatabase & NativePhysicalDatabase;
26
+
27
+ /* oxlint-disable no-explicit-any -- only native query-builder handles are erased; domain values use mapped codecs. */
28
+ export interface NativeSqlQuery<A = ReadonlyArray<any>> extends Effect.Effect<
29
+ A,
30
+ EffectDrizzleQueryError | SqlError
31
+ > {
32
+ readonly getSQL: () => SQL;
33
+ readonly toSQL: () => { readonly sql: string; readonly params: ReadonlyArray<unknown> };
34
+ readonly from: (...args: ReadonlyArray<any>) => NativeSqlQuery<A>;
35
+ readonly where: (...args: ReadonlyArray<any>) => NativeSqlQuery<A>;
36
+ readonly limit: (...args: ReadonlyArray<any>) => NativeSqlQuery<A>;
37
+ readonly orderBy: (...args: ReadonlyArray<any>) => NativeSqlQuery<A>;
38
+ readonly for: (...args: ReadonlyArray<any>) => NativeSqlQuery<A>;
39
+ readonly set: (...args: ReadonlyArray<any>) => NativeSqlQuery<A>;
40
+ readonly values: (...args: ReadonlyArray<any>) => NativeSqlQuery<A>;
41
+ readonly returning: (...args: ReadonlyArray<any>) => NativeSqlQuery<A>;
42
+ readonly $returningId: (...args: ReadonlyArray<any>) => NativeSqlQuery<A>;
43
+ readonly innerJoin: (...args: ReadonlyArray<any>) => NativeSqlQuery<A>;
44
+ readonly onConflictDoNothing: (...args: ReadonlyArray<any>) => NativeSqlQuery<A>;
45
+ readonly onDuplicateKeyUpdate: (...args: ReadonlyArray<any>) => NativeSqlQuery<A>;
46
+ }
47
+
48
+ export interface NativeSqlDatabase {
49
+ readonly select: (...args: ReadonlyArray<any>) => NativeSqlQuery;
50
+ readonly insert: (...args: ReadonlyArray<any>) => NativeSqlQuery;
51
+ readonly update: (...args: ReadonlyArray<any>) => NativeSqlQuery;
52
+ readonly delete: (...args: ReadonlyArray<any>) => NativeSqlQuery;
53
+ readonly transaction: <A, E, R>(
54
+ body: (transaction: NativeSqlDatabase) => Effect.Effect<A, E, R>,
55
+ ) => Effect.Effect<A, E | SqlError, R>;
56
+ }
57
+
58
+ /** Driver makers supply actual query objects and their captured native client.
59
+ * Drizzle class declarations omit that client and D1's batch method. */
13
60
  export const nativeDatabase = <Database, E, R>(acquire: Effect.Effect<Database, E, R>) =>
14
61
  Effect.map(
15
62
  acquire,
16
- (database) =>
17
- database as unknown as Database &
18
- TransactionNativeDatabase &
19
- SessionSqlDatabase &
20
- PasswordSqlDatabase &
21
- EmailSqlDatabase &
22
- ProofSqlDatabase,
63
+ (database) => database as unknown as Database & NativePhysicalDatabase & NativeSqlDatabase,
23
64
  );
@@ -11,7 +11,7 @@ import {
11
11
  is,
12
12
  Param,
13
13
  Placeholder,
14
- type SQL,
14
+ SQL,
15
15
  Table,
16
16
  sql,
17
17
  type BuildQueryConfig,
@@ -155,105 +155,122 @@ export const makeDrizzleSqlTables = (
155
155
  const { database, dialect } = capture(capturedDatabase);
156
156
  const compile = compileWith(dialect);
157
157
 
158
- return makeNativeSqlTables(client, (_client, physical): SqlTable => {
159
- if (!is(physical, Table)) return invalid("Expected a Drizzle table");
160
- const columns = getTableColumns(physical);
161
- const entries = Object.entries(columns);
158
+ return makeNativeSqlTables(
159
+ client,
160
+ (_client, physical): SqlTable => {
161
+ if (!is(physical, Table)) return invalid("Expected a Drizzle table");
162
+ const columns = getTableColumns(physical);
163
+ const entries = Object.entries(columns);
162
164
 
163
- const schema = is(physical, PgTable)
164
- ? getPgTableConfig(physical).schema
165
- : is(physical, MySqlTable)
166
- ? getMysqlTableConfig(physical).schema
167
- : undefined;
165
+ const schema = is(physical, PgTable)
166
+ ? getPgTableConfig(physical).schema
167
+ : is(physical, MySqlTable)
168
+ ? getMysqlTableConfig(physical).schema
169
+ : undefined;
168
170
 
169
- const table = { name: getTableName(physical), ...(schema === undefined ? {} : { schema }) };
171
+ const table = { name: getTableName(physical), ...(schema === undefined ? {} : { schema }) };
170
172
 
171
- const getColumn = (key: string) => {
172
- const column = Object.hasOwn(columns, key) ? columns[key] : undefined;
173
+ const getColumn = (key: string) => {
174
+ const column = Object.hasOwn(columns, key) ? columns[key] : undefined;
173
175
 
174
- if (column === undefined) return invalid("Missing Drizzle column");
176
+ if (column === undefined) return invalid("Missing Drizzle column");
175
177
 
176
- return column;
177
- };
178
+ return column;
179
+ };
178
180
 
179
- const bind = (alias?: string): SqlTable => {
180
- const reference = (key: string) => {
181
- const column = getColumn(key);
181
+ const bind = (alias?: string): SqlTable => {
182
+ const reference = (key: string) => {
183
+ const column = getColumn(key);
182
184
 
183
- return alias === undefined
184
- ? sql`${column}`
185
- : sql`${sql.identifier(alias)}.${sql.identifier(column.name)}`;
186
- };
185
+ return alias === undefined
186
+ ? sql`${column}`
187
+ : sql`${sql.identifier(alias)}.${sql.identifier(column.name)}`;
188
+ };
187
189
 
188
- return {
189
- name: compile(
190
- alias === undefined ? sql`${physical}` : sql`${physical} AS ${sql.identifier(alias)}`,
191
- ),
192
- as: bind,
193
- column: (key) => compile(reference(key)),
194
- unencodedTextColumn: (key) => {
190
+ const selection = (key: string) => {
195
191
  const column = getColumn(key);
196
192
 
197
- return ["PgText", "PgVarchar", "SQLiteText", "MySqlText", "MySqlVarChar"].includes(
198
- column.columnType,
199
- ) &&
200
- Predicate.hasProperty(column.mapToDriverValue, "isNoop") &&
201
- column.mapToDriverValue.isNoop === true &&
202
- Predicate.hasProperty(column.mapFromDriverValue, "isNoop") &&
203
- column.mapFromDriverValue.isNoop === true &&
204
- (dialect.codecs === undefined ||
205
- (Predicate.hasProperty(dialect.codecs, "get") &&
206
- typeof dialect.codecs.get === "function" &&
207
- (["cast", "normalize", "castParam", "normalizeParam"] as const).every(
208
- (kind) => dialect.codecs?.get(column, kind) === undefined,
209
- )))
210
- ? { table, name: column.name }
211
- : undefined;
212
- },
213
- fields: (prefix) =>
214
- compile(
215
- sql.join(
216
- entries.map(([key, column], index) => {
217
- const selection =
218
- dialect.codecs === undefined
219
- ? reference(key)
220
- : dialect.codecs.apply(column, "cast", reference(key));
193
+ return dialect.codecs === undefined
194
+ ? reference(key)
195
+ : dialect.codecs.apply(column, "cast", reference(key));
196
+ };
221
197
 
222
- return sql`${selection} as ${sql.identifier(nativeSqlAlias(prefix, index))}`;
198
+ return {
199
+ keys: entries.map(([key]) => key),
200
+ name: compile(
201
+ alias === undefined ? sql`${physical}` : sql`${physical} AS ${sql.identifier(alias)}`,
202
+ ),
203
+ as: bind,
204
+ column: (key) => compile(reference(key)),
205
+ columnName: (key) => compile(sql`${sql.identifier(getColumn(key).name)}`),
206
+ selectedColumn: (key) => compile(sql`${selection(key)}`),
207
+ unencodedTextColumn: (key) => {
208
+ const column = getColumn(key);
209
+
210
+ return ["PgText", "PgVarchar", "SQLiteText", "MySqlText", "MySqlVarChar"].includes(
211
+ column.columnType,
212
+ ) &&
213
+ Predicate.hasProperty(column.mapToDriverValue, "isNoop") &&
214
+ column.mapToDriverValue.isNoop === true &&
215
+ Predicate.hasProperty(column.mapFromDriverValue, "isNoop") &&
216
+ column.mapFromDriverValue.isNoop === true &&
217
+ (dialect.codecs === undefined ||
218
+ (Predicate.hasProperty(dialect.codecs, "get") &&
219
+ typeof dialect.codecs.get === "function" &&
220
+ (["cast", "normalize", "castParam", "normalizeParam"] as const).every(
221
+ (kind) => dialect.codecs?.get(column, kind) === undefined,
222
+ )))
223
+ ? { table, name: column.name }
224
+ : undefined;
225
+ },
226
+ fields: (prefix) =>
227
+ compile(
228
+ sql.join(
229
+ entries.map(
230
+ ([key], index) =>
231
+ sql`${selection(key)} as ${sql.identifier(nativeSqlAlias(prefix, index))}`,
232
+ ),
233
+ sql`, `,
234
+ ),
235
+ ),
236
+ decode: (row, prefix) =>
237
+ Object.fromEntries(
238
+ entries.map(([key, column], index) => {
239
+ const alias = nativeSqlAlias(prefix, index);
240
+
241
+ if (!Object.hasOwn(row, alias)) return invalid("Missing SQL projection field");
242
+ const value = row[alias];
243
+
244
+ return [
245
+ key,
246
+ value === null
247
+ ? null
248
+ : column.mapFromDriverValue(
249
+ dialect.codecs === undefined
250
+ ? value
251
+ : dialect.codecs.apply(column, "normalize", value),
252
+ ),
253
+ ];
223
254
  }),
224
- sql`, `,
225
255
  ),
226
- ),
227
- decode: (row, prefix) =>
228
- Object.fromEntries(
229
- entries.map(([key, column], index) => {
230
- const alias = nativeSqlAlias(prefix, index);
231
-
232
- if (!Object.hasOwn(row, alias)) return invalid("Missing SQL projection field");
233
- const value = row[alias];
234
-
235
- return [
236
- key,
237
- value === null
238
- ? null
239
- : column.mapFromDriverValue(
240
- dialect.codecs === undefined
241
- ? value
242
- : dialect.codecs.apply(column, "normalize", value),
243
- ),
244
- ];
245
- }),
246
- ),
247
- value: (key, value) => {
248
- const column = getColumn(key);
249
-
250
- return Statement.isFragment(value) ? value : compile(sql`${sql.param(value, column)}`);
251
- },
252
- insert: (values) => compile(database.insert(physical).values(writeValues(values)).getSQL()),
253
- update: (values) => compile(database.update(physical).set(writeValues(values)).getSQL()),
256
+ value: (key, value) => {
257
+ const column = getColumn(key);
258
+
259
+ return Statement.isFragment(value) ? value : compile(sql`${sql.param(value, column)}`);
260
+ },
261
+ insert: (values) =>
262
+ compile(database.insert(physical).values(writeValues(values)).getSQL()),
263
+ update: (values) => compile(database.update(physical).set(writeValues(values)).getSQL()),
264
+ };
254
265
  };
255
- };
256
266
 
257
- return bind();
258
- });
267
+ return bind();
268
+ },
269
+ (value) => {
270
+ if (Statement.isFragment(value)) return value;
271
+ if (!is(value, SQL)) return invalid("Expected a Drizzle SQL expression");
272
+
273
+ return compile(value);
274
+ },
275
+ );
259
276
  };
@@ -0,0 +1,120 @@
1
+ import {
2
+ captureSqlBatchStatements,
3
+ makeSqlCommitExecutor,
4
+ requireStandalone,
5
+ SqlBatchCommit,
6
+ SqlNativeCommit,
7
+ } from "@yielded/auth-persistence/Adapter";
8
+ import { hasCommitScope, type LifecycleHooks } from "@yielded/auth/Hooks";
9
+ import { Effect } from "effect";
10
+ import { SqlClient } from "effect/sql";
11
+
12
+ import { D1BatchStatements } from "./D1BatchStatements";
13
+ import { NativeDatabase, type NativeDatabaseHandle } from "./native-database";
14
+ import { makeDrizzleSqlTables } from "./native-sql-table";
15
+ import {
16
+ makeDrizzleTransactionHandle,
17
+ type DrizzleTransactionConstructor,
18
+ type DrizzleTransactionFactory,
19
+ } from "./transaction-handle";
20
+ import { makeMysqlTransactionHandle, mysqlNativeCommit } from "./transaction-mysql";
21
+
22
+ export interface NativeTargetConfiguration {
23
+ readonly mode: "native" | "batch";
24
+ readonly dialect: "pg" | "sqlite" | "mysql";
25
+ readonly transactionConstructor?: DrizzleTransactionConstructor;
26
+ readonly transactionFactory?: DrizzleTransactionFactory;
27
+ }
28
+
29
+ const physical = <A, E, R>(
30
+ work: Effect.Effect<A, E, R>,
31
+ database: Pick<NativeDatabaseHandle, "$client">,
32
+ configuration: NativeTargetConfiguration,
33
+ ) =>
34
+ configuration.dialect === "mysql"
35
+ ? Effect.provideService(work, SqlNativeCommit, mysqlNativeCommit(database.$client))
36
+ : work;
37
+
38
+ /** Pure physical metadata and the exact driver's commit capability. Domain
39
+ * mappings, row codecs and decisions stay in their shared native workflow. */
40
+ export const nativeTarget = Effect.fnUntraced(function* (configuration: NativeTargetConfiguration) {
41
+ const database = yield* NativeDatabase;
42
+
43
+ const batch: SqlBatchCommit["Service"] = {
44
+ client: database.$client,
45
+ execute: (statements) => database.$client.batch(statements).pipe(Effect.asVoid),
46
+ };
47
+
48
+ return {
49
+ tables: makeDrizzleSqlTables(database.$client, database),
50
+ batch: configuration.mode === "batch" ? batch : undefined,
51
+ provide: <A, E, R>(work: Effect.Effect<A, E, R>) =>
52
+ physical(
53
+ work.pipe(
54
+ Effect.provideService(SqlClient.SqlClient, database.$client),
55
+ Effect.provideService(SqlBatchCommit, configuration.mode === "batch" ? batch : undefined),
56
+ ),
57
+ database,
58
+ configuration,
59
+ ),
60
+ };
61
+ });
62
+
63
+ export const coordinateNativeTarget = <Failure, Services, Transaction, A, E, R, ES, RS>(
64
+ unavailable: () => Failure,
65
+ database: NativeDatabaseHandle,
66
+ configuration: NativeTargetConfiguration,
67
+ make: Effect.Effect<Services, ES, RS>,
68
+ body: (transaction: Transaction, services: Services) => Effect.Effect<A, E, R>,
69
+ ): Effect.Effect<
70
+ A,
71
+ E | Failure,
72
+ Exclude<R, D1BatchStatements> | Exclude<RS, NativeDatabase> | LifecycleHooks
73
+ > =>
74
+ physical(
75
+ Effect.gen(function* () {
76
+ if (yield* hasCommitScope) return yield* Effect.fail(unavailable());
77
+ if (configuration.mode !== "batch")
78
+ yield* requireStandalone(unavailable, database.$client.transactionService);
79
+ const executor = yield* makeSqlCommitExecutor(unavailable);
80
+
81
+ const work = Effect.gen(function* () {
82
+ const services = yield* make.pipe(
83
+ Effect.mapError(unavailable),
84
+ Effect.provideService(NativeDatabase, database),
85
+ );
86
+
87
+ const transaction = yield* Effect.suspend(() =>
88
+ configuration.mode === "batch"
89
+ ? Effect.succeed(undefined)
90
+ : configuration.dialect === "mysql"
91
+ ? makeMysqlTransactionHandle(database)
92
+ : Effect.succeed(
93
+ configuration.transactionFactory?.(database) ??
94
+ makeDrizzleTransactionHandle(database, configuration.transactionConstructor),
95
+ ),
96
+ ).pipe(Effect.mapError(unavailable));
97
+
98
+ const collector = yield* captureSqlBatchStatements;
99
+
100
+ // The validated physical driver constructor owns this class boundary.
101
+ return yield* body(transaction as Transaction, services).pipe(
102
+ Effect.provideService(D1BatchStatements, {
103
+ append: (statement) => collector.append(statement).pipe(Effect.orDie),
104
+ }),
105
+ );
106
+ });
107
+
108
+ return yield* configuration.mode === "batch"
109
+ ? executor.coordinateBatch(work)
110
+ : executor.coordinate(work);
111
+ }).pipe(
112
+ Effect.provideService(SqlClient.SqlClient, database.$client),
113
+ Effect.provideService(SqlBatchCommit, {
114
+ client: database.$client,
115
+ execute: (statements) => database.$client.batch(statements).pipe(Effect.asVoid),
116
+ }),
117
+ ),
118
+ database,
119
+ configuration,
120
+ );