@hed-hog/core 0.0.390 → 0.0.393
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/README.md +39 -0
- package/dist/access-log/access-log.controller.d.ts.map +1 -1
- package/dist/access-log/access-log.controller.js +1 -1
- package/dist/access-log/access-log.controller.js.map +1 -1
- package/dist/access-log/access-log.interceptor.d.ts.map +1 -1
- package/dist/access-log/access-log.interceptor.js +8 -5
- package/dist/access-log/access-log.interceptor.js.map +1 -1
- package/dist/access-log/access-log.service.d.ts +4 -0
- package/dist/access-log/access-log.service.d.ts.map +1 -1
- package/dist/access-log/access-log.service.js +31 -4
- package/dist/access-log/access-log.service.js.map +1 -1
- package/dist/access-log/dto/query-access-log.dto.d.ts +2 -0
- package/dist/access-log/dto/query-access-log.dto.d.ts.map +1 -1
- package/dist/access-log/dto/query-access-log.dto.js +5 -0
- package/dist/access-log/dto/query-access-log.dto.js.map +1 -1
- package/dist/ai/ai.controller.d.ts +12 -8
- package/dist/ai/ai.controller.d.ts.map +1 -1
- package/dist/ai/ai.controller.js +17 -2
- package/dist/ai/ai.controller.js.map +1 -1
- package/dist/ai/ai.module.d.ts.map +1 -1
- package/dist/ai/ai.module.js +3 -2
- package/dist/ai/ai.module.js.map +1 -1
- package/dist/ai/ai.service.d.ts +30 -1
- package/dist/ai/ai.service.d.ts.map +1 -1
- package/dist/ai/ai.service.js +97 -3
- package/dist/ai/ai.service.js.map +1 -1
- package/dist/ai/dto/richtext-edit-html.dto.d.ts +5 -0
- package/dist/ai/dto/richtext-edit-html.dto.d.ts.map +1 -0
- package/dist/ai/dto/richtext-edit-html.dto.js +27 -0
- package/dist/ai/dto/richtext-edit-html.dto.js.map +1 -0
- package/dist/ai/richtext-ai.prompts.d.ts +5 -0
- package/dist/ai/richtext-ai.prompts.d.ts.map +1 -0
- package/dist/ai/richtext-ai.prompts.js +57 -0
- package/dist/ai/richtext-ai.prompts.js.map +1 -0
- package/dist/ai/richtext-ai.service.d.ts +34 -0
- package/dist/ai/richtext-ai.service.d.ts.map +1 -0
- package/dist/ai/richtext-ai.service.js +95 -0
- package/dist/ai/richtext-ai.service.js.map +1 -0
- package/dist/ai-instruction/ai-instruction.controller.d.ts +5 -5
- package/dist/auth/auth.controller.d.ts +66 -7
- package/dist/auth/auth.controller.d.ts.map +1 -1
- package/dist/auth/auth.controller.js +67 -23
- package/dist/auth/auth.controller.js.map +1 -1
- package/dist/auth/auth.module.d.ts.map +1 -1
- package/dist/auth/auth.module.js +2 -0
- package/dist/auth/auth.module.js.map +1 -1
- package/dist/auth/auth.service.d.ts +136 -4
- package/dist/auth/auth.service.d.ts.map +1 -1
- package/dist/auth/auth.service.js +246 -48
- package/dist/auth/auth.service.js.map +1 -1
- package/dist/auth/dto/confirm-email.dto.d.ts +4 -0
- package/dist/auth/dto/confirm-email.dto.d.ts.map +1 -0
- package/dist/auth/dto/confirm-email.dto.js +22 -0
- package/dist/auth/dto/confirm-email.dto.js.map +1 -0
- package/dist/auth/dto/resend-confirmation.dto.d.ts +8 -0
- package/dist/auth/dto/resend-confirmation.dto.d.ts.map +1 -0
- package/dist/auth/dto/resend-confirmation.dto.js +36 -0
- package/dist/auth/dto/resend-confirmation.dto.js.map +1 -0
- package/dist/authorize/authorize.controller.d.ts +1 -1
- package/dist/authorize/authorize.controller.d.ts.map +1 -1
- package/dist/authorize/authorize.controller.js +4 -2
- package/dist/authorize/authorize.controller.js.map +1 -1
- package/dist/authorize/authorize.service.d.ts +7 -0
- package/dist/authorize/authorize.service.d.ts.map +1 -1
- package/dist/authorize/authorize.service.js +1 -1
- package/dist/authorize/authorize.service.js.map +1 -1
- package/dist/challenge/challenge.service.d.ts +18 -5
- package/dist/challenge/challenge.service.d.ts.map +1 -1
- package/dist/challenge/challenge.service.js +50 -3
- package/dist/challenge/challenge.service.js.map +1 -1
- package/dist/core.module.d.ts.map +1 -1
- package/dist/core.module.js +17 -0
- package/dist/core.module.js.map +1 -1
- package/dist/dashboard/dashboard/dashboard.controller.d.ts +6 -6
- package/dist/dashboard/dashboard/dashboard.service.d.ts +6 -6
- package/dist/dashboard/dashboard-component/dashboard-component.controller.d.ts +4 -4
- package/dist/dashboard/dashboard-component/dashboard-component.service.d.ts +4 -4
- package/dist/dashboard/dashboard-component-role/dashboard-component-role.controller.d.ts +1 -1
- package/dist/dashboard/dashboard-component-role/dashboard-component-role.service.d.ts +1 -1
- package/dist/dashboard/dashboard-core/dashboard-core.controller.d.ts +2 -2
- package/dist/dashboard/dashboard-core/dashboard-core.service.d.ts +2 -2
- package/dist/dashboard/dashboard-item/dashboard-item.controller.d.ts +2 -2
- package/dist/dashboard/dashboard-item/dashboard-item.service.d.ts +2 -2
- package/dist/file/file.controller.d.ts +8 -1
- package/dist/file/file.controller.d.ts.map +1 -1
- package/dist/file/file.controller.js +45 -7
- package/dist/file/file.controller.js.map +1 -1
- package/dist/file/file.service.d.ts +128 -1
- package/dist/file/file.service.d.ts.map +1 -1
- package/dist/file/file.service.js +319 -8
- package/dist/file/file.service.js.map +1 -1
- package/dist/file/image-optimization.service.d.ts +43 -0
- package/dist/file/image-optimization.service.d.ts.map +1 -1
- package/dist/file/image-optimization.service.js +154 -0
- package/dist/file/image-optimization.service.js.map +1 -1
- package/dist/file/provider/abstract.provider.d.ts +16 -0
- package/dist/file/provider/abstract.provider.d.ts.map +1 -1
- package/dist/file/provider/abstract.provider.js +4 -0
- package/dist/file/provider/abstract.provider.js.map +1 -1
- package/dist/file/provider/gcs.provider.d.ts +2 -0
- package/dist/file/provider/gcs.provider.d.ts.map +1 -1
- package/dist/file/provider/gcs.provider.js +10 -0
- package/dist/file/provider/gcs.provider.js.map +1 -1
- package/dist/file/provider/local.provider.d.ts +1 -0
- package/dist/file/provider/local.provider.d.ts.map +1 -1
- package/dist/file/provider/local.provider.js +13 -0
- package/dist/file/provider/local.provider.js.map +1 -1
- package/dist/file/provider/s3.provider.d.ts +5 -0
- package/dist/file/provider/s3.provider.d.ts.map +1 -1
- package/dist/file/provider/s3.provider.js +15 -0
- package/dist/file/provider/s3.provider.js.map +1 -1
- package/dist/file/provider/spaces.provider.d.ts +5 -0
- package/dist/file/provider/spaces.provider.d.ts.map +1 -1
- package/dist/file/provider/spaces.provider.js +16 -0
- package/dist/file/provider/spaces.provider.js.map +1 -1
- package/dist/impersonation/dto/redeem-impersonation.dto.d.ts +4 -0
- package/dist/impersonation/dto/redeem-impersonation.dto.d.ts.map +1 -0
- package/dist/impersonation/dto/redeem-impersonation.dto.js +23 -0
- package/dist/impersonation/dto/redeem-impersonation.dto.js.map +1 -0
- package/dist/impersonation/dto/start-impersonation.dto.d.ts +7 -0
- package/dist/impersonation/dto/start-impersonation.dto.d.ts.map +1 -0
- package/dist/impersonation/dto/start-impersonation.dto.js +27 -0
- package/dist/impersonation/dto/start-impersonation.dto.js.map +1 -0
- package/dist/impersonation/impersonation-restrictions.d.ts +26 -0
- package/dist/impersonation/impersonation-restrictions.d.ts.map +1 -0
- package/dist/impersonation/impersonation-restrictions.js +76 -0
- package/dist/impersonation/impersonation-restrictions.js.map +1 -0
- package/dist/impersonation/impersonation.controller.d.ts +90 -0
- package/dist/impersonation/impersonation.controller.d.ts.map +1 -0
- package/dist/impersonation/impersonation.controller.js +135 -0
- package/dist/impersonation/impersonation.controller.js.map +1 -0
- package/dist/impersonation/impersonation.module.d.ts +8 -0
- package/dist/impersonation/impersonation.module.d.ts.map +1 -0
- package/dist/impersonation/impersonation.module.js +44 -0
- package/dist/impersonation/impersonation.module.js.map +1 -0
- package/dist/impersonation/impersonation.service.d.ts +164 -0
- package/dist/impersonation/impersonation.service.d.ts.map +1 -0
- package/dist/impersonation/impersonation.service.js +408 -0
- package/dist/impersonation/impersonation.service.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -1
- package/dist/integration/services/outbox-polling.coordinator.d.ts +2 -0
- package/dist/integration/services/outbox-polling.coordinator.d.ts.map +1 -1
- package/dist/integration/services/outbox-polling.coordinator.js +50 -30
- package/dist/integration/services/outbox-polling.coordinator.js.map +1 -1
- package/dist/integration/services/outbox.service.d.ts.map +1 -1
- package/dist/integration/services/outbox.service.js +5 -1
- package/dist/integration/services/outbox.service.js.map +1 -1
- package/dist/integration-profile/integration-profile.secrets.d.ts.map +1 -1
- package/dist/integration-profile/integration-profile.secrets.js +3 -0
- package/dist/integration-profile/integration-profile.secrets.js.map +1 -1
- package/dist/integration-profile/integration-profile.utils.d.ts +14 -0
- package/dist/integration-profile/integration-profile.utils.d.ts.map +1 -1
- package/dist/integration-profile/integration-profile.utils.js +26 -0
- package/dist/integration-profile/integration-profile.utils.js.map +1 -1
- package/dist/integration-profile/testers/email.testers.d.ts.map +1 -1
- package/dist/integration-profile/testers/email.testers.js +28 -0
- package/dist/integration-profile/testers/email.testers.js.map +1 -1
- package/dist/language/en.json +11 -0
- package/dist/language/pt.json +11 -0
- package/dist/mail/dto/send.dto.d.ts +38 -1
- package/dist/mail/dto/send.dto.d.ts.map +1 -1
- package/dist/mail/dto/send.dto.js +10 -0
- package/dist/mail/dto/send.dto.js.map +1 -1
- package/dist/mail/mail.controller.d.ts +1 -0
- package/dist/mail/mail.controller.d.ts.map +1 -1
- package/dist/mail/mail.module.d.ts.map +1 -1
- package/dist/mail/mail.module.js +2 -0
- package/dist/mail/mail.module.js.map +1 -1
- package/dist/mail/mail.service.d.ts +48 -4
- package/dist/mail/mail.service.d.ts.map +1 -1
- package/dist/mail/mail.service.js +187 -35
- package/dist/mail/mail.service.js.map +1 -1
- package/dist/mail-delivery/mail-delivery-provision.service.d.ts +21 -0
- package/dist/mail-delivery/mail-delivery-provision.service.d.ts.map +1 -0
- package/dist/mail-delivery/mail-delivery-provision.service.js +64 -0
- package/dist/mail-delivery/mail-delivery-provision.service.js.map +1 -0
- package/dist/mail-delivery/mail-delivery.constants.d.ts +17 -0
- package/dist/mail-delivery/mail-delivery.constants.d.ts.map +1 -0
- package/dist/mail-delivery/mail-delivery.constants.js +31 -0
- package/dist/mail-delivery/mail-delivery.constants.js.map +1 -0
- package/dist/mail-delivery/mail-delivery.controller.d.ts +19 -0
- package/dist/mail-delivery/mail-delivery.controller.d.ts.map +1 -0
- package/dist/mail-delivery/mail-delivery.controller.js +53 -0
- package/dist/mail-delivery/mail-delivery.controller.js.map +1 -0
- package/dist/mail-delivery/mail-delivery.module.d.ts +7 -0
- package/dist/mail-delivery/mail-delivery.module.d.ts.map +1 -0
- package/dist/mail-delivery/mail-delivery.module.js +36 -0
- package/dist/mail-delivery/mail-delivery.module.js.map +1 -0
- package/dist/mail-delivery/mail-delivery.service.d.ts +38 -0
- package/dist/mail-delivery/mail-delivery.service.d.ts.map +1 -0
- package/dist/mail-delivery/mail-delivery.service.js +140 -0
- package/dist/mail-delivery/mail-delivery.service.js.map +1 -0
- package/dist/mail-delivery/ses-event.parser.d.ts +27 -0
- package/dist/mail-delivery/ses-event.parser.d.ts.map +1 -0
- package/dist/mail-delivery/ses-event.parser.js +131 -0
- package/dist/mail-delivery/ses-event.parser.js.map +1 -0
- package/dist/mail-delivery/ses-webhook.service.d.ts +58 -0
- package/dist/mail-delivery/ses-webhook.service.d.ts.map +1 -0
- package/dist/mail-delivery/ses-webhook.service.js +214 -0
- package/dist/mail-delivery/ses-webhook.service.js.map +1 -0
- package/dist/mail-delivery/sns-message.util.d.ts +38 -0
- package/dist/mail-delivery/sns-message.util.d.ts.map +1 -0
- package/dist/mail-delivery/sns-message.util.js +109 -0
- package/dist/mail-delivery/sns-message.util.js.map +1 -0
- package/dist/mail-sent/dto/query-mail-sent-list.dto.d.ts +5 -0
- package/dist/mail-sent/dto/query-mail-sent-list.dto.d.ts.map +1 -1
- package/dist/mail-sent/dto/query-mail-sent-list.dto.js +6 -0
- package/dist/mail-sent/dto/query-mail-sent-list.dto.js.map +1 -1
- package/dist/mail-sent/mail-sent.controller.d.ts +39 -0
- package/dist/mail-sent/mail-sent.controller.d.ts.map +1 -1
- package/dist/mail-sent/mail-sent.service.d.ts +39 -0
- package/dist/mail-sent/mail-sent.service.d.ts.map +1 -1
- package/dist/mail-sent/mail-sent.service.js +45 -4
- package/dist/mail-sent/mail-sent.service.js.map +1 -1
- package/dist/mailbox/mailbox-fetcher.registry.d.ts +100 -0
- package/dist/mailbox/mailbox-fetcher.registry.d.ts.map +1 -0
- package/dist/mailbox/mailbox-fetcher.registry.js +59 -0
- package/dist/mailbox/mailbox-fetcher.registry.js.map +1 -0
- package/dist/mailbox/mailbox.module.d.ts +8 -0
- package/dist/mailbox/mailbox.module.d.ts.map +1 -0
- package/dist/mailbox/mailbox.module.js +27 -0
- package/dist/mailbox/mailbox.module.js.map +1 -0
- package/dist/meeting/meeting-provider.registry.d.ts +155 -0
- package/dist/meeting/meeting-provider.registry.d.ts.map +1 -0
- package/dist/meeting/meeting-provider.registry.js +53 -0
- package/dist/meeting/meeting-provider.registry.js.map +1 -0
- package/dist/meeting/meeting.constants.d.ts +47 -0
- package/dist/meeting/meeting.constants.d.ts.map +1 -0
- package/dist/meeting/meeting.constants.js +21 -0
- package/dist/meeting/meeting.constants.js.map +1 -0
- package/dist/meeting/meeting.module.d.ts +7 -0
- package/dist/meeting/meeting.module.d.ts.map +1 -0
- package/dist/meeting/meeting.module.js +26 -0
- package/dist/meeting/meeting.module.js.map +1 -0
- package/dist/middlewares/locale-injection.middleware.d.ts +12 -0
- package/dist/middlewares/locale-injection.middleware.d.ts.map +1 -1
- package/dist/middlewares/locale-injection.middleware.js +20 -4
- package/dist/middlewares/locale-injection.middleware.js.map +1 -1
- package/dist/oauth/providers/google.provider.d.ts +7 -0
- package/dist/oauth/providers/google.provider.d.ts.map +1 -1
- package/dist/oauth/providers/google.provider.js +43 -13
- package/dist/oauth/providers/google.provider.js.map +1 -1
- package/dist/observability/monitored-cron.d.ts +34 -0
- package/dist/observability/monitored-cron.d.ts.map +1 -0
- package/dist/observability/monitored-cron.js +118 -0
- package/dist/observability/monitored-cron.js.map +1 -0
- package/dist/pairing/dto/approve-reverse-pairing.dto.d.ts +12 -0
- package/dist/pairing/dto/approve-reverse-pairing.dto.d.ts.map +1 -0
- package/dist/pairing/dto/approve-reverse-pairing.dto.js +30 -0
- package/dist/pairing/dto/approve-reverse-pairing.dto.js.map +1 -0
- package/dist/pairing/dto/claim-pairing.dto.d.ts +11 -0
- package/dist/pairing/dto/claim-pairing.dto.d.ts.map +1 -0
- package/dist/pairing/dto/claim-pairing.dto.js +35 -0
- package/dist/pairing/dto/claim-pairing.dto.js.map +1 -0
- package/dist/pairing/dto/confirm-pairing.dto.d.ts +10 -0
- package/dist/pairing/dto/confirm-pairing.dto.d.ts.map +1 -0
- package/dist/pairing/dto/confirm-pairing.dto.js +24 -0
- package/dist/pairing/dto/confirm-pairing.dto.js.map +1 -0
- package/dist/pairing/dto/poll-reverse-pairing.dto.d.ts +5 -0
- package/dist/pairing/dto/poll-reverse-pairing.dto.d.ts.map +1 -0
- package/dist/pairing/dto/poll-reverse-pairing.dto.js +24 -0
- package/dist/pairing/dto/poll-reverse-pairing.dto.js.map +1 -0
- package/dist/pairing/dto/start-pairing.dto.d.ts +11 -0
- package/dist/pairing/dto/start-pairing.dto.d.ts.map +1 -0
- package/dist/pairing/dto/start-pairing.dto.js +30 -0
- package/dist/pairing/dto/start-pairing.dto.js.map +1 -0
- package/dist/pairing/dto/start-reverse-pairing.dto.d.ts +24 -0
- package/dist/pairing/dto/start-reverse-pairing.dto.d.ts.map +1 -0
- package/dist/pairing/dto/start-reverse-pairing.dto.js +47 -0
- package/dist/pairing/dto/start-reverse-pairing.dto.js.map +1 -0
- package/dist/pairing/pairing.controller.d.ts +118 -0
- package/dist/pairing/pairing.controller.d.ts.map +1 -0
- package/dist/pairing/pairing.controller.js +296 -0
- package/dist/pairing/pairing.controller.js.map +1 -0
- package/dist/pairing/pairing.module.d.ts +10 -0
- package/dist/pairing/pairing.module.d.ts.map +1 -0
- package/dist/pairing/pairing.module.js +40 -0
- package/dist/pairing/pairing.module.js.map +1 -0
- package/dist/pairing/pairing.service.d.ts +238 -0
- package/dist/pairing/pairing.service.d.ts.map +1 -0
- package/dist/pairing/pairing.service.js +495 -0
- package/dist/pairing/pairing.service.js.map +1 -0
- package/dist/pdf/pdf.service.d.ts +3 -6
- package/dist/pdf/pdf.service.d.ts.map +1 -1
- package/dist/pdf/pdf.service.js +8 -20
- package/dist/pdf/pdf.service.js.map +1 -1
- package/dist/profile/profile.controller.d.ts +11 -0
- package/dist/profile/profile.controller.d.ts.map +1 -1
- package/dist/profile/profile.service.d.ts +11 -0
- package/dist/profile/profile.service.d.ts.map +1 -1
- package/dist/profile/profile.service.js +20 -11
- package/dist/profile/profile.service.js.map +1 -1
- package/dist/redis/redis-pubsub.d.ts.map +1 -1
- package/dist/redis/redis-pubsub.js +44 -0
- package/dist/redis/redis-pubsub.js.map +1 -1
- package/dist/role/guards/role.guard.d.ts +5 -0
- package/dist/role/guards/role.guard.d.ts.map +1 -1
- package/dist/role/guards/role.guard.js +41 -39
- package/dist/role/guards/role.guard.js.map +1 -1
- package/dist/session/session.controller.d.ts +2 -0
- package/dist/session/session.controller.d.ts.map +1 -1
- package/dist/session/session.service.d.ts +39 -0
- package/dist/session/session.service.d.ts.map +1 -1
- package/dist/session/session.service.js +91 -8
- package/dist/session/session.service.js.map +1 -1
- package/dist/setting/brand-asset.service.d.ts +48 -0
- package/dist/setting/brand-asset.service.d.ts.map +1 -0
- package/dist/setting/brand-asset.service.js +130 -0
- package/dist/setting/brand-asset.service.js.map +1 -0
- package/dist/setting/setting.module.d.ts.map +1 -1
- package/dist/setting/setting.module.js +3 -2
- package/dist/setting/setting.module.js.map +1 -1
- package/dist/setting/setting.service.d.ts +33 -0
- package/dist/setting/setting.service.d.ts.map +1 -1
- package/dist/setting/setting.service.js +88 -0
- package/dist/setting/setting.service.js.map +1 -1
- package/dist/token/token.service.d.ts +23 -2
- package/dist/token/token.service.d.ts.map +1 -1
- package/dist/token/token.service.js +39 -4
- package/dist/token/token.service.js.map +1 -1
- package/dist/user/user.controller.d.ts +8 -22
- package/dist/user/user.controller.d.ts.map +1 -1
- package/dist/user/user.service.d.ts +44 -24
- package/dist/user/user.service.d.ts.map +1 -1
- package/dist/user/user.service.js +89 -6
- package/dist/user/user.service.js.map +1 -1
- package/dist/user-device/user-device.controller.d.ts +54 -0
- package/dist/user-device/user-device.controller.d.ts.map +1 -0
- package/dist/user-device/user-device.controller.js +103 -0
- package/dist/user-device/user-device.controller.js.map +1 -0
- package/dist/user-device/user-device.module.d.ts +3 -0
- package/dist/user-device/user-device.module.d.ts.map +1 -0
- package/dist/user-device/user-device.module.js +26 -0
- package/dist/user-device/user-device.module.js.map +1 -0
- package/dist/user-device/user-device.service.d.ts +71 -0
- package/dist/user-device/user-device.service.d.ts.map +1 -0
- package/dist/user-device/user-device.service.js +158 -0
- package/dist/user-device/user-device.service.js.map +1 -0
- package/dist/utils/device-key.d.ts +23 -0
- package/dist/utils/device-key.d.ts.map +1 -0
- package/dist/utils/device-key.js +31 -0
- package/dist/utils/device-key.js.map +1 -0
- package/dist/utils/geo-ip.d.ts +38 -0
- package/dist/utils/geo-ip.d.ts.map +1 -0
- package/dist/utils/geo-ip.js +122 -0
- package/dist/utils/geo-ip.js.map +1 -0
- package/dist/utils/locale-context.d.ts +10 -7
- package/dist/utils/locale-context.d.ts.map +1 -1
- package/dist/utils/locale-context.js +14 -8
- package/dist/utils/locale-context.js.map +1 -1
- package/dist/utils/security-event-vars.d.ts +56 -0
- package/dist/utils/security-event-vars.d.ts.map +1 -0
- package/dist/utils/security-event-vars.js +109 -0
- package/dist/utils/security-event-vars.js.map +1 -0
- package/dist/utils/user-agent.d.ts +19 -0
- package/dist/utils/user-agent.d.ts.map +1 -0
- package/dist/utils/user-agent.js +36 -0
- package/dist/utils/user-agent.js.map +1 -0
- package/dist/webhook-integration/webhook-integration.service.d.ts +5 -0
- package/dist/webhook-integration/webhook-integration.service.d.ts.map +1 -1
- package/dist/webhook-integration/webhook-integration.service.js +50 -4
- package/dist/webhook-integration/webhook-integration.service.js.map +1 -1
- package/dist/webhook-integration/webhook-protocol.registry.d.ts +6 -0
- package/dist/webhook-integration/webhook-protocol.registry.d.ts.map +1 -1
- package/dist/webhook-integration/webhook-protocol.registry.js.map +1 -1
- package/hedhog/data/integration_provider.yaml +9 -0
- package/hedhog/data/mail.yaml +198 -62
- package/hedhog/data/mail_layout.yaml +43 -33
- package/hedhog/data/menu.yaml +2 -0
- package/hedhog/data/role.yaml +16 -0
- package/hedhog/data/route.yaml +172 -3
- package/hedhog/data/setting_group.yaml +178 -2
- package/hedhog/data/setting_subgroup.yaml +8 -0
- package/hedhog/frontend/app/_lib/hooks/use-core-access.test.tsx.ejs +125 -0
- package/hedhog/frontend/app/_lib/hooks/use-core-access.ts.ejs +29 -0
- package/hedhog/frontend/app/_lib/hooks/use-impersonation-access.test.ts.ejs +71 -0
- package/hedhog/frontend/app/_lib/hooks/use-impersonation-access.ts.ejs +32 -0
- package/hedhog/frontend/app/access-log/page.tsx.ejs +96 -22
- package/hedhog/frontend/app/account/components/active-sessions.tsx.ejs +17 -1
- package/hedhog/frontend/app/account/components/known-devices.tsx.ejs +89 -0
- package/hedhog/frontend/app/account/components/profile-form.tsx.ejs +2 -1
- package/hedhog/frontend/app/account/components/user-devices-list.tsx.ejs +186 -0
- package/hedhog/frontend/app/account/devices/page.tsx.ejs +5 -0
- package/hedhog/frontend/app/account/layout.tsx.ejs +2 -0
- package/hedhog/frontend/app/configurations/[slug]/components/setting-field.test.tsx.ejs +298 -0
- package/hedhog/frontend/app/configurations/[slug]/components/setting-field.tsx.ejs +376 -1236
- package/hedhog/frontend/app/mail/log/page.tsx.ejs +210 -3
- package/hedhog/frontend/app/mail/template/page.tsx.ejs +190 -132
- package/hedhog/frontend/app/users/active-session.tsx.ejs +58 -11
- package/hedhog/frontend/app/users/page.tsx.ejs +69 -10
- package/hedhog/frontend/app/users/simulate-access-dialog.test.tsx.ejs +202 -0
- package/hedhog/frontend/app/users/simulate-access-dialog.tsx.ejs +170 -0
- package/hedhog/frontend/app/users/user-activity-timeline.tsx.ejs +19 -0
- package/hedhog/frontend/app/users/user-devices.tsx.ejs +89 -0
- package/hedhog/frontend/app/users/user-logs.tsx.ejs +13 -1
- package/hedhog/frontend/app/users/user-sheet.tsx.ejs +46 -24
- package/hedhog/frontend/messages/en.json +146 -48
- package/hedhog/frontend/messages/pt.json +146 -48
- package/hedhog/table/access_log.yaml +7 -0
- package/hedhog/table/file.yaml +8 -0
- package/hedhog/table/mail_delivery_event.yaml +76 -0
- package/hedhog/table/mail_sent.yaml +23 -0
- package/hedhog/table/user_activity.yaml +9 -0
- package/hedhog/table/user_device.yaml +52 -0
- package/hedhog/table/user_session.yaml +20 -1
- package/package.json +6 -5
- package/src/access-log/access-log.controller.ts +1 -0
- package/src/access-log/access-log.interceptor.ts +5 -1
- package/src/access-log/access-log.service.spec.ts +33 -2
- package/src/access-log/access-log.service.ts +38 -0
- package/src/access-log/dto/query-access-log.dto.ts +5 -0
- package/src/ai/ai.controller.ts +9 -0
- package/src/ai/ai.module.ts +3 -2
- package/src/ai/ai.service.ts +150 -13
- package/src/ai/dto/richtext-edit-html.dto.ts +11 -0
- package/src/ai/richtext-ai.prompts.ts +57 -0
- package/src/ai/richtext-ai.service.ts +109 -0
- package/src/auth/auth.controller.ts +47 -8
- package/src/auth/auth.module.ts +2 -0
- package/src/auth/auth.service.spec.ts +383 -6
- package/src/auth/auth.service.ts +345 -56
- package/src/auth/dto/confirm-email.dto.ts +7 -0
- package/src/auth/dto/resend-confirmation.dto.ts +20 -0
- package/src/authorize/authorize.controller.ts +2 -0
- package/src/authorize/authorize.service.spec.ts +23 -0
- package/src/authorize/authorize.service.ts +8 -0
- package/src/challenge/challenge.service.spec.ts +73 -0
- package/src/challenge/challenge.service.ts +62 -3
- package/src/core.module.ts +19 -0
- package/src/file/file.controller.ts +54 -4
- package/src/file/file.service.spec.ts +275 -105
- package/src/file/file.service.ts +409 -14
- package/src/file/image-optimization.service.spec.ts +92 -0
- package/src/file/image-optimization.service.ts +202 -0
- package/src/file/provider/abstract.provider.ts +23 -0
- package/src/file/provider/gcs.provider.ts +17 -0
- package/src/file/provider/local.provider.ts +21 -0
- package/src/file/provider/s3.provider.ts +25 -0
- package/src/file/provider/spaces.provider.ts +26 -0
- package/src/impersonation/dto/redeem-impersonation.dto.ts +8 -0
- package/src/impersonation/dto/start-impersonation.dto.ts +13 -0
- package/src/impersonation/impersonation-restrictions.ts +84 -0
- package/src/impersonation/impersonation.controller.ts +109 -0
- package/src/impersonation/impersonation.module.ts +31 -0
- package/src/impersonation/impersonation.service.spec.ts +427 -0
- package/src/impersonation/impersonation.service.ts +577 -0
- package/src/index.ts +21 -0
- package/src/integration/services/outbox-polling.coordinator.spec.ts +90 -0
- package/src/integration/services/outbox-polling.coordinator.ts +62 -40
- package/src/integration/services/outbox.service.spec.ts +8 -0
- package/src/integration/services/outbox.service.ts +19 -13
- package/src/integration-profile/integration-profile.secrets.ts +3 -0
- package/src/integration-profile/integration-profile.utils.ts +38 -0
- package/src/integration-profile/testers/email.testers.ts +34 -1
- package/src/language/en.json +11 -0
- package/src/language/pt.json +11 -0
- package/src/mail/dto/send.dto.ts +46 -2
- package/src/mail/mail-template.spec.ts +79 -2
- package/src/mail/mail.module.ts +2 -0
- package/src/mail/mail.service.spec.ts +307 -6
- package/src/mail/mail.service.ts +227 -30
- package/src/mail-delivery/mail-delivery-provision.service.ts +66 -0
- package/src/mail-delivery/mail-delivery.constants.ts +31 -0
- package/src/mail-delivery/mail-delivery.controller.ts +38 -0
- package/src/mail-delivery/mail-delivery.module.ts +23 -0
- package/src/mail-delivery/mail-delivery.service.spec.ts +136 -0
- package/src/mail-delivery/mail-delivery.service.ts +152 -0
- package/src/mail-delivery/ses-event.parser.spec.ts +140 -0
- package/src/mail-delivery/ses-event.parser.ts +191 -0
- package/src/mail-delivery/ses-webhook.service.spec.ts +170 -0
- package/src/mail-delivery/ses-webhook.service.ts +240 -0
- package/src/mail-delivery/sns-message.util.spec.ts +163 -0
- package/src/mail-delivery/sns-message.util.ts +125 -0
- package/src/mail-sent/dto/query-mail-sent-list.dto.ts +15 -0
- package/src/mail-sent/mail-sent.service.ts +46 -2
- package/src/mailbox/mailbox-fetcher.registry.ts +132 -0
- package/src/mailbox/mailbox.module.ts +14 -0
- package/src/meeting/meeting-provider.registry.ts +193 -0
- package/src/meeting/meeting.constants.ts +53 -0
- package/src/meeting/meeting.module.ts +13 -0
- package/src/middlewares/locale-injection.middleware.ts +25 -6
- package/src/oauth/providers/google.provider.ts +49 -15
- package/src/observability/monitored-cron.spec.ts +102 -0
- package/src/observability/monitored-cron.ts +110 -0
- package/src/pairing/dto/approve-reverse-pairing.dto.ts +20 -0
- package/src/pairing/dto/claim-pairing.dto.ts +19 -0
- package/src/pairing/dto/confirm-pairing.dto.ts +14 -0
- package/src/pairing/dto/poll-reverse-pairing.dto.ts +9 -0
- package/src/pairing/dto/start-pairing.dto.ts +19 -0
- package/src/pairing/dto/start-reverse-pairing.dto.ts +45 -0
- package/src/pairing/pairing.controller.ts +246 -0
- package/src/pairing/pairing.module.ts +27 -0
- package/src/pairing/pairing.service.spec.ts +462 -0
- package/src/pairing/pairing.service.ts +614 -0
- package/src/pdf/pdf.service.ts +6 -24
- package/src/profile/profile.service.ts +26 -8
- package/src/redis/redis-pubsub.ts +11 -0
- package/src/role/guards/role.guard.spec.ts +75 -0
- package/src/role/guards/role.guard.ts +64 -46
- package/src/session/session.service.spec.ts +81 -0
- package/src/session/session.service.ts +93 -6
- package/src/setting/brand-asset.service.ts +137 -0
- package/src/setting/setting.module.ts +3 -2
- package/src/setting/setting.service.spec.ts +79 -1
- package/src/setting/setting.service.ts +109 -1
- package/src/token/token.service.spec.ts +62 -0
- package/src/token/token.service.ts +57 -3
- package/src/user/user.service.spec.ts +33 -2
- package/src/user/user.service.ts +108 -6
- package/src/user-device/user-device.controller.ts +77 -0
- package/src/user-device/user-device.module.ts +13 -0
- package/src/user-device/user-device.service.spec.ts +234 -0
- package/src/user-device/user-device.service.ts +168 -0
- package/src/utils/device-key.spec.ts +57 -0
- package/src/utils/device-key.ts +32 -0
- package/src/utils/geo-ip.spec.ts +134 -0
- package/src/utils/geo-ip.ts +93 -0
- package/src/utils/locale-context.spec.ts +27 -1
- package/src/utils/locale-context.ts +15 -12
- package/src/utils/security-event-vars.spec.ts +161 -0
- package/src/utils/security-event-vars.ts +153 -0
- package/src/utils/user-agent.spec.ts +37 -0
- package/src/utils/user-agent.ts +46 -0
- package/src/webhook-integration/webhook-integration.service.ts +57 -3
- package/src/webhook-integration/webhook-protocol.registry.ts +6 -0
package/dist/language/pt.json
CHANGED
|
@@ -171,6 +171,17 @@
|
|
|
171
171
|
"not_found": "Modelo de e-mail com id {id} não encontrado."
|
|
172
172
|
}
|
|
173
173
|
},
|
|
174
|
+
"oauth": {
|
|
175
|
+
"callback": {
|
|
176
|
+
"codeRequired": "O código de autorização é obrigatório para concluir a autenticação.",
|
|
177
|
+
"invalidState": "O retorno da autenticação é inválido ou expirou. Inicie o login novamente.",
|
|
178
|
+
"invalidType": "Tipo de retorno de autenticação não suportado.",
|
|
179
|
+
"invalid": "O retorno da autenticação é inválido ou expirou. Inicie o login novamente.",
|
|
180
|
+
"alreadyProcessed": "Este retorno de autenticação já foi processado. Inicie o login novamente.",
|
|
181
|
+
"inProgress": "Este retorno de autenticação já está sendo processado. Aguarde um instante e tente novamente.",
|
|
182
|
+
"unavailable": "Não foi possível concluir a autenticação agora. Tente novamente."
|
|
183
|
+
}
|
|
184
|
+
},
|
|
174
185
|
"mail_sent_not_found": "Registro de e-mail enviado não encontrado.",
|
|
175
186
|
"validationSslugMustBeString": "O slug deve ser uma string.",
|
|
176
187
|
"sessionRevoked": "Sessão foi revogada ou expirou.",
|
|
@@ -7,7 +7,44 @@ export declare class SendTemplatedMailDTO {
|
|
|
7
7
|
* Quando ausente, vale o perfil global do setting `mail-integration-profile-id`.
|
|
8
8
|
*/
|
|
9
9
|
profileSlug?: string;
|
|
10
|
-
/**
|
|
10
|
+
/**
|
|
11
|
+
* Endereco para onde a resposta do destinatario deve voltar.
|
|
12
|
+
*
|
|
13
|
+
* Sem isto a resposta cai no `from` do perfil, que nao carrega nenhuma
|
|
14
|
+
* identificacao do assunto tratado. E o que permite ao SAC endereçar cada
|
|
15
|
+
* chamado (`<protocolo>@dominio-de-resposta`) e reconhecer a resposta na
|
|
16
|
+
* entrada.
|
|
17
|
+
*/
|
|
18
|
+
replyTo?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Chave do app de origem (ex.: "class"). Nao afeta mais a marca —
|
|
21
|
+
* `{{brandName}}` vem sempre de `system-name`.
|
|
22
|
+
*/
|
|
11
23
|
app?: string;
|
|
24
|
+
/**
|
|
25
|
+
* Destinatario, quando o chamador ja o conhece.
|
|
26
|
+
*
|
|
27
|
+
* Serve so para pular a busca do usuario pelo e-mail na hora de descobrir o
|
|
28
|
+
* idioma de preferencia; omitir nao muda o resultado.
|
|
29
|
+
*/
|
|
30
|
+
userId?: number;
|
|
12
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Resultado de `MailService.sendTemplatedMail`.
|
|
34
|
+
*
|
|
35
|
+
* `sent: false` cobre tanto o aborto por configuração ausente quanto qualquer
|
|
36
|
+
* falha do provedor: os dois são tratados internamente e não lançam, então o
|
|
37
|
+
* retorno é a única forma de o chamador saber que nada saiu.
|
|
38
|
+
*
|
|
39
|
+
* Deliberadamente um objeto único em vez de união discriminada: as libraries
|
|
40
|
+
* compilam com `strictNullChecks: false`, e nessa configuração o `if (r.sent)`
|
|
41
|
+
* não estreita a união no ponto de uso.
|
|
42
|
+
*/
|
|
43
|
+
export type SendTemplatedMailResult = {
|
|
44
|
+
sent: boolean;
|
|
45
|
+
/** Id devolvido pelo provedor quando `sent` é `true`. */
|
|
46
|
+
providerMessageId?: string | null;
|
|
47
|
+
reason?: 'mail-not-configured' | 'send-failed' | 'template-locale-missing';
|
|
48
|
+
error?: string;
|
|
49
|
+
};
|
|
13
50
|
//# sourceMappingURL=send.dto.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send.dto.d.ts","sourceRoot":"","sources":["../../../src/mail/dto/send.dto.ts"],"names":[],"mappings":"AAGA,qBAAa,oBAAoB;IAG/B,KAAK,EAAE,MAAM,CAAC;IAId,IAAI,EAAE,MAAM,CAAC;IAGb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAElC;;;OAGG;IAGH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,
|
|
1
|
+
{"version":3,"file":"send.dto.d.ts","sourceRoot":"","sources":["../../../src/mail/dto/send.dto.ts"],"names":[],"mappings":"AAGA,qBAAa,oBAAoB;IAG/B,KAAK,EAAE,MAAM,CAAC;IAId,IAAI,EAAE,MAAM,CAAC;IAGb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAElC;;;OAGG;IAGH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;;OAOG;IAGH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IAGH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;;;OAKG;IAGH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,MAAM,CAAC,EAAE,qBAAqB,GAAG,aAAa,GAAG,yBAAyB,CAAC;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC"}
|
|
@@ -34,9 +34,19 @@ __decorate([
|
|
|
34
34
|
(0, class_validator_1.IsString)({ message: (args) => (0, api_locale_1.getLocaleText)('validation.stringRequired', args.value) }),
|
|
35
35
|
__metadata("design:type", String)
|
|
36
36
|
], SendTemplatedMailDTO.prototype, "profileSlug", void 0);
|
|
37
|
+
__decorate([
|
|
38
|
+
(0, class_validator_1.IsOptional)(),
|
|
39
|
+
(0, class_validator_1.IsString)({ message: (args) => (0, api_locale_1.getLocaleText)('validation.stringRequired', args.value) }),
|
|
40
|
+
__metadata("design:type", String)
|
|
41
|
+
], SendTemplatedMailDTO.prototype, "replyTo", void 0);
|
|
37
42
|
__decorate([
|
|
38
43
|
(0, class_validator_1.IsOptional)(),
|
|
39
44
|
(0, class_validator_1.IsString)({ message: (args) => (0, api_locale_1.getLocaleText)('validation.stringRequired', args.value) }),
|
|
40
45
|
__metadata("design:type", String)
|
|
41
46
|
], SendTemplatedMailDTO.prototype, "app", void 0);
|
|
47
|
+
__decorate([
|
|
48
|
+
(0, class_validator_1.IsOptional)(),
|
|
49
|
+
(0, class_validator_1.IsNumber)({}, { message: (args) => (0, api_locale_1.getLocaleText)('validation.numberRequired', args.value) }),
|
|
50
|
+
__metadata("design:type", Number)
|
|
51
|
+
], SendTemplatedMailDTO.prototype, "userId", void 0);
|
|
42
52
|
//# sourceMappingURL=send.dto.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send.dto.js","sourceRoot":"","sources":["../../../src/mail/dto/send.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAAoD;AACpD,
|
|
1
|
+
{"version":3,"file":"send.dto.js","sourceRoot":"","sources":["../../../src/mail/dto/send.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAAoD;AACpD,qDAAuF;AAEvF,MAAa,oBAAoB;CAiDhC;AAjDD,oDAiDC;AA9CC;IAFC,IAAA,0BAAQ,EAAC,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,0BAAa,EAAC,2BAA2B,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IACvF,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,0BAAa,EAAC,0BAA0B,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;;mDAC3E;AAId;IAFC,IAAA,0BAAQ,EAAC,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,0BAAa,EAAC,2BAA2B,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IACvF,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,0BAAa,EAAC,0BAA0B,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;;kDAC5E;AAGb;IADC,IAAA,0BAAQ,EAAC,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,0BAAa,EAAC,2BAA2B,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;;uDACtD;AAQlC;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,EAAC,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,0BAAa,EAAC,2BAA2B,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;;yDACnE;AAYrB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,EAAC,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,0BAAa,EAAC,2BAA2B,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;;qDACvE;AAQjB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,EAAC,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,0BAAa,EAAC,2BAA2B,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;;iDAC3E;AAUb;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,EAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,0BAAa,EAAC,2BAA2B,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;;oDAC5E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mail.controller.d.ts","sourceRoot":"","sources":["../../src/mail/mail.controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAQ,MAAM,cAAc,CAAC;AAkB/C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,qBAEa,cAAc;IAGvB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,WAAW;IAIrC,IAAI,CAAW,MAAM,KAAA,EAAgB,gBAAgB,KAAA;;;;;;;;;IAKrD,GAAG,CACoB,EAAE,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,MAAM,EAC3B,eAAe,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;IAQ9B,OAAO,CACgB,EAAE,EAAE,MAAM,EAC9B,GAAG,EAAE,QAAQ,EACH,WAAW,CAAC,EAAE,MAAM,EAC3B,eAAe,CAAC,EAAE,MAAM;IAgB9B,OAAO,CAAW,eAAe,EAAE,MAAM,EAAU,IAAI,EAAE,UAAU,EAAmB,WAAW,CAAC,EAAE,MAAM;;;IAK1G,MAAM,CAAS,IAAI,EAAE,SAAS;;;;;;;;;;;;;;;;;;;;;;;IAK9B,YAAY
|
|
1
|
+
{"version":3,"file":"mail.controller.d.ts","sourceRoot":"","sources":["../../src/mail/mail.controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAQ,MAAM,cAAc,CAAC;AAkB/C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,qBAEa,cAAc;IAGvB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,WAAW;IAIrC,IAAI,CAAW,MAAM,KAAA,EAAgB,gBAAgB,KAAA;;;;;;;;;IAKrD,GAAG,CACoB,EAAE,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,MAAM,EAC3B,eAAe,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;IAQ9B,OAAO,CACgB,EAAE,EAAE,MAAM,EAC9B,GAAG,EAAE,QAAQ,EACH,WAAW,CAAC,EAAE,MAAM,EAC3B,eAAe,CAAC,EAAE,MAAM;IAgB9B,OAAO,CAAW,eAAe,EAAE,MAAM,EAAU,IAAI,EAAE,UAAU,EAAmB,WAAW,CAAC,EAAE,MAAM;;;IAK1G,MAAM,CAAS,IAAI,EAAE,SAAS;;;;;;;;;;;;;;;;;;;;;;;IAK9B,YAAY;;;;;;;IAKZ,MAAM,CAA4B,EAAE,EAAE,MAAM,EAAU,IAAI,EAAE,SAAS;;;;;;;;;;;;;;;;;;;;;;;IAQrE,MAAM,CAAS,IAAI,EAAE,SAAS;;;IAK9B,YAAY,CAAW,MAAM,EAAE,MAAM,EAAU,IAAI,EAAE,WAAW;IAKhE,MAAM,CAAS,IAAI,EAAE,SAAS;;;;;;;;;;;CAGrC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mail.module.d.ts","sourceRoot":"","sources":["../../src/mail/mail.module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mail.module.d.ts","sourceRoot":"","sources":["../../src/mail/mail.module.ts"],"names":[],"mappings":"AAWA,qBA6Fa,UAAU;CAAI"}
|
package/dist/mail/mail.module.js
CHANGED
|
@@ -12,6 +12,7 @@ const api_mail_1 = require("@hed-hog/api-mail");
|
|
|
12
12
|
const api_pagination_1 = require("@hed-hog/api-pagination");
|
|
13
13
|
const api_prisma_1 = require("@hed-hog/api-prisma");
|
|
14
14
|
const common_1 = require("@nestjs/common");
|
|
15
|
+
const config_1 = require("@nestjs/config");
|
|
15
16
|
const mail_sent_module_1 = require("../mail-sent/mail-sent.module");
|
|
16
17
|
const setting_module_1 = require("../setting/setting.module");
|
|
17
18
|
const mail_controller_1 = require("./mail.controller");
|
|
@@ -97,6 +98,7 @@ exports.MailModule = MailModule = __decorate([
|
|
|
97
98
|
(0, common_1.forwardRef)(() => api_pagination_1.PaginationModule),
|
|
98
99
|
(0, common_1.forwardRef)(() => api_locale_1.LocaleModule),
|
|
99
100
|
(0, common_1.forwardRef)(() => setting_module_1.SettingModule),
|
|
101
|
+
config_1.ConfigModule,
|
|
100
102
|
],
|
|
101
103
|
controllers: [mail_controller_1.MailController],
|
|
102
104
|
providers: [mail_service_1.MailService],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mail.module.js","sourceRoot":"","sources":["../../src/mail/mail.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,oDAAmD;AACnD,gDAAoF;AACpF,4DAA2D;AAC3D,oDAAkE;AAClE,2CAAoD;AACpD,oEAA+D;AAC/D,8DAA0D;AAC1D,uDAAmD;AACnD,iDAA6C;
|
|
1
|
+
{"version":3,"file":"mail.module.js","sourceRoot":"","sources":["../../src/mail/mail.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,14 +5,16 @@ import { PaginationDTO } from '@hed-hog/api-pagination';
|
|
|
5
5
|
import { PrismaService } from '@hed-hog/api-prisma';
|
|
6
6
|
import { OnModuleInit } from '@nestjs/common';
|
|
7
7
|
import { IntegrationDeveloperApiService } from '../integration/services/integration-developer-api.service';
|
|
8
|
+
import { BrandAssetService } from '../setting/brand-asset.service';
|
|
8
9
|
import { SettingService } from '../setting/setting.service';
|
|
9
10
|
import { CreateDTO } from './dto/create.dto';
|
|
10
11
|
import { ImportDTO } from './dto/import.dto';
|
|
11
12
|
import { PreviewDTO } from './dto/preview.dto';
|
|
12
|
-
import { SendTemplatedMailDTO } from './dto/send.dto';
|
|
13
|
+
import { SendTemplatedMailDTO, SendTemplatedMailResult } from './dto/send.dto';
|
|
13
14
|
import { TestMailDTO } from './dto/test-mail.dto';
|
|
14
15
|
import { UpdateDTO } from './dto/update.dto';
|
|
15
16
|
import { IncidentService } from '../incident/incident.service';
|
|
17
|
+
export type { SendTemplatedMailResult } from './dto/send.dto';
|
|
16
18
|
export declare class MailService implements OnModuleInit {
|
|
17
19
|
private readonly prismaService;
|
|
18
20
|
private readonly mailMainService;
|
|
@@ -20,13 +22,22 @@ export declare class MailService implements OnModuleInit {
|
|
|
20
22
|
private readonly setting;
|
|
21
23
|
private readonly integrationApi;
|
|
22
24
|
private readonly incident;
|
|
25
|
+
private readonly brandAsset;
|
|
23
26
|
private readonly logger;
|
|
24
27
|
private readonly modelName;
|
|
25
28
|
private readonly integrationProfileSettingSlug;
|
|
26
|
-
constructor(prismaService: PrismaService, mailMainService: MailMainService, localeService: LocaleService, setting: SettingService, integrationApi: IntegrationDeveloperApiService, incident: IncidentService);
|
|
29
|
+
constructor(prismaService: PrismaService, mailMainService: MailMainService, localeService: LocaleService, setting: SettingService, integrationApi: IntegrationDeveloperApiService, incident: IncidentService, brandAsset: BrandAssetService);
|
|
27
30
|
onModuleInit(): void;
|
|
31
|
+
/** Settings que compoem o cabecalho do e-mail resolvido em `resolveLayout`. */
|
|
32
|
+
private static readonly BRAND_SLUGS;
|
|
28
33
|
private isMailConfigSlug;
|
|
29
34
|
private isSettingEnabled;
|
|
35
|
+
/**
|
|
36
|
+
* Cor de marca (`theme-primary-light`) e seu contraste (`theme-primary-foreground-light`),
|
|
37
|
+
* disponibilizadas como `{{primaryColor}}`/`{{primaryForeground}}` no corpo Handlebars dos
|
|
38
|
+
* templates (ex.: o botao de CTA de um convite) e no layout base do e-mail.
|
|
39
|
+
*/
|
|
40
|
+
private getThemeVariables;
|
|
30
41
|
private syncConfiguredMailFlag;
|
|
31
42
|
/**
|
|
32
43
|
* Reload mail configuration from database and update MailMainService.
|
|
@@ -38,6 +49,7 @@ export declare class MailService implements OnModuleInit {
|
|
|
38
49
|
success: boolean;
|
|
39
50
|
provider: string;
|
|
40
51
|
from: string;
|
|
52
|
+
replyTo?: string;
|
|
41
53
|
config: any;
|
|
42
54
|
}>;
|
|
43
55
|
/**
|
|
@@ -129,8 +141,40 @@ export declare class MailService implements OnModuleInit {
|
|
|
129
141
|
delete({ ids }: DeleteDTO): Promise<{
|
|
130
142
|
count: number;
|
|
131
143
|
}>;
|
|
132
|
-
|
|
133
|
-
|
|
144
|
+
/**
|
|
145
|
+
* Continua sem lancar: ha dezenas de call sites que disparam e-mail sem
|
|
146
|
+
* `await`, e transformar isto em excecao derrubaria fluxos que hoje so perdem
|
|
147
|
+
* a notificacao. O que muda e o *retorno* - quem se importa (a fila do SAC,
|
|
148
|
+
* por exemplo) agora consegue distinguir enviado de engolido, em vez de
|
|
149
|
+
* assumir sucesso porque a promise resolveu.
|
|
150
|
+
*/
|
|
151
|
+
sendTemplatedMail(locale: string, { email, slug, variables, profileSlug, replyTo, app, userId }: SendTemplatedMailDTO): Promise<SendTemplatedMailResult>;
|
|
152
|
+
/**
|
|
153
|
+
* Idioma em que ESTE destinatario deve receber o e-mail.
|
|
154
|
+
*
|
|
155
|
+
* Publico porque quem pre-formata variaveis antes de enviar (data e pais do
|
|
156
|
+
* alerta de seguranca) precisa do mesmo idioma que o corpo, senao o texto sai
|
|
157
|
+
* em portugues com a data em ingles. E idempotente: chamar aqui e passar o
|
|
158
|
+
* resultado como `locale` no envio da no mesmo lugar.
|
|
159
|
+
*
|
|
160
|
+
* Ordem:
|
|
161
|
+
* 1. preferencia gravada do destinatario - escolha explicita sempre vence;
|
|
162
|
+
* 2. locale do chamador, se o cliente realmente declarou um idioma;
|
|
163
|
+
* 3. setting global `language`;
|
|
164
|
+
* 4. `en`.
|
|
165
|
+
*/
|
|
166
|
+
resolveRecipientLocale(email: string, callerLocale?: string | null, userId?: number): Promise<string>;
|
|
167
|
+
/** `user_identifier` tem unique (type, value), entao e busca por indice. */
|
|
168
|
+
private findUserIdByEmail;
|
|
169
|
+
/**
|
|
170
|
+
* Escolhe a traducao do template, caindo para o que existir.
|
|
171
|
+
*
|
|
172
|
+
* O filtro por locale ficava na propria query e `mail_locale[0]` era acessado
|
|
173
|
+
* sem checagem: template sem a traducao pedida virava TypeError silencioso.
|
|
174
|
+
* Trazendo todas as traducoes numa query so, a escolha vira decisao explicita
|
|
175
|
+
* - e o `locale.findUnique` que estourava com `pt-BR` deixa de ser preciso.
|
|
176
|
+
*/
|
|
177
|
+
private pickTranslation;
|
|
134
178
|
private getMailTemplate;
|
|
135
179
|
private interpolateTemplate;
|
|
136
180
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mail.service.d.ts","sourceRoot":"","sources":["../../src/mail/mail.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,
|
|
1
|
+
{"version":3,"file":"mail.service.d.ts","sourceRoot":"","sources":["../../src/mail/mail.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,16 +54,18 @@ const common_1 = require("@nestjs/common");
|
|
|
54
54
|
const Handlebars = __importStar(require("handlebars"));
|
|
55
55
|
const integration_profile_utils_1 = require("../integration-profile/integration-profile.utils");
|
|
56
56
|
const integration_developer_api_service_1 = require("../integration/services/integration-developer-api.service");
|
|
57
|
+
const brand_asset_service_1 = require("../setting/brand-asset.service");
|
|
57
58
|
const setting_service_1 = require("../setting/setting.service");
|
|
58
59
|
const incident_service_1 = require("../incident/incident.service");
|
|
59
60
|
let MailService = MailService_1 = class MailService {
|
|
60
|
-
constructor(prismaService, mailMainService, localeService, setting, integrationApi, incident) {
|
|
61
|
+
constructor(prismaService, mailMainService, localeService, setting, integrationApi, incident, brandAsset) {
|
|
61
62
|
this.prismaService = prismaService;
|
|
62
63
|
this.mailMainService = mailMainService;
|
|
63
64
|
this.localeService = localeService;
|
|
64
65
|
this.setting = setting;
|
|
65
66
|
this.integrationApi = integrationApi;
|
|
66
67
|
this.incident = incident;
|
|
68
|
+
this.brandAsset = brandAsset;
|
|
67
69
|
this.logger = new common_1.Logger(MailService_1.name);
|
|
68
70
|
this.modelName = 'mail';
|
|
69
71
|
this.integrationProfileSettingSlug = 'mail-integration-profile-id';
|
|
@@ -76,6 +78,12 @@ let MailService = MailService_1 = class MailService {
|
|
|
76
78
|
handler: async (event) => {
|
|
77
79
|
var _a;
|
|
78
80
|
const slug = String(((_a = event.payload) === null || _a === void 0 ? void 0 : _a.slug) || '').trim();
|
|
81
|
+
// O layout resolvido (logo, cores, nome) fica ate 60s em cache no
|
|
82
|
+
// api-mail. Sem descartar aqui, "subi o logo e mandei um teste" - o
|
|
83
|
+
// fluxo natural de validacao - mostraria o valor antigo.
|
|
84
|
+
if (MailService_1.BRAND_SLUGS.has(slug)) {
|
|
85
|
+
this.mailMainService.invalidateLayoutCache();
|
|
86
|
+
}
|
|
79
87
|
if (!this.isMailConfigSlug(slug)) {
|
|
80
88
|
return;
|
|
81
89
|
}
|
|
@@ -89,6 +97,22 @@ let MailService = MailService_1 = class MailService {
|
|
|
89
97
|
isSettingEnabled(value) {
|
|
90
98
|
return value === true || value === 'true';
|
|
91
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Cor de marca (`theme-primary-light`) e seu contraste (`theme-primary-foreground-light`),
|
|
102
|
+
* disponibilizadas como `{{primaryColor}}`/`{{primaryForeground}}` no corpo Handlebars dos
|
|
103
|
+
* templates (ex.: o botao de CTA de um convite) e no layout base do e-mail.
|
|
104
|
+
*/
|
|
105
|
+
async getThemeVariables() {
|
|
106
|
+
const settings = await this.setting.getSettingValues([
|
|
107
|
+
'theme-primary-light',
|
|
108
|
+
'theme-primary-foreground-light',
|
|
109
|
+
]);
|
|
110
|
+
return {
|
|
111
|
+
primaryColor: settings['theme-primary-light'] || api_mail_1.DEFAULT_PRIMARY_COLOR,
|
|
112
|
+
primaryForeground: settings['theme-primary-foreground-light'] ||
|
|
113
|
+
api_mail_1.DEFAULT_PRIMARY_FOREGROUND,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
92
116
|
async syncConfiguredMailFlag() {
|
|
93
117
|
var _a;
|
|
94
118
|
try {
|
|
@@ -151,7 +175,8 @@ let MailService = MailService_1 = class MailService {
|
|
|
151
175
|
this.mailMainService.setConfig(config);
|
|
152
176
|
this.logger.log(`Mail configuration reloaded from profile "${profile.name}" (${providerSlug})`);
|
|
153
177
|
const from = (0, integration_profile_utils_1.getFromAddress)(profile.config);
|
|
154
|
-
|
|
178
|
+
const replyTo = (0, integration_profile_utils_1.getReplyToAddress)(profile.config);
|
|
179
|
+
return { success: true, provider: providerSlug, from, replyTo, config };
|
|
155
180
|
}
|
|
156
181
|
catch (error) {
|
|
157
182
|
this.logger.error('Error reloading mail configuration:', error);
|
|
@@ -344,7 +369,15 @@ let MailService = MailService_1 = class MailService {
|
|
|
344
369
|
},
|
|
345
370
|
});
|
|
346
371
|
}
|
|
347
|
-
|
|
372
|
+
/**
|
|
373
|
+
* Continua sem lancar: ha dezenas de call sites que disparam e-mail sem
|
|
374
|
+
* `await`, e transformar isto em excecao derrubaria fluxos que hoje so perdem
|
|
375
|
+
* a notificacao. O que muda e o *retorno* - quem se importa (a fila do SAC,
|
|
376
|
+
* por exemplo) agora consegue distinguir enviado de engolido, em vez de
|
|
377
|
+
* assumir sucesso porque a promise resolveu.
|
|
378
|
+
*/
|
|
379
|
+
async sendTemplatedMail(locale, { email, slug, variables, profileSlug, replyTo, app, userId }) {
|
|
380
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
348
381
|
const settings = await this.setting.getSettingValues(['configured-mail']);
|
|
349
382
|
if (!this.isSettingEnabled(settings['configured-mail'])) {
|
|
350
383
|
this.logger.warn('Mail service is not configured. Aborting sending email.');
|
|
@@ -357,26 +390,48 @@ let MailService = MailService_1 = class MailService {
|
|
|
357
390
|
message: 'Envio de e-mail abortado: a configuracao de e-mail nao esta ativa.',
|
|
358
391
|
context: { slug },
|
|
359
392
|
});
|
|
360
|
-
return;
|
|
393
|
+
return { sent: false, reason: 'mail-not-configured' };
|
|
361
394
|
}
|
|
362
395
|
try {
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
const
|
|
368
|
-
const
|
|
396
|
+
// O `replyTo` do perfil de integracao entra como padrao para que a
|
|
397
|
+
// resposta de quem trata o e-mail transacional como conversa caia numa
|
|
398
|
+
// caixa monitorada, e nao no remetente. Quem passa `replyTo` no DTO
|
|
399
|
+
// continua mandando.
|
|
400
|
+
const { from, replyTo: profileReplyTo } = await this.reloadConfig(profileSlug);
|
|
401
|
+
const resolvedReplyTo = (replyTo === null || replyTo === void 0 ? void 0 : replyTo.trim()) || profileReplyTo;
|
|
402
|
+
const recipientLocale = await this.resolveRecipientLocale(email, locale, userId);
|
|
403
|
+
const mail = await this.getMailTemplate(slug);
|
|
404
|
+
const translation = this.pickTranslation(mail, recipientLocale);
|
|
405
|
+
if (!translation) {
|
|
406
|
+
// Antes isto era um TypeError em `mail_locale[0]`, engolido pelo catch
|
|
407
|
+
// abaixo e reportado como `send-failed` - um template sem traducao
|
|
408
|
+
// nenhuma parecia falha do provedor.
|
|
409
|
+
this.logger.error(`Template "${slug}" has no translation available.`);
|
|
410
|
+
this.incident.record({
|
|
411
|
+
source: 'core.mail',
|
|
412
|
+
code: 'mail_template_no_locale',
|
|
413
|
+
severity: 'critical',
|
|
414
|
+
message: `Template "${slug}" nao tem nenhuma traducao cadastrada.`,
|
|
415
|
+
key: slug,
|
|
416
|
+
context: { slug, locale: recipientLocale },
|
|
417
|
+
});
|
|
418
|
+
return { sent: false, reason: 'template-locale-missing' };
|
|
419
|
+
}
|
|
420
|
+
const { subject, body, code: templateLocale } = translation;
|
|
421
|
+
const brandName = await this.mailMainService.getBrandName(app, templateLocale);
|
|
422
|
+
const { primaryColor, primaryForeground } = await this.getThemeVariables();
|
|
423
|
+
const mergedVariables = Object.assign({ brandName, primaryColor, primaryForeground }, variables);
|
|
369
424
|
const parsedSubject = this.interpolateTemplate(subject, mergedVariables);
|
|
370
425
|
const parsedBody = this.interpolateTemplate(body, mergedVariables);
|
|
371
|
-
await this.mailMainService.send({
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
}
|
|
426
|
+
const sendResult = await this.mailMainService.send(Object.assign(Object.assign({ to: email, from }, (resolvedReplyTo ? { replyTo: resolvedReplyTo } : {})), { subject: parsedSubject, body: parsedBody, mail_id: mail.id,
|
|
427
|
+
// O layout (header/footer) e escolhido por este locale la no api-mail,
|
|
428
|
+
// entao tem que ser o do template escolhido, nao o cru do request.
|
|
429
|
+
locale: templateLocale, app }));
|
|
430
|
+
const providerMessageId = (_g = (_d = (_b = (_a = sendResult === null || sendResult === void 0 ? void 0 : sendResult.result) === null || _a === void 0 ? void 0 : _a.MessageId) !== null && _b !== void 0 ? _b : (_c = sendResult === null || sendResult === void 0 ? void 0 : sendResult.result) === null || _c === void 0 ? void 0 : _c.messageId) !== null && _d !== void 0 ? _d : (_f = (_e = sendResult === null || sendResult === void 0 ? void 0 : sendResult.result) === null || _e === void 0 ? void 0 : _e.data) === null || _f === void 0 ? void 0 : _f.id) !== null && _g !== void 0 ? _g : null;
|
|
431
|
+
return {
|
|
432
|
+
sent: true,
|
|
433
|
+
providerMessageId: providerMessageId ? String(providerMessageId) : null,
|
|
434
|
+
};
|
|
380
435
|
}
|
|
381
436
|
catch (error) {
|
|
382
437
|
this.logger.error('Error sending templated mail:', error);
|
|
@@ -389,24 +444,95 @@ let MailService = MailService_1 = class MailService {
|
|
|
389
444
|
key: slug,
|
|
390
445
|
context: { slug, locale },
|
|
391
446
|
});
|
|
447
|
+
return {
|
|
448
|
+
sent: false,
|
|
449
|
+
reason: 'send-failed',
|
|
450
|
+
error: error instanceof Error ? error.message : String(error),
|
|
451
|
+
};
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
/**
|
|
455
|
+
* Idioma em que ESTE destinatario deve receber o e-mail.
|
|
456
|
+
*
|
|
457
|
+
* Publico porque quem pre-formata variaveis antes de enviar (data e pais do
|
|
458
|
+
* alerta de seguranca) precisa do mesmo idioma que o corpo, senao o texto sai
|
|
459
|
+
* em portugues com a data em ingles. E idempotente: chamar aqui e passar o
|
|
460
|
+
* resultado como `locale` no envio da no mesmo lugar.
|
|
461
|
+
*
|
|
462
|
+
* Ordem:
|
|
463
|
+
* 1. preferencia gravada do destinatario - escolha explicita sempre vence;
|
|
464
|
+
* 2. locale do chamador, se o cliente realmente declarou um idioma;
|
|
465
|
+
* 3. setting global `language`;
|
|
466
|
+
* 4. `en`.
|
|
467
|
+
*/
|
|
468
|
+
async resolveRecipientLocale(email, callerLocale, userId) {
|
|
469
|
+
var _a, _b;
|
|
470
|
+
try {
|
|
471
|
+
const recipientId = userId !== null && userId !== void 0 ? userId : (await this.findUserIdByEmail(email));
|
|
472
|
+
const resolved = await this.setting.resolveUserLocale(recipientId);
|
|
473
|
+
// A cadeia do `SettingService` usa o locale do CONTEXTO da requisicao.
|
|
474
|
+
// Quase sempre e o mesmo que chegou aqui, mas ha envios fora de request
|
|
475
|
+
// (fila, cron) e chamadores que passam um locale proprio: nesses, o
|
|
476
|
+
// `callerLocale` e a unica pista que existe.
|
|
477
|
+
if (resolved !== 'en') {
|
|
478
|
+
return resolved;
|
|
479
|
+
}
|
|
480
|
+
return (_a = (0, api_locale_1.normalizeLocaleCode)(callerLocale)) !== null && _a !== void 0 ? _a : resolved;
|
|
481
|
+
}
|
|
482
|
+
catch (error) {
|
|
483
|
+
this.logger.warn(`Falling back to caller locale while resolving recipient language: ${error}`);
|
|
484
|
+
return (_b = (0, api_locale_1.normalizeLocaleCode)(callerLocale)) !== null && _b !== void 0 ? _b : 'en';
|
|
392
485
|
}
|
|
393
486
|
}
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
487
|
+
/** `user_identifier` tem unique (type, value), entao e busca por indice. */
|
|
488
|
+
async findUserIdByEmail(email) {
|
|
489
|
+
var _a;
|
|
490
|
+
const value = String(email !== null && email !== void 0 ? email : '').trim();
|
|
491
|
+
if (!value) {
|
|
492
|
+
return null;
|
|
493
|
+
}
|
|
494
|
+
const identifier = await this.prismaService.user_identifier.findFirst({
|
|
495
|
+
where: { type: 'email', value },
|
|
496
|
+
select: { user_id: true },
|
|
397
497
|
});
|
|
398
|
-
|
|
399
|
-
|
|
498
|
+
return (_a = identifier === null || identifier === void 0 ? void 0 : identifier.user_id) !== null && _a !== void 0 ? _a : null;
|
|
499
|
+
}
|
|
500
|
+
/**
|
|
501
|
+
* Escolhe a traducao do template, caindo para o que existir.
|
|
502
|
+
*
|
|
503
|
+
* O filtro por locale ficava na propria query e `mail_locale[0]` era acessado
|
|
504
|
+
* sem checagem: template sem a traducao pedida virava TypeError silencioso.
|
|
505
|
+
* Trazendo todas as traducoes numa query so, a escolha vira decisao explicita
|
|
506
|
+
* - e o `locale.findUnique` que estourava com `pt-BR` deixa de ser preciso.
|
|
507
|
+
*/
|
|
508
|
+
pickTranslation(mail, requested) {
|
|
509
|
+
var _a, _b, _c, _d;
|
|
510
|
+
const translations = ((_a = mail === null || mail === void 0 ? void 0 : mail.mail_locale) !== null && _a !== void 0 ? _a : [])
|
|
511
|
+
.map((item) => {
|
|
512
|
+
var _a;
|
|
513
|
+
return ({
|
|
514
|
+
subject: item === null || item === void 0 ? void 0 : item.subject,
|
|
515
|
+
body: item === null || item === void 0 ? void 0 : item.body,
|
|
516
|
+
code: (_a = item === null || item === void 0 ? void 0 : item.locale) === null || _a === void 0 ? void 0 : _a.code,
|
|
517
|
+
});
|
|
518
|
+
})
|
|
519
|
+
.filter((item) => item.code && item.subject != null && item.body != null);
|
|
520
|
+
if (!translations.length) {
|
|
521
|
+
return null;
|
|
400
522
|
}
|
|
401
|
-
|
|
523
|
+
const byCode = (code) => translations.find((item) => item.code === code);
|
|
524
|
+
return (_d = (_c = (_b = byCode(requested)) !== null && _b !== void 0 ? _b : byCode('pt')) !== null && _c !== void 0 ? _c : byCode('en')) !== null && _d !== void 0 ? _d : translations[0];
|
|
402
525
|
}
|
|
403
|
-
async getMailTemplate(slug
|
|
526
|
+
async getMailTemplate(slug) {
|
|
404
527
|
const mail = await this.prismaService.mail.findUnique({
|
|
405
528
|
where: { slug },
|
|
406
529
|
include: {
|
|
407
530
|
mail_locale: {
|
|
408
|
-
|
|
409
|
-
|
|
531
|
+
select: {
|
|
532
|
+
subject: true,
|
|
533
|
+
body: true,
|
|
534
|
+
locale: { select: { code: true } },
|
|
535
|
+
},
|
|
410
536
|
},
|
|
411
537
|
mail_var: {
|
|
412
538
|
select: { name: true },
|
|
@@ -414,7 +540,7 @@ let MailService = MailService_1 = class MailService {
|
|
|
414
540
|
},
|
|
415
541
|
});
|
|
416
542
|
if (!mail) {
|
|
417
|
-
throw new Error(`Template "${slug}" not found
|
|
543
|
+
throw new Error(`Template "${slug}" not found`);
|
|
418
544
|
}
|
|
419
545
|
return mail;
|
|
420
546
|
}
|
|
@@ -467,9 +593,21 @@ let MailService = MailService_1 = class MailService {
|
|
|
467
593
|
*/
|
|
468
594
|
async preview(locale, { subject, body, variables, use_layout, layout }) {
|
|
469
595
|
var _a, _b, _c;
|
|
470
|
-
const settings = await this.setting.getSettingValues([
|
|
596
|
+
const settings = await this.setting.getSettingValues([
|
|
597
|
+
'system-name',
|
|
598
|
+
'theme-primary-light',
|
|
599
|
+
'theme-primary-foreground-light',
|
|
600
|
+
'image-url',
|
|
601
|
+
]);
|
|
471
602
|
const brandName = settings['system-name'];
|
|
472
|
-
const
|
|
603
|
+
const primaryColor = settings['theme-primary-light'] || api_mail_1.DEFAULT_PRIMARY_COLOR;
|
|
604
|
+
const primaryForeground = settings['theme-primary-foreground-light'] ||
|
|
605
|
+
api_mail_1.DEFAULT_PRIMARY_FOREGROUND;
|
|
606
|
+
const rawLogoUrl = settings['image-url'];
|
|
607
|
+
const logoUrl = rawLogoUrl
|
|
608
|
+
? (await this.brandAsset.resolveAssetUrl(rawLogoUrl)) || undefined
|
|
609
|
+
: undefined;
|
|
610
|
+
const data = Object.assign({ brandName, primaryColor, primaryForeground }, (variables || {}));
|
|
473
611
|
const parsedSubject = subject ? this.interpolateTemplate(subject, data) : '';
|
|
474
612
|
const parsedBody = body ? this.interpolateTemplate(body, data) : '';
|
|
475
613
|
let resolvedLayout = null;
|
|
@@ -489,13 +627,15 @@ let MailService = MailService_1 = class MailService {
|
|
|
489
627
|
// devolver o corpo cru.
|
|
490
628
|
layout: use_layout === false ? { wrapper: '' } : resolvedLayout,
|
|
491
629
|
brandName,
|
|
630
|
+
primaryColor,
|
|
631
|
+
primaryForeground,
|
|
632
|
+
logoUrl,
|
|
492
633
|
lang: locale,
|
|
493
634
|
});
|
|
494
635
|
return { html };
|
|
495
636
|
}
|
|
496
637
|
async sendTestMail(locale, { slug, email, subject, body, variables, }) {
|
|
497
|
-
const
|
|
498
|
-
const mail = await this.getMailTemplate(slug, localeRecord.id);
|
|
638
|
+
const mail = await this.getMailTemplate(slug);
|
|
499
639
|
const settings = await this.setting.getSettingValues(['configured-mail']);
|
|
500
640
|
if (!this.isSettingEnabled(settings['configured-mail'])) {
|
|
501
641
|
throw new common_1.BadRequestException('Mail service is not configured.');
|
|
@@ -503,7 +643,8 @@ let MailService = MailService_1 = class MailService {
|
|
|
503
643
|
const { from } = await this.reloadConfig();
|
|
504
644
|
try {
|
|
505
645
|
const brandName = await this.mailMainService.getBrandName(undefined, locale);
|
|
506
|
-
const
|
|
646
|
+
const { primaryColor, primaryForeground } = await this.getThemeVariables();
|
|
647
|
+
const mergedVariables = Object.assign({ brandName, primaryColor, primaryForeground }, (variables || {}));
|
|
507
648
|
const parsedSubject = this.interpolateTemplate(subject, mergedVariables);
|
|
508
649
|
const parsedBody = this.interpolateTemplate(body, mergedVariables);
|
|
509
650
|
return this.mailMainService.send({
|
|
@@ -611,6 +752,15 @@ let MailService = MailService_1 = class MailService {
|
|
|
611
752
|
}
|
|
612
753
|
};
|
|
613
754
|
exports.MailService = MailService;
|
|
755
|
+
/** Settings que compoem o cabecalho do e-mail resolvido em `resolveLayout`. */
|
|
756
|
+
MailService.BRAND_SLUGS = new Set([
|
|
757
|
+
'image-url',
|
|
758
|
+
'url',
|
|
759
|
+
'api-url',
|
|
760
|
+
'system-name',
|
|
761
|
+
'theme-primary-light',
|
|
762
|
+
'theme-primary-foreground-light',
|
|
763
|
+
]);
|
|
614
764
|
exports.MailService = MailService = MailService_1 = __decorate([
|
|
615
765
|
(0, common_1.Injectable)(),
|
|
616
766
|
__param(0, (0, common_1.Inject)((0, common_1.forwardRef)(() => api_prisma_1.PrismaService))),
|
|
@@ -619,11 +769,13 @@ exports.MailService = MailService = MailService_1 = __decorate([
|
|
|
619
769
|
__param(3, (0, common_1.Inject)((0, common_1.forwardRef)(() => setting_service_1.SettingService))),
|
|
620
770
|
__param(4, (0, common_1.Inject)((0, common_1.forwardRef)(() => integration_developer_api_service_1.IntegrationDeveloperApiService))),
|
|
621
771
|
__param(5, (0, common_1.Inject)((0, common_1.forwardRef)(() => incident_service_1.IncidentService))),
|
|
772
|
+
__param(6, (0, common_1.Inject)((0, common_1.forwardRef)(() => brand_asset_service_1.BrandAssetService))),
|
|
622
773
|
__metadata("design:paramtypes", [api_prisma_1.PrismaService,
|
|
623
774
|
api_mail_1.MailService,
|
|
624
775
|
api_locale_1.LocaleService,
|
|
625
776
|
setting_service_1.SettingService,
|
|
626
777
|
integration_developer_api_service_1.IntegrationDeveloperApiService,
|
|
627
|
-
incident_service_1.IncidentService
|
|
778
|
+
incident_service_1.IncidentService,
|
|
779
|
+
brand_asset_service_1.BrandAssetService])
|
|
628
780
|
], MailService);
|
|
629
781
|
//# sourceMappingURL=mail.service.js.map
|