@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
|
@@ -1,10 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* SMS Template System Interfaces
|
|
4
|
+
*
|
|
5
|
+
* Provides flexible template system for SMS notifications with support for:
|
|
6
|
+
* - Text templates with placeholder tokens ({{variable}})
|
|
7
|
+
* - Built-in and custom variables
|
|
8
|
+
* - Multiple template types (verification, MFA, password reset)
|
|
9
|
+
* - Handlebars syntax for template rendering
|
|
10
|
+
*/
|
|
2
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
12
|
exports.SMSTemplateType = void 0;
|
|
13
|
+
/**
|
|
14
|
+
* SMS Template Type
|
|
15
|
+
*
|
|
16
|
+
* Enum of available SMS template types
|
|
17
|
+
*/
|
|
4
18
|
var SMSTemplateType;
|
|
5
19
|
(function (SMSTemplateType) {
|
|
20
|
+
/**
|
|
21
|
+
* Phone verification code template
|
|
22
|
+
* Required variables: {{code}}, {{expiryMinutes}}
|
|
23
|
+
*/
|
|
6
24
|
SMSTemplateType["VERIFICATION"] = "verification";
|
|
25
|
+
/**
|
|
26
|
+
* MFA code template
|
|
27
|
+
* Required variables: {{code}}, {{expiryMinutes}}
|
|
28
|
+
*/
|
|
7
29
|
SMSTemplateType["MFA"] = "mfa";
|
|
30
|
+
/**
|
|
31
|
+
* Password reset code template
|
|
32
|
+
* Required variables: {{code}}, {{expiryMinutes}}
|
|
33
|
+
*/
|
|
8
34
|
SMSTemplateType["PASSWORD_RESET"] = "passwordReset";
|
|
9
35
|
})(SMSTemplateType || (exports.SMSTemplateType = SMSTemplateType = {}));
|
|
10
36
|
//# sourceMappingURL=sms-template.interface.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sms-template.interface.js","sourceRoot":"","sources":["../../src/interfaces/sms-template.interface.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"sms-template.interface.js","sourceRoot":"","sources":["../../src/interfaces/sms-template.interface.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAEH;;;;GAIG;AACH,IAAY,eAkBX;AAlBD,WAAY,eAAe;IACzB;;;OAGG;IACH,gDAA6B,CAAA;IAE7B;;;OAGG;IACH,8BAAW,CAAA;IAEX;;;OAGG;IACH,mDAAgC,CAAA;AAClC,CAAC,EAlBW,eAAe,+BAAf,eAAe,QAkB1B"}
|
|
@@ -1,13 +1,128 @@
|
|
|
1
1
|
import { AuthResponseDTO } from '../dto';
|
|
2
2
|
import { OAuthUserProfile } from '../interfaces/oauth.interface';
|
|
3
|
+
/**
|
|
4
|
+
* Social Auth Provider Service Interface
|
|
5
|
+
*
|
|
6
|
+
* Defines the contract for social authentication provider services.
|
|
7
|
+
* Each provider (Google, Apple, Facebook, etc.) must implement this interface
|
|
8
|
+
* to be registered with the core SocialAuthService.
|
|
9
|
+
*
|
|
10
|
+
* This allows for:
|
|
11
|
+
* - Modular provider imports (only install what you need)
|
|
12
|
+
* - Consistent API across all providers
|
|
13
|
+
* - Proper NestJS dependency injection
|
|
14
|
+
* - Easy addition of new providers without modifying core code
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* @Injectable()
|
|
19
|
+
* export class GoogleSocialAuthService implements ISocialAuthProviderService {
|
|
20
|
+
* readonly providerName = 'google';
|
|
21
|
+
*
|
|
22
|
+
* async getAuthUrl(state?: string): Promise<string> {
|
|
23
|
+
* // Generate Google OAuth URL
|
|
24
|
+
* }
|
|
25
|
+
*
|
|
26
|
+
* async handleCallback(code: string, state: string): Promise<AuthResponseDTO> {
|
|
27
|
+
* // Handle Google OAuth callback
|
|
28
|
+
* }
|
|
29
|
+
*
|
|
30
|
+
* async verifyToken(idToken: string, accessToken?: string, profileData?: any): Promise<AuthResponseDTO> {
|
|
31
|
+
* // Verify Google ID token
|
|
32
|
+
* }
|
|
33
|
+
* }
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
3
36
|
export interface ISocialAuthProviderService {
|
|
37
|
+
/**
|
|
38
|
+
* Provider name (e.g., 'google', 'apple', 'facebook')
|
|
39
|
+
* Used as the key in the provider registry
|
|
40
|
+
*/
|
|
4
41
|
readonly providerName: string;
|
|
42
|
+
/**
|
|
43
|
+
* Generate OAuth authorization URL for this provider
|
|
44
|
+
*
|
|
45
|
+
* @param state - Optional state parameter for CSRF protection
|
|
46
|
+
* @returns Authorization URL to redirect user to
|
|
47
|
+
* @throws {BadRequestException} When provider is not properly configured
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```typescript
|
|
51
|
+
* const authUrl = await provider.getAuthUrl('random-state-123');
|
|
52
|
+
* // Redirect user to authUrl
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
5
55
|
getAuthUrl(state?: string): Promise<string>;
|
|
56
|
+
/**
|
|
57
|
+
* Handle OAuth callback and authenticate user
|
|
58
|
+
*
|
|
59
|
+
* Exchanges authorization code for access token, fetches user profile,
|
|
60
|
+
* and returns unified authentication response with JWT tokens.
|
|
61
|
+
*
|
|
62
|
+
* @param code - Authorization code from OAuth callback
|
|
63
|
+
* @param state - State parameter from OAuth callback (for CSRF protection)
|
|
64
|
+
* @returns Unified authentication response with tokens and user info
|
|
65
|
+
* @throws {BadRequestException} When callback is invalid
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```typescript
|
|
69
|
+
* const result = await provider.handleCallback(code, state);
|
|
70
|
+
* console.log(result.accessToken); // JWT access token
|
|
71
|
+
* console.log(result.user.email); // User email
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
6
74
|
handleCallback(code: string, state: string): Promise<AuthResponseDTO>;
|
|
75
|
+
/**
|
|
76
|
+
* Verify social authentication token from native mobile apps
|
|
77
|
+
*
|
|
78
|
+
* Handles authentication tokens from native mobile apps (iOS/Android)
|
|
79
|
+
* that use native SDKs (Google Sign-In SDK, Apple Sign In, etc.)
|
|
80
|
+
*
|
|
81
|
+
* @param idToken - ID token from native SDK
|
|
82
|
+
* @param accessToken - Optional access token from native SDK
|
|
83
|
+
* @param profileData - Optional profile data from native SDK (for name extraction)
|
|
84
|
+
* @returns Unified authentication response with tokens and user info
|
|
85
|
+
* @throws {BadRequestException} When token is invalid
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```typescript
|
|
89
|
+
* const result = await provider.verifyToken(idToken, accessToken, profileData);
|
|
90
|
+
* return result; // Same format as login/signup
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
7
93
|
verifyToken(idToken: string, accessToken?: string, profileData?: any): Promise<AuthResponseDTO>;
|
|
94
|
+
/**
|
|
95
|
+
* Link social account to existing user
|
|
96
|
+
*
|
|
97
|
+
* Used when an authenticated user wants to link a social account
|
|
98
|
+
* to their existing account.
|
|
99
|
+
*
|
|
100
|
+
* @param userId - User ID (sub)
|
|
101
|
+
* @param code - Authorization code from OAuth callback
|
|
102
|
+
* @param state - State parameter from OAuth callback
|
|
103
|
+
* @returns Success message
|
|
104
|
+
* @throws {NotFoundException} When user is not found
|
|
105
|
+
* @throws {ConflictException} When account is already linked
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* ```typescript
|
|
109
|
+
* await provider.linkAccount(userId, code, state);
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
8
112
|
linkAccount(userId: string, code: string, state: string): Promise<{
|
|
9
113
|
message: string;
|
|
10
114
|
}>;
|
|
115
|
+
/**
|
|
116
|
+
* Get OAuth user profile from callback
|
|
117
|
+
*
|
|
118
|
+
* Internal method used by handleCallback to extract user profile.
|
|
119
|
+
* Exposed for advanced use cases.
|
|
120
|
+
*
|
|
121
|
+
* @param code - Authorization code from OAuth callback
|
|
122
|
+
* @param state - State parameter from OAuth callback
|
|
123
|
+
* @returns OAuth user profile
|
|
124
|
+
* @private
|
|
125
|
+
*/
|
|
11
126
|
getUserProfileFromCallback(code: string, state: string): Promise<OAuthUserProfile>;
|
|
12
127
|
}
|
|
13
128
|
//# sourceMappingURL=social-auth-provider.interface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"social-auth-provider.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/social-auth-provider.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"social-auth-provider.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/social-auth-provider.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;OAGG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE5C;;;;;;;;;;;;;;;;;OAiBG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAEtE;;;;;;;;;;;;;;;;;OAiBG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAEhG;;;;;;;;;;;;;;;;;OAiBG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAEvF;;;;;;;;;;OAUG;IACH,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACpF"}
|
|
@@ -1,33 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storage adapter interface for shared state management
|
|
3
|
+
* Critical for multi-server deployments
|
|
4
|
+
*/
|
|
1
5
|
export interface StorageAdapter {
|
|
6
|
+
/**
|
|
7
|
+
* Initialize the storage adapter
|
|
8
|
+
*/
|
|
2
9
|
initialize(): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* Check if adapter is healthy
|
|
12
|
+
*/
|
|
3
13
|
isHealthy(): Promise<boolean>;
|
|
14
|
+
/**
|
|
15
|
+
* Basic key-value operations
|
|
16
|
+
*/
|
|
4
17
|
get(key: string): Promise<string | null>;
|
|
5
18
|
set(key: string, value: string, ttlSeconds?: number, options?: {
|
|
6
19
|
nx?: boolean;
|
|
7
20
|
}): Promise<string | null | void>;
|
|
8
21
|
del(key: string): Promise<void>;
|
|
9
22
|
exists(key: string): Promise<boolean>;
|
|
23
|
+
/**
|
|
24
|
+
* Atomic operations
|
|
25
|
+
*/
|
|
10
26
|
incr(key: string, ttlSeconds?: number): Promise<number>;
|
|
11
27
|
decr(key: string): Promise<number>;
|
|
12
28
|
expire(key: string, ttl: number): Promise<void>;
|
|
13
29
|
ttl(key: string): Promise<number>;
|
|
30
|
+
/**
|
|
31
|
+
* Hash operations (for complex data structures)
|
|
32
|
+
*/
|
|
14
33
|
hget(key: string, field: string): Promise<string | null>;
|
|
15
34
|
hset(key: string, field: string, value: string): Promise<void>;
|
|
16
35
|
hgetall(key: string): Promise<Record<string, string>>;
|
|
17
36
|
hdel(key: string, ...fields: string[]): Promise<number>;
|
|
37
|
+
/**
|
|
38
|
+
* List operations (for token families)
|
|
39
|
+
*/
|
|
18
40
|
lpush(key: string, value: string): Promise<void>;
|
|
19
41
|
lrange(key: string, start: number, stop: number): Promise<string[]>;
|
|
20
42
|
llen(key: string): Promise<number>;
|
|
43
|
+
/**
|
|
44
|
+
* Pattern operations
|
|
45
|
+
*/
|
|
21
46
|
keys(pattern: string): Promise<string[]>;
|
|
22
47
|
scan(cursor: number, pattern: string, count: number): Promise<[number, string[]]>;
|
|
48
|
+
/**
|
|
49
|
+
* Cleanup and disconnect
|
|
50
|
+
*/
|
|
23
51
|
cleanup(): Promise<void>;
|
|
24
52
|
disconnect(): Promise<void>;
|
|
25
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Rate limiting specific operations
|
|
56
|
+
*/
|
|
26
57
|
export interface RateLimitStorage {
|
|
27
58
|
incrementRateLimit(identifier: string, endpoint: string, windowMs: number): Promise<number>;
|
|
28
59
|
getRateLimit(identifier: string, endpoint: string): Promise<number>;
|
|
29
60
|
resetRateLimit(identifier: string, endpoint: string): Promise<void>;
|
|
30
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Account lockout specific operations
|
|
64
|
+
*
|
|
65
|
+
* SECURITY: Uses IP addresses instead of user identifiers to prevent
|
|
66
|
+
* attackers from locking out legitimate users by guessing their email/username.
|
|
67
|
+
*/
|
|
31
68
|
export interface AccountLockoutStorage {
|
|
32
69
|
recordFailedAttempt(ipAddress: string): Promise<number>;
|
|
33
70
|
getFailedAttempts(ipAddress: string): Promise<number>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-adapter.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/storage-adapter.interface.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"storage-adapter.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/storage-adapter.interface.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B;;OAEG;IACH,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAE9B;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;IAChH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEtC;;OAEG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACxD,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAElC;;OAEG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACtD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAExD;;OAEG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACpE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnC;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAElF;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5F,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpE,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrE;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACxD,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnF,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvD"}
|
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Email Template System Interfaces
|
|
3
|
+
*
|
|
4
|
+
* Provides flexible template system for email notifications with support for:
|
|
5
|
+
* - HTML templates with placeholder tokens ({{variable}})
|
|
6
|
+
* - Built-in and custom variables
|
|
7
|
+
* - Multiple template types (verification, password reset, etc.)
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Template Variables
|
|
11
|
+
*
|
|
12
|
+
* Variables that can be used in email templates.
|
|
13
|
+
* All variables are optional as not all templates use all variables.
|
|
14
|
+
*/
|
|
1
15
|
export interface TemplateVariables {
|
|
2
16
|
appName?: string;
|
|
3
17
|
userName?: string;
|
|
@@ -24,11 +38,32 @@ export interface TemplateVariables {
|
|
|
24
38
|
footerDisclaimer?: string;
|
|
25
39
|
[key: string]: string | number | boolean | undefined;
|
|
26
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Email Template
|
|
43
|
+
*
|
|
44
|
+
* Defines the structure of an email template with subject and content.
|
|
45
|
+
* Both subject and content support placeholder variables.
|
|
46
|
+
*/
|
|
27
47
|
export interface EmailTemplate {
|
|
48
|
+
/**
|
|
49
|
+
* Email subject line (supports {{variables}})
|
|
50
|
+
*/
|
|
28
51
|
subject: string;
|
|
52
|
+
/**
|
|
53
|
+
* HTML content of the email (supports {{variables}})
|
|
54
|
+
*/
|
|
29
55
|
html: string;
|
|
56
|
+
/**
|
|
57
|
+
* Optional plain text version (supports {{variables}})
|
|
58
|
+
* Falls back to stripping HTML tags if not provided
|
|
59
|
+
*/
|
|
30
60
|
text?: string;
|
|
31
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Template Type
|
|
64
|
+
*
|
|
65
|
+
* Enum of available email template types
|
|
66
|
+
*/
|
|
32
67
|
export declare enum TemplateType {
|
|
33
68
|
VERIFICATION = "verification",
|
|
34
69
|
PASSWORD_RESET = "passwordReset",
|
|
@@ -39,37 +74,177 @@ export declare enum TemplateType {
|
|
|
39
74
|
EMAIL_CHANGED = "emailChanged",
|
|
40
75
|
MFA_ENABLED = "mfaEnabled"
|
|
41
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* Template Source
|
|
79
|
+
*
|
|
80
|
+
* Defines how template content can be provided - as a string or file path
|
|
81
|
+
*/
|
|
42
82
|
export interface TemplateSource {
|
|
83
|
+
/**
|
|
84
|
+
* Template content as a string
|
|
85
|
+
*/
|
|
43
86
|
content?: string;
|
|
87
|
+
/**
|
|
88
|
+
* Path to template file (relative or absolute)
|
|
89
|
+
* Supports .hbs, .html, .txt, etc.
|
|
90
|
+
*/
|
|
44
91
|
filePath?: string;
|
|
45
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* Template Files
|
|
95
|
+
*
|
|
96
|
+
* Defines template files for subject, HTML, and text content.
|
|
97
|
+
* Used for file-based template registration.
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```typescript
|
|
101
|
+
* const templateFiles: TemplateFiles = {
|
|
102
|
+
* subject: { filePath: './templates/welcome.subject.hbs' },
|
|
103
|
+
* html: { filePath: './templates/welcome.html.hbs' },
|
|
104
|
+
* text: { filePath: './templates/welcome.text.hbs' }
|
|
105
|
+
* };
|
|
106
|
+
* ```
|
|
107
|
+
*/
|
|
46
108
|
export interface TemplateFiles {
|
|
109
|
+
/**
|
|
110
|
+
* Subject line template source
|
|
111
|
+
*/
|
|
47
112
|
subject: TemplateSource;
|
|
113
|
+
/**
|
|
114
|
+
* HTML content template source
|
|
115
|
+
*/
|
|
48
116
|
html: TemplateSource;
|
|
117
|
+
/**
|
|
118
|
+
* Plain text content template source (optional)
|
|
119
|
+
*/
|
|
49
120
|
text?: TemplateSource;
|
|
50
121
|
}
|
|
122
|
+
/**
|
|
123
|
+
* Template Engine Interface
|
|
124
|
+
*
|
|
125
|
+
* Contract for template engines that can render email templates with variables.
|
|
126
|
+
* Implementations can support HTML, MJML, Handlebars, or other template formats.
|
|
127
|
+
*
|
|
128
|
+
* @example
|
|
129
|
+
* ```typescript
|
|
130
|
+
* const engine = new HandlebarsTemplateEngine();
|
|
131
|
+
* const result = await engine.render(
|
|
132
|
+
* TemplateType.VERIFICATION,
|
|
133
|
+
* { userName: 'John', code: '123456' }
|
|
134
|
+
* );
|
|
135
|
+
* logger.debug('Subject:', result.subject); // "Verify your email - My App"
|
|
136
|
+
* logger.debug('HTML generated'); // HTML with variables replaced
|
|
137
|
+
* ```
|
|
138
|
+
*/
|
|
51
139
|
export interface TemplateEngine {
|
|
140
|
+
/**
|
|
141
|
+
* Render a template with the provided variables
|
|
142
|
+
*
|
|
143
|
+
* @param type - Type of template to render
|
|
144
|
+
* @param variables - Variables to inject into the template
|
|
145
|
+
* @returns Rendered email template with subject and content
|
|
146
|
+
*
|
|
147
|
+
* @throws {Error} If template type is not found
|
|
148
|
+
*
|
|
149
|
+
* @example
|
|
150
|
+
* ```typescript
|
|
151
|
+
* const result = await engine.render(
|
|
152
|
+
* TemplateType.VERIFICATION,
|
|
153
|
+
* {
|
|
154
|
+
* userName: 'John Doe',
|
|
155
|
+
* code: '123456',
|
|
156
|
+
* expiryMinutes: 60
|
|
157
|
+
* }
|
|
158
|
+
* );
|
|
159
|
+
* ```
|
|
160
|
+
*/
|
|
52
161
|
render(type: TemplateType | string, variables: TemplateVariables): Promise<EmailTemplate>;
|
|
162
|
+
/**
|
|
163
|
+
* Register a custom template from inline strings
|
|
164
|
+
*
|
|
165
|
+
* Allows overriding default templates or adding new ones.
|
|
166
|
+
*
|
|
167
|
+
* @param type - Template type identifier
|
|
168
|
+
* @param template - Template definition with inline content
|
|
169
|
+
*
|
|
170
|
+
* @example
|
|
171
|
+
* ```typescript
|
|
172
|
+
* engine.registerTemplate(TemplateType.WELCOME, {
|
|
173
|
+
* subject: 'Welcome {{userName}}!',
|
|
174
|
+
* html: '<h1>Hello {{userName}}!</h1>',
|
|
175
|
+
* text: 'Hello {{userName}}!'
|
|
176
|
+
* });
|
|
177
|
+
* ```
|
|
178
|
+
*/
|
|
53
179
|
registerTemplate(type: TemplateType | string, template: EmailTemplate): void;
|
|
180
|
+
/**
|
|
181
|
+
* Register a custom template from mixed sources (strings or files)
|
|
182
|
+
*
|
|
183
|
+
* Flexible registration that supports both inline content and file paths.
|
|
184
|
+
*
|
|
185
|
+
* @param type - Template type identifier
|
|
186
|
+
* @param templateSources - Template sources (content or file paths)
|
|
187
|
+
*
|
|
188
|
+
* @example
|
|
189
|
+
* ```typescript
|
|
190
|
+
* engine.registerTemplateFromSources(TemplateType.WELCOME, {
|
|
191
|
+
* subject: { content: 'Welcome {{userName}}!' },
|
|
192
|
+
* html: { filePath: './templates/welcome.html.hbs' },
|
|
193
|
+
* text: { content: 'Welcome {{userName}}!' }
|
|
194
|
+
* });
|
|
195
|
+
* ```
|
|
196
|
+
*/
|
|
54
197
|
registerTemplateFromSources?(type: TemplateType | string, templateSources: TemplateFiles): Promise<void>;
|
|
198
|
+
/**
|
|
199
|
+
* Get available template types
|
|
200
|
+
*
|
|
201
|
+
* @returns Array of registered template type identifiers
|
|
202
|
+
*/
|
|
55
203
|
getAvailableTemplates(): string[];
|
|
204
|
+
/**
|
|
205
|
+
* Check if a template exists
|
|
206
|
+
*
|
|
207
|
+
* @param type - Template type to check
|
|
208
|
+
* @returns True if template is registered
|
|
209
|
+
*/
|
|
56
210
|
hasTemplate(type: TemplateType | string): boolean;
|
|
57
211
|
}
|
|
212
|
+
/**
|
|
213
|
+
* Required template parameters for each template type
|
|
214
|
+
*
|
|
215
|
+
* Defines which variables MUST be present in custom templates.
|
|
216
|
+
* Optional variables (firstName, lastName, etc.) can be included but are not required.
|
|
217
|
+
*/
|
|
58
218
|
export interface TemplateRequiredParams {
|
|
219
|
+
/**
|
|
220
|
+
* Email verification template required parameters
|
|
221
|
+
*/
|
|
59
222
|
[TemplateType.VERIFICATION]: {
|
|
60
223
|
code: string;
|
|
61
224
|
link: string;
|
|
62
225
|
expiryMinutes: number;
|
|
63
226
|
};
|
|
227
|
+
/**
|
|
228
|
+
* Password reset template required parameters
|
|
229
|
+
*/
|
|
64
230
|
[TemplateType.PASSWORD_RESET]: {
|
|
65
231
|
link: string;
|
|
66
232
|
expiryMinutes: number;
|
|
67
233
|
};
|
|
234
|
+
/**
|
|
235
|
+
* Welcome template required parameters
|
|
236
|
+
*/
|
|
68
237
|
[TemplateType.WELCOME]: Record<string, never>;
|
|
238
|
+
/**
|
|
239
|
+
* Account lockout template required parameters
|
|
240
|
+
*/
|
|
69
241
|
[TemplateType.ACCOUNT_LOCKOUT]: {
|
|
70
242
|
reason: string;
|
|
71
243
|
durationMinutes: number;
|
|
72
244
|
};
|
|
245
|
+
/**
|
|
246
|
+
* New device template required parameters
|
|
247
|
+
*/
|
|
73
248
|
[TemplateType.NEW_DEVICE]: {
|
|
74
249
|
deviceName: string;
|
|
75
250
|
deviceType?: string;
|
|
@@ -77,22 +252,198 @@ export interface TemplateRequiredParams {
|
|
|
77
252
|
location?: string;
|
|
78
253
|
timestamp: string;
|
|
79
254
|
};
|
|
255
|
+
/**
|
|
256
|
+
* Password changed template required parameters
|
|
257
|
+
*/
|
|
80
258
|
[TemplateType.PASSWORD_CHANGED]: Record<string, never>;
|
|
259
|
+
/**
|
|
260
|
+
* Email changed template required parameters
|
|
261
|
+
*/
|
|
81
262
|
[TemplateType.EMAIL_CHANGED]: {
|
|
82
263
|
userEmail: string;
|
|
83
264
|
};
|
|
265
|
+
/**
|
|
266
|
+
* MFA enabled template required parameters
|
|
267
|
+
*/
|
|
84
268
|
[TemplateType.MFA_ENABLED]: Record<string, never>;
|
|
85
269
|
}
|
|
270
|
+
/**
|
|
271
|
+
* Custom template definition with file paths or content
|
|
272
|
+
*
|
|
273
|
+
* Allows specifying templates as file paths or inline content.
|
|
274
|
+
* All templates support Handlebars syntax for dynamic content.
|
|
275
|
+
*
|
|
276
|
+
* @example
|
|
277
|
+
* ```typescript
|
|
278
|
+
* const customTemplate: CustomTemplateDefinition = {
|
|
279
|
+
* htmlPath: './templates/verification.html.hbs',
|
|
280
|
+
* // OR
|
|
281
|
+
* html: '<html>{{code}}</html>',
|
|
282
|
+
* // Optional text version
|
|
283
|
+
* textPath: './templates/verification.text.hbs'
|
|
284
|
+
* };
|
|
285
|
+
* ```
|
|
286
|
+
*/
|
|
86
287
|
export interface CustomTemplateDefinition {
|
|
288
|
+
/**
|
|
289
|
+
* Path to HTML template file (supports frontmatter for subject)
|
|
290
|
+
* Mutually exclusive with `html`
|
|
291
|
+
*/
|
|
87
292
|
htmlPath?: string;
|
|
293
|
+
/**
|
|
294
|
+
* HTML template content as string (supports frontmatter for subject)
|
|
295
|
+
* Mutually exclusive with `htmlPath`
|
|
296
|
+
*/
|
|
88
297
|
html?: string;
|
|
298
|
+
/**
|
|
299
|
+
* Path to plain text template file
|
|
300
|
+
* Mutually exclusive with `text`
|
|
301
|
+
*/
|
|
89
302
|
textPath?: string;
|
|
303
|
+
/**
|
|
304
|
+
* Plain text template content as string
|
|
305
|
+
* Mutually exclusive with `textPath`
|
|
306
|
+
*/
|
|
90
307
|
text?: string;
|
|
308
|
+
/**
|
|
309
|
+
* Email subject (can include Handlebars variables)
|
|
310
|
+
* If not provided, will be extracted from HTML frontmatter
|
|
311
|
+
*/
|
|
91
312
|
subject?: string;
|
|
92
313
|
}
|
|
314
|
+
/**
|
|
315
|
+
* Template Configuration
|
|
316
|
+
*
|
|
317
|
+
* Configuration options for the template system.
|
|
318
|
+
* Used in AuthModule.forRoot() configuration.
|
|
319
|
+
*
|
|
320
|
+
* Custom templates are validated at startup to ensure they include
|
|
321
|
+
* all required parameters for their template type.
|
|
322
|
+
*
|
|
323
|
+
* @example
|
|
324
|
+
* ```typescript
|
|
325
|
+
* AuthModule.forRoot({
|
|
326
|
+
* email: {
|
|
327
|
+
* templates: {
|
|
328
|
+
* // Global variables (optional, available to all templates)
|
|
329
|
+
* globalVariables: {
|
|
330
|
+
* appName: 'My Application',
|
|
331
|
+
* companyName: 'My Company Inc.',
|
|
332
|
+
* supportEmail: 'support@example.com',
|
|
333
|
+
* brandColor: '#4CAF50',
|
|
334
|
+
* logoUrl: 'https://example.com/logo.png'
|
|
335
|
+
* },
|
|
336
|
+
* // Custom templates (override defaults)
|
|
337
|
+
* customTemplates: {
|
|
338
|
+
* verification: {
|
|
339
|
+
* htmlPath: './templates/verification.html.hbs',
|
|
340
|
+
* textPath: './templates/verification.text.hbs'
|
|
341
|
+
* // Must include: {{code}}, {{link}}, {{expiryMinutes}}
|
|
342
|
+
* },
|
|
343
|
+
* welcome: {
|
|
344
|
+
* html: `
|
|
345
|
+
* ---
|
|
346
|
+
* subject: Welcome to {{appName}}!
|
|
347
|
+
* ---
|
|
348
|
+
* <h1>Hello {{firstName}}!</h1>
|
|
349
|
+
* `,
|
|
350
|
+
* // No required params for welcome
|
|
351
|
+
* }
|
|
352
|
+
* }
|
|
353
|
+
* }
|
|
354
|
+
* }
|
|
355
|
+
* })
|
|
356
|
+
* ```
|
|
357
|
+
*/
|
|
93
358
|
export interface TemplateConfig {
|
|
359
|
+
/**
|
|
360
|
+
* Template engine instance
|
|
361
|
+
*
|
|
362
|
+
* @default HandlebarsTemplateEngine with default templates
|
|
363
|
+
*/
|
|
94
364
|
engine?: TemplateEngine;
|
|
365
|
+
/**
|
|
366
|
+
* Global variables available to all templates
|
|
367
|
+
*
|
|
368
|
+
* These are merged with template-specific variables at render time.
|
|
369
|
+
* Template-specific variables take precedence over globals.
|
|
370
|
+
*
|
|
371
|
+
* Common global variables:
|
|
372
|
+
* - appName: Your application name
|
|
373
|
+
* - companyName: Your company name
|
|
374
|
+
* - supportEmail: Support contact email
|
|
375
|
+
* - brandColor: Primary brand color (hex)
|
|
376
|
+
* - logoUrl: URL to your logo image
|
|
377
|
+
* - dashboardUrl: URL to user dashboard
|
|
378
|
+
* - footerDisclaimer: Custom footer disclaimer text (optional, has default)
|
|
379
|
+
*
|
|
380
|
+
* Optional user-specific variables (injected at runtime):
|
|
381
|
+
* - firstName, lastName, userName: User information
|
|
382
|
+
* - currentYear: Current year (injected automatically)
|
|
383
|
+
*
|
|
384
|
+
* @example
|
|
385
|
+
* ```typescript
|
|
386
|
+
* globalVariables: {
|
|
387
|
+
* appName: process.env.APP_NAME || 'My App',
|
|
388
|
+
* companyName: 'My Company Inc.',
|
|
389
|
+
* supportEmail: 'support@example.com',
|
|
390
|
+
* brandColor: '#4f46e5',
|
|
391
|
+
* logoUrl: 'https://example.com/logo.png'
|
|
392
|
+
* }
|
|
393
|
+
* ```
|
|
394
|
+
*/
|
|
95
395
|
globalVariables?: TemplateVariables;
|
|
396
|
+
/**
|
|
397
|
+
* Custom template definitions
|
|
398
|
+
*
|
|
399
|
+
* Override default templates or add new ones.
|
|
400
|
+
* Templates are validated at startup to ensure required parameters are present.
|
|
401
|
+
*
|
|
402
|
+
* Key is the template type, value is the template definition.
|
|
403
|
+
* Templates can be provided as file paths or inline content.
|
|
404
|
+
*
|
|
405
|
+
* All templates support Handlebars syntax:
|
|
406
|
+
* - {{variable}}: Insert variable
|
|
407
|
+
* - {{#if variable}}...{{/if}}: Conditional
|
|
408
|
+
* - {{#each items}}...{{/each}}: Loop
|
|
409
|
+
*
|
|
410
|
+
* Required parameters by template type:
|
|
411
|
+
* - verification: {{code}}, {{link}}, {{expiryMinutes}}
|
|
412
|
+
* - passwordReset: {{link}}, {{expiryMinutes}}
|
|
413
|
+
* - accountLockout: {{reason}}, {{durationMinutes}}
|
|
414
|
+
* - newDevice: {{deviceName}}, {{timestamp}}
|
|
415
|
+
* - emailChanged: {{userEmail}}
|
|
416
|
+
* - welcome, passwordChanged, mfaEnabled: No required params
|
|
417
|
+
*
|
|
418
|
+
* @example
|
|
419
|
+
* ```typescript
|
|
420
|
+
* customTemplates: {
|
|
421
|
+
* // File-based template (with frontmatter for subject)
|
|
422
|
+
* verification: {
|
|
423
|
+
* htmlPath: './templates/verification.html.hbs',
|
|
424
|
+
* textPath: './templates/verification.text.hbs'
|
|
425
|
+
* },
|
|
426
|
+
* // Inline template (with frontmatter for subject)
|
|
427
|
+
* welcome: {
|
|
428
|
+
* html: `
|
|
429
|
+
* ---
|
|
430
|
+
* subject: Welcome to {{appName}}!
|
|
431
|
+
* ---
|
|
432
|
+
* <html>
|
|
433
|
+
* <h1>Hello {{firstName}}!</h1>
|
|
434
|
+
* <p>Welcome to our platform!</p>
|
|
435
|
+
* </html>
|
|
436
|
+
* `
|
|
437
|
+
* },
|
|
438
|
+
* // Mixed (HTML from file, explicit subject)
|
|
439
|
+
* passwordReset: {
|
|
440
|
+
* subject: 'Reset your password - {{appName}}',
|
|
441
|
+
* htmlPath: './templates/password-reset.html.hbs',
|
|
442
|
+
* text: 'Reset link: {{link}} (expires in {{expiryMinutes}} minutes)'
|
|
443
|
+
* }
|
|
444
|
+
* }
|
|
445
|
+
* ```
|
|
446
|
+
*/
|
|
96
447
|
customTemplates?: Record<string, CustomTemplateDefinition>;
|
|
97
448
|
}
|
|
98
449
|
//# sourceMappingURL=template.interface.d.ts.map
|