@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,6 +1,5 @@
1
- /** Direct Effect SQL persistence for upstream OAuth accounts. PostgreSQL and SQLite
2
- * require interactive transactions; provider exchanges occur outside coordinators. */
3
- import type { LifecycleHooks } from "@yielded/auth/Hooks";
1
+ /** Direct PostgreSQL and SQLite owners for upstream OAuth. Provider exchange stays outside these transactions. */
2
+ import { hasCommitScope, type LifecycleHooks } from "@yielded/auth/Hooks";
4
3
  import {
5
4
  OAuthAccountsPersistence,
6
5
  OAuthSignInPersistence,
@@ -9,105 +8,111 @@ import {
9
8
  OAuthConnectedRevocations,
10
9
  OAuthUnavailable,
11
10
  } from "@yielded/auth/OAuth";
12
- import type { AuthenticationAuthority } from "@yielded/auth/Sessions";
13
- import { SessionUnavailable } from "@yielded/auth/Sessions";
14
11
  import { type Context, type Crypto, Effect, Predicate, Schema } from "effect";
15
12
  import { SqlClient } from "effect/sql";
16
13
 
17
14
  import { PersistenceConfigurationError } from "./internal/configuration";
18
- import type { AuthenticationAuthorityMapping as AuthorityMapping } from "./internal/models/session-model";
19
15
  import { makeNativeSqlTables } from "./internal/native-sql-table";
20
- import { makeOAuthKernel } from "./internal/oauth-kernel";
21
- import type { OAuthCoordinatorError, OAuthTargetConfiguration } from "./internal/oauth/target";
22
16
  import {
23
- CurrentSessionSql,
24
- makeSessionKernel,
25
- type SessionSqlDatabase,
26
- } from "./internal/session-kernel";
17
+ makeNativeOAuthAccountsServices,
18
+ type OAuthNativeAccountsMapping,
19
+ } from "./internal/oauth/native-accounts";
20
+ import { makeNativeOAuthConnectedServices } from "./internal/oauth/native-connected";
21
+ import type { OAuthNativeConnectedMapping } from "./internal/oauth/native-connected-state";
22
+ import {
23
+ makeNativeOAuthRegistrationIntentServices,
24
+ makeNativeOAuthRegistrationServices,
25
+ type OAuthNativeRegistrationIntentMapping,
26
+ type OAuthNativeRegistrationMapping,
27
+ } from "./internal/oauth/native-registration";
28
+ import {
29
+ makeNativeOAuthRevocationServices,
30
+ type OAuthNativeRevocationMapping,
31
+ } from "./internal/oauth/native-revocations";
32
+ import { makeNativeOAuthSignInServices } from "./internal/oauth/native-sign-in";
33
+ import { type OAuthNativeReadMapping } from "./internal/oauth/native-state";
34
+ import { captureOAuthMapping } from "./internal/oauth/state";
35
+ import { makeSqlCommitExecutor } from "./internal/sql-commit";
36
+ import { sql, SqlExpression } from "./internal/sql-expression";
27
37
  import type {
28
38
  OAuthConnectedMapping,
29
39
  OAuthConnectedRevocationMapping,
30
40
  } from "./internal/sql-oauth-connected-model";
31
41
  import type {
32
- SqlTableModel,
33
42
  OAuthAccountsMapping,
34
43
  OAuthSignInMapping,
35
44
  OAuthRegistrationIntentMapping,
36
45
  OAuthRegistrationMapping,
37
46
  OAuthRegistrationAuthority,
38
- OAuthReferenceGuardDescriptor,
39
47
  } from "./internal/sql-oauth-model";
40
- import { makeSqlDatabase, sqlQueryOperations, sql } from "./internal/sql-query";
41
48
  import { validateSqlStorage } from "./internal/sql-storage-validation";
42
- import { Table, Fragment } from "./internal/sql-table";
49
+ import { Table } from "./internal/sql-table";
43
50
  import { requireStandalone } from "./internal/standalone";
44
51
  import type { StorageTable } from "./internal/storage-tables";
45
- import { NativeDatabase } from "./internal/transaction-kernel";
46
- import type { TransactionNativeDatabase } from "./internal/transaction-kernel";
47
52
  export * from "./internal/sql-oauth-model";
