@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,243 +0,0 @@
1
- import { digest } from "../crypto.mjs";
2
- import { CurrentOAuthTransaction } from "./owner.mjs";
3
- import { OAuthQueryCompiler } from "./query-compiler.mjs";
4
- import { invariant } from "./state.mjs";
5
- import { OAuthConnectedState } from "./connected-state.mjs";
6
- import { OAuthConnectedCustody } from "./connected-custody.mjs";
7
- import { OAuthConnectedFlow } from "./connected-flow.mjs";
8
- import { OAuthConnectedAccess } from "./connected-access.mjs";
9
- import { Context, Effect, Layer } from "effect";
10
- import * as M from "@yielded/auth/OAuth";
11
- import { snapshotOAuthSync } from "@yielded/auth/OAuth";
12
- //#region src/internal/oauth/connected-management.ts
13
- const make = Effect.gen(function* () {
14
- const operations = yield* OAuthQueryCompiler;
15
- const A = yield* OAuthConnectedAccess;
16
- const C = yield* OAuthConnectedCustody;
17
- const F = yield* OAuthConnectedFlow;
18
- const S = yield* OAuthConnectedState;
19
- const { asc, eq, gt, lte } = operations;
20
- const { both, col, equal } = operations;
21
- const list = Effect.fn("oauthConnected.list")(function* (mapping, input) {
22
- const owner = yield* CurrentOAuthTransaction;
23
- const found = yield* S.useAuthority(mapping, input.authorization, "metadata");
24
- if (found === void 0) return { items: [] };
25
- invariant(Number.isSafeInteger(input.limit) && input.limit >= 1 && input.limit <= 100);
26
- const g = mapping.grant, h = mapping.cohort, j = S.jobTable(mapping);
27
- const cursor = input.cursor === void 0 ? void 0 : M.OAuthGrantId.make(input.cursor);
28
- const where = both(equal(g.table, {
29
- [g.moduleId]: input.authorization.moduleId,
30
- [g.subjectId]: found.nativeId
31
- }), cursor === void 0 ? void 0 : gt(col(g.table, g.grantId), cursor), input.authorization.grantId === void 0 ? void 0 : eq(col(g.table, g.grantId), input.authorization.grantId), input.authorization.profileKey === void 0 ? void 0 : eq(col(g.table, g.profileKey), input.authorization.profileKey));
32
- const columns = [
33
- g.moduleId,
34
- g.grantId,
35
- g.subjectId,
36
- g.identityKey,
37
- g.clientKey,
38
- g.cohortKey,
39
- g.cohortGeneration,
40
- g.profileKey,
41
- g.state,
42
- g.summary,
43
- g.revocationJobId,
44
- g.version
45
- ];
46
- const read = yield* owner.read(g.table, where, {
47
- columns,
48
- limit: input.limit + 1,
49
- takeOnly: true,
50
- observe: false,
51
- lock: false,
52
- orderBy: asc(col(g.table, g.grantId))
53
- });
54
- const more = read.rows.length > input.limit, rows = read.rows.slice(0, input.limit), last = rows.at(-1)?.[g.grantId];
55
- owner.observations.push({
56
- table: g.table,
57
- where: more ? both(where, lte(col(g.table, g.grantId), last)) : where,
58
- rows
59
- });
60
- const items = [];
61
- for (const row of rows) {
62
- const summary = S.summaryStorage.decode(row[g.summary]);
63
- invariant(summary.grantId === row[g.grantId] && summary.profileKey === row[g.profileKey] && mapping.subjectId.equals(found.nativeId, row[g.subjectId]));
64
- const cr = (yield* owner.read(h.table, equal(h.table, { [h.cohortKey]: row[g.cohortKey] }), {
65
- limit: 1,
66
- lock: false
67
- })).rows[0];
68
- invariant(cr !== void 0 && cr[h.clientKey] === row[g.clientKey] && cr[h.identityKey] === row[g.identityKey]);
69
- let status = row[g.state];
70
- if (status !== "Disconnected" && (cr[h.state] !== "Open" || cr[h.generation] !== row[g.cohortGeneration])) status = "ReauthorizationRequired";
71
- let remote = summary.remoteRevocation;
72
- if (row[g.revocationJobId] !== null) {
73
- if (j === void 0) remote = "Unknown";
74
- else {
75
- const jr = (yield* owner.read(j.table, equal(j.table, { [j.jobId]: row[g.revocationJobId] }), {
76
- limit: 1,
77
- lock: false,
78
- columns: [
79
- j.jobId,
80
- j.moduleId,
81
- j.grantId,
82
- j.cohortKey,
83
- j.state
84
- ]
85
- })).rows[0];
86
- invariant(jr !== void 0 && jr[j.moduleId] === row[g.moduleId] && jr[j.grantId] === row[g.grantId] && jr[j.cohortKey] === row[g.cohortKey]);
87
- remote = jr[j.state] === "Confirmed" ? "Confirmed" : jr[j.state] === "Unknown" ? "Unknown" : "Pending";
88
- }
89
- }
90
- items.push(snapshotOAuthSync(M.OAuthConnectedSummary, {
91
- ...summary,
92
- status,
93
- remoteRevocation: remote
94
- }));
95
- }
96
- return {
97
- items,
98
- ...more ? { cursor: last } : {}
99
- };
100
- });
101
- const command = Effect.fn("oauthConnected.disconnectCommand")(function* (mapping, moduleId, commandId, lock = true) {
102
- const owner = yield* CurrentOAuthTransaction;
103
- const d = mapping.command, read = yield* owner.read(d.table, equal(d.table, {
104
- [d.moduleId]: moduleId,
105
- [d.commandId]: commandId
106
- }), {
107
- limit: 1,
108
- lock,
109
- observe: lock
110
- });
111
- const row = read.rows[0];
112
- if (row === void 0) return { read };
113
- const grant = S.commandStorage.decode(row[d.intent]), result = S.disconnectedStorage.decode(row[d.decision]);
114
- const native = yield* mapping.subjectId.toNative(grant.context.subjectId);
115
- invariant(grant.context.moduleId === moduleId && grant.context.grantId === row[d.grantId] && result.grantId === grant.context.grantId && mapping.subjectId.equals(native, row[d.subjectId]) && !result.replayed);
116
- return {
117
- read,
118
- row,
119
- grant,
120
- result
121
- };
122
- });
123
- return {
124
- list,
125
- inspectDisconnect: Effect.fn("oauthConnected.inspectDisconnect")(function* (mapping, input) {
126
- const found = yield* S.useAuthority(mapping, input.authorization, "metadata");
127
- if (found === void 0 || input.subjectId !== found.revision.subjectId || input.moduleId !== input.authorization.moduleId) return { _tag: "Rejected" };
128
- const discovered = yield* command(mapping, input.moduleId, input.commandId, false);
129
- if (discovered.row !== void 0) {
130
- if (discovered.grant.context.subjectId !== input.subjectId || discovered.grant.context.grantId !== input.grantId) return { _tag: "Conflict" };
131
- if ((yield* S.useAuthority(mapping, input.authorization, "metadata", discovered.grant.context)) === void 0) return { _tag: "Rejected" };
132
- const prior = yield* command(mapping, input.moduleId, input.commandId);
133
- const d = mapping.command;
134
- if (prior.row === void 0 || prior.row[d.intent] !== discovered.row[d.intent] || prior.row[d.decision] !== discovered.row[d.decision] || prior.row[d.version] !== discovered.row[d.version]) return { _tag: "Rejected" };
135
- return {
136
- _tag: "Replay",
137
- result: {
138
- ...prior.result,
139
- replayed: true
140
- }
141
- };
142
- }
143
- const read = yield* A.locked(mapping, input.authorization, input.grantId, "metadata");
144
- if (read === void 0) return { _tag: "Rejected" };
145
- if ((yield* command(mapping, input.moduleId, input.commandId)).row !== void 0) return { _tag: "Rejected" };
146
- return {
147
- _tag: "Target",
148
- grant: {
149
- context: read.grant.context,
150
- ...read.grant.sealed === void 0 ? {} : { sealed: read.grant.sealed }
151
- },
152
- revision: read.found.revision
153
- };
154
- }),
155
- disconnect: Effect.fn("oauthConnected.disconnect")(function* (mapping, input) {
156
- const owner = yield* CurrentOAuthTransaction;
157
- const token = input.grant.context, found = yield* S.current(mapping, token.subjectId);
158
- if (found === void 0 || input.moduleId !== token.moduleId || !(yield* S.action(mapping, found, input.authorization, "disconnect", {
159
- moduleId: input.moduleId,
160
- flowId: input.commandId,
161
- commandId: input.commandId,
162
- revision: input.authorization.challenge.revision,
163
- intent: S.disconnectStorage.encode(input.grant),
164
- maximumAgeMillis: 3e5,
165
- configuration: token.configuration,
166
- grant: token
167
- }))) return { _tag: "Rejected" };
168
- const client = yield* S.client(mapping, token.configuration, false);
169
- if (client === void 0) return { _tag: "Rejected" };
170
- const tuple = yield* F.inspectTuple(mapping, token.identity), t = mapping.ownership.tuple;
171
- if (tuple.row?.[t.state] !== "Owned" || !mapping.subjectId.equals(tuple.row[t.subjectId], found.nativeId)) return { _tag: "Conflict" };
172
- const cohort = yield* S.cohort(mapping, client.id, tuple.key, false);
173
- invariant(cohort.row !== void 0);
174
- const read = yield* S.readGrant(mapping, input.moduleId, token.grantId), g = mapping.grant;
175
- if (read === void 0 || !C.sameContext(read.context, token) || S.disconnectStorage.encode({
176
- context: read.context,
177
- ...read.sealed === void 0 ? {} : { sealed: read.sealed }
178
- }) !== S.disconnectStorage.encode(input.grant)) return { _tag: "Conflict" };
179
- const prior = yield* command(mapping, input.moduleId, input.commandId);
180
- if (prior.row !== void 0) return { _tag: "Conflict" };
181
- const now = yield* owner.now(mapping.clock), wasOpen = !cohort.blocked;
182
- invariant(input.retentionUntilMillis >= now && input.retentionUntilMillis <= now + 2592e6);
183
- const affected = yield* C.fence(mapping, client, cohort);
184
- let remote = "Unsupported";
185
- if (input.revocation !== void 0) {
186
- yield* C.storeJob(mapping, input.revocation, token, found.nativeId, now);
187
- remote = "Pending";
188
- } else if (token.configuration.profile.revocation === "cohort") {
189
- invariant(read.sealed === void 0);
190
- remote = "Unknown";
191
- }
192
- const result = snapshotOAuthSync(M.OAuthConnectedDisconnected, {
193
- _tag: "Disconnected",
194
- grantId: token.grantId,
195
- remoteRevocation: remote,
196
- affectedGrantCount: affected,
197
- replayed: false
198
- });
199
- yield* owner.update(g.table, {
200
- [g.moduleId]: input.moduleId,
201
- [g.grantId]: token.grantId
202
- }, {
203
- [g.state]: "Disconnected",
204
- [g.activeIdentityKey]: null,
205
- [g.sealed]: null,
206
- [g.revocationJobId]: input.revocation?.context.jobId ?? read.row[g.revocationJobId],
207
- [g.version]: owner.marker
208
- });
209
- const d = mapping.command, key = {
210
- [d.moduleId]: input.moduleId,
211
- [d.commandId]: input.commandId
212
- };
213
- const inserted = yield* owner.insert(d.table, {
214
- ...d.encodeInsert({
215
- commandId: input.commandId,
216
- grant: snapshotOAuthSync(M.OAuthConnectedDisconnectGrant, input.grant),
217
- subjectId: S.nativeCopy(found.nativeId)
218
- }),
219
- ...key,
220
- [d.subjectId]: found.nativeId,
221
- [d.grantId]: token.grantId,
222
- [d.intent]: S.commandStorage.encode({
223
- context: token,
224
- originalDigest: yield* digest(S.disconnectStorage.encode(input.grant)),
225
- ...input.revocation === void 0 ? {} : { revocationJobId: input.revocation.context.jobId }
226
- }),
227
- [d.decision]: S.disconnectedStorage.encode(result),
228
- [d.retentionUntil]: mapping.clock.encodeInstant(input.retentionUntilMillis),
229
- [d.version]: owner.marker
230
- }, key);
231
- prior.read.rows = inserted.rows;
232
- if (wasOpen && input.revocation === void 0 && token.configuration.profile.revocation === "unsupported") yield* C.clear(mapping, client, cohort, void 0, true);
233
- return result;
234
- })
235
- };
236
- });
237
- var OAuthConnectedManagement = class OAuthConnectedManagement extends Context.Service()("effect-auth/persistence/OAuthConnectedManagement") {
238
- static layer = Layer.effect(OAuthConnectedManagement, make);
239
- };
240
- //#endregion
241
- export { OAuthConnectedManagement };
242
-
243
- //# sourceMappingURL=connected-management.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connected-management.mjs","names":[],"sources":["../../../src/internal/oauth/connected-management.ts"],"sourcesContent":["import * as M from \"@yielded/auth/OAuth\";\nimport { snapshotOAuthSync } from \"@yielded/auth/OAuth\";\nimport { Effect, Context, Layer } from \"effect\";\n\nimport { OAuthConnectedAccess } from \"./connected-access\";\nimport { OAuthConnectedCustody } from \"./connected-custody\";\nimport { OAuthConnectedFlow } from \"./connected-flow\";\nimport type * as FTypes from \"./connected-flow\";\nimport { OAuthConnectedState } from \"./connected-state\";\nimport type * as STypes from \"./connected-state\";\nimport { CurrentOAuthTransaction } from \"./owner\";\nimport { OAuthQueryCompiler } from \"./query-compiler\";\nimport { digest, invariant } from \"./state\";\n\nconst make = Effect.gen(function* () {\n const operations = yield* OAuthQueryCompiler;\n const A = yield* OAuthConnectedAccess;\n const C = yield* OAuthConnectedCustody;\n const F = yield* OAuthConnectedFlow;\n const S = yield* OAuthConnectedState;\n\n const { asc, eq, gt, lte } = operations;\n const { both, col, equal } = operations;\n\n const list = Effect.fn(\"oauthConnected.list\")(function* (\n mapping: STypes.Mapping,\n input: FTypes.Input<\"list\">,\n ) {\n const owner = yield* CurrentOAuthTransaction;\n const found = yield* S.useAuthority(mapping, input.authorization, \"metadata\");\n\n if (found === undefined) return { items: [] };\n invariant(Number.isSafeInteger(input.limit) && input.limit >= 1 && input.limit <= 100);\n\n const g = mapping.grant,\n h = mapping.cohort,\n j = S.jobTable(mapping);\n\n const cursor = input.cursor === undefined ? undefined : M.OAuthGrantId.make(input.cursor);\n\n const where = both(\n equal(g.table, { [g.moduleId]: input.authorization.moduleId, [g.subjectId]: found.nativeId }),\n cursor === undefined ? undefined : gt(col(g.table, g.grantId), cursor),\n input.authorization.grantId === undefined\n ? undefined\n : eq(col(g.table, g.grantId), input.authorization.grantId),\n input.authorization.profileKey === undefined\n ? undefined\n : eq(col(g.table, g.profileKey), input.authorization.profileKey),\n );\n\n const columns = [\n g.moduleId,\n g.grantId,\n g.subjectId,\n g.identityKey,\n g.clientKey,\n g.cohortKey,\n g.cohortGeneration,\n g.profileKey,\n g.state,\n g.summary,\n g.revocationJobId,\n g.version,\n ];\n\n const read = yield* owner.read(g.table, where, {\n columns,\n limit: input.limit + 1,\n takeOnly: true,\n observe: false,\n lock: false,\n orderBy: asc(col(g.table, g.grantId)),\n });\n\n const more = read.rows.length > input.limit,\n rows = read.rows.slice(0, input.limit),\n last = rows.at(-1)?.[g.grantId];\n\n owner.observations.push({\n table: g.table,\n where: more ? both(where, lte(col(g.table, g.grantId), last)) : where,\n rows,\n });\n const items: Array<typeof M.OAuthConnectedSummary.Type> = [];\n\n for (const row of rows) {\n const summary = S.summaryStorage.decode(row[g.summary]);\n\n invariant(\n summary.grantId === row[g.grantId] &&\n summary.profileKey === row[g.profileKey] &&\n mapping.subjectId.equals(found.nativeId, row[g.subjectId]),\n );\n\n const co = yield* owner.read(h.table, equal(h.table, { [h.cohortKey]: row[g.cohortKey] }), {\n limit: 1,\n lock: false,\n });\n\n const cr = co.rows[0];\n\n invariant(\n cr !== undefined &&\n cr[h.clientKey] === row[g.clientKey] &&\n cr[h.identityKey] === row[g.identityKey],\n );\n let status = row[g.state] as (typeof M.OAuthConnectedSummary.Type)[\"status\"];\n\n if (\n status !== \"Disconnected\" &&\n (cr[h.state] !== \"Open\" || cr[h.generation] !== row[g.cohortGeneration])\n )\n status = \"ReauthorizationRequired\";\n let remote = summary.remoteRevocation;\n\n if (row[g.revocationJobId] !== null) {\n if (j === undefined) remote = \"Unknown\";\n else {\n const job = yield* owner.read(\n j.table,\n equal(j.table, { [j.jobId]: row[g.revocationJobId] }),\n {\n limit: 1,\n lock: false,\n columns: [j.jobId, j.moduleId, j.grantId, j.cohortKey, j.state],\n },\n );\n\n const jr = job.rows[0];\n\n invariant(\n jr !== undefined &&\n jr[j.moduleId] === row[g.moduleId] &&\n jr[j.grantId] === row[g.grantId] &&\n jr[j.cohortKey] === row[g.cohortKey],\n );\n remote =\n jr[j.state] === \"Confirmed\"\n ? \"Confirmed\"\n : jr[j.state] === \"Unknown\"\n ? \"Unknown\"\n : \"Pending\";\n }\n }\n items.push(\n snapshotOAuthSync(M.OAuthConnectedSummary, {\n ...summary,\n status,\n remoteRevocation: remote,\n }),\n );\n }\n\n return { items, ...(more ? { cursor: last as string } : {}) };\n });\n\n const command = Effect.fn(\"oauthConnected.disconnectCommand\")(function* (\n mapping: STypes.Mapping,\n moduleId: string,\n commandId: string,\n lock = true,\n ) {\n const owner = yield* CurrentOAuthTransaction;\n\n const d = mapping.command,\n read = yield* owner.read(\n d.table,\n equal(d.table, { [d.moduleId]: moduleId, [d.commandId]: commandId }),\n { limit: 1, lock, observe: lock },\n );\n\n const row = read.rows[0];\n\n if (row === undefined) return { read };\n\n const grant = S.commandStorage.decode(row[d.intent]),\n result = S.disconnectedStorage.decode(row[d.decision]);\n\n const native = yield* mapping.subjectId.toNative(grant.context.subjectId);\n\n invariant(\n grant.context.moduleId === moduleId &&\n grant.context.grantId === row[d.grantId] &&\n result.grantId === grant.context.grantId &&\n mapping.subjectId.equals(native, row[d.subjectId]) &&\n !result.replayed,\n );\n\n return { read, row, grant, result };\n });\n\n const inspectDisconnect = Effect.fn(\"oauthConnected.inspectDisconnect\")(function* (\n mapping: STypes.Mapping,\n input: FTypes.Input<\"inspectDisconnect\">,\n ) {\n const found = yield* S.useAuthority(mapping, input.authorization, \"metadata\");\n\n if (\n found === undefined ||\n input.subjectId !== found.revision.subjectId ||\n input.moduleId !== input.authorization.moduleId\n )\n return { _tag: \"Rejected\" } as const;\n const discovered = yield* command(mapping, input.moduleId, input.commandId, false);\n\n if (discovered.row !== undefined) {\n if (\n discovered.grant.context.subjectId !== input.subjectId ||\n discovered.grant.context.grantId !== input.grantId\n )\n return { _tag: \"Conflict\" } as const;\n if (\n (yield* S.useAuthority(\n mapping,\n input.authorization,\n \"metadata\",\n discovered.grant.context,\n )) === undefined\n )\n return { _tag: \"Rejected\" } as const;\n const prior = yield* command(mapping, input.moduleId, input.commandId);\n const d = mapping.command;\n\n if (\n prior.row === undefined ||\n prior.row[d.intent] !== discovered.row[d.intent] ||\n prior.row[d.decision] !== discovered.row[d.decision] ||\n prior.row[d.version] !== discovered.row[d.version]\n )\n return { _tag: \"Rejected\" } as const;\n\n return { _tag: \"Replay\", result: { ...prior.result, replayed: true } } as const;\n }\n const read = yield* A.locked(mapping, input.authorization, input.grantId, \"metadata\");\n\n if (read === undefined) return { _tag: \"Rejected\" } as const;\n const finalCommand = yield* command(mapping, input.moduleId, input.commandId);\n\n if (finalCommand.row !== undefined) return { _tag: \"Rejected\" } as const;\n\n return {\n _tag: \"Target\",\n grant: {\n context: read.grant.context,\n ...(read.grant.sealed === undefined ? {} : { sealed: read.grant.sealed }),\n },\n revision: read.found.revision,\n } as const;\n });\n\n const disconnect = Effect.fn(\"oauthConnected.disconnect\")(function* (\n mapping: STypes.Mapping,\n input: FTypes.Input<\"disconnect\">,\n ) {\n const owner = yield* CurrentOAuthTransaction;\n\n const token = input.grant.context,\n found = yield* S.current(mapping, token.subjectId);\n\n if (\n found === undefined ||\n input.moduleId !== token.moduleId ||\n !(yield* S.action(mapping, found, input.authorization, \"disconnect\", {\n moduleId: input.moduleId,\n flowId: input.commandId,\n commandId: input.commandId,\n revision: input.authorization.challenge.revision,\n intent: S.disconnectStorage.encode(input.grant),\n maximumAgeMillis: 300000,\n configuration: token.configuration,\n grant: token,\n }))\n )\n return { _tag: \"Rejected\" } as const;\n const client = yield* S.client(mapping, token.configuration, false);\n\n if (client === undefined) return { _tag: \"Rejected\" } as const;\n\n const tuple = yield* F.inspectTuple(mapping, token.identity),\n t = mapping.ownership.tuple;\n\n if (\n tuple.row?.[t.state] !== \"Owned\" ||\n !mapping.subjectId.equals(tuple.row[t.subjectId], found.nativeId)\n )\n return { _tag: \"Conflict\" } as const;\n const cohort = yield* S.cohort(mapping, client.id, tuple.key, false);\n\n invariant(cohort.row !== undefined);\n\n const read = yield* S.readGrant(mapping, input.moduleId, token.grantId),\n g = mapping.grant;\n\n if (\n read === undefined ||\n !C.sameContext(read.context, token) ||\n S.disconnectStorage.encode({\n context: read.context,\n ...(read.sealed === undefined ? {} : { sealed: read.sealed }),\n }) !== S.disconnectStorage.encode(input.grant)\n )\n return { _tag: \"Conflict\" } as const;\n const prior = yield* command(mapping, input.moduleId, input.commandId);\n\n // Only inspectDisconnect exposes replay. Mutation replay cannot repeat effects.\n if (prior.row !== undefined) return { _tag: \"Conflict\" } as const;\n\n const now = yield* owner.now(mapping.clock),\n wasOpen = !cohort.blocked;\n\n invariant(input.retentionUntilMillis >= now && input.retentionUntilMillis <= now + 2592000000);\n const affected = yield* C.fence(mapping, client, cohort);\n let remote: (typeof M.OAuthConnectedSummary.Type)[\"remoteRevocation\"] = \"Unsupported\";\n\n if (input.revocation !== undefined) {\n yield* C.storeJob(mapping, input.revocation, token, found.nativeId, now);\n remote = \"Pending\";\n } else if (token.configuration.profile.revocation === \"cohort\") {\n invariant(read.sealed === undefined);\n remote = \"Unknown\";\n }\n\n const result = snapshotOAuthSync(M.OAuthConnectedDisconnected, {\n _tag: \"Disconnected\",\n grantId: token.grantId,\n remoteRevocation: remote,\n affectedGrantCount: affected,\n replayed: false,\n });\n\n yield* owner.update(\n g.table,\n { [g.moduleId]: input.moduleId, [g.grantId]: token.grantId },\n {\n [g.state]: \"Disconnected\",\n [g.activeIdentityKey]: null,\n [g.sealed]: null,\n [g.revocationJobId]: input.revocation?.context.jobId ?? read.row[g.revocationJobId],\n [g.version]: owner.marker,\n },\n );\n\n const d = mapping.command,\n key = { [d.moduleId]: input.moduleId, [d.commandId]: input.commandId };\n\n const inserted = yield* owner.insert(\n d.table,\n {\n ...d.encodeInsert({\n commandId: input.commandId,\n grant: snapshotOAuthSync(M.OAuthConnectedDisconnectGrant, input.grant),\n subjectId: S.nativeCopy(found.nativeId),\n }),\n ...key,\n [d.subjectId]: found.nativeId,\n [d.grantId]: token.grantId,\n [d.intent]: S.commandStorage.encode({\n context: token,\n originalDigest: yield* digest(S.disconnectStorage.encode(input.grant)),\n ...(input.revocation === undefined\n ? {}\n : { revocationJobId: input.revocation.context.jobId }),\n }),\n [d.decision]: S.disconnectedStorage.encode(result),\n [d.retentionUntil]: mapping.clock.encodeInstant(input.retentionUntilMillis),\n [d.version]: owner.marker,\n },\n key,\n );\n\n prior.read.rows = inserted.rows;\n if (\n wasOpen &&\n input.revocation === undefined &&\n token.configuration.profile.revocation === \"unsupported\"\n )\n yield* C.clear(mapping, client, cohort, undefined, true);\n\n return result;\n });\n\n return { list, inspectDisconnect, disconnect };\n});\n\nexport class OAuthConnectedManagement extends Context.Service<\n OAuthConnectedManagement,\n Effect.Success<typeof make>\n>()(\"effect-auth/persistence/OAuthConnectedManagement\") {\n static readonly layer = Layer.effect(OAuthConnectedManagement, make);\n}\n"],"mappings":"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"}
@@ -1,63 +0,0 @@
1
- import { makeTransactionKernel } from "../transaction-kernel.mjs";
2
- import { captureOAuthMapping, unavailable } from "./state.mjs";
3
- import { scopeKey } from "./connected-keys.mjs";
4
- import { oauthReferenceGuardTable } from "../models/oauth-model.mjs";
5
- import { Effect } from "effect";
6
- //#region src/internal/oauth/connected-reference.ts
7
- const makeOAuthConnectedReferenceKernel = (operations, dialect) => {
8
- const { eq, sql } = operations;
9
- const transactions = makeTransactionKernel(operations);
10
- const { both } = transactions;
11
- const { col, equal } = transactions.makeTransactionRows(unavailable);
12
- const exactText = (table, key, value) => {
13
- const column = col(table, key), bound = sql.param(value, column);
14
- return dialect(table) === "mysql" ? sql`binary ${column} = binary ${bound}` : dialect(table) === "pg" ? sql`convert_to(cast(${column} as text),'UTF8') = convert_to(cast(${bound} as text),'UTF8')` : sql`cast(${column} as blob) = cast(${bound} as blob)`;
15
- };
16
- /** Compose Accounts.Unlink with this connected authority. The stable scope lock
17
- * serializes unknown claims across every client registration for an issuer. */
18
- const oauthConnectedOwnershipReferences = (original) => {
19
- const mapping = captureOAuthMapping(original), c = mapping.client;
20
- return Object.freeze({
21
- connectedReferenceGuards: [oauthReferenceGuardTable({
22
- table: c.table,
23
- orderBy: c.clientKey,
24
- condition: (input) => Effect.gen(function* () {
25
- const key = yield* scopeKey(input.identity.provider, input.identity.issuer);
26
- return both(equal(c.table, {
27
- [c.clientKey]: key,
28
- [c.counter]: mapping.order.encode(0)
29
- }), exactText(c.table, c.provider, input.identity.provider), exactText(c.table, c.issuer, input.identity.issuer), exactText(c.table, c.clientRegistrationId, ""));
30
- })
31
- })],
32
- connectedReference: (input) => connectedReferenceCondition(mapping, input.identityKey)
33
- });
34
- };
35
- const connectedReferenceCondition = (mapping, identityKey, knownIdentity) => {
36
- const c = mapping.client, t = mapping.ownership.tuple, f = mapping.flow, g = mapping.grant, h = mapping.cohort, a = mapping.admission, j = mapping.revocation.mode === "cohort" ? mapping.revocation.job : void 0;
37
- const tuple = equal(t.table, { [t.identityKey]: identityKey });
38
- const knownFlow = sql`exists(select 1 from ${h.table} where ${col(h.table, h.cohortKey)} = ${col(f.table, f.cohortKey)} and ${col(h.table, h.identityKey)} = ${identityKey})`;
39
- const unknownFlow = knownIdentity === void 0 ? sql`${col(f.table, f.cohortKey)} is null and exists(select 1 from ${c.table} where ${col(c.table, c.clientKey)} = ${col(f.table, f.clientKey)} and exists(select 1 from ${t.table} where ${tuple} and ${col(c.table, c.provider)} = ${col(t.table, t.provider)} and ${col(c.table, c.issuer)} = ${col(t.table, t.issuer)}))` : sql`${col(f.table, f.cohortKey)} is null and exists(select 1 from ${c.table} where ${col(c.table, c.clientKey)} = ${col(f.table, f.clientKey)} and ${col(c.table, c.provider)} = ${knownIdentity.provider} and ${col(c.table, c.issuer)} = ${knownIdentity.issuer})`;
40
- const related = [
41
- f,
42
- g,
43
- h,
44
- ...j === void 0 ? [] : [j]
45
- ];
46
- return sql`(${sql.join([
47
- sql`exists(select 1 from ${g.table} where ${eq(col(g.table, g.identityKey), identityKey)})`,
48
- sql`exists(select 1 from ${a.table} where ${eq(col(a.table, a.identityKey), identityKey)})`,
49
- sql`exists(select 1 from ${h.table} where ${both(eq(col(h.table, h.identityKey), identityKey), eq(col(h.table, h.state), "Blocked"))})`,
50
- sql`exists(select 1 from ${f.table} where ${col(f.table, f.work)} = 'Unresolved' and (${knownFlow} or (${unknownFlow})))`,
51
- ...j === void 0 ? [] : [sql`exists(select 1 from ${j.table} where ${eq(col(j.table, j.identityKey), identityKey)})`],
52
- ...related.map((v) => sql`exists(select 1 from ${v.table} where not exists(select 1 from ${c.table} where ${col(c.table, c.clientKey)} = ${col(v.table, v.clientKey)}))`)
53
- ], sql` or `)})`;
54
- };
55
- return {
56
- oauthConnectedOwnershipReferences,
57
- connectedReferenceCondition
58
- };
59
- };
60
- //#endregion
61
- export { makeOAuthConnectedReferenceKernel };
62
-
63
- //# sourceMappingURL=connected-reference.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connected-reference.mjs","names":[],"sources":["../../../src/internal/oauth/connected-reference.ts"],"sourcesContent":["import { Effect } from \"effect\";\n\nimport type { OAuthConnectedMapping } from \"../models/oauth-connected-model\";\nimport {\n oauthReferenceGuardTable,\n type OAuthReferenceGuardDescriptor,\n} from \"../models/oauth-model\";\n/* oxlint-disable no-explicit-any -- only adapter SQL expression handles are erased. */\nimport type { SqlExpression as SQL } from \"../query-operations\";\nimport type { QueryOperations } from \"../query-operations\";\nimport type { TableModel } from \"../query-operations\";\nimport { makeTransactionKernel } from \"../transaction-kernel\";\nimport { scopeKey } from \"./connected-keys\";\nimport type { Mapping } from \"./connected-state\";\nimport { unavailable, captureOAuthMapping } from \"./state\";\ntype Table = object;\n\nexport const makeOAuthConnectedReferenceKernel = (\n operations: QueryOperations,\n dialect: (table: object) => \"pg\" | \"sqlite\" | \"mysql\",\n) => {\n const { eq, sql } = operations;\n const transactions = makeTransactionKernel(operations);\n const { both } = transactions;\n const { col, equal } = transactions.makeTransactionRows(unavailable);\n\n const exactText = (table: Table, key: string, value: string) => {\n const column = col(table, key),\n bound = sql.param(value, column);\n\n return dialect(table) === \"mysql\"\n ? sql`binary ${column} = binary ${bound}`\n : dialect(table) === \"pg\"\n ? sql`convert_to(cast(${column} as text),'UTF8') = convert_to(cast(${bound} as text),'UTF8')`\n : sql`cast(${column} as blob) = cast(${bound} as blob)`;\n };\n\n /** Compose Accounts.Unlink with this connected authority. The stable scope lock\n * serializes unknown claims across every client registration for an issuer. */\n const oauthConnectedOwnershipReferences = <\n S extends TableModel,\n AC extends TableModel,\n T extends TableModel,\n O extends TableModel,\n F extends TableModel,\n G extends TableModel,\n C extends TableModel,\n H extends TableModel,\n A extends TableModel,\n D extends TableModel,\n N,\n J extends TableModel,\n >(\n original: OAuthConnectedMapping<S, AC, T, O, F, G, C, H, A, D, N, J, any>,\n ): {\n readonly connectedReferenceGuards: ReadonlyArray<OAuthReferenceGuardDescriptor<N>>;\n readonly connectedReference: (input: {\n readonly identityKey: string;\n readonly subjectId: N;\n }) => SQL;\n } => {\n const mapping = captureOAuthMapping(original),\n c = mapping.client;\n\n return Object.freeze({\n connectedReferenceGuards: [\n oauthReferenceGuardTable<C, N>({\n table: c.table,\n orderBy: c.clientKey,\n condition: (input) =>\n Effect.gen(function* () {\n const key = yield* scopeKey(input.identity.provider, input.identity.issuer);\n\n return both(\n equal(c.table, {\n [c.clientKey]: key,\n [c.counter]: mapping.order.encode(0),\n }),\n exactText(c.table, c.provider, input.identity.provider),\n exactText(c.table, c.issuer, input.identity.issuer),\n exactText(c.table, c.clientRegistrationId, \"\"),\n );\n }),\n }),\n ],\n connectedReference: (input) => connectedReferenceCondition(mapping, input.identityKey),\n });\n };\n\n const connectedReferenceCondition = (\n mapping: Mapping,\n identityKey: string | SQL,\n knownIdentity?: { readonly provider: string | SQL; readonly issuer: string | SQL },\n ) => {\n const c = mapping.client,\n t = mapping.ownership.tuple,\n f = mapping.flow,\n g = mapping.grant,\n h = mapping.cohort,\n a = mapping.admission,\n j = mapping.revocation.mode === \"cohort\" ? mapping.revocation.job : undefined;\n\n const tuple = equal(t.table, { [t.identityKey]: identityKey });\n const knownFlow = sql`exists(select 1 from ${h.table} where ${col(h.table, h.cohortKey)} = ${col(f.table, f.cohortKey)} and ${col(h.table, h.identityKey)} = ${identityKey})`;\n\n const unknownFlow =\n knownIdentity === undefined\n ? sql`${col(f.table, f.cohortKey)} is null and exists(select 1 from ${c.table} where ${col(c.table, c.clientKey)} = ${col(f.table, f.clientKey)} and exists(select 1 from ${t.table} where ${tuple} and ${col(c.table, c.provider)} = ${col(t.table, t.provider)} and ${col(c.table, c.issuer)} = ${col(t.table, t.issuer)}))`\n : sql`${col(f.table, f.cohortKey)} is null and exists(select 1 from ${c.table} where ${col(c.table, c.clientKey)} = ${col(f.table, f.clientKey)} and ${col(c.table, c.provider)} = ${knownIdentity.provider} and ${col(c.table, c.issuer)} = ${knownIdentity.issuer})`;\n\n const related = [f, g, h, ...(j === undefined ? [] : [j])];\n\n return sql`(${sql.join(\n [\n sql`exists(select 1 from ${g.table} where ${eq(col(g.table, g.identityKey), identityKey)})`,\n sql`exists(select 1 from ${a.table} where ${eq(col(a.table, a.identityKey), identityKey)})`,\n sql`exists(select 1 from ${h.table} where ${both(eq(col(h.table, h.identityKey), identityKey), eq(col(h.table, h.state), \"Blocked\"))})`,\n sql`exists(select 1 from ${f.table} where ${col(f.table, f.work)} = 'Unresolved' and (${knownFlow} or (${unknownFlow})))`,\n ...(j === undefined\n ? []\n : [\n sql`exists(select 1 from ${j.table} where ${eq(col(j.table, j.identityKey), identityKey)})`,\n ]),\n // A missing real client cannot turn erased unknown work into absence.\n ...related.map(\n (v) =>\n sql`exists(select 1 from ${v.table} where not exists(select 1 from ${c.table} where ${col(c.table, c.clientKey)} = ${col(v.table, v.clientKey)}))`,\n ),\n ],\n sql` or `,\n )})`;\n };\n\n return { oauthConnectedOwnershipReferences, connectedReferenceCondition };\n};\n"],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import "../mapping-error.mjs";
2
- import "./owner.mjs";
3
- import "./connected-state.mjs";
4
- import "./query-compiler.mjs";
5
- import "./connected-custody.mjs";
6
- import "./connected-flow.mjs";
7
- import { Context, Effect, Layer } from "effect";
8
- import "@yielded/auth/OAuth";
@@ -1,141 +0,0 @@
1
- import { CurrentOAuthTransaction } from "./owner.mjs";
2
- import { OAuthQueryCompiler } from "./query-compiler.mjs";
3
- import { invariant, oauthIdentityKey, sameIdentity } from "./state.mjs";
4
- import { OAuthConnectedState } from "./connected-state.mjs";
5
- import { OAuthConnectedCustody } from "./connected-custody.mjs";
6
- import { OAuthConnectedFlow } from "./connected-flow.mjs";
7
- import { Context, Effect, Layer } from "effect";
8
- import * as M from "@yielded/auth/OAuth";
9
- import { snapshotOAuthSync } from "@yielded/auth/OAuth";
10
- //#region src/internal/oauth/connected-settlement.ts
11
- const make = Effect.gen(function* () {
12
- const operations = yield* OAuthQueryCompiler;
13
- const C = yield* OAuthConnectedCustody;
14
- const F = yield* OAuthConnectedFlow;
15
- const S = yield* OAuthConnectedState;
16
- const { ne, sql } = operations;
17
- const { both, col, equal } = operations;
18
- const validMetadata = (context, now) => {
19
- const m = context.metadata, p = context.configuration.profile;
20
- return p.provider === context.identity.provider && context.configuration.provider === context.identity.provider && context.configuration.issuer === context.identity.issuer && m.obtainedAtMillis <= now && m.useUntilMillis > m.obtainedAtMillis && m.useUntilMillis <= m.obtainedAtMillis + p.maximumAccessLifetimeMillis && (m.accessExpiresAtMillis === void 0 || m.useUntilMillis <= m.accessExpiresAtMillis) && m.scopes.every((v) => p.scopes.includes(v)) && m.resources.every((v) => p.resources.includes(v)) && new Set(m.scopes).size === m.scopes.length && new Set(m.resources).size === m.resources.length && (m.refreshUseUntilMillis === void 0 || p.retention === "access-and-refresh" && p.maximumRefreshLifetimeMillis !== void 0 && m.refreshUseUntilMillis > m.obtainedAtMillis && m.refreshUseUntilMillis <= m.obtainedAtMillis + p.maximumRefreshLifetimeMillis && (m.refreshExpiresAtMillis === void 0 || m.refreshUseUntilMillis <= m.refreshExpiresAtMillis));
21
- };
22
- /** The only writer that activates or replaces a confirmed connected grant. */
23
- const activateGrant = Effect.fn("oauthConnected.activateGrant")(function* (mapping, grant, native, now, replacing) {
24
- const owner = yield* CurrentOAuthTransaction;
25
- const token = grant.context;
26
- const g = mapping.grant;
27
- const identityKey = yield* oauthIdentityKey(token.identity);
28
- const clientKey = yield* S.clientKey(token.configuration);
29
- const cohortKey = yield* S.cohortKey(clientKey, identityKey);
30
- const values = {
31
- ...g.encodeInsert({
32
- grant: snapshotOAuthSync(M.OAuthConnectedStoredGrant, grant),
33
- subjectId: S.nativeCopy(native)
34
- }),
35
- [g.moduleId]: token.moduleId,
36
- [g.grantId]: token.grantId,
37
- [g.subjectId]: native,
38
- [g.identityKey]: identityKey,
39
- [g.activeIdentityKey]: identityKey,
40
- [g.clientKey]: clientKey,
41
- [g.cohortKey]: cohortKey,
42
- [g.profileKey]: token.configuration.profile.key,
43
- [g.grantVersion]: token.grantVersion,
44
- [g.tokenVersion]: token.tokenVersion,
45
- [g.cohortGeneration]: token.cohortGeneration,
46
- [g.state]: "Active",
47
- [g.version]: owner.marker,
48
- [g.context]: S.tokenContextStorage.encode(token),
49
- [g.sealed]: S.sealedStorage.encode(grant.sealed),
50
- [g.summary]: S.summaryStorage.encode(C.summary(token)),
51
- [g.revocationJobId]: null,
52
- [g.refreshWork]: "None",
53
- [g.refreshClaim]: null,
54
- [g.refreshClaimExpiresAt]: null,
55
- [g.retentionUntil]: mapping.clock.encodeInstant(S.retainedUntil(mapping, Math.max(now, token.metadata.useUntilMillis, token.metadata.refreshUseUntilMillis ?? 0)))
56
- };
57
- if (!replacing) yield* owner.insert(g.table, values, {
58
- [g.moduleId]: token.moduleId,
59
- [g.grantId]: token.grantId
60
- });
61
- else yield* owner.update(g.table, {
62
- [g.moduleId]: token.moduleId,
63
- [g.grantId]: token.grantId
64
- }, values);
65
- });
66
- return {
67
- validMetadata,
68
- activateGrant,
69
- settle: Effect.fn("oauthConnected.settle")(function* (mapping, input) {
70
- const owner = yield* CurrentOAuthTransaction;
71
- const c = input.claim.flow.context, out = input.outcome;
72
- const found = yield* S.current(mapping, c.revision.subjectId);
73
- const authorized = found !== void 0 && (yield* S.action(mapping, found, input.authorization, "settle", F.expected(input.claim.flow)));
74
- const cl = yield* S.client(mapping, S.configuration(input.claim.flow), false);
75
- if (cl === void 0) return { _tag: "Rejected" };
76
- if (out._tag !== "Verified" && out._tag !== "Quarantined") {
77
- if ((yield* F.exact(mapping, input.claim)) === void 0) return { _tag: "Rejected" };
78
- const state = out._tag === "Unissued" ? "Rejected" : out._tag;
79
- yield* F.terminal(mapping, input.claim, state, out._tag === "Cancelled" || out._tag === "Unissued" ? "Resolved" : "Unresolved");
80
- return { _tag: state };
81
- }
82
- const grant = snapshotOAuthSync(M.OAuthConnectedStoredGrant, out.grant), token = grant.context;
83
- invariant(token.moduleId === c.moduleId && token.subjectId === c.revision.subjectId && token.grantId === c.grantId && token.identity.provider === c.provider && token.identity.issuer === c.issuer && (yield* S.clientKey(token.configuration)) === cl.id && S.tokenContextStorage.encode({
84
- ...token,
85
- configuration: S.configuration(input.claim.flow)
86
- }) === S.tokenContextStorage.encode(token));
87
- const native = yield* mapping.subjectId.toNative(c.revision.subjectId);
88
- const tuple = yield* F.readTuple(mapping.ownership, token.identity), t = mapping.ownership.tuple;
89
- if (tuple.row[t.state] === "Reserved" || tuple.row[t.state] === "Owned" && !mapping.subjectId.equals(tuple.row[t.subjectId], native)) {
90
- if ((yield* F.exact(mapping, input.claim)) !== void 0) yield* F.terminal(mapping, input.claim, "Conflict", "Unresolved");
91
- return { _tag: "Conflict" };
92
- }
93
- const co = yield* S.cohort(mapping, cl.id, tuple.key, true);
94
- const original = yield* S.readGrant(mapping, c.moduleId, c.grantId);
95
- const g = mapping.grant;
96
- const other = yield* owner.read(g.table, both(equal(g.table, {
97
- [g.moduleId]: c.moduleId,
98
- [g.subjectId]: native,
99
- [g.profileKey]: c.profile.key,
100
- [g.activeIdentityKey]: tuple.key
101
- }), ne(col(g.table, g.grantId), c.grantId)), { limit: 1 });
102
- const claimed = yield* F.exact(mapping, input.claim);
103
- if (claimed === void 0) return { _tag: "Rejected" };
104
- invariant(token.exchangeOrder === input.claim.order && validMetadata(token, claimed.now) && token.metadata.obtainedAtMillis >= input.claim.claimedAtMillis);
105
- const reconnect = c.reconnect;
106
- const targetOkay = reconnect === void 0 ? original === void 0 : original !== void 0 && F.sameTarget(reconnect, original.context) && sameIdentity(reconnect.identity, token.identity) && original.row[g.refreshWork] !== "Unresolved";
107
- const previousSafe = yield* C.noFormerOwner(mapping, tuple.key, cl.id, native);
108
- if (!(out._tag === "Verified" && authorized && claimed.active && c.profile.issuance === "active" && token.metadata.useUntilMillis > claimed.now && !co.blocked && co.generation === token.cohortGeneration && S.orderNumber(input.claim.order) > co.cutoff && targetOkay && other.rows.length === 0 && previousSafe)) {
109
- if (!previousSafe) {
110
- yield* F.terminal(mapping, input.claim, "Conflict", "Unresolved");
111
- return { _tag: "Conflict" };
112
- }
113
- if (tuple.row[t.state] === "Unowned") yield* F.acquireTuple(mapping.ownership, token.identity, tuple.key, S.nativeCopy(native));
114
- yield* C.fence(mapping, cl, co);
115
- if (out.cleanup !== void 0) {
116
- yield* C.storeJob(mapping, out.cleanup, token, native, claimed.now);
117
- yield* F.terminal(mapping, input.claim, "Quarantined", "Resolved", { cohort: co.id });
118
- } else yield* F.terminal(mapping, input.claim, "Quarantined", "Unresolved", {
119
- cohort: co.id,
120
- sealed: grant
121
- });
122
- return { _tag: targetOkay && other.rows.length === 0 ? "Rejected" : "Conflict" };
123
- }
124
- if (tuple.row[t.state] === "Unowned") yield* F.acquireTuple(mapping.ownership, token.identity, tuple.key, S.nativeCopy(native));
125
- yield* activateGrant(mapping, grant, native, claimed.now, original !== void 0);
126
- yield* F.terminal(mapping, input.claim, "Connected", "Resolved", { cohort: co.id });
127
- owner.postconditions.push(sql`${mapping.clock.engineNowMillis} >= ${claimed.now} and ${mapping.clock.engineNowMillis} < ${Math.min(input.claim.claimExpiresAtMillis, token.metadata.useUntilMillis)}`);
128
- return {
129
- _tag: "Connected",
130
- grant
131
- };
132
- })
133
- };
134
- });
135
- var OAuthConnectedSettlement = class OAuthConnectedSettlement extends Context.Service()("effect-auth/persistence/OAuthConnectedSettlement") {
136
- static layer = Layer.effect(OAuthConnectedSettlement, make);
137
- };
138
- //#endregion
139
- export { OAuthConnectedSettlement };
140
-
141
- //# sourceMappingURL=connected-settlement.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connected-settlement.mjs","names":[],"sources":["../../../src/internal/oauth/connected-settlement.ts"],"sourcesContent":["import * as M from \"@yielded/auth/OAuth\";\nimport { snapshotOAuthSync } from \"@yielded/auth/OAuth\";\nimport { Effect, Context, Layer } from \"effect\";\n\nimport { OAuthConnectedCustody } from \"./connected-custody\";\nimport { OAuthConnectedFlow } from \"./connected-flow\";\nimport type * as FTypes from \"./connected-flow\";\nimport { OAuthConnectedState } from \"./connected-state\";\nimport type * as STypes from \"./connected-state\";\nimport { CurrentOAuthTransaction } from \"./owner\";\nimport { OAuthQueryCompiler } from \"./query-compiler\";\nimport { invariant, sameIdentity, oauthIdentityKey } from \"./state\";\n\nconst make = Effect.gen(function* () {\n const operations = yield* OAuthQueryCompiler;\n const C = yield* OAuthConnectedCustody;\n const F = yield* OAuthConnectedFlow;\n const S = yield* OAuthConnectedState;\n\n const { ne, sql } = operations;\n const { both, col, equal } = operations;\n\n const validMetadata = (context: M.OAuthConnectedTokenContext, now: number) => {\n const m = context.metadata,\n p = context.configuration.profile;\n\n return (\n p.provider === context.identity.provider &&\n context.configuration.provider === context.identity.provider &&\n context.configuration.issuer === context.identity.issuer &&\n m.obtainedAtMillis <= now &&\n m.useUntilMillis > m.obtainedAtMillis &&\n m.useUntilMillis <= m.obtainedAtMillis + p.maximumAccessLifetimeMillis &&\n (m.accessExpiresAtMillis === undefined || m.useUntilMillis <= m.accessExpiresAtMillis) &&\n m.scopes.every((v) => p.scopes.includes(v)) &&\n m.resources.every((v) => p.resources.includes(v)) &&\n new Set(m.scopes).size === m.scopes.length &&\n new Set(m.resources).size === m.resources.length &&\n (m.refreshUseUntilMillis === undefined ||\n (p.retention === \"access-and-refresh\" &&\n p.maximumRefreshLifetimeMillis !== undefined &&\n m.refreshUseUntilMillis > m.obtainedAtMillis &&\n m.refreshUseUntilMillis <= m.obtainedAtMillis + p.maximumRefreshLifetimeMillis &&\n (m.refreshExpiresAtMillis === undefined ||\n m.refreshUseUntilMillis <= m.refreshExpiresAtMillis)))\n );\n };\n\n /** The only writer that activates or replaces a confirmed connected grant. */\n const activateGrant = Effect.fn(\"oauthConnected.activateGrant\")(function* (\n mapping: STypes.Mapping,\n grant: M.OAuthConnectedStoredGrant,\n native: unknown,\n now: number,\n replacing: boolean,\n ) {\n const owner = yield* CurrentOAuthTransaction;\n const token = grant.context;\n const g = mapping.grant;\n const identityKey = yield* oauthIdentityKey(token.identity);\n const clientKey = yield* S.clientKey(token.configuration);\n const cohortKey = yield* S.cohortKey(clientKey, identityKey);\n\n const values = {\n ...g.encodeInsert({\n grant: snapshotOAuthSync(M.OAuthConnectedStoredGrant, grant),\n subjectId: S.nativeCopy(native),\n }),\n [g.moduleId]: token.moduleId,\n [g.grantId]: token.grantId,\n [g.subjectId]: native,\n [g.identityKey]: identityKey,\n [g.activeIdentityKey]: identityKey,\n [g.clientKey]: clientKey,\n [g.cohortKey]: cohortKey,\n [g.profileKey]: token.configuration.profile.key,\n [g.grantVersion]: token.grantVersion,\n [g.tokenVersion]: token.tokenVersion,\n [g.cohortGeneration]: token.cohortGeneration,\n [g.state]: \"Active\",\n [g.version]: owner.marker,\n [g.context]: S.tokenContextStorage.encode(token),\n [g.sealed]: S.sealedStorage.encode(grant.sealed),\n [g.summary]: S.summaryStorage.encode(C.summary(token)),\n [g.revocationJobId]: null,\n [g.refreshWork]: \"None\",\n [g.refreshClaim]: null,\n [g.refreshClaimExpiresAt]: null,\n [g.retentionUntil]: mapping.clock.encodeInstant(\n S.retainedUntil(\n mapping,\n Math.max(now, token.metadata.useUntilMillis, token.metadata.refreshUseUntilMillis ?? 0),\n ),\n ),\n };\n\n if (!replacing) {\n yield* owner.insert(g.table, values, {\n [g.moduleId]: token.moduleId,\n [g.grantId]: token.grantId,\n });\n } else\n yield* owner.update(\n g.table,\n { [g.moduleId]: token.moduleId, [g.grantId]: token.grantId },\n values,\n );\n });\n\n const settle = Effect.fn(\"oauthConnected.settle\")(function* (\n mapping: STypes.Mapping,\n input: FTypes.Input<\"settle\">,\n ) {\n const owner = yield* CurrentOAuthTransaction;\n\n const c = input.claim.flow.context,\n out = input.outcome;\n\n const found = yield* S.current(mapping, c.revision.subjectId);\n\n const authorized =\n found !== undefined &&\n (yield* S.action(\n mapping,\n found,\n input.authorization,\n \"settle\",\n F.expected(input.claim.flow),\n ));\n\n const cl = yield* S.client(mapping, S.configuration(input.claim.flow), false);\n\n if (cl === undefined) return { _tag: \"Rejected\" } as const;\n if (out._tag !== \"Verified\" && out._tag !== \"Quarantined\") {\n const claimed = yield* F.exact(mapping, input.claim);\n\n if (claimed === undefined) return { _tag: \"Rejected\" } as const;\n const state = out._tag === \"Unissued\" ? \"Rejected\" : out._tag;\n\n yield* F.terminal(\n mapping,\n input.claim,\n state,\n out._tag === \"Cancelled\" || out._tag === \"Unissued\" ? \"Resolved\" : \"Unresolved\",\n );\n\n return { _tag: state } as\n | { readonly _tag: \"Cancelled\" }\n | { readonly _tag: \"Rejected\" }\n | { readonly _tag: \"Conflict\" }\n | { readonly _tag: \"Ambiguous\" };\n }\n\n const grant = snapshotOAuthSync(M.OAuthConnectedStoredGrant, out.grant),\n token = grant.context;\n\n invariant(\n token.moduleId === c.moduleId &&\n token.subjectId === c.revision.subjectId &&\n token.grantId === c.grantId &&\n token.identity.provider === c.provider &&\n token.identity.issuer === c.issuer &&\n (yield* S.clientKey(token.configuration)) === cl.id &&\n S.tokenContextStorage.encode({\n ...token,\n configuration: S.configuration(input.claim.flow),\n }) === S.tokenContextStorage.encode(token),\n );\n const native = yield* mapping.subjectId.toNative(c.revision.subjectId);\n\n const tuple = yield* F.readTuple(mapping.ownership, token.identity),\n t = mapping.ownership.tuple;\n\n if (\n tuple.row[t.state] === \"Reserved\" ||\n (tuple.row[t.state] === \"Owned\" && !mapping.subjectId.equals(tuple.row[t.subjectId], native))\n ) {\n const claimed = yield* F.exact(mapping, input.claim);\n\n if (claimed !== undefined) yield* F.terminal(mapping, input.claim, \"Conflict\", \"Unresolved\");\n\n return { _tag: \"Conflict\" } as const;\n }\n const co = yield* S.cohort(mapping, cl.id, tuple.key, true);\n const original = yield* S.readGrant(mapping, c.moduleId, c.grantId);\n const g = mapping.grant;\n\n const other = yield* owner.read(\n g.table,\n both(\n equal(g.table, {\n [g.moduleId]: c.moduleId,\n [g.subjectId]: native,\n [g.profileKey]: c.profile.key,\n [g.activeIdentityKey]: tuple.key,\n }),\n ne(col(g.table, g.grantId), c.grantId),\n ),\n { limit: 1 },\n );\n\n const claimed = yield* F.exact(mapping, input.claim);\n\n if (claimed === undefined) return { _tag: \"Rejected\" } as const;\n invariant(\n token.exchangeOrder === input.claim.order &&\n validMetadata(token, claimed.now) &&\n token.metadata.obtainedAtMillis >= input.claim.claimedAtMillis,\n );\n const reconnect = c.reconnect;\n\n const targetOkay =\n reconnect === undefined\n ? original === undefined\n : original !== undefined &&\n F.sameTarget(reconnect, original.context) &&\n sameIdentity(reconnect.identity, token.identity) &&\n original.row[g.refreshWork] !== \"Unresolved\";\n\n const previousSafe = yield* C.noFormerOwner(mapping, tuple.key, cl.id, native);\n\n const active =\n out._tag === \"Verified\" &&\n authorized &&\n claimed.active &&\n c.profile.issuance === \"active\" &&\n token.metadata.useUntilMillis > claimed.now &&\n !co.blocked &&\n co.generation === token.cohortGeneration &&\n S.orderNumber(input.claim.order) > co.cutoff &&\n targetOkay &&\n other.rows.length === 0 &&\n previousSafe;\n\n if (!active) {\n // Foreign historical custody never authorizes a new remote operation.\n if (!previousSafe) {\n yield* F.terminal(mapping, input.claim, \"Conflict\", \"Unresolved\");\n\n return { _tag: \"Conflict\" } as const;\n }\n if (tuple.row[t.state] === \"Unowned\")\n yield* F.acquireTuple(mapping.ownership, token.identity, tuple.key, S.nativeCopy(native));\n yield* C.fence(mapping, cl, co);\n if (out.cleanup !== undefined) {\n yield* C.storeJob(mapping, out.cleanup, token, native, claimed.now);\n yield* F.terminal(mapping, input.claim, \"Quarantined\", \"Resolved\", { cohort: co.id });\n } else\n yield* F.terminal(mapping, input.claim, \"Quarantined\", \"Unresolved\", {\n cohort: co.id,\n sealed: grant,\n });\n\n return { _tag: targetOkay && other.rows.length === 0 ? \"Rejected\" : \"Conflict\" } as\n | { readonly _tag: \"Rejected\" }\n | { readonly _tag: \"Conflict\" };\n }\n if (tuple.row[t.state] === \"Unowned\")\n yield* F.acquireTuple(mapping.ownership, token.identity, tuple.key, S.nativeCopy(native));\n\n yield* activateGrant(mapping, grant, native, claimed.now, original !== undefined);\n yield* F.terminal(mapping, input.claim, \"Connected\", \"Resolved\", { cohort: co.id });\n owner.postconditions.push(\n sql`${mapping.clock.engineNowMillis} >= ${claimed.now} and ${mapping.clock.engineNowMillis} < ${Math.min(input.claim.claimExpiresAtMillis, token.metadata.useUntilMillis)}`,\n );\n\n return { _tag: \"Connected\", grant } as const;\n });\n\n return { validMetadata, activateGrant, settle };\n});\n\nexport class OAuthConnectedSettlement extends Context.Service<\n OAuthConnectedSettlement,\n Effect.Success<typeof make>\n>()(\"effect-auth/persistence/OAuthConnectedSettlement\") {\n static readonly layer = Layer.effect(OAuthConnectedSettlement, make);\n}\n"],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- import "../mapping-error.mjs";
2
- import "./owner.mjs";
3
- import "./connected-state.mjs";
4
- import "./query-compiler.mjs";
5
- import "./flow.mjs";
6
- import "./connected-custody.mjs";
7
- import "./connected-flow.mjs";
8
- import "./connected-settlement.mjs";
9
- import { Context, Effect, Layer, Schema } from "effect";
10
- import "@yielded/auth/OAuth";