@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,71 +1,158 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MemoryStorageAdapter = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* In-memory storage adapter for development and single-server deployments
|
|
6
|
+
*
|
|
7
|
+
* CRITICAL LIMITATIONS FOR PRODUCTION:
|
|
8
|
+
* - Data is lost on server restart
|
|
9
|
+
* - Data is NOT shared across multiple server instances/containers
|
|
10
|
+
* - Rate limiting may be bypassed in ECS/multi-container deployments
|
|
11
|
+
* - NOT suitable for production clusters with multiple containers
|
|
12
|
+
*
|
|
13
|
+
* RECOMMENDATIONS:
|
|
14
|
+
* - Single ECS task: Acceptable (data lost on restart)
|
|
15
|
+
* - Multi-task/container ECS: Use Redis adapter (coming soon)
|
|
16
|
+
* - Production: Plan to implement Redis-backed storage adapter
|
|
17
|
+
*
|
|
18
|
+
* CURRENT BEHAVIOR:
|
|
19
|
+
* Rate limiting works per-container, not globally across containers
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const storage = new MemoryStorageAdapter();
|
|
24
|
+
* await storage.initialize();
|
|
25
|
+
* await storage.set('key', 'value', 60); // Set with 60 second TTL
|
|
26
|
+
* const value = await storage.get('key');
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
4
29
|
class MemoryStorageAdapter {
|
|
30
|
+
// Main key-value store with expiration support
|
|
5
31
|
store = new Map();
|
|
32
|
+
// Hash storage for complex data structures (similar to Redis hashes)
|
|
6
33
|
hashes = new Map();
|
|
34
|
+
// List storage for ordered collections (similar to Redis lists)
|
|
7
35
|
lists = new Map();
|
|
36
|
+
// Interval timer for automatic cleanup of expired keys
|
|
8
37
|
cleanupInterval = null;
|
|
38
|
+
/**
|
|
39
|
+
* Initialize the storage adapter
|
|
40
|
+
* Starts a background cleanup job to remove expired keys
|
|
41
|
+
*/
|
|
9
42
|
async initialize() {
|
|
43
|
+
// Start cleanup interval to remove expired keys every minute
|
|
10
44
|
this.cleanupInterval = setInterval(() => {
|
|
11
45
|
this.cleanupExpired();
|
|
12
|
-
}, 60000);
|
|
46
|
+
}, 60000); // 60,000ms = 1 minute
|
|
13
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Check if the storage adapter is healthy and operational
|
|
50
|
+
* @returns Always returns true for in-memory storage
|
|
51
|
+
*/
|
|
14
52
|
async isHealthy() {
|
|
15
53
|
return true;
|
|
16
54
|
}
|
|
55
|
+
// ============================================================================
|
|
56
|
+
// Basic Key-Value Operations
|
|
57
|
+
// ============================================================================
|
|
58
|
+
/**
|
|
59
|
+
* Get a value by key
|
|
60
|
+
* Automatically removes and returns null if the key has expired
|
|
61
|
+
*
|
|
62
|
+
* @param key - The key to retrieve
|
|
63
|
+
* @returns The stored value or null if not found/expired
|
|
64
|
+
*/
|
|
17
65
|
async get(key) {
|
|
18
66
|
const stored = this.store.get(key);
|
|
67
|
+
// Key doesn't exist
|
|
19
68
|
if (!stored)
|
|
20
69
|
return null;
|
|
70
|
+
// Check if key has expired
|
|
21
71
|
if (stored.expiresAt && stored.expiresAt < Date.now()) {
|
|
22
|
-
this.store.delete(key);
|
|
72
|
+
this.store.delete(key); // Clean up expired key
|
|
23
73
|
return null;
|
|
24
74
|
}
|
|
25
75
|
return stored.value;
|
|
26
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* Set a key-value pair with optional TTL (time to live)
|
|
79
|
+
*
|
|
80
|
+
* @param key - The key to store
|
|
81
|
+
* @param value - The value to store
|
|
82
|
+
* @param ttl - Time to live in seconds (optional)
|
|
83
|
+
*/
|
|
27
84
|
async set(key, value, ttlSeconds, options) {
|
|
85
|
+
// For NX option, check if key exists and is not expired
|
|
28
86
|
if (options?.nx) {
|
|
29
87
|
const existing = this.store.get(key);
|
|
30
88
|
if (existing) {
|
|
89
|
+
// Check if existing key is expired
|
|
31
90
|
if (existing.expiresAt && existing.expiresAt < Date.now()) {
|
|
91
|
+
// Key exists but is expired - treat as non-existent and allow set
|
|
32
92
|
this.store.delete(key);
|
|
33
93
|
}
|
|
34
94
|
else {
|
|
95
|
+
// Key exists and is not expired - NX failed
|
|
35
96
|
return null;
|
|
36
97
|
}
|
|
37
98
|
}
|
|
38
99
|
}
|
|
39
100
|
const stored = { value };
|
|
101
|
+
// If TTL is provided, calculate expiration timestamp
|
|
40
102
|
if (ttlSeconds) {
|
|
41
|
-
stored.expiresAt = Date.now() + ttlSeconds * 1000;
|
|
103
|
+
stored.expiresAt = Date.now() + ttlSeconds * 1000; // Convert seconds to milliseconds
|
|
42
104
|
}
|
|
43
105
|
this.store.set(key, stored);
|
|
44
106
|
return value;
|
|
45
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* Delete a key from storage
|
|
110
|
+
* @param key - The key to delete
|
|
111
|
+
*/
|
|
46
112
|
async del(key) {
|
|
47
113
|
this.store.delete(key);
|
|
48
114
|
}
|
|
115
|
+
/**
|
|
116
|
+
* Check if a key exists and is not expired
|
|
117
|
+
* @param key - The key to check
|
|
118
|
+
* @returns True if key exists and is valid, false otherwise
|
|
119
|
+
*/
|
|
49
120
|
async exists(key) {
|
|
50
121
|
const value = await this.get(key);
|
|
51
122
|
return value !== null;
|
|
52
123
|
}
|
|
124
|
+
// ============================================================================
|
|
125
|
+
// Atomic Operations (for counters and rate limiting)
|
|
126
|
+
// ============================================================================
|
|
127
|
+
/**
|
|
128
|
+
* Increment a counter stored at key
|
|
129
|
+
* If the key doesn't exist, it's initialized to 0 before incrementing
|
|
130
|
+
* Preserves TTL if the key already exists with an expiration
|
|
131
|
+
*
|
|
132
|
+
* @param key - The key to increment
|
|
133
|
+
* @param ttlSeconds - Optional TTL in seconds to set when creating a new key (only applied if key doesn't exist)
|
|
134
|
+
* @returns The new value after incrementing
|
|
135
|
+
*/
|
|
53
136
|
async incr(key, ttlSeconds) {
|
|
54
137
|
const stored = this.store.get(key);
|
|
138
|
+
// Check if key exists and is not expired
|
|
55
139
|
let currentValue = '0';
|
|
56
140
|
let existingExpiry;
|
|
57
141
|
const wasNewKey = !stored || (stored.expiresAt && stored.expiresAt < Date.now());
|
|
58
142
|
if (stored) {
|
|
59
143
|
if (stored.expiresAt && stored.expiresAt < Date.now()) {
|
|
144
|
+
// Key expired - treat as non-existent
|
|
60
145
|
this.store.delete(key);
|
|
61
146
|
}
|
|
62
147
|
else {
|
|
148
|
+
// Key exists and is valid - preserve expiry
|
|
63
149
|
currentValue = stored.value;
|
|
64
150
|
existingExpiry = stored.expiresAt;
|
|
65
151
|
}
|
|
66
152
|
}
|
|
67
153
|
const newValue = (parseInt(currentValue || '0', 10) + 1).toString();
|
|
68
154
|
const newStored = { value: newValue };
|
|
155
|
+
// Use provided TTL for new keys, otherwise preserve existing expiry
|
|
69
156
|
if (wasNewKey && ttlSeconds !== undefined) {
|
|
70
157
|
newStored.expiresAt = Date.now() + ttlSeconds * 1000;
|
|
71
158
|
}
|
|
@@ -75,32 +162,67 @@ class MemoryStorageAdapter {
|
|
|
75
162
|
this.store.set(key, newStored);
|
|
76
163
|
return parseInt(newValue, 10);
|
|
77
164
|
}
|
|
165
|
+
/**
|
|
166
|
+
* Decrement a counter stored at key
|
|
167
|
+
* If the key doesn't exist, it's initialized to 0 before decrementing
|
|
168
|
+
*
|
|
169
|
+
* @param key - The key to decrement
|
|
170
|
+
* @returns The new value after decrementing
|
|
171
|
+
*/
|
|
78
172
|
async decr(key) {
|
|
79
173
|
const current = await this.get(key);
|
|
80
174
|
const newValue = (parseInt(current || '0', 10) - 1).toString();
|
|
81
175
|
await this.set(key, newValue);
|
|
82
176
|
return parseInt(newValue, 10);
|
|
83
177
|
}
|
|
178
|
+
/**
|
|
179
|
+
* Set expiration time on an existing key
|
|
180
|
+
* @param key - The key to set expiration on
|
|
181
|
+
* @param ttl - Time to live in seconds
|
|
182
|
+
*/
|
|
84
183
|
async expire(key, ttl) {
|
|
85
184
|
const stored = this.store.get(key);
|
|
86
185
|
if (stored) {
|
|
87
|
-
stored.expiresAt = Date.now() + ttl * 1000;
|
|
186
|
+
stored.expiresAt = Date.now() + ttl * 1000; // Convert to milliseconds
|
|
88
187
|
this.store.set(key, stored);
|
|
89
188
|
}
|
|
90
189
|
}
|
|
190
|
+
/**
|
|
191
|
+
* Get the time to live (TTL) for a key
|
|
192
|
+
* @param key - The key to check
|
|
193
|
+
* @returns Seconds until expiration, -1 if no expiration, -2 if key doesn't exist
|
|
194
|
+
*/
|
|
91
195
|
async ttl(key) {
|
|
92
196
|
const stored = this.store.get(key);
|
|
197
|
+
// Key doesn't exist
|
|
93
198
|
if (!stored)
|
|
94
199
|
return -2;
|
|
200
|
+
// Key exists but has no expiration
|
|
95
201
|
if (!stored.expiresAt)
|
|
96
202
|
return -1;
|
|
203
|
+
// Calculate remaining seconds
|
|
97
204
|
const remaining = Math.floor((stored.expiresAt - Date.now()) / 1000);
|
|
98
|
-
return remaining > 0 ? remaining : -2;
|
|
205
|
+
return remaining > 0 ? remaining : -2; // Return -2 if already expired
|
|
99
206
|
}
|
|
207
|
+
// ============================================================================
|
|
208
|
+
// Hash Operations (for complex data structures)
|
|
209
|
+
// ============================================================================
|
|
210
|
+
/**
|
|
211
|
+
* Get a field value from a hash
|
|
212
|
+
* @param key - Hash key
|
|
213
|
+
* @param field - Field name
|
|
214
|
+
* @returns Field value or null if not found
|
|
215
|
+
*/
|
|
100
216
|
async hget(key, field) {
|
|
101
217
|
const hash = this.hashes.get(key);
|
|
102
218
|
return hash?.get(field) ?? null;
|
|
103
219
|
}
|
|
220
|
+
/**
|
|
221
|
+
* Set a field value in a hash
|
|
222
|
+
* @param key - Hash key
|
|
223
|
+
* @param field - Field name
|
|
224
|
+
* @param value - Field value
|
|
225
|
+
*/
|
|
104
226
|
async hset(key, field, value) {
|
|
105
227
|
let hash = this.hashes.get(key);
|
|
106
228
|
if (!hash) {
|
|
@@ -109,12 +231,23 @@ class MemoryStorageAdapter {
|
|
|
109
231
|
}
|
|
110
232
|
hash.set(field, value);
|
|
111
233
|
}
|
|
234
|
+
/**
|
|
235
|
+
* Get all fields and values from a hash
|
|
236
|
+
* @param key - Hash key
|
|
237
|
+
* @returns Object with all field-value pairs
|
|
238
|
+
*/
|
|
112
239
|
async hgetall(key) {
|
|
113
240
|
const hash = this.hashes.get(key);
|
|
114
241
|
if (!hash)
|
|
115
242
|
return {};
|
|
116
243
|
return Object.fromEntries(hash.entries());
|
|
117
244
|
}
|
|
245
|
+
/**
|
|
246
|
+
* Delete one or more fields from a hash
|
|
247
|
+
* @param key - Hash key
|
|
248
|
+
* @param fields - Field names to delete
|
|
249
|
+
* @returns Number of fields deleted
|
|
250
|
+
*/
|
|
118
251
|
async hdel(key, ...fields) {
|
|
119
252
|
const hash = this.hashes.get(key);
|
|
120
253
|
if (!hash)
|
|
@@ -125,19 +258,35 @@ class MemoryStorageAdapter {
|
|
|
125
258
|
deleted++;
|
|
126
259
|
}
|
|
127
260
|
}
|
|
261
|
+
// Clean up empty hash
|
|
128
262
|
if (hash.size === 0) {
|
|
129
263
|
this.hashes.delete(key);
|
|
130
264
|
}
|
|
131
265
|
return deleted;
|
|
132
266
|
}
|
|
267
|
+
// ============================================================================
|
|
268
|
+
// List Operations (for ordered collections)
|
|
269
|
+
// ============================================================================
|
|
270
|
+
/**
|
|
271
|
+
* Push value to the left (beginning) of a list
|
|
272
|
+
* @param key - List key
|
|
273
|
+
* @param value - Value to push
|
|
274
|
+
*/
|
|
133
275
|
async lpush(key, value) {
|
|
134
276
|
let list = this.lists.get(key);
|
|
135
277
|
if (!list) {
|
|
136
278
|
list = [];
|
|
137
279
|
this.lists.set(key, list);
|
|
138
280
|
}
|
|
139
|
-
list.unshift(value);
|
|
281
|
+
list.unshift(value); // Add to beginning
|
|
140
282
|
}
|
|
283
|
+
/**
|
|
284
|
+
* Get a range of elements from a list
|
|
285
|
+
* @param key - List key
|
|
286
|
+
* @param start - Start index (0-based)
|
|
287
|
+
* @param stop - Stop index (-1 for end of list)
|
|
288
|
+
* @returns Array of values in range
|
|
289
|
+
*/
|
|
141
290
|
async lrange(key, start, stop) {
|
|
142
291
|
const list = this.lists.get(key);
|
|
143
292
|
if (!list)
|
|
@@ -145,14 +294,34 @@ class MemoryStorageAdapter {
|
|
|
145
294
|
const end = stop === -1 ? list.length : stop + 1;
|
|
146
295
|
return list.slice(start, end);
|
|
147
296
|
}
|
|
297
|
+
/**
|
|
298
|
+
* Get the length of a list
|
|
299
|
+
* @param key - List key
|
|
300
|
+
* @returns List length
|
|
301
|
+
*/
|
|
148
302
|
async llen(key) {
|
|
149
303
|
const list = this.lists.get(key);
|
|
150
304
|
return list?.length ?? 0;
|
|
151
305
|
}
|
|
306
|
+
// ============================================================================
|
|
307
|
+
// Pattern Operations (for bulk operations)
|
|
308
|
+
// ============================================================================
|
|
309
|
+
/**
|
|
310
|
+
* Find all keys matching a pattern
|
|
311
|
+
* @param pattern - Glob pattern (* and ? wildcards supported)
|
|
312
|
+
* @returns Array of matching keys
|
|
313
|
+
*/
|
|
152
314
|
async keys(pattern) {
|
|
153
315
|
const regex = this.patternToRegex(pattern);
|
|
154
316
|
return Array.from(this.store.keys()).filter((key) => regex.test(key));
|
|
155
317
|
}
|
|
318
|
+
/**
|
|
319
|
+
* Iterate over keys matching a pattern (cursor-based)
|
|
320
|
+
* @param cursor - Cursor position (0 to start)
|
|
321
|
+
* @param pattern - Glob pattern
|
|
322
|
+
* @param count - Number of keys to return
|
|
323
|
+
* @returns Tuple of [new cursor, keys array]
|
|
324
|
+
*/
|
|
156
325
|
async scan(cursor, pattern, count) {
|
|
157
326
|
const allKeys = await this.keys(pattern);
|
|
158
327
|
const start = cursor;
|
|
@@ -161,32 +330,58 @@ class MemoryStorageAdapter {
|
|
|
161
330
|
const newCursor = end >= allKeys.length ? 0 : end;
|
|
162
331
|
return [newCursor, keys];
|
|
163
332
|
}
|
|
333
|
+
// ============================================================================
|
|
334
|
+
// Cleanup & Lifecycle
|
|
335
|
+
// ============================================================================
|
|
336
|
+
/**
|
|
337
|
+
* Run cleanup of expired keys
|
|
338
|
+
*/
|
|
164
339
|
async cleanup() {
|
|
165
340
|
this.cleanupExpired();
|
|
166
341
|
}
|
|
342
|
+
/**
|
|
343
|
+
* Disconnect and cleanup all resources
|
|
344
|
+
*/
|
|
167
345
|
async disconnect() {
|
|
346
|
+
// Stop cleanup interval
|
|
168
347
|
if (this.cleanupInterval) {
|
|
169
348
|
clearInterval(this.cleanupInterval);
|
|
170
349
|
this.cleanupInterval = null;
|
|
171
350
|
}
|
|
351
|
+
// Clear all storage
|
|
172
352
|
this.store.clear();
|
|
173
353
|
this.hashes.clear();
|
|
174
354
|
this.lists.clear();
|
|
175
355
|
}
|
|
356
|
+
// ============================================================================
|
|
357
|
+
// Private Helper Methods
|
|
358
|
+
// ============================================================================
|
|
359
|
+
/**
|
|
360
|
+
* Remove all expired keys from storage
|
|
361
|
+
*/
|
|
176
362
|
cleanupExpired() {
|
|
177
363
|
const now = Date.now();
|
|
178
364
|
const keysToDelete = [];
|
|
365
|
+
// Find all expired keys
|
|
179
366
|
for (const [key, stored] of this.store.entries()) {
|
|
180
367
|
if (stored.expiresAt && stored.expiresAt < now) {
|
|
181
368
|
keysToDelete.push(key);
|
|
182
369
|
}
|
|
183
370
|
}
|
|
371
|
+
// Delete expired keys
|
|
184
372
|
for (const key of keysToDelete) {
|
|
185
373
|
this.store.delete(key);
|
|
186
374
|
}
|
|
187
375
|
}
|
|
376
|
+
/**
|
|
377
|
+
* Convert a glob pattern to a regular expression
|
|
378
|
+
* @param pattern - Glob pattern (* and ? wildcards)
|
|
379
|
+
* @returns RegExp for pattern matching
|
|
380
|
+
*/
|
|
188
381
|
patternToRegex(pattern) {
|
|
382
|
+
// Escape regex special characters except * and ?
|
|
189
383
|
const escaped = pattern.replace(/[.+^${}()|[\]\\]/g, '\\$&');
|
|
384
|
+
// Convert glob wildcards to regex
|
|
190
385
|
const regex = escaped.replace(/\*/g, '.*').replace(/\?/g, '.');
|
|
191
386
|
return new RegExp(`^${regex}$`);
|
|
192
387
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-storage.adapter.js","sourceRoot":"","sources":["../../src/storage/memory-storage.adapter.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"memory-storage.adapter.js","sourceRoot":"","sources":["../../src/storage/memory-storage.adapter.ts"],"names":[],"mappings":";;;AAUA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAa,oBAAoB;IAC/B,+CAA+C;IACvC,KAAK,GAA6B,IAAI,GAAG,EAAE,CAAC;IAEpD,qEAAqE;IAC7D,MAAM,GAAqC,IAAI,GAAG,EAAE,CAAC;IAE7D,gEAAgE;IACxD,KAAK,GAA0B,IAAI,GAAG,EAAE,CAAC;IAEjD,uDAAuD;IAC/C,eAAe,GAA0B,IAAI,CAAC;IAEtD;;;OAGG;IACH,KAAK,CAAC,UAAU;QACd,6DAA6D;QAC7D,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE;YACtC,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,sBAAsB;IACnC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+EAA+E;IAC/E,6BAA6B;IAC7B,+EAA+E;IAE/E;;;;;;OAMG;IACH,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEnC,oBAAoB;QACpB,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAEzB,2BAA2B;QAC3B,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YACtD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,uBAAuB;YAC/C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,UAAmB,EAAE,OAA0B;QACnF,wDAAwD;QACxD,IAAI,OAAO,EAAE,EAAE,EAAE,CAAC;YAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,QAAQ,EAAE,CAAC;gBACb,mCAAmC;gBACnC,IAAI,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;oBAC1D,kEAAkE;oBAClE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACzB,CAAC;qBAAM,CAAC;oBACN,4CAA4C;oBAC5C,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAgB,EAAE,KAAK,EAAE,CAAC;QAEtC,qDAAqD;QACrD,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,GAAG,IAAI,CAAC,CAAC,kCAAkC;QACvF,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,OAAO,KAAK,KAAK,IAAI,CAAC;IACxB,CAAC;IAED,+EAA+E;IAC/E,qDAAqD;IACrD,+EAA+E;IAE/E;;;;;;;;OAQG;IACH,KAAK,CAAC,IAAI,CAAC,GAAW,EAAE,UAAmB;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEnC,yCAAyC;QACzC,IAAI,YAAY,GAAG,GAAG,CAAC;QACvB,IAAI,cAAkC,CAAC;QACvC,MAAM,SAAS,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAEjF,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;gBACtD,sCAAsC;gBACtC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,4CAA4C;gBAC5C,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC5B,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC;YACpC,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC,YAAY,IAAI,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACpE,MAAM,SAAS,GAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QAEnD,oEAAoE;QACpE,IAAI,SAAS,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC1C,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,GAAG,IAAI,CAAC;QACvD,CAAC;aAAM,IAAI,cAAc,EAAE,CAAC;YAC1B,SAAS,CAAC,SAAS,GAAG,cAAc,CAAC;QACvC,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC/B,OAAO,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAChC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,CAAC,GAAW;QACpB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC/D,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC9B,OAAO,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,GAAW,EAAE,GAAW;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,0BAA0B;YACtE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEnC,oBAAoB;QACpB,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,CAAC,CAAC;QAEvB,mCAAmC;QACnC,IAAI,CAAC,MAAM,CAAC,SAAS;YAAE,OAAO,CAAC,CAAC,CAAC;QAEjC,8BAA8B;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QACrE,OAAO,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B;IACxE,CAAC;IAED,+EAA+E;IAC/E,gDAAgD;IAChD,+EAA+E;IAE/E;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,GAAW,EAAE,KAAa;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,OAAO,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,GAAW,EAAE,KAAa,EAAE,KAAa;QAClD,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,GAAW;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QAErB,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,GAAW,EAAE,GAAG,MAAgB;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC;QAEpB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QAED,sBAAsB;QACtB,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,+EAA+E;IAC/E,4CAA4C;IAC5C,+EAA+E;IAE/E;;;;OAIG;IACH,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,KAAa;QACpC,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,GAAG,EAAE,CAAC;YACV,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB;IAC1C,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,MAAM,CAAC,GAAW,EAAE,KAAa,EAAE,IAAY;QACnD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QAErB,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAI,CAAC,GAAW;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjC,OAAO,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,+EAA+E;IAC/E,2CAA2C;IAC3C,+EAA+E;IAE/E;;;;OAIG;IACH,KAAK,CAAC,IAAI,CAAC,OAAe;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC3C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACxE,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,OAAe,EAAE,KAAa;QACvD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,CAAC;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACvC,MAAM,SAAS,GAAG,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAClD,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,+EAA+E;IAC/E,sBAAsB;IACtB,+EAA+E;IAE/E;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,wBAAwB;QACxB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACpC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC9B,CAAC;QAED,oBAAoB;QACpB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,+EAA+E;IAC/E,yBAAyB;IACzB,+EAA+E;IAE/E;;OAEG;IACK,cAAc;QACpB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,YAAY,GAAa,EAAE,CAAC;QAElC,wBAAwB;QACxB,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YACjD,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC;gBAC/C,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,sBAAsB;QACtB,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,cAAc,CAAC,OAAe;QACpC,iDAAiD;QACjD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;QAE7D,kCAAkC;QAClC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAE/D,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;IAClC,CAAC;CACF;AAvZD,oDAuZC"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { RateLimitStorage, StorageAdapter } from '../interfaces/storage-adapter.interface';
|
|
2
|
+
/**
|
|
3
|
+
* Rate limit storage implementation using StorageAdapter (Platform-Agnostic)
|
|
4
|
+
*/
|
|
2
5
|
export declare class RateLimitStorageService implements RateLimitStorage {
|
|
3
6
|
private readonly storageAdapter;
|
|
4
7
|
private readonly keyPrefix;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limit-storage.service.d.ts","sourceRoot":"","sources":["../../src/storage/rate-limit-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"rate-limit-storage.service.d.ts","sourceRoot":"","sources":["../../src/storage/rate-limit-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAE3F;;GAEG;AACH,qBAAa,uBAAwB,YAAW,gBAAgB;IAGlD,OAAO,CAAC,QAAQ,CAAC,cAAc;IAF3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;gBAEnB,cAAc,EAAE,cAAc;IAErD,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAa3F,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMnE,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzE,OAAO,CAAC,MAAM;CAGf"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RateLimitStorageService = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Rate limit storage implementation using StorageAdapter (Platform-Agnostic)
|
|
6
|
+
*/
|
|
4
7
|
class RateLimitStorageService {
|
|
5
8
|
storageAdapter;
|
|
6
9
|
keyPrefix = 'nauth:ratelimit:';
|
|
@@ -11,6 +14,7 @@ class RateLimitStorageService {
|
|
|
11
14
|
const key = this.getKey(identifier, endpoint);
|
|
12
15
|
const count = await this.storageAdapter.incr(key);
|
|
13
16
|
if (count === 1) {
|
|
17
|
+
// First request in this window, set expiry
|
|
14
18
|
const ttl = Math.ceil(windowMs / 1000);
|
|
15
19
|
await this.storageAdapter.expire(key, ttl);
|
|
16
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limit-storage.service.js","sourceRoot":"","sources":["../../src/storage/rate-limit-storage.service.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"rate-limit-storage.service.js","sourceRoot":"","sources":["../../src/storage/rate-limit-storage.service.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACH,MAAa,uBAAuB;IAGL;IAFZ,SAAS,GAAG,kBAAkB,CAAC;IAEhD,YAA6B,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;IAAG,CAAC;IAE/D,KAAK,CAAC,kBAAkB,CAAC,UAAkB,EAAE,QAAgB,EAAE,QAAgB;QAC7E,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAElD,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,2CAA2C;YAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,UAAkB,EAAE,QAAgB;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjD,OAAO,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,UAAkB,EAAE,QAAgB;QACvD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC9C,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAEO,MAAM,CAAC,UAAkB,EAAE,QAAgB;QACjD,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,UAAU,IAAI,QAAQ,EAAE,CAAC;IACtD,CAAC;CACF;AAhCD,0DAgCC"}
|
package/dist/storage.d.ts
CHANGED
|
@@ -1,2 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storage barrel export (shim)
|
|
3
|
+
*
|
|
4
|
+
* This file exists to ensure TypeScript's emitted declaration paths (e.g. `./storage.js`)
|
|
5
|
+
* resolve correctly for consumers.
|
|
6
|
+
*
|
|
7
|
+
* See `packages/core/src/dto.ts` for background.
|
|
8
|
+
*/
|
|
1
9
|
export * from './storage/index';
|
|
2
10
|
//# sourceMappingURL=storage.d.ts.map
|
package/dist/storage.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,cAAc,iBAAiB,CAAC"}
|
package/dist/storage.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
|
+
* Storage barrel export (shim)
|
|
19
|
+
*
|
|
20
|
+
* This file exists to ensure TypeScript's emitted declaration paths (e.g. `./storage.js`)
|
|
21
|
+
* resolve correctly for consumers.
|
|
22
|
+
*
|
|
23
|
+
* See `packages/core/src/dto.ts` for background.
|
|
24
|
+
*/
|
|
17
25
|
__exportStar(require("./storage/index"), exports);
|
|
18
26
|
//# sourceMappingURL=storage.js.map
|
package/dist/storage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;;;;;;GAOG;AACH,kDAAgC"}
|
|
@@ -1,16 +1,126 @@
|
|
|
1
1
|
import { TemplateEngine, TemplateType, TemplateVariables, EmailTemplate } from '../interfaces/template.interface';
|
|
2
|
+
/**
|
|
3
|
+
* HTML Template Engine
|
|
4
|
+
*
|
|
5
|
+
* Simple yet powerful template engine for email templates using HTML with placeholder tokens.
|
|
6
|
+
* Supports {{variable}} syntax for variable injection.
|
|
7
|
+
*
|
|
8
|
+
* Features:
|
|
9
|
+
* - Simple {{variable}} placeholder syntax
|
|
10
|
+
* - Built-in default templates for all email types
|
|
11
|
+
* - Custom template registration
|
|
12
|
+
* - Automatic HTML entity escaping for security
|
|
13
|
+
* - Plain text generation from HTML
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const engine = new HtmlTemplateEngine();
|
|
18
|
+
* const result = await engine.render(
|
|
19
|
+
* TemplateType.VERIFICATION,
|
|
20
|
+
* { userName: 'John', code: '123456', expiryMinutes: 60 }
|
|
21
|
+
* );
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
2
24
|
export declare class HtmlTemplateEngine implements TemplateEngine {
|
|
25
|
+
/**
|
|
26
|
+
* Storage for registered templates
|
|
27
|
+
* Maps template type to template definition
|
|
28
|
+
*/
|
|
3
29
|
private templates;
|
|
30
|
+
/**
|
|
31
|
+
* Constructor
|
|
32
|
+
* Initializes the engine with default templates
|
|
33
|
+
*/
|
|
4
34
|
constructor();
|
|
35
|
+
/**
|
|
36
|
+
* Render a template with variables
|
|
37
|
+
*
|
|
38
|
+
* Replaces all {{variable}} placeholders with actual values.
|
|
39
|
+
* Variables are HTML-escaped for security.
|
|
40
|
+
* Handles firstName/username fallback for greetings.
|
|
41
|
+
*
|
|
42
|
+
* @param type - Template type to render
|
|
43
|
+
* @param variables - Variables to inject
|
|
44
|
+
* @returns Rendered email template
|
|
45
|
+
* @throws {Error} If template type not found
|
|
46
|
+
*/
|
|
5
47
|
render(type: TemplateType | string, variables: TemplateVariables): Promise<EmailTemplate>;
|
|
48
|
+
/**
|
|
49
|
+
* Register a custom template
|
|
50
|
+
*
|
|
51
|
+
* @param type - Template type identifier
|
|
52
|
+
* @param template - Template definition
|
|
53
|
+
*/
|
|
6
54
|
registerTemplate(type: TemplateType | string, template: EmailTemplate): void;
|
|
55
|
+
/**
|
|
56
|
+
* Get all available template types
|
|
57
|
+
*
|
|
58
|
+
* @returns Array of template type identifiers
|
|
59
|
+
*/
|
|
7
60
|
getAvailableTemplates(): string[];
|
|
61
|
+
/**
|
|
62
|
+
* Check if a template exists
|
|
63
|
+
*
|
|
64
|
+
* @param type - Template type to check
|
|
65
|
+
* @returns True if template is registered
|
|
66
|
+
*/
|
|
8
67
|
hasTemplate(type: TemplateType | string): boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Replace {{variable}} placeholders with values
|
|
70
|
+
*
|
|
71
|
+
* Escapes HTML entities in variables for security.
|
|
72
|
+
* Handles missing variables gracefully (replaces with empty string).
|
|
73
|
+
* Supports firstName/username fallback logic and simple conditionals.
|
|
74
|
+
*
|
|
75
|
+
* @param template - Template string with {{placeholders}}
|
|
76
|
+
* @param variables - Variables to inject
|
|
77
|
+
* @returns Template with variables replaced
|
|
78
|
+
* @private
|
|
79
|
+
*/
|
|
9
80
|
private replaceVariables;
|
|
81
|
+
/**
|
|
82
|
+
* Replace {{variable}} placeholders with values for text content
|
|
83
|
+
*
|
|
84
|
+
* Similar to replaceVariables but doesn't escape HTML entities for plain text.
|
|
85
|
+
*
|
|
86
|
+
* @param template - Template string with {{placeholders}}
|
|
87
|
+
* @param variables - Variables to inject
|
|
88
|
+
* @returns Template with variables replaced
|
|
89
|
+
* @private
|
|
90
|
+
*/
|
|
10
91
|
private replaceVariablesForText;
|
|
92
|
+
/**
|
|
93
|
+
* Get greeting name with firstName/username fallback logic
|
|
94
|
+
*
|
|
95
|
+
* @param variables - Template variables
|
|
96
|
+
* @returns Greeting name or empty string
|
|
97
|
+
* @private
|
|
98
|
+
*/
|
|
11
99
|
private getGreetingName;
|
|
100
|
+
/**
|
|
101
|
+
* Escape HTML entities to prevent XSS
|
|
102
|
+
*
|
|
103
|
+
* @param text - Text to escape
|
|
104
|
+
* @returns HTML-safe text
|
|
105
|
+
* @private
|
|
106
|
+
*/
|
|
12
107
|
private escapeHtml;
|
|
108
|
+
/**
|
|
109
|
+
* Convert HTML to plain text
|
|
110
|
+
*
|
|
111
|
+
* Simple conversion: strips HTML tags and decodes entities.
|
|
112
|
+
*
|
|
113
|
+
* @param html - HTML content
|
|
114
|
+
* @returns Plain text
|
|
115
|
+
* @private
|
|
116
|
+
*/
|
|
13
117
|
private htmlToText;
|
|
118
|
+
/**
|
|
119
|
+
* Register default templates for all email types
|
|
120
|
+
*
|
|
121
|
+
* These templates can be overridden using registerTemplate().
|
|
122
|
+
* @private
|
|
123
|
+
*/
|
|
14
124
|
private registerDefaultTemplates;
|
|
15
125
|
}
|
|
16
126
|
//# sourceMappingURL=html-template.engine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-template.engine.d.ts","sourceRoot":"","sources":["../../src/templates/html-template.engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"html-template.engine.d.ts","sourceRoot":"","sources":["../../src/templates/html-template.engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAIlH;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,kBAAmB,YAAW,cAAc;IACvD;;;OAGG;IACH,OAAO,CAAC,SAAS,CAAyC;IAE1D;;;OAGG;;IAKH;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,EAAE,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC;IA2B/F;;;;;OAKG;IACH,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAI5E;;;;OAIG;IACH,qBAAqB,IAAI,MAAM,EAAE;IAIjC;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,GAAG,OAAO;IAIjD;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,gBAAgB;IAgCxB;;;;;;;;;OASG;IACH,OAAO,CAAC,uBAAuB;IAgC/B;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAUvB;;;;;;OAMG;IACH,OAAO,CAAC,UAAU;IAYlB;;;;;;;;OAQG;IACH,OAAO,CAAC,UAAU;IAkBlB;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;CAuajC"}
|