@yielded/auth-persistence 0.1.0-beta.24 → 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 (481) hide show
  1. package/README.md +6 -8
  2. package/dist/Adapter.d.mts +47 -33
  3. package/dist/Adapter.mjs +36 -23
  4. package/dist/OAuthPersistence.d.mts +35 -51
  5. package/dist/OAuthPersistence.mjs +60 -68
  6. package/dist/OAuthPersistence.mjs.map +1 -1
  7. package/dist/index.d.mts +2 -2
  8. package/dist/index.mjs +2 -2
  9. package/dist/internal/browser-login.d.mts +1 -1
  10. package/dist/internal/browser-login.mjs +29 -9
  11. package/dist/internal/browser-login.mjs.map +1 -1
  12. package/dist/internal/configuration.d.mts +13 -8
  13. package/dist/internal/configuration.mjs.map +1 -1
  14. package/dist/internal/crypto.d.mts +1 -0
  15. package/dist/internal/crypto.mjs +1 -1
  16. package/dist/internal/d1-planning.mjs +8 -0
  17. package/dist/internal/d1-planning.mjs.map +1 -0
  18. package/dist/internal/email-native-state.mjs +135 -0
  19. package/dist/internal/email-native-state.mjs.map +1 -0
  20. package/dist/internal/email-native.d.mts +17 -0
  21. package/dist/internal/email-native.mjs +245 -0
  22. package/dist/internal/email-native.mjs.map +1 -0
  23. package/dist/internal/email-policy.mjs +92 -0
  24. package/dist/internal/email-policy.mjs.map +1 -0
  25. package/dist/internal/email-registration-native.d.mts +38 -0
  26. package/dist/internal/email-registration-native.mjs +171 -0
  27. package/dist/internal/email-registration-native.mjs.map +1 -0
  28. package/dist/internal/models/email-model.d.mts +40 -104
  29. package/dist/internal/models/email-model.mjs +3 -5
  30. package/dist/internal/models/email-model.mjs.map +1 -1
  31. package/dist/internal/models/oauth-connected-model.d.mts +44 -213
  32. package/dist/internal/models/oauth-connected-model.mjs +6 -14
  33. package/dist/internal/models/oauth-connected-model.mjs.map +1 -1
  34. package/dist/internal/models/oauth-model.d.mts +95 -244
  35. package/dist/internal/models/oauth-model.mjs +28 -22
  36. package/dist/internal/models/oauth-model.mjs.map +1 -1
  37. package/dist/internal/models/passkey-model.d.mts +11 -147
  38. package/dist/internal/models/passkey-model.mjs +5 -24
  39. package/dist/internal/models/passkey-model.mjs.map +1 -1
  40. package/dist/internal/models/passkey-registration-ceremony-model.d.mts +5 -39
  41. package/dist/internal/models/passkey-write-model.d.mts +17 -75
  42. package/dist/internal/models/passkey-write-model.mjs +1 -7
  43. package/dist/internal/models/passkey-write-model.mjs.map +1 -1
  44. package/dist/internal/models/password-model.d.mts +16 -82
  45. package/dist/internal/models/password-model.mjs +1 -4
  46. package/dist/internal/models/password-model.mjs.map +1 -1
  47. package/dist/internal/models/phone-model.d.mts +86 -0
  48. package/dist/internal/models/phone-model.mjs +10 -0
  49. package/dist/internal/models/phone-model.mjs.map +1 -0
  50. package/dist/internal/models/proof-model.d.mts +43 -272
  51. package/dist/internal/models/proof-model.mjs +2 -10
  52. package/dist/internal/models/proof-model.mjs.map +1 -1
  53. package/dist/internal/models/session-model.d.mts +74 -93
  54. package/dist/internal/models/session-model.mjs +3 -11
  55. package/dist/internal/models/session-model.mjs.map +1 -1
  56. package/dist/internal/models/step-up-model.d.mts +12 -50
  57. package/dist/internal/models/step-up-model.mjs +2 -4
  58. package/dist/internal/models/step-up-model.mjs.map +1 -1
  59. package/dist/internal/models/totp-model.d.mts +76 -0
  60. package/dist/internal/models/totp-model.mjs +10 -0
  61. package/dist/internal/models/totp-model.mjs.map +1 -0
  62. package/dist/internal/native-sql-table.d.mts +21 -4
  63. package/dist/internal/native-sql-table.mjs +9 -5
  64. package/dist/internal/native-sql-table.mjs.map +1 -1
  65. package/dist/internal/oauth/native-accounts.d.mts +17 -0
  66. package/dist/internal/oauth/native-accounts.mjs +290 -0
  67. package/dist/internal/oauth/native-accounts.mjs.map +1 -0
  68. package/dist/internal/oauth/native-connected-state.d.mts +11 -0
  69. package/dist/internal/oauth/native-connected-state.mjs +146 -0
  70. package/dist/internal/oauth/native-connected-state.mjs.map +1 -0
  71. package/dist/internal/oauth/native-connected.d.mts +15 -0
  72. package/dist/internal/oauth/native-connected.mjs +462 -0
  73. package/dist/internal/oauth/native-connected.mjs.map +1 -0
  74. package/dist/internal/oauth/native-flow.mjs +138 -0
  75. package/dist/internal/oauth/native-flow.mjs.map +1 -0
  76. package/dist/internal/oauth/native-layers.d.mts +24 -0
  77. package/dist/internal/oauth/native-layers.mjs +13 -0
  78. package/dist/internal/oauth/native-layers.mjs.map +1 -0
  79. package/dist/internal/oauth/native-mutation.mjs +122 -0
  80. package/dist/internal/oauth/native-mutation.mjs.map +1 -0
  81. package/dist/internal/oauth/native-registration.d.mts +24 -0
  82. package/dist/internal/oauth/native-registration.mjs +328 -0
  83. package/dist/internal/oauth/native-registration.mjs.map +1 -0
  84. package/dist/internal/oauth/native-revocations.d.mts +17 -0
  85. package/dist/internal/oauth/native-revocations.mjs +106 -0
  86. package/dist/internal/oauth/native-revocations.mjs.map +1 -0
  87. package/dist/internal/oauth/native-sign-in.d.mts +17 -0
  88. package/dist/internal/oauth/native-sign-in.mjs +50 -0
  89. package/dist/internal/oauth/native-sign-in.mjs.map +1 -0
  90. package/dist/internal/oauth/native-state.d.mts +10 -0
  91. package/dist/internal/oauth/native-state.mjs +214 -0
  92. package/dist/internal/oauth/native-state.mjs.map +1 -0
  93. package/dist/internal/oauth/state.d.mts +10 -0
  94. package/dist/internal/oauth/state.mjs +3 -27
  95. package/dist/internal/oauth/state.mjs.map +1 -1
  96. package/dist/internal/passkey-actions.mjs +55 -0
  97. package/dist/internal/passkey-actions.mjs.map +1 -0
  98. package/dist/internal/passkey-inputs.mjs +73 -0
  99. package/dist/internal/passkey-inputs.mjs.map +1 -0
  100. package/dist/internal/passkey-managed.mjs +224 -0
  101. package/dist/internal/passkey-managed.mjs.map +1 -0
  102. package/dist/internal/passkey-native-ceremony.d.mts +35 -0
  103. package/dist/internal/passkey-native-ceremony.mjs +38 -0
  104. package/dist/internal/passkey-native-ceremony.mjs.map +1 -0
  105. package/dist/internal/passkey-native-flow.mjs +91 -0
  106. package/dist/internal/passkey-native-flow.mjs.map +1 -0
  107. package/dist/internal/passkey-native-registration.d.mts +10 -0
  108. package/dist/internal/passkey-native-registration.mjs +114 -0
  109. package/dist/internal/passkey-native-registration.mjs.map +1 -0
  110. package/dist/internal/passkey-native-state.d.mts +15 -0
  111. package/dist/internal/passkey-native-state.mjs +186 -0
  112. package/dist/internal/passkey-native-state.mjs.map +1 -0
  113. package/dist/internal/passkey-native-write.d.mts +82 -0
  114. package/dist/internal/passkey-native-write.mjs +330 -0
  115. package/dist/internal/passkey-native-write.mjs.map +1 -0
  116. package/dist/internal/passkey-native.d.mts +835 -0
  117. package/dist/internal/passkey-native.mjs +175 -0
  118. package/dist/internal/passkey-native.mjs.map +1 -0
  119. package/dist/internal/passkey-policy.mjs +115 -0
  120. package/dist/internal/passkey-policy.mjs.map +1 -0
  121. package/dist/internal/password-credentials.mjs +38 -9
  122. package/dist/internal/password-credentials.mjs.map +1 -1
  123. package/dist/internal/password-native.d.mts +14 -0
  124. package/dist/internal/password-native.mjs +292 -0
  125. package/dist/internal/password-native.mjs.map +1 -0
  126. package/dist/internal/password-policy.mjs +93 -0
  127. package/dist/internal/password-policy.mjs.map +1 -0
  128. package/dist/internal/password-registration-native.d.mts +22 -0
  129. package/dist/internal/password-registration-native.mjs +142 -0
  130. package/dist/internal/password-registration-native.mjs.map +1 -0
  131. package/dist/internal/persistence.d.mts +6 -19
  132. package/dist/internal/persistence.mjs +199 -166
  133. package/dist/internal/persistence.mjs.map +1 -1
  134. package/dist/internal/phone-composed.mjs +79 -0
  135. package/dist/internal/phone-composed.mjs.map +1 -0
  136. package/dist/internal/phone-native.d.mts +15 -0
  137. package/dist/internal/phone-native.mjs +354 -0
  138. package/dist/internal/phone-native.mjs.map +1 -0
  139. package/dist/internal/proof-native.d.mts +15 -0
  140. package/dist/internal/proof-native.mjs +289 -0
  141. package/dist/internal/proof-native.mjs.map +1 -0
  142. package/dist/internal/registration.mjs +50 -60
  143. package/dist/internal/registration.mjs.map +1 -1
  144. package/dist/internal/session-native-authority.d.mts +15 -0
  145. package/dist/internal/session-native-authority.mjs +91 -0
  146. package/dist/internal/session-native-authority.mjs.map +1 -0
  147. package/dist/internal/session-native-cleanup.d.mts +14 -0
  148. package/dist/internal/session-native-cleanup.mjs +48 -0
  149. package/dist/internal/session-native-cleanup.mjs.map +1 -0
  150. package/dist/internal/session-native-login.d.mts +15 -0
  151. package/dist/internal/session-native-login.mjs +87 -0
  152. package/dist/internal/session-native-login.mjs.map +1 -0
  153. package/dist/internal/session-native-pending-read.mjs +42 -0
  154. package/dist/internal/session-native-pending-read.mjs.map +1 -0
  155. package/dist/internal/session-native-pending.mjs +134 -0
  156. package/dist/internal/session-native-pending.mjs.map +1 -0
  157. package/dist/internal/session-native-record.mjs +79 -0
  158. package/dist/internal/session-native-record.mjs.map +1 -0
  159. package/dist/internal/session-native-state.mjs +130 -0
  160. package/dist/internal/session-native-state.mjs.map +1 -0
  161. package/dist/internal/session-native-stateful.d.mts +16 -0
  162. package/dist/internal/session-native-stateful.mjs +225 -0
  163. package/dist/internal/session-native-stateful.mjs.map +1 -0
  164. package/dist/internal/session-native-step-up.d.mts +15 -0
  165. package/dist/internal/session-native-step-up.mjs +212 -0
  166. package/dist/internal/session-native-step-up.mjs.map +1 -0
  167. package/dist/internal/session-native-validity.d.mts +15 -0
  168. package/dist/internal/session-native-validity.mjs +97 -0
  169. package/dist/internal/session-native-validity.mjs.map +1 -0
  170. package/dist/internal/session-policy.mjs +29 -0
  171. package/dist/internal/session-policy.mjs.map +1 -0
  172. package/dist/internal/sql-authority.d.mts +16 -0
  173. package/dist/internal/sql-authority.mjs +32 -0
  174. package/dist/internal/sql-authority.mjs.map +1 -0
  175. package/dist/internal/sql-change.mjs +21 -0
  176. package/dist/internal/sql-change.mjs.map +1 -0
  177. package/dist/internal/sql-cleanup.mjs +35 -0
  178. package/dist/internal/sql-cleanup.mjs.map +1 -0
  179. package/dist/internal/sql-commit.d.mts +72 -0
  180. package/dist/internal/sql-commit.mjs +176 -0
  181. package/dist/internal/sql-commit.mjs.map +1 -0
  182. package/dist/internal/sql-expression.d.mts +17 -0
  183. package/dist/internal/sql-expression.mjs +49 -0
  184. package/dist/internal/sql-expression.mjs.map +1 -0
  185. package/dist/internal/sql-oauth-connected-model.d.mts +7 -23
  186. package/dist/internal/sql-oauth-model.d.mts +27 -52
  187. package/dist/internal/sql-oauth-model.mjs +3 -4
  188. package/dist/internal/sql-oauth-model.mjs.map +1 -1
  189. package/dist/internal/sql-persistence.mjs +5 -9
  190. package/dist/internal/sql-persistence.mjs.map +1 -1
  191. package/dist/internal/sql-storage-validation.mjs +1 -2
  192. package/dist/internal/sql-storage-validation.mjs.map +1 -1
  193. package/dist/internal/sql-table.d.mts +3 -16
  194. package/dist/internal/sql-table.mjs +21 -42
  195. package/dist/internal/sql-table.mjs.map +1 -1
  196. package/dist/internal/standalone.mjs +2 -3
  197. package/dist/internal/standalone.mjs.map +1 -1
  198. package/dist/internal/step-up-state.mjs +5 -8
  199. package/dist/internal/step-up-state.mjs.map +1 -1
  200. package/dist/internal/storage-clock.mjs +44 -0
  201. package/dist/internal/storage-clock.mjs.map +1 -0
  202. package/dist/internal/storage-mapping.d.mts +11 -8
  203. package/dist/internal/storage-mapping.mjs +88 -302
  204. package/dist/internal/storage-mapping.mjs.map +1 -1
  205. package/dist/internal/storage-plans.mjs +15 -73
  206. package/dist/internal/storage-plans.mjs.map +1 -1
  207. package/dist/internal/storage-tables.d.mts +37 -520
  208. package/dist/internal/storage-tables.mjs +31 -211
  209. package/dist/internal/storage-tables.mjs.map +1 -1
  210. package/dist/internal/storage-validation.d.mts +1 -6
  211. package/dist/internal/storage-validation.mjs +1 -42
  212. package/dist/internal/storage-validation.mjs.map +1 -1
  213. package/dist/internal/table-model.d.mts +21 -0
  214. package/dist/internal/totp-native.d.mts +15 -0
  215. package/dist/internal/totp-native.mjs +401 -0
  216. package/dist/internal/totp-native.mjs.map +1 -0
  217. package/package.json +1 -1
  218. package/src/Adapter.ts +143 -199
  219. package/src/OAuthPersistence.ts +128 -271
  220. package/src/index.ts +1 -1
  221. package/src/internal/browser-login.ts +54 -24
  222. package/src/internal/configuration.ts +16 -31
  223. package/src/internal/d1-planning.ts +7 -0
  224. package/src/internal/email-native-state.ts +247 -0
  225. package/src/internal/email-native.ts +514 -0
  226. package/src/internal/email-policy.ts +235 -0
  227. package/src/internal/email-registration-native.ts +386 -0
  228. package/src/internal/models/email-model.ts +76 -214
  229. package/src/internal/models/oauth-connected-model.ts +50 -288
  230. package/src/internal/models/oauth-model.ts +147 -368
  231. package/src/internal/models/passkey-model.ts +11 -208
  232. package/src/internal/models/passkey-registration-ceremony-model.ts +6 -60
  233. package/src/internal/models/passkey-write-model.ts +14 -95
  234. package/src/internal/models/password-model.ts +28 -148
  235. package/src/internal/models/phone-model.ts +110 -0
  236. package/src/internal/models/proof-model.ts +48 -404
  237. package/src/internal/models/session-model.ts +102 -200
  238. package/src/internal/models/step-up-model.ts +17 -96
  239. package/src/internal/models/totp-model.ts +82 -0
  240. package/src/internal/native-sql-table.ts +32 -11
  241. package/src/internal/oauth/native-accounts.ts +576 -0
  242. package/src/internal/oauth/native-connected-state.ts +288 -0
  243. package/src/internal/oauth/native-connected.ts +888 -0
  244. package/src/internal/oauth/native-flow.ts +253 -0
  245. package/src/internal/oauth/native-layers.ts +83 -0
  246. package/src/internal/oauth/native-mutation.ts +222 -0
  247. package/src/internal/oauth/native-registration.ts +545 -0
  248. package/src/internal/oauth/native-revocations.ts +190 -0
  249. package/src/internal/oauth/native-sign-in.ts +111 -0
  250. package/src/internal/oauth/native-state.ts +346 -0
  251. package/src/internal/oauth/state.ts +2 -70
  252. package/src/internal/passkey-actions.ts +70 -0
  253. package/src/internal/passkey-inputs.ts +56 -0
  254. package/src/internal/passkey-managed.ts +360 -0
  255. package/src/internal/passkey-native-ceremony.ts +66 -0
  256. package/src/internal/passkey-native-flow.ts +140 -0
  257. package/src/internal/passkey-native-registration.ts +221 -0
  258. package/src/internal/passkey-native-state.ts +335 -0
  259. package/src/internal/passkey-native-write.ts +611 -0
  260. package/src/internal/passkey-native.ts +372 -0
  261. package/src/internal/passkey-policy.ts +246 -0
  262. package/src/internal/password-credentials.ts +52 -10
  263. package/src/internal/password-native.ts +571 -0
  264. package/src/internal/password-policy.ts +307 -0
  265. package/src/internal/password-registration-native.ts +322 -0
  266. package/src/internal/persistence.ts +336 -290
  267. package/src/internal/phone-composed.ts +86 -0
  268. package/src/internal/phone-native.ts +659 -0
  269. package/src/internal/proof-native.ts +448 -0
  270. package/src/internal/registration.ts +96 -143
  271. package/src/internal/session-native-authority.ts +247 -0
  272. package/src/internal/session-native-cleanup.ts +65 -0
  273. package/src/internal/session-native-login.ts +205 -0
  274. package/src/internal/session-native-pending-read.ts +68 -0
  275. package/src/internal/session-native-pending.ts +223 -0
  276. package/src/internal/session-native-record.ts +141 -0
  277. package/src/internal/session-native-state.ts +259 -0
  278. package/src/internal/session-native-stateful.ts +512 -0
  279. package/src/internal/session-native-step-up.ts +450 -0
  280. package/src/internal/session-native-validity.ts +208 -0
  281. package/src/internal/session-policy.ts +59 -0
  282. package/src/internal/sql-authority.ts +56 -0
  283. package/src/internal/sql-change.ts +38 -0
  284. package/src/internal/sql-cleanup.ts +56 -0
  285. package/src/internal/sql-commit.ts +435 -0
  286. package/src/internal/sql-expression.ts +94 -0
  287. package/src/internal/sql-metadata.ts +100 -0
  288. package/src/internal/sql-oauth-connected-model.ts +6 -95
  289. package/src/internal/sql-oauth-model.ts +31 -134
  290. package/src/internal/sql-persistence.ts +2 -6
  291. package/src/internal/sql-storage-validation.ts +1 -2
  292. package/src/internal/sql-table.ts +19 -52
  293. package/src/internal/standalone.ts +2 -11
  294. package/src/internal/step-up-state.ts +4 -17
  295. package/src/internal/storage-clock.ts +58 -0
  296. package/src/internal/storage-mapping.ts +125 -340
  297. package/src/internal/storage-plans.ts +14 -80
  298. package/src/internal/storage-tables.ts +28 -212
  299. package/src/internal/storage-validation.ts +0 -58
  300. package/src/internal/table-model.ts +24 -0
  301. package/src/internal/totp-native.ts +701 -0
  302. package/dist/internal/PasswordPreparedPostconditions.d.mts +0 -22
  303. package/dist/internal/PasswordPreparedPostconditions.mjs +0 -12
  304. package/dist/internal/PasswordPreparedPostconditions.mjs.map +0 -1
  305. package/dist/internal/authority-snapshot.mjs +0 -53
  306. package/dist/internal/authority-snapshot.mjs.map +0 -1
  307. package/dist/internal/email-kernel.d.mts +0 -276
  308. package/dist/internal/email-kernel.mjs +0 -497
  309. package/dist/internal/email-kernel.mjs.map +0 -1
  310. package/dist/internal/models/passkey-registration-ceremony-model.mjs +0 -18
  311. package/dist/internal/models/passkey-registration-ceremony-model.mjs.map +0 -1
  312. package/dist/internal/oauth/accounts.d.mts +0 -8
  313. package/dist/internal/oauth/accounts.mjs +0 -379
  314. package/dist/internal/oauth/accounts.mjs.map +0 -1
  315. package/dist/internal/oauth/connected-access.d.mts +0 -9
  316. package/dist/internal/oauth/connected-access.mjs +0 -229
  317. package/dist/internal/oauth/connected-access.mjs.map +0 -1
  318. package/dist/internal/oauth/connected-collection.d.mts +0 -7
  319. package/dist/internal/oauth/connected-collection.mjs +0 -214
  320. package/dist/internal/oauth/connected-collection.mjs.map +0 -1
  321. package/dist/internal/oauth/connected-custody.d.mts +0 -6
  322. package/dist/internal/oauth/connected-custody.mjs +0 -165
  323. package/dist/internal/oauth/connected-custody.mjs.map +0 -1
  324. package/dist/internal/oauth/connected-flow.d.mts +0 -7
  325. package/dist/internal/oauth/connected-flow.mjs +0 -324
  326. package/dist/internal/oauth/connected-flow.mjs.map +0 -1
  327. package/dist/internal/oauth/connected-input.mjs +0 -122
  328. package/dist/internal/oauth/connected-input.mjs.map +0 -1
  329. package/dist/internal/oauth/connected-keys.d.mts +0 -2
  330. package/dist/internal/oauth/connected-keys.mjs +0 -22
  331. package/dist/internal/oauth/connected-keys.mjs.map +0 -1
  332. package/dist/internal/oauth/connected-maintenance.d.mts +0 -9
  333. package/dist/internal/oauth/connected-maintenance.mjs +0 -226
  334. package/dist/internal/oauth/connected-maintenance.mjs.map +0 -1
  335. package/dist/internal/oauth/connected-management.d.mts +0 -9
  336. package/dist/internal/oauth/connected-management.mjs +0 -243
  337. package/dist/internal/oauth/connected-management.mjs.map +0 -1
  338. package/dist/internal/oauth/connected-reference.mjs +0 -63
  339. package/dist/internal/oauth/connected-reference.mjs.map +0 -1
  340. package/dist/internal/oauth/connected-settlement.d.mts +0 -8
  341. package/dist/internal/oauth/connected-settlement.mjs +0 -141
  342. package/dist/internal/oauth/connected-settlement.mjs.map +0 -1
  343. package/dist/internal/oauth/connected-sign-in.d.mts +0 -10
  344. package/dist/internal/oauth/connected-sign-in.mjs +0 -281
  345. package/dist/internal/oauth/connected-sign-in.mjs.map +0 -1
  346. package/dist/internal/oauth/connected-state.d.mts +0 -14
  347. package/dist/internal/oauth/connected-state.mjs +0 -469
  348. package/dist/internal/oauth/connected-state.mjs.map +0 -1
  349. package/dist/internal/oauth/connected-target.d.mts +0 -21
  350. package/dist/internal/oauth/connected-target.mjs +0 -117
  351. package/dist/internal/oauth/connected-target.mjs.map +0 -1
  352. package/dist/internal/oauth/flow.d.mts +0 -5
  353. package/dist/internal/oauth/flow.mjs +0 -279
  354. package/dist/internal/oauth/flow.mjs.map +0 -1
  355. package/dist/internal/oauth/input.mjs +0 -127
  356. package/dist/internal/oauth/input.mjs.map +0 -1
  357. package/dist/internal/oauth/owner.d.mts +0 -10
  358. package/dist/internal/oauth/owner.mjs +0 -10
  359. package/dist/internal/oauth/owner.mjs.map +0 -1
  360. package/dist/internal/oauth/query-compiler.d.mts +0 -7
  361. package/dist/internal/oauth/query-compiler.mjs +0 -9
  362. package/dist/internal/oauth/query-compiler.mjs.map +0 -1
  363. package/dist/internal/oauth/registration.d.mts +0 -7
  364. package/dist/internal/oauth/registration.mjs +0 -393
  365. package/dist/internal/oauth/registration.mjs.map +0 -1
  366. package/dist/internal/oauth/target.d.mts +0 -31
  367. package/dist/internal/oauth/target.mjs +0 -273
  368. package/dist/internal/oauth/target.mjs.map +0 -1
  369. package/dist/internal/oauth-kernel.d.mts +0 -1423
  370. package/dist/internal/oauth-kernel.mjs +0 -187
  371. package/dist/internal/oauth-kernel.mjs.map +0 -1
  372. package/dist/internal/passkey/admission.d.mts +0 -6
  373. package/dist/internal/passkey/admission.mjs +0 -220
  374. package/dist/internal/passkey/admission.mjs.map +0 -1
  375. package/dist/internal/passkey/credentials.d.mts +0 -14
  376. package/dist/internal/passkey/credentials.mjs +0 -249
  377. package/dist/internal/passkey/credentials.mjs.map +0 -1
  378. package/dist/internal/passkey/enrollment.mjs +0 -138
  379. package/dist/internal/passkey/enrollment.mjs.map +0 -1
  380. package/dist/internal/passkey/flow.d.mts +0 -21
  381. package/dist/internal/passkey/flow.mjs +0 -452
  382. package/dist/internal/passkey/flow.mjs.map +0 -1
  383. package/dist/internal/passkey/management.mjs +0 -231
  384. package/dist/internal/passkey/management.mjs.map +0 -1
  385. package/dist/internal/passkey/registration-ceremony.d.mts +0 -9
  386. package/dist/internal/passkey/registration-ceremony.mjs +0 -129
  387. package/dist/internal/passkey/registration-ceremony.mjs.map +0 -1
  388. package/dist/internal/passkey/registration-custody.d.mts +0 -2
  389. package/dist/internal/passkey/registration-custody.mjs +0 -52
  390. package/dist/internal/passkey/registration-custody.mjs.map +0 -1
  391. package/dist/internal/passkey/registration-write.mjs +0 -211
  392. package/dist/internal/passkey/registration-write.mjs.map +0 -1
  393. package/dist/internal/passkey/state.d.mts +0 -10
  394. package/dist/internal/passkey/state.mjs +0 -234
  395. package/dist/internal/passkey/state.mjs.map +0 -1
  396. package/dist/internal/passkey/target.d.mts +0 -20
  397. package/dist/internal/passkey/target.mjs +0 -200
  398. package/dist/internal/passkey/target.mjs.map +0 -1
  399. package/dist/internal/passkey/write-state.d.mts +0 -17
  400. package/dist/internal/passkey/write-state.mjs +0 -346
  401. package/dist/internal/passkey/write-state.mjs.map +0 -1
  402. package/dist/internal/passkey/write-target.mjs +0 -192
  403. package/dist/internal/passkey/write-target.mjs.map +0 -1
  404. package/dist/internal/passkey-kernel.d.mts +0 -6045
  405. package/dist/internal/passkey-kernel.mjs +0 -49
  406. package/dist/internal/passkey-kernel.mjs.map +0 -1
  407. package/dist/internal/passkeys.d.mts +0 -7
  408. package/dist/internal/passkeys.mjs +0 -387
  409. package/dist/internal/passkeys.mjs.map +0 -1
  410. package/dist/internal/password-credentials.d.mts +0 -11
  411. package/dist/internal/password-kernel.d.mts +0 -278
  412. package/dist/internal/password-kernel.mjs +0 -508
  413. package/dist/internal/password-kernel.mjs.map +0 -1
  414. package/dist/internal/phone-kernel.d.mts +0 -162
  415. package/dist/internal/phone-kernel.mjs +0 -437
  416. package/dist/internal/phone-kernel.mjs.map +0 -1
  417. package/dist/internal/proof-kernel.d.mts +0 -94
  418. package/dist/internal/proof-kernel.mjs +0 -624
  419. package/dist/internal/proof-kernel.mjs.map +0 -1
  420. package/dist/internal/query-operations.d.mts +0 -68
  421. package/dist/internal/session-kernel.d.mts +0 -62
  422. package/dist/internal/session-kernel.mjs +0 -820
  423. package/dist/internal/session-kernel.mjs.map +0 -1
  424. package/dist/internal/sql-oauth-connected-model.mjs +0 -7
  425. package/dist/internal/sql-oauth-connected-model.mjs.map +0 -1
  426. package/dist/internal/sql-query.d.mts +0 -12
  427. package/dist/internal/sql-query.mjs +0 -206
  428. package/dist/internal/sql-query.mjs.map +0 -1
  429. package/dist/internal/step-up-state.d.mts +0 -49
  430. package/dist/internal/transaction-execution-kernel.d.mts +0 -37
  431. package/dist/internal/transaction-execution-kernel.mjs +0 -120
  432. package/dist/internal/transaction-execution-kernel.mjs.map +0 -1
  433. package/dist/internal/transaction-kernel.d.mts +0 -81
  434. package/dist/internal/transaction-kernel.mjs +0 -264
  435. package/dist/internal/transaction-kernel.mjs.map +0 -1
  436. package/src/internal/PasswordPreparedPostconditions.ts +0 -30
  437. package/src/internal/authority-snapshot.ts +0 -91
  438. package/src/internal/email-kernel.ts +0 -1555
  439. package/src/internal/oauth/accounts.ts +0 -838
  440. package/src/internal/oauth/connected-access.ts +0 -388
  441. package/src/internal/oauth/connected-collection.ts +0 -345
  442. package/src/internal/oauth/connected-custody.ts +0 -308
  443. package/src/internal/oauth/connected-flow.ts +0 -562
  444. package/src/internal/oauth/connected-input.ts +0 -147
  445. package/src/internal/oauth/connected-keys.ts +0 -31
  446. package/src/internal/oauth/connected-maintenance.ts +0 -379
  447. package/src/internal/oauth/connected-management.ts +0 -391
  448. package/src/internal/oauth/connected-reference.ts +0 -135
  449. package/src/internal/oauth/connected-settlement.ts +0 -278
  450. package/src/internal/oauth/connected-sign-in.ts +0 -472
  451. package/src/internal/oauth/connected-state.ts +0 -924
  452. package/src/internal/oauth/connected-target.ts +0 -307
  453. package/src/internal/oauth/flow.ts +0 -505
  454. package/src/internal/oauth/input.ts +0 -201
  455. package/src/internal/oauth/owner.ts +0 -22
  456. package/src/internal/oauth/query-compiler.ts +0 -15
  457. package/src/internal/oauth/registration.ts +0 -676
  458. package/src/internal/oauth/target.ts +0 -803
  459. package/src/internal/oauth-kernel.ts +0 -294
  460. package/src/internal/passkey/admission.ts +0 -368
  461. package/src/internal/passkey/credentials.ts +0 -511
  462. package/src/internal/passkey/enrollment.ts +0 -326
  463. package/src/internal/passkey/flow.ts +0 -1062
  464. package/src/internal/passkey/management.ts +0 -426
  465. package/src/internal/passkey/registration-ceremony.ts +0 -283
  466. package/src/internal/passkey/registration-custody.ts +0 -91
  467. package/src/internal/passkey/registration-write.ts +0 -426
  468. package/src/internal/passkey/state.ts +0 -351
  469. package/src/internal/passkey/target.ts +0 -598
  470. package/src/internal/passkey/write-state.ts +0 -678
  471. package/src/internal/passkey/write-target.ts +0 -450
  472. package/src/internal/passkey-kernel.ts +0 -112
  473. package/src/internal/passkeys.ts +0 -652
  474. package/src/internal/password-kernel.ts +0 -1522
  475. package/src/internal/phone-kernel.ts +0 -872
  476. package/src/internal/proof-kernel.ts +0 -1992
  477. package/src/internal/query-operations.ts +0 -91
  478. package/src/internal/session-kernel.ts +0 -2406
  479. package/src/internal/sql-query.ts +0 -304
  480. package/src/internal/transaction-execution-kernel.ts +0 -335
  481. package/src/internal/transaction-kernel.ts +0 -603
