@yielded/auth-persistence 0.1.0-beta.25 → 0.1.0-beta.27

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 +14 -81
  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 +26 -147
  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 -354
  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 -1556
  439. package/src/internal/oauth/accounts.ts +0 -839
  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 -692
  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 -1523
  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
@@ -1,15 +1,14 @@
1
1
  import {
2
2
  type PasskeyCeremony,
3
3
  type PasskeyCredential,
4
- type PasskeyMethodPolicy,
5
4
  PasskeyCredentials,
6
- PasskeyEnrollmentContext,
7
5
  PasskeyPersistence,
8
6
  } from "@yielded/auth/Passkey";
9
7
  import type { SubjectId } from "@yielded/auth/Schema";
8
+ import type { AuthenticationRequirement } from "@yielded/auth/Sessions";
10
9
  import { Effect, Layer } from "effect";
11
10
 
12
- import type { TableModel as Table, SqlExpression } from "../query-operations";
11
+ import type { TableModel as Table, SqlExpression } from "../table-model";
13
12
  import type { PersistenceMappingError } from "./common";
14
13
 
15
14
  export type PasskeyColumn<T extends Table> = T["column"];
@@ -26,10 +25,6 @@ export interface PasskeyPersistenceServices {
26
25
  readonly passkeyPersistence: PasskeyPersistence["Service"];
27
26
  }
28
27
 
29
- export interface PasskeyEnrollmentContextServices {
30
- readonly passkeyEnrollmentContext: PasskeyEnrollmentContext["Service"];
31
- }
32
-
33
28
  export const passkeyCredentialsLayer = <E, R>(
34
29
  services: Effect.Effect<PasskeyCredentialServices, E, R>,
35
30
  ): Layer.Layer<PasskeyCredentials, E, R> =>
@@ -46,14 +41,6 @@ export const passkeyPersistenceLayer = <E, R>(
46
41
  Effect.map(services, (value) => value.passkeyPersistence),
47
42
  );
48
43
 
49
- export const passkeyEnrollmentContextLayer = <E, R>(
50
- services: Effect.Effect<PasskeyEnrollmentContextServices, E, R>,
51
- ): Layer.Layer<PasskeyEnrollmentContext, E, R> =>
52
- Layer.effect(
53
- PasskeyEnrollmentContext,
54
- Effect.map(services, (value) => value.passkeyEnrollmentContext),
55
- );
56
-
57
44
  /** Native IDs roundtrip exactly; protocol IDs and authentication references are
58
45
  * different identities. These callbacks never suspend inside an owner. */
59
46
  export interface PasskeySubjectIdCodec<N> {
@@ -79,6 +66,9 @@ export interface PasskeySubjectReadTable<
79
66
  readonly id: PasskeyColumn<T>;
80
67
  readonly status: PasskeyColumn<T>;
81
68
  readonly securityRevision: PasskeyColumn<T>;
69
+ readonly decodeRequirement: (
70
+ row: T["select"],
71
+ ) => Effect.Effect<AuthenticationRequirement, PersistenceMappingError>;
82
72
  readonly decodeId: (row: Readonly<Partial<T["select"]>>) => N;
83
73
  readonly isActiveStatus: (value: unknown) => boolean;
84
74
  readonly activeCondition: Expression;
@@ -110,7 +100,6 @@ export interface PasskeyCredentialReadTable<
110
100
  readonly rpId: PasskeyColumn<T>;
111
101
  readonly protocolCredentialId: PasskeyColumn<T>;
112
102
  readonly credentialKey: PasskeyColumn<T>;
113
- readonly handleKey: PasskeyColumn<T>;
114
103
  readonly userHandle: PasskeyColumn<T>;
115
104
  readonly publicKey: PasskeyColumn<T>;
116
105
  readonly algorithm: PasskeyColumn<T>;
@@ -122,269 +111,83 @@ export interface PasskeyCredentialReadTable<
122
111
  readonly backupEligible: PasskeyColumn<T>;
123
112
  readonly backupState: PasskeyColumn<T>;
124
113
  readonly counter: PasskeyColumn<T>;
125
- readonly maximumCounter: PasskeyColumn<T>;
126
114
  readonly decode: (
127
115
  row: Readonly<Partial<T["select"]>>,
128
- ) => Omit<PasskeyCredential, "revision" | "active">;
116
+ ) => Omit<PasskeyCredential, "revision" | "active" | "requirement">;
129
117
  readonly decodeSubjectId: (row: Readonly<Partial<T["select"]>>) => N;
