@effect-auth/core 0.1.0-alpha.16 → 0.1.0-alpha.18

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 (607) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +308 -133
  3. package/dist/AbuseProtection.d.ts +100 -0
  4. package/dist/AbuseProtection.d.ts.map +1 -0
  5. package/dist/AbuseProtection.js +71 -0
  6. package/dist/AbuseProtection.js.map +1 -0
  7. package/dist/AccessGrant.d.ts +344 -0
  8. package/dist/AccessGrant.d.ts.map +1 -0
  9. package/dist/AccessGrant.js +687 -0
  10. package/dist/AccessGrant.js.map +1 -0
  11. package/dist/ApiKey.d.ts +0 -12
  12. package/dist/ApiKey.d.ts.map +1 -1
  13. package/dist/ApiKey.js +36 -27
  14. package/dist/ApiKey.js.map +1 -1
  15. package/dist/Assurance.d.ts +415 -0
  16. package/dist/Assurance.d.ts.map +1 -0
  17. package/dist/Assurance.js +764 -0
  18. package/dist/Assurance.js.map +1 -0
  19. package/dist/AtomicPlanExecutor.d.ts +28 -0
  20. package/dist/AtomicPlanExecutor.d.ts.map +1 -0
  21. package/dist/AtomicPlanExecutor.js +5 -0
  22. package/dist/AtomicPlanExecutor.js.map +1 -0
  23. package/dist/AuditLog.d.ts +2314 -52
  24. package/dist/AuditLog.d.ts.map +1 -1
  25. package/dist/AuditLog.js +511 -33
  26. package/dist/AuditLog.js.map +1 -1
  27. package/dist/AuthFlow.d.ts +128 -38
  28. package/dist/AuthFlow.d.ts.map +1 -1
  29. package/dist/AuthFlow.js +611 -263
  30. package/dist/AuthFlow.js.map +1 -1
  31. package/dist/AuthRateLimit.d.ts +96 -0
  32. package/dist/AuthRateLimit.d.ts.map +1 -0
  33. package/dist/AuthRateLimit.js +212 -0
  34. package/dist/AuthRateLimit.js.map +1 -0
  35. package/dist/Challenge.d.ts +0 -3
  36. package/dist/Challenge.d.ts.map +1 -1
  37. package/dist/Challenge.js +1 -4
  38. package/dist/Challenge.js.map +1 -1
  39. package/dist/Client.d.ts +205 -10
  40. package/dist/Client.d.ts.map +1 -1
  41. package/dist/Client.js +397 -16
  42. package/dist/Client.js.map +1 -1
  43. package/dist/CloudflareTurnstile.d.ts +28 -0
  44. package/dist/CloudflareTurnstile.d.ts.map +1 -0
  45. package/dist/CloudflareTurnstile.js +205 -0
  46. package/dist/CloudflareTurnstile.js.map +1 -0
  47. package/dist/Crypto.d.ts +0 -3
  48. package/dist/Crypto.d.ts.map +1 -1
  49. package/dist/Crypto.js +1 -4
  50. package/dist/Crypto.js.map +1 -1
  51. package/dist/DelegatedAccessStorageMigrations.d.ts +7 -0
  52. package/dist/DelegatedAccessStorageMigrations.d.ts.map +1 -0
  53. package/dist/DelegatedAccessStorageMigrations.js +159 -0
  54. package/dist/DelegatedAccessStorageMigrations.js.map +1 -0
  55. package/dist/DisposableEmailDomains.d.ts +19 -0
  56. package/dist/DisposableEmailDomains.d.ts.map +1 -0
  57. package/dist/DisposableEmailDomains.js +85 -0
  58. package/dist/DisposableEmailDomains.js.map +1 -0
  59. package/dist/DomainVerification.d.ts +0 -9
  60. package/dist/DomainVerification.d.ts.map +1 -1
  61. package/dist/DomainVerification.js +36 -22
  62. package/dist/DomainVerification.js.map +1 -1
  63. package/dist/DrizzleBunSqliteStorage.d.ts +18 -0
  64. package/dist/DrizzleBunSqliteStorage.d.ts.map +1 -0
  65. package/dist/DrizzleBunSqliteStorage.js +11 -0
  66. package/dist/DrizzleBunSqliteStorage.js.map +1 -0
  67. package/dist/DrizzleD1SqliteStorage.d.ts +4 -4
  68. package/dist/DrizzleD1SqliteStorage.d.ts.map +1 -1
  69. package/dist/DrizzleD1SqliteStorage.js +5 -5
  70. package/dist/DrizzleD1SqliteStorage.js.map +1 -1
  71. package/dist/DrizzleDurableObjectSqliteStorage.d.ts +19 -0
  72. package/dist/DrizzleDurableObjectSqliteStorage.d.ts.map +1 -0
  73. package/dist/DrizzleDurableObjectSqliteStorage.js +14 -0
  74. package/dist/DrizzleDurableObjectSqliteStorage.js.map +1 -0
  75. package/dist/DrizzleEffectSqliteStorage.d.ts +13 -4
  76. package/dist/DrizzleEffectSqliteStorage.d.ts.map +1 -1
  77. package/dist/DrizzleEffectSqliteStorage.js +71 -4
  78. package/dist/DrizzleEffectSqliteStorage.js.map +1 -1
  79. package/dist/DrizzleNodeSqliteStorage.d.ts +18 -0
  80. package/dist/DrizzleNodeSqliteStorage.d.ts.map +1 -0
  81. package/dist/DrizzleNodeSqliteStorage.js +11 -0
  82. package/dist/DrizzleNodeSqliteStorage.js.map +1 -0
  83. package/dist/DrizzleWasmSqliteStorage.d.ts +23 -0
  84. package/dist/DrizzleWasmSqliteStorage.d.ts.map +1 -0
  85. package/dist/DrizzleWasmSqliteStorage.js +15 -0
  86. package/dist/DrizzleWasmSqliteStorage.js.map +1 -0
  87. package/dist/EffectQbPostgresDelegatedAccessStorage.d.ts +34 -0
  88. package/dist/EffectQbPostgresDelegatedAccessStorage.d.ts.map +1 -0
  89. package/dist/EffectQbPostgresDelegatedAccessStorage.js +499 -0
  90. package/dist/EffectQbPostgresDelegatedAccessStorage.js.map +1 -0
  91. package/dist/EffectQbPostgresStorage.d.ts +171 -0
  92. package/dist/EffectQbPostgresStorage.d.ts.map +1 -0
  93. package/dist/EffectQbPostgresStorage.js +4280 -0
  94. package/dist/EffectQbPostgresStorage.js.map +1 -0
  95. package/dist/EffectQbSqliteDelegatedAccessStorage.d.ts +112 -0
  96. package/dist/EffectQbSqliteDelegatedAccessStorage.d.ts.map +1 -0
  97. package/dist/EffectQbSqliteDelegatedAccessStorage.js +602 -0
  98. package/dist/EffectQbSqliteDelegatedAccessStorage.js.map +1 -0
  99. package/dist/EffectQbSqliteStorage.d.ts +181 -23
  100. package/dist/EffectQbSqliteStorage.d.ts.map +1 -1
  101. package/dist/EffectQbSqliteStorage.js +1728 -135
  102. package/dist/EffectQbSqliteStorage.js.map +1 -1
  103. package/dist/EmailAuth.d.ts +65 -0
  104. package/dist/EmailAuth.d.ts.map +1 -0
  105. package/dist/EmailAuth.js +171 -0
  106. package/dist/EmailAuth.js.map +1 -0
  107. package/dist/EmailIdentityAuth.d.ts +30 -0
  108. package/dist/EmailIdentityAuth.d.ts.map +1 -0
  109. package/dist/EmailIdentityAuth.js +142 -0
  110. package/dist/EmailIdentityAuth.js.map +1 -0
  111. package/dist/EmailOtp.d.ts +10 -11
  112. package/dist/EmailOtp.d.ts.map +1 -1
  113. package/dist/EmailOtp.js +44 -81
  114. package/dist/EmailOtp.js.map +1 -1
  115. package/dist/EmailRisk.d.ts +48 -0
  116. package/dist/EmailRisk.d.ts.map +1 -0
  117. package/dist/EmailRisk.js +33 -0
  118. package/dist/EmailRisk.js.map +1 -0
  119. package/dist/EmailVerification.d.ts +10 -16
  120. package/dist/EmailVerification.d.ts.map +1 -1
  121. package/dist/EmailVerification.js +85 -42
  122. package/dist/EmailVerification.js.map +1 -1
  123. package/dist/Guard.d.ts +11 -0
  124. package/dist/Guard.d.ts.map +1 -0
  125. package/dist/Guard.js +11 -0
  126. package/dist/Guard.js.map +1 -0
  127. package/dist/HibpPwnedPasswords.d.ts +56 -0
  128. package/dist/HibpPwnedPasswords.d.ts.map +1 -0
  129. package/dist/HibpPwnedPasswords.js +232 -0
  130. package/dist/HibpPwnedPasswords.js.map +1 -0
  131. package/dist/HttpApi/AdminPermissionDefinition.d.ts +4 -0
  132. package/dist/HttpApi/AdminPermissionDefinition.d.ts.map +1 -0
  133. package/dist/HttpApi/AdminPermissionDefinition.js +4 -0
  134. package/dist/HttpApi/AdminPermissionDefinition.js.map +1 -0
  135. package/dist/HttpApi/AdminSecurityTimeline.d.ts +4 -0
  136. package/dist/HttpApi/AdminSecurityTimeline.d.ts.map +1 -0
  137. package/dist/HttpApi/AdminSecurityTimeline.js +4 -0
  138. package/dist/HttpApi/AdminSecurityTimeline.js.map +1 -0
  139. package/dist/HttpApi/AdminSession.d.ts +4 -0
  140. package/dist/HttpApi/AdminSession.d.ts.map +1 -0
  141. package/dist/HttpApi/AdminSession.js +4 -0
  142. package/dist/HttpApi/AdminSession.js.map +1 -0
  143. package/dist/HttpApi/AdminTrustedDevice.d.ts +4 -0
  144. package/dist/HttpApi/AdminTrustedDevice.d.ts.map +1 -0
  145. package/dist/HttpApi/AdminTrustedDevice.js +4 -0
  146. package/dist/HttpApi/AdminTrustedDevice.js.map +1 -0
  147. package/dist/HttpApi/Api.d.ts +879 -877
  148. package/dist/HttpApi/Api.d.ts.map +1 -1
  149. package/dist/HttpApi/Api.js +2160 -896
  150. package/dist/HttpApi/Api.js.map +1 -1
  151. package/dist/HttpApi/ApiKey.d.ts +4 -0
  152. package/dist/HttpApi/ApiKey.d.ts.map +1 -0
  153. package/dist/HttpApi/ApiKey.js +4 -0
  154. package/dist/HttpApi/ApiKey.js.map +1 -0
  155. package/dist/HttpApi/Audit.d.ts +6 -0
  156. package/dist/HttpApi/Audit.d.ts.map +1 -0
  157. package/dist/HttpApi/Audit.js +10 -0
  158. package/dist/HttpApi/Audit.js.map +1 -0
  159. package/dist/HttpApi/ClientApi.d.ts +917 -0
  160. package/dist/HttpApi/ClientApi.d.ts.map +1 -0
  161. package/dist/HttpApi/ClientApi.js +101 -0
  162. package/dist/HttpApi/ClientApi.js.map +1 -0
  163. package/dist/HttpApi/EmailAuth.d.ts +6 -0
  164. package/dist/HttpApi/EmailAuth.d.ts.map +1 -0
  165. package/dist/HttpApi/EmailAuth.js +6 -0
  166. package/dist/HttpApi/EmailAuth.js.map +1 -0
  167. package/dist/HttpApi/EmailGuards.d.ts +115 -0
  168. package/dist/HttpApi/EmailGuards.d.ts.map +1 -0
  169. package/dist/HttpApi/EmailGuards.js +191 -0
  170. package/dist/HttpApi/EmailGuards.js.map +1 -0
  171. package/dist/HttpApi/EmailOtp.d.ts +6 -0
  172. package/dist/HttpApi/EmailOtp.d.ts.map +1 -0
  173. package/dist/HttpApi/EmailOtp.js +6 -0
  174. package/dist/HttpApi/EmailOtp.js.map +1 -0
  175. package/dist/HttpApi/EmailVerification.d.ts +6 -0
  176. package/dist/HttpApi/EmailVerification.d.ts.map +1 -0
  177. package/dist/HttpApi/EmailVerification.js +6 -0
  178. package/dist/HttpApi/EmailVerification.js.map +1 -0
  179. package/dist/HttpApi/Endpoints.d.ts +629 -301
  180. package/dist/HttpApi/Endpoints.d.ts.map +1 -1
  181. package/dist/HttpApi/Endpoints.js +178 -120
  182. package/dist/HttpApi/Endpoints.js.map +1 -1
  183. package/dist/HttpApi/Errors.d.ts +26 -7
  184. package/dist/HttpApi/Errors.d.ts.map +1 -1
  185. package/dist/HttpApi/Errors.js +26 -4
  186. package/dist/HttpApi/Errors.js.map +1 -1
  187. package/dist/HttpApi/Identity.d.ts +6 -0
  188. package/dist/HttpApi/Identity.d.ts.map +1 -0
  189. package/dist/HttpApi/Identity.js +6 -0
  190. package/dist/HttpApi/Identity.js.map +1 -0
  191. package/dist/HttpApi/IdentityGuards.d.ts +31 -0
  192. package/dist/HttpApi/IdentityGuards.d.ts.map +1 -0
  193. package/dist/HttpApi/IdentityGuards.js +33 -0
  194. package/dist/HttpApi/IdentityGuards.js.map +1 -0
  195. package/dist/HttpApi/Jwt.d.ts +4 -0
  196. package/dist/HttpApi/Jwt.d.ts.map +1 -0
  197. package/dist/HttpApi/Jwt.js +4 -0
  198. package/dist/HttpApi/Jwt.js.map +1 -0
  199. package/dist/HttpApi/JwtDiscovery.d.ts +4 -0
  200. package/dist/HttpApi/JwtDiscovery.d.ts.map +1 -0
  201. package/dist/HttpApi/JwtDiscovery.js +4 -0
  202. package/dist/HttpApi/JwtDiscovery.js.map +1 -0
  203. package/dist/HttpApi/LoginApproval.d.ts +5 -0
  204. package/dist/HttpApi/LoginApproval.d.ts.map +1 -0
  205. package/dist/HttpApi/LoginApproval.js +5 -0
  206. package/dist/HttpApi/LoginApproval.js.map +1 -0
  207. package/dist/HttpApi/LoginNotification.d.ts +5 -0
  208. package/dist/HttpApi/LoginNotification.d.ts.map +1 -0
  209. package/dist/HttpApi/LoginNotification.js +5 -0
  210. package/dist/HttpApi/LoginNotification.js.map +1 -0
  211. package/dist/HttpApi/MagicLink.d.ts +6 -0
  212. package/dist/HttpApi/MagicLink.d.ts.map +1 -0
  213. package/dist/HttpApi/MagicLink.js +6 -0
  214. package/dist/HttpApi/MagicLink.js.map +1 -0
  215. package/dist/HttpApi/Mfa.d.ts +5 -0
  216. package/dist/HttpApi/Mfa.d.ts.map +1 -0
  217. package/dist/HttpApi/Mfa.js +5 -0
  218. package/dist/HttpApi/Mfa.js.map +1 -0
  219. package/dist/HttpApi/Middleware.d.ts +14 -0
  220. package/dist/HttpApi/Middleware.d.ts.map +1 -0
  221. package/dist/HttpApi/Middleware.js +5 -0
  222. package/dist/HttpApi/Middleware.js.map +1 -0
  223. package/dist/HttpApi/OAuth.d.ts +4 -0
  224. package/dist/HttpApi/OAuth.d.ts.map +1 -0
  225. package/dist/HttpApi/OAuth.js +4 -0
  226. package/dist/HttpApi/OAuth.js.map +1 -0
  227. package/dist/HttpApi/OAuthProviderAuthorization.d.ts +4 -0
  228. package/dist/HttpApi/OAuthProviderAuthorization.d.ts.map +1 -0
  229. package/dist/HttpApi/OAuthProviderAuthorization.js +4 -0
  230. package/dist/HttpApi/OAuthProviderAuthorization.js.map +1 -0
  231. package/dist/HttpApi/OAuthToken.d.ts +4 -0
  232. package/dist/HttpApi/OAuthToken.d.ts.map +1 -0
  233. package/dist/HttpApi/OAuthToken.js +4 -0
  234. package/dist/HttpApi/OAuthToken.js.map +1 -0
  235. package/dist/HttpApi/OidcDiscovery.d.ts +4 -0
  236. package/dist/HttpApi/OidcDiscovery.d.ts.map +1 -0
  237. package/dist/HttpApi/OidcDiscovery.js +4 -0
  238. package/dist/HttpApi/OidcDiscovery.js.map +1 -0
  239. package/dist/HttpApi/Operations/AdminPermissionDefinition.d.ts +28 -0
  240. package/dist/HttpApi/Operations/AdminPermissionDefinition.d.ts.map +1 -0
  241. package/dist/HttpApi/Operations/AdminPermissionDefinition.js +5 -0
  242. package/dist/HttpApi/Operations/AdminPermissionDefinition.js.map +1 -0
  243. package/dist/HttpApi/Operations/AdminSession.d.ts +16 -0
  244. package/dist/HttpApi/Operations/AdminSession.d.ts.map +1 -0
  245. package/dist/HttpApi/Operations/AdminSession.js +5 -0
  246. package/dist/HttpApi/Operations/AdminSession.js.map +1 -0
  247. package/dist/HttpApi/Operations/ApiKey.d.ts +16 -0
  248. package/dist/HttpApi/Operations/ApiKey.d.ts.map +1 -0
  249. package/dist/HttpApi/Operations/ApiKey.js +5 -0
  250. package/dist/HttpApi/Operations/ApiKey.js.map +1 -0
  251. package/dist/HttpApi/Operations/Discovery.d.ts +19 -0
  252. package/dist/HttpApi/Operations/Discovery.d.ts.map +1 -0
  253. package/dist/HttpApi/Operations/Discovery.js +7 -0
  254. package/dist/HttpApi/Operations/Discovery.js.map +1 -0
  255. package/dist/HttpApi/Operations/EmailAuth.d.ts +12 -0
  256. package/dist/HttpApi/Operations/EmailAuth.d.ts.map +1 -0
  257. package/dist/HttpApi/Operations/EmailAuth.js +5 -0
  258. package/dist/HttpApi/Operations/EmailAuth.js.map +1 -0
  259. package/dist/HttpApi/Operations/EmailOtp.d.ts +14 -0
  260. package/dist/HttpApi/Operations/EmailOtp.d.ts.map +1 -0
  261. package/dist/HttpApi/Operations/EmailOtp.js +5 -0
  262. package/dist/HttpApi/Operations/EmailOtp.js.map +1 -0
  263. package/dist/HttpApi/Operations/EmailVerification.d.ts +14 -0
  264. package/dist/HttpApi/Operations/EmailVerification.d.ts.map +1 -0
  265. package/dist/HttpApi/Operations/EmailVerification.js +5 -0
  266. package/dist/HttpApi/Operations/EmailVerification.js.map +1 -0
  267. package/dist/HttpApi/Operations/HttpOperation.d.ts +4 -0
  268. package/dist/HttpApi/Operations/HttpOperation.d.ts.map +1 -0
  269. package/dist/HttpApi/Operations/HttpOperation.js +2 -0
  270. package/dist/HttpApi/Operations/HttpOperation.js.map +1 -0
  271. package/dist/HttpApi/Operations/Identity.d.ts +22 -0
  272. package/dist/HttpApi/Operations/Identity.d.ts.map +1 -0
  273. package/dist/HttpApi/Operations/Identity.js +5 -0
  274. package/dist/HttpApi/Operations/Identity.js.map +1 -0
  275. package/dist/HttpApi/Operations/Jwt.d.ts +14 -0
  276. package/dist/HttpApi/Operations/Jwt.d.ts.map +1 -0
  277. package/dist/HttpApi/Operations/Jwt.js +5 -0
  278. package/dist/HttpApi/Operations/Jwt.js.map +1 -0
  279. package/dist/HttpApi/Operations/LoginApproval.d.ts +16 -0
  280. package/dist/HttpApi/Operations/LoginApproval.d.ts.map +1 -0
  281. package/dist/HttpApi/Operations/LoginApproval.js +5 -0
  282. package/dist/HttpApi/Operations/LoginApproval.js.map +1 -0
  283. package/dist/HttpApi/Operations/MagicLink.d.ts +14 -0
  284. package/dist/HttpApi/Operations/MagicLink.d.ts.map +1 -0
  285. package/dist/HttpApi/Operations/MagicLink.js +5 -0
  286. package/dist/HttpApi/Operations/MagicLink.js.map +1 -0
  287. package/dist/HttpApi/Operations/Mfa.d.ts +24 -0
  288. package/dist/HttpApi/Operations/Mfa.d.ts.map +1 -0
  289. package/dist/HttpApi/Operations/Mfa.js +5 -0
  290. package/dist/HttpApi/Operations/Mfa.js.map +1 -0
  291. package/dist/HttpApi/Operations/OAuth.d.ts +20 -0
  292. package/dist/HttpApi/Operations/OAuth.d.ts.map +1 -0
  293. package/dist/HttpApi/Operations/OAuth.js +5 -0
  294. package/dist/HttpApi/Operations/OAuth.js.map +1 -0
  295. package/dist/HttpApi/Operations/OAuthProviderAuthorization.d.ts +12 -0
  296. package/dist/HttpApi/Operations/OAuthProviderAuthorization.d.ts.map +1 -0
  297. package/dist/HttpApi/Operations/OAuthProviderAuthorization.js +5 -0
  298. package/dist/HttpApi/Operations/OAuthProviderAuthorization.js.map +1 -0
  299. package/dist/HttpApi/Operations/OAuthToken.d.ts +16 -0
  300. package/dist/HttpApi/Operations/OAuthToken.d.ts.map +1 -0
  301. package/dist/HttpApi/Operations/OAuthToken.js +5 -0
  302. package/dist/HttpApi/Operations/OAuthToken.js.map +1 -0
  303. package/dist/HttpApi/Operations/Passkey.d.ts +22 -0
  304. package/dist/HttpApi/Operations/Passkey.d.ts.map +1 -0
  305. package/dist/HttpApi/Operations/Passkey.js +5 -0
  306. package/dist/HttpApi/Operations/Passkey.js.map +1 -0
  307. package/dist/HttpApi/Operations/Password.d.ts +22 -0
  308. package/dist/HttpApi/Operations/Password.d.ts.map +1 -0
  309. package/dist/HttpApi/Operations/Password.js +5 -0
  310. package/dist/HttpApi/Operations/Password.js.map +1 -0
  311. package/dist/HttpApi/Operations/RecoveryCodes.d.ts +20 -0
  312. package/dist/HttpApi/Operations/RecoveryCodes.d.ts.map +1 -0
  313. package/dist/HttpApi/Operations/RecoveryCodes.js +5 -0
  314. package/dist/HttpApi/Operations/RecoveryCodes.js.map +1 -0
  315. package/dist/HttpApi/Operations/RefreshToken.d.ts +12 -0
  316. package/dist/HttpApi/Operations/RefreshToken.d.ts.map +1 -0
  317. package/dist/HttpApi/Operations/RefreshToken.js +5 -0
  318. package/dist/HttpApi/Operations/RefreshToken.js.map +1 -0
  319. package/dist/HttpApi/Operations/Security.d.ts +12 -0
  320. package/dist/HttpApi/Operations/Security.d.ts.map +1 -0
  321. package/dist/HttpApi/Operations/Security.js +5 -0
  322. package/dist/HttpApi/Operations/Security.js.map +1 -0
  323. package/dist/HttpApi/Operations/SecurityTimeline.d.ts +19 -0
  324. package/dist/HttpApi/Operations/SecurityTimeline.d.ts.map +1 -0
  325. package/dist/HttpApi/Operations/SecurityTimeline.js +7 -0
  326. package/dist/HttpApi/Operations/SecurityTimeline.js.map +1 -0
  327. package/dist/HttpApi/Operations/Session.d.ts +22 -0
  328. package/dist/HttpApi/Operations/Session.d.ts.map +1 -0
  329. package/dist/HttpApi/Operations/Session.js +5 -0
  330. package/dist/HttpApi/Operations/Session.js.map +1 -0
  331. package/dist/HttpApi/Operations/StepUp.d.ts +22 -0
  332. package/dist/HttpApi/Operations/StepUp.d.ts.map +1 -0
  333. package/dist/HttpApi/Operations/StepUp.js +5 -0
  334. package/dist/HttpApi/Operations/StepUp.js.map +1 -0
  335. package/dist/HttpApi/Operations/Totp.d.ts +20 -0
  336. package/dist/HttpApi/Operations/Totp.d.ts.map +1 -0
  337. package/dist/HttpApi/Operations/Totp.js +5 -0
  338. package/dist/HttpApi/Operations/Totp.js.map +1 -0
  339. package/dist/HttpApi/Operations/TrustedDevice.d.ts +23 -0
  340. package/dist/HttpApi/Operations/TrustedDevice.d.ts.map +1 -0
  341. package/dist/HttpApi/Operations/TrustedDevice.js +7 -0
  342. package/dist/HttpApi/Operations/TrustedDevice.js.map +1 -0
  343. package/dist/HttpApi/Operations/index.d.ts +27 -0
  344. package/dist/HttpApi/Operations/index.d.ts.map +1 -0
  345. package/dist/HttpApi/Operations/index.js +27 -0
  346. package/dist/HttpApi/Operations/index.js.map +1 -0
  347. package/dist/HttpApi/Passkey.d.ts +5 -0
  348. package/dist/HttpApi/Passkey.d.ts.map +1 -0
  349. package/dist/HttpApi/Passkey.js +5 -0
  350. package/dist/HttpApi/Passkey.js.map +1 -0
  351. package/dist/HttpApi/Password.d.ts +220 -0
  352. package/dist/HttpApi/Password.d.ts.map +1 -0
  353. package/dist/HttpApi/Password.js +237 -0
  354. package/dist/HttpApi/Password.js.map +1 -0
  355. package/dist/HttpApi/PasswordContract.d.ts +307 -0
  356. package/dist/HttpApi/PasswordContract.d.ts.map +1 -0
  357. package/dist/HttpApi/PasswordContract.js +63 -0
  358. package/dist/HttpApi/PasswordContract.js.map +1 -0
  359. package/dist/HttpApi/PasswordGuards.d.ts +82 -0
  360. package/dist/HttpApi/PasswordGuards.d.ts.map +1 -0
  361. package/dist/HttpApi/PasswordGuards.js +179 -0
  362. package/dist/HttpApi/PasswordGuards.js.map +1 -0
  363. package/dist/HttpApi/RecoveryCodes.d.ts +5 -0
  364. package/dist/HttpApi/RecoveryCodes.d.ts.map +1 -0
  365. package/dist/HttpApi/RecoveryCodes.js +5 -0
  366. package/dist/HttpApi/RecoveryCodes.js.map +1 -0
  367. package/dist/HttpApi/RefreshToken.d.ts +4 -0
  368. package/dist/HttpApi/RefreshToken.d.ts.map +1 -0
  369. package/dist/HttpApi/RefreshToken.js +4 -0
  370. package/dist/HttpApi/RefreshToken.js.map +1 -0
  371. package/dist/HttpApi/RequestGuards.d.ts +42 -0
  372. package/dist/HttpApi/RequestGuards.d.ts.map +1 -0
  373. package/dist/HttpApi/RequestGuards.js +194 -0
  374. package/dist/HttpApi/RequestGuards.js.map +1 -0
  375. package/dist/HttpApi/Schemas.d.ts +361 -84
  376. package/dist/HttpApi/Schemas.d.ts.map +1 -1
  377. package/dist/HttpApi/Schemas.js +190 -27
  378. package/dist/HttpApi/Schemas.js.map +1 -1
  379. package/dist/HttpApi/Security.d.ts +12 -93
  380. package/dist/HttpApi/Security.d.ts.map +1 -1
  381. package/dist/HttpApi/Security.js +65 -356
  382. package/dist/HttpApi/Security.js.map +1 -1
  383. package/dist/HttpApi/SecurityTimeline.d.ts +4 -0
  384. package/dist/HttpApi/SecurityTimeline.d.ts.map +1 -0
  385. package/dist/HttpApi/SecurityTimeline.js +4 -0
  386. package/dist/HttpApi/SecurityTimeline.js.map +1 -0
  387. package/dist/HttpApi/Session.d.ts +5 -0
  388. package/dist/HttpApi/Session.d.ts.map +1 -0
  389. package/dist/HttpApi/Session.js +5 -0
  390. package/dist/HttpApi/Session.js.map +1 -0
  391. package/dist/HttpApi/SessionGuards.d.ts +15 -0
  392. package/dist/HttpApi/SessionGuards.d.ts.map +1 -0
  393. package/dist/HttpApi/SessionGuards.js +37 -0
  394. package/dist/HttpApi/SessionGuards.js.map +1 -0
  395. package/dist/HttpApi/StepUp.d.ts +5 -0
  396. package/dist/HttpApi/StepUp.d.ts.map +1 -0
  397. package/dist/HttpApi/StepUp.js +5 -0
  398. package/dist/HttpApi/StepUp.js.map +1 -0
  399. package/dist/HttpApi/Totp.d.ts +5 -0
  400. package/dist/HttpApi/Totp.d.ts.map +1 -0
  401. package/dist/HttpApi/Totp.js +5 -0
  402. package/dist/HttpApi/Totp.js.map +1 -0
  403. package/dist/HttpApi/Transport.d.ts +4 -6
  404. package/dist/HttpApi/Transport.d.ts.map +1 -1
  405. package/dist/HttpApi/Transport.js +62 -36
  406. package/dist/HttpApi/Transport.js.map +1 -1
  407. package/dist/HttpApi/TrustedDevice.d.ts +4 -0
  408. package/dist/HttpApi/TrustedDevice.d.ts.map +1 -0
  409. package/dist/HttpApi/TrustedDevice.js +4 -0
  410. package/dist/HttpApi/TrustedDevice.js.map +1 -0
  411. package/dist/HttpApi/index.d.ts +9 -3
  412. package/dist/HttpApi/index.d.ts.map +1 -1
  413. package/dist/HttpApi/index.js +8 -2
  414. package/dist/HttpApi/index.js.map +1 -1
  415. package/dist/Identity.d.ts +138 -0
  416. package/dist/Identity.d.ts.map +1 -0
  417. package/dist/Identity.js +105 -0
  418. package/dist/Identity.js.map +1 -0
  419. package/dist/IdentityManagement.d.ts +189 -0
  420. package/dist/IdentityManagement.d.ts.map +1 -0
  421. package/dist/IdentityManagement.js +317 -0
  422. package/dist/IdentityManagement.js.map +1 -0
  423. package/dist/IncidentAction.d.ts +1 -4
  424. package/dist/IncidentAction.d.ts.map +1 -1
  425. package/dist/IncidentAction.js +15 -9
  426. package/dist/IncidentAction.js.map +1 -1
  427. package/dist/Internal.d.ts +2 -0
  428. package/dist/Internal.d.ts.map +1 -1
  429. package/dist/Internal.js +30 -0
  430. package/dist/Internal.js.map +1 -1
  431. package/dist/Invitation.d.ts +362 -0
  432. package/dist/Invitation.d.ts.map +1 -0
  433. package/dist/Invitation.js +633 -0
  434. package/dist/Invitation.js.map +1 -0
  435. package/dist/IpQualityScore.d.ts +38 -0
  436. package/dist/IpQualityScore.d.ts.map +1 -0
  437. package/dist/IpQualityScore.js +215 -0
  438. package/dist/IpQualityScore.js.map +1 -0
  439. package/dist/Jwt.d.ts +8 -29
  440. package/dist/Jwt.d.ts.map +1 -1
  441. package/dist/Jwt.js +67 -56
  442. package/dist/Jwt.js.map +1 -1
  443. package/dist/LoginApproval.d.ts +15 -30
  444. package/dist/LoginApproval.d.ts.map +1 -1
  445. package/dist/LoginApproval.js +47 -41
  446. package/dist/LoginApproval.js.map +1 -1
  447. package/dist/LoginNotification.d.ts +7 -11
  448. package/dist/LoginNotification.d.ts.map +1 -1
  449. package/dist/LoginNotification.js +30 -17
  450. package/dist/LoginNotification.js.map +1 -1
  451. package/dist/LoginRisk.d.ts +11 -13
  452. package/dist/LoginRisk.d.ts.map +1 -1
  453. package/dist/LoginRisk.js +66 -26
  454. package/dist/LoginRisk.js.map +1 -1
  455. package/dist/LoginRiskEnrichment.d.ts +145 -0
  456. package/dist/LoginRiskEnrichment.d.ts.map +1 -0
  457. package/dist/LoginRiskEnrichment.js +220 -0
  458. package/dist/LoginRiskEnrichment.js.map +1 -0
  459. package/dist/MagicLink.d.ts +9 -8
  460. package/dist/MagicLink.d.ts.map +1 -1
  461. package/dist/MagicLink.js +40 -73
  462. package/dist/MagicLink.js.map +1 -1
  463. package/dist/Mailer.d.ts +19 -12
  464. package/dist/Mailer.d.ts.map +1 -1
  465. package/dist/Mailer.js +10 -12
  466. package/dist/Mailer.js.map +1 -1
  467. package/dist/OAuth.d.ts +93 -96
  468. package/dist/OAuth.d.ts.map +1 -1
  469. package/dist/OAuth.js +404 -217
  470. package/dist/OAuth.js.map +1 -1
  471. package/dist/Passkey.d.ts +15 -17
  472. package/dist/Passkey.d.ts.map +1 -1
  473. package/dist/Passkey.js +86 -39
  474. package/dist/Passkey.js.map +1 -1
  475. package/dist/PasskeyBrowser.d.ts +39 -0
  476. package/dist/PasskeyBrowser.d.ts.map +1 -0
  477. package/dist/PasskeyBrowser.js +206 -0
  478. package/dist/PasskeyBrowser.js.map +1 -0
  479. package/dist/PasskeySimpleWebAuthn.d.ts.map +1 -1
  480. package/dist/PasskeySimpleWebAuthn.js +19 -7
  481. package/dist/PasskeySimpleWebAuthn.js.map +1 -1
  482. package/dist/Password.d.ts +71 -37
  483. package/dist/Password.d.ts.map +1 -1
  484. package/dist/Password.js +295 -81
  485. package/dist/Password.js.map +1 -1
  486. package/dist/PasswordRisk.d.ts +63 -0
  487. package/dist/PasswordRisk.d.ts.map +1 -0
  488. package/dist/PasswordRisk.js +37 -0
  489. package/dist/PasswordRisk.js.map +1 -0
  490. package/dist/Permission.d.ts +308 -0
  491. package/dist/Permission.d.ts.map +1 -0
  492. package/dist/Permission.js +827 -0
  493. package/dist/Permission.js.map +1 -0
  494. package/dist/Policy.d.ts +31 -18
  495. package/dist/Policy.d.ts.map +1 -1
  496. package/dist/Policy.js +58 -14
  497. package/dist/Policy.js.map +1 -1
  498. package/dist/PostgresDelegatedAccessStorageMigrations.d.ts +7 -0
  499. package/dist/PostgresDelegatedAccessStorageMigrations.d.ts.map +1 -0
  500. package/dist/PostgresDelegatedAccessStorageMigrations.js +119 -0
  501. package/dist/PostgresDelegatedAccessStorageMigrations.js.map +1 -0
  502. package/dist/PostgresStorageMigrations.d.ts +15 -0
  503. package/dist/PostgresStorageMigrations.d.ts.map +1 -0
  504. package/dist/PostgresStorageMigrations.js +620 -0
  505. package/dist/PostgresStorageMigrations.js.map +1 -0
  506. package/dist/Privacy.d.ts +0 -3
  507. package/dist/Privacy.d.ts.map +1 -1
  508. package/dist/Privacy.js +2 -5
  509. package/dist/Privacy.js.map +1 -1
  510. package/dist/RateLimiter.d.ts +0 -3
  511. package/dist/RateLimiter.d.ts.map +1 -1
  512. package/dist/RateLimiter.js +1 -4
  513. package/dist/RateLimiter.js.map +1 -1
  514. package/dist/RecoveryCode.d.ts +83 -11
  515. package/dist/RecoveryCode.d.ts.map +1 -1
  516. package/dist/RecoveryCode.js +273 -75
  517. package/dist/RecoveryCode.js.map +1 -1
  518. package/dist/RecoveryPolicy.d.ts +81 -0
  519. package/dist/RecoveryPolicy.d.ts.map +1 -0
  520. package/dist/RecoveryPolicy.js +119 -0
  521. package/dist/RecoveryPolicy.js.map +1 -0
  522. package/dist/RefreshToken.d.ts +0 -9
  523. package/dist/RefreshToken.d.ts.map +1 -1
  524. package/dist/RefreshToken.js +31 -22
  525. package/dist/RefreshToken.js.map +1 -1
  526. package/dist/SecurityTimeline.d.ts +1 -4
  527. package/dist/SecurityTimeline.d.ts.map +1 -1
  528. package/dist/SecurityTimeline.js +110 -17
  529. package/dist/SecurityTimeline.js.map +1 -1
  530. package/dist/Sessions.d.ts +124 -29
  531. package/dist/Sessions.d.ts.map +1 -1
  532. package/dist/Sessions.js +626 -94
  533. package/dist/Sessions.js.map +1 -1
  534. package/dist/StepUp.d.ts +132 -11
  535. package/dist/StepUp.d.ts.map +1 -1
  536. package/dist/StepUp.js +387 -19
  537. package/dist/StepUp.js.map +1 -1
  538. package/dist/Storage.d.ts +89 -23
  539. package/dist/Storage.d.ts.map +1 -1
  540. package/dist/Storage.js +10 -12
  541. package/dist/Storage.js.map +1 -1
  542. package/dist/StorageMigrations.d.ts +6 -1
  543. package/dist/StorageMigrations.d.ts.map +1 -1
  544. package/dist/StorageMigrations.js +224 -0
  545. package/dist/StorageMigrations.js.map +1 -1
  546. package/dist/StorageSchemaGenerator.d.ts +486 -0
  547. package/dist/StorageSchemaGenerator.d.ts.map +1 -0
  548. package/dist/StorageSchemaGenerator.js +1022 -0
  549. package/dist/StorageSchemaGenerator.js.map +1 -0
  550. package/dist/StrongFactor.d.ts +64 -0
  551. package/dist/StrongFactor.d.ts.map +1 -0
  552. package/dist/StrongFactor.js +100 -0
  553. package/dist/StrongFactor.js.map +1 -0
  554. package/dist/Testing.js +2 -2
  555. package/dist/Testing.js.map +1 -1
  556. package/dist/Totp.d.ts +88 -13
  557. package/dist/Totp.d.ts.map +1 -1
  558. package/dist/Totp.js +192 -34
  559. package/dist/Totp.js.map +1 -1
  560. package/dist/TrustedDevice.d.ts +0 -9
  561. package/dist/TrustedDevice.d.ts.map +1 -1
  562. package/dist/TrustedDevice.js +15 -17
  563. package/dist/TrustedDevice.js.map +1 -1
  564. package/dist/WaitUntil.d.ts +0 -3
  565. package/dist/WaitUntil.d.ts.map +1 -1
  566. package/dist/WaitUntil.js +1 -4
  567. package/dist/WaitUntil.js.map +1 -1
  568. package/dist/Webhook.d.ts +42 -12
  569. package/dist/Webhook.d.ts.map +1 -1
  570. package/dist/Webhook.js +165 -26
  571. package/dist/Webhook.js.map +1 -1
  572. package/dist/alchemy/cloudflare/Email.d.ts.map +1 -1
  573. package/dist/alchemy/cloudflare/Email.js +9 -4
  574. package/dist/alchemy/cloudflare/Email.js.map +1 -1
  575. package/dist/cloudflare/Email.js +1 -1
  576. package/dist/cloudflare/Email.js.map +1 -1
  577. package/dist/cloudflare/RequestMetadata.d.ts +49 -0
  578. package/dist/cloudflare/RequestMetadata.d.ts.map +1 -0
  579. package/dist/cloudflare/RequestMetadata.js +71 -0
  580. package/dist/cloudflare/RequestMetadata.js.map +1 -0
  581. package/dist/index.d.ts +0 -35
  582. package/dist/index.d.ts.map +1 -1
  583. package/dist/index.js +0 -35
  584. package/dist/index.js.map +1 -1
  585. package/dist/internal/AuthFlowFinalizer.d.ts +31 -0
  586. package/dist/internal/AuthFlowFinalizer.d.ts.map +1 -0
  587. package/dist/internal/AuthFlowFinalizer.js +182 -0
  588. package/dist/internal/AuthFlowFinalizer.js.map +1 -0
  589. package/migrations/0001_auth_storage.sql +1 -0
  590. package/migrations/0006_auth_totp_factor.sql +1 -0
  591. package/migrations/0024_auth_permission.sql +39 -0
  592. package/migrations/0025_auth_permission_definition.sql +19 -0
  593. package/migrations/0026_auth_user_identity.sql +59 -0
  594. package/migrations/0027_auth_audit_log_storage_order.sql +46 -0
  595. package/migrations/0028_auth_oauth_client_secret_key.sql +39 -0
  596. package/migrations/delegated-access/0001_auth_delegated_access.sql +152 -0
  597. package/migrations/postgres/0001_auth_core.sql +77 -0
  598. package/migrations/postgres/0002_auth_security_oauth.sql +65 -0
  599. package/migrations/postgres/0003_auth_credentials_tokens.sql +43 -0
  600. package/migrations/postgres/0004_auth_security_history.sql +103 -0
  601. package/migrations/postgres/0005_auth_webhooks.sql +29 -0
  602. package/migrations/postgres/0006_auth_domain_timeline.sql +50 -0
  603. package/migrations/postgres/0007_auth_oauth_clients.sql +85 -0
  604. package/migrations/postgres/0008_auth_oauth_tokens.sql +63 -0
  605. package/migrations/postgres/0009_auth_permissions.sql +66 -0
  606. package/migrations/postgres/delegated-access/0001_auth_delegated_access.sql +112 -0
  607. package/package.json +301 -2