@@ -0,0 +1,94 @@
1
+ import type { SqlClient } from "effect/sql/SqlClient";
2
+ import * as Statement from "effect/sql/Statement";
3
+
4
+ import { PersistenceMappingError } from "./mapping-error";
5
+ import { Column, identifier, Table } from "./sql-table";
6
+
7
+ /** Pure mapped SQL. Compilation binds values through the executing client's
8
+ * dialect; expressions neither acquire a client nor execute a query. */
9
+ export class SqlExpression {
10
+ constructor(readonly compile: (client: SqlClient) => Statement.Fragment) {}
11
+ }
12
+
13
+ const quoted = (client: SqlClient, name: string) => {
14
+ if (name.includes("\0"))
15
+ throw PersistenceMappingError.make({ operation: "mapping", cause: "NUL in SQL identifier" });
16
+
17
+ return client.literal(identifier(name));
18
+ };
19
+
20
+ const tableName = (client: SqlClient, name: string, schema?: string) =>
21
+ schema === undefined
22
+ ? quoted(client, name)
23
+ : client`${quoted(client, schema)}.${quoted(client, name)}`;
24
+
25
+ const value = (client: SqlClient, input: unknown): Statement.Fragment => {
26
+ if (Statement.isFragment(input)) return input;
27
+ if (input instanceof SqlExpression) return input.compile(client);
28
+ if (input instanceof Table) return tableName(client, input.name, input.schema);
29
+ if (input instanceof Column)
30
+ return client`${tableName(client, input.tableName, input.schema)}.${quoted(client, input.options.name)}`;
31
+
32
+ return Statement.fragment([
33
+ Statement.parameter(
34
+ typeof input === "boolean"
35
+ ? client.onDialectOrElse({ sqlite: () => Number(input), orElse: () => input })
36
+ : input,
37
+ ),
38
+ ]);
39
+ };
40
+
41
+ /** Reject foreign expression handles at the metadata boundary. */
42
+ export const compileSqlExpression = (
43
+ client: SqlClient,
44
+ expression: unknown,
45
+ ): Statement.Fragment => {
46
+ if (
47
+ !Statement.isFragment(expression) &&
48
+ !(expression instanceof SqlExpression) &&
49
+ !(expression instanceof Table) &&
50
+ !(expression instanceof Column)
51
+ )
52
+ throw PersistenceMappingError.make({
53
+ operation: "mapping",
54
+ cause: "Expected a SQL expression",
55
+ });
56
+
57
+ return value(client, expression);
58
+ };
59
+
60
+ const template = (parts: TemplateStringsArray, ...values: ReadonlyArray<unknown>) =>
61
+ new SqlExpression((client) =>
62
+ client.join(
63
+ "",
64
+ false,
65
+ )(
66
+ parts.flatMap((part, index) =>
67
+ index === 0
68
+ ? [client.literal(part)]
69
+ : [value(client, values[index - 1]), client.literal(part)],
70
+ ),
71
+ ),
72
+ );
73
+
74
+ export const sql = Object.assign(template, {
75
+ join: (values: ReadonlyArray<unknown>, separator: SqlExpression = template``) =>
76
+ new SqlExpression((client) =>
77
+ client.join(
78
+ "",
79
+ false,
80
+ )(
81
+ values.flatMap((input, index) =>
82
+ index === 0 ? [value(client, input)] : [separator.compile(client), value(client, input)],
83
+ ),
84
+ ),
85
+ ),
86
+ });
87
+
88
+ export const eq = (left: unknown, right: unknown): SqlExpression => sql`${left} = ${right}`;
89
+
90
+ export const and = (...expressions: ReadonlyArray<SqlExpression | undefined>) => {
91
+ const present = expressions.filter((expression) => expression !== undefined);
92
+
93
+ return present.length === 0 ? undefined : sql`(${sql.join(present, sql` AND `)})`;
94
+ };
@@ -0,0 +1,100 @@
1
+ import { Effect } from "effect";
2
+ import type { SqlClient } from "effect/sql/SqlClient";
3
+ import type { Fragment } from "effect/sql/Statement";
4
+
5
+ import { PersistenceMappingError } from "./mapping-error";
6
+ import { identifier, Table } from "./sql-table";
7
+
8
+ /** Physical names are components, so a literal dot in a mapped name stays quoted. */
9
+ export const sqlName = (sql: SqlClient, name: string): Fragment => sql.literal(identifier(name));
10
+
11
+ export const sqlTable = (sql: SqlClient, table: Table): Fragment =>
12
+ sql.literal(
13
+ (table.schema === undefined ? "" : identifier(table.schema) + ".") + identifier(table.name),
14
+ );
15
+
16
+ export const sqlColumn = (sql: SqlClient, table: Table, key: string, alias?: string): Fragment =>
17
+ sql`${alias === undefined ? sqlTable(sql, table) : sqlName(sql, alias)}.${sqlName(sql, table.columns[key]!.options.name)}`;
18
+
19
+ export const sqlProjection = (
20
+ sql: SqlClient,
21
+ table: Table,
22
+ alias?: string,
23
+ prefix = "",
24
+ ): Fragment =>
25
+ sql.csv(
26
+ Object.keys(table.columns).map(
27
+ (key) => sql`${sqlColumn(sql, table, key, alias)} as ${sqlName(sql, prefix + key)}`,
28
+ ),
29
+ );
30
+
31
+ export const sqlValue = (sql: SqlClient, table: Table, key: string, value: unknown): unknown =>
32
+ table.columns[key]!.options.type === "boolean" && typeof value === "boolean"
33
+ ? sql.onDialectOrElse({ sqlite: () => Number(value), orElse: () => value })
34
+ : value;
35
+
36
+ export const sqlInsert = (
37
+ sql: SqlClient,
38
+ table: Table,
39
+ values: Readonly<Record<string, unknown>>,
40
+ ): Fragment => {
41
+ // The built-in insert/update helpers split dots in names and flatten SQL
42
+ // expression values. Keep physical name components and interpolated values.
43
+ const keys = Object.keys(table.columns).filter((key) => values[key] !== undefined);
44
+
45
+ return sql`(${sql.csv(keys.map((key) => sqlName(sql, table.columns[key]!.options.name)))}) values (${sql.csv(keys.map((key) => sql`${sqlValue(sql, table, key, values[key])}`))})`;
46
+ };
47
+
48
+ export const sqlInsertMany = (
49
+ sql: SqlClient,
50
+ table: Table,
51
+ rows: ReadonlyArray<Readonly<Record<string, unknown>>>,
52
+ ): Fragment => {
53
+ const keys = Object.keys(table.columns).filter((key) => rows[0]?.[key] !== undefined);
54
+
55
+ return sql`(${sql.csv(keys.map((key) => sqlName(sql, table.columns[key]!.options.name)))}) values ${sql.csv(rows.map((row) => sql`(${sql.csv(keys.map((key) => sql`${sqlValue(sql, table, key, row[key])}`))})`))}`;
56
+ };
57
+
58
+ export const sqlUpdate = (
59
+ sql: SqlClient,
60
+ table: Table,
61
+ values: Readonly<Record<string, unknown>>,
62
+ ): Fragment =>
63
+ sql.csv(
64
+ Object.entries(values)
65
+ .filter(([key, value]) => table.columns[key] !== undefined && value !== undefined)
66
+ .map(
67
+ ([key, value]) =>
68
+ sql`${sqlName(sql, table.columns[key]!.options.name)} = ${sqlValue(sql, table, key, value)}`,
69
+ ),
70
+ );
71
+
72
+ export const decodeSqlRow = (table: Table, row: Readonly<Record<string, unknown>>, prefix = "") =>
73
+ Effect.try({
74
+ try: () =>
75
+ Object.fromEntries(
76
+ Object.entries(table.columns).map(([key, column]) => [
77
+ key,
78
+ column.decode(row[prefix + key]),
79
+ ]),
80
+ ),
81
+ catch: (cause) => PersistenceMappingError.make({ operation: "decode", cause }),
82
+ });
83
+
84
+ export const requireSqlTable = (table: object): Table => {
85
+ if (!(table instanceof Table))
86
+ throw PersistenceMappingError.make({ operation: "mapping", cause: "Invalid SQL table" });
87
+
88
+ return table;
89
+ };
90
+
91
+ /** CTE names share a namespace with unqualified application tables. */
92
+ export const sqlAlias = (tables: ReadonlyArray<Table | undefined>, name: string): string => {
93
+ const occupied = new Set(
94
+ tables.flatMap((table) => (table === undefined ? [] : [table.name.toLowerCase()])),
95
+ );
96
+
97
+ while (occupied.has(name.toLowerCase())) name += "_";
98
+
99
+ return name;
100
+ };
@@ -1,144 +1,55 @@
1
- import * as Shared from "./models/oauth-connected-model";
1
+ import type * as Shared from "./models/oauth-connected-model";
2
+ import type { SqlExpression as SQL } from "./sql-expression";
2
3
  import type { SqlTableModel } from "./sql-oauth-model";