130
118
  readonly isActiveStatus: (value: unknown) => boolean;
131
119
  readonly activeCondition: Expression;
132
120
  }
133
121
 
134
- export interface PasskeyCredentialOwnershipTable<
135
- T extends Table,
136
- N,
137
- Expression extends SqlExpression = SqlExpression,
138
- > {
139
- readonly table: T["table"];
140
- readonly credentialKey: PasskeyColumn<T>;
141
- readonly rpId: PasskeyColumn<T>;
142
- readonly protocolCredentialId: PasskeyColumn<T>;
143
- readonly subjectId: PasskeyColumn<T>;
144
- readonly credentialId: PasskeyColumn<T>;
145
- readonly state: PasskeyColumn<T>;
146
- readonly version: PasskeyColumn<T>;
147
- readonly reservationId: PasskeyColumn<T>;
148
- readonly ownedCondition: Expression;
149
- readonly isOwnedState: (value: unknown) => boolean;
150
- readonly decodeSubjectId: (row: Readonly<Partial<T["select"]>>) => N;
151
- }
152
-
153
- /** Reservations do not manufacture a subject; bound handles are RP-global. */
154
- export interface PasskeyHandleReadTable<T extends Table> {
155
- readonly table: T["table"];
156
- readonly handleKey: PasskeyColumn<T>;
157
- readonly rpId: PasskeyColumn<T>;
158
- readonly userHandle: PasskeyColumn<T>;
159
- readonly state: PasskeyColumn<T>;
160
- readonly version: PasskeyColumn<T>;
161
- readonly reservationId: PasskeyColumn<T>;
162
- }
163
-
164
- export interface PasskeyHandleReservationTable<
165
- T extends Table,
166
- Expression extends SqlExpression = SqlExpression,
167
- > extends PasskeyHandleReadTable<T> {
168
- readonly reservedCondition: Expression;
169
- readonly isReservedState: (value: unknown) => boolean;
170
- }
171
-
172
- export interface PasskeyHandleOwnershipTable<
173
- T extends Table,
174
- N,
175
- Expression extends SqlExpression = SqlExpression,
176
- > extends PasskeyHandleReadTable<T> {
177
- readonly subjectId: PasskeyColumn<T>;
178
- readonly ownedCondition: Expression;
179
- readonly isOwnedState: (value: unknown) => boolean;
180
- readonly decodeSubjectId: (row: Readonly<Partial<T["select"]>>) => N;
181
- }
182
-
183
122
  export const requiredPasskeyCredentialConstraints = {
184
123
  credentialId: ["credentialId"],
124
+ credentialKey: ["credentialKey"],
185
125
  factor: ["subjectId", "credentialId"],
186
- credentialOwnership: ["credentialKey"],
187
- handleOwnership: ["handleKey"],
188
- boundSubjectHandle: ["rpId", "subjectId"],
189
126
  } as const;
190
127
 
191
128
  export interface PasskeyCredentialMapping<
192
129
  S extends Table,
193
130
  C extends Table,
194
131
  F extends Table,
195
- Ownership extends Table,
196
- Handle extends Table,
197
132
  N,
198
133
  Expression extends SqlExpression = SqlExpression,
199
134
  > {
200
135
  readonly subject: PasskeySubjectReadTable<S, N, Expression>;
201
136
  readonly credential: PasskeyCredentialReadTable<C, N, Expression>;
202
137
  readonly authority: PasskeyFactorReadTable<F, Expression>;
203
- readonly credentialOwnership: PasskeyCredentialOwnershipTable<Ownership, N, Expression>;
204
- readonly handleOwnership: PasskeyHandleOwnershipTable<Handle, N, Expression>;
205
138
  readonly subjectIds: PasskeySubjectIdCodec<N>;
206
139
  readonly constraints: typeof requiredPasskeyCredentialConstraints;
207
140
  }
