@yielded/auth-persistence-drizzle 0.1.0-beta.0

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 (401) hide show
  1. package/README.md +17 -0
  2. package/dist/D1.d.mts +963 -0
  3. package/dist/D1.mjs +29 -0
  4. package/dist/D1.mjs.map +1 -0
  5. package/dist/Libsql.d.mts +2134 -0
  6. package/dist/Libsql.mjs +77 -0
  7. package/dist/Libsql.mjs.map +1 -0
  8. package/dist/Mysql2.d.mts +1817 -0
  9. package/dist/Mysql2.mjs +55 -0
  10. package/dist/Mysql2.mjs.map +1 -0
  11. package/dist/Pglite.d.mts +1821 -0
  12. package/dist/Pglite.mjs +53 -0
  13. package/dist/Pglite.mjs.map +1 -0
  14. package/dist/Postgres.d.mts +1821 -0
  15. package/dist/Postgres.mjs +53 -0
  16. package/dist/Postgres.mjs.map +1 -0
  17. package/dist/SqliteBun.d.mts +2129 -0
  18. package/dist/SqliteBun.mjs +70 -0
  19. package/dist/SqliteBun.mjs.map +1 -0
  20. package/dist/SqliteDo.d.mts +2181 -0
  21. package/dist/SqliteDo.mjs +105 -0
  22. package/dist/SqliteDo.mjs.map +1 -0
  23. package/dist/SqliteNode.d.mts +2129 -0
  24. package/dist/SqliteNode.mjs +70 -0
  25. package/dist/SqliteNode.mjs.map +1 -0
  26. package/dist/SqliteWasm.d.mts +2132 -0
  27. package/dist/SqliteWasm.mjs +70 -0
  28. package/dist/SqliteWasm.mjs.map +1 -0
  29. package/dist/_virtual/_rolldown/runtime.mjs +13 -0
  30. package/dist/drizzle/D1BatchStatements.d.mts +10 -0
  31. package/dist/drizzle/D1BatchStatements.mjs +8 -0
  32. package/dist/drizzle/D1BatchStatements.mjs.map +1 -0
  33. package/dist/drizzle/SuppliedService.d.mts +9 -0
  34. package/dist/drizzle/d1-emails.d.mts +61 -0
  35. package/dist/drizzle/d1-emails.mjs +578 -0
  36. package/dist/drizzle/d1-emails.mjs.map +1 -0
  37. package/dist/drizzle/d1-generated-statement.mjs +79 -0
  38. package/dist/drizzle/d1-generated-statement.mjs.map +1 -0
  39. package/dist/drizzle/d1-identity.d.mts +30 -0
  40. package/dist/drizzle/d1-identity.mjs +118 -0
  41. package/dist/drizzle/d1-identity.mjs.map +1 -0
  42. package/dist/drizzle/d1-oauth.d.mts +300 -0
  43. package/dist/drizzle/d1-oauth.mjs +76 -0
  44. package/dist/drizzle/d1-oauth.mjs.map +1 -0
  45. package/dist/drizzle/d1-passkey.d.mts +47 -0
  46. package/dist/drizzle/d1-passkey.mjs +95 -0
  47. package/dist/drizzle/d1-passkey.mjs.map +1 -0
  48. package/dist/drizzle/d1-password-prepared.d.mts +24 -0
  49. package/dist/drizzle/d1-password-prepared.mjs +460 -0
  50. package/dist/drizzle/d1-password-prepared.mjs.map +1 -0
  51. package/dist/drizzle/d1-passwords.d.mts +86 -0
  52. package/dist/drizzle/d1-passwords.mjs +1003 -0
  53. package/dist/drizzle/d1-passwords.mjs.map +1 -0
  54. package/dist/drizzle/d1-phone.d.mts +23 -0
  55. package/dist/drizzle/d1-phone.mjs +30 -0
  56. package/dist/drizzle/d1-phone.mjs.map +1 -0
  57. package/dist/drizzle/d1-planning.d.mts +11 -0
  58. package/dist/drizzle/d1-planning.mjs +43 -0
  59. package/dist/drizzle/d1-planning.mjs.map +1 -0
  60. package/dist/drizzle/d1-proofs.d.mts +79 -0
  61. package/dist/drizzle/d1-proofs.mjs +829 -0
  62. package/dist/drizzle/d1-proofs.mjs.map +1 -0
  63. package/dist/drizzle/d1-sessions.d.mts +66 -0
  64. package/dist/drizzle/d1-sessions.mjs +965 -0
  65. package/dist/drizzle/d1-sessions.mjs.map +1 -0
  66. package/dist/drizzle/d1-totp.d.mts +23 -0
  67. package/dist/drizzle/d1-totp.mjs +27 -0
  68. package/dist/drizzle/d1-totp.mjs.map +1 -0
  69. package/dist/drizzle/email-model.d.mts +30 -0
  70. package/dist/drizzle/email-model.mjs +2 -0
  71. package/dist/drizzle/email-registration.d.mts +29 -0
  72. package/dist/drizzle/email-registration.mjs +236 -0
  73. package/dist/drizzle/email-registration.mjs.map +1 -0
  74. package/dist/drizzle/email-sql.d.mts +1 -0
  75. package/dist/drizzle/email-sql.mjs +9 -0
  76. package/dist/drizzle/email-sql.mjs.map +1 -0
  77. package/dist/drizzle/email-target.d.mts +19 -0
  78. package/dist/drizzle/email-target.mjs +72 -0
  79. package/dist/drizzle/email-target.mjs.map +1 -0
  80. package/dist/drizzle/model.d.mts +245 -0
  81. package/dist/drizzle/model.mjs +55 -0
  82. package/dist/drizzle/model.mjs.map +1 -0
  83. package/dist/drizzle/mysql-emails.d.mts +70 -0
  84. package/dist/drizzle/mysql-emails.mjs +38 -0
  85. package/dist/drizzle/mysql-emails.mjs.map +1 -0
  86. package/dist/drizzle/mysql-identity.d.mts +21 -0
  87. package/dist/drizzle/mysql-identity.mjs +93 -0
  88. package/dist/drizzle/mysql-identity.mjs.map +1 -0
  89. package/dist/drizzle/mysql-password-prepared.d.mts +29 -0
  90. package/dist/drizzle/mysql-password-prepared.mjs +16 -0
  91. package/dist/drizzle/mysql-password-prepared.mjs.map +1 -0
  92. package/dist/drizzle/mysql-passwords.d.mts +85 -0
  93. package/dist/drizzle/mysql-passwords.mjs +38 -0
  94. package/dist/drizzle/mysql-passwords.mjs.map +1 -0
  95. package/dist/drizzle/mysql-proofs.d.mts +74 -0
  96. package/dist/drizzle/mysql-proofs.mjs +23 -0
  97. package/dist/drizzle/mysql-proofs.mjs.map +1 -0
  98. package/dist/drizzle/mysql-sessions.d.mts +91 -0
  99. package/dist/drizzle/mysql-sessions.mjs +53 -0
  100. package/dist/drizzle/mysql-sessions.mjs.map +1 -0
  101. package/dist/drizzle/mysql.d.mts +69 -0
  102. package/dist/drizzle/mysql.mjs +218 -0
  103. package/dist/drizzle/mysql.mjs.map +1 -0
  104. package/dist/drizzle/oauth-accounts.mjs +358 -0
  105. package/dist/drizzle/oauth-accounts.mjs.map +1 -0
  106. package/dist/drizzle/oauth-connected-access.mjs +210 -0
  107. package/dist/drizzle/oauth-connected-access.mjs.map +1 -0
  108. package/dist/drizzle/oauth-connected-collection.mjs +202 -0
  109. package/dist/drizzle/oauth-connected-collection.mjs.map +1 -0
  110. package/dist/drizzle/oauth-connected-custody.mjs +146 -0
  111. package/dist/drizzle/oauth-connected-custody.mjs.map +1 -0
  112. package/dist/drizzle/oauth-connected-drivers.mjs +76 -0
  113. package/dist/drizzle/oauth-connected-drivers.mjs.map +1 -0
  114. package/dist/drizzle/oauth-connected-flow.mjs +247 -0
  115. package/dist/drizzle/oauth-connected-flow.mjs.map +1 -0
  116. package/dist/drizzle/oauth-connected-input.mjs +103 -0
  117. package/dist/drizzle/oauth-connected-input.mjs.map +1 -0
  118. package/dist/drizzle/oauth-connected-maintenance.mjs +214 -0
  119. package/dist/drizzle/oauth-connected-maintenance.mjs.map +1 -0
  120. package/dist/drizzle/oauth-connected-management.mjs +228 -0
  121. package/dist/drizzle/oauth-connected-management.mjs.map +1 -0
  122. package/dist/drizzle/oauth-connected-model.d.mts +277 -0
  123. package/dist/drizzle/oauth-connected-model.mjs +22 -0
  124. package/dist/drizzle/oauth-connected-model.mjs.map +1 -0
  125. package/dist/drizzle/oauth-connected-reference.d.mts +16 -0
  126. package/dist/drizzle/oauth-connected-reference.mjs +53 -0
  127. package/dist/drizzle/oauth-connected-reference.mjs.map +1 -0
  128. package/dist/drizzle/oauth-connected-settlement.mjs +117 -0
  129. package/dist/drizzle/oauth-connected-settlement.mjs.map +1 -0
  130. package/dist/drizzle/oauth-connected-state.d.mts +1954 -0
  131. package/dist/drizzle/oauth-connected-state.mjs +422 -0
  132. package/dist/drizzle/oauth-connected-state.mjs.map +1 -0
  133. package/dist/drizzle/oauth-connected-target.d.mts +752 -0
  134. package/dist/drizzle/oauth-connected-target.mjs +91 -0
  135. package/dist/drizzle/oauth-connected-target.mjs.map +1 -0
  136. package/dist/drizzle/oauth-drivers.mjs +51 -0
  137. package/dist/drizzle/oauth-drivers.mjs.map +1 -0
  138. package/dist/drizzle/oauth-flow.d.mts +22 -0
  139. package/dist/drizzle/oauth-flow.mjs +253 -0
  140. package/dist/drizzle/oauth-flow.mjs.map +1 -0
  141. package/dist/drizzle/oauth-input.mjs +127 -0
  142. package/dist/drizzle/oauth-input.mjs.map +1 -0
  143. package/dist/drizzle/oauth-model.d.mts +461 -0
  144. package/dist/drizzle/oauth-model.mjs +49 -0
  145. package/dist/drizzle/oauth-model.mjs.map +1 -0
  146. package/dist/drizzle/oauth-mysql.mjs +8 -0
  147. package/dist/drizzle/oauth-mysql.mjs.map +1 -0
  148. package/dist/drizzle/oauth-owner.d.mts +10 -0
  149. package/dist/drizzle/oauth-owner.mjs +10 -0
  150. package/dist/drizzle/oauth-owner.mjs.map +1 -0
  151. package/dist/drizzle/oauth-registration.d.mts +5 -0
  152. package/dist/drizzle/oauth-registration.mjs +374 -0
  153. package/dist/drizzle/oauth-registration.mjs.map +1 -0
  154. package/dist/drizzle/oauth-state.mjs +107 -0
  155. package/dist/drizzle/oauth-state.mjs.map +1 -0
  156. package/dist/drizzle/oauth-target.d.mts +109 -0
  157. package/dist/drizzle/oauth-target.mjs +246 -0
  158. package/dist/drizzle/oauth-target.mjs.map +1 -0
  159. package/dist/drizzle/passkey-drivers.mjs +34 -0
  160. package/dist/drizzle/passkey-drivers.mjs.map +1 -0
  161. package/dist/drizzle/passkey-kernel.mjs +8 -0
  162. package/dist/drizzle/passkey-kernel.mjs.map +1 -0
  163. package/dist/drizzle/passkey-model.d.mts +43 -0
  164. package/dist/drizzle/passkey-model.mjs +8 -0
  165. package/dist/drizzle/passkey-model.mjs.map +1 -0
  166. package/dist/drizzle/passkey-registration-ceremony-model.d.mts +12 -0
  167. package/dist/drizzle/passkey-registration-ceremony-model.mjs +2 -0
  168. package/dist/drizzle/passkey-state.mjs +7 -0
  169. package/dist/drizzle/passkey-state.mjs.map +1 -0
  170. package/dist/drizzle/passkey-target.d.mts +2 -0
  171. package/dist/drizzle/passkey-target.mjs +7 -0
  172. package/dist/drizzle/passkey-target.mjs.map +1 -0
  173. package/dist/drizzle/passkey-write-drivers.mjs +32 -0
  174. package/dist/drizzle/passkey-write-drivers.mjs.map +1 -0
  175. package/dist/drizzle/passkey-write-model.d.mts +20 -0
  176. package/dist/drizzle/passkey-write-model.mjs +9 -0
  177. package/dist/drizzle/passkey-write-model.mjs.map +1 -0
  178. package/dist/drizzle/passkey-write-target.d.mts +5 -0
  179. package/dist/drizzle/passkey-write-target.mjs +7 -0
  180. package/dist/drizzle/passkey-write-target.mjs.map +1 -0
  181. package/dist/drizzle/password-model.d.mts +24 -0
  182. package/dist/drizzle/password-model.mjs +2 -0
  183. package/dist/drizzle/password-prepared-model.d.mts +92 -0
  184. package/dist/drizzle/password-prepared-model.mjs +11 -0
  185. package/dist/drizzle/password-prepared-model.mjs.map +1 -0
  186. package/dist/drizzle/password-prepared-sql.mjs +389 -0
  187. package/dist/drizzle/password-prepared-sql.mjs.map +1 -0
  188. package/dist/drizzle/password-prepared-state.mjs +104 -0
  189. package/dist/drizzle/password-prepared-state.mjs.map +1 -0
  190. package/dist/drizzle/password-prepared-target.d.mts +11 -0
  191. package/dist/drizzle/password-prepared-target.mjs +56 -0
  192. package/dist/drizzle/password-prepared-target.mjs.map +1 -0
  193. package/dist/drizzle/password-registration.d.mts +7 -0
  194. package/dist/drizzle/password-registration.mjs +134 -0
  195. package/dist/drizzle/password-registration.mjs.map +1 -0
  196. package/dist/drizzle/password-sql.d.mts +1 -0
  197. package/dist/drizzle/password-sql.mjs +9 -0
  198. package/dist/drizzle/password-sql.mjs.map +1 -0
  199. package/dist/drizzle/password-target.d.mts +16 -0
  200. package/dist/drizzle/password-target.mjs +61 -0
  201. package/dist/drizzle/password-target.mjs.map +1 -0
  202. package/dist/drizzle/pg-emails.d.mts +71 -0
  203. package/dist/drizzle/pg-emails.mjs +38 -0
  204. package/dist/drizzle/pg-emails.mjs.map +1 -0
  205. package/dist/drizzle/pg-password-prepared.d.mts +30 -0
  206. package/dist/drizzle/pg-password-prepared.mjs +16 -0
  207. package/dist/drizzle/pg-password-prepared.mjs.map +1 -0
  208. package/dist/drizzle/pg-passwords.d.mts +86 -0
  209. package/dist/drizzle/pg-passwords.mjs +38 -0
  210. package/dist/drizzle/pg-passwords.mjs.map +1 -0
  211. package/dist/drizzle/pg-proofs.d.mts +75 -0
  212. package/dist/drizzle/pg-proofs.mjs +22 -0
  213. package/dist/drizzle/pg-proofs.mjs.map +1 -0
  214. package/dist/drizzle/pg-sessions.d.mts +92 -0
  215. package/dist/drizzle/pg-sessions.mjs +53 -0
  216. package/dist/drizzle/pg-sessions.mjs.map +1 -0
  217. package/dist/drizzle/pg.d.mts +80 -0
  218. package/dist/drizzle/pg.mjs +289 -0
  219. package/dist/drizzle/pg.mjs.map +1 -0
  220. package/dist/drizzle/phone-model.d.mts +113 -0
  221. package/dist/drizzle/phone-model.mjs +39 -0
  222. package/dist/drizzle/phone-model.mjs.map +1 -0
  223. package/dist/drizzle/phone-state.mjs +14 -0
  224. package/dist/drizzle/phone-state.mjs.map +1 -0
  225. package/dist/drizzle/phone-target.d.mts +14 -0
  226. package/dist/drizzle/phone-target.mjs +168 -0
  227. package/dist/drizzle/phone-target.mjs.map +1 -0
  228. package/dist/drizzle/proof-model.d.mts +21 -0
  229. package/dist/drizzle/proof-model.mjs +2 -0
  230. package/dist/drizzle/proof-sql.d.mts +1 -0
  231. package/dist/drizzle/proof-sql.mjs +8 -0
  232. package/dist/drizzle/proof-sql.mjs.map +1 -0
  233. package/dist/drizzle/proof-target.d.mts +11 -0
  234. package/dist/drizzle/proof-target.mjs +36 -0
  235. package/dist/drizzle/proof-target.mjs.map +1 -0
  236. package/dist/drizzle/query-operations.mjs +27 -0
  237. package/dist/drizzle/query-operations.mjs.map +1 -0
  238. package/dist/drizzle/session-model.d.mts +31 -0
  239. package/dist/drizzle/session-model.mjs +2 -0
  240. package/dist/drizzle/session-sql.mjs +8 -0
  241. package/dist/drizzle/session-sql.mjs.map +1 -0
  242. package/dist/drizzle/session-target.d.mts +27 -0
  243. package/dist/drizzle/session-target.mjs +46 -0
  244. package/dist/drizzle/session-target.mjs.map +1 -0
  245. package/dist/drizzle/sqlite-emails.mjs +45 -0
  246. package/dist/drizzle/sqlite-emails.mjs.map +1 -0
  247. package/dist/drizzle/sqlite-identity.mjs +90 -0
  248. package/dist/drizzle/sqlite-identity.mjs.map +1 -0
  249. package/dist/drizzle/sqlite-password-prepared.mjs +21 -0
  250. package/dist/drizzle/sqlite-password-prepared.mjs.map +1 -0
  251. package/dist/drizzle/sqlite-passwords.mjs +49 -0
  252. package/dist/drizzle/sqlite-passwords.mjs.map +1 -0
  253. package/dist/drizzle/sqlite-proofs.mjs +29 -0
  254. package/dist/drizzle/sqlite-proofs.mjs.map +1 -0
  255. package/dist/drizzle/sqlite-sessions.mjs +74 -0
  256. package/dist/drizzle/sqlite-sessions.mjs.map +1 -0
  257. package/dist/drizzle/sqlite.d.mts +77 -0
  258. package/dist/drizzle/sqlite.mjs +217 -0
  259. package/dist/drizzle/sqlite.mjs.map +1 -0
  260. package/dist/drizzle/standalone-guard.mjs +17 -0
  261. package/dist/drizzle/standalone-guard.mjs.map +1 -0
  262. package/dist/drizzle/step-up-model.d.mts +16 -0
  263. package/dist/drizzle/step-up-model.mjs +2 -0
  264. package/dist/drizzle/table-model.d.mts +11 -0
  265. package/dist/drizzle/totp-model.d.mts +82 -0
  266. package/dist/drizzle/totp-model.mjs +13 -0
  267. package/dist/drizzle/totp-model.mjs.map +1 -0
  268. package/dist/drizzle/totp-state.d.mts +37 -0
  269. package/dist/drizzle/totp-state.mjs +287 -0
  270. package/dist/drizzle/totp-state.mjs.map +1 -0
  271. package/dist/drizzle/totp-target.d.mts +14 -0
  272. package/dist/drizzle/totp-target.mjs +81 -0
  273. package/dist/drizzle/totp-target.mjs.map +1 -0
  274. package/dist/drizzle/transaction-execution.d.mts +2 -0
  275. package/dist/drizzle/transaction-execution.mjs +11 -0
  276. package/dist/drizzle/transaction-execution.mjs.map +1 -0
  277. package/dist/drizzle/transaction-mysql.mjs +47 -0
  278. package/dist/drizzle/transaction-mysql.mjs.map +1 -0
  279. package/dist/drizzle/transaction-owner.d.mts +2 -0
  280. package/dist/drizzle/transaction-owner.mjs +8 -0
  281. package/dist/drizzle/transaction-owner.mjs.map +1 -0
  282. package/dist/index.d.mts +27 -0
  283. package/dist/index.mjs +27 -0
  284. package/dist/internal/drizzle-migrations.mjs +19 -0
  285. package/dist/internal/drizzle-migrations.mjs.map +1 -0
  286. package/dist/internal/drizzle-postgres.mjs +37 -0
  287. package/dist/internal/drizzle-postgres.mjs.map +1 -0
  288. package/dist/internal/drizzle-sqlite.mjs +35 -0
  289. package/dist/internal/drizzle-sqlite.mjs.map +1 -0
  290. package/package.json +1 -0
  291. package/src/D1.ts +136 -0
  292. package/src/Libsql.ts +257 -0
  293. package/src/Mysql2.ts +184 -0
  294. package/src/Pglite.ts +174 -0
  295. package/src/Postgres.ts +174 -0
  296. package/src/SqliteBun.ts +258 -0
  297. package/src/SqliteDo.ts +473 -0
  298. package/src/SqliteNode.ts +259 -0
  299. package/src/SqliteWasm.ts +263 -0
  300. package/src/drizzle/D1BatchStatements.ts +10 -0
  301. package/src/drizzle/SuppliedService.ts +10 -0
  302. package/src/drizzle/d1-emails.ts +1829 -0
  303. package/src/drizzle/d1-generated-statement.ts +129 -0
  304. package/src/drizzle/d1-identity.ts +375 -0
  305. package/src/drizzle/d1-oauth.ts +340 -0
  306. package/src/drizzle/d1-passkey.ts +373 -0
  307. package/src/drizzle/d1-password-prepared.ts +1270 -0
  308. package/src/drizzle/d1-passwords.ts +2656 -0
  309. package/src/drizzle/d1-phone.ts +96 -0
  310. package/src/drizzle/d1-planning.ts +104 -0
  311. package/src/drizzle/d1-proofs.ts +2305 -0
  312. package/src/drizzle/d1-sessions.ts +2857 -0
  313. package/src/drizzle/d1-totp.ts +78 -0
  314. package/src/drizzle/email-model.ts +202 -0
  315. package/src/drizzle/email-registration.ts +698 -0
  316. package/src/drizzle/email-sql.ts +25 -0
  317. package/src/drizzle/email-target.ts +243 -0
  318. package/src/drizzle/model.ts +459 -0
  319. package/src/drizzle/mysql-emails.ts +321 -0
  320. package/src/drizzle/mysql-identity.ts +324 -0
  321. package/src/drizzle/mysql-password-prepared.ts +204 -0
  322. package/src/drizzle/mysql-passwords.ts +339 -0
  323. package/src/drizzle/mysql-proofs.ts +181 -0
  324. package/src/drizzle/mysql-sessions.ts +741 -0
  325. package/src/drizzle/mysql.ts +687 -0
  326. package/src/drizzle/oauth-accounts.ts +804 -0
  327. package/src/drizzle/oauth-connected-access.ts +354 -0
  328. package/src/drizzle/oauth-connected-collection.ts +324 -0
  329. package/src/drizzle/oauth-connected-custody.ts +277 -0
  330. package/src/drizzle/oauth-connected-drivers.ts +465 -0
  331. package/src/drizzle/oauth-connected-flow.ts +441 -0
  332. package/src/drizzle/oauth-connected-input.ts +127 -0
  333. package/src/drizzle/oauth-connected-maintenance.ts +345 -0
  334. package/src/drizzle/oauth-connected-management.ts +365 -0
  335. package/src/drizzle/oauth-connected-model.ts +347 -0
  336. package/src/drizzle/oauth-connected-reference.ts +112 -0
  337. package/src/drizzle/oauth-connected-settlement.ts +226 -0
  338. package/src/drizzle/oauth-connected-state.ts +845 -0
  339. package/src/drizzle/oauth-connected-target.ts +264 -0
  340. package/src/drizzle/oauth-drivers.ts +569 -0
  341. package/src/drizzle/oauth-flow.ts +462 -0
  342. package/src/drizzle/oauth-input.ts +201 -0
  343. package/src/drizzle/oauth-model.ts +617 -0
  344. package/src/drizzle/oauth-mysql.ts +10 -0
  345. package/src/drizzle/oauth-owner.ts +29 -0
  346. package/src/drizzle/oauth-registration.ts +640 -0
  347. package/src/drizzle/oauth-state.ts +215 -0
  348. package/src/drizzle/oauth-target.ts +750 -0
  349. package/src/drizzle/passkey-drivers.ts +385 -0
  350. package/src/drizzle/passkey-kernel.ts +4 -0
  351. package/src/drizzle/passkey-model.ts +153 -0
  352. package/src/drizzle/passkey-registration-ceremony-model.ts +32 -0
  353. package/src/drizzle/passkey-state.ts +3 -0
  354. package/src/drizzle/passkey-target.ts +23 -0
  355. package/src/drizzle/passkey-write-drivers.ts +395 -0
  356. package/src/drizzle/passkey-write-model.ts +103 -0
  357. package/src/drizzle/passkey-write-target.ts +9 -0
  358. package/src/drizzle/password-model.ts +169 -0
  359. package/src/drizzle/password-prepared-model.ts +259 -0
  360. package/src/drizzle/password-prepared-sql.ts +1191 -0
  361. package/src/drizzle/password-prepared-state.ts +231 -0
  362. package/src/drizzle/password-prepared-target.ts +160 -0
  363. package/src/drizzle/password-registration.ts +363 -0
  364. package/src/drizzle/password-sql.ts +13 -0
  365. package/src/drizzle/password-target.ts +224 -0
  366. package/src/drizzle/pg-emails.ts +321 -0
  367. package/src/drizzle/pg-password-prepared.ts +205 -0
  368. package/src/drizzle/pg-passwords.ts +338 -0
  369. package/src/drizzle/pg-proofs.ts +191 -0
  370. package/src/drizzle/pg-sessions.ts +750 -0
  371. package/src/drizzle/pg.ts +984 -0
  372. package/src/drizzle/phone-model.ts +190 -0
  373. package/src/drizzle/phone-state.ts +21 -0
  374. package/src/drizzle/phone-target.ts +472 -0
  375. package/src/drizzle/proof-model.ts +139 -0
  376. package/src/drizzle/proof-sql.ts +10 -0
  377. package/src/drizzle/proof-target.ts +122 -0
  378. package/src/drizzle/query-operations.ts +43 -0
  379. package/src/drizzle/session-model.ts +215 -0
  380. package/src/drizzle/session-sql.ts +14 -0
  381. package/src/drizzle/session-target.ts +338 -0
  382. package/src/drizzle/sqlite-emails.ts +366 -0
  383. package/src/drizzle/sqlite-identity.ts +344 -0
  384. package/src/drizzle/sqlite-password-prepared.ts +260 -0
  385. package/src/drizzle/sqlite-passwords.ts +497 -0
  386. package/src/drizzle/sqlite-proofs.ts +202 -0
  387. package/src/drizzle/sqlite-sessions.ts +971 -0
  388. package/src/drizzle/sqlite.ts +705 -0
  389. package/src/drizzle/standalone-guard.ts +32 -0
  390. package/src/drizzle/step-up-model.ts +73 -0
  391. package/src/drizzle/table-model.ts +9 -0
  392. package/src/drizzle/totp-model.ts +92 -0
  393. package/src/drizzle/totp-state.ts +525 -0
  394. package/src/drizzle/totp-target.ts +308 -0
  395. package/src/drizzle/transaction-execution.ts +13 -0
  396. package/src/drizzle/transaction-mysql.ts +106 -0
  397. package/src/drizzle/transaction-owner.ts +11 -0
  398. package/src/index.ts +378 -0
  399. package/src/internal/drizzle-migrations.ts +29 -0
  400. package/src/internal/drizzle-postgres.ts +83 -0
  401. package/src/internal/drizzle-sqlite.ts +81 -0