3
- import type { Fragment as SQL, Table } from "./sql-table";
4
+ import type { Table } from "./sql-table";
4
5
 
5
6
  export {
6
7
  type OAuthConnectedAction,
7
- type OAuthConnectedOrderCodec,
8
8
  type OAuthConnectedPolicyInput,
9
9
  requiredOAuthConnectedConstraints,
10
10
  requiredOAuthConnectedRevocationConstraints,
11
11
  } from "./models/oauth-connected-model";
12
12
 
13
- export type OAuthConnectedSubjectTable<S extends Table> = Shared.OAuthConnectedSubjectTable<
14
- SqlTableModel<S>,
15
- SQL
16
- >;
17
-
18
- export type OAuthConnectedFlowTable<F extends Table, N> = Shared.OAuthConnectedFlowTable<
19
- SqlTableModel<F>,
20
- N
21
- >;
22
-
23
13
  export type OAuthConnectedGrantTable<G extends Table, N> = Shared.OAuthConnectedGrantTable<
24
14
  SqlTableModel<G>,
25
15
  N
26
16
  >;
27
17
 
28
- /** Also stores a permanent provider/issuer scope anchor. clientKey must fit 52
29
- * ASCII characters. Empty clientRegistrationId is reserved for that anchor;
30
- * actual profile registrations are nonempty. Scope counter stays zero. */
31
- export type OAuthConnectedClientRegistrationTable<C extends Table> =
32
- Shared.OAuthConnectedClientRegistrationTable<SqlTableModel<C>>;
33
-
34
- /** Remote authority: no local-subject column or subject-scoped key. Retain this
35
- * anchor/cutoff when a legitimately released tuple gains a different local owner. */
36
- export type OAuthConnectedCohortTable<C extends Table> = Shared.OAuthConnectedCohortTable<
37
- SqlTableModel<C>
38
- >;
39
-
40
- export type OAuthConnectedAdmissionTable<A extends Table, N> = Shared.OAuthConnectedAdmissionTable<
41
- SqlTableModel<A>,
42
- N
43
- >;
44
-
45
- export type OAuthConnectedCommandTable<C extends Table, N> = Shared.OAuthConnectedCommandTable<
46
- SqlTableModel<C>,
47
- N
48
- >;
49
-
50
18
  export type OAuthConnectedRevocationJobTable<
