@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
|
@@ -9,32 +9,142 @@ const path_1 = require("path");
|
|
|
9
9
|
const util_1 = require("util");
|
|
10
10
|
const fs_2 = require("fs");
|
|
11
11
|
const accessAsync = (0, util_1.promisify)(fs_2.access);
|
|
12
|
+
/**
|
|
13
|
+
* SMS Template Engine
|
|
14
|
+
*
|
|
15
|
+
* Simple yet powerful template engine for SMS templates using text with placeholder tokens.
|
|
16
|
+
* Supports {{variable}} syntax for variable injection using Handlebars-like syntax.
|
|
17
|
+
*
|
|
18
|
+
* Features:
|
|
19
|
+
* - Simple {{variable}} placeholder syntax
|
|
20
|
+
* - Built-in default templates for all SMS types
|
|
21
|
+
* - Custom template registration (inline and file-based)
|
|
22
|
+
* - Template validation (ensures required variables are present)
|
|
23
|
+
* - Handlebars-like conditionals support
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* const engine = new SMSTemplateEngine();
|
|
28
|
+
* const result = await engine.render(
|
|
29
|
+
* SMSTemplateType.VERIFICATION,
|
|
30
|
+
* { appName: 'My App', code: '123456', expiryMinutes: 5 }
|
|
31
|
+
* );
|
|
32
|
+
* // result.content: "My App: Your verification code is 123456. Valid for 5 minutes."
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
12
35
|
class SMSTemplateEngineImpl {
|
|
36
|
+
/**
|
|
37
|
+
* Storage for registered templates
|
|
38
|
+
* Maps template type to template content string
|
|
39
|
+
*/
|
|
13
40
|
templates = new Map();
|
|
41
|
+
/**
|
|
42
|
+
* Base directory for resolving relative template file paths
|
|
43
|
+
*/
|
|
14
44
|
baseDir;
|
|
45
|
+
/**
|
|
46
|
+
* Logger instance for error reporting
|
|
47
|
+
*/
|
|
15
48
|
logger;
|
|
49
|
+
/**
|
|
50
|
+
* Constructor
|
|
51
|
+
*
|
|
52
|
+
* Initializes the engine with default templates.
|
|
53
|
+
*
|
|
54
|
+
* @param baseDir - Base directory for resolving template file paths (default: process.cwd())
|
|
55
|
+
* @param logger - Optional logger instance for error reporting
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* // Use default templates
|
|
60
|
+
* const engine = new SMSTemplateEngineImpl();
|
|
61
|
+
*
|
|
62
|
+
* // Use custom base directory for file-based templates
|
|
63
|
+
* const engine = new SMSTemplateEngineImpl('./sms-templates');
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
16
66
|
constructor(baseDir = process.cwd(), logger) {
|
|
17
67
|
this.baseDir = baseDir;
|
|
18
68
|
this.logger = logger;
|
|
19
69
|
this.registerDefaultTemplates();
|
|
20
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* Render a template with variables
|
|
73
|
+
*
|
|
74
|
+
* Replaces all {{variable}} placeholders with actual values.
|
|
75
|
+
* Handles missing variables gracefully (replaces with empty string).
|
|
76
|
+
* Supports simple conditionals like {{#if variable}}...{{/if}}.
|
|
77
|
+
*
|
|
78
|
+
* @param type - Template type to render
|
|
79
|
+
* @param variables - Variables to inject
|
|
80
|
+
* @returns Rendered SMS template with content
|
|
81
|
+
* @throws {NAuthException} If template type not found
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```typescript
|
|
85
|
+
* const result = await engine.render(
|
|
86
|
+
* SMSTemplateType.VERIFICATION,
|
|
87
|
+
* { appName: 'My App', code: '123456', expiryMinutes: 5 }
|
|
88
|
+
* );
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
21
91
|
async render(type, variables) {
|
|
22
92
|
const templateContent = this.templates.get(type);
|
|
23
93
|
if (!templateContent) {
|
|
24
94
|
throw new nauth_exception_1.NAuthException(error_codes_enum_1.AuthErrorCode.INTERNAL_ERROR, `SMS template "${type}" not found. Available templates: ${Array.from(this.templates.keys()).join(', ')}`);
|
|
25
95
|
}
|
|
96
|
+
// Merge with default variables
|
|
26
97
|
const allVariables = {
|
|
27
98
|
...variables,
|
|
28
99
|
};
|
|
100
|
+
// Render template content
|
|
29
101
|
const content = this.replaceVariables(templateContent, allVariables);
|
|
30
102
|
return { content };
|
|
31
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* Register a custom template from inline string
|
|
106
|
+
*
|
|
107
|
+
* Allows overriding default templates or adding new ones.
|
|
108
|
+
*
|
|
109
|
+
* @param type - Template type identifier
|
|
110
|
+
* @param template - Template definition with inline content
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* ```typescript
|
|
114
|
+
* engine.registerTemplate(SMSTemplateType.VERIFICATION, {
|
|
115
|
+
* content: '{{appName}}: Your verification code is {{code}}. Expires in {{expiryMinutes}} min.',
|
|
116
|
+
* });
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
32
119
|
registerTemplate(type, template) {
|
|
33
120
|
if (!template.content) {
|
|
34
121
|
throw new nauth_exception_1.NAuthException(error_codes_enum_1.AuthErrorCode.VALIDATION_FAILED, `SMS template must have content property. Template type: ${type}`);
|
|
35
122
|
}
|
|
36
123
|
this.templates.set(type, template.content);
|
|
37
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Register a custom template from mixed sources (strings or files)
|
|
127
|
+
*
|
|
128
|
+
* Flexible registration that supports both inline content and file paths.
|
|
129
|
+
*
|
|
130
|
+
* @param type - Template type identifier
|
|
131
|
+
* @param templateSource - Template source (content or file path)
|
|
132
|
+
*
|
|
133
|
+
* @throws {NAuthException} If file not found or invalid source
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* ```typescript
|
|
137
|
+
* // Inline content
|
|
138
|
+
* await engine.registerTemplateFromSources(SMSTemplateType.VERIFICATION, {
|
|
139
|
+
* content: { content: '{{appName}}: Your code is {{code}}.' },
|
|
140
|
+
* });
|
|
141
|
+
*
|
|
142
|
+
* // File-based
|
|
143
|
+
* await engine.registerTemplateFromSources(SMSTemplateType.MFA, {
|
|
144
|
+
* content: { filePath: './sms-templates/mfa.txt.hbs' },
|
|
145
|
+
* });
|
|
146
|
+
* ```
|
|
147
|
+
*/
|
|
38
148
|
async registerTemplateFromSources(type, templateSource) {
|
|
39
149
|
const source = templateSource.content;
|
|
40
150
|
if (!source) {
|
|
@@ -42,11 +152,14 @@ class SMSTemplateEngineImpl {
|
|
|
42
152
|
}
|
|
43
153
|
let content;
|
|
44
154
|
if (source.content) {
|
|
155
|
+
// Inline content
|
|
45
156
|
content = source.content;
|
|
46
157
|
}
|
|
47
158
|
else if (source.filePath) {
|
|
159
|
+
// File-based content
|
|
48
160
|
const filePath = (0, path_1.resolve)(this.baseDir, source.filePath);
|
|
49
161
|
try {
|
|
162
|
+
// Check if file exists
|
|
50
163
|
await accessAsync(filePath);
|
|
51
164
|
content = (0, fs_1.readFileSync)(filePath, 'utf-8');
|
|
52
165
|
}
|
|
@@ -60,45 +173,103 @@ class SMSTemplateEngineImpl {
|
|
|
60
173
|
}
|
|
61
174
|
this.templates.set(type, content);
|
|
62
175
|
}
|
|
176
|
+
/**
|
|
177
|
+
* Get all available template types
|
|
178
|
+
*
|
|
179
|
+
* @returns Array of registered template type identifiers
|
|
180
|
+
*/
|
|
63
181
|
getAvailableTemplates() {
|
|
64
182
|
return Array.from(this.templates.keys());
|
|
65
183
|
}
|
|
184
|
+
/**
|
|
185
|
+
* Check if a template exists
|
|
186
|
+
*
|
|
187
|
+
* @param type - Template type to check
|
|
188
|
+
* @returns True if template is registered
|
|
189
|
+
*/
|
|
66
190
|
hasTemplate(type) {
|
|
67
191
|
return this.templates.has(type);
|
|
68
192
|
}
|
|
193
|
+
/**
|
|
194
|
+
* Validate that a template includes required variables
|
|
195
|
+
*
|
|
196
|
+
* Checks if the template content includes all required placeholders.
|
|
197
|
+
*
|
|
198
|
+
* @param type - Template type to validate
|
|
199
|
+
* @param requiredVars - Array of required variable names (without {{}})
|
|
200
|
+
* @returns True if all required variables are present
|
|
201
|
+
*
|
|
202
|
+
* @example
|
|
203
|
+
* ```typescript
|
|
204
|
+
* const isValid = engine.validateTemplate(SMSTemplateType.VERIFICATION, ['code', 'expiryMinutes']);
|
|
205
|
+
* ```
|
|
206
|
+
*/
|
|
69
207
|
validateTemplate(type, requiredVars) {
|
|
70
208
|
const templateContent = this.templates.get(type);
|
|
71
209
|
if (!templateContent) {
|
|
72
210
|
return false;
|
|
73
211
|
}
|
|
212
|
+
// Check if all required variables are present in template
|
|
74
213
|
return requiredVars.every((varName) => {
|
|
214
|
+
// Check for {{varName}} or {{ varName }} (with optional spaces)
|
|
75
215
|
const regex = new RegExp(`\\{\\{\\s*${varName}\\s*\\}\\}`, 'g');
|
|
76
216
|
return regex.test(templateContent);
|
|
77
217
|
});
|
|
78
218
|
}
|
|
219
|
+
// ============================================================================
|
|
220
|
+
// Private Helper Methods
|
|
221
|
+
// ============================================================================
|
|
222
|
+
/**
|
|
223
|
+
* Register default templates for all SMS types
|
|
224
|
+
*
|
|
225
|
+
* Provides sensible defaults that can be overridden by custom templates.
|
|
226
|
+
*
|
|
227
|
+
* @private
|
|
228
|
+
*/
|
|
79
229
|
registerDefaultTemplates() {
|
|
230
|
+
// Verification template
|
|
80
231
|
this.templates.set(sms_template_interface_1.SMSTemplateType.VERIFICATION, '{{#if appName}}{{appName}}: {{/if}}Your verification code is: {{code}}. Valid for {{expiryMinutes}} minutes.');
|
|
232
|
+
// MFA template
|
|
81
233
|
this.templates.set(sms_template_interface_1.SMSTemplateType.MFA, '{{#if appName}}{{appName}}: {{/if}}Your MFA code is: {{code}}. Valid for {{expiryMinutes}} minutes.');
|
|
234
|
+
// Password reset template
|
|
82
235
|
this.templates.set(sms_template_interface_1.SMSTemplateType.PASSWORD_RESET, '{{#if appName}}{{appName}}: {{/if}}Your password reset code is: {{code}}. Valid for {{expiryMinutes}} minutes.');
|
|
83
236
|
}
|
|
237
|
+
/**
|
|
238
|
+
* Replace {{variable}} placeholders with values
|
|
239
|
+
*
|
|
240
|
+
* Handles missing variables gracefully (replaces with empty string).
|
|
241
|
+
* Supports simple conditionals like {{#if variable}}...{{/if}}.
|
|
242
|
+
*
|
|
243
|
+
* @param template - Template string with {{placeholders}}
|
|
244
|
+
* @param variables - Variables to inject
|
|
245
|
+
* @returns Template with variables replaced
|
|
246
|
+
* @private
|
|
247
|
+
*/
|
|
84
248
|
replaceVariables(template, variables) {
|
|
85
249
|
let result = template;
|
|
250
|
+
// Handle simple conditionals like {{#if appName}}...{{/if}}
|
|
86
251
|
result = result.replace(/\{\{#if (\w+)\}\}(.*?)\{\{\/if\}\}/g, (_match, key, ifContent) => {
|
|
87
252
|
const value = variables[key];
|
|
253
|
+
// Return content if variable exists and is truthy, otherwise empty string
|
|
88
254
|
if (value !== undefined && value !== null && value !== '') {
|
|
89
255
|
return ifContent;
|
|
90
256
|
}
|
|
91
257
|
return '';
|
|
92
258
|
});
|
|
259
|
+
// Replace regular variables {{variable}}
|
|
93
260
|
result = result.replace(/\{\{(\w+)\}\}/g, (_match, key) => {
|
|
94
261
|
const value = variables[key];
|
|
262
|
+
// Return empty string if variable is undefined or null
|
|
95
263
|
if (value === undefined || value === null) {
|
|
96
264
|
return '';
|
|
97
265
|
}
|
|
266
|
+
// Convert to string
|
|
98
267
|
return String(value);
|
|
99
268
|
});
|
|
100
269
|
return result;
|
|
101
270
|
}
|
|
102
271
|
}
|
|
103
272
|
exports.SMSTemplateEngineImpl = SMSTemplateEngineImpl;
|
|
273
|
+
// Export the implementation class
|
|
274
|
+
// Note: SMSTemplateEngine interface is exported from interfaces/sms-template.interface.ts
|
|
104
275
|
//# sourceMappingURL=sms-template.engine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sms-template.engine.js","sourceRoot":"","sources":["../../src/templates/sms-template.engine.ts"],"names":[],"mappings":";;;AAAA,iFAM8C;AAC9C,mEAA+D;AAC/D,gEAA0D;AAE1D,2BAAkC;AAClC,+BAA+B;AAC/B,+BAAiC;AACjC,2BAA4B;AAE5B,MAAM,WAAW,GAAG,IAAA,gBAAS,EAAC,WAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"sms-template.engine.js","sourceRoot":"","sources":["../../src/templates/sms-template.engine.ts"],"names":[],"mappings":"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"}
|
package/dist/templates.d.ts
CHANGED
|
@@ -1,2 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Templates barrel export (shim)
|
|
3
|
+
*
|
|
4
|
+
* This file exists to ensure TypeScript's emitted declaration paths (e.g. `./templates.js`)
|
|
5
|
+
* resolve correctly for consumers.
|
|
6
|
+
*
|
|
7
|
+
* See `packages/core/src/dto.ts` for background.
|
|
8
|
+
*/
|
|
1
9
|
export * from './templates/index';
|
|
2
10
|
//# sourceMappingURL=templates.d.ts.map
|
package/dist/templates.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,cAAc,mBAAmB,CAAC"}
|
package/dist/templates.js
CHANGED
|
@@ -14,5 +14,13 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
/**
|
|
18
|
+
* Templates barrel export (shim)
|
|
19
|
+
*
|
|
20
|
+
* This file exists to ensure TypeScript's emitted declaration paths (e.g. `./templates.js`)
|
|
21
|
+
* resolve correctly for consumers.
|
|
22
|
+
*
|
|
23
|
+
* See `packages/core/src/dto.ts` for background.
|
|
24
|
+
*/
|
|
17
25
|
__exportStar(require("./templates/index"), exports);
|
|
18
26
|
//# sourceMappingURL=templates.js.map
|
package/dist/templates.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;;;;;;GAOG;AACH,oDAAkC"}
|
|
@@ -1,4 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Load common passwords from bundled file
|
|
3
|
+
*
|
|
4
|
+
* This function loads once on first call and caches the result.
|
|
5
|
+
* Subsequent calls return the cached Set immediately.
|
|
6
|
+
*
|
|
7
|
+
* File location: packages/core/src/data/common-passwords-10000.txt
|
|
8
|
+
* Format: One password per line, lowercase
|
|
9
|
+
*
|
|
10
|
+
* @returns Set of common passwords (lowercase)
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* // Load passwords (cached after first call)
|
|
15
|
+
* const passwords = loadCommonPasswords();
|
|
16
|
+
*
|
|
17
|
+
* // Check if password is common
|
|
18
|
+
* if (passwords.has('mypassword'.toLowerCase())) {
|
|
19
|
+
* console.log('Password is too common');
|
|
20
|
+
* }
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
1
23
|
export declare function loadCommonPasswords(): Set<string>;
|
|
24
|
+
/**
|
|
25
|
+
* Check if a password is in the common password list
|
|
26
|
+
*
|
|
27
|
+
* Case-insensitive comparison.
|
|
28
|
+
*
|
|
29
|
+
* @param password - Password to check
|
|
30
|
+
* @returns True if password is common, false otherwise
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* if (isCommonPassword('Password123')) {
|
|
35
|
+
* throw new Error('Password is too common');
|
|
36
|
+
* }
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
2
39
|
export declare function isCommonPassword(password: string): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Get the size of the common password list
|
|
42
|
+
*
|
|
43
|
+
* @returns Number of passwords in the list
|
|
44
|
+
*/
|
|
3
45
|
export declare function getCommonPasswordCount(): number;
|
|
4
46
|
//# sourceMappingURL=common-passwords.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common-passwords.d.ts","sourceRoot":"","sources":["../../src/utils/common-passwords.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"common-passwords.d.ts","sourceRoot":"","sources":["../../src/utils/common-passwords.ts"],"names":[],"mappings":"AA8EA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,mBAAmB,IAAI,GAAG,CAAC,MAAM,CAAC,CAoCjD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAG1D;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAG/C"}
|
|
@@ -38,13 +38,55 @@ exports.isCommonPassword = isCommonPassword;
|
|
|
38
38
|
exports.getCommonPasswordCount = getCommonPasswordCount;
|
|
39
39
|
const fs = __importStar(require("fs"));
|
|
40
40
|
const path = __importStar(require("path"));
|
|
41
|
+
/**
|
|
42
|
+
* Common Passwords Loader
|
|
43
|
+
*
|
|
44
|
+
* Loads a curated list of common passwords from bundled file at startup.
|
|
45
|
+
* Platform-agnostic - works on Mac, Linux, Windows, Docker, serverless, etc.
|
|
46
|
+
*
|
|
47
|
+
* Security Features:
|
|
48
|
+
* - One-time load on module initialization (memory cached)
|
|
49
|
+
* - 10,000 most common passwords from SecLists
|
|
50
|
+
* - O(1) lookup performance with Set
|
|
51
|
+
* - Graceful fallback if file not found
|
|
52
|
+
* - No runtime file I/O or network calls
|
|
53
|
+
* - Silent by default (won't interfere with JSON logging)
|
|
54
|
+
*
|
|
55
|
+
* Memory footprint: ~200KB for 10K passwords in Set
|
|
56
|
+
*
|
|
57
|
+
* Environment Variables:
|
|
58
|
+
* - NAUTH_DEBUG=true - Enable debug logging to stderr
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```typescript
|
|
62
|
+
* const passwords = loadCommonPasswords();
|
|
63
|
+
* if (passwords.has('password123')) {
|
|
64
|
+
* throw new Error('Password too common');
|
|
65
|
+
* }
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
41
68
|
let COMMON_PASSWORDS = null;
|
|
69
|
+
/**
|
|
70
|
+
* Internal logging helper
|
|
71
|
+
*
|
|
72
|
+
* Writes to stderr (not stdout) to avoid interfering with JSON logging.
|
|
73
|
+
* Only logs if NAUTH_DEBUG environment variable is set.
|
|
74
|
+
*
|
|
75
|
+
* @param message - Message to log
|
|
76
|
+
* @param isError - Whether this is an error/warning
|
|
77
|
+
*/
|
|
42
78
|
function debugLog(message, isError = false) {
|
|
43
79
|
if (process.env.NAUTH_DEBUG === 'true') {
|
|
44
80
|
const prefix = isError ? '[nauth-toolkit:WARN]' : '[nauth-toolkit:INFO]';
|
|
45
81
|
process.stderr.write(`${prefix} ${message}\n`);
|
|
46
82
|
}
|
|
47
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* Minimal fallback password list
|
|
86
|
+
*
|
|
87
|
+
* Used if the main password file cannot be loaded.
|
|
88
|
+
* Contains only the most common passwords.
|
|
89
|
+
*/
|
|
48
90
|
const FALLBACK_PASSWORDS = [
|
|
49
91
|
'password',
|
|
50
92
|
'password123',
|
|
@@ -67,11 +109,35 @@ const FALLBACK_PASSWORDS = [
|
|
|
67
109
|
'admin123',
|
|
68
110
|
'root',
|
|
69
111
|
];
|
|
112
|
+
/**
|
|
113
|
+
* Load common passwords from bundled file
|
|
114
|
+
*
|
|
115
|
+
* This function loads once on first call and caches the result.
|
|
116
|
+
* Subsequent calls return the cached Set immediately.
|
|
117
|
+
*
|
|
118
|
+
* File location: packages/core/src/data/common-passwords-10000.txt
|
|
119
|
+
* Format: One password per line, lowercase
|
|
120
|
+
*
|
|
121
|
+
* @returns Set of common passwords (lowercase)
|
|
122
|
+
*
|
|
123
|
+
* @example
|
|
124
|
+
* ```typescript
|
|
125
|
+
* // Load passwords (cached after first call)
|
|
126
|
+
* const passwords = loadCommonPasswords();
|
|
127
|
+
*
|
|
128
|
+
* // Check if password is common
|
|
129
|
+
* if (passwords.has('mypassword'.toLowerCase())) {
|
|
130
|
+
* console.log('Password is too common');
|
|
131
|
+
* }
|
|
132
|
+
* ```
|
|
133
|
+
*/
|
|
70
134
|
function loadCommonPasswords() {
|
|
135
|
+
// Return cached version if already loaded
|
|
71
136
|
if (COMMON_PASSWORDS) {
|
|
72
137
|
return COMMON_PASSWORDS;
|
|
73
138
|
}
|
|
74
139
|
try {
|
|
140
|
+
// Try to load from bundled file
|
|
75
141
|
const filePath = path.join(__dirname, '../data/common-passwords-10000.txt');
|
|
76
142
|
if (fs.existsSync(filePath)) {
|
|
77
143
|
const content = fs.readFileSync(filePath, 'utf-8');
|
|
@@ -92,17 +158,39 @@ function loadCommonPasswords() {
|
|
|
92
158
|
debugLog(`Error details: ${error.message}`, true);
|
|
93
159
|
}
|
|
94
160
|
}
|
|
161
|
+
// Fallback to minimal list (silent by default)
|
|
95
162
|
COMMON_PASSWORDS = new Set(FALLBACK_PASSWORDS.map((p) => p.toLowerCase()));
|
|
96
163
|
debugLog(`Using fallback password list with ${COMMON_PASSWORDS.size} entries`, true);
|
|
97
164
|
return COMMON_PASSWORDS;
|
|
98
165
|
}
|
|
166
|
+
/**
|
|
167
|
+
* Check if a password is in the common password list
|
|
168
|
+
*
|
|
169
|
+
* Case-insensitive comparison.
|
|
170
|
+
*
|
|
171
|
+
* @param password - Password to check
|
|
172
|
+
* @returns True if password is common, false otherwise
|
|
173
|
+
*
|
|
174
|
+
* @example
|
|
175
|
+
* ```typescript
|
|
176
|
+
* if (isCommonPassword('Password123')) {
|
|
177
|
+
* throw new Error('Password is too common');
|
|
178
|
+
* }
|
|
179
|
+
* ```
|
|
180
|
+
*/
|
|
99
181
|
function isCommonPassword(password) {
|
|
100
182
|
const passwords = loadCommonPasswords();
|
|
101
183
|
return passwords.has(password.toLowerCase());
|
|
102
184
|
}
|
|
185
|
+
/**
|
|
186
|
+
* Get the size of the common password list
|
|
187
|
+
*
|
|
188
|
+
* @returns Number of passwords in the list
|
|
189
|
+
*/
|
|
103
190
|
function getCommonPasswordCount() {
|
|
104
191
|
const passwords = loadCommonPasswords();
|
|
105
192
|
return passwords.size;
|
|
106
193
|
}
|
|
194
|
+
// Load passwords on module import (cached for subsequent use)
|
|
107
195
|
loadCommonPasswords();
|
|
108
196
|
//# sourceMappingURL=common-passwords.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common-passwords.js","sourceRoot":"","sources":["../../src/utils/common-passwords.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoGA,kDAoCC;AAiBD,4CAGC;AAOD,wDAGC;AAtKD,uCAAyB;AACzB,2CAA6B;
|
|
1
|
+
{"version":3,"file":"common-passwords.js","sourceRoot":"","sources":["../../src/utils/common-passwords.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Storage - Platform-Agnostic Async Local Storage
|
|
3
|
+
*
|
|
4
|
+
* Provides request-scoped storage using Node.js AsyncLocalStorage.
|
|
5
|
+
* Replaces nestjs-cls for platform-agnostic context management.
|
|
6
|
+
*
|
|
7
|
+
* **Features:**
|
|
8
|
+
* - Request-scoped data storage
|
|
9
|
+
* - Works across async boundaries
|
|
10
|
+
* - No framework dependencies
|
|
11
|
+
* - Type-safe storage and retrieval
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* // Store data in context
|
|
16
|
+
* ContextStorage.run(() => {
|
|
17
|
+
* ContextStorage.set('userId', '123');
|
|
18
|
+
* ContextStorage.set('clientInfo', { ip: '1.2.3.4' });
|
|
19
|
+
*
|
|
20
|
+
* // Access from any nested function
|
|
21
|
+
* const userId = ContextStorage.get<string>('userId');
|
|
22
|
+
* });
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
1
25
|
export declare class ContextStorage {
|
|
2
26
|
private static als;
|
|
27
|
+
/**
|
|
28
|
+
* Run a callback within a new context
|
|
29
|
+
*
|
|
30
|
+
* Creates a new async local storage context for the callback.
|
|
31
|
+
* All ContextStorage operations within the callback will use this context.
|
|
32
|
+
*
|
|
33
|
+
* @param callback - Function to execute with context
|
|
34
|
+
* @returns Result of the callback
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```typescript
|
|
38
|
+
* const result = ContextStorage.run(() => {
|
|
39
|
+
* ContextStorage.set('key', 'value');
|
|
40
|
+
* return processRequest();
|
|
41
|
+
* });
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
3
44
|
static run<T>(callback: () => T): T;
|
|
45
|
+
/**
|
|
46
|
+
* Store a value in the current context
|
|
47
|
+
*
|
|
48
|
+
* @param key - Storage key
|
|
49
|
+
* @param value - Value to store
|
|
50
|
+
* @throws Error if called outside of a context (ContextStorage.run not called)
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```typescript
|
|
54
|
+
* ContextStorage.set('userId', '123');
|
|
55
|
+
* ContextStorage.set('clientInfo', { ip: '1.2.3.4', userAgent: 'Mozilla...' });
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
4
58
|
static set<T>(key: string, value: T): void;
|
|
59
|
+
/**
|
|
60
|
+
* Retrieve a value from the current context
|
|
61
|
+
*
|
|
62
|
+
* @param key - Storage key
|
|
63
|
+
* @returns Stored value or undefined if not found
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```typescript
|
|
67
|
+
* const userId = ContextStorage.get<string>('userId');
|
|
68
|
+
* const clientInfo = ContextStorage.get<ClientInfo>('CLIENT_INFO');
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
5
71
|
static get<T>(key: string): T | undefined;
|
|
72
|
+
/**
|
|
73
|
+
* Check if a key exists in the current context
|
|
74
|
+
*
|
|
75
|
+
* @param key - Storage key
|
|
76
|
+
* @returns True if key exists, false otherwise
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```typescript
|
|
80
|
+
* if (ContextStorage.has('userId')) {
|
|
81
|
+
* const userId = ContextStorage.get<string>('userId');
|
|
82
|
+
* }
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
6
85
|
static has(key: string): boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Delete a value from the current context
|
|
88
|
+
*
|
|
89
|
+
* @param key - Storage key
|
|
90
|
+
* @returns True if key was deleted, false if it didn't exist
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ```typescript
|
|
94
|
+
* ContextStorage.delete('temporaryData');
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
7
97
|
static delete(key: string): boolean;
|
|
98
|
+
/**
|
|
99
|
+
* Clear all values from the current context
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* ```typescript
|
|
103
|
+
* ContextStorage.clear();
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
8
106
|
static clear(): void;
|
|
107
|
+
/**
|
|
108
|
+
* Get all keys in the current context
|
|
109
|
+
*
|
|
110
|
+
* @returns Array of storage keys
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* ```typescript
|
|
114
|
+
* const keys = ContextStorage.keys();
|
|
115
|
+
* console.log('Stored keys:', keys);
|
|
116
|
+
* ```
|
|
117
|
+
*/
|
|
9
118
|
static keys(): string[];
|
|
119
|
+
/**
|
|
120
|
+
* Get the current store instance
|
|
121
|
+
*
|
|
122
|
+
* This is useful for frameworks like Fastify where hooks run independently
|
|
123
|
+
* and you need to preserve the store across hook boundaries.
|
|
124
|
+
*
|
|
125
|
+
* @returns The current Map store or undefined
|
|
126
|
+
* @internal
|
|
127
|
+
*/
|
|
10
128
|
static getStore(): Map<string, unknown> | undefined;
|
|
129
|
+
/**
|
|
130
|
+
* Enter an existing context store
|
|
131
|
+
*
|
|
132
|
+
* This allows re-entering a context that was created elsewhere,
|
|
133
|
+
* useful for frameworks where handlers run in separate scopes.
|
|
134
|
+
*
|
|
135
|
+
* @param store - The store to enter
|
|
136
|
+
* @param callback - Function to execute with the store
|
|
137
|
+
* @returns Result of the callback
|
|
138
|
+
* @internal
|
|
139
|
+
*/
|
|
11
140
|
static enterStore<T>(store: Map<string, unknown>, callback: () => T): T;
|
|
12
141
|
}
|
|
13
142
|
//# sourceMappingURL=context-storage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-storage.d.ts","sourceRoot":"","sources":["../../src/utils/context-storage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"context-storage.d.ts","sourceRoot":"","sources":["../../src/utils/context-storage.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAiD;IAEnE;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC;IAKnC;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAQ1C;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAKzC;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAKhC;;;;;;;;;;OAUG;IACH,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAQnC;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,IAAI,IAAI;IAOpB;;;;;;;;;;OAUG;IACH,MAAM,CAAC,IAAI,IAAI,MAAM,EAAE;IAQvB;;;;;;;;OAQG;IACH,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IAInD;;;;;;;;;;OAUG;IACH,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC;CAGxE"}
|