@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,598 +0,0 @@
1
- import { type PreparedCommit, LifecycleHooks } from "@yielded/auth/Hooks";
2
- /* oxlint-disable no-explicit-any -- existing mapped-row bridge; public adapters preserve table, ID, and Effect types. */
3
- import {
4
- PasskeyConfigurationError,
5
- type PasskeyUnavailable,
6
- type PasskeyCredentials,
7
- type PasskeyEnrollmentContext,
8
- type PasskeyPersistence,
9
- type PreparePasskeyCommit,
10
- PasskeyAccess,
11
- PasskeyAssertionVerified,
12
- PasskeyCeremony,
13
- PasskeyClaim,
14
- PasskeyClaimDecision,
15
- PasskeyCleanupResult,
16
- PasskeyCredential,
17
- PasskeyEnrollmentSnapshot,
18
- PasskeyEvidence,
19
- PasskeyInstant,
20
- PasskeyIssueDecision,
21
- PasskeyModuleId,
22
- PasskeyProfile,
23
- PasskeyProtocolCredentialId,
24
- PasskeySettlement,
25
- PasskeyMethodPolicy,
26
- snapshotPasskeySync,
27
- } from "@yielded/auth/Passkey";
28
- import { SubjectId } from "@yielded/auth/Schema";
29
- import { type Crypto, Effect, Schema } from "effect";
30
- import type { Statement } from "effect/sql/Statement";
31
-
32
- import type { PersistenceMappingError } from "../mapping-error";
33
- import type {
34
- PasskeyCredentialServices,
35
- PasskeyEnrollmentContextServices,
36
- PasskeyMappingSource,
37
- PasskeyPersistenceServices,
38
- } from "../models/passkey-model";
39
- import type { PasskeyRegistrationCeremonyServices } from "../models/passkey-registration-ceremony-model";
40
- import type { QueryOperations } from "../query-operations";
41
- import type {
42
- TransactionCoordinatorError,
43
- TransactionExecution,
44
- TransactionTargetConfiguration,
45
- makeTransactionExecutionKernel,
46
- } from "../transaction-execution-kernel";
47
- import type { NativeDatabase } from "../transaction-kernel";
48
- import type { makePasskeyCredentialsKernel } from "./credentials";
49
- import type { makePasskeyFlowKernel } from "./flow";
50
- import type { makePasskeyRegistrationCeremonyKernel } from "./registration-ceremony";
51
- import { CurrentPasskeyTransaction } from "./state";
52
- import type { makePasskeyStateKernel } from "./state";
53
-
54
- export type PasskeyTargetConfiguration = TransactionTargetConfiguration<PasskeyUnavailable>;
55
-
56
- export type PasskeyCoordinatorError<E> =
57
- | TransactionCoordinatorError<E, PasskeyUnavailable>
58
- | PasskeyConfigurationError
59
- | PersistenceMappingError;
60
-
61
- export type PasskeyExecution = TransactionExecution<
62
- PasskeyUnavailable,
63
- CurrentPasskeyTransaction,
64
- never
65
- >;
66
-
67
- export const makePasskeyTargetKernel = (
68
- credentials: Pick<
69
- ReturnType<typeof makePasskeyCredentialsKernel>,
70
- "captureEnrollmentContext" | "lookupCredential"
71
- >,
72
- flow: Pick<
73
- ReturnType<typeof makePasskeyFlowKernel>,
74
- | "assertionPurposes"
75
- | "claimAssertion"
76
- | "cleanupCeremonies"
77
- | "contextAssertion"
78
- | "issueAssertion"
79
- | "settleAssertion"
80
- >,
81
- registrationCeremony: Pick<
82
- ReturnType<typeof makePasskeyRegistrationCeremonyKernel>,
83
- "claimRegistration" | "contextRegistration" | "settleRegistration"
84
- >,
85
- state: Pick<
86
- ReturnType<typeof makePasskeyStateKernel>,
87
- "captureMapping" | "invariant" | "nonce" | "unavailable" | "validateMapping"
88
- >,
89
- execution: Pick<
90
- ReturnType<typeof makeTransactionExecutionKernel>,
91
- | "coordinateTransactionOwner"
92
- | "makeTransactionExecution"
93
- | "sqlClientTransactionStandaloneGuard"
94
- >,
95
- operations: QueryOperations,
96
- ) => {
97
- const { captureEnrollmentContext, lookupCredential } = credentials;
98
-
99
- const {
100
- assertionPurposes,
101
- claimAssertion,
102
- cleanupCeremonies,
103
- contextAssertion,
104
- issueAssertion,
105
- settleAssertion,
106
- } = flow;
107
-
108
- const { claimRegistration, contextRegistration, settleRegistration } = registrationCeremony;
109
- const { captureMapping, nonce, unavailable, validateMapping } = state;
110
- const invariant: (value: unknown) => asserts value = state.invariant;
111
-
112
- const {
113
- coordinateTransactionOwner,
114
- makeTransactionExecution,
115
- sqlClientTransactionStandaloneGuard,
116
- } = execution;
117
-
118
- const sqlClientPasskeyStandaloneGuard = (
119
- transactionService: Parameters<typeof sqlClientTransactionStandaloneGuard>[1],
120
- ) => sqlClientTransactionStandaloneGuard(unavailable, transactionService);
121
-
122
- const emptyHooks: LifecycleHooks["Service"] = {
123
- before: () => Effect.void,
124
- after: () => Effect.succeed([]),
125
- };
126
-
127
- const makePasskeyExecution = Effect.fnUntraced(function* (
128
- configuration: PasskeyTargetConfiguration,
129
- mapping: unknown,
130
- ): Effect.fn.Return<
131
- PasskeyExecution,
132
- PasskeyConfigurationError,
133
- LifecycleHooks | NativeDatabase | Crypto.Crypto
134
- > {
135
- const hooks = yield* LifecycleHooks;
136
-
137
- yield* (operations.validateStorage?.(mapping) ?? Effect.void).pipe(
138
- Effect.mapError(() => PasskeyConfigurationError.make({})),
139
- );
140
-
141
- const execution = yield* makeTransactionExecution(
142
- CurrentPasskeyTransaction,
143
- configuration,
144
- unavailable,
145
- nonce,
146
- );
147
-
148
- return {
149
- ...execution,
150
- run: (operation, mutation) =>
151
- execution.run(operation, mutation).pipe(Effect.provideService(LifecycleHooks, hooks)),
152
- };
153
- });
154
-
155
- const issueInput = Schema.Struct({ ceremony: PasskeyCeremony, policy: PasskeyMethodPolicy });
156
-
157
- const claimInput = Schema.Struct({
158
- access: PasskeyAccess,
159
- policy: PasskeyMethodPolicy,
160
- ceremony: PasskeyCeremony,
161
- claimId: PasskeyClaim.fields.claimId,
162
- credential: Schema.optionalKey(PasskeyCredential),
163
- });
164
-
165
- const settleInput = Schema.Struct({
166
- claim: PasskeyClaim,
167
- nowMillis: PasskeyInstant,
168
- outcome: Schema.Union([
169
- Schema.TaggedStruct("Rejected", {}),
170
- Schema.TaggedStruct("Ambiguous", {}),
171
- Schema.TaggedStruct("Assertion", {
172
- credential: PasskeyCredential,
173
- assertion: PasskeyAssertionVerified,
174
- evidence: PasskeyEvidence,
175
- }),
176
- ]),
177
- });
178
-
179
- const cleanupInput = Schema.Struct({
180
- moduleId: PasskeyModuleId,
181
- nowMillis: PasskeyInstant,
182
- limit: Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 1000 })),
183
- });
184
-
185
- const lookupInput = Schema.Struct({
186
- rpId: PasskeyProfile.fields.rpId,
187
- protocolCredentialId: PasskeyProtocolCredentialId,
188
- });
189
-
190
- const contextInput = Schema.Struct({
191
- moduleId: PasskeyModuleId,
192
- rpId: PasskeyProfile.fields.rpId,
193
- subjectId: SubjectId,
194
- });
195
-
196
- const inputs = {
197
- issue: issueInput,
198
- context: PasskeyAccess,
199
- claim: claimInput,
200
- settle: settleInput,
201
- cleanup: cleanupInput,
202
- };
203
-
204
- const capturedService = <S>(
205
- service: S,
206
- schemas: Record<string, Schema.Codec<any, any, never, never>>,
207
- execute: PasskeyExecution,
208
- ): S =>
209
- Object.freeze(
210
- Object.fromEntries(
211
- Object.entries(
212
- service as Record<string, (...args: any[]) => Effect.Effect<any, PasskeyUnavailable>>,
213
- ).map(([name, method]) => [
214
- name,
215
- (original: any, prepare?: any) =>
216
- Effect.suspend(() => {
217
- invariant(execute.active());
218
- const input = snapshotPasskeySync(schemas[name]!, original);
219
-
220
- return method(input, prepare);
221
- }).pipe(
222
- Effect.onExit((exit) =>
223
- Effect.sync(() => {
224
- if (exit._tag === "Failure") execute.poison();
225
- }),
226
- ),
227
- Effect.catchDefect(() => Effect.fail(unavailable())),
228
- ),
229
- ]),
230
- ),
231
- ) as S;
232
-
233
- const prepareValue = <Value, A>(
234
- value: Value,
235
- prepare: PreparePasskeyCommit<Value, A>,
236
- ): Effect.Effect<PreparedCommit<A>, never, CurrentPasskeyTransaction> =>
237
- Effect.flatMap(CurrentPasskeyTransaction, (owner) =>
238
- Effect.sync(() => {
239
- owner.guards.push(owner.journal.prepare(undefined));
240
- const receipt = prepare(value, owner.journal);
241
-
242
- invariant(
243
- receipt !== null &&
244
- typeof receipt === "object" &&
245
- receipt._tag === "PreparedCommit" &&
246
- typeof receipt.read === "object" &&
247
- Effect.isEffect(receipt.read),
248
- );
249
- owner.guards.push(receipt);
250
-
251
- return receipt;
252
- }),
253
- );
254
-
255
- const requirePurpose = (purpose: string, registration: boolean, enrollment = false) =>
256
- invariant(
257
- enrollment
258
- ? purpose === "enrollment"
259
- : registration
260
- ? purpose === "registration"
261
- : assertionPurposes.some((supported) => supported === purpose),
262
- );
263
-
264
- /** Context is advisory. Retain observations and final predicates without taking
265
- * later-ranked locks before a subsequent mutation acquires its full lock set. */
266
- const observationalContext = <A, E, R>(operation: Effect.Effect<A, E, R>) =>
267
- Effect.flatMap(CurrentPasskeyTransaction, (owner) =>
268
- operation.pipe(
269
- Effect.provideService(CurrentPasskeyTransaction, {
270
- ...owner,
271
- read: (table, where, options) => owner.read(table, where, { ...options, lock: false }),
272
- }),
273
- ),
274
- );
275
-
276
- const makePasskeyPersistence = (
277
- mapping: any,
278
- execute: PasskeyExecution,
279
- configuration: PasskeyTargetConfiguration,
280
- registration = false,
281
- enrollment = false,
282
- ): PasskeyPersistence["Service"] =>
283
- capturedService<PasskeyPersistence["Service"]>(
284
- {
285
- issue: (input, prepare) =>
286
- Effect.suspend(() => {
287
- invariant(!registration && !enrollment);
288
- requirePurpose(input.ceremony.purpose, false);
289
-
290
- return execute.run(
291
- Effect.gen(function* () {
292
- const value = yield* issueAssertion(mapping, input.ceremony, input.policy);
293
-
294
- return yield* prepareValue(
295
- snapshotPasskeySync(PasskeyIssueDecision, value),
296
- prepare,
297
- );
298
- }),
299
- );
300
- }),
301
- context: (access) =>
302
- Effect.suspend(() => {
303
- requirePurpose(access.purpose, registration, enrollment);
304
-
305
- return execute.run(
306
- observationalContext(
307
- registration
308
- ? contextRegistration(mapping, access)
309
- : contextAssertion(mapping, access),
310
- ),
311
- false,
312
- );
313
- }),
314
- claim: (input, prepare) =>
315
- Effect.suspend(() => {
316
- requirePurpose(input.access.purpose, registration, enrollment);
317
- requirePurpose(input.ceremony.purpose, registration, enrollment);
318
- invariant((!registration && !enrollment) || input.credential === undefined);
319
-
320
- return execute.run(
321
- Effect.gen(function* () {
322
- const value = yield* registration
323
- ? claimRegistration(mapping, input)
324
- : claimAssertion(mapping, input);
325
-
326
- return yield* prepareValue(
327
- snapshotPasskeySync(PasskeyClaimDecision, value),
328
- prepare,
329
- );
330
- }),
331
- );
332
- }),
333
- settle: (input, prepare) =>
334
- Effect.suspend(() => {
335
- requirePurpose(input.claim.ceremony.purpose, registration, enrollment);
336
- invariant((!registration && !enrollment) || input.outcome._tag !== "Assertion");
337
-
338
- return execute.run(
339
- Effect.gen(function* () {
340
- const value = yield* registration
341
- ? settleRegistration(
342
- mapping,
343
- input.claim,
344
- input.outcome._tag as "Rejected" | "Ambiguous",
345
- )
346
- : settleAssertion(mapping, input.claim, input.outcome, configuration.dialect);
347
-
348
- return yield* prepareValue(snapshotPasskeySync(PasskeySettlement, value), prepare);
349
- }),
350
- );
351
- }),
352
- cleanup: (input, prepare) =>
353
- execute.run(
354
- Effect.gen(function* () {
355
- const value = yield* cleanupCeremonies(
356
- mapping,
357
- input,
358
- registration ? ["registration"] : enrollment ? ["enrollment"] : assertionPurposes,
359
- );
360
-
361
- return yield* prepareValue(snapshotPasskeySync(PasskeyCleanupResult, value), prepare);
362
- }),
363
- ),
364
- },
365
- inputs,
366
- execute,
367
- );
368
-
369
- const credentialService = (
370
- mapping: any,
371
- execute: PasskeyExecution,
372
- ): PasskeyCredentials["Service"] =>
373
- capturedService<PasskeyCredentials["Service"]>(
374
- {
375
- lookup: (input) =>
376
- execute.run(lookupCredential(mapping, input.rpId, input.protocolCredentialId), false),
377
- },
378
- { lookup: lookupInput },
379
- execute,
380
- );
381
-
382
- const enrollmentService = (
383
- mapping: any,
384
- execute: PasskeyExecution,
385
- ): PasskeyEnrollmentContext["Service"] =>
386
- capturedService<PasskeyEnrollmentContext["Service"]>(
387
- {
388
- capture: (input) =>
389
- execute.run(
390
- Effect.map(captureEnrollmentContext(mapping, input), (value) =>
391
- value === undefined
392
- ? undefined
393
- : snapshotPasskeySync(PasskeyEnrollmentSnapshot, value),
394
- ),
395
- false,
396
- ),
397
- },
398
- { capture: contextInput },
399
- execute,
400
- );
401
-
402
- const registrationServices = (
403
- mapping: any,
404
- execute: PasskeyExecution,
405
- configuration: PasskeyTargetConfiguration,
406
- ): PasskeyRegistrationCeremonyServices => ({
407
- capabilities: Object.freeze({
408
- purposes: Object.freeze(["registration"] as const),
409
- issue: "registration-authority",
410
- assertionSettlement: false,
411
- }),
412
- passkeyPersistence: makePasskeyPersistence(mapping, execute, configuration, true),
413
- });
414
-
415
- const capturedMapping = <M, RSetup>(
416
- source: PasskeyMappingSource<M, RSetup>,
417
- kind: "read" | "context" | "assertion" | "registration",
418
- configuration: PasskeyTargetConfiguration,
419
- ): Effect.Effect<M, PasskeyConfigurationError | PersistenceMappingError, RSetup> =>
420
- Effect.flatMap(Effect.isEffect(source) ? source : Effect.succeed(source), (mapping) =>
421
- Effect.try({
422
- try: () => {
423
- const captured = captureMapping(mapping);
424
-
425
- validateMapping(captured, kind);
426
- if (configuration.mode === "batch") invariant((captured as any).d1?.primary === true);
427
-
428
- return captured;
429
- },
430
- catch: () => PasskeyConfigurationError.make({}),
431
- }),
432
- );
433
-
434
- const makeTargetPasskeyCredentials = <M, RSetup>(
435
- source: PasskeyMappingSource<M, RSetup>,
436
- configuration: PasskeyTargetConfiguration,
437
- ): Effect.Effect<
438
- PasskeyCredentialServices,
439
- PasskeyConfigurationError | PersistenceMappingError,
440
- RSetup | NativeDatabase | Crypto.Crypto
441
- > =>
442
- Effect.gen(function* () {
443
- const mapping = yield* capturedMapping(source, "read", configuration);
444
-
445
- const execution = yield* makePasskeyExecution(configuration, mapping).pipe(
446
- Effect.provideService(LifecycleHooks, emptyHooks),
447
- );
448
-
449
- return { passkeyCredentials: credentialService(mapping, execution) };
450
- });
451
-
452
- const makeTargetPasskeyEnrollmentContext = <M, RSetup>(
453
- source: PasskeyMappingSource<M, RSetup>,
454
- configuration: PasskeyTargetConfiguration,
455
- ): Effect.Effect<
456
- PasskeyEnrollmentContextServices,
457
- PasskeyConfigurationError | PersistenceMappingError,
458
- RSetup | NativeDatabase | Crypto.Crypto
459
- > =>
460
- Effect.gen(function* () {
461
- const mapping = yield* capturedMapping(source, "context", configuration);
462
-
463
- const execution = yield* makePasskeyExecution(configuration, mapping).pipe(
464
- Effect.provideService(LifecycleHooks, emptyHooks),
465
- );
466
-
467
- return { passkeyEnrollmentContext: enrollmentService(mapping, execution) };
468
- });
469
-
470
- const makeTargetPasskeyPersistence = <M, RSetup>(
471
- source: PasskeyMappingSource<M, RSetup>,
472
- configuration: PasskeyTargetConfiguration,
473
- ): Effect.Effect<
474
- PasskeyPersistenceServices,
475
- PasskeyConfigurationError | PersistenceMappingError,
476
- RSetup | LifecycleHooks | NativeDatabase | Crypto.Crypto
477
- > =>
478
- Effect.gen(function* () {
479
- const mapping = yield* capturedMapping(source, "assertion", configuration);
480
- const execution = yield* makePasskeyExecution(configuration, mapping);
481
-
482
- return {
483
- passkeyPersistence: makePasskeyPersistence(mapping, execution, configuration),
484
- };
485
- });
486
-
487
- const makeTargetPasskeyRegistration = <M, RSetup>(
488
- source: PasskeyMappingSource<M, RSetup>,
489
- configuration: PasskeyTargetConfiguration,
490
- ): Effect.Effect<
491
- PasskeyRegistrationCeremonyServices,
492
- PasskeyConfigurationError | PersistenceMappingError,
493
- RSetup | LifecycleHooks | NativeDatabase | Crypto.Crypto
494
- > =>
495
- Effect.gen(function* () {
496
- const mapping = yield* capturedMapping(source, "registration", configuration);
497
- const execution = yield* makePasskeyExecution(configuration, mapping);
498
-
499
- return registrationServices(mapping, execution, configuration);
500
- });
501
-
502
- const coordinateTargetPasskey = <M, RSetup, Transaction, A, E, R>(
503
- database: any,
504
- source: PasskeyMappingSource<M, RSetup>,
505
- configuration: PasskeyTargetConfiguration,
506
- owner: (
507
- transaction: Transaction,
508
- services: PasskeyPersistenceServices,
509
- append: (statement: Statement<unknown>) => void,
510
- ) => Effect.Effect<A, E, R>,
511
- ): Effect.Effect<
512
- A,
513
- PasskeyCoordinatorError<E>,
514
- R | RSetup | LifecycleHooks | NativeDatabase | Crypto.Crypto
515
- > =>
516
- Effect.flatMap(capturedMapping(source, "assertion", configuration), (mapping) =>
517
- Effect.flatMap(LifecycleHooks, (hooks) =>
518
- coordinateTransactionOwner(
519
- database,
520
- CurrentPasskeyTransaction,
521
- configuration,
522
- operations.validateStorage?.(mapping) ?? Effect.void,
523
- unavailable,
524
- nonce,
525
- (execution) => ({
526
- passkeyPersistence: makePasskeyPersistence(
527
- mapping,
528
- {
529
- ...execution,
530
- run: (operation, mutation) =>
531
- execution
532
- .run(operation, mutation)
533
- .pipe(Effect.provideService(LifecycleHooks, hooks)),
534
- },
535
- configuration,
536
- ),
537
- }),
538
- owner,
539
- ).pipe(Effect.provideService(LifecycleHooks, hooks)),
540
- ),
541
- );
542
-
543
- const coordinateTargetPasskeyRegistration = <M, RSetup, Transaction, A, E, R>(
544
- database: any,
545
- source: PasskeyMappingSource<M, RSetup>,
546
- configuration: PasskeyTargetConfiguration,
547
- owner: (
548
- transaction: Transaction,
549
- services: PasskeyRegistrationCeremonyServices,
550
- append: (statement: Statement<unknown>) => void,
551
- ) => Effect.Effect<A, E, R>,
552
- ): Effect.Effect<
553
- A,
554
- PasskeyCoordinatorError<E>,
555
- R | RSetup | LifecycleHooks | NativeDatabase | Crypto.Crypto
556
- > =>
557
- Effect.flatMap(capturedMapping(source, "registration", configuration), (mapping) =>
558
- Effect.flatMap(LifecycleHooks, (hooks) =>
559
- coordinateTransactionOwner(
560
- database,
561
- CurrentPasskeyTransaction,
562
- configuration,
563
- operations.validateStorage?.(mapping) ?? Effect.void,
564
- unavailable,
565
- nonce,
566
- (execution) =>
567
- registrationServices(
568
- mapping,
569
- {
570
- ...execution,
571
- run: (operation, mutation) =>
572
- execution
573
- .run(operation, mutation)
574
- .pipe(Effect.provideService(LifecycleHooks, hooks)),
575
- },
576
- configuration,
577
- ),
578
- owner,
579
- ).pipe(Effect.provideService(LifecycleHooks, hooks)),
580
- ),
581
- );
582
-
583
- return {
584
- sqlClientPasskeyStandaloneGuard,
585
- makePasskeyExecution,
586
- capturedService,
587
- prepareValue,
588
- observationalContext,
589
- makePasskeyPersistence,
590
- capturedMapping,
591
- makeTargetPasskeyCredentials,
592
- makeTargetPasskeyEnrollmentContext,
593
- makeTargetPasskeyPersistence,
594
- makeTargetPasskeyRegistration,
595
- coordinateTargetPasskey,
596
- coordinateTargetPasskeyRegistration,
597
- };
598
- };