51
19
  J extends Table,
52
20
  N,
53
21
  > = Shared.OAuthConnectedRevocationJobTable<SqlTableModel<J>, N>;
54
22
 
55
- export type OAuthConnectedPolicyGuardTable<
56
- T extends Table,
57
- N,
58
- > = Shared.OAuthConnectedPolicyGuardTable<SqlTableModel<T>, N, SQL>;
59
-
60
- export type OAuthConnectedPolicyGuard<N> = Shared.OAuthConnectedPolicyGuard<N, SQL, Table>;
61
-
62
- export const oauthConnectedPolicyGuard = <T extends Table, N>(
63
- input: OAuthConnectedPolicyGuardTable<T, N>,
64
- ): OAuthConnectedPolicyGuard<N> =>
65
- Shared.oauthConnectedPolicyGuard<SqlTableModel<T>, N, SQL>(input);
66
-
67
- export type OAuthConnectedSqlPolicy<N> = Shared.OAuthConnectedSqlPolicy<N, SQL, Table>;
68
-
69
- /** Existing ownership only; workers never allocate or acquire a tuple. */
70
- export type OAuthConnectedOwnershipRead<
71
- T extends Table,
72
- O extends Table,
73
- N,
74
- > = Shared.OAuthConnectedOwnershipRead<SqlTableModel<T>, SqlTableModel<O>, N, SQL>;
75
-
76
- export type OAuthConnectedAuthorityMapping<
77
- T extends Table,
78
- O extends Table,
79
- F extends Table,
80
- G extends Table,
81
- C extends Table,
82
- H extends Table,
83
- N,
84
- > = Shared.OAuthConnectedAuthorityMapping<
85
- SqlTableModel<T>,
86
- SqlTableModel<O>,
87
- SqlTableModel<F>,
88
- SqlTableModel<G>,
89
- SqlTableModel<C>,
90
- SqlTableModel<H>,
91
- N,
92
- SQL
93
- >;
23
+ export type OAuthConnectedSqlPolicy<N> = Shared.OAuthConnectedSqlPolicy<N, SQL>;
94
24
 