@@ -0,0 +1,308 @@
1
+ import { randomId } from "@yielded/auth-crypto";
2
+ import { LifecycleHooks } from "@yielded/auth/Hooks";
3
+ import {
4
+ TotpConfigurationError,
5
+ type TotpUnavailable,
6
+ TotpMutation,
7
+ TotpPolicy,
8
+ TotpPersistence,
9
+ } from "@yielded/auth/Totp";
10
+ import type { Table } from "drizzle-orm";
11
+ /* oxlint-disable no-explicit-any -- shared native implementation; driver entrypoints retain exact database and table types. */
12
+ import { Context, Effect, Schema } from "effect";
13
+ import type { Statement } from "effect/unstable/sql/Statement";
14
+
15
+ import type { PersistenceMappingError } from "./model";
16
+ import type { SuppliedService } from "./SuppliedService";
17
+ import {
18
+ type TotpMapping,
19
+ type TotpMappingSource,
20
+ type TotpPersistenceServices,
21
+ requiredTotpConstraints,
22
+ } from "./totp-model";
23
+ import {
24
+ captureTotp,
25
+ CurrentTotpTransaction,
26
+ invariant,
27
+ mutateTotp,
28
+ unavailable,
29
+ } from "./totp-state";
30
+ import {
31
+ coordinateTransactionOwner,
32
+ makeTransactionExecution,
33
+ sqlClientTransactionStandaloneGuard,
34
+ type TransactionExecution,
35
+ type TransactionTargetConfiguration,
36
+ type TransactionCoordinatorError,
37
+ } from "./transaction-execution";
38
+ import type { TransactionNativeDatabase } from "./transaction-owner";
39
+ export type TotpTargetConfiguration = TransactionTargetConfiguration<TotpUnavailable>;
40
+
41
+ export type TotpCoordinatorError<E> =
42
+ | TransactionCoordinatorError<E, TotpUnavailable>
43
+ | TotpConfigurationError
44
+ | PersistenceMappingError;
45
+
46
+ export const sqlClientTotpStandaloneGuard = (
47
+ database: Parameters<typeof sqlClientTransactionStandaloneGuard>[1],
48
+ ) => sqlClientTransactionStandaloneGuard(unavailable, database);
49
+
50
+ const validateMapping = <M>(original: M, configuration: TotpTargetConfiguration): M => {
51
+ const mapping = original as any;
52
+
53
+ invariant(mapping.moduleId.length > 0);
54
+ Schema.decodeSync(TotpPolicy)(mapping.policy);
55
+ for (const [key, value] of Object.entries(requiredTotpConstraints))
56
+ invariant(mapping.constraints?.[key] === value);
57
+ if (configuration.mode === "batch") invariant(mapping.d1?.primary === true);
58
+
59
+ return Object.freeze({
60
+ ...mapping,
61
+ policy: Object.freeze({ ...mapping.policy }),
62
+ subject: Object.freeze({ ...mapping.subject }),
63
+ factor: Object.freeze({ ...mapping.factor }),
64
+ credential: Object.freeze({ ...mapping.credential }),
65
+ subjectIds: Object.freeze({ ...mapping.subjectIds }),
66
+ });
67
+ };
68
+
69
+ const services = (
70
+ mapping: any,
71
+ execution: TransactionExecution<TotpUnavailable, CurrentTotpTransaction>,
72
+ hooks: LifecycleHooks["Service"],
73
+ ): TotpPersistenceServices => ({
74
+ totpPersistence: TotpPersistence.of({
75
+ snapshot: Effect.fn("TotpNative.snapshot")(
76
+ function* (input) {
77
+ const captured = { ...input };
78
+
79
+ invariant(captured.moduleId === mapping.moduleId);
80
+ yield* execution.admit;
81
+
82
+ return yield* execution
83
+ .run(
84
+ Effect.map(captureTotp(mapping, captured.subjectId), (value) => value?.snapshot),
85
+ false,
86
+ )
87
+ .pipe(Effect.provideService(LifecycleHooks, hooks));
88
+ },
89
+ Effect.catchDefect(() => Effect.fail(unavailable())),
90
+ ),
91
+ mutate: (original, prepare) =>
92
+ Effect.suspend(() => {
93
+ // Detach caller-owned payloads before any driver or hook can suspend.
94
+ const codec = Schema.toCodecIso(TotpMutation);
95
+ const input = Schema.decodeSync(codec)(Schema.encodeSync(codec)(original));
96
+
97
+ return execution.admit.pipe(
98
+ Effect.andThen(
99
+ execution.run(
100
+ Effect.gen(function* () {
101
+ const decision = yield* mutateTotp(mapping, input),
102
+ owner = yield* CurrentTotpTransaction;
103
+
104
+ owner.guards.push(owner.journal.prepare(undefined));
105
+ const receipt = prepare(decision, owner.journal);
106
+
107
+ invariant(receipt?._tag === "PreparedCommit" && Effect.isEffect(receipt.read));
108
+ owner.guards.push(receipt as any);
109
+
110
+ return receipt;
111
+ }),
112
+ ),
113
+ ),
114
+ Effect.provideService(LifecycleHooks, hooks),
115
+ );
116
+ }).pipe(Effect.catchDefect(() => Effect.fail(unavailable()))),
117
+ }),
118
+ });
119
+
120
+ export const makeTargetTotpPersistence = <
121
+ S extends Table,
122
+ F extends Table,
123
+ C extends Table,
124
+ N,
125
+ RSetup = never,
126
+ >(
127
+ database: TransactionNativeDatabase,
128
+ source: TotpMappingSource<TotpMapping<S, F, C, N>, RSetup>,
129
+ configuration: TotpTargetConfiguration,
130
+ ) =>
131
+ Effect.gen(function* () {
132
+ const hooks = yield* LifecycleHooks;
133
+ const original = yield* Effect.isEffect(source) ? source : Effect.succeed(source);
134
+
135
+ const mapping = yield* Effect.try({
136
+ try: () => validateMapping(original, configuration),
137
+ catch: () => TotpConfigurationError.make({}),
138
+ });
139
+
140
+ const execution = makeTransactionExecution(
141
+ CurrentTotpTransaction,
142
+ database,
143
+ configuration,
144
+ unavailable,
145
+ randomId,
146
+ );
147
+
148
+ return services(mapping, execution, hooks);
149
+ });
150
+
151
+ export const coordinateTargetTotp = <M, A, E, R, RSetup = never>(
152
+ database: TransactionNativeDatabase,
153
+ source: TotpMappingSource<M, RSetup>,
154
+ configuration: TotpTargetConfiguration,
155
+ body: (
156
+ transaction: any,
157
+ services: TotpPersistenceServices,
158
+ append: (statement: Statement<any>) => void,
159
+ ) => Effect.Effect<A, E, R>,
160
+ ): Effect.Effect<A, TotpCoordinatorError<E>, R | RSetup | LifecycleHooks> =>
161
+ Effect.gen(function* () {
162
+ const hooks = yield* LifecycleHooks;
163
+ const original = yield* Effect.isEffect(source) ? source : Effect.succeed(source);
164
+
165
+ const mapping = yield* Effect.try({
166
+ try: () => validateMapping(original, configuration),
167
+ catch: () => TotpConfigurationError.make({}),
168
+ });
169
+
170
+ return yield* coordinateTransactionOwner(
171
+ database,
172
+ CurrentTotpTransaction,
173
+ configuration,
174
+ Effect.void,
175
+ unavailable,
176
+ randomId,
177
+ (execution) => services(mapping, execution, hooks),
178
+ body,
179
+ );
180
+ });
181
+
182
+ type TransactionOf<D> = D extends { readonly transaction: (...args: any[]) => any }
183
+ ? Parameters<Parameters<D["transaction"]>[0]>[0]
184
+ : never;
185
+
186
+ /** Concrete driver wrappers select transaction mode; cryptography always precedes these owners. */
187
+ export const makeTotpTarget = <
188
+ D extends { readonly transaction: any },
189
+ T extends Table,
190
+ Extra = unknown,
191
+ Synchronous extends boolean = false,
192
+ >(
193
+ configuration: TotpTargetConfiguration,
194
+ ) => {
195
+ function coordinateTotpPersistence<
196
+ Database extends D,
197
+ S extends T,
198
+ F extends T,
199
+ C extends T,
200
+ N,
201
+ A,
202
+ E,
203
+ R,
204
+ RSetup = never,
205
+ DatabaseError = never,
206
+ DatabaseRequirements = never,
207
+ >(
208
+ acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,
209
+ options: {
210
+ readonly mapping: TotpMappingSource<TotpMapping<S, F, C, N> & Extra, RSetup>;
211
+ readonly transaction?: never;
212
+ },
213
+ body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<TotpPersistence> : R>,
214
+ ): Effect.Effect<
215
+ A,
216
+ TotpCoordinatorError<E> | DatabaseError,
217
+ | (Synchronous extends true ? never : Exclude<R, TotpPersistence>)
218
+ | LifecycleHooks
219
+ | RSetup
220
+ | DatabaseRequirements
221
+ >;
222
+ function coordinateTotpPersistence<
223
+ Database extends D,
224
+ S extends T,
225
+ F extends T,
226
+ C extends T,
227
+ N,
228
+ A,
229
+ E,
230
+ R,
231
+ TxId,
232
+ TxShape,
233
+ RSetup = never,
234
+ DatabaseError = never,
235
+ DatabaseRequirements = never,
236
+ >(
237
+ acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,
238
+ options: {
239
+ readonly mapping: TotpMappingSource<TotpMapping<S, F, C, N> & Extra, RSetup>;
240
+ readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;
241
+ },
242
+ body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<TotpPersistence | TxId> : R>,
243
+ ): Effect.Effect<
244
+ A,
245
+ TotpCoordinatorError<E> | DatabaseError,
246
+ | (Synchronous extends true ? never : Exclude<R, TotpPersistence | TxId>)
247
+ | LifecycleHooks
248
+ | RSetup
249
+ | DatabaseRequirements
250
+ >;
251
+ function coordinateTotpPersistence<
252
+ Database extends D,
253
+ S extends T,
254
+ F extends T,
255
+ C extends T,
256
+ N,
257
+ A,
258
+ E,
259
+ R,
260
+ TxId,
261
+ TxShape,
262
+ RSetup = never,
263
+ DatabaseError = never,
264
+ DatabaseRequirements = never,
265
+ >(
266
+ acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,
267
+ options: {
268
+ readonly mapping: TotpMappingSource<TotpMapping<S, F, C, N> & Extra, RSetup>;
269
+ readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;
270
+ },
271
+ body: Effect.Effect<A, E, R>,
272
+ ): Effect.Effect<
273
+ A,
274
+ TotpCoordinatorError<E> | DatabaseError,
275
+ Exclude<R, TotpPersistence> | LifecycleHooks | RSetup | DatabaseRequirements
276
+ > {
277
+ return Effect.flatMap(acquire, (database) =>
278
+ coordinateTargetTotp(
279
+ database as any,
280
+ options.mapping,
281
+ configuration,
282
+ (transaction: TransactionOf<Database>, services) => {
283
+ const provided = Context.make(TotpPersistence, services.totpPersistence);
284
+ const work = Effect.provideContext(body, provided);
285
+
286
+ return options.transaction === undefined
287
+ ? work
288
+ : Effect.provideService(work, options.transaction, options.transaction.of(transaction));
289
+ },
290
+ ),
291
+ );
292
+ }
293
+
294
+ return {
295
+ makeTotpPersistenceServices: <
296
+ Database extends D,
297
+ S extends T,
298
+ F extends T,
299
+ C extends T,
300
+ N,
301
+ RSetup = never,
302
+ >(
303
+ database: Database,
304
+ mapping: TotpMappingSource<TotpMapping<S, F, C, N> & Extra, RSetup>,
305
+ ) => makeTargetTotpPersistence(database as any, mapping, configuration),
306
+ coordinateTotpPersistence,
307
+ };
308
+ };
@@ -0,0 +1,13 @@
1
+ import { makeTransactionExecutionKernel } from "@yielded/auth-persistence/Adapter";
2
+
3
+ import { makeTransactionOwner, reportTransactionFailure } from "./transaction-owner";
4
+ export type { TransactionTargetConfiguration } from "@yielded/auth-persistence/Adapter";
5
+ export type { TransactionCoordinatorError } from "@yielded/auth-persistence/Adapter";
6
+ export type { TransactionBound } from "@yielded/auth-persistence/Adapter";
7
+ export type { TransactionExecution } from "@yielded/auth-persistence/Adapter";
8
+
9
+ export const {
10
+ sqlClientTransactionStandaloneGuard,
11
+ makeTransactionExecution,
12
+ coordinateTransactionOwner,
13
+ } = makeTransactionExecutionKernel({ makeTransactionOwner, reportTransactionFailure });
@@ -0,0 +1,106 @@
1
+ /* oxlint-disable no-explicit-any -- this private acquisition preserves the installed native transaction; public wrappers retain its exact type. */
2
+ import { EffectMysql2Transaction } from "drizzle-orm/effect-mysql2";
3
+ import { Effect } from "effect";
4
+ import { makeWithTransaction, type SqlClient } from "effect/unstable/sql/SqlClient";
5
+
6
+ /** Locking discovery and later SQL policy predicates must see the same current
7
+ * authority. MySQL's default repeatable-read snapshot is unsuitable after a
8
+ * contended authority lock. Own one connection and one-shot transaction mode;
9
+ * the pooled connection's session default is never changed. */
10
+ export const mysqlTransaction = <A, E, R, Failure>(
11
+ unavailable: () => Failure,
12
+ database: any,
13
+ body: (transaction: any) => Effect.Effect<A, E, R>,
14
+ ) =>
15
+ Effect.scoped(
16
+ Effect.gen(function* () {
17
+ const client: SqlClient = database.$client;
18
+ const connection = yield* client.reserve;
19
+
20
+ // Installed @effect/sql-mysql2 ConnectionImpl exposes its reserved native
21
+ // PoolConnection as `conn`. Capture only its public disposal method; fail
22
+ // before transaction work if an installed driver no longer provides it.
23
+ const nativeConnection = (
24
+ connection as {
25
+ readonly conn?: { readonly destroy?: () => void; readonly release?: () => void };
26
+ }
27
+ ).conn;
28
+
29
+ if (
30
+ typeof nativeConnection?.destroy !== "function" ||
31
+ typeof nativeConnection.release !== "function"
32
+ )
33
+ return yield* Effect.fail(unavailable());
34
+ const destroy = nativeConnection.destroy.bind(nativeConnection);
35
+
36
+ const defaults = yield* connection.executeUnprepared(
37
+ "select @@session.transaction_isolation as isolation",
38
+ [],
39
+ undefined,
40
+ );
41
+
42
+ const isolation = String(defaults[0]?.isolation).replaceAll("-", " ").toUpperCase();
43
+
44
+ if (
45
+ !["READ UNCOMMITTED", "READ COMMITTED", "REPEATABLE READ", "SERIALIZABLE"].includes(
46
+ isolation,
47
+ )
48
+ )
49
+ return yield* Effect.fail(unavailable());
50
+
51
+ const statement = (source: string) =>
52
+ Effect.asVoid(connection.executeUnprepared(source, [], undefined));
53
+
54
+ const transaction = makeWithTransaction({
55
+ transactionService: client.transactionService,
56
+ spanAttributes: [
57
+ ["db.system", "mysql"],
58
+ ["effect_auth.owner", "oauth"],
59
+ ],
60
+ acquireConnection: Effect.succeed([undefined, connection] as const),
61
+ begin: () =>
62
+ statement("SET TRANSACTION ISOLATION LEVEL READ COMMITTED").pipe(
63
+ Effect.andThen(statement("BEGIN")),
64
+ ),
65
+ commit: () => statement("COMMIT"),
66
+ rollback: () => statement("ROLLBACK"),
67
+ savepoint: (_connection, id) => statement(`SAVEPOINT effect_auth_oauth_${id}`),
68
+ releaseSavepoint: (_connection, id) =>
69
+ statement(`RELEASE SAVEPOINT effect_auth_oauth_${id}`),
70
+ rollbackSavepoint: (_connection, id) =>
71
+ statement(`ROLLBACK TO SAVEPOINT effect_auth_oauth_${id}`),
72
+ });
73
+
74
+ class NativeTransaction extends EffectMysql2Transaction<any, any> {
75
+ override transaction<A2, E2, R2>(nested: (tx: any) => Effect.Effect<A2, E2, R2>) {
76
+ return transaction(
77
+ Effect.suspend(() =>
78
+ nested(
79
+ new NativeTransaction(database.dialect, database._.session, database._.relations),
80
+ ),
81
+ ),
82
+ );
83
+ }
84
+ }
85
+
86
+ const native = new NativeTransaction(
87
+ database.dialect,
88
+ database._.session,
89
+ database._.relations,
90
+ );
91
+
92
+ const cleanup = statement("ROLLBACK").pipe(
93
+ Effect.andThen(statement(`SET TRANSACTION ISOLATION LEVEL ${isolation}`)),
94
+ Effect.onExit((exit) => (exit._tag === "Failure" ? Effect.sync(destroy) : Effect.void)),
95
+ Effect.orDie,
96
+ );
97
+
98
+ return yield* transaction(Effect.suspend(() => body(native))).pipe(
99
+ // BEGIN/COMMIT acknowledgments can be lost after the server acted.
100
+ // Roll back any surviving transaction before resetting one-shot mode.
101
+ // Failed cleanup destroys the connection before its reserve is released;
102
+ // the unknown owner result cannot release a prepared receipt.
103
+ Effect.ensuring(cleanup),
104
+ );
105
+ }),
106
+ );
@@ -0,0 +1,11 @@
1
+ import { makeTransactionKernel } from "@yielded/auth-persistence/Adapter";
2
+
3
+ import { drizzleQueryOperations } from "./query-operations";
4
+ export type { Row } from "@yielded/auth-persistence/Adapter";
5
+ export type { TransactionNativeDatabase } from "@yielded/auth-persistence/Adapter";
6
+ export type { Observation } from "@yielded/auth-persistence/Adapter";
7
+ export type { GuardedUpdate } from "@yielded/auth-persistence/Adapter";
8
+ export type { TransactionOwner } from "@yielded/auth-persistence/Adapter";
9
+
10
+ export const { reportTransactionFailure, both, makeTransactionRows, makeTransactionOwner } =
11
+ makeTransactionKernel(drizzleQueryOperations);