@nauth-toolkit/core 0.1.14 → 0.1.17

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 (623) hide show
  1. package/dist/adapters/database-columns.d.ts +70 -0
  2. package/dist/adapters/database-columns.d.ts.map +1 -1
  3. package/dist/adapters/database-columns.js +76 -2
  4. package/dist/adapters/database-columns.js.map +1 -1
  5. package/dist/adapters/express.adapter.d.ts +66 -0
  6. package/dist/adapters/express.adapter.d.ts.map +1 -1
  7. package/dist/adapters/express.adapter.js +80 -0
  8. package/dist/adapters/express.adapter.js.map +1 -1
  9. package/dist/adapters/fastify.adapter.d.ts +42 -0
  10. package/dist/adapters/fastify.adapter.d.ts.map +1 -1
  11. package/dist/adapters/fastify.adapter.js +86 -0
  12. package/dist/adapters/fastify.adapter.js.map +1 -1
  13. package/dist/adapters/index.d.ts +5 -0
  14. package/dist/adapters/index.d.ts.map +1 -1
  15. package/dist/adapters/index.js +9 -0
  16. package/dist/adapters/index.js.map +1 -1
  17. package/dist/adapters/storage.factory.d.ts +107 -0
  18. package/dist/adapters/storage.factory.d.ts.map +1 -1
  19. package/dist/adapters/storage.factory.js +114 -0
  20. package/dist/adapters/storage.factory.js.map +1 -1
  21. package/dist/adapters.d.ts +8 -0
  22. package/dist/adapters.d.ts.map +1 -1
  23. package/dist/adapters.js +8 -0
  24. package/dist/adapters.js.map +1 -1
  25. package/dist/bootstrap.d.ts +82 -0
  26. package/dist/bootstrap.d.ts.map +1 -1
  27. package/dist/bootstrap.js +106 -0
  28. package/dist/bootstrap.js.map +1 -1
  29. package/dist/dto/admin-set-password.dto.d.ts +90 -0
  30. package/dist/dto/admin-set-password.dto.d.ts.map +1 -1
  31. package/dist/dto/admin-set-password.dto.js +91 -0
  32. package/dist/dto/admin-set-password.dto.js.map +1 -1
  33. package/dist/dto/auth-challenge.dto.d.ts +170 -0
  34. package/dist/dto/auth-challenge.dto.d.ts.map +1 -1
  35. package/dist/dto/auth-challenge.dto.js +170 -0
  36. package/dist/dto/auth-challenge.dto.js.map +1 -1
  37. package/dist/dto/auth-response.dto.d.ts +196 -0
  38. package/dist/dto/auth-response.dto.d.ts.map +1 -1
  39. package/dist/dto/auth-response.dto.js +149 -0
  40. package/dist/dto/auth-response.dto.js.map +1 -1
  41. package/dist/dto/challenge-response.dto.d.ts +155 -0
  42. package/dist/dto/challenge-response.dto.d.ts.map +1 -1
  43. package/dist/dto/challenge-response.dto.js +8 -0
  44. package/dist/dto/challenge-response.dto.js.map +1 -1
  45. package/dist/dto/change-password-request.dto.d.ts +35 -0
  46. package/dist/dto/change-password-request.dto.d.ts.map +1 -1
  47. package/dist/dto/change-password-request.dto.js +35 -0
  48. package/dist/dto/change-password-request.dto.js.map +1 -1
  49. package/dist/dto/change-password-response.dto.d.ts +25 -0
  50. package/dist/dto/change-password-response.dto.d.ts.map +1 -1
  51. package/dist/dto/change-password-response.dto.js +25 -0
  52. package/dist/dto/change-password-response.dto.js.map +1 -1
  53. package/dist/dto/change-password.dto.d.ts +45 -0
  54. package/dist/dto/change-password.dto.d.ts.map +1 -1
  55. package/dist/dto/change-password.dto.js +45 -0
  56. package/dist/dto/change-password.dto.js.map +1 -1
  57. package/dist/dto/confirm-forgot-password.dto.d.ts +59 -0
  58. package/dist/dto/confirm-forgot-password.dto.d.ts.map +1 -1
  59. package/dist/dto/confirm-forgot-password.dto.js +59 -0
  60. package/dist/dto/confirm-forgot-password.dto.js.map +1 -1
  61. package/dist/dto/error-response.dto.d.ts +103 -0
  62. package/dist/dto/error-response.dto.d.ts.map +1 -1
  63. package/dist/dto/error-response.dto.js +103 -0
  64. package/dist/dto/error-response.dto.js.map +1 -1
  65. package/dist/dto/forgot-password.dto.d.ts +58 -0
  66. package/dist/dto/forgot-password.dto.d.ts.map +1 -1
  67. package/dist/dto/forgot-password.dto.js +58 -0
  68. package/dist/dto/forgot-password.dto.js.map +1 -1
  69. package/dist/dto/get-available-methods.dto.d.ts +37 -0
  70. package/dist/dto/get-available-methods.dto.d.ts.map +1 -1
  71. package/dist/dto/get-available-methods.dto.js +37 -0
  72. package/dist/dto/get-available-methods.dto.js.map +1 -1
  73. package/dist/dto/get-challenge-data-response.dto.d.ts +24 -0
  74. package/dist/dto/get-challenge-data-response.dto.d.ts.map +1 -1
  75. package/dist/dto/get-challenge-data-response.dto.js +24 -0
  76. package/dist/dto/get-challenge-data-response.dto.js.map +1 -1
  77. package/dist/dto/get-challenge-data.dto.d.ts +46 -0
  78. package/dist/dto/get-challenge-data.dto.d.ts.map +1 -1
  79. package/dist/dto/get-challenge-data.dto.js +46 -0
  80. package/dist/dto/get-challenge-data.dto.js.map +1 -1
  81. package/dist/dto/get-client-info.dto.d.ts +74 -0
  82. package/dist/dto/get-client-info.dto.d.ts.map +1 -1
  83. package/dist/dto/get-client-info.dto.js +74 -0
  84. package/dist/dto/get-client-info.dto.js.map +1 -1
  85. package/dist/dto/get-device-token-response.dto.d.ts +21 -0
  86. package/dist/dto/get-device-token-response.dto.d.ts.map +1 -1
  87. package/dist/dto/get-device-token-response.dto.js +21 -0
  88. package/dist/dto/get-device-token-response.dto.js.map +1 -1
  89. package/dist/dto/get-events-by-type.dto.d.ts +50 -0
  90. package/dist/dto/get-events-by-type.dto.d.ts.map +1 -1
  91. package/dist/dto/get-events-by-type.dto.js +50 -0
  92. package/dist/dto/get-events-by-type.dto.js.map +1 -1
  93. package/dist/dto/get-ip-address-response.dto.d.ts +20 -0
  94. package/dist/dto/get-ip-address-response.dto.d.ts.map +1 -1
  95. package/dist/dto/get-ip-address-response.dto.js +20 -0
  96. package/dist/dto/get-ip-address-response.dto.js.map +1 -1
  97. package/dist/dto/get-mfa-status.dto.d.ts +59 -0
  98. package/dist/dto/get-mfa-status.dto.d.ts.map +1 -1
  99. package/dist/dto/get-mfa-status.dto.js +59 -0
  100. package/dist/dto/get-mfa-status.dto.js.map +1 -1
  101. package/dist/dto/get-risk-assessment-history.dto.d.ts +28 -0
  102. package/dist/dto/get-risk-assessment-history.dto.d.ts.map +1 -1
  103. package/dist/dto/get-risk-assessment-history.dto.js +28 -0
  104. package/dist/dto/get-risk-assessment-history.dto.js.map +1 -1
  105. package/dist/dto/get-session-id-response.dto.d.ts +21 -0
  106. package/dist/dto/get-session-id-response.dto.d.ts.map +1 -1
  107. package/dist/dto/get-session-id-response.dto.js +21 -0
  108. package/dist/dto/get-session-id-response.dto.js.map +1 -1
  109. package/dist/dto/get-setup-data-response.dto.d.ts +27 -0
  110. package/dist/dto/get-setup-data-response.dto.d.ts.map +1 -1
  111. package/dist/dto/get-setup-data-response.dto.js +27 -0
  112. package/dist/dto/get-setup-data-response.dto.js.map +1 -1
  113. package/dist/dto/get-setup-data.dto.d.ts +51 -0
  114. package/dist/dto/get-setup-data.dto.d.ts.map +1 -1
  115. package/dist/dto/get-setup-data.dto.js +51 -0
  116. package/dist/dto/get-setup-data.dto.js.map +1 -1
  117. package/dist/dto/get-suspicious-activity.dto.d.ts +31 -0
  118. package/dist/dto/get-suspicious-activity.dto.d.ts.map +1 -1
  119. package/dist/dto/get-suspicious-activity.dto.js +31 -0
  120. package/dist/dto/get-suspicious-activity.dto.js.map +1 -1
  121. package/dist/dto/get-user-agent-response.dto.d.ts +19 -0
  122. package/dist/dto/get-user-agent-response.dto.d.ts.map +1 -1
  123. package/dist/dto/get-user-agent-response.dto.js +19 -0
  124. package/dist/dto/get-user-agent-response.dto.js.map +1 -1
  125. package/dist/dto/get-user-auth-history.dto.d.ts +64 -0
  126. package/dist/dto/get-user-auth-history.dto.d.ts.map +1 -1
  127. package/dist/dto/get-user-auth-history.dto.js +64 -0
  128. package/dist/dto/get-user-auth-history.dto.js.map +1 -1
  129. package/dist/dto/get-user-by-email.dto.d.ts +42 -0
  130. package/dist/dto/get-user-by-email.dto.d.ts.map +1 -1
  131. package/dist/dto/get-user-by-email.dto.js +42 -0
  132. package/dist/dto/get-user-by-email.dto.js.map +1 -1
  133. package/dist/dto/get-user-by-id.dto.d.ts +32 -0
  134. package/dist/dto/get-user-by-id.dto.d.ts.map +1 -1
  135. package/dist/dto/get-user-by-id.dto.js +32 -0
  136. package/dist/dto/get-user-by-id.dto.js.map +1 -1
  137. package/dist/dto/get-user-devices.dto.d.ts +34 -0
  138. package/dist/dto/get-user-devices.dto.d.ts.map +1 -1
  139. package/dist/dto/get-user-devices.dto.js +34 -0
  140. package/dist/dto/get-user-devices.dto.js.map +1 -1
  141. package/dist/dto/get-user-response.dto.d.ts +14 -0
  142. package/dist/dto/get-user-response.dto.d.ts.map +1 -1
  143. package/dist/dto/get-user-response.dto.js +15 -0
  144. package/dist/dto/get-user-response.dto.js.map +1 -1
  145. package/dist/dto/has-provider.dto.d.ts +33 -0
  146. package/dist/dto/has-provider.dto.d.ts.map +1 -1
  147. package/dist/dto/has-provider.dto.js +33 -0
  148. package/dist/dto/has-provider.dto.js.map +1 -1
  149. package/dist/dto/index.js +5 -0
  150. package/dist/dto/index.js.map +1 -1
  151. package/dist/dto/is-trusted-device-response.dto.d.ts +28 -0
  152. package/dist/dto/is-trusted-device-response.dto.d.ts.map +1 -1
  153. package/dist/dto/is-trusted-device-response.dto.js +28 -0
  154. package/dist/dto/is-trusted-device-response.dto.js.map +1 -1
  155. package/dist/dto/list-providers-response.dto.d.ts +19 -0
  156. package/dist/dto/list-providers-response.dto.d.ts.map +1 -1
  157. package/dist/dto/list-providers-response.dto.js +19 -0
  158. package/dist/dto/list-providers-response.dto.js.map +1 -1
  159. package/dist/dto/login.dto.d.ts +48 -0
  160. package/dist/dto/login.dto.d.ts.map +1 -1
  161. package/dist/dto/login.dto.js +50 -1
  162. package/dist/dto/login.dto.js.map +1 -1
  163. package/dist/dto/logout-all-response.dto.d.ts +20 -0
  164. package/dist/dto/logout-all-response.dto.d.ts.map +1 -1
  165. package/dist/dto/logout-all-response.dto.js +20 -0
  166. package/dist/dto/logout-all-response.dto.js.map +1 -1
  167. package/dist/dto/logout-all.dto.d.ts +42 -0
  168. package/dist/dto/logout-all.dto.d.ts.map +1 -1
  169. package/dist/dto/logout-all.dto.js +42 -0
  170. package/dist/dto/logout-all.dto.js.map +1 -1
  171. package/dist/dto/logout-response.dto.d.ts +21 -0
  172. package/dist/dto/logout-response.dto.d.ts.map +1 -1
  173. package/dist/dto/logout-response.dto.js +21 -0
  174. package/dist/dto/logout-response.dto.js.map +1 -1
  175. package/dist/dto/logout.dto.d.ts +45 -0
  176. package/dist/dto/logout.dto.d.ts.map +1 -1
  177. package/dist/dto/logout.dto.js +45 -0
  178. package/dist/dto/logout.dto.js.map +1 -1
  179. package/dist/dto/refresh-token.dto.d.ts +28 -0
  180. package/dist/dto/refresh-token.dto.d.ts.map +1 -1
  181. package/dist/dto/refresh-token.dto.js +28 -0
  182. package/dist/dto/refresh-token.dto.js.map +1 -1
  183. package/dist/dto/remove-devices.dto.d.ts +51 -0
  184. package/dist/dto/remove-devices.dto.d.ts.map +1 -1
  185. package/dist/dto/remove-devices.dto.js +51 -0
  186. package/dist/dto/remove-devices.dto.js.map +1 -1
  187. package/dist/dto/resend-code-response.dto.d.ts +28 -0
  188. package/dist/dto/resend-code-response.dto.d.ts.map +1 -1
  189. package/dist/dto/resend-code-response.dto.js +28 -0
  190. package/dist/dto/resend-code-response.dto.js.map +1 -1
  191. package/dist/dto/resend-code.dto.d.ts +37 -0
  192. package/dist/dto/resend-code.dto.d.ts.map +1 -1
  193. package/dist/dto/resend-code.dto.js +37 -0
  194. package/dist/dto/resend-code.dto.js.map +1 -1
  195. package/dist/dto/reset-password.dto.d.ts +74 -0
  196. package/dist/dto/reset-password.dto.d.ts.map +1 -1
  197. package/dist/dto/reset-password.dto.js +76 -1
  198. package/dist/dto/reset-password.dto.js.map +1 -1
  199. package/dist/dto/respond-challenge.dto.d.ts +147 -0
  200. package/dist/dto/respond-challenge.dto.d.ts.map +1 -1
  201. package/dist/dto/respond-challenge.dto.js +162 -0
  202. package/dist/dto/respond-challenge.dto.js.map +1 -1
  203. package/dist/dto/set-mfa-exemption.dto.d.ts +65 -0
  204. package/dist/dto/set-mfa-exemption.dto.d.ts.map +1 -1
  205. package/dist/dto/set-mfa-exemption.dto.js +65 -0
  206. package/dist/dto/set-mfa-exemption.dto.js.map +1 -1
  207. package/dist/dto/set-must-change-password-response.dto.d.ts +23 -0
  208. package/dist/dto/set-must-change-password-response.dto.d.ts.map +1 -1
  209. package/dist/dto/set-must-change-password-response.dto.js +23 -0
  210. package/dist/dto/set-must-change-password-response.dto.js.map +1 -1
  211. package/dist/dto/set-must-change-password.dto.d.ts +32 -0
  212. package/dist/dto/set-must-change-password.dto.d.ts.map +1 -1
  213. package/dist/dto/set-must-change-password.dto.js +32 -0
  214. package/dist/dto/set-must-change-password.dto.js.map +1 -1
  215. package/dist/dto/set-preferred-method.dto.d.ts +48 -0
  216. package/dist/dto/set-preferred-method.dto.d.ts.map +1 -1
  217. package/dist/dto/set-preferred-method.dto.js +48 -0
  218. package/dist/dto/set-preferred-method.dto.js.map +1 -1
  219. package/dist/dto/setup-mfa.dto.d.ts +62 -0
  220. package/dist/dto/setup-mfa.dto.d.ts.map +1 -1
  221. package/dist/dto/setup-mfa.dto.js +62 -0
  222. package/dist/dto/setup-mfa.dto.js.map +1 -1
  223. package/dist/dto/signup.dto.d.ts +92 -0
  224. package/dist/dto/signup.dto.d.ts.map +1 -1
  225. package/dist/dto/signup.dto.js +93 -0
  226. package/dist/dto/signup.dto.js.map +1 -1
  227. package/dist/dto/social-auth.dto.d.ts +234 -0
  228. package/dist/dto/social-auth.dto.d.ts.map +1 -1
  229. package/dist/dto/social-auth.dto.js +234 -0
  230. package/dist/dto/social-auth.dto.js.map +1 -1
  231. package/dist/dto/trust-device-response.dto.d.ts +26 -0
  232. package/dist/dto/trust-device-response.dto.d.ts.map +1 -1
  233. package/dist/dto/trust-device-response.dto.js +26 -0
  234. package/dist/dto/trust-device-response.dto.js.map +1 -1
  235. package/dist/dto/trust-device.dto.d.ts +9 -0
  236. package/dist/dto/trust-device.dto.d.ts.map +1 -1
  237. package/dist/dto/trust-device.dto.js +9 -0
  238. package/dist/dto/trust-device.dto.js.map +1 -1
  239. package/dist/dto/update-user-attributes-request.dto.d.ts +36 -0
  240. package/dist/dto/update-user-attributes-request.dto.d.ts.map +1 -1
  241. package/dist/dto/update-user-attributes-request.dto.js +36 -0
  242. package/dist/dto/update-user-attributes-request.dto.js.map +1 -1
  243. package/dist/dto/user-response.dto.d.ts +81 -0
  244. package/dist/dto/user-response.dto.d.ts.map +1 -1
  245. package/dist/dto/user-response.dto.js +84 -2
  246. package/dist/dto/user-response.dto.js.map +1 -1
  247. package/dist/dto/user-update.dto.d.ts +132 -0
  248. package/dist/dto/user-update.dto.d.ts.map +1 -1
  249. package/dist/dto/user-update.dto.js +133 -0
  250. package/dist/dto/user-update.dto.js.map +1 -1
  251. package/dist/dto/verify-email.dto.d.ts +171 -0
  252. package/dist/dto/verify-email.dto.d.ts.map +1 -1
  253. package/dist/dto/verify-email.dto.js +173 -1
  254. package/dist/dto/verify-email.dto.js.map +1 -1
  255. package/dist/dto/verify-mfa-code.dto.d.ts +65 -0
  256. package/dist/dto/verify-mfa-code.dto.d.ts.map +1 -1
  257. package/dist/dto/verify-mfa-code.dto.js +65 -0
  258. package/dist/dto/verify-mfa-code.dto.js.map +1 -1
  259. package/dist/dto/verify-phone-by-sub.dto.d.ts +49 -0
  260. package/dist/dto/verify-phone-by-sub.dto.d.ts.map +1 -1
  261. package/dist/dto/verify-phone-by-sub.dto.js +49 -0
  262. package/dist/dto/verify-phone-by-sub.dto.js.map +1 -1
  263. package/dist/dto/verify-phone.dto.d.ts +139 -0
  264. package/dist/dto/verify-phone.dto.d.ts.map +1 -1
  265. package/dist/dto/verify-phone.dto.js +142 -1
  266. package/dist/dto/verify-phone.dto.js.map +1 -1
  267. package/dist/dto.d.ts +10 -0
  268. package/dist/dto.d.ts.map +1 -1
  269. package/dist/dto.js +10 -0
  270. package/dist/dto.js.map +1 -1
  271. package/dist/entities/auth-audit.entity.d.ts +159 -0
  272. package/dist/entities/auth-audit.entity.d.ts.map +1 -1
  273. package/dist/entities/auth-audit.entity.js +166 -0
  274. package/dist/entities/auth-audit.entity.js.map +1 -1
  275. package/dist/entities/challenge-session.entity.d.ts +87 -0
  276. package/dist/entities/challenge-session.entity.d.ts.map +1 -1
  277. package/dist/entities/challenge-session.entity.js +87 -0
  278. package/dist/entities/challenge-session.entity.js.map +1 -1
  279. package/dist/entities/index.d.ts +18 -0
  280. package/dist/entities/index.d.ts.map +1 -1
  281. package/dist/entities/index.js +18 -0
  282. package/dist/entities/index.js.map +1 -1
  283. package/dist/entities/login-attempt.entity.d.ts +43 -0
  284. package/dist/entities/login-attempt.entity.d.ts.map +1 -1
  285. package/dist/entities/login-attempt.entity.js +43 -0
  286. package/dist/entities/login-attempt.entity.js.map +1 -1
  287. package/dist/entities/mfa-device.entity.d.ts +112 -0
  288. package/dist/entities/mfa-device.entity.d.ts.map +1 -1
  289. package/dist/entities/mfa-device.entity.js +112 -0
  290. package/dist/entities/mfa-device.entity.js.map +1 -1
  291. package/dist/entities/rate-limit.entity.d.ts +31 -0
  292. package/dist/entities/rate-limit.entity.d.ts.map +1 -1
  293. package/dist/entities/rate-limit.entity.js +31 -0
  294. package/dist/entities/rate-limit.entity.js.map +1 -1
  295. package/dist/entities/session.entity.d.ts +121 -0
  296. package/dist/entities/session.entity.d.ts.map +1 -1
  297. package/dist/entities/session.entity.js +121 -0
  298. package/dist/entities/session.entity.js.map +1 -1
  299. package/dist/entities/social-account.entity.d.ts +75 -0
  300. package/dist/entities/social-account.entity.d.ts.map +1 -1
  301. package/dist/entities/social-account.entity.js +75 -0
  302. package/dist/entities/social-account.entity.js.map +1 -1
  303. package/dist/entities/storage-lock.entity.d.ts +28 -0
  304. package/dist/entities/storage-lock.entity.d.ts.map +1 -1
  305. package/dist/entities/storage-lock.entity.js +28 -0
  306. package/dist/entities/storage-lock.entity.js.map +1 -1
  307. package/dist/entities/trusted-device.entity.d.ts +83 -0
  308. package/dist/entities/trusted-device.entity.d.ts.map +1 -1
  309. package/dist/entities/trusted-device.entity.js +83 -0
  310. package/dist/entities/trusted-device.entity.js.map +1 -1
  311. package/dist/entities/user.entity.d.ts +166 -0
  312. package/dist/entities/user.entity.d.ts.map +1 -1
  313. package/dist/entities/user.entity.js +166 -0
  314. package/dist/entities/user.entity.js.map +1 -1
  315. package/dist/entities/verification-token.entity.d.ts +102 -0
  316. package/dist/entities/verification-token.entity.d.ts.map +1 -1
  317. package/dist/entities/verification-token.entity.js +102 -0
  318. package/dist/entities/verification-token.entity.js.map +1 -1
  319. package/dist/entities.d.ts +8 -0
  320. package/dist/entities.d.ts.map +1 -1
  321. package/dist/entities.js +8 -0
  322. package/dist/entities.js.map +1 -1
  323. package/dist/enums/auth-audit-event-type.enum.d.ts +211 -0
  324. package/dist/enums/auth-audit-event-type.enum.d.ts.map +1 -1
  325. package/dist/enums/auth-audit-event-type.enum.js +244 -0
  326. package/dist/enums/auth-audit-event-type.enum.js.map +1 -1
  327. package/dist/enums/error-codes.enum.d.ts +296 -0
  328. package/dist/enums/error-codes.enum.d.ts.map +1 -1
  329. package/dist/enums/error-codes.enum.js +332 -0
  330. package/dist/enums/error-codes.enum.js.map +1 -1
  331. package/dist/enums/mfa-method.enum.d.ts +74 -0
  332. package/dist/enums/mfa-method.enum.d.ts.map +1 -1
  333. package/dist/enums/mfa-method.enum.js +64 -0
  334. package/dist/enums/mfa-method.enum.js.map +1 -1
  335. package/dist/enums/risk-factor.enum.d.ts +91 -0
  336. package/dist/enums/risk-factor.enum.d.ts.map +1 -1
  337. package/dist/enums/risk-factor.enum.js +97 -0
  338. package/dist/enums/risk-factor.enum.js.map +1 -1
  339. package/dist/exceptions/nauth.exception.d.ts +149 -0
  340. package/dist/exceptions/nauth.exception.d.ts.map +1 -1
  341. package/dist/exceptions/nauth.exception.js +159 -0
  342. package/dist/exceptions/nauth.exception.js.map +1 -1
  343. package/dist/handlers/auth.handler.d.ts +32 -0
  344. package/dist/handlers/auth.handler.d.ts.map +1 -1
  345. package/dist/handlers/auth.handler.js +47 -1
  346. package/dist/handlers/auth.handler.js.map +1 -1
  347. package/dist/handlers/client-info.handler.d.ts +25 -0
  348. package/dist/handlers/client-info.handler.d.ts.map +1 -1
  349. package/dist/handlers/client-info.handler.js +36 -2
  350. package/dist/handlers/client-info.handler.js.map +1 -1
  351. package/dist/handlers/csrf.handler.d.ts +32 -0
  352. package/dist/handlers/csrf.handler.d.ts.map +1 -1
  353. package/dist/handlers/csrf.handler.js +49 -1
  354. package/dist/handlers/csrf.handler.js.map +1 -1
  355. package/dist/handlers/token-delivery.handler.d.ts +16 -0
  356. package/dist/handlers/token-delivery.handler.d.ts.map +1 -1
  357. package/dist/handlers/token-delivery.handler.js +22 -1
  358. package/dist/handlers/token-delivery.handler.js.map +1 -1
  359. package/dist/index.d.ts +34 -0
  360. package/dist/index.d.ts.map +1 -1
  361. package/dist/index.js +67 -0
  362. package/dist/index.js.map +1 -1
  363. package/dist/interfaces/client-info.interface.d.ts +58 -0
  364. package/dist/interfaces/client-info.interface.d.ts.map +1 -1
  365. package/dist/interfaces/config.interface.d.ts +1774 -0
  366. package/dist/interfaces/config.interface.d.ts.map +1 -1
  367. package/dist/interfaces/config.interface.js +16 -0
  368. package/dist/interfaces/config.interface.js.map +1 -1
  369. package/dist/interfaces/entities.interface.d.ts +48 -0
  370. package/dist/interfaces/entities.interface.d.ts.map +1 -1
  371. package/dist/interfaces/entities.interface.js +8 -0
  372. package/dist/interfaces/entities.interface.js.map +1 -1
  373. package/dist/interfaces/index.js +5 -0
  374. package/dist/interfaces/index.js.map +1 -1
  375. package/dist/interfaces/logger.interface.d.ts +213 -0
  376. package/dist/interfaces/logger.interface.d.ts.map +1 -1
  377. package/dist/interfaces/logger.interface.js +35 -0
  378. package/dist/interfaces/logger.interface.js.map +1 -1
  379. package/dist/interfaces/mfa-provider.interface.d.ts +134 -0
  380. package/dist/interfaces/mfa-provider.interface.d.ts.map +1 -1
  381. package/dist/interfaces/oauth.interface.d.ts +110 -0
  382. package/dist/interfaces/oauth.interface.d.ts.map +1 -1
  383. package/dist/interfaces/provider.interface.d.ts +83 -0
  384. package/dist/interfaces/provider.interface.d.ts.map +1 -1
  385. package/dist/interfaces/sms-template.interface.d.ts +246 -0
  386. package/dist/interfaces/sms-template.interface.d.ts.map +1 -1
  387. package/dist/interfaces/sms-template.interface.js +26 -0
  388. package/dist/interfaces/sms-template.interface.js.map +1 -1
  389. package/dist/interfaces/social-auth-provider.interface.d.ts +115 -0
  390. package/dist/interfaces/social-auth-provider.interface.d.ts.map +1 -1
  391. package/dist/interfaces/storage-adapter.interface.d.ts +37 -0
  392. package/dist/interfaces/storage-adapter.interface.d.ts.map +1 -1
  393. package/dist/interfaces/template.interface.d.ts +351 -0
  394. package/dist/interfaces/template.interface.d.ts.map +1 -1
  395. package/dist/interfaces/template.interface.js +13 -0
  396. package/dist/interfaces/template.interface.js.map +1 -1
  397. package/dist/interfaces/token-verifier.interface.d.ts +101 -0
  398. package/dist/interfaces/token-verifier.interface.d.ts.map +1 -1
  399. package/dist/interfaces.d.ts +8 -0
  400. package/dist/interfaces.d.ts.map +1 -1
  401. package/dist/interfaces.js +8 -0
  402. package/dist/interfaces.js.map +1 -1
  403. package/dist/internal.d.ts +120 -0
  404. package/dist/internal.d.ts.map +1 -1
  405. package/dist/internal.js +138 -0
  406. package/dist/internal.js.map +1 -1
  407. package/dist/platform/interfaces.d.ts +187 -0
  408. package/dist/platform/interfaces.d.ts.map +1 -1
  409. package/dist/platform/interfaces.js +11 -0
  410. package/dist/platform/interfaces.js.map +1 -1
  411. package/dist/schemas/auth-config.schema.d.ts +48 -0
  412. package/dist/schemas/auth-config.schema.d.ts.map +1 -1
  413. package/dist/schemas/auth-config.schema.js +188 -9
  414. package/dist/schemas/auth-config.schema.js.map +1 -1
  415. package/dist/services/adaptive-mfa-decision.service.d.ts +144 -0
  416. package/dist/services/adaptive-mfa-decision.service.d.ts.map +1 -1
  417. package/dist/services/adaptive-mfa-decision.service.js +151 -5
  418. package/dist/services/adaptive-mfa-decision.service.js.map +1 -1
  419. package/dist/services/auth-audit.service.d.ts +195 -0
  420. package/dist/services/auth-audit.service.d.ts.map +1 -1
  421. package/dist/services/auth-audit.service.js +228 -1
  422. package/dist/services/auth-audit.service.js.map +1 -1
  423. package/dist/services/auth-challenge-helper.service.d.ts +144 -1
  424. package/dist/services/auth-challenge-helper.service.d.ts.map +1 -1
  425. package/dist/services/auth-challenge-helper.service.js +295 -16
  426. package/dist/services/auth-challenge-helper.service.js.map +1 -1
  427. package/dist/services/auth-flow-context-builder.service.d.ts +120 -1
  428. package/dist/services/auth-flow-context-builder.service.d.ts.map +1 -1
  429. package/dist/services/auth-flow-context-builder.service.js +184 -5
  430. package/dist/services/auth-flow-context-builder.service.js.map +1 -1
  431. package/dist/services/auth-flow-rules.d.ts +136 -0
  432. package/dist/services/auth-flow-rules.d.ts.map +1 -1
  433. package/dist/services/auth-flow-rules.js +137 -0
  434. package/dist/services/auth-flow-rules.js.map +1 -1
  435. package/dist/services/auth-flow-state-definitions.d.ts +40 -0
  436. package/dist/services/auth-flow-state-definitions.d.ts.map +1 -1
  437. package/dist/services/auth-flow-state-definitions.js +98 -0
  438. package/dist/services/auth-flow-state-definitions.js.map +1 -1
  439. package/dist/services/auth-flow-state-machine.service.d.ts +91 -0
  440. package/dist/services/auth-flow-state-machine.service.d.ts.map +1 -1
  441. package/dist/services/auth-flow-state-machine.service.js +102 -0
  442. package/dist/services/auth-flow-state-machine.service.js.map +1 -1
  443. package/dist/services/auth-flow-state-machine.types.d.ts +221 -0
  444. package/dist/services/auth-flow-state-machine.types.d.ts.map +1 -1
  445. package/dist/services/auth-flow-state-machine.types.js +47 -0
  446. package/dist/services/auth-flow-state-machine.types.js.map +1 -1
  447. package/dist/services/auth.service.d.ts +397 -1
  448. package/dist/services/auth.service.d.ts.map +1 -1
  449. package/dist/services/auth.service.js +943 -27
  450. package/dist/services/auth.service.js.map +1 -1
  451. package/dist/services/challenge.service.d.ts +255 -1
  452. package/dist/services/challenge.service.d.ts.map +1 -1
  453. package/dist/services/challenge.service.js +327 -3
  454. package/dist/services/challenge.service.js.map +1 -1
  455. package/dist/services/client-info.service.d.ts +143 -0
  456. package/dist/services/client-info.service.d.ts.map +1 -1
  457. package/dist/services/client-info.service.js +161 -0
  458. package/dist/services/client-info.service.js.map +1 -1
  459. package/dist/services/csrf.service.d.ts +15 -0
  460. package/dist/services/csrf.service.d.ts.map +1 -1
  461. package/dist/services/csrf.service.js +16 -0
  462. package/dist/services/csrf.service.js.map +1 -1
  463. package/dist/services/email-verification.service.d.ts +52 -0
  464. package/dist/services/email-verification.service.d.ts.map +1 -1
  465. package/dist/services/email-verification.service.js +149 -10
  466. package/dist/services/email-verification.service.js.map +1 -1
  467. package/dist/services/geo-location.service.d.ts +105 -0
  468. package/dist/services/geo-location.service.d.ts.map +1 -1
  469. package/dist/services/geo-location.service.js +188 -2
  470. package/dist/services/geo-location.service.js.map +1 -1
  471. package/dist/services/jwt.service.d.ts +257 -0
  472. package/dist/services/jwt.service.d.ts.map +1 -1
  473. package/dist/services/jwt.service.js +284 -1
  474. package/dist/services/jwt.service.js.map +1 -1
  475. package/dist/services/mfa-base.service.d.ts +179 -1
  476. package/dist/services/mfa-base.service.d.ts.map +1 -1
  477. package/dist/services/mfa-base.service.js +256 -2
  478. package/dist/services/mfa-base.service.js.map +1 -1
  479. package/dist/services/mfa.service.d.ts +304 -0
  480. package/dist/services/mfa.service.d.ts.map +1 -1
  481. package/dist/services/mfa.service.js +380 -0
  482. package/dist/services/mfa.service.js.map +1 -1
  483. package/dist/services/password-reset.service.d.ts +46 -0
  484. package/dist/services/password-reset.service.d.ts.map +1 -1
  485. package/dist/services/password-reset.service.js +79 -0
  486. package/dist/services/password-reset.service.js.map +1 -1
  487. package/dist/services/password.service.d.ts +139 -0
  488. package/dist/services/password.service.d.ts.map +1 -1
  489. package/dist/services/password.service.js +167 -9
  490. package/dist/services/password.service.js.map +1 -1
  491. package/dist/services/phone-verification.service.d.ts +75 -0
  492. package/dist/services/phone-verification.service.d.ts.map +1 -1
  493. package/dist/services/phone-verification.service.js +188 -6
  494. package/dist/services/phone-verification.service.js.map +1 -1
  495. package/dist/services/risk-detection.service.d.ts +198 -0
  496. package/dist/services/risk-detection.service.d.ts.map +1 -1
  497. package/dist/services/risk-detection.service.js +358 -11
  498. package/dist/services/risk-detection.service.js.map +1 -1
  499. package/dist/services/risk-scoring.service.d.ts +84 -0
  500. package/dist/services/risk-scoring.service.d.ts.map +1 -1
  501. package/dist/services/risk-scoring.service.js +87 -0
  502. package/dist/services/risk-scoring.service.js.map +1 -1
  503. package/dist/services/session.service.d.ts +204 -0
  504. package/dist/services/session.service.d.ts.map +1 -1
  505. package/dist/services/session.service.js +289 -4
  506. package/dist/services/session.service.js.map +1 -1
  507. package/dist/services/social-auth-base.service.d.ts +123 -1
  508. package/dist/services/social-auth-base.service.d.ts.map +1 -1
  509. package/dist/services/social-auth-base.service.js +155 -2
  510. package/dist/services/social-auth-base.service.js.map +1 -1
  511. package/dist/services/social-auth.service.d.ts +191 -0
  512. package/dist/services/social-auth.service.d.ts.map +1 -1
  513. package/dist/services/social-auth.service.js +215 -2
  514. package/dist/services/social-auth.service.js.map +1 -1
  515. package/dist/services/social-provider-registry.service.d.ts +86 -0
  516. package/dist/services/social-provider-registry.service.d.ts.map +1 -1
  517. package/dist/services/social-provider-registry.service.js +86 -0
  518. package/dist/services/social-provider-registry.service.js.map +1 -1
  519. package/dist/services/trusted-device.service.d.ts +105 -0
  520. package/dist/services/trusted-device.service.d.ts.map +1 -1
  521. package/dist/services/trusted-device.service.js +133 -4
  522. package/dist/services/trusted-device.service.js.map +1 -1
  523. package/dist/storage/account-lockout-storage.service.d.ts +35 -0
  524. package/dist/storage/account-lockout-storage.service.d.ts.map +1 -1
  525. package/dist/storage/account-lockout-storage.service.js +35 -0
  526. package/dist/storage/account-lockout-storage.service.js.map +1 -1
  527. package/dist/storage/memory-storage.adapter.d.ts +148 -0
  528. package/dist/storage/memory-storage.adapter.d.ts.map +1 -1
  529. package/dist/storage/memory-storage.adapter.js +201 -6
  530. package/dist/storage/memory-storage.adapter.js.map +1 -1
  531. package/dist/storage/rate-limit-storage.service.d.ts +3 -0
  532. package/dist/storage/rate-limit-storage.service.d.ts.map +1 -1
  533. package/dist/storage/rate-limit-storage.service.js +4 -0
  534. package/dist/storage/rate-limit-storage.service.js.map +1 -1
  535. package/dist/storage.d.ts +8 -0
  536. package/dist/storage.d.ts.map +1 -1
  537. package/dist/storage.js +8 -0
  538. package/dist/storage.js.map +1 -1
  539. package/dist/templates/html-template.engine.d.ts +110 -0
  540. package/dist/templates/html-template.engine.d.ts.map +1 -1
  541. package/dist/templates/html-template.engine.js +147 -0
  542. package/dist/templates/html-template.engine.js.map +1 -1
  543. package/dist/templates/index.d.ts +5 -0
  544. package/dist/templates/index.d.ts.map +1 -1
  545. package/dist/templates/index.js +5 -0
  546. package/dist/templates/index.js.map +1 -1
  547. package/dist/templates/sms-template.engine.d.ts +151 -0
  548. package/dist/templates/sms-template.engine.d.ts.map +1 -1
  549. package/dist/templates/sms-template.engine.js +171 -0
  550. package/dist/templates/sms-template.engine.js.map +1 -1
  551. package/dist/templates.d.ts +8 -0
  552. package/dist/templates.d.ts.map +1 -1
  553. package/dist/templates.js +8 -0
  554. package/dist/templates.js.map +1 -1
  555. package/dist/utils/common-passwords.d.ts +42 -0
  556. package/dist/utils/common-passwords.d.ts.map +1 -1
  557. package/dist/utils/common-passwords.js +88 -0
  558. package/dist/utils/common-passwords.js.map +1 -1
  559. package/dist/utils/context-storage.d.ts +129 -0
  560. package/dist/utils/context-storage.d.ts.map +1 -1
  561. package/dist/utils/context-storage.js +129 -0
  562. package/dist/utils/context-storage.js.map +1 -1
  563. package/dist/utils/cookie-names.util.d.ts +35 -0
  564. package/dist/utils/cookie-names.util.d.ts.map +1 -1
  565. package/dist/utils/cookie-names.util.js +37 -0
  566. package/dist/utils/cookie-names.util.js.map +1 -1
  567. package/dist/utils/cookies.util.d.ts +19 -0
  568. package/dist/utils/cookies.util.d.ts.map +1 -1
  569. package/dist/utils/cookies.util.js +30 -3
  570. package/dist/utils/cookies.util.js.map +1 -1
  571. package/dist/utils/index.d.ts +3 -0
  572. package/dist/utils/index.d.ts.map +1 -1
  573. package/dist/utils/index.js +4 -0
  574. package/dist/utils/index.js.map +1 -1
  575. package/dist/utils/ip-extractor.d.ts +88 -0
  576. package/dist/utils/ip-extractor.d.ts.map +1 -1
  577. package/dist/utils/ip-extractor.js +109 -16
  578. package/dist/utils/ip-extractor.js.map +1 -1
  579. package/dist/utils/nauth-logger.d.ts +70 -0
  580. package/dist/utils/nauth-logger.d.ts.map +1 -1
  581. package/dist/utils/nauth-logger.js +82 -4
  582. package/dist/utils/nauth-logger.js.map +1 -1
  583. package/dist/utils/pii-redactor.d.ts +70 -0
  584. package/dist/utils/pii-redactor.d.ts.map +1 -1
  585. package/dist/utils/pii-redactor.js +102 -0
  586. package/dist/utils/pii-redactor.js.map +1 -1
  587. package/dist/utils/setup/get-repositories.d.ts +16 -0
  588. package/dist/utils/setup/get-repositories.d.ts.map +1 -1
  589. package/dist/utils/setup/get-repositories.js +21 -0
  590. package/dist/utils/setup/get-repositories.js.map +1 -1
  591. package/dist/utils/setup/init-services.d.ts +40 -1
  592. package/dist/utils/setup/init-services.d.ts.map +1 -1
  593. package/dist/utils/setup/init-services.js +98 -0
  594. package/dist/utils/setup/init-services.js.map +1 -1
  595. package/dist/utils/setup/init-social.d.ts +27 -0
  596. package/dist/utils/setup/init-social.d.ts.map +1 -1
  597. package/dist/utils/setup/init-social.js +49 -0
  598. package/dist/utils/setup/init-social.js.map +1 -1
  599. package/dist/utils/setup/init-storage.d.ts +22 -0
  600. package/dist/utils/setup/init-storage.d.ts.map +1 -1
  601. package/dist/utils/setup/init-storage.js +36 -0
  602. package/dist/utils/setup/init-storage.js.map +1 -1
  603. package/dist/utils/setup/register-mfa.d.ts +22 -0
  604. package/dist/utils/setup/register-mfa.d.ts.map +1 -1
  605. package/dist/utils/setup/register-mfa.js +41 -0
  606. package/dist/utils/setup/register-mfa.js.map +1 -1
  607. package/dist/utils/setup/run-nauth-migrations.d.ts +7 -0
  608. package/dist/utils/setup/run-nauth-migrations.d.ts.map +1 -1
  609. package/dist/utils/setup/run-nauth-migrations.js +8 -0
  610. package/dist/utils/setup/run-nauth-migrations.js.map +1 -1
  611. package/dist/utils/token-delivery-policy.d.ts +17 -0
  612. package/dist/utils/token-delivery-policy.d.ts.map +1 -1
  613. package/dist/utils/token-delivery-policy.js +17 -0
  614. package/dist/utils/token-delivery-policy.js.map +1 -1
  615. package/dist/utils.d.ts +8 -0
  616. package/dist/utils.d.ts.map +1 -1
  617. package/dist/utils.js +8 -0
  618. package/dist/utils.js.map +1 -1
  619. package/dist/validators/template.validator.d.ts +80 -0
  620. package/dist/validators/template.validator.d.ts.map +1 -1
  621. package/dist/validators/template.validator.js +94 -0
  622. package/dist/validators/template.validator.js.map +1 -1
  623. package/package.json +7 -2