95
25
  export type OAuthConnectedMapping<
96
26
  S extends Table,
97
27
  AC extends Table,
98
- T extends Table,
99
28
  O extends Table,
100
29
  F extends Table,
101
30
  G extends Table,
102
- C extends Table,
103
- H extends Table,
104
- A extends Table,
105
- D extends Table,
106
31
  N,
107
- J extends Table = never,
32
+ J extends Table = Table,
108
33
  > = Shared.OAuthConnectedMapping<
109
34
  SqlTableModel<S>,
110
35
  SqlTableModel<AC>,
111
- SqlTableModel<T>,
112
36
  SqlTableModel<O>,
113
37
  SqlTableModel<F>,
114
38
  SqlTableModel<G>,
115
- SqlTableModel<C>,
116
- SqlTableModel<H>,
117
- SqlTableModel<A>,
118
- SqlTableModel<D>,
119
39
  N,
120
40
  SqlTableModel<J>,
121
41
  SQL,
122
- Table,
123
- SqlTableModel<Table>
42
+ SqlTableModel
124
43
  >;
125
44
 
126
45
  export type OAuthConnectedRevocationMapping<
127
- T extends Table,
128
46
  O extends Table,
129
- F extends Table,
130
47
  G extends Table,
131
- C extends Table,
132
- H extends Table,
133
48
  J extends Table,