208
141
 
209
- /** A stable additional policy row, acquired before RP/credential locks. The
210
- * factory checks column names without erasing the consumer table at its input. */
211
- const PasskeyPolicyGuardTypeId: unique symbol = Symbol("effect-auth/drizzle/PasskeyPolicyGuard");
212
-
213
- export interface PasskeyPolicyGuard<Expression extends SqlExpression = SqlExpression> {
214
- readonly [PasskeyPolicyGuardTypeId]: true;
215
- readonly scope: string;
216
- readonly table: object;
217
- readonly columns: ReadonlyArray<string>;
218
- readonly where: (moduleId: string) => Expression;
219
- readonly condition: (moduleId: string) => Expression;
220
- }
221
-
222
- export const passkeyPolicyGuard = <
223
- T extends Table,
224
- Expression extends SqlExpression = SqlExpression,
225
- >(input: {
226
- readonly scope: string;
227
- readonly table: T["table"];
228
- readonly columns: ReadonlyArray<PasskeyColumn<T>>;
229
- readonly where: (moduleId: string) => Expression;
230
- readonly condition: (moduleId: string) => Expression;
231
- }): PasskeyPolicyGuard<Expression> => ({ ...input, [PasskeyPolicyGuardTypeId]: true });
232
-
233
- export interface PasskeyModuleTable<
234
- T extends Table,
235
- Expression extends SqlExpression = SqlExpression,
236
- > {
237
- readonly table: T["table"];
238
- readonly moduleId: PasskeyColumn<T>;
239
- readonly status: PasskeyColumn<T>;
240
- readonly policyRevision: PasskeyColumn<T>;
241
- /** All physical fields used by decodeMethodPolicy, including policyRevision. */
242
- readonly policyColumns: ReadonlyArray<PasskeyColumn<T>>;
243
- readonly isActiveStatus: (value: unknown) => boolean;
244
- readonly activeCondition: Expression;
245
- readonly decodeMethodPolicy: (row: Readonly<Partial<T["select"]>>) => PasskeyMethodPolicy;
246
- readonly guards?: ReadonlyArray<PasskeyPolicyGuard<Expression>>;
247
- }
248
-
249
- export type PasskeyFlowState =
250
- | "Pending"
251
- | "Claimed"
252
- | "Verified"
253
- | "Rejected"
254
- | "Ambiguous"
255
- | "RegistrationAccepted"
256
- | "ProvisioningPending";
257
-
258
142
  export interface PasskeyFlowInsert {
259
143
  readonly ceremony: PasskeyCeremony;
260
- readonly policy: PasskeyMethodPolicy;
261
- readonly marker: string;
262
144
  }
263
145
 
146
+ /** An immutable, single-use challenge. Consuming or expiring it deletes the row. */
264
147
  export interface PasskeyFlowTable<T extends Table> {
265
148
  readonly table: T["table"];
266
149
  readonly moduleId: PasskeyColumn<T>;
267
150
  readonly flowId: PasskeyColumn<T>;
268
- readonly commandId: PasskeyColumn<T>;
269
151
  readonly purpose: PasskeyColumn<T>;
270
- readonly state: PasskeyColumn<T>;
271
- readonly version: PasskeyColumn<T>;
272
- readonly generation: PasskeyColumn<T>;
273
152
  readonly snapshot: PasskeyColumn<T>;
274
- readonly policySnapshot: PasskeyColumn<T>;
275
153
  readonly requestBindingVerifier: PasskeyColumn<T>;
276
154
  readonly requestBindingExpiresAt: PasskeyColumn<T>;
277
155
  readonly issuedAt: PasskeyColumn<T>;
278
156
  readonly expiresAt: PasskeyColumn<T>;
279
- readonly retentionUntil: PasskeyColumn<T>;
280
- readonly claimId: PasskeyColumn<T>;
281
- readonly claimedAt: PasskeyColumn<T>;
282
- readonly claimExpiresAt: PasskeyColumn<T>;
283
- readonly credentialSnapshot: PasskeyColumn<T>;
284
- /** Core SubjectId scope text, not a consumer's native subject ID. */
285
- readonly subjectScope: PasskeyColumn<T>;
286
- readonly targetScope: PasskeyColumn<T>;
287
- readonly states: Readonly<Record<PasskeyFlowState, unknown>>;
288
157
  readonly encodeInsert: (input: PasskeyFlowInsert) => T["insert"];
289
158
  }