@@ -1,13 +1,104 @@
1
1
  import { AuthFlowState, AuthFlowContext, StateDefinition, ResponseMetadata } from './auth-flow-state-machine.types';
2
2
  import { AuthFlowContextBuilder } from './auth-flow-context-builder.service';
3
3
  import { NAuthLogger } from '../utils/nauth-logger';
4
+ /**
5
+ * Authentication Flow State Machine Service
6
+ *
7
+ * Core engine for evaluating authentication flow states using declarative rules.
8
+ * Replaces imperative if/else logic with a rule-based state machine.
9
+ *
10
+ * **How it works:**
11
+ * 1. Build context with pre-computed values
12
+ * 2. Evaluate states in priority order (1-9)
13
+ * 3. Select first state whose condition rule evaluates to true
14
+ * 4. Execute onEnter hook if defined
15
+ * 5. Return state with metadata
16
+ *
17
+ * **Benefits:**
18
+ * - Declarative and maintainable
19
+ * - Easy to test (pure functions)
20
+ * - Extensible (add new states/rules easily)
21
+ * - Clear priority ordering
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * const state = await stateMachine.evaluateState(context);
26
+ * const definition = stateMachine.getStateDefinition(state);
27
+ * ```
28
+ */
4
29
  export declare class AuthFlowStateMachineService {
5
30
  private readonly contextBuilder;
6
31
  private readonly logger?;
7
32
  constructor(contextBuilder: AuthFlowContextBuilder, logger?: NAuthLogger | undefined);
33
+ /**
34
+ * Evaluate authentication flow state
35
+ *
36
+ * Evaluates states in priority order and returns the first matching state.
37
+ * Executes onEnter hook if defined for the selected state.
38
+ *
39
+ * @param context - Authentication flow context
40
+ * @returns Evaluated state
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * const context = await contextBuilder.build({ user, config, authMethod: 'password' });
45
+ * const state = await stateMachine.evaluateState(context);
46
+ * // Returns: AuthFlowState.PENDING_EMAIL_VERIFICATION
47
+ * ```
48
+ */
8
49
  evaluateState(context: AuthFlowContext): Promise<AuthFlowState>;
50
+ /**
51
+ * Get state definition by state
52
+ *
53
+ * @param state - State to get definition for
54
+ * @returns State definition or undefined if not found
55
+ *
56
+ * @example
57
+ * ```typescript
58
+ * const def = stateMachine.getStateDefinition(AuthFlowState.PENDING_EMAIL_VERIFICATION);
59
+ * ```
60
+ */
9
61
  getStateDefinition(state: AuthFlowState): StateDefinition | undefined;
62
+ /**
63
+ * Build metadata for state response
64
+ *
65
+ * Calls buildMetadata function if defined for the state.
66
+ *
67
+ * @param state - State to build metadata for
68
+ * @param context - Authentication flow context
69
+ * @returns Metadata object or undefined
70
+ *
71
+ * @example
72
+ * ```typescript
73
+ * const metadata = await stateMachine.buildMetadata(state, context);
74
+ * // Returns: { gracePeriodEndsAt: Date, riskScore: 45, riskLevel: 'medium' }
75
+ * ```
76
+ */
10
77
  buildMetadata(state: AuthFlowState, context: AuthFlowContext): ResponseMetadata | undefined;
78
+ /**
79
+ * Transition after challenge completion
80
+ *
81
+ * Re-evaluates state after a challenge is completed.
82
+ * This is used in the challenge completion flow to determine the next state.
83
+ *
84
+ * @param params - Transition parameters
85
+ * @param params.completedChallenge - Challenge that was just completed
86
+ * @param params.context - Current authentication flow context
87
+ * @param params.updateFn - Function to update user data (e.g., mark email as verified)
88
+ * @returns New state after transition
89
+ *
90
+ * @example
91
+ * ```typescript
92
+ * const newState = await stateMachine.transitionAfterChallenge({
93
+ * completedChallenge: AuthChallenge.VERIFY_EMAIL,
94
+ * context,
95
+ * updateFn: async (user) => {
96
+ * user.isEmailVerified = true;
97
+ * await userRepository.save(user);
98
+ * }
99
+ * });
100
+ * ```
101
+ */
11
102
  transitionAfterChallenge(params: {
12
103
  completedChallenge: string;
13
104
  context: AuthFlowContext;
@@ -1 +1 @@
1
- {"version":3,"file":"auth-flow-state-machine.service.d.ts","sourceRoot":"","sources":["../../src/services/auth-flow-state-machine.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACpH,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AA4BpD,qBAAa,2BAA2B;IAEpC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBADP,cAAc,EAAE,sBAAsB,EACtC,MAAM,CAAC,EAAE,WAAW,YAAA;IAmBjC,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC;IAyDrE,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,eAAe,GAAG,SAAS;IAmBrE,aAAa,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,GAAG,gBAAgB,GAAG,SAAS;IA2CrF,wBAAwB,CAAC,MAAM,EAAE;QACrC,kBAAkB,EAAE,MAAM,CAAC;QAC3B,OAAO,EAAE,eAAe,CAAC;QACzB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KAC7D,GAAG,OAAO,CAAC,aAAa,CAAC;CA+B3B"}
1
+ {"version":3,"file":"auth-flow-state-machine.service.d.ts","sourceRoot":"","sources":["../../src/services/auth-flow-state-machine.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACpH,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,2BAA2B;IAEpC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBADP,cAAc,EAAE,sBAAsB,EACtC,MAAM,CAAC,EAAE,WAAW,YAAA;IAGvC;;;;;;;;;;;;;;;OAeG;IACG,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC;IA8CrE;;;;;;;;;;OAUG;IACH,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,eAAe,GAAG,SAAS;IAIrE;;;;;;;;;;;;;;OAcG;IACH,aAAa,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,GAAG,gBAAgB,GAAG,SAAS;IAmB3F;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACG,wBAAwB,CAAC,MAAM,EAAE;QACrC,kBAAkB,EAAE,MAAM,CAAC;QAC3B,OAAO,EAAE,eAAe,CAAC;QACzB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KAC7D,GAAG,OAAO,CAAC,aAAa,CAAC;CA+B3B"}
@@ -3,6 +3,31 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AuthFlowStateMachineService = void 0;
4
4
  const auth_flow_state_machine_types_1 = require("./auth-flow-state-machine.types");
5
5
  const auth_flow_state_definitions_1 = require("./auth-flow-state-definitions");
6
+ /**
7
+ * Authentication Flow State Machine Service
8
+ *
9
+ * Core engine for evaluating authentication flow states using declarative rules.
10
+ * Replaces imperative if/else logic with a rule-based state machine.
11
+ *
12
+ * **How it works:**
13
+ * 1. Build context with pre-computed values
14
+ * 2. Evaluate states in priority order (1-9)
15
+ * 3. Select first state whose condition rule evaluates to true
16
+ * 4. Execute onEnter hook if defined
17
+ * 5. Return state with metadata
18
+ *
19
+ * **Benefits:**
20
+ * - Declarative and maintainable
21
+ * - Easy to test (pure functions)
22
+ * - Extensible (add new states/rules easily)
23
+ * - Clear priority ordering
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * const state = await stateMachine.evaluateState(context);
28
+ * const definition = stateMachine.getStateDefinition(state);
29
+ * ```
30
+ */
6
31
  class AuthFlowStateMachineService {
7
32
  contextBuilder;
8
33
  logger;
@@ -10,13 +35,33 @@ class AuthFlowStateMachineService {
10
35
  this.contextBuilder = contextBuilder;
11
36
  this.logger = logger;
12
37
  }
38
+ /**
39
+ * Evaluate authentication flow state
40
+ *
41
+ * Evaluates states in priority order and returns the first matching state.
42
+ * Executes onEnter hook if defined for the selected state.
43
+ *
44
+ * @param context - Authentication flow context
45
+ * @returns Evaluated state
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * const context = await contextBuilder.build({ user, config, authMethod: 'password' });
50
+ * const state = await stateMachine.evaluateState(context);
51
+ * // Returns: AuthFlowState.PENDING_EMAIL_VERIFICATION
52
+ * ```
53
+ */
13
54
  async evaluateState(context) {
55
+ // Get state definitions sorted by priority
14
56
  const stateDefinitions = (0, auth_flow_state_definitions_1.getStateDefinitionsByPriority)();
15
57
  this.logger?.debug?.(`[StateMachine] Evaluating states for user ${context.user.sub} (priority 1-9, first match wins)`);
58
+ // Evaluate states in priority order
16
59
  for (const definition of stateDefinitions) {
60
+ // Evaluate condition rule
17
61
  const ruleResult = definition.condition(context);
18
62
  this.logger?.debug?.(`[StateMachine] Priority ${definition.priority}: ${definition.state} → ${ruleResult ? 'MATCH' : 'skip'}`);
19
63
  if (ruleResult) {
64
+ // State matches - execute onEnter hook if defined
20
65
  if (definition.onEnter) {
21
66
  this.logger?.debug?.(`[StateMachine] Executing onEnter hook for ${definition.state}`);
22
67
  try {
@@ -29,20 +74,49 @@ class AuthFlowStateMachineService {
29
74
  state: definition.state,
30
75
  userId: context.user.id,
31
76
  });
77
+ // Continue with state selection even if hook fails
32
78
  }
33
79
  }
34
80
  this.logger?.debug?.(`[StateMachine] Selected state: ${definition.state} for user ${context.user.sub}`);
35
81
  return definition.state;
36
82
  }
37
83
  }
84
+ // Fallback: Should never reach here (AUTHENTICATED always matches)
85
+ // But return AUTHENTICATED as safe default
38
86
  this.logger?.warn?.(`No state matched for user ${context.user.sub} - falling back to AUTHENTICATED`, {
39
87
  userId: context.user.id,
40
88
  });
41
89
  return auth_flow_state_machine_types_1.AuthFlowState.AUTHENTICATED;
42
90
  }
91
+ /**
92
+ * Get state definition by state
93
+ *
94
+ * @param state - State to get definition for
95
+ * @returns State definition or undefined if not found
96
+ *
97
+ * @example
98
+ * ```typescript
99
+ * const def = stateMachine.getStateDefinition(AuthFlowState.PENDING_EMAIL_VERIFICATION);
100
+ * ```
101
+ */
43
102
  getStateDefinition(state) {
44
103
  return (0, auth_flow_state_definitions_1.getStateDefinition)(state);
45
104
  }
105
+ /**
106
+ * Build metadata for state response
107
+ *
108
+ * Calls buildMetadata function if defined for the state.
109
+ *
110
+ * @param state - State to build metadata for
111
+ * @param context - Authentication flow context
112
+ * @returns Metadata object or undefined
113
+ *
114
+ * @example
115
+ * ```typescript
116
+ * const metadata = await stateMachine.buildMetadata(state, context);
117
+ * // Returns: { gracePeriodEndsAt: Date, riskScore: 45, riskLevel: 'medium' }
118
+ * ```
119
+ */
46
120
  buildMetadata(state, context) {
47
121
  const definition = this.getStateDefinition(state);
48
122
  if (!definition || !definition.buildMetadata) {
@@ -61,8 +135,33 @@ class AuthFlowStateMachineService {
61
135
  return undefined;
62
136
  }
63
137
  }
138
+ /**
139
+ * Transition after challenge completion
140
+ *
141
+ * Re-evaluates state after a challenge is completed.
142
+ * This is used in the challenge completion flow to determine the next state.
143
+ *
144
+ * @param params - Transition parameters
145
+ * @param params.completedChallenge - Challenge that was just completed
146
+ * @param params.context - Current authentication flow context
147
+ * @param params.updateFn - Function to update user data (e.g., mark email as verified)
148
+ * @returns New state after transition
149
+ *
150
+ * @example
151
+ * ```typescript
152
+ * const newState = await stateMachine.transitionAfterChallenge({
153
+ * completedChallenge: AuthChallenge.VERIFY_EMAIL,
154
+ * context,
155
+ * updateFn: async (user) => {
156
+ * user.isEmailVerified = true;
157
+ * await userRepository.save(user);
158
+ * }
159
+ * });
160
+ * ```
161
+ */
64
162
  async transitionAfterChallenge(params) {
65
163
  const { completedChallenge, context, updateFn } = params;
164
+ // Update user data if update function provided
66
165
  if (updateFn) {
67
166
  try {
68
167
  await updateFn(context.user);
@@ -74,8 +173,10 @@ class AuthFlowStateMachineService {
74
173
  challenge: completedChallenge,
75
174
  userId: context.user.id,
76
175
  });
176
+ // Continue with re-evaluation even if update fails
77
177
  }
78
178
  }
179
+ // Re-build context with updated user data
79
180
  const newContext = await this.contextBuilder.build({
80
181
  user: context.user,
81
182
  config: context.config,
@@ -84,6 +185,7 @@ class AuthFlowStateMachineService {
84
185
  deviceToken: context.deviceToken,
85
186
  skipMFAVerification: context.skipMFAVerification,
86
187
  });
188
+ // Re-evaluate state
87
189
  return this.evaluateState(newContext);
88
190
  }
89
191
  }
@@ -1 +1 @@
1
- {"version":3,"file":"auth-flow-state-machine.service.js","sourceRoot":"","sources":["../../src/services/auth-flow-state-machine.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth-flow-state-machine.service.js","sourceRoot":"","sources":["../../src/services/auth-flow-state-machine.service.ts"],"names":[],"mappings":"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"}
@@ -1,55 +1,276 @@
1
1
  import { IUser } from '../interfaces/entities.interface';
2
2
  import { NAuthConfig } from '../interfaces/config.interface';
3
3
  import { AuthChallenge } from '../dto/auth-challenge.dto';
4
+ /**
5
+ * Authentication flow states
6
+ *
7
+ * Represents the current state of the authentication flow.
8
+ * States are evaluated in priority order (1-9).
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * const state = AuthFlowState.PENDING_EMAIL_VERIFICATION;
13
+ * ```
14
+ */
4
15
  export declare enum AuthFlowState {
16
+ /**
17
+ * User must change password before continuing
18
+ * Priority: 1 (highest)
19
+ */
5
20
  PENDING_PASSWORD_CHANGE = "PENDING_PASSWORD_CHANGE",
21
+ /**
22
+ * User must verify email address
23
+ * Priority: 2
24
+ */
6
25
  PENDING_EMAIL_VERIFICATION = "PENDING_EMAIL_VERIFICATION",
26
+ /**
27
+ * User must provide phone number
28
+ * Priority: 3
29
+ */
7
30
  PENDING_PHONE_COLLECTION = "PENDING_PHONE_COLLECTION",
31
+ /**
32
+ * User must verify phone number
33
+ * Priority: 4
34
+ */
8
35
  PENDING_PHONE_VERIFICATION = "PENDING_PHONE_VERIFICATION",
36
+ /**
37
+ * User must set up MFA
38
+ * Priority: 5
39
+ */
9
40
  PENDING_MFA_SETUP = "PENDING_MFA_SETUP",
41
+ /**
42
+ * User must verify MFA
43
+ * Priority: 6
44
+ */
10
45
  PENDING_MFA_VERIFICATION = "PENDING_MFA_VERIFICATION",
46
+ /**
47
+ * Grace period is active (MFA setup optional)
48
+ * Priority: 7
49
+ */
11
50
  GRACE_PERIOD_ACTIVE = "GRACE_PERIOD_ACTIVE",
51
+ /**
52
+ * User is blocked from signing in
53
+ * Priority: 8
54
+ */
12
55
  BLOCKED = "BLOCKED",
56
+ /**
57
+ * Authentication complete - user is fully authenticated
58
+ * Priority: 9 (lowest - default state)
59
+ */
13
60
  AUTHENTICATED = "AUTHENTICATED"
14
61
  }
62
+ /**
63
+ * Authentication flow context
64
+ *
65
+ * Contains all data needed to evaluate authentication flow state.
66
+ * Pre-computed values are stored in the `computed` property to optimize rule evaluation.
67
+ *
68
+ * @example
69
+ * ```typescript
70
+ * const context: AuthFlowContext = {
71
+ * user,
72
+ * config,
73
+ * authMethod: 'password',
74
+ * computed: {
75
+ * isEmailVerificationRequired: true,
76
+ * isPhoneVerificationRequired: false,
77
+ * isMFAExempt: false,
78
+ * // ... other computed values
79
+ * }
80
+ * };
81
+ * ```
82
+ */
15
83
  export interface AuthFlowContext {
84
+ /**
85
+ * User attempting authentication
86
+ */
16
87
  user: IUser;
88
+ /**
89
+ * Authentication configuration
90
+ */
17
91
  config: NAuthConfig;
92
+ /**
93
+ * Authentication method ('password' or 'social')
94
+ */
18
95
  authMethod?: 'password' | 'social';
96
+ /**
97
+ * Social auth provider name (e.g., 'google', 'apple', 'facebook')
98
+ */
19
99
  authProvider?: string;
100
+ /**
101
+ * Device token for trusted device check
102
+ */
20
103
  deviceToken?: string;
104
+ /**
105
+ * Skip MFA verification flag (used for special cases like phone auto-complete)
106
+ */
21
107
  skipMFAVerification?: boolean;
108
+ /**
109
+ * Pre-computed values for rule evaluation
110
+ * These are calculated once at the beginning of the flow to optimize performance.
111
+ */
22
112
  computed: {
113
+ /**
114
+ * Whether email verification is required
115
+ */
23
116
  isEmailVerificationRequired: boolean;
117
+ /**
118
+ * Whether phone verification is required
119
+ */
24
120
  isPhoneVerificationRequired: boolean;
121
+ /**
122
+ * Whether phone collection is needed (user has no phone)
123
+ */
25
124
  isPhoneCollectionNeeded: boolean;
125
+ /**
126
+ * Whether user is exempt from MFA
127
+ */
26
128
  isMFAExempt: boolean;
129
+ /**
130
+ * Whether MFA setup is required
131
+ */
27
132
  isMFASetupRequired: boolean;
133
+ /**
134
+ * Whether MFA verification is required
135
+ */
28
136
  isMFAVerificationRequired: boolean;
137
+ /**
138
+ * Whether device is trusted
139
+ */
29
140
  isDeviceTrusted: boolean;
141
+ /**
142
+ * Whether grace period is active
143
+ */
30
144
  isGracePeriodActive: boolean;
145
+ /**
146
+ * Grace period end timestamp (if active)
147
+ */
31
148
  gracePeriodEndsAt?: Date;
149
+ /**
150
+ * Whether user is blocked
151
+ */
32
152
  isBlocked: boolean;
153
+ /**
154
+ * Block expiration timestamp (if blocked)
155
+ */
33
156
  blockedUntil?: Date;
157
+ /**
158
+ * Block reason (if blocked)
159
+ */
34
160
  blockReason?: string;
161
+ /**
162
+ * Risk score (0-100) for adaptive MFA
163
+ */
35
164
  riskScore?: number;
165
+ /**
166
+ * Risk level ('low' | 'medium' | 'high')
167
+ */
36
168
  riskLevel?: 'low' | 'medium' | 'high';
37
169
  };
38
170
  }
171
+ /**
172
+ * Rule function type
173
+ *
174
+ * A rule is a function that evaluates to true or false based on the context.
175
+ * Rules can be combined using RuleBuilder combinators (all, any, not).
176
+ *
177
+ * @param context - Authentication flow context
178
+ * @returns True if rule condition is met, false otherwise
179
+ *
180
+ * @example
181
+ * ```typescript
182
+ * const mustChangePassword: Rule = (context) => {
183
+ * return context.user.mustChangePassword === true;
184
+ * };
185
+ * ```
186
+ */
39
187
  export type Rule = (context: AuthFlowContext) => boolean;
188
+ /**
189
+ * Response metadata
190
+ *
191
+ * Additional information to include in the authentication response.
192
+ * Used for special states like grace period and blocked state.
193
+ *
194
+ * @example
195
+ * ```typescript
196
+ * const metadata: ResponseMetadata = {
197
+ * gracePeriodEndsAt: new Date('2024-01-15'),
198
+ * riskScore: 45,
199
+ * riskLevel: 'medium'
200
+ * };
201
+ * ```
202
+ */
40
203
  export interface ResponseMetadata {
204
+ /**
205
+ * Grace period end timestamp
206
+ */
41
207
  gracePeriodEndsAt?: Date;
208
+ /**
209
+ * Risk score (0-100)
210
+ */
42
211
  riskScore?: number;
212
+ /**
213
+ * Risk level
214
+ */
43
215
  riskLevel?: 'low' | 'medium' | 'high';
216
+ /**
217
+ * Block expiration timestamp
218
+ */
44
219
  blockedUntil?: Date;
220
+ /**
221
+ * Block reason
222
+ */
45
223
  reason?: string;
46
224
  }
225
+ /**
226
+ * State definition
227
+ *
228
+ * Defines a state in the authentication flow, including:
229
+ * - Priority (evaluation order)
230
+ * - Condition rule (when this state applies)
231
+ * - Challenge mapping (which AuthChallenge this state maps to)
232
+ * - Metadata builder (optional additional response data)
233
+ * - OnEnter hook (optional action when state is entered)
234
+ *
235
+ * @example
236
+ * ```typescript
237
+ * const stateDef: StateDefinition = {
238
+ * state: AuthFlowState.PENDING_EMAIL_VERIFICATION,
239
+ * priority: 2,
240
+ * condition: Rules.emailVerificationPending,
241
+ * challenge: AuthChallenge.VERIFY_EMAIL,
242
+ * };
243
+ * ```
244
+ */
47
245
  export interface StateDefinition {
246
+ /**
247
+ * State identifier
248
+ */
48
249
  state: AuthFlowState;
250
+ /**
251
+ * Priority (1-9, lower = higher priority)
252
+ * States are evaluated in priority order
253
+ */
49
254
  priority: number;
255
+ /**
256
+ * Condition rule that determines if this state applies
257
+ */
50
258
  condition: Rule;
259
+ /**
260
+ * Challenge type this state maps to (if applicable)
261
+ * Undefined for AUTHENTICATED and GRACE_PERIOD_ACTIVE states
262
+ */
51
263
  challenge?: AuthChallenge;
264
+ /**
265
+ * Build metadata for response (optional)
266
+ * Used for states that need to include additional information
267
+ */
52
268
  buildMetadata?: (context: AuthFlowContext) => ResponseMetadata | undefined;
269
+ /**
270
+ * OnEnter hook (optional)
271
+ * Executed when this state is entered
272
+ * Can modify context (e.g., set skipMFAVerification flag)
273
+ */
53
274
  onEnter?: (context: AuthFlowContext) => Promise<void> | void;
54
275
  }
55
276
  //# sourceMappingURL=auth-flow-state-machine.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth-flow-state-machine.types.d.ts","sourceRoot":"","sources":["../../src/services/auth-flow-state-machine.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAa1D,oBAAY,aAAa;IAKvB,uBAAuB,4BAA4B;IAMnD,0BAA0B,+BAA+B;IAMzD,wBAAwB,6BAA6B;IAMrD,0BAA0B,+BAA+B;IAMzD,iBAAiB,sBAAsB;IAMvC,wBAAwB,6BAA6B;IAMrD,mBAAmB,wBAAwB;IAM3C,OAAO,YAAY;IAMnB,aAAa,kBAAkB;CAChC;AAuBD,MAAM,WAAW,eAAe;IAI9B,IAAI,EAAE,KAAK,CAAC;IAKZ,MAAM,EAAE,WAAW,CAAC;IAKpB,UAAU,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;IAKnC,YAAY,CAAC,EAAE,MAAM,CAAC;IAKtB,WAAW,CAAC,EAAE,MAAM,CAAC;IAKrB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAM9B,QAAQ,EAAE;QAIR,2BAA2B,EAAE,OAAO,CAAC;QAKrC,2BAA2B,EAAE,OAAO,CAAC;QAKrC,uBAAuB,EAAE,OAAO,CAAC;QAKjC,WAAW,EAAE,OAAO,CAAC;QAKrB,kBAAkB,EAAE,OAAO,CAAC;QAK5B,yBAAyB,EAAE,OAAO,CAAC;QAKnC,eAAe,EAAE,OAAO,CAAC;QAKzB,mBAAmB,EAAE,OAAO,CAAC;QAK7B,iBAAiB,CAAC,EAAE,IAAI,CAAC;QAKzB,SAAS,EAAE,OAAO,CAAC;QAKnB,YAAY,CAAC,EAAE,IAAI,CAAC;QAKpB,WAAW,CAAC,EAAE,MAAM,CAAC;QAKrB,SAAS,CAAC,EAAE,MAAM,CAAC;QAKnB,SAAS,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;KACvC,CAAC;CACH;AAkBD,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC;AAiBzD,MAAM,WAAW,gBAAgB;IAI/B,iBAAiB,CAAC,EAAE,IAAI,CAAC;IAKzB,SAAS,CAAC,EAAE,MAAM,CAAC;IAKnB,SAAS,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAKtC,YAAY,CAAC,EAAE,IAAI,CAAC;IAKpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAsBD,MAAM,WAAW,eAAe;IAI9B,KAAK,EAAE,aAAa,CAAC;IAMrB,QAAQ,EAAE,MAAM,CAAC;IAKjB,SAAS,EAAE,IAAI,CAAC;IAMhB,SAAS,CAAC,EAAE,aAAa,CAAC;IAM1B,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,gBAAgB,GAAG,SAAS,CAAC;IAO3E,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC9D"}
1
+ {"version":3,"file":"auth-flow-state-machine.types.d.ts","sourceRoot":"","sources":["../../src/services/auth-flow-state-machine.types.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,63 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AuthFlowState = void 0;
4
+ /**
5
+ * Authentication flow states
6
+ *
7
+ * Represents the current state of the authentication flow.
8
+ * States are evaluated in priority order (1-9).
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * const state = AuthFlowState.PENDING_EMAIL_VERIFICATION;
13
+ * ```
14
+ */
4
15
  var AuthFlowState;
5
16
  (function (AuthFlowState) {
17
+ /**
18
+ * User must change password before continuing
19
+ * Priority: 1 (highest)
20
+ */
6
21
  AuthFlowState["PENDING_PASSWORD_CHANGE"] = "PENDING_PASSWORD_CHANGE";
22
+ /**
23
+ * User must verify email address
24
+ * Priority: 2
25
+ */
7
26
  AuthFlowState["PENDING_EMAIL_VERIFICATION"] = "PENDING_EMAIL_VERIFICATION";
27
+ /**
28
+ * User must provide phone number
29
+ * Priority: 3
30
+ */
8
31
  AuthFlowState["PENDING_PHONE_COLLECTION"] = "PENDING_PHONE_COLLECTION";
32
+ /**
33
+ * User must verify phone number
34
+ * Priority: 4
35
+ */
9
36
  AuthFlowState["PENDING_PHONE_VERIFICATION"] = "PENDING_PHONE_VERIFICATION";
37
+ /**
38
+ * User must set up MFA
39
+ * Priority: 5
40
+ */
10
41
  AuthFlowState["PENDING_MFA_SETUP"] = "PENDING_MFA_SETUP";
42
+ /**
43
+ * User must verify MFA
44
+ * Priority: 6
45
+ */
11
46
  AuthFlowState["PENDING_MFA_VERIFICATION"] = "PENDING_MFA_VERIFICATION";
47
+ /**
48
+ * Grace period is active (MFA setup optional)
49
+ * Priority: 7
50
+ */
12
51
  AuthFlowState["GRACE_PERIOD_ACTIVE"] = "GRACE_PERIOD_ACTIVE";
52
+ /**
53
+ * User is blocked from signing in
54
+ * Priority: 8
55
+ */
13
56
  AuthFlowState["BLOCKED"] = "BLOCKED";
57
+ /**
58
+ * Authentication complete - user is fully authenticated
59
+ * Priority: 9 (lowest - default state)
60
+ */
14
61
  AuthFlowState["AUTHENTICATED"] = "AUTHENTICATED";
15
62
  })(AuthFlowState || (exports.AuthFlowState = AuthFlowState = {}));
16
63
  //# sourceMappingURL=auth-flow-state-machine.types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth-flow-state-machine.types.js","sourceRoot":"","sources":["../../src/services/auth-flow-state-machine.types.ts"],"names":[],"mappings":";;;AAeA,IAAY,aAsDX;AAtDD,WAAY,aAAa;IAKvB,oEAAmD,CAAA;IAMnD,0EAAyD,CAAA;IAMzD,sEAAqD,CAAA;IAMrD,0EAAyD,CAAA;IAMzD,wDAAuC,CAAA;IAMvC,sEAAqD,CAAA;IAMrD,4DAA2C,CAAA;IAM3C,oCAAmB,CAAA;IAMnB,gDAA+B,CAAA;AACjC,CAAC,EAtDW,aAAa,6BAAb,aAAa,QAsDxB"}
1
+ {"version":3,"file":"auth-flow-state-machine.types.js","sourceRoot":"","sources":["../../src/services/auth-flow-state-machine.types.ts"],"names":[],"mappings":";;;AAIA;;;;;;;;;;GAUG;AACH,IAAY,aAsDX;AAtDD,WAAY,aAAa;IACvB;;;OAGG;IACH,oEAAmD,CAAA;IAEnD;;;OAGG;IACH,0EAAyD,CAAA;IAEzD;;;OAGG;IACH,sEAAqD,CAAA;IAErD;;;OAGG;IACH,0EAAyD,CAAA;IAEzD;;;OAGG;IACH,wDAAuC,CAAA;IAEvC;;;OAGG;IACH,sEAAqD,CAAA;IAErD;;;OAGG;IACH,4DAA2C,CAAA;IAE3C;;;OAGG;IACH,oCAAmB,CAAA;IAEnB;;;OAGG;IACH,gDAA+B,CAAA;AACjC,CAAC,EAtDW,aAAa,6BAAb,aAAa,QAsDxB"}