@@ -0,0 +1,182 @@
1
+ import { Context, Effect, Layer, Option, Result } from "effect";
2
+ import { compactAuthenticationEventsResult, deriveAssuranceResult, deriveMfaVerifiedAtResult, maximumSessionAuthenticationEvents, validateAuthenticationEvidenceTimestamps, } from "../Assurance.js";
3
+ import { currentUnixMillis } from "../Internal.js";
4
+ import { unknownLoginDeviceContext } from "../LoginApproval.js";
5
+ import { LoginNotification } from "../LoginNotification.js";
6
+ import { defaultLoginRiskContext } from "../LoginRisk.js";
7
+ import { RecoveryRequirementPolicy, defaultRecoveryRemediationCapabilities, makeRecoveryRequirementPolicyAllow, recoveryPolicyInput, withRecoveryEnrollmentRequirement, withRecoveryRemediationRequirement, } from "../RecoveryPolicy.js";
8
+ import { SessionCreateError, Sessions, sessionRequestMetadataKey, } from "../Sessions.js";
9
+ const loginNotificationSession = (session) => ({
10
+ sessionId: session.sessionId,
11
+ userId: session.userId,
12
+ authTime: session.authTime,
13
+ expiresAt: session.expiresAt,
14
+ aal: session.aal,
15
+ amr: session.amr,
16
+ ...(session.claims === undefined ? {} : { claims: session.claims }),
17
+ });
18
+ const loginRequestContextFromMetadata = (metadata) => {
19
+ const value = metadata?.[sessionRequestMetadataKey];
20
+ return typeof value === "object" && value !== null && !Array.isArray(value)
21
+ ? value
22
+ : undefined;
23
+ };
24
+ const appMetadata = (metadata) => {
25
+ if (metadata === undefined) {
26
+ return undefined;
27
+ }
28
+ const { method: _method, evidence: _evidence, identity: _identity, emailDestination: _emailDestination, intent: _intent, deviceStatus: _deviceStatus, deviceKey: _deviceKey, locationKey: _locationKey, claims: _claims, [sessionRequestMetadataKey]: _request, ...rest } = metadata;
29
+ return Object.keys(rest).length === 0 ? undefined : rest;
30
+ };
31
+ const persistedSessionMetadata = (input) => input.request === undefined
32
+ ? input.metadata
33
+ : {
34
+ ...input.metadata,
35
+ [sessionRequestMetadataKey]: input.request,
36
+ };
37
+ const fromEvidenceValidationResult = (result) => Effect.fromResult(result).pipe(Effect.mapError((cause) => new SessionCreateError({
38
+ message: "Session evidence policy validation failed",
39
+ cause,
40
+ })));
41
+ const primaryFactorNotEstablished = () => ({
42
+ _tag: "PolicyDenied",
43
+ reason: "Authentication evidence did not establish a primary factor",
44
+ });
45
+ export const makeAuthFlowTerminal = (dependencies) => {
46
+ const recoveryRequirementPolicy = dependencies.recoveryRequirementPolicy ??
47
+ makeRecoveryRequirementPolicyAllow();
48
+ const { customEvidencePolicies } = dependencies.sessions;
49
+ const derive = Effect.fn("auth.auth_flow.derive")(function* (input) {
50
+ const serverNow = yield* currentUnixMillis;
51
+ yield* fromEvidenceValidationResult(validateAuthenticationEvidenceTimestamps(input.evidence, serverNow));
52
+ const evidence = yield* fromEvidenceValidationResult(compactAuthenticationEventsResult(input.evidence, maximumSessionAuthenticationEvents, customEvidencePolicies));
53
+ const assurance = yield* fromEvidenceValidationResult(deriveAssuranceResult(evidence, { customEvidencePolicies }));
54
+ const mfaVerifiedAt = yield* fromEvidenceValidationResult(deriveMfaVerifiedAtResult(evidence, customEvidencePolicies));
55
+ return {
56
+ ...input,
57
+ evidence,
58
+ aal: assurance.level,
59
+ amr: assurance.amr,
60
+ primaryEstablished: assurance.primaryEstablished,
61
+ recoveryRemediation: assurance.recoveryRemediation,
62
+ ...(mfaVerifiedAt === undefined ? {} : { mfaVerifiedAt }),
63
+ };
64
+ });
65
+ const notifyLogin = (input, session) => dependencies.loginNotification === undefined
66
+ ? Effect.void
67
+ : dependencies.loginNotification
68
+ .notify({
69
+ userId: input.userId,
70
+ ...(input.identity === undefined
71
+ ? {}
72
+ : { identity: input.identity }),
73
+ ...(input.emailDestination === undefined
74
+ ? {}
75
+ : { emailDestination: input.emailDestination }),
76
+ ...(input.intent === undefined ? {} : { intent: input.intent }),
77
+ method: input.method,
78
+ amr: input.amr,
79
+ aal: input.aal,
80
+ session: loginNotificationSession(session),
81
+ device: input.device ?? unknownLoginDeviceContext,
82
+ risk: input.risk ?? defaultLoginRiskContext,
83
+ request: input.request ?? loginRequestContextFromMetadata(input.metadata),
84
+ ...(input.metadata === undefined
85
+ ? {}
86
+ : { metadata: input.metadata }),
87
+ })
88
+ .pipe(Effect.catchCause(() => Effect.void));
89
+ const recoveryClaims = (input) => Effect.gen(function* () {
90
+ const decision = yield* recoveryRequirementPolicy.decide(recoveryPolicyInput({
91
+ ...input,
92
+ request: input.request ?? loginRequestContextFromMetadata(input.metadata),
93
+ metadata: appMetadata(input.metadata),
94
+ }));
95
+ if (decision.type === "deny") {
96
+ return Option.none();
97
+ }
98
+ const policyClaims = decision.type === "require-enrollment"
99
+ ? withRecoveryEnrollmentRequirement(input.claims, decision.allowed)
100
+ : input.claims;
101
+ return Option.some(input.recoveryRemediation
102
+ ? withRecoveryRemediationRequirement(policyClaims, defaultRecoveryRemediationCapabilities)
103
+ : policyClaims);
104
+ });
105
+ return {
106
+ derive,
107
+ complete: Effect.fn("auth.auth_flow.complete")(function* (input) {
108
+ yield* Effect.annotateCurrentSpan({
109
+ "auth.method": input.method,
110
+ "auth.aal": input.aal,
111
+ "auth.amr_count": input.amr.length,
112
+ });
113
+ if (!input.primaryEstablished) {
114
+ yield* Effect.annotateCurrentSpan("auth.result", "PolicyDenied");
115
+ return primaryFactorNotEstablished();
116
+ }
117
+ const claims = yield* recoveryClaims(input);
118
+ if (Option.isNone(claims)) {
119
+ yield* Effect.annotateCurrentSpan("auth.result", "PolicyDenied");
120
+ return { _tag: "PolicyDenied" };
121
+ }
122
+ const session = yield* dependencies.sessions.create({
123
+ userId: input.userId,
124
+ authenticationEvents: input.evidence,
125
+ ...(Option.isNone(claims) ? {} : { claims: claims.value }),
126
+ ...(input.mfaVerifiedAt === undefined
127
+ ? {}
128
+ : { mfaVerifiedAt: input.mfaVerifiedAt }),
129
+ metadata: persistedSessionMetadata(input),
130
+ });
131
+ yield* notifyLogin(input, session);
132
+ yield* Effect.annotateCurrentSpan("auth.result", "Authenticated");
133
+ return { _tag: "Authenticated", session };
134
+ }),
135
+ prepare: Effect.fn("auth.auth_flow.prepare_complete")(function* (input) {
136
+ if (!input.primaryEstablished) {
137
+ return primaryFactorNotEstablished();
138
+ }
139
+ const claims = yield* recoveryClaims(input);
140
+ if (Option.isNone(claims)) {
141
+ return { _tag: "PolicyDenied" };
142
+ }
143
+ if (dependencies.sessions.prepareCreate === undefined) {
144
+ return {
145
+ _tag: "PolicyDenied",
146
+ reason: "Atomic recovery login is not configured",
147
+ };
148
+ }
149
+ const prepared = yield* dependencies.sessions.prepareCreate({
150
+ userId: input.userId,
151
+ authenticationEvents: input.evidence,
152
+ claims: claims.value,
153
+ metadata: persistedSessionMetadata(input),
154
+ });
155
+ return {
156
+ _tag: "PreparedAuthenticated",
157
+ prepared,
158
+ notify: notifyLogin(input, prepared.session),
159
+ };
160
+ }),
161
+ };
162
+ };
163
+ export class AuthFlowFinalizer extends Context.Service()("auth/internal/AuthFlowFinalizer") {
164
+ }
165
+ export const AuthFlowFinalizerLive = Layer.effect(AuthFlowFinalizer, Effect.gen(function* () {
166
+ const sessions = yield* Sessions;
167
+ const loginNotification = yield* Effect.serviceOption(LoginNotification);
168
+ const recoveryRequirementPolicy = yield* Effect.serviceOption(RecoveryRequirementPolicy);
169
+ const terminal = makeAuthFlowTerminal({
170
+ sessions,
171
+ ...(Option.isSome(loginNotification)
172
+ ? { loginNotification: loginNotification.value }
173
+ : {}),
174
+ ...(Option.isSome(recoveryRequirementPolicy)
175
+ ? { recoveryRequirementPolicy: recoveryRequirementPolicy.value }
176
+ : {}),
177
+ });
178
+ return AuthFlowFinalizer.of({
179
+ complete: (input) => terminal.derive(input).pipe(Effect.flatMap(terminal.complete)),
180
+ });
181
+ }));
182
+ //# sourceMappingURL=AuthFlowFinalizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthFlowFinalizer.js","sourceRoot":"","sources":["../../src/internal/AuthFlowFinalizer.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ create table if not exists auth_session (
5
5
  created_at integer not null,