48
53
  export * from "./internal/sql-oauth-connected-model";
49
- export { sql };
50
- export { and, eq } from "./internal/sql-query";
54
+ export * from "./internal/oauth/native-layers";
55
+ export { sql, and, eq } from "./internal/sql-expression";
56
+ export { makeAuthenticationAuthorityServices } from "./internal/sql-authority";
51
57
 
52
- /** Physical identifiers and representations only; applications own migrations. */
53
58
  export const table = (definition: StorageTable) =>
54
59
  new Table(definition.name, definition.columns, definition.unique, definition.schema);
55
60
 
56
- /** Integer-millisecond engine clock, sampled after locks on either supported dialect. */
57
61
  export const clock = {
58
62
  encodeInstant: Schema.encodeSync(Schema.Int),
59
63
  decodeInstant: Schema.decodeUnknownSync(Schema.Int),
60
- engineNowMillis: new Fragment((compiler) =>
61
- compiler.dialect === "pg"
62
- ? "cast(extract(epoch from clock_timestamp()) * 1000 as bigint)"
63
- : "cast(round((julianday('now') - 2440587.5) * 86400000) as integer)",
64
+ engineNowMillis: new SqlExpression((client) =>
65
+ client.onDialectOrElse({
66
+ pg: () => client`cast(extract(epoch from clock_timestamp()) * 1000 as bigint)`,
67
+ orElse: () => client`cast(round((julianday('now') - 2440587.5) * 86400000) as integer)`,
68
+ }),
64
69
  ),
65
- };
66
-
67
- const operations = { ...sqlQueryOperations, validateStorage: validateSqlStorage };
68
-
69
- const kernels = {
70
- pg: makeOAuthKernel(operations, () => "pg"),
71
- sqlite: makeOAuthKernel(operations, () => "sqlite"),
70
+ toMillis: (expression: SqlExpression) => expression,
71
+ fromMillis: (expression: SqlExpression) => expression,
72
72
  };
73
73
 
74
74
  const acquire = Effect.gen(function* () {
75
75
  const client = yield* SqlClient.SqlClient;
76
76
 
77
- const dialect = client.onDialectOrElse({
78
- pg: () => "pg" as const,
79
- sqlite: () => "sqlite" as const,
80
- orElse: () => undefined,
81
- });
82
-
83
- // D1 exposes the SQLite compiler but its public driver brand identifies a
84
- // batch-only client. Keep the default package free of a D1 runtime dependency.
85
- if (dialect === undefined || Predicate.hasProperty(client, "~@effect/sql-d1/D1Client"))
77
+ if (
78
+ !client.onDialectOrElse({ pg: () => true, sqlite: () => true, orElse: () => false }) ||
79
+ Predicate.hasProperty(client, "~@effect/sql-d1/D1Client")
80
+ )
86
81
  return yield* PersistenceConfigurationError.make({
87
82
  reason: "OAuth persistence requires PostgreSQL or SQLite with interactive transactions",
88
83
  });
89
84
 
90
- const database = yield* makeSqlDatabase(dialect);
85
+ return { client, tables: makeNativeSqlTables(client) };
86
+ });
91
87
 
92
- const configuration: OAuthTargetConfiguration = {
93
- mode: "interactive",
94
- dialect,
95
- locking: dialect === "pg",
96
- standaloneGuard: (service) => requireStandalone(() => OAuthUnavailable.make({}), service),
97
- };
88
+ const using = <M, A, E, R>(
89
+ original: M,
90
+ make: (tables: ReturnType<typeof makeNativeSqlTables>, mapping: M) => Effect.Effect<A, E, R>,
91
+ ) =>
92
+ Effect.gen(function* () {
93
+ const target = yield* acquire;
94
+ const mapping = captureOAuthMapping(original);
98
95
 
99
- // Erase only the query-builder handle; batch methods are never selected by this adapter.
100
- return {
101
- database: database as unknown as TransactionNativeDatabase,
102
- configuration,
103
- kernel: kernels[dialect],
104
- };
105
- });
96
+ yield* validateSqlStorage(mapping).pipe(Effect.mapError(() => OAuthUnavailable.make({})));
106
97
 
107
- const using = <A, E, R>(body: (input: Effect.Success<typeof acquire>) => Effect.Effect<A, E, R>) =>
108
- Effect.flatMap(acquire, (input) =>
109
- body(input).pipe(Effect.provideService(NativeDatabase, input.database)),
110
- );
98
+ return yield* make(target.tables, mapping);
99
+ });
100
+
101
+ const coordinate = <S, A, E, R, ES, RS>(
102
+ make: Effect.Effect<S, ES, RS>,
103
+ body: (services: S) => Effect.Effect<A, E, R>,
104
+ ) =>
105
+ Effect.gen(function* () {
106
+ const { client } = yield* acquire;
107
+
108
+ if (yield* hasCommitScope) return yield* OAuthUnavailable.make({});
109
+ yield* requireStandalone(() => OAuthUnavailable.make({}), client.transactionService);
110
+ const executor = yield* makeSqlCommitExecutor(() => OAuthUnavailable.make({}));
111
+
112
+ return yield* executor.coordinate(
113
+ Effect.flatMap(make.pipe(Effect.mapError(() => OAuthUnavailable.make({}))), body),
114
+ );
115
+ });
111
116
 