134
49
  N,
135
50
  > = Shared.OAuthConnectedRevocationMapping<
136
- SqlTableModel<T>,
137
51
  SqlTableModel<O>,
138
- SqlTableModel<F>,
139
52
  SqlTableModel<G>,
140
- SqlTableModel<C>,
141
- SqlTableModel<H>,
142
53
  SqlTableModel<J>,
143
54
  N,
144
55
  SQL
@@ -1,27 +1,21 @@
1
1
  import * as Shared from "./models/oauth-model";
2
- import type { TableModel } from "./query-operations";
3
- import type { Fragment as SQL, Table } from "./sql-table";
2
+ import type { SqlExpression as SQL } from "./sql-expression";
3
+ import type { Table } from "./sql-table";
4
+ import type { TableModel } from "./table-model";
4
5
 
5
6
  export interface SqlTableModel<T extends Table = Table> extends TableModel {
6
7
  readonly table: T;
7
8
  }
8
9
 
9
10
  export {
10
- type OAuthFlowState,
11
- type OAuthTupleState,
12
- type OAuthRegistrationState,
13
11
  type OAuthAction,
14
12
  type OAuthEligibilityFact,
15
13
  type OAuthD1Mapping,
14
+ type OAuthRegistrationAuthority,
16
15
  requiredOAuthSignInConstraints,
17
- requiredOAuthTupleConstraints,
18
16
  requiredOAuthRegistrationConstraints,
19
- requiredOAuthAccountsConstraints,
20
- type OAuthRegistrationAuthority,
21
17
  } from "./models/oauth-model";
