@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.
- package/dist/adapters/database-columns.d.ts +70 -0
- package/dist/adapters/database-columns.d.ts.map +1 -1
- package/dist/adapters/database-columns.js +76 -2
- package/dist/adapters/database-columns.js.map +1 -1
- package/dist/adapters/express.adapter.d.ts +66 -0
- package/dist/adapters/express.adapter.d.ts.map +1 -1
- package/dist/adapters/express.adapter.js +80 -0
- package/dist/adapters/express.adapter.js.map +1 -1
- package/dist/adapters/fastify.adapter.d.ts +42 -0
- package/dist/adapters/fastify.adapter.d.ts.map +1 -1
- package/dist/adapters/fastify.adapter.js +86 -0
- package/dist/adapters/fastify.adapter.js.map +1 -1
- package/dist/adapters/index.d.ts +5 -0
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +9 -0
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/storage.factory.d.ts +107 -0
- package/dist/adapters/storage.factory.d.ts.map +1 -1
- package/dist/adapters/storage.factory.js +114 -0
- package/dist/adapters/storage.factory.js.map +1 -1
- package/dist/adapters.d.ts +8 -0
- package/dist/adapters.d.ts.map +1 -1
- package/dist/adapters.js +8 -0
- package/dist/adapters.js.map +1 -1
- package/dist/bootstrap.d.ts +82 -0
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +106 -0
- package/dist/bootstrap.js.map +1 -1
- package/dist/dto/admin-set-password.dto.d.ts +90 -0
- package/dist/dto/admin-set-password.dto.d.ts.map +1 -1
- package/dist/dto/admin-set-password.dto.js +91 -0
- package/dist/dto/admin-set-password.dto.js.map +1 -1
- package/dist/dto/auth-challenge.dto.d.ts +170 -0
- package/dist/dto/auth-challenge.dto.d.ts.map +1 -1
- package/dist/dto/auth-challenge.dto.js +170 -0
- package/dist/dto/auth-challenge.dto.js.map +1 -1
- package/dist/dto/auth-response.dto.d.ts +196 -0
- package/dist/dto/auth-response.dto.d.ts.map +1 -1
- package/dist/dto/auth-response.dto.js +149 -0
- package/dist/dto/auth-response.dto.js.map +1 -1
- package/dist/dto/challenge-response.dto.d.ts +155 -0
- package/dist/dto/challenge-response.dto.d.ts.map +1 -1
- package/dist/dto/challenge-response.dto.js +8 -0
- package/dist/dto/challenge-response.dto.js.map +1 -1
- package/dist/dto/change-password-request.dto.d.ts +35 -0
- package/dist/dto/change-password-request.dto.d.ts.map +1 -1
- package/dist/dto/change-password-request.dto.js +35 -0
- package/dist/dto/change-password-request.dto.js.map +1 -1
- package/dist/dto/change-password-response.dto.d.ts +25 -0
- package/dist/dto/change-password-response.dto.d.ts.map +1 -1
- package/dist/dto/change-password-response.dto.js +25 -0
- package/dist/dto/change-password-response.dto.js.map +1 -1
- package/dist/dto/change-password.dto.d.ts +45 -0
- package/dist/dto/change-password.dto.d.ts.map +1 -1
- package/dist/dto/change-password.dto.js +45 -0
- package/dist/dto/change-password.dto.js.map +1 -1
- package/dist/dto/confirm-forgot-password.dto.d.ts +59 -0
- package/dist/dto/confirm-forgot-password.dto.d.ts.map +1 -1
- package/dist/dto/confirm-forgot-password.dto.js +59 -0
- package/dist/dto/confirm-forgot-password.dto.js.map +1 -1
- package/dist/dto/error-response.dto.d.ts +103 -0
- package/dist/dto/error-response.dto.d.ts.map +1 -1
- package/dist/dto/error-response.dto.js +103 -0
- package/dist/dto/error-response.dto.js.map +1 -1
- package/dist/dto/forgot-password.dto.d.ts +58 -0
- package/dist/dto/forgot-password.dto.d.ts.map +1 -1
- package/dist/dto/forgot-password.dto.js +58 -0
- package/dist/dto/forgot-password.dto.js.map +1 -1
- package/dist/dto/get-available-methods.dto.d.ts +37 -0
- package/dist/dto/get-available-methods.dto.d.ts.map +1 -1
- package/dist/dto/get-available-methods.dto.js +37 -0
- package/dist/dto/get-available-methods.dto.js.map +1 -1
- package/dist/dto/get-challenge-data-response.dto.d.ts +24 -0
- package/dist/dto/get-challenge-data-response.dto.d.ts.map +1 -1
- package/dist/dto/get-challenge-data-response.dto.js +24 -0
- package/dist/dto/get-challenge-data-response.dto.js.map +1 -1
- package/dist/dto/get-challenge-data.dto.d.ts +46 -0
- package/dist/dto/get-challenge-data.dto.d.ts.map +1 -1
- package/dist/dto/get-challenge-data.dto.js +46 -0
- package/dist/dto/get-challenge-data.dto.js.map +1 -1
- package/dist/dto/get-client-info.dto.d.ts +74 -0
- package/dist/dto/get-client-info.dto.d.ts.map +1 -1
- package/dist/dto/get-client-info.dto.js +74 -0
- package/dist/dto/get-client-info.dto.js.map +1 -1
- package/dist/dto/get-device-token-response.dto.d.ts +21 -0
- package/dist/dto/get-device-token-response.dto.d.ts.map +1 -1
- package/dist/dto/get-device-token-response.dto.js +21 -0
- package/dist/dto/get-device-token-response.dto.js.map +1 -1
- package/dist/dto/get-events-by-type.dto.d.ts +50 -0
- package/dist/dto/get-events-by-type.dto.d.ts.map +1 -1
- package/dist/dto/get-events-by-type.dto.js +50 -0
- package/dist/dto/get-events-by-type.dto.js.map +1 -1
- package/dist/dto/get-ip-address-response.dto.d.ts +20 -0
- package/dist/dto/get-ip-address-response.dto.d.ts.map +1 -1
- package/dist/dto/get-ip-address-response.dto.js +20 -0
- package/dist/dto/get-ip-address-response.dto.js.map +1 -1
- package/dist/dto/get-mfa-status.dto.d.ts +59 -0
- package/dist/dto/get-mfa-status.dto.d.ts.map +1 -1
- package/dist/dto/get-mfa-status.dto.js +59 -0
- package/dist/dto/get-mfa-status.dto.js.map +1 -1
- package/dist/dto/get-risk-assessment-history.dto.d.ts +28 -0
- package/dist/dto/get-risk-assessment-history.dto.d.ts.map +1 -1
- package/dist/dto/get-risk-assessment-history.dto.js +28 -0
- package/dist/dto/get-risk-assessment-history.dto.js.map +1 -1
- package/dist/dto/get-session-id-response.dto.d.ts +21 -0
- package/dist/dto/get-session-id-response.dto.d.ts.map +1 -1
- package/dist/dto/get-session-id-response.dto.js +21 -0
- package/dist/dto/get-session-id-response.dto.js.map +1 -1
- package/dist/dto/get-setup-data-response.dto.d.ts +27 -0
- package/dist/dto/get-setup-data-response.dto.d.ts.map +1 -1
- package/dist/dto/get-setup-data-response.dto.js +27 -0
- package/dist/dto/get-setup-data-response.dto.js.map +1 -1
- package/dist/dto/get-setup-data.dto.d.ts +51 -0
- package/dist/dto/get-setup-data.dto.d.ts.map +1 -1
- package/dist/dto/get-setup-data.dto.js +51 -0
- package/dist/dto/get-setup-data.dto.js.map +1 -1
- package/dist/dto/get-suspicious-activity.dto.d.ts +31 -0
- package/dist/dto/get-suspicious-activity.dto.d.ts.map +1 -1
- package/dist/dto/get-suspicious-activity.dto.js +31 -0
- package/dist/dto/get-suspicious-activity.dto.js.map +1 -1
- package/dist/dto/get-user-agent-response.dto.d.ts +19 -0
- package/dist/dto/get-user-agent-response.dto.d.ts.map +1 -1
- package/dist/dto/get-user-agent-response.dto.js +19 -0
- package/dist/dto/get-user-agent-response.dto.js.map +1 -1
- package/dist/dto/get-user-auth-history.dto.d.ts +64 -0
- package/dist/dto/get-user-auth-history.dto.d.ts.map +1 -1
- package/dist/dto/get-user-auth-history.dto.js +64 -0
- package/dist/dto/get-user-auth-history.dto.js.map +1 -1
- package/dist/dto/get-user-by-email.dto.d.ts +42 -0
- package/dist/dto/get-user-by-email.dto.d.ts.map +1 -1
- package/dist/dto/get-user-by-email.dto.js +42 -0
- package/dist/dto/get-user-by-email.dto.js.map +1 -1
- package/dist/dto/get-user-by-id.dto.d.ts +32 -0
- package/dist/dto/get-user-by-id.dto.d.ts.map +1 -1
- package/dist/dto/get-user-by-id.dto.js +32 -0
- package/dist/dto/get-user-by-id.dto.js.map +1 -1
- package/dist/dto/get-user-devices.dto.d.ts +34 -0
- package/dist/dto/get-user-devices.dto.d.ts.map +1 -1
- package/dist/dto/get-user-devices.dto.js +34 -0
- package/dist/dto/get-user-devices.dto.js.map +1 -1
- package/dist/dto/get-user-response.dto.d.ts +14 -0
- package/dist/dto/get-user-response.dto.d.ts.map +1 -1
- package/dist/dto/get-user-response.dto.js +15 -0
- package/dist/dto/get-user-response.dto.js.map +1 -1
- package/dist/dto/has-provider.dto.d.ts +33 -0
- package/dist/dto/has-provider.dto.d.ts.map +1 -1
- package/dist/dto/has-provider.dto.js +33 -0
- package/dist/dto/has-provider.dto.js.map +1 -1
- package/dist/dto/index.js +5 -0
- package/dist/dto/index.js.map +1 -1
- package/dist/dto/is-trusted-device-response.dto.d.ts +28 -0
- package/dist/dto/is-trusted-device-response.dto.d.ts.map +1 -1
- package/dist/dto/is-trusted-device-response.dto.js +28 -0
- package/dist/dto/is-trusted-device-response.dto.js.map +1 -1
- package/dist/dto/list-providers-response.dto.d.ts +19 -0
- package/dist/dto/list-providers-response.dto.d.ts.map +1 -1
- package/dist/dto/list-providers-response.dto.js +19 -0
- package/dist/dto/list-providers-response.dto.js.map +1 -1
- package/dist/dto/login.dto.d.ts +48 -0
- package/dist/dto/login.dto.d.ts.map +1 -1
- package/dist/dto/login.dto.js +50 -1
- package/dist/dto/login.dto.js.map +1 -1
- package/dist/dto/logout-all-response.dto.d.ts +20 -0
- package/dist/dto/logout-all-response.dto.d.ts.map +1 -1
- package/dist/dto/logout-all-response.dto.js +20 -0
- package/dist/dto/logout-all-response.dto.js.map +1 -1
- package/dist/dto/logout-all.dto.d.ts +42 -0
- package/dist/dto/logout-all.dto.d.ts.map +1 -1
- package/dist/dto/logout-all.dto.js +42 -0
- package/dist/dto/logout-all.dto.js.map +1 -1
- package/dist/dto/logout-response.dto.d.ts +21 -0
- package/dist/dto/logout-response.dto.d.ts.map +1 -1
- package/dist/dto/logout-response.dto.js +21 -0
- package/dist/dto/logout-response.dto.js.map +1 -1
- package/dist/dto/logout.dto.d.ts +45 -0
- package/dist/dto/logout.dto.d.ts.map +1 -1
- package/dist/dto/logout.dto.js +45 -0
- package/dist/dto/logout.dto.js.map +1 -1
- package/dist/dto/refresh-token.dto.d.ts +28 -0
- package/dist/dto/refresh-token.dto.d.ts.map +1 -1
- package/dist/dto/refresh-token.dto.js +28 -0
- package/dist/dto/refresh-token.dto.js.map +1 -1
- package/dist/dto/remove-devices.dto.d.ts +51 -0
- package/dist/dto/remove-devices.dto.d.ts.map +1 -1
- package/dist/dto/remove-devices.dto.js +51 -0
- package/dist/dto/remove-devices.dto.js.map +1 -1
- package/dist/dto/resend-code-response.dto.d.ts +28 -0
- package/dist/dto/resend-code-response.dto.d.ts.map +1 -1
- package/dist/dto/resend-code-response.dto.js +28 -0
- package/dist/dto/resend-code-response.dto.js.map +1 -1
- package/dist/dto/resend-code.dto.d.ts +37 -0
- package/dist/dto/resend-code.dto.d.ts.map +1 -1
- package/dist/dto/resend-code.dto.js +37 -0
- package/dist/dto/resend-code.dto.js.map +1 -1
- package/dist/dto/reset-password.dto.d.ts +74 -0
- package/dist/dto/reset-password.dto.d.ts.map +1 -1
- package/dist/dto/reset-password.dto.js +76 -1
- package/dist/dto/reset-password.dto.js.map +1 -1
- package/dist/dto/respond-challenge.dto.d.ts +147 -0
- package/dist/dto/respond-challenge.dto.d.ts.map +1 -1
- package/dist/dto/respond-challenge.dto.js +162 -0
- package/dist/dto/respond-challenge.dto.js.map +1 -1
- package/dist/dto/set-mfa-exemption.dto.d.ts +65 -0
- package/dist/dto/set-mfa-exemption.dto.d.ts.map +1 -1
- package/dist/dto/set-mfa-exemption.dto.js +65 -0
- package/dist/dto/set-mfa-exemption.dto.js.map +1 -1
- package/dist/dto/set-must-change-password-response.dto.d.ts +23 -0
- package/dist/dto/set-must-change-password-response.dto.d.ts.map +1 -1
- package/dist/dto/set-must-change-password-response.dto.js +23 -0
- package/dist/dto/set-must-change-password-response.dto.js.map +1 -1
- package/dist/dto/set-must-change-password.dto.d.ts +32 -0
- package/dist/dto/set-must-change-password.dto.d.ts.map +1 -1
- package/dist/dto/set-must-change-password.dto.js +32 -0
- package/dist/dto/set-must-change-password.dto.js.map +1 -1
- package/dist/dto/set-preferred-method.dto.d.ts +48 -0
- package/dist/dto/set-preferred-method.dto.d.ts.map +1 -1
- package/dist/dto/set-preferred-method.dto.js +48 -0
- package/dist/dto/set-preferred-method.dto.js.map +1 -1
- package/dist/dto/setup-mfa.dto.d.ts +62 -0
- package/dist/dto/setup-mfa.dto.d.ts.map +1 -1
- package/dist/dto/setup-mfa.dto.js +62 -0
- package/dist/dto/setup-mfa.dto.js.map +1 -1
- package/dist/dto/signup.dto.d.ts +92 -0
- package/dist/dto/signup.dto.d.ts.map +1 -1
- package/dist/dto/signup.dto.js +93 -0
- package/dist/dto/signup.dto.js.map +1 -1
- package/dist/dto/social-auth.dto.d.ts +234 -0
- package/dist/dto/social-auth.dto.d.ts.map +1 -1
- package/dist/dto/social-auth.dto.js +234 -0
- package/dist/dto/social-auth.dto.js.map +1 -1
- package/dist/dto/trust-device-response.dto.d.ts +26 -0
- package/dist/dto/trust-device-response.dto.d.ts.map +1 -1
- package/dist/dto/trust-device-response.dto.js +26 -0
- package/dist/dto/trust-device-response.dto.js.map +1 -1
- package/dist/dto/trust-device.dto.d.ts +9 -0
- package/dist/dto/trust-device.dto.d.ts.map +1 -1
- package/dist/dto/trust-device.dto.js +9 -0
- package/dist/dto/trust-device.dto.js.map +1 -1
- package/dist/dto/update-user-attributes-request.dto.d.ts +36 -0
- package/dist/dto/update-user-attributes-request.dto.d.ts.map +1 -1
- package/dist/dto/update-user-attributes-request.dto.js +36 -0
- package/dist/dto/update-user-attributes-request.dto.js.map +1 -1
- package/dist/dto/user-response.dto.d.ts +81 -0
- package/dist/dto/user-response.dto.d.ts.map +1 -1
- package/dist/dto/user-response.dto.js +84 -2
- package/dist/dto/user-response.dto.js.map +1 -1
- package/dist/dto/user-update.dto.d.ts +132 -0
- package/dist/dto/user-update.dto.d.ts.map +1 -1
- package/dist/dto/user-update.dto.js +133 -0
- package/dist/dto/user-update.dto.js.map +1 -1
- package/dist/dto/verify-email.dto.d.ts +171 -0
- package/dist/dto/verify-email.dto.d.ts.map +1 -1
- package/dist/dto/verify-email.dto.js +173 -1
- package/dist/dto/verify-email.dto.js.map +1 -1
- package/dist/dto/verify-mfa-code.dto.d.ts +65 -0
- package/dist/dto/verify-mfa-code.dto.d.ts.map +1 -1
- package/dist/dto/verify-mfa-code.dto.js +65 -0
- package/dist/dto/verify-mfa-code.dto.js.map +1 -1
- package/dist/dto/verify-phone-by-sub.dto.d.ts +49 -0
- package/dist/dto/verify-phone-by-sub.dto.d.ts.map +1 -1
- package/dist/dto/verify-phone-by-sub.dto.js +49 -0
- package/dist/dto/verify-phone-by-sub.dto.js.map +1 -1
- package/dist/dto/verify-phone.dto.d.ts +139 -0
- package/dist/dto/verify-phone.dto.d.ts.map +1 -1
- package/dist/dto/verify-phone.dto.js +142 -1
- package/dist/dto/verify-phone.dto.js.map +1 -1
- package/dist/dto.d.ts +10 -0
- package/dist/dto.d.ts.map +1 -1
- package/dist/dto.js +10 -0
- package/dist/dto.js.map +1 -1
- package/dist/entities/auth-audit.entity.d.ts +159 -0
- package/dist/entities/auth-audit.entity.d.ts.map +1 -1
- package/dist/entities/auth-audit.entity.js +166 -0
- package/dist/entities/auth-audit.entity.js.map +1 -1
- package/dist/entities/challenge-session.entity.d.ts +87 -0
- package/dist/entities/challenge-session.entity.d.ts.map +1 -1
- package/dist/entities/challenge-session.entity.js +87 -0
- package/dist/entities/challenge-session.entity.js.map +1 -1
- package/dist/entities/index.d.ts +18 -0
- package/dist/entities/index.d.ts.map +1 -1
- package/dist/entities/index.js +18 -0
- package/dist/entities/index.js.map +1 -1
- package/dist/entities/login-attempt.entity.d.ts +43 -0
- package/dist/entities/login-attempt.entity.d.ts.map +1 -1
- package/dist/entities/login-attempt.entity.js +43 -0
- package/dist/entities/login-attempt.entity.js.map +1 -1
- package/dist/entities/mfa-device.entity.d.ts +112 -0
- package/dist/entities/mfa-device.entity.d.ts.map +1 -1
- package/dist/entities/mfa-device.entity.js +112 -0
- package/dist/entities/mfa-device.entity.js.map +1 -1
- package/dist/entities/rate-limit.entity.d.ts +31 -0
- package/dist/entities/rate-limit.entity.d.ts.map +1 -1
- package/dist/entities/rate-limit.entity.js +31 -0
- package/dist/entities/rate-limit.entity.js.map +1 -1
- package/dist/entities/session.entity.d.ts +121 -0
- package/dist/entities/session.entity.d.ts.map +1 -1
- package/dist/entities/session.entity.js +121 -0
- package/dist/entities/session.entity.js.map +1 -1
- package/dist/entities/social-account.entity.d.ts +75 -0
- package/dist/entities/social-account.entity.d.ts.map +1 -1
- package/dist/entities/social-account.entity.js +75 -0
- package/dist/entities/social-account.entity.js.map +1 -1
- package/dist/entities/storage-lock.entity.d.ts +28 -0
- package/dist/entities/storage-lock.entity.d.ts.map +1 -1
- package/dist/entities/storage-lock.entity.js +28 -0
- package/dist/entities/storage-lock.entity.js.map +1 -1
- package/dist/entities/trusted-device.entity.d.ts +83 -0
- package/dist/entities/trusted-device.entity.d.ts.map +1 -1
- package/dist/entities/trusted-device.entity.js +83 -0
- package/dist/entities/trusted-device.entity.js.map +1 -1
- package/dist/entities/user.entity.d.ts +166 -0
- package/dist/entities/user.entity.d.ts.map +1 -1
- package/dist/entities/user.entity.js +166 -0
- package/dist/entities/user.entity.js.map +1 -1
- package/dist/entities/verification-token.entity.d.ts +102 -0
- package/dist/entities/verification-token.entity.d.ts.map +1 -1
- package/dist/entities/verification-token.entity.js +102 -0
- package/dist/entities/verification-token.entity.js.map +1 -1
- package/dist/entities.d.ts +8 -0
- package/dist/entities.d.ts.map +1 -1
- package/dist/entities.js +8 -0
- package/dist/entities.js.map +1 -1
- package/dist/enums/auth-audit-event-type.enum.d.ts +211 -0
- package/dist/enums/auth-audit-event-type.enum.d.ts.map +1 -1
- package/dist/enums/auth-audit-event-type.enum.js +244 -0
- package/dist/enums/auth-audit-event-type.enum.js.map +1 -1
- package/dist/enums/error-codes.enum.d.ts +296 -0
- package/dist/enums/error-codes.enum.d.ts.map +1 -1
- package/dist/enums/error-codes.enum.js +332 -0
- package/dist/enums/error-codes.enum.js.map +1 -1
- package/dist/enums/mfa-method.enum.d.ts +74 -0
- package/dist/enums/mfa-method.enum.d.ts.map +1 -1
- package/dist/enums/mfa-method.enum.js +64 -0
- package/dist/enums/mfa-method.enum.js.map +1 -1
- package/dist/enums/risk-factor.enum.d.ts +91 -0
- package/dist/enums/risk-factor.enum.d.ts.map +1 -1
- package/dist/enums/risk-factor.enum.js +97 -0
- package/dist/enums/risk-factor.enum.js.map +1 -1
- package/dist/exceptions/nauth.exception.d.ts +149 -0
- package/dist/exceptions/nauth.exception.d.ts.map +1 -1
- package/dist/exceptions/nauth.exception.js +159 -0
- package/dist/exceptions/nauth.exception.js.map +1 -1
- package/dist/handlers/auth.handler.d.ts +32 -0
- package/dist/handlers/auth.handler.d.ts.map +1 -1
- package/dist/handlers/auth.handler.js +47 -1
- package/dist/handlers/auth.handler.js.map +1 -1
- package/dist/handlers/client-info.handler.d.ts +25 -0
- package/dist/handlers/client-info.handler.d.ts.map +1 -1
- package/dist/handlers/client-info.handler.js +36 -2
- package/dist/handlers/client-info.handler.js.map +1 -1
- package/dist/handlers/csrf.handler.d.ts +32 -0
- package/dist/handlers/csrf.handler.d.ts.map +1 -1
- package/dist/handlers/csrf.handler.js +49 -1
- package/dist/handlers/csrf.handler.js.map +1 -1
- package/dist/handlers/token-delivery.handler.d.ts +16 -0
- package/dist/handlers/token-delivery.handler.d.ts.map +1 -1
- package/dist/handlers/token-delivery.handler.js +22 -1
- package/dist/handlers/token-delivery.handler.js.map +1 -1
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +67 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces/client-info.interface.d.ts +58 -0
- package/dist/interfaces/client-info.interface.d.ts.map +1 -1
- package/dist/interfaces/config.interface.d.ts +1774 -0
- package/dist/interfaces/config.interface.d.ts.map +1 -1
- package/dist/interfaces/config.interface.js +16 -0
- package/dist/interfaces/config.interface.js.map +1 -1
- package/dist/interfaces/entities.interface.d.ts +48 -0
- package/dist/interfaces/entities.interface.d.ts.map +1 -1
- package/dist/interfaces/entities.interface.js +8 -0
- package/dist/interfaces/entities.interface.js.map +1 -1
- package/dist/interfaces/index.js +5 -0
- package/dist/interfaces/index.js.map +1 -1
- package/dist/interfaces/logger.interface.d.ts +213 -0
- package/dist/interfaces/logger.interface.d.ts.map +1 -1
- package/dist/interfaces/logger.interface.js +35 -0
- package/dist/interfaces/logger.interface.js.map +1 -1
- package/dist/interfaces/mfa-provider.interface.d.ts +134 -0
- package/dist/interfaces/mfa-provider.interface.d.ts.map +1 -1
- package/dist/interfaces/oauth.interface.d.ts +110 -0
- package/dist/interfaces/oauth.interface.d.ts.map +1 -1
- package/dist/interfaces/provider.interface.d.ts +83 -0
- package/dist/interfaces/provider.interface.d.ts.map +1 -1
- package/dist/interfaces/sms-template.interface.d.ts +246 -0
- package/dist/interfaces/sms-template.interface.d.ts.map +1 -1
- package/dist/interfaces/sms-template.interface.js +26 -0
- package/dist/interfaces/sms-template.interface.js.map +1 -1
- package/dist/interfaces/social-auth-provider.interface.d.ts +115 -0
- package/dist/interfaces/social-auth-provider.interface.d.ts.map +1 -1
- package/dist/interfaces/storage-adapter.interface.d.ts +37 -0
- package/dist/interfaces/storage-adapter.interface.d.ts.map +1 -1
- package/dist/interfaces/template.interface.d.ts +351 -0
- package/dist/interfaces/template.interface.d.ts.map +1 -1
- package/dist/interfaces/template.interface.js +13 -0
- package/dist/interfaces/template.interface.js.map +1 -1
- package/dist/interfaces/token-verifier.interface.d.ts +101 -0
- package/dist/interfaces/token-verifier.interface.d.ts.map +1 -1
- package/dist/interfaces.d.ts +8 -0
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.js +8 -0
- package/dist/interfaces.js.map +1 -1
- package/dist/internal.d.ts +120 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +138 -0
- package/dist/internal.js.map +1 -1
- package/dist/platform/interfaces.d.ts +187 -0
- package/dist/platform/interfaces.d.ts.map +1 -1
- package/dist/platform/interfaces.js +11 -0
- package/dist/platform/interfaces.js.map +1 -1
- package/dist/schemas/auth-config.schema.d.ts +48 -0
- package/dist/schemas/auth-config.schema.d.ts.map +1 -1
- package/dist/schemas/auth-config.schema.js +188 -9
- package/dist/schemas/auth-config.schema.js.map +1 -1
- package/dist/services/adaptive-mfa-decision.service.d.ts +144 -0
- package/dist/services/adaptive-mfa-decision.service.d.ts.map +1 -1
- package/dist/services/adaptive-mfa-decision.service.js +151 -5
- package/dist/services/adaptive-mfa-decision.service.js.map +1 -1
- package/dist/services/auth-audit.service.d.ts +195 -0
- package/dist/services/auth-audit.service.d.ts.map +1 -1
- package/dist/services/auth-audit.service.js +228 -1
- package/dist/services/auth-audit.service.js.map +1 -1
- package/dist/services/auth-challenge-helper.service.d.ts +144 -1
- package/dist/services/auth-challenge-helper.service.d.ts.map +1 -1
- package/dist/services/auth-challenge-helper.service.js +295 -16
- package/dist/services/auth-challenge-helper.service.js.map +1 -1
- package/dist/services/auth-flow-context-builder.service.d.ts +120 -1
- package/dist/services/auth-flow-context-builder.service.d.ts.map +1 -1
- package/dist/services/auth-flow-context-builder.service.js +184 -5
- package/dist/services/auth-flow-context-builder.service.js.map +1 -1
- package/dist/services/auth-flow-rules.d.ts +136 -0
- package/dist/services/auth-flow-rules.d.ts.map +1 -1
- package/dist/services/auth-flow-rules.js +137 -0
- package/dist/services/auth-flow-rules.js.map +1 -1
- package/dist/services/auth-flow-state-definitions.d.ts +40 -0
- package/dist/services/auth-flow-state-definitions.d.ts.map +1 -1
- package/dist/services/auth-flow-state-definitions.js +98 -0
- package/dist/services/auth-flow-state-definitions.js.map +1 -1
- package/dist/services/auth-flow-state-machine.service.d.ts +91 -0
- package/dist/services/auth-flow-state-machine.service.d.ts.map +1 -1
- package/dist/services/auth-flow-state-machine.service.js +102 -0
- package/dist/services/auth-flow-state-machine.service.js.map +1 -1
- package/dist/services/auth-flow-state-machine.types.d.ts +221 -0
- package/dist/services/auth-flow-state-machine.types.d.ts.map +1 -1
- package/dist/services/auth-flow-state-machine.types.js +47 -0
- package/dist/services/auth-flow-state-machine.types.js.map +1 -1
- package/dist/services/auth.service.d.ts +397 -1
- package/dist/services/auth.service.d.ts.map +1 -1
- package/dist/services/auth.service.js +943 -27
- package/dist/services/auth.service.js.map +1 -1
- package/dist/services/challenge.service.d.ts +255 -1
- package/dist/services/challenge.service.d.ts.map +1 -1
- package/dist/services/challenge.service.js +327 -3
- package/dist/services/challenge.service.js.map +1 -1
- package/dist/services/client-info.service.d.ts +143 -0
- package/dist/services/client-info.service.d.ts.map +1 -1
- package/dist/services/client-info.service.js +161 -0
- package/dist/services/client-info.service.js.map +1 -1
- package/dist/services/csrf.service.d.ts +15 -0
- package/dist/services/csrf.service.d.ts.map +1 -1
- package/dist/services/csrf.service.js +16 -0
- package/dist/services/csrf.service.js.map +1 -1
- package/dist/services/email-verification.service.d.ts +52 -0
- package/dist/services/email-verification.service.d.ts.map +1 -1
- package/dist/services/email-verification.service.js +149 -10
- package/dist/services/email-verification.service.js.map +1 -1
- package/dist/services/geo-location.service.d.ts +105 -0
- package/dist/services/geo-location.service.d.ts.map +1 -1
- package/dist/services/geo-location.service.js +188 -2
- package/dist/services/geo-location.service.js.map +1 -1
- package/dist/services/jwt.service.d.ts +257 -0
- package/dist/services/jwt.service.d.ts.map +1 -1
- package/dist/services/jwt.service.js +284 -1
- package/dist/services/jwt.service.js.map +1 -1
- package/dist/services/mfa-base.service.d.ts +179 -1
- package/dist/services/mfa-base.service.d.ts.map +1 -1
- package/dist/services/mfa-base.service.js +256 -2
- package/dist/services/mfa-base.service.js.map +1 -1
- package/dist/services/mfa.service.d.ts +304 -0
- package/dist/services/mfa.service.d.ts.map +1 -1
- package/dist/services/mfa.service.js +380 -0
- package/dist/services/mfa.service.js.map +1 -1
- package/dist/services/password-reset.service.d.ts +46 -0
- package/dist/services/password-reset.service.d.ts.map +1 -1
- package/dist/services/password-reset.service.js +79 -0
- package/dist/services/password-reset.service.js.map +1 -1
- package/dist/services/password.service.d.ts +139 -0
- package/dist/services/password.service.d.ts.map +1 -1
- package/dist/services/password.service.js +167 -9
- package/dist/services/password.service.js.map +1 -1
- package/dist/services/phone-verification.service.d.ts +75 -0
- package/dist/services/phone-verification.service.d.ts.map +1 -1
- package/dist/services/phone-verification.service.js +188 -6
- package/dist/services/phone-verification.service.js.map +1 -1
- package/dist/services/risk-detection.service.d.ts +198 -0
- package/dist/services/risk-detection.service.d.ts.map +1 -1
- package/dist/services/risk-detection.service.js +358 -11
- package/dist/services/risk-detection.service.js.map +1 -1
- package/dist/services/risk-scoring.service.d.ts +84 -0
- package/dist/services/risk-scoring.service.d.ts.map +1 -1
- package/dist/services/risk-scoring.service.js +87 -0
- package/dist/services/risk-scoring.service.js.map +1 -1
- package/dist/services/session.service.d.ts +204 -0
- package/dist/services/session.service.d.ts.map +1 -1
- package/dist/services/session.service.js +289 -4
- package/dist/services/session.service.js.map +1 -1
- package/dist/services/social-auth-base.service.d.ts +123 -1
- package/dist/services/social-auth-base.service.d.ts.map +1 -1
- package/dist/services/social-auth-base.service.js +155 -2
- package/dist/services/social-auth-base.service.js.map +1 -1
- package/dist/services/social-auth.service.d.ts +191 -0
- package/dist/services/social-auth.service.d.ts.map +1 -1
- package/dist/services/social-auth.service.js +215 -2
- package/dist/services/social-auth.service.js.map +1 -1
- package/dist/services/social-provider-registry.service.d.ts +86 -0
- package/dist/services/social-provider-registry.service.d.ts.map +1 -1
- package/dist/services/social-provider-registry.service.js +86 -0
- package/dist/services/social-provider-registry.service.js.map +1 -1
- package/dist/services/trusted-device.service.d.ts +105 -0
- package/dist/services/trusted-device.service.d.ts.map +1 -1
- package/dist/services/trusted-device.service.js +133 -4
- package/dist/services/trusted-device.service.js.map +1 -1
- package/dist/storage/account-lockout-storage.service.d.ts +35 -0
- package/dist/storage/account-lockout-storage.service.d.ts.map +1 -1
- package/dist/storage/account-lockout-storage.service.js +35 -0
- package/dist/storage/account-lockout-storage.service.js.map +1 -1
- package/dist/storage/memory-storage.adapter.d.ts +148 -0
- package/dist/storage/memory-storage.adapter.d.ts.map +1 -1
- package/dist/storage/memory-storage.adapter.js +201 -6
- package/dist/storage/memory-storage.adapter.js.map +1 -1
- package/dist/storage/rate-limit-storage.service.d.ts +3 -0
- package/dist/storage/rate-limit-storage.service.d.ts.map +1 -1
- package/dist/storage/rate-limit-storage.service.js +4 -0
- package/dist/storage/rate-limit-storage.service.js.map +1 -1
- package/dist/storage.d.ts +8 -0
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +8 -0
- package/dist/storage.js.map +1 -1
- package/dist/templates/html-template.engine.d.ts +110 -0
- package/dist/templates/html-template.engine.d.ts.map +1 -1
- package/dist/templates/html-template.engine.js +147 -0
- package/dist/templates/html-template.engine.js.map +1 -1
- package/dist/templates/index.d.ts +5 -0
- package/dist/templates/index.d.ts.map +1 -1
- package/dist/templates/index.js +5 -0
- package/dist/templates/index.js.map +1 -1
- package/dist/templates/sms-template.engine.d.ts +151 -0
- package/dist/templates/sms-template.engine.d.ts.map +1 -1
- package/dist/templates/sms-template.engine.js +171 -0
- package/dist/templates/sms-template.engine.js.map +1 -1
- package/dist/templates.d.ts +8 -0
- package/dist/templates.d.ts.map +1 -1
- package/dist/templates.js +8 -0
- package/dist/templates.js.map +1 -1
- package/dist/utils/common-passwords.d.ts +42 -0
- package/dist/utils/common-passwords.d.ts.map +1 -1
- package/dist/utils/common-passwords.js +88 -0
- package/dist/utils/common-passwords.js.map +1 -1
- package/dist/utils/context-storage.d.ts +129 -0
- package/dist/utils/context-storage.d.ts.map +1 -1
- package/dist/utils/context-storage.js +129 -0
- package/dist/utils/context-storage.js.map +1 -1
- package/dist/utils/cookie-names.util.d.ts +35 -0
- package/dist/utils/cookie-names.util.d.ts.map +1 -1
- package/dist/utils/cookie-names.util.js +37 -0
- package/dist/utils/cookie-names.util.js.map +1 -1
- package/dist/utils/cookies.util.d.ts +19 -0
- package/dist/utils/cookies.util.d.ts.map +1 -1
- package/dist/utils/cookies.util.js +30 -3
- package/dist/utils/cookies.util.js.map +1 -1
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/ip-extractor.d.ts +88 -0
- package/dist/utils/ip-extractor.d.ts.map +1 -1
- package/dist/utils/ip-extractor.js +109 -16
- package/dist/utils/ip-extractor.js.map +1 -1
- package/dist/utils/nauth-logger.d.ts +70 -0
- package/dist/utils/nauth-logger.d.ts.map +1 -1
- package/dist/utils/nauth-logger.js +82 -4
- package/dist/utils/nauth-logger.js.map +1 -1
- package/dist/utils/pii-redactor.d.ts +70 -0
- package/dist/utils/pii-redactor.d.ts.map +1 -1
- package/dist/utils/pii-redactor.js +102 -0
- package/dist/utils/pii-redactor.js.map +1 -1
- package/dist/utils/setup/get-repositories.d.ts +16 -0
- package/dist/utils/setup/get-repositories.d.ts.map +1 -1
- package/dist/utils/setup/get-repositories.js +21 -0
- package/dist/utils/setup/get-repositories.js.map +1 -1
- package/dist/utils/setup/init-services.d.ts +40 -1
- package/dist/utils/setup/init-services.d.ts.map +1 -1
- package/dist/utils/setup/init-services.js +98 -0
- package/dist/utils/setup/init-services.js.map +1 -1
- package/dist/utils/setup/init-social.d.ts +27 -0
- package/dist/utils/setup/init-social.d.ts.map +1 -1
- package/dist/utils/setup/init-social.js +49 -0
- package/dist/utils/setup/init-social.js.map +1 -1
- package/dist/utils/setup/init-storage.d.ts +22 -0
- package/dist/utils/setup/init-storage.d.ts.map +1 -1
- package/dist/utils/setup/init-storage.js +36 -0
- package/dist/utils/setup/init-storage.js.map +1 -1
- package/dist/utils/setup/register-mfa.d.ts +22 -0
- package/dist/utils/setup/register-mfa.d.ts.map +1 -1
- package/dist/utils/setup/register-mfa.js +41 -0
- package/dist/utils/setup/register-mfa.js.map +1 -1
- package/dist/utils/setup/run-nauth-migrations.d.ts +7 -0
- package/dist/utils/setup/run-nauth-migrations.d.ts.map +1 -1
- package/dist/utils/setup/run-nauth-migrations.js +8 -0
- package/dist/utils/setup/run-nauth-migrations.js.map +1 -1
- package/dist/utils/token-delivery-policy.d.ts +17 -0
- package/dist/utils/token-delivery-policy.d.ts.map +1 -1
- package/dist/utils/token-delivery-policy.js +17 -0
- package/dist/utils/token-delivery-policy.js.map +1 -1
- package/dist/utils.d.ts +8 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +8 -0
- package/dist/utils.js.map +1 -1
- package/dist/validators/template.validator.d.ts +80 -0
- package/dist/validators/template.validator.d.ts.map +1 -1
- package/dist/validators/template.validator.js +94 -0
- package/dist/validators/template.validator.js.map +1 -1
- 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
|
-
|
|
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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"}
|