290
159
 
291
- export interface PasskeyAdmissionTable<T extends Table> {
292
- readonly table: T["table"];
293
- readonly authorityScope: PasskeyColumn<T>;
294
- readonly moduleId: PasskeyColumn<T>;
295
- readonly version: PasskeyColumn<T>;
296
- readonly ownerMarker: PasskeyColumn<T>;
297
- /** One physical clock sample, reused by every charge of this decision. */
298
- readonly admittedAt: PasskeyColumn<T>;
299
- }
300
-
301
- export type PasskeyChargeKind = "global" | "subject" | "target";
302
-
303
- export interface PasskeyChargeInsert {
304
- readonly moduleId: string;
305
- readonly flowId: string;
306
- readonly purpose: PasskeyCeremony["purpose"];
307
- readonly kind: PasskeyChargeKind;
308
- readonly scope: string;
309
- readonly originalWindowMillis: number;
310
- readonly marker: string;
311
- }
312
-
313
- /** Charge scope is canonical core identity text; this subject-free descriptor
314
- * can count all purposes without decoding any unrelated native subject. */
315
- export interface PasskeyChargeTable<T extends Table> {
316
- readonly table: T["table"];
317
- readonly moduleId: PasskeyColumn<T>;
318
- readonly flowId: PasskeyColumn<T>;
319
- readonly purpose: PasskeyColumn<T>;
320
- readonly kind: PasskeyColumn<T>;
321
- readonly scope: PasskeyColumn<T>;
322
- readonly originalWindowMillis: PasskeyColumn<T>;
323
- readonly admittedAt: PasskeyColumn<T>;
324
- readonly retainUntil: PasskeyColumn<T>;
325
- readonly version: PasskeyColumn<T>;
326
- readonly ownerMarker: PasskeyColumn<T>;
327
- readonly encodeInsert: (input: PasskeyChargeInsert) => T["insert"];
328
- }
329
-
330
160
  export const requiredPasskeyPersistenceConstraints = {
331
161
  flow: ["moduleId", "flowId"],
332
- command: ["moduleId", "commandId"],
333
- admission: ["authorityScope", "moduleId"],
334
- charge: ["moduleId", "flowId", "kind"],
335
162
  } as const;
336
163
 
337
164
  export interface PasskeyCeremonyMapping<
338
- Module extends Table,
339
165
  Flow extends Table,
340
- Admission extends Table,
341
- Charge extends Table,
342
166
  Expression extends SqlExpression = SqlExpression,
343
167
  > {
344
168
  readonly moduleId: string;
345
- readonly authorityScope: string;
346
- readonly module: PasskeyModuleTable<Module, Expression>;
347
169
  readonly flow: PasskeyFlowTable<Flow>;
348
- readonly admission: PasskeyAdmissionTable<Admission>;
349
- readonly charge: PasskeyChargeTable<Charge>;
350
170
  readonly clock: PasskeyClock<Expression>;
351
171
  readonly constraints: typeof requiredPasskeyPersistenceConstraints;
352
172
  }
353
173
 
354
174
  export interface PasskeyPersistenceMapping<
355
175
  Read,
356
- Module extends Table,
357
176
  Flow extends Table,
358
- Admission extends Table,
359
- Charge extends Table,
360
177
  N,
361
178
  Expression extends SqlExpression = SqlExpression,