22
18
 
23
- /** The engine writes every critical column explicitly after applying the pure
24
- * consumer encoder. Native instant values must roundtrip without precision loss. */
25
19
  export type OAuthClock = Shared.OAuthClock<SQL>;
26
20
 
27
21
  export type OAuthSubjectReadTable<S extends Table> = Shared.OAuthSubjectReadTable<
@@ -33,14 +27,12 @@ export type OAuthSubjectTable<S extends Table> = Shared.OAuthSubjectTable<SqlTab
33
27
 
34
28
  export type OAuthOwnershipReadTable<O extends Table, N> = Shared.OAuthOwnershipReadTable<
35
29
  SqlTableModel<O>,
36
- N,
37
- SQL
30
+ N
38
31
  >;
39
32
 
40
33
  export type OAuthOwnershipTable<O extends Table, N> = Shared.OAuthOwnershipTable<
41
34
  SqlTableModel<O>,
42
- N,
43
- SQL
35
+ N
44
36
  >;
45
37
 
46
38
  export type OAuthCredentialReadTable<C extends Table> = Shared.OAuthCredentialReadTable<
@@ -65,51 +57,36 @@ export type OAuthAuthorityTable<C extends Table, N> = Shared.OAuthAuthorityTable
65
57
  SQL
66
58
  >;
67
59
 
68
- /** Both purposes may use the same physical table. Shared tables share module/flow
69
- * and module/command uniqueness. The snapshot has the exact purpose-specific core
70
- * codec; terminal writes erase it, while identity, claim and retention columns remain. */
71
60
  export type OAuthFlowTable<F extends Table> = Shared.OAuthFlowTable<SqlTableModel<F>>;
72
61
 
73
- export type OAuthTupleAuthorityTable<T extends Table, N> = Shared.OAuthTupleAuthorityTable<
74
- SqlTableModel<T>,
75
- N
76
- >;
77
-
78
62
  export type OAuthRegistrationIntentTable<I extends Table> = Shared.OAuthRegistrationIntentTable<
79
63
  SqlTableModel<I>
80
64
  >;
81
65
 
82
- export type OAuthRegistrationCommandTable<
83
- R extends Table,
84
- Registration,
85
- > = Shared.OAuthRegistrationCommandTable<SqlTableModel<R>, Registration>;
86
-
87
- export type OAuthUnlinkCommandTable<U extends Table> = Shared.OAuthUnlinkCommandTable<
88
- SqlTableModel<U>
89
- >;
90
-
91
- /** Each descriptor reads only its own subject-scoped method rows. The native row
92
- * projector and SQL condition must express the same installed method eligibility.
93
- * All source/identifier/policy mutations advance subject securityRevision. D1 also
94
- * guards exact selected IDs/versions and absence/count assumptions, never just a
95
- * stale boolean. An over-limit graph fails closed rather than truncating. */
96
66
  export type OAuthEligibilityTable<T extends Table, N> = Shared.OAuthEligibilityTable<
97
67
  SqlTableModel<T>,
98
68
  N,
99
69
  SQL
100
70
  >;
101
71
 
102
- /** Authenticated command replay uses current subject status and this additional
103
- * nonconsuming SQL policy. It never consumes a fresh action factor. */
104
- export type OAuthMetadataPolicy<N> = Shared.OAuthMetadataPolicy<N, SQL>;
105
-
106
72
  export type OAuthCleanupTable<T extends Table, N> = Shared.OAuthCleanupTable<
107
73
  SqlTableModel<T>,
108
74
  N,
109
75
  SQL
110
76
  >;
111
77
 
112
- export type OAuthRegistrationEligibility<N> = Shared.OAuthRegistrationEligibility<N, SQL>;
78
+ export type OAuthRegistrationGuardTable<
79
+ T extends Table,
80
+ Registration,
81
+ N,
82
+ > = Shared.OAuthRegistrationGuardTable<SqlTableModel<T>, Registration, N, SQL>;
83
+
84
+ export type OAuthRegistrationGuardDescriptor<Registration, N> =
85
+ Shared.OAuthRegistrationGuardDescriptor<Registration, N, SQL, Table>;
86
+
87
+ export type OAuthEligibilityDescriptor<N> = Shared.OAuthEligibilityDescriptor<N, SQL, Table>;
88
+
89
+ export type OAuthCleanupDescriptor<N> = Shared.OAuthCleanupDescriptor<N, SQL, Table>;
113
90
 
114
91
  export type OAuthSignInMapping<
115
92
  S extends Table,
@@ -128,64 +105,29 @@ export type OAuthSignInMapping<
128
105
  SQL
129
106
  >;
130
107
 
131
- export type OAuthOwnershipMutation<
132
- T extends Table,
133
- O extends Table,
134
- N,
135
- > = Shared.OAuthOwnershipMutation<SqlTableModel<T>, SqlTableModel<O>, N, SQL>;
136
-
137
- export type OAuthRegistrationIntentMapping<
108
+ export type OAuthAccountsMapping<
138
109
  S extends Table,
139
110
  O extends Table,
140
111
  C extends Table,
141
112
  AC extends Table,
142
113
  F extends Table,
143
- T extends Table,
144
- I extends Table,
145
114
  N,
146
- > = Shared.OAuthRegistrationIntentMapping<
115
+ > = Shared.OAuthAccountsMapping<
147
116
  SqlTableModel<S>,
148
117
  SqlTableModel<O>,
149
118
  SqlTableModel<C>,
150
119
  SqlTableModel<AC>,
151
120
  SqlTableModel<F>,
152
- SqlTableModel<T>,
153
- SqlTableModel<I>,
154
- N,
155
- SQL
156
- >;
157
-
158
- export type OAuthRegistrationBase<
159
- Registration,
160
- T extends Table,
161
- O extends Table,
162
- I extends Table,
163
- R extends Table,
164
- N,
165
- > = Shared.OAuthRegistrationBase<
166
- Registration,
167
- SqlTableModel<T>,
168
- SqlTableModel<O>,
169
- SqlTableModel<I>,
170
- SqlTableModel<R>,
171
121
  N,
