@nauth-toolkit/core 0.1.14 → 0.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +1780 -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 +62 -0
- package/dist/schemas/auth-config.schema.d.ts.map +1 -1
- package/dist/schemas/auth-config.schema.js +189 -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 +152 -12
- 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
|
@@ -4,37 +4,112 @@ exports.HtmlTemplateEngine = void 0;
|
|
|
4
4
|
const template_interface_1 = require("../interfaces/template.interface");
|
|
5
5
|
const nauth_exception_1 = require("../exceptions/nauth.exception");
|
|
6
6
|
const error_codes_enum_1 = require("../enums/error-codes.enum");
|
|
7
|
+
/**
|
|
8
|
+
* HTML Template Engine
|
|
9
|
+
*
|
|
10
|
+
* Simple yet powerful template engine for email templates using HTML with placeholder tokens.
|
|
11
|
+
* Supports {{variable}} syntax for variable injection.
|
|
12
|
+
*
|
|
13
|
+
* Features:
|
|
14
|
+
* - Simple {{variable}} placeholder syntax
|
|
15
|
+
* - Built-in default templates for all email types
|
|
16
|
+
* - Custom template registration
|
|
17
|
+
* - Automatic HTML entity escaping for security
|
|
18
|
+
* - Plain text generation from HTML
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* const engine = new HtmlTemplateEngine();
|
|
23
|
+
* const result = await engine.render(
|
|
24
|
+
* TemplateType.VERIFICATION,
|
|
25
|
+
* { userName: 'John', code: '123456', expiryMinutes: 60 }
|
|
26
|
+
* );
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
7
29
|
class HtmlTemplateEngine {
|
|
30
|
+
/**
|
|
31
|
+
* Storage for registered templates
|
|
32
|
+
* Maps template type to template definition
|
|
33
|
+
*/
|
|
8
34
|
templates = new Map();
|
|
35
|
+
/**
|
|
36
|
+
* Constructor
|
|
37
|
+
* Initializes the engine with default templates
|
|
38
|
+
*/
|
|
9
39
|
constructor() {
|
|
10
40
|
this.registerDefaultTemplates();
|
|
11
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Render a template with variables
|
|
44
|
+
*
|
|
45
|
+
* Replaces all {{variable}} placeholders with actual values.
|
|
46
|
+
* Variables are HTML-escaped for security.
|
|
47
|
+
* Handles firstName/username fallback for greetings.
|
|
48
|
+
*
|
|
49
|
+
* @param type - Template type to render
|
|
50
|
+
* @param variables - Variables to inject
|
|
51
|
+
* @returns Rendered email template
|
|
52
|
+
* @throws {Error} If template type not found
|
|
53
|
+
*/
|
|
12
54
|
async render(type, variables) {
|
|
13
55
|
const template = this.templates.get(type);
|
|
14
56
|
if (!template) {
|
|
15
57
|
throw new nauth_exception_1.NAuthException(error_codes_enum_1.AuthErrorCode.INTERNAL_ERROR, `Template "${type}" not found. Available templates: ${Array.from(this.templates.keys()).join(', ')}`);
|
|
16
58
|
}
|
|
59
|
+
// Merge with default variables and add greeting name
|
|
17
60
|
const allVariables = {
|
|
18
61
|
currentYear: new Date().getFullYear(),
|
|
19
62
|
...variables,
|
|
20
63
|
greetingName: this.getGreetingName(variables),
|
|
21
64
|
};
|
|
65
|
+
// Render subject and HTML
|
|
22
66
|
const subject = this.replaceVariables(template.subject, allVariables);
|
|
23
67
|
const html = this.replaceVariables(template.html, allVariables);
|
|
68
|
+
// Generate plain text if not provided
|
|
24
69
|
const text = template.text ? this.replaceVariablesForText(template.text, allVariables) : this.htmlToText(html);
|
|
25
70
|
return { subject, html, text };
|
|
26
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* Register a custom template
|
|
74
|
+
*
|
|
75
|
+
* @param type - Template type identifier
|
|
76
|
+
* @param template - Template definition
|
|
77
|
+
*/
|
|
27
78
|
registerTemplate(type, template) {
|
|
28
79
|
this.templates.set(type, template);
|
|
29
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* Get all available template types
|
|
83
|
+
*
|
|
84
|
+
* @returns Array of template type identifiers
|
|
85
|
+
*/
|
|
30
86
|
getAvailableTemplates() {
|
|
31
87
|
return Array.from(this.templates.keys());
|
|
32
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* Check if a template exists
|
|
91
|
+
*
|
|
92
|
+
* @param type - Template type to check
|
|
93
|
+
* @returns True if template is registered
|
|
94
|
+
*/
|
|
33
95
|
hasTemplate(type) {
|
|
34
96
|
return this.templates.has(type);
|
|
35
97
|
}
|
|
98
|
+
/**
|
|
99
|
+
* Replace {{variable}} placeholders with values
|
|
100
|
+
*
|
|
101
|
+
* Escapes HTML entities in variables for security.
|
|
102
|
+
* Handles missing variables gracefully (replaces with empty string).
|
|
103
|
+
* Supports firstName/username fallback logic and simple conditionals.
|
|
104
|
+
*
|
|
105
|
+
* @param template - Template string with {{placeholders}}
|
|
106
|
+
* @param variables - Variables to inject
|
|
107
|
+
* @returns Template with variables replaced
|
|
108
|
+
* @private
|
|
109
|
+
*/
|
|
36
110
|
replaceVariables(template, variables) {
|
|
37
111
|
let result = template;
|
|
112
|
+
// Handle simple conditionals like {{#if greetingName}}Hi {{greetingName}},{{else}}Hi,{{/if}}
|
|
38
113
|
result = result.replace(/\{\{#if (\w+)\}\}(.*?)\{\{else\}\}(.*?)\{\{\/if\}\}/g, (_match, key, ifContent, elseContent) => {
|
|
39
114
|
const value = variables[key];
|
|
40
115
|
if (value && value !== '') {
|
|
@@ -44,17 +119,31 @@ class HtmlTemplateEngine {
|
|
|
44
119
|
return elseContent;
|
|
45
120
|
}
|
|
46
121
|
});
|
|
122
|
+
// Replace regular variables
|
|
47
123
|
result = result.replace(/\{\{(\w+)\}\}/g, (_match, key) => {
|
|
48
124
|
const value = variables[key];
|
|
125
|
+
// Return empty string if variable is undefined
|
|
49
126
|
if (value === undefined || value === null) {
|
|
50
127
|
return '';
|
|
51
128
|
}
|
|
129
|
+
// Convert to string and escape HTML entities
|
|
52
130
|
return this.escapeHtml(String(value));
|
|
53
131
|
});
|
|
54
132
|
return result;
|
|
55
133
|
}
|
|
134
|
+
/**
|
|
135
|
+
* Replace {{variable}} placeholders with values for text content
|
|
136
|
+
*
|
|
137
|
+
* Similar to replaceVariables but doesn't escape HTML entities for plain text.
|
|
138
|
+
*
|
|
139
|
+
* @param template - Template string with {{placeholders}}
|
|
140
|
+
* @param variables - Variables to inject
|
|
141
|
+
* @returns Template with variables replaced
|
|
142
|
+
* @private
|
|
143
|
+
*/
|
|
56
144
|
replaceVariablesForText(template, variables) {
|
|
57
145
|
let result = template;
|
|
146
|
+
// Handle simple conditionals like {{#if greetingName}}Hi {{greetingName}},{{else}}Hi,{{/if}}
|
|
58
147
|
result = result.replace(/\{\{#if (\w+)\}\}(.*?)\{\{else\}\}(.*?)\{\{\/if\}\}/g, (_match, key, ifContent, elseContent) => {
|
|
59
148
|
const value = variables[key];
|
|
60
149
|
if (value && value !== '') {
|
|
@@ -64,15 +153,25 @@ class HtmlTemplateEngine {
|
|
|
64
153
|
return elseContent;
|
|
65
154
|
}
|
|
66
155
|
});
|
|
156
|
+
// Replace regular variables without HTML escaping
|
|
67
157
|
result = result.replace(/\{\{(\w+)\}\}/g, (_match, key) => {
|
|
68
158
|
const value = variables[key];
|
|
159
|
+
// Return empty string if variable is undefined
|
|
69
160
|
if (value === undefined || value === null) {
|
|
70
161
|
return '';
|
|
71
162
|
}
|
|
163
|
+
// Convert to string without escaping HTML entities for text
|
|
72
164
|
return String(value);
|
|
73
165
|
});
|
|
74
166
|
return result;
|
|
75
167
|
}
|
|
168
|
+
/**
|
|
169
|
+
* Get greeting name with firstName/username fallback logic
|
|
170
|
+
*
|
|
171
|
+
* @param variables - Template variables
|
|
172
|
+
* @returns Greeting name or empty string
|
|
173
|
+
* @private
|
|
174
|
+
*/
|
|
76
175
|
getGreetingName(variables) {
|
|
77
176
|
if (variables.firstName) {
|
|
78
177
|
return variables.firstName;
|
|
@@ -82,6 +181,13 @@ class HtmlTemplateEngine {
|
|
|
82
181
|
}
|
|
83
182
|
return '';
|
|
84
183
|
}
|
|
184
|
+
/**
|
|
185
|
+
* Escape HTML entities to prevent XSS
|
|
186
|
+
*
|
|
187
|
+
* @param text - Text to escape
|
|
188
|
+
* @returns HTML-safe text
|
|
189
|
+
* @private
|
|
190
|
+
*/
|
|
85
191
|
escapeHtml(text) {
|
|
86
192
|
const map = {
|
|
87
193
|
'&': '&',
|
|
@@ -92,18 +198,39 @@ class HtmlTemplateEngine {
|
|
|
92
198
|
};
|
|
93
199
|
return text.replace(/[&<>"']/g, (char) => map[char] || char);
|
|
94
200
|
}
|
|
201
|
+
/**
|
|
202
|
+
* Convert HTML to plain text
|
|
203
|
+
*
|
|
204
|
+
* Simple conversion: strips HTML tags and decodes entities.
|
|
205
|
+
*
|
|
206
|
+
* @param html - HTML content
|
|
207
|
+
* @returns Plain text
|
|
208
|
+
* @private
|
|
209
|
+
*/
|
|
95
210
|
htmlToText(html) {
|
|
211
|
+
// Strip HTML tags
|
|
96
212
|
let text = html.replace(/<[^>]*>/g, '');
|
|
213
|
+
// Decode common HTML entities
|
|
97
214
|
text = text.replace(/ /g, ' ');
|
|
98
215
|
text = text.replace(/</g, '<');
|
|
99
216
|
text = text.replace(/>/g, '>');
|
|
100
217
|
text = text.replace(/"/g, '"');
|
|
101
218
|
text = text.replace(/'/g, "'");
|
|
102
219
|
text = text.replace(/&/g, '&');
|
|
220
|
+
// Normalize whitespace
|
|
103
221
|
text = text.replace(/\s+/g, ' ').trim();
|
|
104
222
|
return text;
|
|
105
223
|
}
|
|
224
|
+
/**
|
|
225
|
+
* Register default templates for all email types
|
|
226
|
+
*
|
|
227
|
+
* These templates can be overridden using registerTemplate().
|
|
228
|
+
* @private
|
|
229
|
+
*/
|
|
106
230
|
registerDefaultTemplates() {
|
|
231
|
+
// ============================================================================
|
|
232
|
+
// Email Verification Template
|
|
233
|
+
// ============================================================================
|
|
107
234
|
this.registerTemplate(template_interface_1.TemplateType.VERIFICATION, {
|
|
108
235
|
subject: 'Email Verification - {{appName}}',
|
|
109
236
|
html: `
|
|
@@ -155,6 +282,9 @@ This code expires in {{expiryMinutes}} minutes.
|
|
|
155
282
|
If you didn't request this verification, please ignore this email.
|
|
156
283
|
`,
|
|
157
284
|
});
|
|
285
|
+
// ============================================================================
|
|
286
|
+
// Password Reset Template
|
|
287
|
+
// ============================================================================
|
|
158
288
|
this.registerTemplate(template_interface_1.TemplateType.PASSWORD_RESET, {
|
|
159
289
|
subject: 'Password Reset - {{appName}}',
|
|
160
290
|
html: `
|
|
@@ -202,6 +332,9 @@ This link expires in {{expiryMinutes}} minutes.
|
|
|
202
332
|
If you didn't request a password reset, your account is secure and you can ignore this email.
|
|
203
333
|
`,
|
|
204
334
|
});
|
|
335
|
+
// ============================================================================
|
|
336
|
+
// Welcome Email Template
|
|
337
|
+
// ============================================================================
|
|
205
338
|
this.registerTemplate(template_interface_1.TemplateType.WELCOME, {
|
|
206
339
|
subject: 'Welcome to {{appName}}!',
|
|
207
340
|
html: `
|
|
@@ -247,6 +380,9 @@ If you have any questions or need assistance, reach out to our support team at {
|
|
|
247
380
|
Happy exploring!
|
|
248
381
|
`,
|
|
249
382
|
});
|
|
383
|
+
// ============================================================================
|
|
384
|
+
// Account Lockout Template
|
|
385
|
+
// ============================================================================
|
|
250
386
|
this.registerTemplate(template_interface_1.TemplateType.ACCOUNT_LOCKOUT, {
|
|
251
387
|
subject: 'Account Locked - {{appName}}',
|
|
252
388
|
html: `
|
|
@@ -307,6 +443,9 @@ What should I do?
|
|
|
307
443
|
- Consider changing your password after unlock
|
|
308
444
|
`,
|
|
309
445
|
});
|
|
446
|
+
// ============================================================================
|
|
447
|
+
// New Device Login Template
|
|
448
|
+
// ============================================================================
|
|
310
449
|
this.registerTemplate(template_interface_1.TemplateType.NEW_DEVICE, {
|
|
311
450
|
subject: 'New Device Login - {{appName}}',
|
|
312
451
|
html: `
|
|
@@ -373,6 +512,8 @@ If you don't recognize this activity, secure your account immediately:
|
|
|
373
512
|
- Contact support at {{supportEmail}}
|
|
374
513
|
`,
|
|
375
514
|
});
|
|
515
|
+
// Password Changed Template
|
|
516
|
+
// ============================================================================
|
|
376
517
|
this.registerTemplate(template_interface_1.TemplateType.PASSWORD_CHANGED, {
|
|
377
518
|
subject: 'Password Changed - {{appName}}',
|
|
378
519
|
html: `
|
|
@@ -414,6 +555,9 @@ If you made this change, no further action is required.
|
|
|
414
555
|
If you didn't make this change, please contact support immediately at {{supportEmail}}.
|
|
415
556
|
`,
|
|
416
557
|
});
|
|
558
|
+
// ============================================================================
|
|
559
|
+
// Email Changed Template
|
|
560
|
+
// ============================================================================
|
|
417
561
|
this.registerTemplate(template_interface_1.TemplateType.EMAIL_CHANGED, {
|
|
418
562
|
subject: 'Email Address Changed - {{appName}}',
|
|
419
563
|
html: `
|
|
@@ -455,6 +599,9 @@ If you made this change, no further action is required.
|
|
|
455
599
|
If you didn't make this change, please contact support immediately at {{supportEmail}}.
|
|
456
600
|
`,
|
|
457
601
|
});
|
|
602
|
+
// ============================================================================
|
|
603
|
+
// MFA Enabled Template
|
|
604
|
+
// ============================================================================
|
|
458
605
|
this.registerTemplate(template_interface_1.TemplateType.MFA_ENABLED, {
|
|
459
606
|
subject: 'Two-Factor Authentication Enabled - {{appName}}',
|
|
460
607
|
html: `
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-template.engine.js","sourceRoot":"","sources":["../../src/templates/html-template.engine.ts"],"names":[],"mappings":";;;AAAA,yEAAkH;AAClH,mEAA+D;AAC/D,gEAA0D;
|
|
1
|
+
{"version":3,"file":"html-template.engine.js","sourceRoot":"","sources":["../../src/templates/html-template.engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC"}
|
package/dist/templates/index.js
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Template System Exports
|
|
4
|
+
*
|
|
5
|
+
* Provides template engines and utilities for email and SMS notifications.
|
|
6
|
+
*/
|
|
2
7
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
8
|
if (k2 === undefined) k2 = k;
|
|
4
9
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;AAEH,yDAAuC;AACvC,wDAAsC"}
|
|
@@ -1,19 +1,170 @@
|
|
|
1
1
|
import { SMSTemplateEngine as ISMSTemplateEngine, SMSTemplateType, SMSTemplateVariables, SMSTemplate, SMSTemplateSource } from '../interfaces/sms-template.interface';
|
|
2
2
|
import { NAuthLogger } from '../utils/nauth-logger';
|
|
3
|
+
/**
|
|
4
|
+
* SMS Template Engine
|
|
5
|
+
*
|
|
6
|
+
* Simple yet powerful template engine for SMS templates using text with placeholder tokens.
|
|
7
|
+
* Supports {{variable}} syntax for variable injection using Handlebars-like syntax.
|
|
8
|
+
*
|
|
9
|
+
* Features:
|
|
10
|
+
* - Simple {{variable}} placeholder syntax
|
|
11
|
+
* - Built-in default templates for all SMS types
|
|
12
|
+
* - Custom template registration (inline and file-based)
|
|
13
|
+
* - Template validation (ensures required variables are present)
|
|
14
|
+
* - Handlebars-like conditionals support
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* const engine = new SMSTemplateEngine();
|
|
19
|
+
* const result = await engine.render(
|
|
20
|
+
* SMSTemplateType.VERIFICATION,
|
|
21
|
+
* { appName: 'My App', code: '123456', expiryMinutes: 5 }
|
|
22
|
+
* );
|
|
23
|
+
* // result.content: "My App: Your verification code is 123456. Valid for 5 minutes."
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
3
26
|
export declare class SMSTemplateEngineImpl implements ISMSTemplateEngine {
|
|
27
|
+
/**
|
|
28
|
+
* Storage for registered templates
|
|
29
|
+
* Maps template type to template content string
|
|
30
|
+
*/
|
|
4
31
|
private templates;
|
|
32
|
+
/**
|
|
33
|
+
* Base directory for resolving relative template file paths
|
|
34
|
+
*/
|
|
5
35
|
private readonly baseDir;
|
|
36
|
+
/**
|
|
37
|
+
* Logger instance for error reporting
|
|
38
|
+
*/
|
|
6
39
|
private readonly logger?;
|
|
40
|
+
/**
|
|
41
|
+
* Constructor
|
|
42
|
+
*
|
|
43
|
+
* Initializes the engine with default templates.
|
|
44
|
+
*
|
|
45
|
+
* @param baseDir - Base directory for resolving template file paths (default: process.cwd())
|
|
46
|
+
* @param logger - Optional logger instance for error reporting
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```typescript
|
|
50
|
+
* // Use default templates
|
|
51
|
+
* const engine = new SMSTemplateEngineImpl();
|
|
52
|
+
*
|
|
53
|
+
* // Use custom base directory for file-based templates
|
|
54
|
+
* const engine = new SMSTemplateEngineImpl('./sms-templates');
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
7
57
|
constructor(baseDir?: string, logger?: NAuthLogger);
|
|
58
|
+
/**
|
|
59
|
+
* Render a template with variables
|
|
60
|
+
*
|
|
61
|
+
* Replaces all {{variable}} placeholders with actual values.
|
|
62
|
+
* Handles missing variables gracefully (replaces with empty string).
|
|
63
|
+
* Supports simple conditionals like {{#if variable}}...{{/if}}.
|
|
64
|
+
*
|
|
65
|
+
* @param type - Template type to render
|
|
66
|
+
* @param variables - Variables to inject
|
|
67
|
+
* @returns Rendered SMS template with content
|
|
68
|
+
* @throws {NAuthException} If template type not found
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* const result = await engine.render(
|
|
73
|
+
* SMSTemplateType.VERIFICATION,
|
|
74
|
+
* { appName: 'My App', code: '123456', expiryMinutes: 5 }
|
|
75
|
+
* );
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
8
78
|
render(type: SMSTemplateType | string, variables: SMSTemplateVariables): Promise<SMSTemplate>;
|
|
79
|
+
/**
|
|
80
|
+
* Register a custom template from inline string
|
|
81
|
+
*
|
|
82
|
+
* Allows overriding default templates or adding new ones.
|
|
83
|
+
*
|
|
84
|
+
* @param type - Template type identifier
|
|
85
|
+
* @param template - Template definition with inline content
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```typescript
|
|
89
|
+
* engine.registerTemplate(SMSTemplateType.VERIFICATION, {
|
|
90
|
+
* content: '{{appName}}: Your verification code is {{code}}. Expires in {{expiryMinutes}} min.',
|
|
91
|
+
* });
|
|
92
|
+
* ```
|
|
93
|
+
*/
|
|
9
94
|
registerTemplate(type: SMSTemplateType | string, template: SMSTemplate): void;
|
|
95
|
+
/**
|
|
96
|
+
* Register a custom template from mixed sources (strings or files)
|
|
97
|
+
*
|
|
98
|
+
* Flexible registration that supports both inline content and file paths.
|
|
99
|
+
*
|
|
100
|
+
* @param type - Template type identifier
|
|
101
|
+
* @param templateSource - Template source (content or file path)
|
|
102
|
+
*
|
|
103
|
+
* @throws {NAuthException} If file not found or invalid source
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```typescript
|
|
107
|
+
* // Inline content
|
|
108
|
+
* await engine.registerTemplateFromSources(SMSTemplateType.VERIFICATION, {
|
|
109
|
+
* content: { content: '{{appName}}: Your code is {{code}}.' },
|
|
110
|
+
* });
|
|
111
|
+
*
|
|
112
|
+
* // File-based
|
|
113
|
+
* await engine.registerTemplateFromSources(SMSTemplateType.MFA, {
|
|
114
|
+
* content: { filePath: './sms-templates/mfa.txt.hbs' },
|
|
115
|
+
* });
|
|
116
|
+
* ```
|
|
117
|
+
*/
|
|
10
118
|
registerTemplateFromSources(type: SMSTemplateType | string, templateSource: {
|
|
11
119
|
content: SMSTemplateSource;
|
|
12
120
|
}): Promise<void>;
|
|
121
|
+
/**
|
|
122
|
+
* Get all available template types
|
|
123
|
+
*
|
|
124
|
+
* @returns Array of registered template type identifiers
|
|
125
|
+
*/
|
|
13
126
|
getAvailableTemplates(): string[];
|
|
127
|
+
/**
|
|
128
|
+
* Check if a template exists
|
|
129
|
+
*
|
|
130
|
+
* @param type - Template type to check
|
|
131
|
+
* @returns True if template is registered
|
|
132
|
+
*/
|
|
14
133
|
hasTemplate(type: SMSTemplateType | string): boolean;
|
|
134
|
+
/**
|
|
135
|
+
* Validate that a template includes required variables
|
|
136
|
+
*
|
|
137
|
+
* Checks if the template content includes all required placeholders.
|
|
138
|
+
*
|
|
139
|
+
* @param type - Template type to validate
|
|
140
|
+
* @param requiredVars - Array of required variable names (without {{}})
|
|
141
|
+
* @returns True if all required variables are present
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
* ```typescript
|
|
145
|
+
* const isValid = engine.validateTemplate(SMSTemplateType.VERIFICATION, ['code', 'expiryMinutes']);
|
|
146
|
+
* ```
|
|
147
|
+
*/
|
|
15
148
|
validateTemplate(type: SMSTemplateType | string, requiredVars: string[]): boolean;
|
|
149
|
+
/**
|
|
150
|
+
* Register default templates for all SMS types
|
|
151
|
+
*
|
|
152
|
+
* Provides sensible defaults that can be overridden by custom templates.
|
|
153
|
+
*
|
|
154
|
+
* @private
|
|
155
|
+
*/
|
|
16
156
|
private registerDefaultTemplates;
|
|
157
|
+
/**
|
|
158
|
+
* Replace {{variable}} placeholders with values
|
|
159
|
+
*
|
|
160
|
+
* Handles missing variables gracefully (replaces with empty string).
|
|
161
|
+
* Supports simple conditionals like {{#if variable}}...{{/if}}.
|
|
162
|
+
*
|
|
163
|
+
* @param template - Template string with {{placeholders}}
|
|
164
|
+
* @param variables - Variables to inject
|
|
165
|
+
* @returns Template with variables replaced
|
|
166
|
+
* @private
|
|
167
|
+
*/
|
|
17
168
|
private replaceVariables;
|
|
18
169
|
}
|
|
19
170
|
//# sourceMappingURL=sms-template.engine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sms-template.engine.d.ts","sourceRoot":"","sources":["../../src/templates/sms-template.engine.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,IAAI,kBAAkB,EACvC,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,iBAAiB,EAClB,MAAM,sCAAsC,CAAC;AAG9C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"sms-template.engine.d.ts","sourceRoot":"","sources":["../../src/templates/sms-template.engine.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,IAAI,kBAAkB,EACvC,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,iBAAiB,EAClB,MAAM,sCAAsC,CAAC;AAG9C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAQpD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,qBAAsB,YAAW,kBAAkB;IAC9D;;;OAGG;IACH,OAAO,CAAC,SAAS,CAAkC;IAEnD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAc;IAEtC;;;;;;;;;;;;;;;;OAgBG;gBACS,OAAO,GAAE,MAAsB,EAAE,MAAM,CAAC,EAAE,WAAW;IAMjE;;;;;;;;;;;;;;;;;;;OAmBG;IACG,MAAM,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,EAAE,SAAS,EAAE,oBAAoB,GAAG,OAAO,CAAC,WAAW,CAAC;IAqBnG;;;;;;;;;;;;;;OAcG;IACH,gBAAgB,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,IAAI;IAW7E;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACG,2BAA2B,CAC/B,IAAI,EAAE,eAAe,GAAG,MAAM,EAC9B,cAAc,EAAE;QAAE,OAAO,EAAE,iBAAiB,CAAA;KAAE,GAC7C,OAAO,CAAC,IAAI,CAAC;IAwChB;;;;OAIG;IACH,qBAAqB,IAAI,MAAM,EAAE;IAIjC;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,GAAG,OAAO;IAIpD;;;;;;;;;;;;;OAaG;IACH,gBAAgB,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO;IAmBjF;;;;;;OAMG;IACH,OAAO,CAAC,wBAAwB;IAoBhC;;;;;;;;;;OAUG;IACH,OAAO,CAAC,gBAAgB;CA4BzB"}
|