@nauth-toolkit/core 0.1.13 → 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
@@ -40,6 +40,31 @@ const os = __importStar(require("os"));
40
40
  const nauth_exception_1 = require("../exceptions/nauth.exception");
41
41
  const error_codes_enum_1 = require("../enums/error-codes.enum");
42
42
  const ip_extractor_1 = require("../utils/ip-extractor");
43
+ /**
44
+ * GeoLocation Service
45
+ *
46
+ * Provides IP geolocation using MaxMind GeoIP2 database files.
47
+ * Platform-agnostic - works on all platforms where Node.js runs.
48
+ *
49
+ * Features:
50
+ * - IP to country/city lookup from MaxMind .mmdb files
51
+ * - Distributed locking for database updates (multi-server safe)
52
+ * - Configurable database path (defaults to system temp directory)
53
+ * - Graceful degradation if MaxMind not installed
54
+ *
55
+ * Requirements:
56
+ * - @maxmind/geoip2-node peer dependency must be installed
57
+ * - MaxMind license key and account ID for database downloads
58
+ * - Storage adapter (for distributed locking)
59
+ *
60
+ * @example
61
+ * ```typescript
62
+ * // Get geolocation for an IP
63
+ * const geo = await geoLocationService.getIpGeolocation('8.8.8.8');
64
+ * console.log(geo.country); // 'US'
65
+ * console.log(geo.city); // 'Mountain View'
66
+ * ```
67
+ */
43
68
  class GeoLocationService {
44
69
  storageAdapter;
45
70
  logger;
@@ -50,37 +75,59 @@ class GeoLocationService {
50
75
  countryReader = null;
51
76
  defaultEditions = ['GeoLite2-City', 'GeoLite2-Country'];
52
77
  lockKey = 'maxmind-db-update-lock';
53
- lockTtlSeconds = 300;
78
+ lockTtlSeconds = 300; // 5 minutes
54
79
  constructor(nauthConfig, storageAdapter, maxMindLib, logger) {
55
80
  this.storageAdapter = storageAdapter;
56
81
  this.logger = logger;
82
+ // ============================================================================
83
+ // Extract Configuration
84
+ // ============================================================================
57
85
  this.config = nauthConfig.geoLocation?.maxMind;
86
+ // ============================================================================
87
+ // Initialize MaxMind Library (Optional)
88
+ // ============================================================================
58
89
  this.maxMindLib = maxMindLib ?? null;
59
90
  if (!this.maxMindLib && this.config) {
60
91
  this.logger?.warn?.('MaxMind GeoIP2 is configured but @maxmind/geoip2-node package is not installed. ' +
61
92
  'Install it with: yarn add @maxmind/geoip2-node\n' +
62
93
  'Or remove geoLocation.maxMind from your configuration to disable geolocation.');
63
94
  }
95
+ // ============================================================================
96
+ // Resolve Database Path
97
+ // ============================================================================
64
98
  if (this.config?.dbPath) {
99
+ // Use configured path (absolute or relative to cwd)
65
100
  this.dbPath = path.isAbsolute(this.config.dbPath)
66
101
  ? this.config.dbPath
67
102
  : path.resolve(process.cwd(), this.config.dbPath);
68
103
  }
69
104
  else {
105
+ // Default to system temp directory
70
106
  const systemTemp = os.tmpdir();
71
107
  this.dbPath = path.join(systemTemp, 'nauth_maxmind');
72
108
  }
73
109
  }
110
+ /**
111
+ * Initialize service on module startup
112
+ *
113
+ * - Loads database files if they exist
114
+ * - Optionally downloads databases if autoDownloadOnStartup is enabled
115
+ */
74
116
  async onModuleInit() {
75
117
  if (!this.config) {
118
+ // No config provided - service disabled
76
119
  return;
77
120
  }
78
121
  if (!this.maxMindLib) {
122
+ // MaxMind not installed - service disabled
79
123
  this.logger?.warn?.('MaxMind GeoIP2 library not available. Install @maxmind/geoip2-node to enable geolocation.');
80
124
  return;
81
125
  }
126
+ // Ensure database directory exists
82
127
  await this.ensureDbDirectoryExists();
128
+ // Load existing database files
83
129
  await this.loadDatabaseFiles();
130
+ // Auto-download if enabled and files don't exist (only if downloads not skipped)
84
131
  if (!this.config.skipDownloads && this.config.autoDownloadOnStartup && (!this.cityReader || !this.countryReader)) {
85
132
  try {
86
133
  await this.updateGeoLocationDatabase();
@@ -90,14 +137,40 @@ class GeoLocationService {
90
137
  }
91
138
  }
92
139
  }
140
+ /**
141
+ * Get geolocation information for an IP address
142
+ *
143
+ * @param ip - IP address to lookup
144
+ * @returns Geolocation info with country, city, and coordinates (if available)
145
+ *
146
+ * @example
147
+ * ```typescript
148
+ * const geo = await geoLocationService.getIpGeolocation('8.8.8.8');
149
+ * // { country: 'US', city: 'Mountain View', latitude: 37.386, longitude: -122.0838 }
150
+ * ```
151
+ */
93
152
  async getIpGeolocation(ip) {
153
+ // ============================================================================
154
+ // Check if Service is Available
155
+ // ============================================================================
94
156
  if (!this.config || !this.maxMindLib) {
157
+ // Service not configured or MaxMind not installed
95
158
  return {};
96
159
  }
160
+ // ============================================================================
161
+ // Skip Private IP Addresses
162
+ // ============================================================================
163
+ // MaxMind databases only contain public IP addresses. Private IPs (localhost,
164
+ // 192.168.x.x, 10.x.x.x, etc.) will always fail lookup and generate unnecessary
165
+ // error logs. Skip the lookup entirely for private IPs.
97
166
  if ((0, ip_extractor_1.isPrivateIp)(ip)) {
167
+ // Silently return empty result for private IPs (no lookup attempted)
98
168
  this.logger?.debug?.(`Skipping private IP ${ip} for geolocation lookup`);
99
169
  return {};
100
170
  }
171
+ // ============================================================================
172
+ // Try City Database First (More Detailed)
173
+ // ============================================================================
101
174
  if (this.cityReader) {
102
175
  try {
103
176
  const result = this.cityReader.city(ip);
@@ -107,6 +180,7 @@ class GeoLocationService {
107
180
  latitude: result.location?.latitude,
108
181
  longitude: result.location?.longitude,
109
182
  };
183
+ // Warn if coordinates are missing (useful for production debugging)
110
184
  if (!geoData.latitude || !geoData.longitude) {
111
185
  this.logger?.warn?.(`MaxMind city lookup for IP ${ip} returned city/country but NO coordinates: ` +
112
186
  `city=${geoData.city}, country=${geoData.country}`);
@@ -114,11 +188,15 @@ class GeoLocationService {
114
188
  return geoData;
115
189
  }
116
190
  catch (_error) {
191
+ // Non-fatal: Try country database (error logged at warn level if needed)
117
192
  }
118
193
  }
119
194
  else {
120
195
  this.logger?.warn?.(`MaxMind cityReader is not initialized for IP ${ip}. ` + `Only country database available (no coordinates).`);
121
196
  }
197
+ // ============================================================================
198
+ // Fallback to Country Database
199
+ // ============================================================================
122
200
  if (this.countryReader) {
123
201
  try {
124
202
  const result = this.countryReader.country(ip);
@@ -127,11 +205,35 @@ class GeoLocationService {
127
205
  };
128
206
  }
129
207
  catch (_error) {
208
+ // Non-fatal: Return empty result (error handled gracefully)
130
209
  }
131
210
  }
211
+ // No databases loaded or lookup failed
132
212
  return {};
133
213
  }
214
+ /**
215
+ * Update MaxMind GeoIP2 database files
216
+ *
217
+ * Downloads the latest database files from MaxMind using distributed locking
218
+ * to prevent concurrent downloads in multi-server deployments.
219
+ *
220
+ * Uses storage adapter for distributed locking:
221
+ * - Lock key: 'maxmind-db-update-lock'
222
+ * - Lock TTL: 5 minutes (300 seconds)
223
+ * - Only one server/process can download at a time
224
+ *
225
+ * @throws {NAuthException} If MaxMind credentials are missing or download fails
226
+ *
227
+ * @example
228
+ * ```typescript
229
+ * // Call this method via cron job for periodic updates
230
+ * await geoLocationService.updateGeoLocationDatabase();
231
+ * ```
232
+ */
134
233
  async updateGeoLocationDatabase() {
234
+ // ============================================================================
235
+ // Validate Configuration
236
+ // ============================================================================
135
237
  if (!this.config) {
136
238
  throw new nauth_exception_1.NAuthException(error_codes_enum_1.AuthErrorCode.VALIDATION_FAILED, 'MaxMind configuration not provided');
137
239
  }
@@ -144,14 +246,23 @@ class GeoLocationService {
144
246
  if (!this.config.licenseKey || !this.config.accountId) {
145
247
  throw new nauth_exception_1.NAuthException(error_codes_enum_1.AuthErrorCode.VALIDATION_FAILED, 'MaxMind licenseKey and accountId are required for database downloads');
146
248
  }
249
+ // ============================================================================
250
+ // Acquire Distributed Lock (if using distributed storage)
251
+ // ============================================================================
252
+ // Memory storage: Lock works within single process (fine for single-server deployments)
253
+ // Redis/Database storage: Lock works across multiple servers (prevents concurrent downloads)
147
254
  const lockAcquired = await this.storageAdapter.set(this.lockKey, `lock-${Date.now()}`, this.lockTtlSeconds, {
148
255
  nx: true,
149
256
  });
150
257
  if (!lockAcquired) {
258
+ // Another process/server is already updating
151
259
  this.logger?.warn?.('MaxMind database update already in progress, skipping...');
152
260
  return;
153
261
  }
154
262
  try {
263
+ // ============================================================================
264
+ // Download and Update Databases
265
+ // ============================================================================
155
266
  const editions = this.config.editions || this.defaultEditions;
156
267
  const accountId = this.config.accountId;
157
268
  const licenseKey = this.config.licenseKey;
@@ -165,9 +276,14 @@ class GeoLocationService {
165
276
  catch (error) {
166
277
  failureCount++;
167
278
  this.logger?.error?.(`Failed to download MaxMind database ${edition}: ${error instanceof Error ? error.message : 'Unknown error'}`);
279
+ // Continue with other editions even if one fails
168
280
  }
169
281
  }
282
+ // ============================================================================
283
+ // Reload Database Files
284
+ // ============================================================================
170
285
  await this.loadDatabaseFiles();
286
+ // Only log success if at least one database was downloaded
171
287
  if (successCount > 0) {
172
288
  this.logger?.log?.(`MaxMind database update completed: ${successCount} succeeded, ${failureCount} failed`);
173
289
  }
@@ -176,14 +292,26 @@ class GeoLocationService {
176
292
  }
177
293
  }
178
294
  finally {
295
+ // ============================================================================
296
+ // Release Lock
297
+ // ============================================================================
179
298
  try {
180
299
  await this.storageAdapter.del(this.lockKey);
181
300
  }
182
301
  catch (error) {
302
+ // Non-fatal: Lock will expire automatically after TTL
183
303
  this.logger?.warn?.(`Failed to release MaxMind update lock: ${error instanceof Error ? error.message : 'Unknown error'}`);
184
304
  }
185
305
  }
186
306
  }
307
+ // ============================================================================
308
+ // Private Helper Methods
309
+ // ============================================================================
310
+ /**
311
+ * Ensure database directory exists
312
+ *
313
+ * Creates the directory if it doesn't exist.
314
+ */
187
315
  async ensureDbDirectoryExists() {
188
316
  try {
189
317
  await fs.mkdir(this.dbPath, { recursive: true });
@@ -193,13 +321,20 @@ class GeoLocationService {
193
321
  throw new nauth_exception_1.NAuthException(error_codes_enum_1.AuthErrorCode.INTERNAL_ERROR, `Failed to create MaxMind database directory at ${this.dbPath}: ${error instanceof Error ? error.message : 'Unknown error'}`);
194
322
  }
195
323
  }
324
+ /**
325
+ * Load database files from disk
326
+ *
327
+ * Loads .mmdb files for City and Country databases if they exist.
328
+ */
196
329
  async loadDatabaseFiles() {
197
330
  if (!this.maxMindLib) {
198
331
  return;
199
332
  }
200
333
  try {
334
+ // Try to load City database
201
335
  const cityDbPath = path.join(this.dbPath, 'GeoLite2-City.mmdb');
202
336
  try {
337
+ // Reader.open returns a Reader instance with city()/country() methods
203
338
  this.cityReader = await this.maxMindLib.Reader.open(cityDbPath);
204
339
  if (typeof this.cityReader.city !== 'function') {
205
340
  this.logger?.warn?.('MaxMind Reader instance does not have city() method');
@@ -210,9 +345,11 @@ class GeoLocationService {
210
345
  }
211
346
  }
212
347
  catch (error) {
348
+ // City database not found or failed to load
213
349
  this.logger?.debug?.(`Failed to load City database: ${error instanceof Error ? error.message : 'Unknown error'}`);
214
350
  this.cityReader = null;
215
351
  }
352
+ // Try to load Country database
216
353
  const countryDbPath = path.join(this.dbPath, 'GeoLite2-Country.mmdb');
217
354
  try {
218
355
  this.countryReader = await this.maxMindLib.Reader.open(countryDbPath);
@@ -225,6 +362,7 @@ class GeoLocationService {
225
362
  }
226
363
  }
227
364
  catch (error) {
365
+ // Country database not found or failed to load
228
366
  this.logger?.debug?.(`Failed to load Country database: ${error instanceof Error ? error.message : 'Unknown error'}`);
229
367
  this.countryReader = null;
230
368
  }
@@ -240,6 +378,7 @@ class GeoLocationService {
240
378
  }
241
379
  }
242
380
  else {
381
+ // Log which databases were loaded
243
382
  const loaded = [];
244
383
  if (this.cityReader)
245
384
  loaded.push('GeoLite2-City');
@@ -252,16 +391,35 @@ class GeoLocationService {
252
391
  this.logger?.warn?.(`Failed to load MaxMind database files: ${error instanceof Error ? error.message : 'Unknown error'}`);
253
392
  }
254
393
  }
394
+ /**
395
+ * Download a MaxMind database file
396
+ *
397
+ * Downloads the specified edition from MaxMind's download API,
398
+ * extracts the .mmdb file from the tar.gz archive, and saves it.
399
+ *
400
+ * Uses Node.js built-in zlib for gzip decompression and implements
401
+ * basic tar parsing to extract the .mmdb file.
402
+ *
403
+ * @param edition - Edition name (e.g., 'GeoLite2-City')
404
+ * @param accountId - MaxMind account ID
405
+ * @param licenseKey - MaxMind license key
406
+ */
255
407
  async downloadDatabase(edition, _accountId, licenseKey) {
408
+ // MaxMind Download API URL
256
409
  const url = `https://download.maxmind.com/app/geoip_download?edition_id=${edition}&license_key=${licenseKey}&suffix=tar.gz`;
257
410
  const tempTarPath = path.join(this.dbPath, `${edition}.tar.gz`);
258
411
  const outputPath = path.join(this.dbPath, `${edition}.mmdb`);
259
412
  try {
413
+ // ============================================================================
414
+ // Download tar.gz file
415
+ // ============================================================================
260
416
  this.logger?.debug?.(`Downloading MaxMind database ${edition}...`);
417
+ // Wrap fetch in timeout and better error handling
261
418
  let response;
262
419
  try {
263
420
  response = await fetch(url, {
264
- signal: AbortSignal.timeout(30000),
421
+ // Add timeout to prevent hanging requests
422
+ signal: AbortSignal.timeout(30000), // 30 second timeout
265
423
  });
266
424
  }
267
425
  catch (fetchError) {
@@ -269,6 +427,7 @@ class GeoLocationService {
269
427
  const errorCode = typeof fetchErrorObj.code === 'string' ? fetchErrorObj.code : undefined;
270
428
  const errorName = typeof fetchErrorObj.name === 'string' ? fetchErrorObj.name : undefined;
271
429
  const errorMessage = typeof fetchErrorObj.message === 'string' ? fetchErrorObj.message : undefined;
430
+ // Handle network errors (DNS failures, connection errors, etc.)
272
431
  if (errorCode === 'ENOTFOUND' || errorCode === 'ECONNREFUSED' || errorName === 'AbortError') {
273
432
  throw new nauth_exception_1.NAuthException(error_codes_enum_1.AuthErrorCode.INTERNAL_ERROR, `Network error while downloading MaxMind database ${edition}: ${errorMessage || 'DNS lookup failed or connection refused'}. Check your network connection and proxy settings.`);
274
433
  }
@@ -279,13 +438,22 @@ class GeoLocationService {
279
438
  }
280
439
  const buffer = Buffer.from(await response.arrayBuffer());
281
440
  await fs.writeFile(tempTarPath, buffer);
441
+ // ============================================================================
442
+ // Extract .mmdb file from tar.gz
443
+ // ============================================================================
444
+ // MaxMind tar.gz contains: <edition>_<date>/<edition>.mmdb
445
+ // We need to decompress gzip, then parse tar to find the .mmdb file
282
446
  await this.extractTarGz(tempTarPath, outputPath, edition);
447
+ // Clean up temp tar.gz file
283
448
  await fs.unlink(tempTarPath).catch(() => {
449
+ // Ignore cleanup errors
284
450
  });
285
451
  this.logger?.debug?.(`Successfully downloaded and extracted ${edition}`);
286
452
  }
287
453
  catch (error) {
454
+ // Clean up temp file on error
288
455
  await fs.unlink(tempTarPath).catch(() => {
456
+ // Ignore cleanup errors
289
457
  });
290
458
  if (error instanceof nauth_exception_1.NAuthException) {
291
459
  throw error;
@@ -293,14 +461,28 @@ class GeoLocationService {
293
461
  throw new nauth_exception_1.NAuthException(error_codes_enum_1.AuthErrorCode.INTERNAL_ERROR, `Failed to download MaxMind database ${edition}: ${error instanceof Error ? error.message : 'Unknown error'}`);
294
462
  }
295
463
  }
464
+ /**
465
+ * Extract .mmdb file from tar.gz archive
466
+ *
467
+ * Uses Node.js built-in zlib for gzip decompression and implements
468
+ * basic tar parsing to find and extract the .mmdb file.
469
+ *
470
+ * @param tarGzPath - Path to the .tar.gz file
471
+ * @param outputPath - Path where .mmdb file should be saved
472
+ * @param edition - Edition name (to find correct file in archive)
473
+ */
296
474
  async extractTarGz(tarGzPath, outputPath, edition) {
475
+ // Prefer OS tar (no extra deps) per project guidance
297
476
  const { exec } = await Promise.resolve().then(() => __importStar(require('child_process')));
298
477
  const { promisify } = await Promise.resolve().then(() => __importStar(require('util')));
299
478
  const execAsync = promisify(exec);
479
+ // Use a dedicated extraction directory to avoid polluting dbPath
300
480
  const extractDir = path.join(this.dbPath, `extract_${edition}_${Date.now()}`);
301
481
  await fs.mkdir(extractDir, { recursive: true });
302
482
  try {
483
+ // Extract archive
303
484
  await execAsync(`tar -xzf "${tarGzPath}" -C "${extractDir}"`);
485
+ // Find the .mmdb file (usually in a subdirectory like GeoLite2-City_YYYYMMDD/GeoLite2-City.mmdb)
304
486
  const entries = await fs.readdir(extractDir);
305
487
  let mmdbPath = null;
306
488
  for (const entry of entries) {
@@ -324,13 +506,17 @@ class GeoLocationService {
324
506
  if (!mmdbPath) {
325
507
  throw new Error(`Could not find extracted .mmdb file for ${edition}`);
326
508
  }
509
+ // Move to final location
327
510
  await fs.rename(mmdbPath, outputPath);
328
511
  }
329
512
  finally {
513
+ // Cleanup extraction directory
330
514
  try {
515
+ // Best-effort cleanup
331
516
  await execAsync(`rm -rf "${extractDir}"`).catch(() => undefined);
332
517
  }
333
518
  catch {
519
+ // ignore
334
520
  }
335
521
  }
336
522
  }
@@ -1 +1 @@
1
- {"version":3,"file":"geo-location.service.js","sourceRoot":"","sources":["../../src/services/geo-location.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"geo-location.service.js","sourceRoot":"","sources":["../../src/services/geo-location.service.ts"],"names":[],"mappings":"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"}