172
122
  SQL,
173
123
  Table
174
124
  >;
175
125
 
176
- export type OAuthRegistrationGuardTable<
177
- T extends Table,
178
- Registration,
126
+ export type OAuthRegistrationIntentMapping<
127
+ O extends Table,
128
+ I extends Table,
179
129
  N,
180
- > = Shared.OAuthRegistrationGuardTable<SqlTableModel<T>, Registration, N, SQL>;
181
-
182
- export type OAuthRegistrationGuardDescriptor<Registration, N> =
183
- Shared.OAuthRegistrationGuardDescriptor<Registration, N, SQL, Table>;
184
-
185
- export const oauthRegistrationGuardTable = <T extends Table, Registration, N>(
186
- input: OAuthRegistrationGuardTable<T, Registration, N>,
187
- ): OAuthRegistrationGuardDescriptor<Registration, N> =>
188
- Shared.oauthRegistrationGuardTable<SqlTableModel<T>, Registration, N, SQL>(input);
130
+ > = Shared.OAuthRegistrationIntentMapping<SqlTableModel<O>, SqlTableModel<I>, N, SQL>;
189
131
 
190
132
  export type OAuthRegistrationMapping<
191
133
  Registration,
@@ -193,9 +135,7 @@ export type OAuthRegistrationMapping<
193
135
  O extends Table,
194
136
  C extends Table,
195
137
  AC extends Table,
196
- T extends Table,
197
138
  I extends Table,
198
- R extends Table,
199
139
  N,
200
140
  > = Shared.OAuthRegistrationMapping<
201
141
  Registration,
@@ -203,61 +143,18 @@ export type OAuthRegistrationMapping<
203
143
  SqlTableModel<O>,
204
144
  SqlTableModel<C>,
205
145
  SqlTableModel<AC>,
206
- SqlTableModel<T>,
207
146
  SqlTableModel<I>,
208
- SqlTableModel<R>,
209
147
  N,
210
148
  SQL,
211
149
  Table
212
150
  >;
213
151
 
214
- /** Heterogeneous descriptors are made by typed factories and projected privately. */
215
- export type OAuthEligibilityDescriptor<N> = Shared.OAuthEligibilityDescriptor<N, SQL, Table>;
216
-
217
- export const oauthEligibilityTable = <T extends Table, N>(
218
- input: OAuthEligibilityTable<T, N>,
219
- ): OAuthEligibilityDescriptor<N> => Shared.oauthEligibilityTable<SqlTableModel<T>, N, SQL>(input);
220
-
221
- export type OAuthCleanupDescriptor<N> = Shared.OAuthCleanupDescriptor<N, SQL, Table>;
222
-
223
- export const oauthCleanupTable = <T extends Table, N>(
224
- input: OAuthCleanupTable<T, N>,
225
- ): OAuthCleanupDescriptor<N> => Shared.oauthCleanupTable<SqlTableModel<T>, N, SQL>(input);
226
-
227
- /** A stable application/reference lock acquired before an ownership target.
228
- * Missing rows retain ownership. Conditions use detached native IDs; every
229
- * writer of the guarded reference follows the same order. */
230
- export type OAuthReferenceGuardTable<T extends Table, N> = Shared.OAuthReferenceGuardTable<
231
- SqlTableModel<T>,
232
- N,
233
- SQL
234
- >;
235
-
236
- export type OAuthReferenceGuardDescriptor<N> = Shared.OAuthReferenceGuardDescriptor<N, SQL, Table>;
152
+ export const oauthEligibilityTable = <T extends Table, N>(input: OAuthEligibilityTable<T, N>) =>
153
+ Shared.oauthEligibilityTable<SqlTableModel<T>, N, SQL>(input);
237
154
 
238
- export const oauthReferenceGuardTable = <T extends Table, N>(
239
- input: OAuthReferenceGuardTable<T, N>,
240
- ): OAuthReferenceGuardDescriptor<N> =>
241
- Shared.oauthReferenceGuardTable<SqlTableModel<T>, N, SQL>(input);
155
+ export const oauthCleanupTable = <T extends Table, N>(input: OAuthCleanupTable<T, N>) =>
156
+ Shared.oauthCleanupTable<SqlTableModel<T>, N, SQL>(input);
242
157
 
243
- export type OAuthAccountsMapping<
244
- S extends Table,
245
- O extends Table,
246
- C extends Table,
247
- AC extends Table,
248
- F extends Table,
249
- T extends Table,
250
- U extends Table,
251
- N,
252
- > = Shared.OAuthAccountsMapping<
253
- SqlTableModel<S>,
254
- SqlTableModel<O>,
255
- SqlTableModel<C>,
256
- SqlTableModel<AC>,
257
- SqlTableModel<F>,
258
- SqlTableModel<T>,
259
- SqlTableModel<U>,
260
- N,
261
- SQL,
262
- Table
263
- >;
158
+ export const oauthRegistrationGuardTable = <T extends Table, Registration, N>(
159
+ input: OAuthRegistrationGuardTable<T, Registration, N>,
160
+ ) => Shared.oauthRegistrationGuardTable<SqlTableModel<T>, Registration, N, SQL>(input);
@@ -3,9 +3,7 @@ import { SqlClient } from "effect/sql";
3
3
 
4
4
  import { PersistenceConfigurationError, type PersistenceApi } from "./configuration";
5
5
  import { makeNativeSqlTables } from "./native-sql-table";
6
- import { makeComposedPasskeys } from "./passkeys";
7
6
  import { createPersistence } from "./persistence";
8
- import { makeSqlDatabase, sqlQueryOperations } from "./sql-query";
9
7
  import { Table } from "./sql-table";
10
8
  import type { StorageTable } from "./storage-tables";
11
9
 
@@ -23,9 +21,7 @@ export const AuthPersistence: PersistenceApi<Table> & { readonly table: typeof t
23
21
  ),
24
22
  unique: table.unique,
25
23
  }),
26
- operations: sqlQueryOperations,
27
- nativeTables: (client) => makeNativeSqlTables(client),
28
- passkeys: makeComposedPasskeys(sqlQueryOperations),
24
+ nativeTables: makeNativeSqlTables,
29
25
  acquire: Effect.gen(function* () {
30
26
  const sql = yield* SqlClient.SqlClient;
31
27
 
@@ -40,7 +36,7 @@ export const AuthPersistence: PersistenceApi<Table> & { readonly table: typeof t
40
36
  reason: "Use an explicit adapter for this SQL dialect",
41
37
  });
42
38
 
43
- return yield* makeSqlDatabase(dialect);
39
+ return sql;
44
40
  }),
45
41
  }),
46
42
  table,
@@ -5,7 +5,6 @@ import { PersistenceMappingError } from "./mapping-error";
5
5
  import { Table } from "./sql-table";
6
6
  import { storageKeyPlans } from "./storage-plans";
7
7
  import { validateStorageBatch, type StorageValidation } from "./storage-validation";
8
- import { NativeDatabase } from "./transaction-kernel";
9
8
 
10
9
  /** Check declared mappings against physical keys before acquiring OAuth services. */
11
10
  export const validateSqlStorage = Effect.fnUntraced(function* (mapping: unknown) {
@@ -20,7 +19,7 @@ export const validateSqlStorage = Effect.fnUntraced(function* (mapping: unknown)
20
19
  PersistenceMappingError.make({ operation: "mapping", cause: "Invalid storage key mapping" }),
21
20
  });
22
21
 
23
- const { $client: client } = yield* NativeDatabase;
22
+ const client = yield* SqlClient.SqlClient;
24
23
 
25
24
  const dialect = client.onDialectOrElse({
26
25
  pg: () => "pg" as const,