112
117
  export const makeOAuthSignInServices = <N>(
113
118
  mapping: OAuthSignInMapping<Table, Table, Table, Table, Table, N>,
@@ -116,220 +121,129 @@ export const makeOAuthSignInServices = <N>(
116
121
  OAuthUnavailable | PersistenceConfigurationError,
117
122
  Crypto.Crypto | LifecycleHooks | SqlClient.SqlClient
118
123
  > =>
119
- using(({ kernel, configuration }) =>
120
- kernel.target.makeTargetOAuthSignInServices(mapping, configuration),
124
+ using(mapping, (tables, value) =>
125
+ makeNativeOAuthSignInServices(tables, value as unknown as OAuthNativeReadMapping),
121
126
  );
122
127
 
123
- /** Run auth and application SQL in one adapter-owned transaction and commit journal. */
124
128
  export const coordinateOAuthSignIn = <N, A, E, R>(
125
129
  options: { readonly mapping: OAuthSignInMapping<Table, Table, Table, Table, Table, N> },
126
130
  body: Effect.Effect<A, E, R>,
127
131
  ): Effect.Effect<
128
132
  A,
129
- OAuthCoordinatorError<E> | PersistenceConfigurationError,
133
+ E | OAuthUnavailable | PersistenceConfigurationError,
130
134
  Exclude<R, OAuthSignInPersistence> | Crypto.Crypto | LifecycleHooks | SqlClient.SqlClient
131
135
  > =>
132
- using(({ kernel, configuration, database }) =>
133
- kernel.target.coordinateTargetOAuthSignIn(
134
- database,
135
- options.mapping,
136
- configuration,
137
- (_transaction, services) =>
138
- Effect.provideService(body, OAuthSignInPersistence, services.oauthSignInPersistence),
139
- ),
136
+ coordinate(makeOAuthSignInServices(options.mapping), (services) =>
137
+ Effect.provideService(body, OAuthSignInPersistence, services.oauthSignInPersistence),
140
138
  );
141
139
 
142
- export const makeOAuthRegistrationIntentServices = <N>(
143
- mapping: OAuthRegistrationIntentMapping<Table, Table, Table, Table, Table, Table, Table, N>,
140
+ export const makeOAuthAccountsServices = <N>(
141
+ mapping: OAuthAccountsMapping<Table, Table, Table, Table, Table, N>,
144
142
  ): Effect.Effect<
145
- { readonly oauthRegistrationIntents: OAuthRegistrationIntents["Service"] },
143
+ { readonly oauthAccountsPersistence: OAuthAccountsPersistence["Service"] },
146
144
  OAuthUnavailable | PersistenceConfigurationError,
147
145
  Crypto.Crypto | LifecycleHooks | SqlClient.SqlClient
148
146
  > =>
149
- using(({ kernel, configuration }) =>
150
- kernel.target.makeTargetOAuthRegistrationIntentServices(mapping, configuration),
147
+ using(mapping, (tables, value) =>
148
+ makeNativeOAuthAccountsServices(tables, value as unknown as OAuthNativeAccountsMapping),
151
149
  );
152
150
 
153
- /** Run auth and application SQL in one adapter-owned transaction and commit journal. */
154
- export const coordinateOAuthRegistrationIntents = <N, A, E, R>(
155
- options: {
156
- readonly mapping: OAuthRegistrationIntentMapping<
157
- Table,
158
- Table,
159
- Table,
160
- Table,
161
- Table,
162
- Table,
163
- Table,
164
- N
165
- >;
166
- },
151
+ export const coordinateOAuthAccounts = <N, A, E, R>(
152
+ options: { readonly mapping: OAuthAccountsMapping<Table, Table, Table, Table, Table, N> },
167
153
  body: Effect.Effect<A, E, R>,
168
154
  ): Effect.Effect<
169
155
  A,
170
- OAuthCoordinatorError<E> | PersistenceConfigurationError,
171
- Exclude<R, OAuthRegistrationIntents> | Crypto.Crypto | LifecycleHooks | SqlClient.SqlClient
156
+ E | OAuthUnavailable | PersistenceConfigurationError,
157
+ Exclude<R, OAuthAccountsPersistence> | Crypto.Crypto | LifecycleHooks | SqlClient.SqlClient
172
158
  > =>
173
- using(({ kernel, configuration, database }) =>
174
- kernel.target.coordinateTargetOAuthRegistrationIntents(
175
- database,
176
- options.mapping,
177
- configuration,
178
- (_transaction, services) =>
179
- Effect.provideService(body, OAuthRegistrationIntents, services.oauthRegistrationIntents),
180
- ),
159
+ coordinate(makeOAuthAccountsServices(options.mapping), (services) =>
160
+ Effect.provideService(body, OAuthAccountsPersistence, services.oauthAccountsPersistence),
181
161
  );
182
162
 
183
- export const makeOAuthAccountsServices = <N>(
184
- mapping: OAuthAccountsMapping<Table, Table, Table, Table, Table, Table, Table, N>,
163
+ export const makeOAuthRegistrationIntentServices = <N>(
164
+ mapping: OAuthRegistrationIntentMapping<Table, Table, N>,
185
165
  ): Effect.Effect<
186
- { readonly oauthAccountsPersistence: OAuthAccountsPersistence["Service"] },
166
+ { readonly oauthRegistrationIntents: OAuthRegistrationIntents["Service"] },
187
167
  OAuthUnavailable | PersistenceConfigurationError,
188
168
  Crypto.Crypto | LifecycleHooks | SqlClient.SqlClient
189
169
  > =>
190
- using(({ kernel, configuration }) =>
191
- kernel.target.makeTargetOAuthAccountsServices(mapping, configuration),
170
+ using(mapping, (tables, value) =>
171
+ makeNativeOAuthRegistrationIntentServices(
172
+ tables,
173
+ value as unknown as OAuthNativeRegistrationIntentMapping,
174
+ ),
192
175
  );
193
176
 
194
- /** Run auth and application SQL in one adapter-owned transaction and commit journal. */
195
- export const coordinateOAuthAccounts = <N, A, E, R>(
196
- options: {
197
- readonly mapping: OAuthAccountsMapping<Table, Table, Table, Table, Table, Table, Table, N>;
198
- },
177
+ export const coordinateOAuthRegistrationIntents = <N, A, E, R>(
178
+ options: { readonly mapping: OAuthRegistrationIntentMapping<Table, Table, N> },
199
179
  body: Effect.Effect<A, E, R>,
200
180
  ): Effect.Effect<
201
181
  A,
202
- OAuthCoordinatorError<E> | PersistenceConfigurationError,
203
- Exclude<R, OAuthAccountsPersistence> | Crypto.Crypto | LifecycleHooks | SqlClient.SqlClient
182
+ E | OAuthUnavailable | PersistenceConfigurationError,
183
+ Exclude<R, OAuthRegistrationIntents> | Crypto.Crypto | LifecycleHooks | SqlClient.SqlClient
204
184
  > =>
205
- using(({ kernel, configuration, database }) =>
206
- kernel.target.coordinateTargetOAuthAccounts(
207
- database,
208
- options.mapping,
209
- configuration,
210
- (_transaction, services) =>
211
- Effect.provideService(body, OAuthAccountsPersistence, services.oauthAccountsPersistence),
212
- ),
185
+ coordinate(makeOAuthRegistrationIntentServices(options.mapping), (services) =>
186
+ Effect.provideService(body, OAuthRegistrationIntents, services.oauthRegistrationIntents),
213
187
  );
214
188
 
215
189
  export const makeOAuthConnectedServices = <N>(
216
- mapping: OAuthConnectedMapping<
217
- Table,
218
- Table,
219
- Table,
220
- Table,
221
- Table,
222
- Table,
223
- Table,
224
- Table,
225
- Table,
226
- Table,
227
- N,
228
- Table
229
- >,
190
+ mapping: OAuthConnectedMapping<Table, Table, Table, Table, Table, N, Table>,
230
191
  ): Effect.Effect<
231
192
  { readonly oauthConnectedPersistence: OAuthConnectedPersistence["Service"] },
232
193
  OAuthUnavailable | PersistenceConfigurationError,
233
194
  Crypto.Crypto | LifecycleHooks | SqlClient.SqlClient
234
195
  > =>
235
- using(({ kernel, configuration }) =>
236
- kernel.connectedTarget.makeTargetOAuthConnectedServices(mapping, configuration),
196
+ using(mapping, (tables, value) =>
197
+ makeNativeOAuthConnectedServices(tables, value as unknown as OAuthNativeConnectedMapping),
237
198
  );
238
199
 
239
- /** Run auth and application SQL in one adapter-owned transaction and commit journal. */
240
200
  export const coordinateOAuthConnected = <N, A, E, R>(
241
- options: {
242
- readonly mapping: OAuthConnectedMapping<
243
- Table,
244
- Table,
245
- Table,
246
- Table,
247
- Table,
248
- Table,
249
- Table,
250
- Table,
251
- Table,
252
- Table,
253
- N,
254
- Table
255
- >;
256
- },
201
+ options: { readonly mapping: OAuthConnectedMapping<Table, Table, Table, Table, Table, N, Table> },
257
202
  body: Effect.Effect<A, E, R>,
258
203
  ): Effect.Effect<
259
204
  A,
260
- OAuthCoordinatorError<E> | PersistenceConfigurationError,
205
+ E | OAuthUnavailable | PersistenceConfigurationError,
261
206
  Exclude<R, OAuthConnectedPersistence> | Crypto.Crypto | LifecycleHooks | SqlClient.SqlClient
262
207
  > =>
263
- using(({ kernel, configuration, database }) =>
264
- kernel.connectedTarget.coordinateTargetOAuthConnected(
265
- database,
266
- options.mapping,
267
- configuration,
268
- (_transaction, services) =>
269
- Effect.provideService(body, OAuthConnectedPersistence, services.oauthConnectedPersistence),
270
- ),
208
+ coordinate(makeOAuthConnectedServices(options.mapping), (services) =>
209
+ Effect.provideService(body, OAuthConnectedPersistence, services.oauthConnectedPersistence),
271
210
  );
272
211
 
273
212
  export const makeOAuthConnectedRevocationServices = <N>(
274
- mapping: OAuthConnectedRevocationMapping<Table, Table, Table, Table, Table, Table, Table, N>,
213
+ mapping: OAuthConnectedRevocationMapping<Table, Table, Table, N>,
275
214
  ): Effect.Effect<
276
215
  { readonly oauthConnectedRevocations: OAuthConnectedRevocations["Service"] },
277
216
  OAuthUnavailable | PersistenceConfigurationError,
278
217
  Crypto.Crypto | LifecycleHooks | SqlClient.SqlClient
279
218
  > =>
280
- using(({ kernel, configuration }) =>
281
- kernel.connectedTarget.makeTargetOAuthConnectedRevocationServices(mapping, configuration),
219
+ using(mapping, (tables, value) =>
220
+ makeNativeOAuthRevocationServices(tables, value as unknown as OAuthNativeRevocationMapping),
282
221
  );
283
222
 
284
- /** Run auth and application SQL in one adapter-owned transaction and commit journal. */
285
223
  export const coordinateOAuthConnectedRevocations = <N, A, E, R>(
286
- options: {
287
- readonly mapping: OAuthConnectedRevocationMapping<
288
- Table,
289
- Table,
290
- Table,
291
- Table,
292
- Table,
293
- Table,
294
- Table,
295
- N
296
- >;
297
- },
224
+ options: { readonly mapping: OAuthConnectedRevocationMapping<Table, Table, Table, N> },
298
225
  body: Effect.Effect<A, E, R>,
299
226
  ): Effect.Effect<
300
227
  A,
301
- OAuthCoordinatorError<E> | PersistenceConfigurationError,
228
+ E | OAuthUnavailable | PersistenceConfigurationError,
302
229
  Exclude<R, OAuthConnectedRevocations> | Crypto.Crypto | LifecycleHooks | SqlClient.SqlClient
303
230
  > =>
304
- using(({ kernel, configuration, database }) =>
305
- kernel.connectedTarget.coordinateTargetOAuthConnectedRevocations(
306
- database,
307
- options.mapping,
308
- configuration,
309
- (_transaction, services) =>
310
- Effect.provideService(body, OAuthConnectedRevocations, services.oauthConnectedRevocations),
311
- ),
231
+ coordinate(makeOAuthConnectedRevocationServices(options.mapping), (services) =>
232
+ Effect.provideService(body, OAuthConnectedRevocations, services.oauthConnectedRevocations),
312
233
  );
313
234
 
314
235
  export const makeOAuthRegistrationServices = <Registration, N>(
315
- mapping: OAuthRegistrationMapping<
316
- Registration,
317
- Table,
318
- Table,
319
- Table,
320
- Table,
321
- Table,
322
- Table,
323
- Table,
324
- N
325
- >,
236
+ mapping: OAuthRegistrationMapping<Registration, Table, Table, Table, Table, Table, N>,
326
237
  ): Effect.Effect<
327
238
  { readonly registrationAuthority: OAuthRegistrationAuthority<Registration> },
328
239
  OAuthUnavailable | PersistenceConfigurationError,
329
240
  Crypto.Crypto | LifecycleHooks | SqlClient.SqlClient
330
241
  > =>
331
- using(({ kernel, configuration }) =>
332
- kernel.target.makeTargetOAuthRegistrationServices<Registration>(mapping, configuration),
242
+ using(mapping, (tables, value) =>
243
+ makeNativeOAuthRegistrationServices(
244
+ tables,
245
+ value as unknown as OAuthNativeRegistrationMapping<Registration>,
246
+ ),
333
247
  );
334
248
 
335
249
  export const coordinateOAuthRegistration = <Id, Registration, N, A, E, R>(
@@ -341,8 +255,6 @@ export const coordinateOAuthRegistration = <Id, Registration, N, A, E, R>(
341
255
  Table,
342
256
  Table,
343
257
  Table,
344
- Table,
345
- Table,
346
258
  N
347
259
  >;
348
260
  readonly target: Context.Key<Id, OAuthRegistrationAuthority<Registration>>;
@@ -350,78 +262,23 @@ export const coordinateOAuthRegistration = <Id, Registration, N, A, E, R>(
350
262
  body: Effect.Effect<A, E, R>,
351
263
  ): Effect.Effect<
352
264
  A,
353
- OAuthCoordinatorError<E> | PersistenceConfigurationError,
265
+ E | OAuthUnavailable | PersistenceConfigurationError,
354
266
  Exclude<R, Id> | Crypto.Crypto | LifecycleHooks | SqlClient.SqlClient
355
267
  > =>
356
- using(({ kernel, configuration, database }) =>
357
- kernel.target.coordinateTargetOAuthRegistration<Registration, unknown, A, E, Exclude<R, Id>>(
358
- database,
359
- options.mapping,
360
- configuration,
361
- (_transaction, services) =>
362
- Effect.provideService(body, options.target, services.registrationAuthority),
363
- ),
268
+ coordinate(makeOAuthRegistrationServices(options.mapping), (services) =>
269
+ Effect.provideService(body, options.target, services.registrationAuthority),
364
270
  );
365
271
 
366
- /** Include these guards when login ownership may also hold retained grants. */
367
272
  export const oauthConnectedOwnershipReferences = <N>(
368
- mapping: OAuthConnectedMapping<
369
- Table,
370
- Table,
371
- Table,
372
- Table,
373
- Table,
374
- Table,
375
- Table,
376
- Table,
377
- Table,
378
- Table,
379
- N,
380
- Table
381
- >,
382
- dialect: "pg" | "sqlite",
383
- ) =>
384
- // The selected compiler supplies Fragment handles; domain values retain their codecs.
385
- kernels[dialect].connectedReference.oauthConnectedOwnershipReferences(mapping) as {
386
- readonly connectedReferenceGuards: ReadonlyArray<OAuthReferenceGuardDescriptor<N>>;
387
- readonly connectedReference: (input: {
388
- readonly identityKey: string;
389
- readonly subjectId: N;
390
- }) => Fragment;
391
- };
392
-
393
- export const {
394
- oauthAccountsPersistenceLayer,
395
- oauthSignInPersistenceLayer,
396
- oauthRegistrationIntentsLayer,
397
- oauthRegistrationAuthorityLayer,
398
- } = kernels.sqlite.target;
273
+ mapping: OAuthConnectedMapping<Table, Table, Table, Table, Table, N, Table>,
274
+ ) => ({
275
+ connectedReference: (input: { readonly identityKey: string; readonly subjectId: N }) => {
276
+ const g = mapping.grant;
277
+ const grant = sql`exists(select 1 from ${g.table} where ${g.table.columns[g.identityKey]} = ${input.identityKey} and ${g.table.columns[g.subjectId]} = ${input.subjectId})`;
399
278
 
400
- export const { oauthConnectedPersistenceLayer, oauthConnectedRevocationsLayer } =
401
- kernels.sqlite.connectedTarget;
279
+ if (mapping.revocation.mode === "unsupported") return grant;
280
+ const j = mapping.revocation.job;
402
281
 
403
- /** Shared session issuance must validate the same subject and credential authority
404
- * as OAuth. Supply this service when it is not already provided by session storage. */
405
- export const makeAuthenticationAuthorityServices = <Claims, N>(
406
- mapping: AuthorityMapping<Claims, SqlTableModel, SqlTableModel, SqlTableModel, SqlTableModel, N>,
407
- ): Effect.Effect<
408
- { readonly authenticationAuthority: AuthenticationAuthority["Service"] },
409
- SessionUnavailable | PersistenceConfigurationError,
410
- LifecycleHooks | SqlClient.SqlClient
411
- > =>
412
- using(({ database, configuration }) =>
413
- makeSessionKernel(operations, (client) => makeNativeSqlTables(client))
414
- .makeSqlAuthenticationAuthority(mapping, {
415
- mode: "interactive",
416
- locking: configuration.locking,
417
- standaloneGuard: requireStandalone(
418
- () => SessionUnavailable.make({}),
419
- database.$client.transactionService,
420
- ),
421
- })
422
- .pipe(
423
- // Both kernels capture the same raw SQL query-builder handle and client.
424
- Effect.provideService(CurrentSessionSql, database as unknown as SessionSqlDatabase),
425
- Effect.map((authenticationAuthority) => ({ authenticationAuthority })),
426
- ),
427
- );
282
+ return sql`(${grant}) or exists(select 1 from ${j.table} where ${j.table.columns[j.identityKey]} = ${input.identityKey} and ${j.table.columns[j.subjectId]} = ${input.subjectId})`;
283
+ },
284
+ });
package/src/index.ts CHANGED
@@ -4,6 +4,6 @@ export { OAuthProxyPersistence } from "./internal/oauth-proxy";
4
4
  export { BrowserLoginPersistence } from "./internal/browser-login";
5
5
  export { PersistenceConfigurationError } from "./internal/configuration";
6
6
  export { PersistenceMappingError } from "./internal/mapping-error";
7
- export { StorageColumn, StorageTable } from "./internal/storage-tables";
7
+ export { StorageTable } from "./internal/storage-tables";
8
8
 
9
9
  export * as OAuthPersistence from "./OAuthPersistence.ts";