@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
@@ -1,22 +1,17 @@
1
+ import { SqlExpression, TableModel } from "../table-model.mjs";
1
2
  import { PersistenceMappingError } from "../mapping-error.mjs";
2
- import { SqlExpression, TableModel } from "../query-operations.mjs";
3
3
  import { SubjectIdCodec } from "./common.mjs";
4
- import { Crypto, Effect, PlatformError } from "effect";
5
- import { TokenDigest } from "@yielded/auth/Schema";
4
+ import { Effect, Schema } from "effect";
6
5
  import { PreparedCommit } from "@yielded/auth/Hooks";
6
+ import { CleanupResult } from "@yielded/auth/Persistence";
7
7
  import { AuthenticationRequirement, SecurityRevision } from "@yielded/auth/Sessions";
8
- import { OAuthAccountRevision, OAuthActionAuthorization, OAuthCleanupInput, OAuthCommandId, OAuthCredentialSnapshot, OAuthExternalIdentity, OAuthRegistrationAccess, OAuthRegistrationDecision, OAuthRegistrationInspection, OAuthRegistrationIntent, OAuthUnavailable, PrepareOAuthCommit } from "@yielded/auth/OAuth";
9
- import { AuthenticationFactor } from "@yielded/auth/Operations";
8
+ import { TokenDigest } from "@yielded/auth/Schema";
9
+ import { OAuthAccountRevision, OAuthActionAuthorization, OAuthCleanupInput, OAuthCommandId, OAuthExternalIdentity, OAuthRegistrationAccess, OAuthRegistrationDecision, OAuthRegistrationInspection, OAuthRegistrationIntent, OAuthUnavailable, PrepareOAuthCommit } from "@yielded/auth/OAuth";
10
10
  declare namespace oauth_model_d_exports {
11
- export { OAuthAccountsMapping, OAuthAction, OAuthAuthorityReadTable, OAuthAuthorityTable, OAuthCleanupDescriptor, OAuthCleanupTable, OAuthClock, OAuthCredentialReadTable, OAuthCredentialTable, OAuthD1Mapping, OAuthEligibilityDescriptor, OAuthEligibilityFact, OAuthEligibilityTable, OAuthFlowState, OAuthFlowTable, OAuthMetadataPolicy, OAuthOwnershipMutation, OAuthOwnershipReadTable, OAuthOwnershipTable, OAuthReferenceGuardDescriptor, OAuthReferenceGuardTable, OAuthRegistrationAuthority, OAuthRegistrationBase, OAuthRegistrationCommandTable, OAuthRegistrationEligibility, OAuthRegistrationGuardDescriptor, OAuthRegistrationGuardTable, OAuthRegistrationIntentMapping, OAuthRegistrationIntentTable, OAuthRegistrationMapping, OAuthRegistrationState, OAuthSignInMapping, OAuthSubjectReadTable, OAuthSubjectTable, OAuthTupleAuthorityTable, OAuthTupleState, OAuthUnlinkCommandTable, oauthCleanupTable, oauthEligibilityTable, oauthReferenceGuardTable, oauthRegistrationGuardTable, requiredOAuthAccountsConstraints, requiredOAuthRegistrationConstraints, requiredOAuthSignInConstraints, requiredOAuthTupleConstraints };
11
+ export { OAuthAccountsMapping, OAuthAction, OAuthAuthorityReadTable, OAuthAuthorityTable, OAuthCleanupDescriptor, OAuthCleanupTable, OAuthClock, OAuthCredentialReadTable, OAuthCredentialTable, OAuthD1Mapping, OAuthEligibilityDescriptor, OAuthEligibilityFact, OAuthEligibilityTable, OAuthFlowTable, OAuthOwnershipReadTable, OAuthOwnershipTable, OAuthRegistrationAuthority, OAuthRegistrationGuardDescriptor, OAuthRegistrationGuardTable, OAuthRegistrationIntentMapping, OAuthRegistrationIntentTable, OAuthRegistrationMapping, OAuthSignInMapping, OAuthSubjectReadTable, OAuthSubjectTable, oauthCleanupTable, oauthEligibilityTable, oauthRegistrationGuardTable, requiredOAuthRegistrationConstraints, requiredOAuthSignInConstraints };
12
12
  }
13
13
  type Column<T extends TableModel> = T["column"];
14
- export type OAuthFlowState = "Pending" | "Claimed" | "Verified" | "RegistrationIssued" | "Linked" | "Cancelled" | "Rejected" | "Ambiguous" | "Conflict";
15
- export type OAuthTupleState = "Unowned" | "Reserved" | "Owned";
16
- export type OAuthRegistrationState = "Unbound" | "Registered" | "ProvisioningPending" | "Rejected";
17
14
  export type OAuthAction = OAuthActionAuthorization["challenge"]["action"];