362
179
  Credential extends Table = Table,
363
- > extends PasskeyCeremonyMapping<Module, Flow, Admission, Charge, Expression> {
180
+ > extends PasskeyCeremonyMapping<Flow, Expression> {
364
181
  readonly read: Read & {
365
182
  readonly subjectIds: PasskeySubjectIdCodec<N>;
366
183
  };
367
184
  readonly telemetry: {
368
185
  readonly lastUsedAt: PasskeyColumn<Credential>;
186
+ readonly encodeBackupEligible: (value: boolean) => unknown;
369
187
  readonly encodeBackupState: (value: boolean) => unknown;
370
188
  };
371
189
  }
372
190
 
373
- export interface PasskeyEnrollmentContextMapping<
374
- Read,
375
- Module extends Table,
376
- N,
377
- Expression extends SqlExpression = SqlExpression,
378
- > {
379
- readonly moduleId: string;
380
- readonly read: Read & {
381
- readonly subjectIds: PasskeySubjectIdCodec<N>;
382
- };
383
- readonly module: PasskeyModuleTable<Module, Expression>;
384
- }
385
-
386
191
  export interface D1PasskeyMapping {
387
- readonly d1: {
388
- readonly primary: true;
389
- };
192
+ readonly d1: { readonly primary: true };
390
193
  }
@@ -1,72 +1,18 @@
1
- import type { TableModel as Table, SqlExpression } from "../query-operations";
2
- import type {
3
- PasskeyCeremonyMapping,
4
- PasskeyChargeTable,
5
- PasskeyColumn,
6
- PasskeyFlowTable,
7
- PasskeyHandleReservationTable,
8
- PasskeyPersistenceServices,
9
- } from "./passkey-model";
1
+ import type { TableModel as Table, SqlExpression } from "../table-model";
2
+ import type { PasskeyCeremonyMapping, PasskeyPersistenceServices } from "./passkey-model";
10
3
 
11
4
  export interface PasskeyRegistrationCeremonyCapabilities {
12
5
  readonly purposes: readonly ["registration"];
13
6
  readonly issue: "registration-authority";
14
- readonly assertionSettlement: false;
7
+ readonly assertionConsumption: false;
15
8
  }
16
9
 
17
10
  export interface PasskeyRegistrationCeremonyServices extends PasskeyPersistenceServices {
18
11
  readonly capabilities: PasskeyRegistrationCeremonyCapabilities;
19
12
  }
20
13
 
21
- /** Read-only custody supplied by a separate registration issuance authority.
22
- * No application payload codec, subject codec or provisioning callback runs here. */
23
- export interface PasskeyRegistrationIntentReadTable<
24
- T extends Table,
25
- Expression extends SqlExpression = SqlExpression,
26
- > {
27
- readonly table: T["table"];
28
- readonly moduleId: PasskeyColumn<T>;
29
- readonly flowId: PasskeyColumn<T>;
30
- readonly commandId: PasskeyColumn<T>;
31
- readonly state: PasskeyColumn<T>;
32
- readonly version: PasskeyColumn<T>;
33
- readonly fingerprint: PasskeyColumn<T>;
34
- readonly handleKey: PasskeyColumn<T>;
35
- readonly reservationId: PasskeyColumn<T>;
36
- readonly ceremonySnapshot: PasskeyColumn<T>;
37
- /** Already validated by the issuing authority; compare opaque bytes only. */
38
- readonly applicationSnapshot: PasskeyColumn<T>;
39
- readonly pendingCondition: Expression;
40
- readonly isPendingState: (value: unknown) => boolean;
41
- /** Any unresolved initial intent or provisioning job; cleanup never releases it. */
42
- readonly custodyCondition: Expression;
43
- }
44
-
45
- export const requiredPasskeyRegistrationCeremonyConstraints = {
46
- flow: ["moduleId", "flowId"],
47
- command: ["moduleId", "commandId"],
48
- admission: ["authorityScope", "moduleId"],
49
- charge: ["moduleId", "flowId", "kind"],
50
- intentFlow: ["moduleId", "flowId"],
51
- intentCommand: ["moduleId", "commandId"],
52
- handle: ["handleKey"],
53
- } as const;
54
-
55
- export interface PasskeyRegistrationCeremonyMapping<
56
- Module extends Table,
14
+ /** The registration authority owns insertion and consumption of the challenge. */
15
+ export type PasskeyRegistrationCeremonyMapping<
57
16
  Flow extends Table,
58
- Admission extends Table,
59
- Charge extends Table,
60
- Intent extends Table,
61
- Handle extends Table,
62
17
  Expression extends SqlExpression = SqlExpression,
63
- > extends Omit<
64
- PasskeyCeremonyMapping<Module, Flow, Admission, Charge, Expression>,
65
- "constraints" | "flow" | "charge"
66
- > {
67
- readonly flow: Omit<PasskeyFlowTable<Flow>, "encodeInsert">;
68
- readonly charge: Omit<PasskeyChargeTable<Charge>, "encodeInsert">;
69
- readonly intent: PasskeyRegistrationIntentReadTable<Intent, Expression>;
70
- readonly handle: PasskeyHandleReservationTable<Handle, Expression>;
71
- readonly constraints: typeof requiredPasskeyRegistrationCeremonyConstraints;
72
- }
18
+ > = PasskeyCeremonyMapping<Flow, Expression>;
@@ -3,7 +3,7 @@ import type {
3
3
  PasskeyUnavailable,
4
4
  PasskeyActionAuthorization,
5
5
  PasskeyCeremony,
6
- PasskeyClaim,
6
+ PasskeyAccess,
7
7
  PasskeyCredential,
8
8
  PasskeyCredentialSummary,
9
9
  PasskeyIssueDecision,
@@ -14,23 +14,20 @@ import type {
14
14
  PasskeyManagementPersistence,
15
15
  PreparePasskeyCommit,
16
16
  PasskeyManagementPolicy,
17
- PasskeyMethodPolicy,
18
17
  } from "@yielded/auth/Passkey";
19
18
  import type { TokenDigest } from "@yielded/auth/Schema";
20
19
  import type { SessionInvalidationWindow } from "@yielded/auth/Sessions";
21
20
  import type { Effect, Schema } from "effect";
22
21
 
23
- import type { TableModel as Table, SqlExpression } from "../query-operations";
22
+ import type { TableModel as Table, SqlExpression } from "../table-model";
24
23
  import type { PersistenceMappingError } from "./common";
25
24
  import type {
26
25
  PasskeyColumn,
27
26
  PasskeyCredentialMapping,
28
27
  PasskeyFlowTable,
29
- PasskeyHandleReservationTable,
30
28
  PasskeyPersistenceMapping,
31
29
  PasskeyPersistenceServices,
32
30
  } from "./passkey-model";
33
- import type { PasskeyRegistrationIntentReadTable } from "./passkey-registration-ceremony-model";
34
31
 
35
32
  export interface PasskeyCredentialInsert<N> {
36
33
  readonly subjectId: N;
@@ -43,8 +40,6 @@ export interface PasskeyWriteTables<
43
40
  S extends Table,
44
41
  C extends Table,
45
42
  F extends Table,
46
- O extends Table,
47
- H extends Table,
48
43
  N,
49
44
  Expression extends SqlExpression = SqlExpression,
50
45
  > {
@@ -63,21 +58,7 @@ export interface PasskeyWriteTables<
63
58
  readonly activeStatus: unknown;
64
59
  readonly removedStatus: unknown;
65
60
  };
66
- readonly credentialOwnership: {
67
- readonly encodeInsert: (input: PasskeyCredentialInsert<N>) => O["insert"];
68
- readonly ownedState: unknown;
69
- readonly removedState: unknown;
70
- };
71
- readonly handleOwnership: {
72
- readonly encodeInsert: (input: {
73
- readonly subjectId: N;
74
- readonly rpId: string;
75
- readonly userHandle: string;
76
- readonly marker: string;
77
- }) => H["insert"];
78
- readonly ownedState: unknown;
79
- };
80
- /** All mutable policy dependencies must be subject columns or declared module guards. */
61
+ /** Mutable management policy dependencies belong to the locked subject row. */
81
62
  readonly policy: {
82
63
  readonly subjectColumns: ReadonlyArray<PasskeyColumn<S>>;
83
64
  readonly management: (row: Readonly<Partial<S["select"]>>) => PasskeyManagementPolicy;
@@ -122,50 +103,21 @@ export const passkeyInvalidationMutation = <
122
103
  readonly postcondition: (input: PasskeyInvalidationInput<N>) => Expression;
123
104
  }): PasskeyInvalidationMutation<N, Expression> => input;
124
105
 
125
- export interface PasskeyCommandTable<T extends Table, N> {
126
- readonly table: T["table"];
127
- readonly moduleId: PasskeyColumn<T>;
128
- readonly commandId: PasskeyColumn<T>;
129
- readonly subjectId: PasskeyColumn<T>;
130
- readonly credentialId: PasskeyColumn<T>;
131
- readonly intent: PasskeyColumn<T>;
132
- readonly decision: PasskeyColumn<T>;
133
- readonly retentionUntil: PasskeyColumn<T>;
134
- readonly version: PasskeyColumn<T>;
135
- readonly encodeInsert: (input: {
136
- readonly moduleId: string;
137
- readonly commandId: string;
138
- readonly subjectId: N;
139
- readonly credentialId: string;
140
- }) => T["insert"];
141
- }
142
-
143
106
  export interface PasskeyManagementMapping<
144
107
  S extends Table,
145
108
  C extends Table,
146
109
  F extends Table,
147
- O extends Table,
148
- H extends Table,
149
- M extends Table,
150
110
  Flow extends Table,
151
- A extends Table,
152
- Charge extends Table,
153
- Command extends Table,
154
111
  N,
155
112
  Expression extends SqlExpression = SqlExpression,
156
113
  > extends PasskeyPersistenceMapping<
157
- PasskeyCredentialMapping<S, C, F, O, H, N, Expression>,
158
- M,
114
+ PasskeyCredentialMapping<S, C, F, N, Expression>,
159
115
  Flow,
160
- A,
161
- Charge,
162
116
  N,
163
117
  Expression,
164
118
  C
165
119
  > {
166
- readonly write: PasskeyWriteTables<S, C, F, O, H, N, Expression>;
167
- readonly command: PasskeyCommandTable<Command, N>;
168
- readonly managementConstraints: typeof requiredPasskeyManagementConstraints;
120
+ readonly write: PasskeyWriteTables<S, C, F, N, Expression>;
169
121
  /** Removal must match the installed session strategy and change the subject revision; immediate sessions must consult that authority or be updated here. Enrollment preserves existing authentication. */
170
122
  readonly invalidation: {
171
123
  readonly window: SessionInvalidationWindow;
@@ -174,8 +126,6 @@ export interface PasskeyManagementMapping<
174
126
  };
175
127
  }
176
128
 
177
- export const requiredPasskeyManagementConstraints = { command: ["moduleId", "commandId"] } as const;
178
-
179
129
  export interface PasskeyManagementServices extends PasskeyPersistenceServices {
180
130
  readonly passkeyManagementPersistence: PasskeyManagementPersistence["Service"];
181
131
  }
@@ -193,16 +143,15 @@ export interface PasskeyRegistrationWriter<R> {
193
143
  readonly issueRegistration: <A>(
194
144
  input: {
195
145
  readonly ceremony: PasskeyCeremony;
196
- readonly policy: PasskeyMethodPolicy;
197
146
  readonly registration: R;
198
147
  },
199
148
  prepare: PreparePasskeyCommit<PasskeyIssueDecision, A>,
200
149
  ) => Effect.Effect<PreparedCommit<A>, PasskeyUnavailable>;
201
150
  readonly completeRegistration: <A>(
202
151
  input: {
203
- readonly claim: PasskeyClaim;
152
+ readonly access: PasskeyAccess;
153
+ readonly ceremony: PasskeyCeremony;
204
154
  readonly verified: PasskeyRegistrationVerified;
205
- readonly nowMillis: number;
206
155
  },
207
156
  prepare: PreparePasskeyCommit<
208
157
  | PasskeyRegistrationResult
@@ -222,45 +171,21 @@ export interface PasskeyRegistrationMapping<
222
171
  S extends Table,
223
172
  C extends Table,
224
173
  F extends Table,
225
- O extends Table,
226
- H extends Table,
227
- M extends Table,
228
174
  Flow extends Table,
229
- A extends Table,
230
- Charge extends Table,
231
- Intent extends Table,
232
175
  N,
233
176
  R,
234
177
  Expression extends SqlExpression = SqlExpression,
235
178
  > extends PasskeyPersistenceMapping<
236
- PasskeyCredentialMapping<S, C, F, O, H, N, Expression>,
237
- M,
179
+ PasskeyCredentialMapping<S, C, F, N, Expression>,
238
180
  Flow,
239
- A,
240
- Charge,
241
181
  N,
242
182
  Expression,
243
183
  C
244
184
  > {
245
- readonly write: PasskeyWriteTables<S, C, F, O, H, N, Expression>;
185
+ readonly write: PasskeyWriteTables<S, C, F, N, Expression>;
246
186
  readonly flow: PasskeyFlowTable<Flow>;
247
- readonly handle: PasskeyHandleReservationTable<H, Expression> & {
248
- readonly reservedState: unknown;
249
- readonly encodeInsert: (input: {
250
- readonly ceremony: PasskeyCeremony;
251
- readonly reservationId: string;
252
- }) => H["insert"];
253
- };
254
- readonly intent: PasskeyRegistrationIntentReadTable<Intent, Expression> & {
255
- readonly pendingState: unknown;
256
- readonly acceptedState: unknown;
257
- readonly rejectedState: unknown;
258
- readonly encodeInsert: (input: {
259
- readonly ceremony: PasskeyCeremony;
260
- readonly registration: R;
261
- readonly reservationId: string;
262
- }) => Intent["insert"];
263
- };
187
+ /** Schema-encoded original registration payload on the same immutable flow row. */
188
+ readonly applicationSnapshot: PasskeyColumn<Flow>;
264
189
  /** Consumer-owned data and identity, synchronously encoded inside the owner. A SQL-local registration creates no session and needs no email address. */
265
190
  readonly registration: {
266
191
  readonly schema: Schema.Codec<R, unknown, never, never>;
@@ -271,12 +196,13 @@ export interface PasskeyRegistrationMapping<
271
196
  readonly eligible: (registration: R) => Expression;
272
197
  /** Commit-time application policy after provisioning. Unlike `eligible`, this
273
198
  * must permit the newly created subject and retain every mutable prerequisite.
274
- * Declare mutable external policy rows in module.guards so native locking
275
- * owners serialize revocation through commit; this predicate alone is not a lock. */
199
+ * Subject-local prerequisites are checked under its lock. */
276
200
  readonly finalEligibility: (input: {
277
201
  readonly registration: R;
278
202
  readonly subjectId: N;
279
203
  }) => Expression;
204
+ /** D1 plans require explicit subject identity, status, and security revision
205
+ * values; they cannot read database defaults before the atomic batch runs. */
280
206
  readonly subject: (input: {
281
207
  readonly registration: R;
282
208
  readonly ceremony: PasskeyCeremony;
@@ -287,11 +213,4 @@ export interface PasskeyRegistrationMapping<
287
213
  };
288
214
  readonly activeStatus: unknown;
289
215
  };
290
- readonly registrationConstraints: typeof requiredPasskeyRegistrationWriteConstraints;
291
216
  }
292
-
293
- export const requiredPasskeyRegistrationWriteConstraints = {
294
- intentFlow: ["moduleId", "flowId"],
295
- intentCommand: ["moduleId", "commandId"],
296
- handle: ["handleKey"],
297
- } as const;