6
6
  expires_at integer not null,
7
7
  auth_time integer not null,
8
+ authentication_events text not null,
8
9
  aal text not null,
9
10
  amr text not null,
10
11
  mfa_verified_at integer,
@@ -8,6 +8,7 @@ create table if not exists auth_totp_factor (
8
8
  created_at integer not null,
9
9
  confirmed_at integer,
10
10
  last_used_at integer,
11
+ last_accepted_counter integer,
11
12
  revoked_at integer,
12
13
  metadata text
13
14
  );
@@ -0,0 +1,39 @@
1
+ create table if not exists auth_permission_grant (
2
+ subject_type text not null,
3
+ subject_id text not null,
4
+ permission_id text not null,
5
+ scope_type text not null,
6
+ scope_id_present integer not null,
7
+ scope_id text not null,
8
+ expires_at integer,
9
+ metadata text,
10
+ revoked_at integer,
11
+ primary key (subject_type, subject_id, permission_id, scope_type, scope_id_present, scope_id)
12
+ );
13
+
14
+ create index if not exists auth_permission_grant_check_idx on auth_permission_grant (subject_type, subject_id, permission_id, revoked_at, expires_at);
15
+
16
+ create table if not exists auth_role_grant (
17
+ subject_type text not null,
18
+ subject_id text not null,
19
+ role_id text not null,
20
+ scope_type text not null,
21
+ scope_id_present integer not null,
22
+ scope_id text not null,
23
+ expires_at integer,
24
+ metadata text,
25
+ revoked_at integer,
26
+ primary key (subject_type, subject_id, role_id, scope_type, scope_id_present, scope_id)
27
+ );
28
+
29
+ create index if not exists auth_role_grant_check_idx on auth_role_grant (subject_type, subject_id, role_id, revoked_at, expires_at);
30
+
31
+ create table if not exists auth_role_permission (
32
+ role_id text not null,
33
+ permission_id text not null,
34
+ scope_type_present integer not null,
35
+ scope_type text not null,
36
+ primary key (role_id, permission_id, scope_type_present, scope_type)
37
+ );
38
+
39
+ create index if not exists auth_role_permission_check_idx on auth_role_permission (permission_id, role_id, scope_type_present, scope_type);
@@ -0,0 +1,19 @@
1
+ create table if not exists auth_permission_definition (
2
+ id text primary key,
3
+ description text,
4
+ scope_type_present integer not null,
5
+ scope_type text not null,
6
+ created_at integer not null,
7
+ updated_at integer not null,
8
+ disabled_at integer,
9
+ deleted_at integer
10
+ );
11
+
12
+ create table if not exists auth_role_definition (
13
+ id text primary key,
14
+ description text,
15
+ created_at integer not null,
16
+ updated_at integer not null,
17
+ disabled_at integer,
18
+ deleted_at integer
19
+ );
@@ -0,0 +1,59 @@
1
+ create table if not exists auth_user_identity (
2
+ id text primary key,
3
+ user_id text not null,
4
+ scope_type text not null,
5
+ scope_id text not null,
6
+ kind text not null,
7
+ value text not null,
8
+ normalized_value text not null,
9
+ verified_at integer,
10
+ is_primary_login integer not null,
11
+ created_at integer not null,
12
+ updated_at integer not null,
13
+ revoked_at integer,
14
+ replaced_by_id text,
15
+ metadata text
16
+ );
17
+
18
+ insert into auth_user_identity (
19
+ id,
20
+ user_id,
21
+ scope_type,
22
+ scope_id,
23
+ kind,
24
+ value,
25
+ normalized_value,
26
+ verified_at,
27
+ is_primary_login,
28
+ created_at,
29
+ updated_at,
30
+ revoked_at,
31
+ replaced_by_id,
32
+ metadata
33
+ )
34
+ select
35
+ 'legacy-email:' || id,
36
+ id,
37
+ 'global',
38
+ '',
39
+ 'email',
40
+ email,
41
+ substr(email, 1, instr(email, '@') - 1) || lower(substr(email, instr(email, '@'))),
42
+ case when email_verified <> 0 then updated_at else null end,
43
+ 1,
44
+ created_at,
45
+ updated_at,
46
+ null,
47
+ null,
48
+ null
49
+ from auth_user;
50
+
51
+ drop index auth_user_email_idx;
52
+
53
+ alter table auth_user drop column email;
54
+ alter table auth_user drop column email_verified;
55
+
56
+ create unique index auth_user_identity_active_value_idx on auth_user_identity (scope_type, scope_id, kind, normalized_value) where revoked_at is null;
57
+ create index auth_user_identity_user_id_idx on auth_user_identity (user_id);
58
+ create index auth_user_identity_replaced_by_id_idx on auth_user_identity (replaced_by_id);
59
+ create unique index auth_user_identity_active_primary_idx on auth_user_identity (user_id) where revoked_at is null and is_primary_login = 1;
@@ -0,0 +1,46 @@
1
+ alter table auth_audit_log rename to auth_audit_log_legacy;
2
+
3
+ create table auth_audit_log (
4
+ storage_id integer primary key autoincrement,
5
+ id text,
6
+ type text not null,
7
+ user_id text,
8
+ actor_user_id text,
9
+ occurred_at integer not null,
10
+ request_ip_hash text,
11
+ request_user_agent_hash text,
12
+ event text not null,
13
+ created_at integer not null
14
+ );
15
+
16
+ insert into auth_audit_log (
17
+ id,
18
+ type,
19
+ user_id,
20
+ actor_user_id,
21
+ occurred_at,
22
+ request_ip_hash,
23
+ request_user_agent_hash,
24
+ event,
25
+ created_at
26
+ )
27
+ select
28
+ id,
29
+ type,
30
+ user_id,
31
+ actor_user_id,
32
+ occurred_at,
33
+ request_ip_hash,
34
+ request_user_agent_hash,
35
+ event,
36
+ created_at
37
+ from auth_audit_log_legacy
38
+ order by rowid;
39
+
40
+ drop table auth_audit_log_legacy;
41
+
42
+ create index auth_audit_log_id_idx on auth_audit_log (id);
43
+ create index auth_audit_log_user_occurred_at_idx on auth_audit_log (user_id, occurred_at);
44
+ create index auth_audit_log_actor_user_occurred_at_idx on auth_audit_log (actor_user_id, occurred_at);
45
+ create index auth_audit_log_type_occurred_at_idx on auth_audit_log (type, occurred_at);
46
+ create index auth_audit_log_occurred_at_idx on auth_audit_log (occurred_at);
@@ -0,0 +1,39 @@
1
+ alter table auth_oauth_client_secret rename to auth_oauth_client_secret_legacy;
2
+
3
+ create table auth_oauth_client_secret (
4
+ prefix text not null,
5
+ client_id text not null,
6
+ secret_hash text not null,
7
+ authentication_methods text not null,
8
+ created_at integer not null,
9
+ expires_at integer,
10
+ last_used_at integer,
11
+ revoked_at integer,
12
+ metadata text,
13
+ primary key (client_id, prefix)
14
+ );
15
+
16
+ insert into auth_oauth_client_secret (
17
+ prefix,
18
+ client_id,
19
+ secret_hash,
20
+ authentication_methods,
21
+ created_at,
22
+ expires_at,
23
+ last_used_at,
24
+ revoked_at,
25
+ metadata
26
+ )
27
+ select
28
+ prefix,
29
+ client_id,
30
+ secret_hash,
31
+ authentication_methods,
32
+ created_at,
33
+ expires_at,
34
+ last_used_at,
35
+ revoked_at,
36
+ metadata
37
+ from auth_oauth_client_secret_legacy;
38
+
39
+ drop table auth_oauth_client_secret_legacy;
@@ -0,0 +1,152 @@
1
+ create table if not exists auth_invitation (
2
+ id text primary key,
3
+ kind text not null,
4
+ target_type text not null,
5
+ target_id text not null,
6
+ intent_type text not null,
7
+ intent_version integer not null,
8
+ intent_payload text not null,
9
+ recipient_type text,
10
+ recipient_reference text,
11
+ issued_by_type text,
12
+ issued_by_id text,
13
+ created_at integer not null,
14
+ expires_at integer not null,
15
+ token_hash text not null,
16
+ accepted_at integer,
17
+ accepted_by_type text,
18
+ accepted_by_id text,
19
+ revoked_at integer,
20
+ superseded_at integer,
21
+ superseded_by_id text,
22
+ metadata text,
23
+ check (length(id) = 22 and id not glob '*[^A-Za-z0-9_-]*'),
24
+ check (length(kind) > 0),
25
+ check (length(target_type) > 0 and length(target_id) > 0),
26
+ check (length(intent_type) > 0),
27
+ check (typeof(intent_version) = 'integer' and intent_version >= 1),
28
+ check (
29
+ case
30
+ when json_valid(intent_payload) then json_type(intent_payload) = 'object'
31
+ else 0
32
+ end
33
+ ),
34
+ check ((recipient_type is null) = (recipient_reference is null)),
35
+ check (recipient_type is null or (length(recipient_type) > 0 and length(recipient_reference) > 0)),
36
+ check ((issued_by_type is null) = (issued_by_id is null)),
37
+ check (issued_by_type is null or (length(issued_by_type) > 0 and length(issued_by_id) > 0)),
38
+ check (typeof(created_at) = 'integer' and created_at >= 0),
39
+ check (typeof(expires_at) = 'integer' and expires_at > created_at),
40
+ check (length(token_hash) > 7 and substr(token_hash, 1, 7) = 'sha256:'),
41
+ check ((accepted_at is null) = (accepted_by_type is null)),
42
+ check ((accepted_by_type is null) = (accepted_by_id is null)),
43
+ check (accepted_by_type is null or (length(accepted_by_type) > 0 and length(accepted_by_id) > 0)),
44
+ check ((superseded_at is null) = (superseded_by_id is null)),
45
+ check (
46
+ superseded_by_id is null or
47
+ (length(superseded_by_id) = 22 and superseded_by_id not glob '*[^A-Za-z0-9_-]*')
48
+ ),
49
+ check (
50
+ (accepted_at is not null) +
51
+ (revoked_at is not null) +
52
+ (superseded_at is not null) <= 1
53
+ ),
54
+ check (accepted_at is null or (typeof(accepted_at) = 'integer' and accepted_at >= created_at)),
55
+ check (revoked_at is null or (typeof(revoked_at) = 'integer' and revoked_at >= created_at)),
56
+ check (superseded_at is null or (typeof(superseded_at) = 'integer' and superseded_at >= created_at)),
57
+ check (
58
+ metadata is null or
59
+ case
60
+ when json_valid(metadata) then json_type(metadata) = 'object'
61
+ else 0
62
+ end
63
+ )
64
+ );
65
+
66
+ create index if not exists auth_invitation_created_at_idx
67
+ on auth_invitation (created_at, id);
68
+ create index if not exists auth_invitation_kind_created_at_idx
69
+ on auth_invitation (kind, created_at, id);
70
+ create index if not exists auth_invitation_target_created_at_idx
71
+ on auth_invitation (target_type, target_id, created_at, id);
72
+ create index if not exists auth_invitation_recipient_created_at_idx
73
+ on auth_invitation (recipient_type, recipient_reference, created_at, id);
74
+ create index if not exists auth_invitation_issued_by_created_at_idx
75
+ on auth_invitation (issued_by_type, issued_by_id, created_at, id);
76
+ create index if not exists auth_invitation_pending_expires_at_idx
77
+ on auth_invitation (expires_at, created_at, id)
78
+ where accepted_at is null and revoked_at is null and superseded_at is null;
79
+
80
+ create table if not exists auth_access_grant (
81
+ id text primary key,
82
+ target_type text not null,
83
+ target_id text not null,
84
+ capabilities text not null,
85
+ binding_type text not null,
86
+ binding_subject_type text,
87
+ binding_subject_id text,
88
+ issuer_type text,
89
+ issuer_id text,
90
+ created_at integer not null,
91
+ expires_at integer,
92
+ token_hash text,
93
+ revoked_at integer,
94
+ superseded_at integer,
95
+ superseded_by_id text,
96
+ metadata text,
97
+ check (length(id) = 22 and id not glob '*[^A-Za-z0-9_-]*'),
98
+ check (length(target_type) > 0 and length(target_id) > 0),
99
+ check (
100
+ case
101
+ when json_valid(capabilities) then
102
+ json_type(capabilities) = 'array' and json_array_length(capabilities) > 0
103
+ else 0
104
+ end
105
+ ),
106
+ check (binding_type in ('bearer', 'subject', 'subject-and-bearer')),
107
+ check ((binding_subject_type is null) = (binding_subject_id is null)),
108
+ check (binding_subject_type is null or (length(binding_subject_type) > 0 and length(binding_subject_id) > 0)),
109
+ check (
110
+ (binding_type = 'bearer' and binding_subject_type is null) or
111
+ (binding_type in ('subject', 'subject-and-bearer') and binding_subject_type is not null)
112
+ ),
113
+ check ((issuer_type is null) = (issuer_id is null)),
114
+ check (issuer_type is null or (length(issuer_type) > 0 and length(issuer_id) > 0)),
115
+ check (typeof(created_at) = 'integer' and created_at >= 0),
116
+ check (
117
+ expires_at is null or
118
+ (typeof(expires_at) = 'integer' and expires_at > created_at)
119
+ ),
120
+ check ((binding_type = 'subject') = (token_hash is null)),
121
+ check (
122
+ token_hash is null or
123
+ (length(token_hash) > 7 and substr(token_hash, 1, 7) = 'sha256:')
124
+ ),
125
+ check ((superseded_at is null) = (superseded_by_id is null)),
126
+ check (
127
+ superseded_by_id is null or
128
+ (length(superseded_by_id) = 22 and superseded_by_id not glob '*[^A-Za-z0-9_-]*')
129
+ ),
130
+ check ((revoked_at is not null) + (superseded_at is not null) <= 1),
131
+ check (revoked_at is null or (typeof(revoked_at) = 'integer' and revoked_at >= created_at)),
132
+ check (superseded_at is null or (typeof(superseded_at) = 'integer' and superseded_at >= created_at)),
133
+ check (
134
+ metadata is null or
135
+ case
136
+ when json_valid(metadata) then json_type(metadata) = 'object'
137
+ else 0
138
+ end
139
+ )
140
+ );
141
+
142
+ create index if not exists auth_access_grant_created_at_idx
143
+ on auth_access_grant (created_at, id);
144
+ create index if not exists auth_access_grant_target_created_at_idx
145
+ on auth_access_grant (target_type, target_id, created_at, id);
146
+ create index if not exists auth_access_grant_issuer_created_at_idx
147
+ on auth_access_grant (issuer_type, issuer_id, created_at, id);
148
+ create index if not exists auth_access_grant_subject_created_at_idx
149
+ on auth_access_grant (binding_subject_type, binding_subject_id, created_at, id);
150
+ create index if not exists auth_access_grant_active_expires_at_idx
151
+ on auth_access_grant (expires_at, created_at, id)
152
+ where revoked_at is null and superseded_at is null;
@@ -0,0 +1,77 @@
1
+ create table auth_user (
2
+ id text constraint auth_user_pkey primary key,
3
+ created_at bigint not null,
4
+ updated_at bigint not null,
5
+ disabled_at bigint,
6
+ metadata jsonb
7
+ );
8
+
9
+ create table auth_user_identity (
10
+ id text constraint auth_user_identity_pkey primary key,
11
+ user_id text not null,
12
+ scope_type text not null,
13
+ scope_id text not null,
14
+ kind text not null,
15
+ value text not null,
16
+ normalized_value text not null,
17
+ verified_at bigint,
18
+ is_primary_login boolean not null default false,
19
+ created_at bigint not null,
20
+ updated_at bigint not null,
21
+ revoked_at bigint,
22
+ replaced_by_id text,
23
+ metadata jsonb
24
+ );
25
+ create unique index auth_user_identity_active_value_idx
26
+ on auth_user_identity (scope_type, scope_id, kind, normalized_value)
27
+ where revoked_at is null;
28
+ create unique index auth_user_identity_active_primary_idx
29
+ on auth_user_identity (user_id) where revoked_at is null and is_primary_login;
30
+ create index auth_user_identity_user_id_idx on auth_user_identity (user_id);
31
+ create index auth_user_identity_replaced_by_id_idx on auth_user_identity (replaced_by_id);
32
+
33
+ create table auth_credential (
34
+ id text constraint auth_credential_pkey primary key,
35
+ user_id text not null,
36
+ type text not null,
37
+ password_hash text,
38
+ created_at bigint not null,
39
+ updated_at bigint not null,
40
+ revoked_at bigint,
41
+ metadata jsonb,
42
+ constraint auth_credential_user_type_key unique (user_id, type)
43
+ );
44
+ create index auth_credential_user_id_idx on auth_credential (user_id);
45
+
46
+ create table auth_session (
47
+ id text constraint auth_session_pkey primary key,
48
+ user_id text not null,
49
+ secret_hash text not null,
50
+ created_at bigint not null,
51
+ expires_at bigint not null,
52
+ auth_time bigint not null,
53
+ authentication_events jsonb not null,
54
+ aal text not null,
55
+ amr jsonb not null,
56
+ claims jsonb,
57
+ mfa_verified_at bigint,
58
+ metadata jsonb,
59
+ revoked_at bigint,
60
+ last_seen_at bigint,
61
+ rotated_at bigint
62
+ );
63
+ create index auth_session_user_id_idx on auth_session (user_id);
64
+ create index auth_session_expires_at_idx on auth_session (expires_at);
65
+
66
+ create table auth_verification (
67
+ id text constraint auth_verification_pkey primary key,
68
+ type text not null,
69
+ subject text not null,
70
+ secret_hash text,
71
+ created_at bigint not null,
72
+ expires_at bigint not null,
73
+ metadata jsonb,
74
+ consumed_at bigint
75
+ );
76
+ create index auth_verification_type_subject_idx on auth_verification (type, subject);
77
+ create index auth_verification_expires_at_idx on auth_verification (expires_at);