18
- /** The engine writes every critical column explicitly after applying the pure
19
- * consumer encoder. Native instant values must roundtrip without precision loss. */
20
15
  export interface OAuthClock<Expression extends SqlExpression = SqlExpression> {
21
16
  readonly encodeInstant: (millis: number) => unknown;
22
17
  readonly decodeInstant: (value: unknown) => number;
@@ -24,6 +19,9 @@ export interface OAuthClock<Expression extends SqlExpression = SqlExpression> {
24
19
  * PostgreSQL uses clock_timestamp(), never now()/CURRENT_TIMESTAMP. D1 repeats
25
20
  * its primary-engine sample bounds in final guards. Return integer milliseconds. */
26
21
  readonly engineNowMillis: Expression;
22
+ /** Convert a stored timestamp expression to integer milliseconds. */
23
+ readonly toMillis: (expression: Expression) => Expression;
24
+ readonly fromMillis: (expression: Expression) => Expression;
27
25
  }
28
26
  export interface OAuthSubjectReadTable<S extends TableModel, Expression extends SqlExpression = SqlExpression> {
29
27
  readonly table: S["table"];
@@ -32,24 +30,21 @@ export interface OAuthSubjectReadTable<S extends TableModel, Expression extends
32
30
  readonly securityRevision: Column<S>;
33
31
  readonly isActiveStatus: (value: unknown) => boolean;
34
32
  readonly activeCondition: Expression;
33
+ readonly decodeAuthenticationRequirement: (row: S["select"]) => AuthenticationRequirement;
35
34
  }
36
35
  export interface OAuthSubjectTable<S extends TableModel, Expression extends SqlExpression = SqlExpression> extends OAuthSubjectReadTable<S, Expression> {
37
- readonly decodeActionRequirement: (row: S["select"], action: OAuthAction) => AuthenticationRequirement;
38
- readonly decodeAuthenticationRequirement: (row: S["select"]) => AuthenticationRequirement;
39
36
  readonly nextSecurityRevision: (current: SecurityRevision) => SecurityRevision;
40
37
  }
41
- export interface OAuthOwnershipReadTable<O extends TableModel, N, Expression extends SqlExpression = SqlExpression> {
38
+ export interface OAuthOwnershipReadTable<O extends TableModel, N> {
42
39
  readonly table: O["table"];
43
40
  readonly identityKey: Column<O>;
44
41
  readonly provider: Column<O>;
45
42
  readonly issuer: Column<O>;
46
43
  readonly externalSubject: Column<O>;
47
44
  readonly subjectId: Column<O>;
48
- /** Includes Owned state when authority and ownership share a physical table. */
49
- readonly ownedCondition: Expression;
50
45
  readonly decodeSubjectId: (row: O["select"]) => N;
51
46
  }
52
- export interface OAuthOwnershipTable<O extends TableModel, N, Expression extends SqlExpression = SqlExpression> extends OAuthOwnershipReadTable<O, N, Expression> {
47
+ export interface OAuthOwnershipTable<O extends TableModel, N> extends OAuthOwnershipReadTable<O, N> {
53
48
  readonly encodeInsert: (input: {
54
49
  readonly identity: typeof OAuthExternalIdentity.Type;
55
50
  readonly identityKey: string;
@@ -94,112 +89,40 @@ export interface OAuthAuthorityTable<C extends TableModel, N, Expression extends
94
89
  readonly revision: SecurityRevision;
95
90
  }) => C["insert"];
96
91
  }
97
- /** Both purposes may use the same physical table. Shared tables share module/flow
98
- * and module/command uniqueness. The snapshot has the exact purpose-specific core
99
- * codec; terminal writes erase it, while identity, claim and retention columns remain. */
92
+ /** Live ceremonies only. Predicate columns enforce access before deletion; the
93
+ * snapshot retains the exact authenticated context and encrypted protocol data. */
100
94
  export interface OAuthFlowTable<F extends TableModel> {
101
95
  readonly table: F["table"];
102
96
  readonly moduleId: Column<F>;
103
97
  readonly flowId: Column<F>;
104
- readonly commandId: Column<F>;
105
98
  readonly purpose: Column<F>;
106
99
  readonly generation: Column<F>;
107
- readonly state: Column<F>;
108
- readonly version: Column<F>;
100
+ readonly provider: Column<F>;
101
+ readonly callbackId: Column<F>;
102
+ readonly issuer: Column<F>;
103
+ readonly responseIssuerMode: Column<F>;
104
+ readonly subjectId: Column<F>;
109
105
  readonly stateDigest: Column<F>;
110
106
  readonly binderVerifier: Column<F>;
111
107
  readonly binderExpiresAt: Column<F>;
112
108
  readonly snapshot: Column<F>;
113
109
  readonly issuedAt: Column<F>;
114
110
  readonly expiresAt: Column<F>;
115
- readonly claimId: Column<F>;
116
- readonly claimedAt: Column<F>;
117
- readonly claimExpiresAt: Column<F>;
118
- readonly retentionUntil: Column<F>;
119
111
  readonly encodeInsert: (input: {
120
112
  readonly moduleId: string;
121
113
  readonly flowId: string;
122
- readonly purpose: "sign-in" | "link";
114
+ readonly purpose: "sign-in" | "link" | "connect";
123
115
  }) => F["insert"];
124
116
  }
125
- export interface OAuthTupleAuthorityTable<T extends TableModel, N> {
126
- readonly table: T["table"];
127
- readonly identityKey: Column<T>;
128
- readonly provider: Column<T>;
129
- readonly issuer: Column<T>;
130
- readonly externalSubject: Column<T>;
131
- readonly state: Column<T>;
132
- readonly version: Column<T>;
133
- readonly subjectId: Column<T>;
134
- /** Exact reservation identity; no application payload or bearer. */
135
- readonly reservation: Column<T>;
136
- readonly encodeInsert: (input: {
137
- readonly identityKey: string;
138
- readonly identity: typeof OAuthExternalIdentity.Type;
139
- readonly subjectId?: N;
140
- }) => T["insert"];
141
- }
142
- export interface OAuthRegistrationIntentTable<I extends TableModel> {
143
- readonly table: I["table"];
144
- readonly moduleId: Column<I>;
145
- readonly reference: Column<I>;
146
- readonly flowId: Column<I>;
147
- readonly claimId: Column<I>;
148
- readonly identityKey: Column<I>;
149
- readonly version: Column<I>;
150
- readonly state: Column<I>;
151
- readonly snapshot: Column<I>;
152
- readonly commandId: Column<I>;
153
- readonly fingerprint: Column<I>;
154
- readonly pendingReference: Column<I>;
155
- readonly expiresAt: Column<I>;
156
- readonly retentionUntil: Column<I>;
157
- readonly encodeInsert: (intent: OAuthRegistrationIntent) => I["insert"];
158
- }
159
- export interface OAuthRegistrationCommandTable<R extends TableModel, Registration> {
160
- readonly table: R["table"];
161
- readonly moduleId: Column<R>;
162
- readonly commandId: Column<R>;
163
- readonly reference: Column<R>;
164
- readonly identityKey: Column<R>;
165
- readonly fingerprint: Column<R>;
166
- readonly intentSnapshot: Column<R>;
167
- readonly applicationSnapshot: Column<R>;
168
- readonly provisioningIdentity: Column<R>;
169
- readonly decision: Column<R>;
170
- readonly retentionUntil: Column<R>;
171
- /** Persists exact detached Type before protected pending work can start. */
172
- readonly encodeInsert: (input: {
173
- readonly intent: OAuthRegistrationIntent;
174
- readonly commandId: string;
175
- readonly fingerprint: string;
176
- readonly registration: Registration;
177
- readonly provisioningIdentity: string;
178
- }) => R["insert"];
179
- }
180
- export interface OAuthUnlinkCommandTable<U extends TableModel> {
181
- readonly table: U["table"];
182
- readonly moduleId: Column<U>;
183
- readonly commandId: Column<U>;
184
- readonly subjectId: Column<U>;
185
- readonly credentialId: Column<U>;
186
- readonly intentSnapshot: Column<U>;
187
- readonly decision: Column<U>;
188
- readonly retentionUntil: Column<U>;
189
- readonly encodeInsert: (input: {
190
- readonly moduleId: string;
191
- readonly commandId: string;
192
- readonly credential: OAuthCredentialSnapshot;
193
- }) => U["insert"];
194
- }
195
- export interface OAuthEligibilityFact {
196
- readonly credentialId: string;
197
- readonly revision: SecurityRevision;
198
- readonly usablePrimary: boolean;
199
- readonly factors: ReadonlyArray<AuthenticationFactor>;
200
- readonly userVerified: boolean;
201
- readonly phishingResistant: boolean;
202
- }
117
+ export declare const OAuthEligibilityFact: Schema.Struct<{
118
+ readonly credentialId: Schema.NonEmptyString;
119
+ readonly revision: Schema.brand<Schema.NonEmptyString, "effect-auth/SecurityRevision">;
120
+ readonly usablePrimary: Schema.Boolean;
121
+ readonly factors: Schema.$Array<Schema.Literals<readonly ["knowledge", "possession", "inherence"]>>;
122
+ readonly userVerified: Schema.Boolean;
123
+ readonly phishingResistant: Schema.Boolean;
124
+ }>;
125
+ export type OAuthEligibilityFact = typeof OAuthEligibilityFact.Type;
203
126
  /** Each descriptor reads only its own subject-scoped method rows. The native row
204
127
  * projector and SQL condition must express the same installed method eligibility.
205
128
  * All source/identifier/policy mutations advance subject securityRevision. D1 also
@@ -214,11 +137,6 @@ export interface OAuthEligibilityTable<T extends TableModel, N, Expression exten
214
137
  readonly condition: (subjectId: N) => Expression;
215
138
  readonly decode: (row: T["select"]) => OAuthEligibilityFact | undefined;
216
139
  }
217
- /** Authenticated command replay uses current subject status and this additional
218
- * nonconsuming SQL policy. It never consumes a fresh action factor. */
219
- export interface OAuthMetadataPolicy<N, Expression extends SqlExpression = SqlExpression> {
220
- readonly condition: (subjectId: N) => Expression;
221
- }
222
140
  export interface OAuthCleanupTable<T extends TableModel, N, Expression extends SqlExpression = SqlExpression> {
223
141
  readonly table: T["table"];
224
142
  readonly subjectId: Column<T>;
@@ -230,13 +148,51 @@ export interface OAuthCleanupTable<T extends TableModel, N, Expression extends S
230
148
  }) => Expression;
231
149
  readonly disposition: "delete";
232
150
  }
233
- export interface OAuthRegistrationEligibility<N, Expression extends SqlExpression = SqlExpression> {
234
- /** Pure SQL guards for mutable app policy; evaluated again after app writes. */
151
+ export interface OAuthRegistrationGuardTable<T extends TableModel, Registration, N, Expression extends SqlExpression = SqlExpression> {
152
+ readonly table: T["table"];
153
+ readonly orderBy: Column<T>;
235
154
  readonly condition: (input: {
236
155
  readonly intent: OAuthRegistrationIntent;
156
+ readonly registration: Registration;
237
157
  readonly nativeSubjectId?: N;
238
158
  }) => Expression;
239
159
  }
160
+ export interface OAuthRegistrationGuardDescriptor<Registration, N, Expression extends SqlExpression = SqlExpression, Descriptor extends object = object> {
161
+ readonly table: Descriptor;
162
+ readonly orderBy: string;
163
+ readonly condition: OAuthRegistrationGuardTable<TableModel, Registration, N, Expression>["condition"];
164
+ }
165
+ export declare const oauthRegistrationGuardTable: <T extends TableModel, Registration, N, Expression extends SqlExpression = SqlExpression>(input: OAuthRegistrationGuardTable<T, Registration, N, Expression>) => OAuthRegistrationGuardDescriptor<Registration, N, Expression, T["table"]>;
166
+ /** Heterogeneous descriptors are made by typed factories and projected privately. */
167
+ export interface OAuthEligibilityDescriptor<N, Expression extends SqlExpression = SqlExpression, Descriptor extends object = object> {
168
+ readonly _tag: "OAuthEligibilityDescriptor";
169
+ readonly scope: string;
170
+ readonly table: Descriptor;
171
+ readonly subjectId: string;
172
+ readonly credentialId: string;
173
+ readonly revision: string;
174
+ readonly condition: (subjectId: N) => Expression;
175
+ readonly decode: (row: unknown) => OAuthEligibilityFact | undefined;
176
+ }
177
+ export declare const oauthEligibilityTable: <T extends TableModel, N, Expression extends SqlExpression = SqlExpression>(input: OAuthEligibilityTable<T, N, Expression>) => OAuthEligibilityDescriptor<N, Expression, T["table"]>;
178
+ export interface OAuthCleanupDescriptor<N, Expression extends SqlExpression = SqlExpression, Descriptor extends object = object> {
179
+ readonly table: Descriptor;
180
+ readonly subjectId: string;
181
+ readonly condition: OAuthCleanupTable<TableModel, N, Expression>["condition"];
182
+ }
183
+ export declare const oauthCleanupTable: <T extends TableModel, N, Expression extends SqlExpression = SqlExpression>(input: OAuthCleanupTable<T, N, Expression>) => OAuthCleanupDescriptor<N, Expression, T["table"]>;
184
+ /** Original application binding and retained decision are encoded in snapshot. */
185
+ export interface OAuthRegistrationIntentTable<I extends TableModel> {
186
+ readonly table: I["table"];
187
+ readonly moduleId: Column<I>;
188
+ readonly reference: Column<I>;
189
+ readonly flowId: Column<I>;
190
+ readonly identityKey: Column<I>;
191
+ readonly snapshot: Column<I>;
192
+ readonly expiresAt: Column<I>;
193
+ readonly retentionUntil: Column<I>;
194
+ readonly encodeInsert: (intent: OAuthRegistrationIntent) => I["insert"];
195
+ }
240
196
  export interface OAuthD1Mapping {
241
197
  readonly d1: {
242
198
  readonly primary: true;
@@ -244,27 +200,23 @@ export interface OAuthD1Mapping {
244
200
  }
245
201
  export declare const requiredOAuthSignInConstraints: {
246
202
  readonly flow: "unique(flow.moduleId,flow.flowId)";
247
- readonly command: "unique(flow.moduleId,flow.commandId)";
248
203
  readonly stateDigest: "unique(flow.stateDigest)";
249
204
  readonly ownership: "unique(ownership.identityKey)";
250
205
  readonly credentialId: "unique(credential.credentialId)";
251
206
  readonly credentialIdentity: "unique(credential.identityKey)";
252
207
  readonly authorityCredential: "unique(authority.subjectId,authority.credentialId)";
253
208
  };
254
- export declare const requiredOAuthTupleConstraints: {
255
- readonly identityKey: "unique(tuple.identityKey)";
256
- };
257
209
  export declare const requiredOAuthRegistrationConstraints: {
258
210
  readonly intentReference: "unique(intent.moduleId,intent.reference)";
259
211
  readonly intentFlow: "unique(intent.moduleId,intent.flowId)";
260
- readonly command: "unique(registrationCommand.moduleId,registrationCommand.commandId)";
261
- };
262
- export declare const requiredOAuthAccountsConstraints: {
263
- readonly unlinkCommand: "unique(unlinkCommand.moduleId,unlinkCommand.commandId)";
212
+ readonly ownership: "unique(ownership.identityKey)";
213
+ readonly credentialId: "unique(credential.credentialId)";
214
+ readonly credentialIdentity: "unique(credential.identityKey)";
215
+ readonly authorityCredential: "unique(authority.subjectId,authority.credentialId)";
264
216
  };
265
217
  export interface OAuthSignInMapping<S extends TableModel, O extends TableModel, C extends TableModel, AC extends TableModel, F extends TableModel, N, Expression extends SqlExpression = SqlExpression> {
266
218
  readonly subject: OAuthSubjectReadTable<S, Expression>;
267
- readonly ownership: OAuthOwnershipReadTable<O, N, Expression>;
219
+ readonly ownership: OAuthOwnershipReadTable<O, N>;
268
220
  readonly credential: OAuthCredentialReadTable<C, Expression>;
269
221
  readonly authority: OAuthAuthorityReadTable<AC, Expression>;
270
222
  readonly flow: OAuthFlowTable<F>;
@@ -272,28 +224,22 @@ export interface OAuthSignInMapping<S extends TableModel, O extends TableModel,
272
224
  readonly clock: OAuthClock<Expression>;
273
225
  readonly constraints: typeof requiredOAuthSignInConstraints;
274
226
  }
275
- export type OAuthOwnershipMutation<T extends TableModel, O extends TableModel, N, Expression extends SqlExpression = SqlExpression> = {
276
- readonly mode: "integrated";
277
- readonly tuple: OAuthTupleAuthorityTable<T, N>;
278
- } | {
279
- readonly mode: "separate";
280
- readonly tuple: OAuthTupleAuthorityTable<T, N>;
281
- readonly external: OAuthOwnershipTable<O, N, Expression>;
282
- };
283
- export interface OAuthRegistrationIntentMapping<S extends TableModel, O extends TableModel, C extends TableModel, AC extends TableModel, F extends TableModel, T extends TableModel, I extends TableModel, N, Expression extends SqlExpression = SqlExpression> {
284
- readonly signIn: OAuthSignInMapping<S, O, C, AC, F, N, Expression>;
285
- readonly ownership: OAuthOwnershipMutation<T, O, N, Expression>;
227
+ export interface OAuthRegistrationIntentMapping<O extends TableModel, I extends TableModel, N, Expression extends SqlExpression = SqlExpression> {
228
+ readonly ownership: OAuthOwnershipReadTable<O, N>;
286
229
  readonly intent: OAuthRegistrationIntentTable<I>;
287
- readonly tupleConstraints: typeof requiredOAuthTupleConstraints;
288
- readonly registrationConstraints: Pick<typeof requiredOAuthRegistrationConstraints, "intentReference" | "intentFlow">;
289
- readonly eligibility: OAuthRegistrationEligibility<N, Expression>;
230
+ readonly clock: OAuthClock<Expression>;
231
+ readonly constraints: Pick<typeof requiredOAuthRegistrationConstraints, "intentReference" | "intentFlow" | "ownership">;
232
+ readonly eligible: (intent: OAuthRegistrationIntent) => Expression;
290
233
  }
291
- export interface OAuthRegistrationBase<Registration, T extends TableModel, O extends TableModel, I extends TableModel, R extends TableModel, N, Expression extends SqlExpression = SqlExpression, Descriptor extends object = object> {
292
- readonly ownership: OAuthOwnershipMutation<T, O, N, Expression>;
234
+ export interface OAuthRegistrationMapping<Registration, S extends TableModel, O extends TableModel, C extends TableModel, AC extends TableModel, I extends TableModel, N, Expression extends SqlExpression = SqlExpression, Descriptor extends object = object> {
235
+ readonly registration: Schema.Codec<Registration, unknown, never, never>;
236
+ readonly ownership: OAuthOwnershipTable<O, N>;
293
237
  readonly intent: OAuthRegistrationIntentTable<I>;
294
- readonly command: OAuthRegistrationCommandTable<R, Registration>;
238
+ readonly subject: OAuthSubjectReadTable<S, Expression>;
239
+ readonly credential: OAuthCredentialTable<C, N, Expression>;
240
+ readonly authority: OAuthAuthorityTable<AC, N, Expression>;
241
+ readonly subjectId: SubjectIdCodec<N>;
295
242
  readonly clock: OAuthClock<Expression>;
296
- readonly tupleConstraints: typeof requiredOAuthTupleConstraints;
297
243
  readonly constraints: typeof requiredOAuthRegistrationConstraints;
298
244
  readonly inspect: (input: {
299
245
  readonly intent: OAuthRegistrationIntent;
@@ -302,142 +248,48 @@ export interface OAuthRegistrationBase<Registration, T extends TableModel, O ext
302
248
  readonly fingerprint: string;
303
249
  readonly eligible: boolean;
304
250
  }, PersistenceMappingError>;
305
- /** Required for an explicitly bound native/DO command: no asynchronous callback
306
- * is evaluated inside the physical owner. Standalone inspection is pre-owner. */
307
- readonly inspectSync?: (input: {
308
- readonly intent: OAuthRegistrationIntent;
309
- readonly registration: Registration;
310
- }) => {
311
- readonly fingerprint: string;
312
- readonly eligible: boolean;
313
- };
314
- /** Type projection, never the original wire transformation. */
315
- readonly snapshot: (registration: Registration) => Effect.Effect<Registration, PersistenceMappingError>;
316
- readonly snapshotSync?: (registration: Registration) => Registration;
317
- /** Canonical bounded storage of Registration.Type. These are Type codecs, not
318
- * the original wire decoder/encoder; decode(encode(value)) must encode identically.
319
- * The engine writes and roundtrip-checks this exact string (maximum 1 MiB). */
320
- readonly application: {
321
- readonly encode: (registration: Registration) => string;
322
- readonly decode: (stored: string) => Registration;
323
- };
324
251
  readonly eligibility: {
325
- /** Stable application authority anchors, in one configured global order.
326
- * Omit only for immutable/tuple-local policy or an equivalent explicit outer
327
- * owner lock. Each scope must match 1..64 rows, never an absent quota row.
328
- * Locks precede tuple/intent/command locks; postcondition owns changed state. */
329
252
  readonly guards?: ReadonlyArray<OAuthRegistrationGuardDescriptor<Registration, N, Expression, Descriptor>>;
330
253
  readonly admission: (input: {
331
254
  readonly intent: OAuthRegistrationIntent;
332
255
  readonly registration: Registration;
333
256
  readonly nativeSubjectId?: N;
334
257
  }) => Expression;
335
- /** Evaluated after subject/application writes, including appended coordinator
336
- * writes. May assert consumption of the admission invitation/quota. */
337
258
  readonly postcondition: (input: {
338
259
  readonly intent: OAuthRegistrationIntent;
339
260
  readonly registration: Registration;
340
261
  readonly nativeSubjectId?: N;
341
262
  }) => Expression;
342
263
  };
343
- readonly allocateProvisioningIdentity: Effect.Effect<string, PersistenceMappingError>;
344
- readonly retentionMillis: number;
345
- }
346
- export interface OAuthRegistrationGuardTable<T extends TableModel, Registration, N, Expression extends SqlExpression = SqlExpression> {
347
- readonly table: T["table"];
348
- readonly orderBy: Column<T>;
349
- readonly condition: (input: {
350
- readonly intent: OAuthRegistrationIntent;
351
- readonly registration: Registration;
352
- readonly nativeSubjectId?: N;
353
- }) => Expression;
354
- }
355
- export interface OAuthRegistrationGuardDescriptor<Registration, N, Expression extends SqlExpression = SqlExpression, Descriptor extends object = object> {
356
- readonly table: Descriptor;
357
- readonly orderBy: string;
358
- readonly condition: OAuthRegistrationGuardTable<TableModel, Registration, N, Expression>["condition"];
359
- }
360
- export declare const oauthRegistrationGuardTable: <T extends TableModel, Registration, N, Expression extends SqlExpression = SqlExpression>(input: OAuthRegistrationGuardTable<T, Registration, N, Expression>) => OAuthRegistrationGuardDescriptor<Registration, N, Expression, T["table"]>;
361
- export type OAuthRegistrationMapping<Registration, S extends TableModel, O extends TableModel, C extends TableModel, AC extends TableModel, T extends TableModel, I extends TableModel, R extends TableModel, N, Expression extends SqlExpression = SqlExpression, Descriptor extends object = object> = OAuthRegistrationBase<Registration, T, O, I, R, N, Expression, Descriptor> & ({
362
- readonly mode: "pending";
363
- readonly allocatePendingReference: Effect.Effect<string, PersistenceMappingError>;
364
- } | {
365
- readonly mode: "atomic";
366
- readonly subjectId: SubjectIdCodec<N>;
367
- readonly subject: OAuthSubjectReadTable<S, Expression>;
368
- readonly credential: OAuthCredentialTable<C, N, Expression>;
369
- readonly authority: OAuthAuthorityTable<AC, N, Expression>;
370
264
  readonly allocateSubjectId: Effect.Effect<N, PersistenceMappingError>;
371
265
  readonly allocateCredentialId: Effect.Effect<string, PersistenceMappingError>;
372
266
  readonly allocateRevision: Effect.Effect<SecurityRevision, PersistenceMappingError>;
373
267
  readonly encodeSubjectInsert: (input: {
374
268
  readonly intent: OAuthRegistrationIntent;
375
269
  readonly registration: Registration;
270
+ readonly requestId: string;
376
271
  }, ids: {
377
272
  readonly subjectId: N;
378
273
  readonly securityRevision: SecurityRevision;
379
274
  }) => S["insert"];
380
- });
381
- /** Heterogeneous descriptors are made by typed factories and projected privately. */
382
- export interface OAuthEligibilityDescriptor<N, Expression extends SqlExpression = SqlExpression, Descriptor extends object = object> {
383
- readonly _tag: "OAuthEligibilityDescriptor";
384
- readonly scope: string;
385
- readonly table: Descriptor;
386
- readonly subjectId: string;
387
- readonly credentialId: string;
388
- readonly revision: string;
389
- readonly condition: (subjectId: N) => Expression;
390
- readonly decode: (row: unknown) => OAuthEligibilityFact | undefined;
391
- }
392
- export declare const oauthEligibilityTable: <T extends TableModel, N, Expression extends SqlExpression = SqlExpression>(input: OAuthEligibilityTable<T, N, Expression>) => OAuthEligibilityDescriptor<N, Expression, T["table"]>;
393
- export interface OAuthCleanupDescriptor<N, Expression extends SqlExpression = SqlExpression, Descriptor extends object = object> {
394
- readonly table: Descriptor;
395
- readonly subjectId: string;
396
- readonly condition: OAuthCleanupTable<TableModel, N, Expression>["condition"];
397
275
  }
398
- export declare const oauthCleanupTable: <T extends TableModel, N, Expression extends SqlExpression = SqlExpression>(input: OAuthCleanupTable<T, N, Expression>) => OAuthCleanupDescriptor<N, Expression, T["table"]>;
399
- /** A stable application/reference lock acquired before an ownership target.
400
- * Missing rows retain ownership. Conditions use detached native IDs; every
401
- * writer of the guarded reference follows the same order. */
402
- export interface OAuthReferenceGuardTable<T extends TableModel, N, Expression extends SqlExpression = SqlExpression> {
403
- readonly table: T["table"];
404
- readonly orderBy: Column<T>;
405
- readonly condition: (input: {
406
- readonly identity: typeof OAuthExternalIdentity.Type;
407
- readonly identityKey: string;
408
- readonly subjectId: N;
409
- }) => Expression | Effect.Effect<Expression, PlatformError.PlatformError, Crypto.Crypto>;
410
- }
411
- export interface OAuthReferenceGuardDescriptor<N, Expression extends SqlExpression = SqlExpression, Descriptor extends object = object> {
412
- readonly table: Descriptor;
413
- readonly orderBy: string;
414
- readonly condition: OAuthReferenceGuardTable<TableModel, N, Expression>["condition"];
415
- }
416
- export declare const oauthReferenceGuardTable: <T extends TableModel, N, Expression extends SqlExpression = SqlExpression>(input: OAuthReferenceGuardTable<T, N, Expression>) => OAuthReferenceGuardDescriptor<N, Expression, T["table"]>;
417
- export interface OAuthAccountsMapping<S extends TableModel, O extends TableModel, C extends TableModel, AC extends TableModel, F extends TableModel, T extends TableModel, U extends TableModel, N, Expression extends SqlExpression = SqlExpression, Descriptor extends object = object> {
276
+ export interface OAuthAccountsMapping<S extends TableModel, O extends TableModel, C extends TableModel, AC extends TableModel, F extends TableModel, N, Expression extends SqlExpression = SqlExpression, Descriptor extends object = object> {
418
277
  readonly subject: OAuthSubjectTable<S, Expression>;
419
- readonly ownership: OAuthOwnershipMutation<T, O, N, Expression>;
278
+ readonly ownership: OAuthOwnershipTable<O, N>;
420
279
  readonly credential: OAuthCredentialTable<C, N, Expression>;
421
280
  readonly authority: OAuthAuthorityTable<AC, N, Expression>;
422
281
  readonly flow: OAuthFlowTable<F>;
423
- readonly command: OAuthUnlinkCommandTable<U>;
424
282
  readonly subjectId: SubjectIdCodec<N>;
425
283
  readonly clock: OAuthClock<Expression>;
426
- readonly constraints: typeof requiredOAuthSignInConstraints & typeof requiredOAuthAccountsConstraints;
427
- readonly tupleConstraints: typeof requiredOAuthTupleConstraints;
284
+ readonly constraints: typeof requiredOAuthSignInConstraints;
428
285
  readonly eligibility: ReadonlyArray<OAuthEligibilityDescriptor<N, Expression, Descriptor>>;
429
286
  readonly cleanup: ReadonlyArray<OAuthCleanupDescriptor<N, Expression, Descriptor>>;
430
- readonly metadata: OAuthMetadataPolicy<N, Expression>;
431
287
  readonly sessionInvalidation: "same-authority-immediate" | "original-absolute-expiry";
432
- /** Omit only when connected access is absent. A predicate alone conservatively
433
- * retains ownership; release also needs all configured guard rows below. */
434
- readonly connectedReference?: (input: {
288
+ /** Indexed same-owner reference predicate for any installed grant/application references. */
289
+ readonly otherReferences: (input: {
435
290
  readonly identityKey: string;
436
291
  readonly subjectId: N;
437
292
  }) => Expression;
438
- /** At most 32 descriptors, each locking 1..64 stable rows in supplied order.
439
- * Missing/empty guards retain Owned, even when the reference predicate is false. */
440
- readonly connectedReferenceGuards?: ReadonlyArray<OAuthReferenceGuardDescriptor<N, Expression, Descriptor>>;
441
293
  readonly allocateCredentialId: Effect.Effect<string, PersistenceMappingError>;
442
294
  readonly allocateRevision: Effect.Effect<SecurityRevision, PersistenceMappingError>;
443
295
  }
@@ -456,11 +308,10 @@ export interface OAuthRegistrationAuthority<Registration> {
456
308
  readonly commandId: typeof OAuthCommandId.Type;
457
309
  readonly registration: Registration;
458
310
  readonly fingerprint: TokenDigest;
311
+ readonly payload: string;
312
+ readonly requestId: string;
459
313
  }, prepare: PrepareOAuthCommit<OAuthRegistrationDecision, A>) => Effect.Effect<PreparedCommit<A>, OAuthUnavailable>;
460
- readonly cleanup: <A>(input: OAuthCleanupInput, prepare: PrepareOAuthCommit<{
461
- readonly removed: number;
462
- readonly hasMore: boolean;
463
- }, A>) => Effect.Effect<PreparedCommit<A>, OAuthUnavailable>;
314
+ readonly cleanup: <A>(input: OAuthCleanupInput, prepare: PrepareOAuthCommit<CleanupResult, A>) => Effect.Effect<PreparedCommit<A>, OAuthUnavailable>;
464
315
  }
465
316
  //#endregion
466
317
  export { oauth_model_d_exports };
@@ -1,20 +1,15 @@
1
+ import { Schema } from "effect";
2
+ import { SecurityRevision } from "@yielded/auth/Sessions";
3
+ import { AuthenticationFactor } from "@yielded/auth/Operations";
1
4
  //#region src/internal/models/oauth-model.ts
2
- const requiredOAuthSignInConstraints = {
3
- flow: "unique(flow.moduleId,flow.flowId)",
4
- command: "unique(flow.moduleId,flow.commandId)",
5
- stateDigest: "unique(flow.stateDigest)",
6
- ownership: "unique(ownership.identityKey)",
7
- credentialId: "unique(credential.credentialId)",
8
- credentialIdentity: "unique(credential.identityKey)",
9
- authorityCredential: "unique(authority.subjectId,authority.credentialId)"
10
- };
11
- const requiredOAuthTupleConstraints = { identityKey: "unique(tuple.identityKey)" };
12
- const requiredOAuthRegistrationConstraints = {
13
- intentReference: "unique(intent.moduleId,intent.reference)",
14
- intentFlow: "unique(intent.moduleId,intent.flowId)",
15
- command: "unique(registrationCommand.moduleId,registrationCommand.commandId)"
16
- };
17
- const requiredOAuthAccountsConstraints = { unlinkCommand: "unique(unlinkCommand.moduleId,unlinkCommand.commandId)" };
5
+ const OAuthEligibilityFact = Schema.Struct({
6
+ credentialId: Schema.NonEmptyString.check(Schema.isMaxLength(256)),
7
+ revision: SecurityRevision,
8
+ usablePrimary: Schema.Boolean,
9
+ factors: Schema.Array(AuthenticationFactor).check(Schema.isMaxLength(8)),
10
+ userVerified: Schema.Boolean,
11
+ phishingResistant: Schema.Boolean
12
+ });
18
13
  const oauthRegistrationGuardTable = (input) => Object.freeze({
19
14
  table: input.table,
20
15
  orderBy: input.orderBy,
@@ -38,12 +33,23 @@ const oauthCleanupTable = (input) => Object.freeze({
38
33
  subjectId: input.subjectId,
39
34
  condition: input.condition
40
35
  });
41
- const oauthReferenceGuardTable = (input) => Object.freeze({
42
- table: input.table,
43
- orderBy: input.orderBy,
44
- condition: input.condition
45
- });
36
+ const requiredOAuthSignInConstraints = {
37
+ flow: "unique(flow.moduleId,flow.flowId)",
38
+ stateDigest: "unique(flow.stateDigest)",
39
+ ownership: "unique(ownership.identityKey)",
40
+ credentialId: "unique(credential.credentialId)",
41
+ credentialIdentity: "unique(credential.identityKey)",
42
+ authorityCredential: "unique(authority.subjectId,authority.credentialId)"
43
+ };
44
+ const requiredOAuthRegistrationConstraints = {
45
+ intentReference: "unique(intent.moduleId,intent.reference)",
46
+ intentFlow: "unique(intent.moduleId,intent.flowId)",
47
+ ownership: "unique(ownership.identityKey)",
48
+ credentialId: "unique(credential.credentialId)",
49
+ credentialIdentity: "unique(credential.identityKey)",
50
+ authorityCredential: "unique(authority.subjectId,authority.credentialId)"
51
+ };
46
52
  //#endregion
47
- export { oauthCleanupTable, oauthEligibilityTable, oauthReferenceGuardTable, oauthRegistrationGuardTable, requiredOAuthAccountsConstraints, requiredOAuthRegistrationConstraints, requiredOAuthSignInConstraints, requiredOAuthTupleConstraints };
53
+ export { OAuthEligibilityFact, oauthCleanupTable, oauthEligibilityTable, oauthRegistrationGuardTable, requiredOAuthRegistrationConstraints, requiredOAuthSignInConstraints };
48
54
 
49
55
  //# sourceMappingURL=oauth-model.mjs.map