@hed-hog/core 0.0.399 → 0.0.401
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/ai/ai-agent.sort.d.ts +6 -0
- package/dist/ai/ai-agent.sort.d.ts.map +1 -0
- package/dist/ai/ai-agent.sort.js +21 -0
- package/dist/ai/ai-agent.sort.js.map +1 -0
- package/dist/ai/ai.controller.d.ts +6 -4
- package/dist/ai/ai.controller.d.ts.map +1 -1
- package/dist/ai/ai.service.d.ts +121 -6
- package/dist/ai/ai.service.d.ts.map +1 -1
- package/dist/ai/ai.service.js +355 -160
- package/dist/ai/ai.service.js.map +1 -1
- package/dist/ai-instruction/ai-instruction.service.d.ts.map +1 -1
- package/dist/ai-instruction/ai-instruction.service.js +26 -23
- package/dist/ai-instruction/ai-instruction.service.js.map +1 -1
- package/dist/ai-instruction/ai-instruction.sort.d.ts +16 -0
- package/dist/ai-instruction/ai-instruction.sort.d.ts.map +1 -0
- package/dist/ai-instruction/ai-instruction.sort.js +32 -0
- package/dist/ai-instruction/ai-instruction.sort.js.map +1 -0
- package/dist/ai-instruction/ai-prompt-resolver.service.d.ts +12 -0
- package/dist/ai-instruction/ai-prompt-resolver.service.d.ts.map +1 -1
- package/dist/ai-instruction/ai-prompt-resolver.service.js +26 -0
- package/dist/ai-instruction/ai-prompt-resolver.service.js.map +1 -1
- package/dist/auth/auth.controller.d.ts +24 -8
- package/dist/auth/auth.controller.d.ts.map +1 -1
- package/dist/auth/auth.module.d.ts.map +1 -1
- package/dist/auth/auth.module.js +8 -1
- package/dist/auth/auth.module.js.map +1 -1
- package/dist/auth/auth.service.d.ts +72 -25
- package/dist/auth/auth.service.d.ts.map +1 -1
- package/dist/auth/auth.service.js +41 -4
- package/dist/auth/auth.service.js.map +1 -1
- package/dist/auth/guards/auth.guard.d.ts +3 -1
- package/dist/auth/guards/auth.guard.d.ts.map +1 -1
- package/dist/auth/guards/auth.guard.js +12 -3
- package/dist/auth/guards/auth.guard.js.map +1 -1
- package/dist/authorize/authorize.controller.d.ts +29 -5
- package/dist/authorize/authorize.controller.d.ts.map +1 -1
- package/dist/authorize/authorize.controller.js +120 -13
- package/dist/authorize/authorize.controller.js.map +1 -1
- package/dist/authorize/authorize.errors.d.ts +34 -0
- package/dist/authorize/authorize.errors.d.ts.map +1 -0
- package/dist/authorize/authorize.errors.js +37 -0
- package/dist/authorize/authorize.errors.js.map +1 -0
- package/dist/authorize/authorize.module.d.ts.map +1 -1
- package/dist/authorize/authorize.module.js +6 -1
- package/dist/authorize/authorize.module.js.map +1 -1
- package/dist/authorize/authorize.service.d.ts +77 -3
- package/dist/authorize/authorize.service.d.ts.map +1 -1
- package/dist/authorize/authorize.service.js +212 -21
- package/dist/authorize/authorize.service.js.map +1 -1
- package/dist/authorize/dto/authorize-info.dto.d.ts +10 -1
- package/dist/authorize/dto/authorize-info.dto.d.ts.map +1 -1
- package/dist/authorize/dto/authorize-info.dto.js +16 -1
- package/dist/authorize/dto/authorize-info.dto.js.map +1 -1
- package/dist/authorize/dto/consent.dto.d.ts +10 -1
- package/dist/authorize/dto/consent.dto.d.ts.map +1 -1
- package/dist/authorize/dto/consent.dto.js +16 -1
- package/dist/authorize/dto/consent.dto.js.map +1 -1
- package/dist/authorize/dto/token.dto.d.ts +12 -0
- package/dist/authorize/dto/token.dto.d.ts.map +1 -1
- package/dist/authorize/dto/token.dto.js +21 -1
- package/dist/authorize/dto/token.dto.js.map +1 -1
- package/dist/authorize/oauth-exception.filter.d.ts +17 -0
- package/dist/authorize/oauth-exception.filter.d.ts.map +1 -0
- package/dist/authorize/oauth-exception.filter.js +54 -0
- package/dist/authorize/oauth-exception.filter.js.map +1 -0
- package/dist/authorize/oauth-metadata.service.d.ts +39 -0
- package/dist/authorize/oauth-metadata.service.d.ts.map +1 -0
- package/dist/authorize/oauth-metadata.service.js +81 -0
- package/dist/authorize/oauth-metadata.service.js.map +1 -0
- package/dist/authorize/well-known.controller.d.ts +67 -0
- package/dist/authorize/well-known.controller.d.ts.map +1 -0
- package/dist/authorize/well-known.controller.js +126 -0
- package/dist/authorize/well-known.controller.js.map +1 -0
- package/dist/captcha/captcha.service.d.ts +32 -2
- package/dist/captcha/captcha.service.d.ts.map +1 -1
- package/dist/captcha/captcha.service.js +85 -12
- package/dist/captcha/captcha.service.js.map +1 -1
- package/dist/challenge/challenge.service.d.ts +2 -2
- package/dist/core.module.d.ts.map +1 -1
- package/dist/core.module.js +9 -0
- package/dist/core.module.js.map +1 -1
- package/dist/dashboard/dashboard/dashboard.controller.d.ts +9 -9
- package/dist/dashboard/dashboard/dashboard.service.d.ts +9 -9
- package/dist/dashboard/dashboard-component/dashboard-component.controller.d.ts +3 -3
- package/dist/dashboard/dashboard-component/dashboard-component.service.d.ts +3 -3
- package/dist/dashboard/dashboard-component-role/dashboard-component-role.controller.d.ts +3 -3
- package/dist/dashboard/dashboard-component-role/dashboard-component-role.service.d.ts +3 -3
- package/dist/dashboard/dashboard-component-role/dashboard-component-role.service.d.ts.map +1 -1
- package/dist/dashboard/dashboard-component-role/dashboard-component-role.service.js +2 -4
- package/dist/dashboard/dashboard-component-role/dashboard-component-role.service.js.map +1 -1
- package/dist/dashboard/dashboard-component-role/dashboard-component-role.sort.d.ts +8 -0
- package/dist/dashboard/dashboard-component-role/dashboard-component-role.sort.d.ts.map +1 -0
- package/dist/dashboard/dashboard-component-role/dashboard-component-role.sort.js +18 -0
- package/dist/dashboard/dashboard-component-role/dashboard-component-role.sort.js.map +1 -0
- package/dist/dashboard/dashboard-item/dashboard-item.service.d.ts.map +1 -1
- package/dist/dashboard/dashboard-item/dashboard-item.service.js +2 -4
- package/dist/dashboard/dashboard-item/dashboard-item.service.js.map +1 -1
- package/dist/dashboard/dashboard-item/dashboard-item.sort.d.ts +9 -0
- package/dist/dashboard/dashboard-item/dashboard-item.sort.d.ts.map +1 -0
- package/dist/dashboard/dashboard-item/dashboard-item.sort.js +19 -0
- package/dist/dashboard/dashboard-item/dashboard-item.sort.js.map +1 -0
- package/dist/dashboard/dashboard-role/dashboard-role.controller.d.ts +3 -3
- package/dist/dashboard/dashboard-role/dashboard-role.service.d.ts +3 -3
- package/dist/dashboard/dashboard-role/dashboard-role.service.d.ts.map +1 -1
- package/dist/dashboard/dashboard-role/dashboard-role.service.js +2 -4
- package/dist/dashboard/dashboard-role/dashboard-role.service.js.map +1 -1
- package/dist/dashboard/dashboard-role/dashboard-role.sort.d.ts +8 -0
- package/dist/dashboard/dashboard-role/dashboard-role.sort.d.ts.map +1 -0
- package/dist/dashboard/dashboard-role/dashboard-role.sort.js +16 -0
- package/dist/dashboard/dashboard-role/dashboard-role.sort.js.map +1 -0
- package/dist/document-kit/document-kit.module.d.ts +3 -0
- package/dist/document-kit/document-kit.module.d.ts.map +1 -0
- package/dist/document-kit/document-kit.module.js +24 -0
- package/dist/document-kit/document-kit.module.js.map +1 -0
- package/dist/document-kit/document-kit.registry.d.ts +55 -0
- package/dist/document-kit/document-kit.registry.d.ts.map +1 -0
- package/dist/document-kit/document-kit.registry.js +91 -0
- package/dist/document-kit/document-kit.registry.js.map +1 -0
- package/dist/document-kit/document-kit.service.d.ts +49 -0
- package/dist/document-kit/document-kit.service.d.ts.map +1 -0
- package/dist/document-kit/document-kit.service.js +135 -0
- package/dist/document-kit/document-kit.service.js.map +1 -0
- package/dist/file/file-upload-ticket.service.d.ts +160 -0
- package/dist/file/file-upload-ticket.service.d.ts.map +1 -0
- package/dist/file/file-upload-ticket.service.js +382 -0
- package/dist/file/file-upload-ticket.service.js.map +1 -0
- package/dist/file/file.controller.d.ts +24 -1
- package/dist/file/file.controller.d.ts.map +1 -1
- package/dist/file/file.controller.js +63 -2
- package/dist/file/file.controller.js.map +1 -1
- package/dist/file/file.module.d.ts.map +1 -1
- package/dist/file/file.module.js +14 -2
- package/dist/file/file.module.js.map +1 -1
- package/dist/file/file.service.d.ts +197 -7
- package/dist/file/file.service.d.ts.map +1 -1
- package/dist/file/file.service.js +438 -78
- package/dist/file/file.service.js.map +1 -1
- package/dist/file/filename-encoding.util.d.ts +24 -0
- package/dist/file/filename-encoding.util.d.ts.map +1 -0
- package/dist/file/filename-encoding.util.js +63 -0
- package/dist/file/filename-encoding.util.js.map +1 -0
- package/dist/file/image-optimization.service.d.ts +27 -0
- package/dist/file/image-optimization.service.d.ts.map +1 -1
- package/dist/file/image-optimization.service.js +63 -14
- package/dist/file/image-optimization.service.js.map +1 -1
- package/dist/file/mcp-file-source.schema.d.ts +33 -0
- package/dist/file/mcp-file-source.schema.d.ts.map +1 -0
- package/dist/file/mcp-file-source.schema.js +78 -0
- package/dist/file/mcp-file-source.schema.js.map +1 -0
- package/dist/file/mcp-file-source.service.d.ts +124 -0
- package/dist/file/mcp-file-source.service.d.ts.map +1 -0
- package/dist/file/mcp-file-source.service.js +262 -0
- package/dist/file/mcp-file-source.service.js.map +1 -0
- package/dist/file/mimetype-sniff.util.d.ts +62 -0
- package/dist/file/mimetype-sniff.util.d.ts.map +1 -0
- package/dist/file/mimetype-sniff.util.js +226 -0
- package/dist/file/mimetype-sniff.util.js.map +1 -0
- package/dist/file/remote-fetch.util.d.ts +35 -0
- package/dist/file/remote-fetch.util.d.ts.map +1 -0
- package/dist/file/remote-fetch.util.js +236 -0
- package/dist/file/remote-fetch.util.js.map +1 -0
- package/dist/impersonation/dto/start-impersonation.dto.d.ts +4 -1
- package/dist/impersonation/dto/start-impersonation.dto.d.ts.map +1 -1
- package/dist/impersonation/dto/start-impersonation.dto.js +1 -1
- package/dist/impersonation/dto/start-impersonation.dto.js.map +1 -1
- package/dist/impersonation/impersonation.service.d.ts +8 -3
- package/dist/impersonation/impersonation.service.d.ts.map +1 -1
- package/dist/impersonation/impersonation.service.js +14 -4
- package/dist/impersonation/impersonation.service.js.map +1 -1
- package/dist/incident/incident.controller.d.ts +2 -1
- package/dist/incident/incident.controller.d.ts.map +1 -1
- package/dist/incident/incident.controller.js +10 -6
- package/dist/incident/incident.controller.js.map +1 -1
- package/dist/incident/incident.service.d.ts +2 -0
- package/dist/incident/incident.service.d.ts.map +1 -1
- package/dist/incident/incident.service.js +4 -0
- package/dist/incident/incident.service.js.map +1 -1
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -1
- package/dist/integration-profile/integration-profile.secrets.d.ts.map +1 -1
- package/dist/integration-profile/integration-profile.secrets.js +28 -0
- package/dist/integration-profile/integration-profile.secrets.js.map +1 -1
- package/dist/integration-profile/integration-profile.service.d.ts +0 -13
- package/dist/integration-profile/integration-profile.service.d.ts.map +1 -1
- package/dist/integration-profile/integration-profile.service.js +5 -40
- package/dist/integration-profile/integration-profile.service.js.map +1 -1
- package/dist/integration-profile/integration-profile.utils.js +5 -5
- package/dist/integration-profile/integration-profile.utils.js.map +1 -1
- package/dist/integration-profile/testers/ai.testers.d.ts.map +1 -1
- package/dist/integration-profile/testers/ai.testers.js +46 -8
- package/dist/integration-profile/testers/ai.testers.js.map +1 -1
- package/dist/integration-profile/testers/index.d.ts.map +1 -1
- package/dist/integration-profile/testers/index.js +2 -0
- package/dist/integration-profile/testers/index.js.map +1 -1
- package/dist/integration-profile/testers/shipping.testers.d.ts +3 -0
- package/dist/integration-profile/testers/shipping.testers.d.ts.map +1 -0
- package/dist/integration-profile/testers/shipping.testers.js +71 -0
- package/dist/integration-profile/testers/shipping.testers.js.map +1 -0
- package/dist/locale/locale.controller.d.ts +1 -1
- package/dist/locale/locale.service.d.ts +1 -1
- package/dist/mail/dto/send.dto.d.ts +6 -1
- package/dist/mail/dto/send.dto.d.ts.map +1 -1
- package/dist/mail/dto/send.dto.js.map +1 -1
- package/dist/mail/mail.service.d.ts +9 -0
- package/dist/mail/mail.service.d.ts.map +1 -1
- package/dist/mail/mail.service.js +34 -14
- package/dist/mail/mail.service.js.map +1 -1
- package/dist/mail-sent/mail-sent.controller.d.ts +1 -1
- package/dist/mail-sent/mail-sent.service.d.ts +1 -1
- package/dist/mail-sent/mail-sent.service.d.ts.map +1 -1
- package/dist/mail-sent/mail-sent.service.js +2 -1
- package/dist/mail-sent/mail-sent.service.js.map +1 -1
- package/dist/mail-sent/mail-sent.sort.d.ts +9 -0
- package/dist/mail-sent/mail-sent.sort.d.ts.map +1 -0
- package/dist/mail-sent/mail-sent.sort.js +19 -0
- package/dist/mail-sent/mail-sent.sort.js.map +1 -0
- package/dist/mcp/filters/mcp-challenge.filter.d.ts +20 -0
- package/dist/mcp/filters/mcp-challenge.filter.d.ts.map +1 -0
- package/dist/mcp/filters/mcp-challenge.filter.js +69 -0
- package/dist/mcp/filters/mcp-challenge.filter.js.map +1 -0
- package/dist/mcp/guards/mcp-auth.guard.d.ts +4 -1
- package/dist/mcp/guards/mcp-auth.guard.d.ts.map +1 -1
- package/dist/mcp/guards/mcp-auth.guard.js +19 -5
- package/dist/mcp/guards/mcp-auth.guard.js.map +1 -1
- package/dist/mcp/guards/mcp-permission.guard.d.ts +25 -3
- package/dist/mcp/guards/mcp-permission.guard.d.ts.map +1 -1
- package/dist/mcp/guards/mcp-permission.guard.js +46 -26
- package/dist/mcp/guards/mcp-permission.guard.js.map +1 -1
- package/dist/mcp/mcp-audit.service.d.ts +17 -0
- package/dist/mcp/mcp-audit.service.d.ts.map +1 -1
- package/dist/mcp/mcp-audit.service.js +32 -3
- package/dist/mcp/mcp-audit.service.js.map +1 -1
- package/dist/mcp/mcp-permission.service.d.ts +64 -0
- package/dist/mcp/mcp-permission.service.d.ts.map +1 -0
- package/dist/mcp/mcp-permission.service.js +178 -0
- package/dist/mcp/mcp-permission.service.js.map +1 -0
- package/dist/mcp/mcp-server.service.d.ts +3 -1
- package/dist/mcp/mcp-server.service.d.ts.map +1 -1
- package/dist/mcp/mcp-server.service.js +36 -15
- package/dist/mcp/mcp-server.service.js.map +1 -1
- package/dist/mcp/mcp.controller.d.ts.map +1 -1
- package/dist/mcp/mcp.controller.js +10 -2
- package/dist/mcp/mcp.controller.js.map +1 -1
- package/dist/mcp/mcp.module.d.ts.map +1 -1
- package/dist/mcp/mcp.module.js +7 -1
- package/dist/mcp/mcp.module.js.map +1 -1
- package/dist/mcp/tools/core-access-log.mcp-tools.d.ts +17 -0
- package/dist/mcp/tools/core-access-log.mcp-tools.d.ts.map +1 -0
- package/dist/mcp/tools/core-access-log.mcp-tools.js +74 -0
- package/dist/mcp/tools/core-access-log.mcp-tools.js.map +1 -0
- package/dist/mcp/tools/core-ai.mcp-tools.js +2 -9
- package/dist/mcp/tools/core-ai.mcp-tools.js.map +1 -1
- package/dist/mcp/tools/core-dashboard-items.mcp-tools.js +1 -1
- package/dist/mcp/tools/core-dashboard-items.mcp-tools.js.map +1 -1
- package/dist/mcp/tools/core-dashboard.mcp-tools.js +2 -9
- package/dist/mcp/tools/core-dashboard.mcp-tools.js.map +1 -1
- package/dist/mcp/tools/core-event-webhooks.mcp-tools.d.ts.map +1 -1
- package/dist/mcp/tools/core-event-webhooks.mcp-tools.js +2 -10
- package/dist/mcp/tools/core-event-webhooks.mcp-tools.js.map +1 -1
- package/dist/mcp/tools/core-files.mcp-tools.d.ts +17 -5
- package/dist/mcp/tools/core-files.mcp-tools.d.ts.map +1 -1
- package/dist/mcp/tools/core-files.mcp-tools.js +186 -24
- package/dist/mcp/tools/core-files.mcp-tools.js.map +1 -1
- package/dist/mcp/tools/core-integration-events.mcp-tools.js +2 -9
- package/dist/mcp/tools/core-integration-events.mcp-tools.js.map +1 -1
- package/dist/mcp/tools/core-mail-sent.mcp-tools.js +2 -14
- package/dist/mcp/tools/core-mail-sent.mcp-tools.js.map +1 -1
- package/dist/mcp/tools/core-mail.mcp-tools.js +2 -9
- package/dist/mcp/tools/core-mail.mcp-tools.js.map +1 -1
- package/dist/mcp/tools/core-menus.mcp-tools.d.ts.map +1 -1
- package/dist/mcp/tools/core-menus.mcp-tools.js +2 -10
- package/dist/mcp/tools/core-menus.mcp-tools.js.map +1 -1
- package/dist/mcp/tools/core-notifications.mcp-tools.d.ts.map +1 -1
- package/dist/mcp/tools/core-notifications.mcp-tools.js +0 -1
- package/dist/mcp/tools/core-notifications.mcp-tools.js.map +1 -1
- package/dist/mcp/tools/core-roles.mcp-tools.d.ts.map +1 -1
- package/dist/mcp/tools/core-roles.mcp-tools.js +2 -13
- package/dist/mcp/tools/core-roles.mcp-tools.js.map +1 -1
- package/dist/mcp/tools/core-routes.mcp-tools.d.ts.map +1 -1
- package/dist/mcp/tools/core-routes.mcp-tools.js +2 -11
- package/dist/mcp/tools/core-routes.mcp-tools.js.map +1 -1
- package/dist/mcp/tools/core-screens.mcp-tools.d.ts.map +1 -1
- package/dist/mcp/tools/core-screens.mcp-tools.js +2 -11
- package/dist/mcp/tools/core-screens.mcp-tools.js.map +1 -1
- package/dist/mcp/tools/core-sessions.mcp-tools.d.ts.map +1 -1
- package/dist/mcp/tools/core-sessions.mcp-tools.js +0 -2
- package/dist/mcp/tools/core-sessions.mcp-tools.js.map +1 -1
- package/dist/mcp/tools/core-settings.mcp-tools.d.ts.map +1 -1
- package/dist/mcp/tools/core-settings.mcp-tools.js +2 -10
- package/dist/mcp/tools/core-settings.mcp-tools.js.map +1 -1
- package/dist/mcp/tools/core-users.mcp-tools.js +2 -9
- package/dist/mcp/tools/core-users.mcp-tools.js.map +1 -1
- package/dist/mcp/tools/core-webhooks.mcp-tools.d.ts.map +1 -1
- package/dist/mcp/tools/core-webhooks.mcp-tools.js +2 -10
- package/dist/mcp/tools/core-webhooks.mcp-tools.js.map +1 -1
- package/dist/mcp/types/mcp-context.type.d.ts +9 -0
- package/dist/mcp/types/mcp-context.type.d.ts.map +1 -1
- package/dist/mcp-chat/mcp-chat.service.d.ts.map +1 -1
- package/dist/mcp-chat/mcp-chat.service.js +8 -0
- package/dist/mcp-chat/mcp-chat.service.js.map +1 -1
- package/dist/meeting/meeting-provider.registry.d.ts +187 -0
- package/dist/meeting/meeting-provider.registry.d.ts.map +1 -1
- package/dist/meeting/meeting-provider.registry.js.map +1 -1
- package/dist/meeting/meeting.constants.d.ts +70 -0
- package/dist/meeting/meeting.constants.d.ts.map +1 -1
- package/dist/meeting/meeting.constants.js +9 -1
- package/dist/meeting/meeting.constants.js.map +1 -1
- package/dist/menu/menu.service.d.ts.map +1 -1
- package/dist/menu/menu.service.js +29 -9
- package/dist/menu/menu.service.js.map +1 -1
- package/dist/message-template/dto/update-message-template.dto.d.ts +18 -0
- package/dist/message-template/dto/update-message-template.dto.d.ts.map +1 -0
- package/dist/message-template/dto/update-message-template.dto.js +38 -0
- package/dist/message-template/dto/update-message-template.dto.js.map +1 -0
- package/dist/message-template/message-template-admin.service.d.ts +70 -0
- package/dist/message-template/message-template-admin.service.d.ts.map +1 -0
- package/dist/message-template/message-template-admin.service.js +226 -0
- package/dist/message-template/message-template-admin.service.js.map +1 -0
- package/dist/message-template/message-template.controller.d.ts +29 -0
- package/dist/message-template/message-template.controller.d.ts.map +1 -0
- package/dist/message-template/message-template.controller.js +101 -0
- package/dist/message-template/message-template.controller.js.map +1 -0
- package/dist/message-template/message-template.module.d.ts +10 -0
- package/dist/message-template/message-template.module.d.ts.map +1 -0
- package/dist/message-template/message-template.module.js +33 -0
- package/dist/message-template/message-template.module.js.map +1 -0
- package/dist/message-template/message-template.registry.d.ts +55 -0
- package/dist/message-template/message-template.registry.d.ts.map +1 -0
- package/dist/message-template/message-template.registry.js +64 -0
- package/dist/message-template/message-template.registry.js.map +1 -0
- package/dist/message-template/message-template.service.d.ts +59 -0
- package/dist/message-template/message-template.service.d.ts.map +1 -0
- package/dist/message-template/message-template.service.js +166 -0
- package/dist/message-template/message-template.service.js.map +1 -0
- package/dist/notification/notification.constants.d.ts +11 -0
- package/dist/notification/notification.constants.d.ts.map +1 -0
- package/dist/notification/notification.constants.js +14 -0
- package/dist/notification/notification.constants.js.map +1 -0
- package/dist/notification/notification.controller.d.ts +20 -20
- package/dist/notification/notification.module.d.ts.map +1 -1
- package/dist/notification/notification.module.js +3 -0
- package/dist/notification/notification.module.js.map +1 -1
- package/dist/notification/notification.service.d.ts +33 -21
- package/dist/notification/notification.service.d.ts.map +1 -1
- package/dist/notification/notification.service.js +36 -2
- package/dist/notification/notification.service.js.map +1 -1
- package/dist/oauth/oauth-token-broker.service.d.ts +50 -1
- package/dist/oauth/oauth-token-broker.service.d.ts.map +1 -1
- package/dist/oauth/oauth-token-broker.service.js +105 -3
- package/dist/oauth/oauth-token-broker.service.js.map +1 -1
- package/dist/oauth/oauth.controller.d.ts +4 -6
- package/dist/oauth/oauth.controller.d.ts.map +1 -1
- package/dist/oauth/oauth.controller.js +0 -1
- package/dist/oauth/oauth.controller.js.map +1 -1
- package/dist/oauth/oauth.errors.d.ts +15 -1
- package/dist/oauth/oauth.errors.d.ts.map +1 -1
- package/dist/oauth/oauth.errors.js +9 -1
- package/dist/oauth/oauth.errors.js.map +1 -1
- package/dist/oauth/oauth.module.d.ts.map +1 -1
- package/dist/oauth/oauth.module.js +6 -1
- package/dist/oauth/oauth.module.js.map +1 -1
- package/dist/oauth/oauth.service.d.ts +25 -5
- package/dist/oauth/oauth.service.d.ts.map +1 -1
- package/dist/oauth/oauth.service.js +63 -27
- package/dist/oauth/oauth.service.js.map +1 -1
- package/dist/oauth/providers/abstract.provider.d.ts +10 -0
- package/dist/oauth/providers/abstract.provider.d.ts.map +1 -1
- package/dist/oauth/providers/abstract.provider.js +39 -12
- package/dist/oauth/providers/abstract.provider.js.map +1 -1
- package/dist/oauth/providers/github.provider.d.ts +1 -1
- package/dist/oauth/providers/github.provider.d.ts.map +1 -1
- package/dist/oauth/providers/github.provider.js +48 -22
- package/dist/oauth/providers/github.provider.js.map +1 -1
- package/dist/oauth/providers/microsoft-entra-id.provider.d.ts +6 -0
- package/dist/oauth/providers/microsoft-entra-id.provider.d.ts.map +1 -1
- package/dist/oauth/providers/microsoft-entra-id.provider.js +36 -4
- package/dist/oauth/providers/microsoft-entra-id.provider.js.map +1 -1
- package/dist/observability/monitored-cron.d.ts +29 -12
- package/dist/observability/monitored-cron.d.ts.map +1 -1
- package/dist/observability/monitored-cron.js +131 -46
- package/dist/observability/monitored-cron.js.map +1 -1
- package/dist/pairing/pairing.service.d.ts +6 -2
- package/dist/pairing/pairing.service.d.ts.map +1 -1
- package/dist/pdf/document/charts/chart-bar.d.ts +24 -0
- package/dist/pdf/document/charts/chart-bar.d.ts.map +1 -0
- package/dist/pdf/document/charts/chart-bar.js +117 -0
- package/dist/pdf/document/charts/chart-bar.js.map +1 -0
- package/dist/pdf/document/charts/chart-donut.d.ts +16 -0
- package/dist/pdf/document/charts/chart-donut.d.ts.map +1 -0
- package/dist/pdf/document/charts/chart-donut.js +89 -0
- package/dist/pdf/document/charts/chart-donut.js.map +1 -0
- package/dist/pdf/document/charts/chart-gauge.d.ts +15 -0
- package/dist/pdf/document/charts/chart-gauge.d.ts.map +1 -0
- package/dist/pdf/document/charts/chart-gauge.js +60 -0
- package/dist/pdf/document/charts/chart-gauge.js.map +1 -0
- package/dist/pdf/document/charts/chart-line.d.ts +29 -0
- package/dist/pdf/document/charts/chart-line.d.ts.map +1 -0
- package/dist/pdf/document/charts/chart-line.js +89 -0
- package/dist/pdf/document/charts/chart-line.js.map +1 -0
- package/dist/pdf/document/charts/chart-primitives.d.ts +64 -0
- package/dist/pdf/document/charts/chart-primitives.d.ts.map +1 -0
- package/dist/pdf/document/charts/chart-primitives.js +110 -0
- package/dist/pdf/document/charts/chart-primitives.js.map +1 -0
- package/dist/pdf/document/charts/chart-radar.d.ts +13 -0
- package/dist/pdf/document/charts/chart-radar.d.ts.map +1 -0
- package/dist/pdf/document/charts/chart-radar.js +83 -0
- package/dist/pdf/document/charts/chart-radar.js.map +1 -0
- package/dist/pdf/document/charts/chart-scale.d.ts +39 -0
- package/dist/pdf/document/charts/chart-scale.d.ts.map +1 -0
- package/dist/pdf/document/charts/chart-scale.js +118 -0
- package/dist/pdf/document/charts/chart-scale.js.map +1 -0
- package/dist/pdf/document/charts/index.d.ts +8 -0
- package/dist/pdf/document/charts/index.d.ts.map +1 -0
- package/dist/pdf/document/charts/index.js +24 -0
- package/dist/pdf/document/charts/index.js.map +1 -0
- package/dist/pdf/document/index.d.ts +8 -0
- package/dist/pdf/document/index.d.ts.map +1 -0
- package/dist/pdf/document/index.js +24 -0
- package/dist/pdf/document/index.js.map +1 -0
- package/dist/pdf/document/pdf-document.chrome.d.ts +20 -0
- package/dist/pdf/document/pdf-document.chrome.d.ts.map +1 -0
- package/dist/pdf/document/pdf-document.chrome.js +36 -0
- package/dist/pdf/document/pdf-document.chrome.js.map +1 -0
- package/dist/pdf/document/pdf-document.css.d.ts +20 -0
- package/dist/pdf/document/pdf-document.css.d.ts.map +1 -0
- package/dist/pdf/document/pdf-document.css.js +239 -0
- package/dist/pdf/document/pdf-document.css.js.map +1 -0
- package/dist/pdf/document/pdf-document.renderer.d.ts +10 -0
- package/dist/pdf/document/pdf-document.renderer.d.ts.map +1 -0
- package/dist/pdf/document/pdf-document.renderer.js +153 -0
- package/dist/pdf/document/pdf-document.renderer.js.map +1 -0
- package/dist/pdf/document/pdf-document.service.d.ts +27 -0
- package/dist/pdf/document/pdf-document.service.d.ts.map +1 -0
- package/dist/pdf/document/pdf-document.service.js +81 -0
- package/dist/pdf/document/pdf-document.service.js.map +1 -0
- package/dist/pdf/document/pdf-document.theme.d.ts +41 -0
- package/dist/pdf/document/pdf-document.theme.d.ts.map +1 -0
- package/dist/pdf/document/pdf-document.theme.js +105 -0
- package/dist/pdf/document/pdf-document.theme.js.map +1 -0
- package/dist/pdf/document/pdf-document.types.d.ts +108 -0
- package/dist/pdf/document/pdf-document.types.d.ts.map +1 -0
- package/dist/pdf/document/pdf-document.types.js +18 -0
- package/dist/pdf/document/pdf-document.types.js.map +1 -0
- package/dist/pdf/pdf.module.d.ts.map +1 -1
- package/dist/pdf/pdf.module.js +3 -2
- package/dist/pdf/pdf.module.js.map +1 -1
- package/dist/pdf/pdf.service.d.ts +69 -1
- package/dist/pdf/pdf.service.d.ts.map +1 -1
- package/dist/pdf/pdf.service.js +164 -63
- package/dist/pdf/pdf.service.js.map +1 -1
- package/dist/pdf/templates/commercial-proposal.template.d.ts +96 -0
- package/dist/pdf/templates/commercial-proposal.template.d.ts.map +1 -0
- package/dist/pdf/templates/commercial-proposal.template.js +276 -0
- package/dist/pdf/templates/commercial-proposal.template.js.map +1 -0
- package/dist/profile/dto/change-password.dto.d.ts.map +1 -1
- package/dist/profile/dto/change-password.dto.js +4 -6
- package/dist/profile/dto/change-password.dto.js.map +1 -1
- package/dist/profile/profile.controller.d.ts +1 -1
- package/dist/profile/profile.service.d.ts +1 -1
- package/dist/profile/profile.service.d.ts.map +1 -1
- package/dist/profile/profile.service.js +9 -3
- package/dist/profile/profile.service.js.map +1 -1
- package/dist/realtime/realtime-tick.coalescer.d.ts +34 -0
- package/dist/realtime/realtime-tick.coalescer.d.ts.map +1 -0
- package/dist/realtime/realtime-tick.coalescer.js +60 -0
- package/dist/realtime/realtime-tick.coalescer.js.map +1 -0
- package/dist/realtime/realtime.service.d.ts +2 -0
- package/dist/realtime/realtime.service.d.ts.map +1 -1
- package/dist/realtime/realtime.service.js +22 -2
- package/dist/realtime/realtime.service.js.map +1 -1
- package/dist/redis/redis-kv.service.d.ts +90 -0
- package/dist/redis/redis-kv.service.d.ts.map +1 -0
- package/dist/redis/redis-kv.service.js +247 -0
- package/dist/redis/redis-kv.service.js.map +1 -0
- package/dist/redis/redis-master.d.ts +29 -0
- package/dist/redis/redis-master.d.ts.map +1 -0
- package/dist/redis/redis-master.js +81 -0
- package/dist/redis/redis-master.js.map +1 -0
- package/dist/redis/redis-pubsub.d.ts +12 -0
- package/dist/redis/redis-pubsub.d.ts.map +1 -1
- package/dist/redis/redis-pubsub.js +25 -2
- package/dist/redis/redis-pubsub.js.map +1 -1
- package/dist/redis/redis.module.d.ts +11 -0
- package/dist/redis/redis.module.d.ts.map +1 -0
- package/dist/redis/redis.module.js +30 -0
- package/dist/redis/redis.module.js.map +1 -0
- package/dist/session/session.controller.d.ts +6 -2
- package/dist/session/session.controller.d.ts.map +1 -1
- package/dist/session/session.service.d.ts +118 -15
- package/dist/session/session.service.d.ts.map +1 -1
- package/dist/session/session.service.js +251 -77
- package/dist/session/session.service.js.map +1 -1
- package/dist/setting/favicon.controller.d.ts +26 -0
- package/dist/setting/favicon.controller.d.ts.map +1 -0
- package/dist/setting/favicon.controller.js +130 -0
- package/dist/setting/favicon.controller.js.map +1 -0
- package/dist/setting/setting.controller.d.ts +5 -0
- package/dist/setting/setting.controller.d.ts.map +1 -1
- package/dist/setting/setting.module.d.ts.map +1 -1
- package/dist/setting/setting.module.js +2 -1
- package/dist/setting/setting.module.js.map +1 -1
- package/dist/setting/setting.service.d.ts +7 -0
- package/dist/setting/setting.service.d.ts.map +1 -1
- package/dist/setting/setting.service.js +38 -3
- package/dist/setting/setting.service.js.map +1 -1
- package/dist/task/task.service.d.ts +17 -0
- package/dist/task/task.service.d.ts.map +1 -1
- package/dist/task/task.service.js +48 -13
- package/dist/task/task.service.js.map +1 -1
- package/dist/token/token.service.d.ts +19 -1
- package/dist/token/token.service.d.ts.map +1 -1
- package/dist/token/token.service.js +39 -2
- package/dist/token/token.service.js.map +1 -1
- package/dist/user/user-credential.util.d.ts +10 -0
- package/dist/user/user-credential.util.d.ts.map +1 -1
- package/dist/user/user-credential.util.js +14 -1
- package/dist/user/user-credential.util.js.map +1 -1
- package/dist/user/user.service.d.ts +12 -4
- package/dist/user/user.service.d.ts.map +1 -1
- package/dist/user/user.service.js +2 -11
- package/dist/user/user.service.js.map +1 -1
- package/dist/user/user.sort.d.ts +16 -0
- package/dist/user/user.sort.d.ts.map +1 -0
- package/dist/user/user.sort.js +25 -0
- package/dist/user/user.sort.js.map +1 -0
- package/dist/utils/abbreviate-name.d.ts +13 -0
- package/dist/utils/abbreviate-name.d.ts.map +1 -0
- package/dist/utils/abbreviate-name.js +42 -0
- package/dist/utils/abbreviate-name.js.map +1 -0
- package/dist/utils/date-range-query.dto.d.ts +11 -0
- package/dist/utils/date-range-query.dto.d.ts.map +1 -0
- package/dist/utils/date-range-query.dto.js +63 -0
- package/dist/utils/date-range-query.dto.js.map +1 -0
- package/dist/utils/date-range.d.ts +96 -0
- package/dist/utils/date-range.d.ts.map +1 -0
- package/dist/utils/date-range.js +172 -0
- package/dist/utils/date-range.js.map +1 -0
- package/dist/webhook-integration/webhook-utils.d.ts.map +1 -1
- package/dist/webhook-integration/webhook-utils.js +24 -0
- package/dist/webhook-integration/webhook-utils.js.map +1 -1
- package/dist/whatsapp-sender/whatsapp-recipients.d.ts +49 -0
- package/dist/whatsapp-sender/whatsapp-recipients.d.ts.map +1 -0
- package/dist/whatsapp-sender/whatsapp-recipients.js +66 -0
- package/dist/whatsapp-sender/whatsapp-recipients.js.map +1 -0
- package/dist/whatsapp-sender/whatsapp-sender.service.d.ts +25 -0
- package/dist/whatsapp-sender/whatsapp-sender.service.d.ts.map +1 -1
- package/dist/whatsapp-sender/whatsapp-sender.service.js +71 -7
- package/dist/whatsapp-sender/whatsapp-sender.service.js.map +1 -1
- package/hedhog/data/integration_provider.yaml +9 -0
- package/hedhog/data/integration_type.yaml +12 -0
- package/hedhog/data/locale.yaml +0 -1
- package/hedhog/data/mail.yaml +2 -2
- package/hedhog/data/mail_layout.yaml +6 -3
- package/hedhog/data/menu.yaml +25 -5
- package/hedhog/data/route.yaml +148 -0
- package/hedhog/data/setting_group.yaml +189 -3
- package/hedhog/frontend/app/access-log/page.tsx.ejs +47 -53
- package/hedhog/frontend/app/account/components/active-sessions.tsx.ejs +33 -8
- package/hedhog/frontend/app/account/components/mcp-tokens.tsx.ejs +54 -13
- package/hedhog/frontend/app/account/components/mfa-method-card.tsx.ejs +7 -1
- package/hedhog/frontend/app/account/components/recovery-codes-dialog.tsx.ejs +1 -0
- package/hedhog/frontend/app/account/components/tokens.tsx.ejs +47 -17
- package/hedhog/frontend/app/ai_agent/page.tsx.ejs +46 -5
- package/hedhog/frontend/app/ai_instruction/_components/ai-instruction-form.tsx.ejs +101 -30
- package/hedhog/frontend/app/ai_instruction/_components/ai-instruction-versions.tsx.ejs +24 -8
- package/hedhog/frontend/app/ai_instruction/page.tsx.ejs +80 -15
- package/hedhog/frontend/app/configurations/[slug]/components/image-optimization-action.tsx.ejs +166 -0
- package/hedhog/frontend/app/configurations/[slug]/components/setting-field.test.tsx.ejs +145 -45
- package/hedhog/frontend/app/configurations/[slug]/components/setting-field.tsx.ejs +99 -219
- package/hedhog/frontend/app/configurations/[slug]/page.tsx.ejs +19 -1
- package/hedhog/frontend/app/configurations/layout.tsx.ejs +19 -5
- package/hedhog/frontend/app/dashboard/[slug]/widget-renderer.tsx.ejs +2 -8
- package/hedhog/frontend/app/dashboard/components/dynamic-widget.tsx.ejs +3 -0
- package/hedhog/frontend/app/dashboard/components/widget-wrapper.tsx.ejs +4 -0
- package/hedhog/frontend/app/dashboard/dashboard-home-tabs.tsx.ejs +43 -44
- package/hedhog/frontend/app/dashboard/management/tabs/component-roles-tab.tsx.ejs +41 -3
- package/hedhog/frontend/app/dashboard/management/tabs/components-tab.tsx.ejs +42 -2
- package/hedhog/frontend/app/dashboard/management/tabs/dashboard-roles-tab.tsx.ejs +41 -3
- package/hedhog/frontend/app/dashboard/management/tabs/dashboards-tab.tsx.ejs +39 -4
- package/hedhog/frontend/app/dashboard/management/tabs/items-tab.tsx.ejs +42 -3
- package/hedhog/frontend/app/incidents/page.tsx.ejs +60 -31
- package/hedhog/frontend/app/integration/profiles/page.tsx.ejs +45 -5
- package/hedhog/frontend/app/integrations-webhooks/page.tsx.ejs +92 -15
- package/hedhog/frontend/app/mail/log/page.tsx.ejs +109 -61
- package/hedhog/frontend/app/mail/template/page.tsx.ejs +125 -23
- package/hedhog/frontend/app/mcp_chat/chat-components.tsx.ejs +13 -15
- package/hedhog/frontend/app/mcp_chat/page.tsx.ejs +116 -110
- package/hedhog/frontend/app/message-templates/_components/message-template-sheet.tsx.ejs +245 -0
- package/hedhog/frontend/app/message-templates/_lib/types.ts.ejs +24 -0
- package/hedhog/frontend/app/message-templates/page.tsx.ejs +182 -0
- package/hedhog/frontend/app/pages/_components/page-wizard-sheet.tsx.ejs +1 -0
- package/hedhog/frontend/app/pages/page.tsx.ejs +94 -9
- package/hedhog/frontend/app/roles/menus.tsx.ejs +4 -4
- package/hedhog/frontend/app/roles/routes.tsx.ejs +4 -4
- package/hedhog/frontend/app/roles/users.tsx.ejs +4 -4
- package/hedhog/frontend/app/setting-list/page.tsx.ejs +71 -9
- package/hedhog/frontend/app/users/page.tsx.ejs +77 -67
- package/hedhog/frontend/messages/en.json +237 -37
- package/hedhog/frontend/messages/pt.json +237 -37
- package/hedhog/table/cron_lock.yaml +17 -0
- package/hedhog/table/file.yaml +13 -1
- package/hedhog/table/file_upload_chunk.yaml +23 -0
- package/hedhog/table/file_upload_ticket.yaml +67 -0
- package/hedhog/table/mcp_tool_call_log.yaml +30 -22
- package/hedhog/table/message_template.yaml +33 -0
- package/hedhog/table/setting.yaml +8 -0
- package/hedhog/table/user_session.yaml +36 -1
- package/package.json +5 -3
- package/src/ai/ai-agent.sort.ts +21 -0
- package/src/ai/ai-attachment.fragments.spec.ts +56 -3
- package/src/ai/ai.service.responses.spec.ts +429 -0
- package/src/ai/ai.service.spec.ts +173 -1
- package/src/ai/ai.service.ts +473 -220
- package/src/ai-instruction/ai-instruction.service.ts +32 -28
- package/src/ai-instruction/ai-instruction.sort.ts +32 -0
- package/src/ai-instruction/ai-prompt-resolver.service.spec.ts +44 -0
- package/src/ai-instruction/ai-prompt-resolver.service.ts +29 -0
- package/src/auth/auth.module.ts +8 -1
- package/src/auth/auth.service.spec.ts +108 -1
- package/src/auth/auth.service.ts +59 -5
- package/src/auth/guards/auth.guard.ts +9 -1
- package/src/authorize/authorize.controller.ts +126 -11
- package/src/authorize/authorize.errors.ts +55 -0
- package/src/authorize/authorize.module.ts +6 -1
- package/src/authorize/authorize.service.spec.ts +379 -7
- package/src/authorize/authorize.service.ts +309 -23
- package/src/authorize/dto/authorize-info.dto.ts +21 -3
- package/src/authorize/dto/consent.dto.ts +21 -3
- package/src/authorize/dto/token.dto.ts +24 -2
- package/src/authorize/oauth-exception.filter.ts +58 -0
- package/src/authorize/oauth-metadata.service.ts +67 -0
- package/src/authorize/well-known.controller.spec.ts +84 -0
- package/src/authorize/well-known.controller.ts +96 -0
- package/src/captcha/captcha.service.spec.ts +211 -4
- package/src/captcha/captcha.service.ts +127 -10
- package/src/core.module.ts +9 -0
- package/src/dashboard/dashboard-component-role/dashboard-component-role.service.ts +2 -3
- package/src/dashboard/dashboard-component-role/dashboard-component-role.sort.ts +18 -0
- package/src/dashboard/dashboard-item/dashboard-item.service.ts +2 -3
- package/src/dashboard/dashboard-item/dashboard-item.sort.ts +19 -0
- package/src/dashboard/dashboard-role/dashboard-role.service.ts +2 -3
- package/src/dashboard/dashboard-role/dashboard-role.sort.ts +16 -0
- package/src/document-kit/document-kit.module.ts +12 -0
- package/src/document-kit/document-kit.registry.ts +125 -0
- package/src/document-kit/document-kit.service.spec.ts +156 -0
- package/src/document-kit/document-kit.service.ts +173 -0
- package/src/file/file-upload-ticket.service.spec.ts +422 -0
- package/src/file/file-upload-ticket.service.ts +513 -0
- package/src/file/file.controller.ts +65 -0
- package/src/file/file.module.ts +14 -2
- package/src/file/file.service.spec.ts +262 -1
- package/src/file/file.service.ts +505 -87
- package/src/file/filename-encoding.util.spec.ts +54 -0
- package/src/file/filename-encoding.util.ts +67 -0
- package/src/file/image-optimization.service.spec.ts +156 -19
- package/src/file/image-optimization.service.ts +106 -21
- package/src/file/mcp-file-source.schema.ts +86 -0
- package/src/file/mcp-file-source.service.spec.ts +473 -0
- package/src/file/mcp-file-source.service.ts +445 -0
- package/src/file/mimetype-sniff.util.spec.ts +126 -0
- package/src/file/mimetype-sniff.util.ts +265 -0
- package/src/file/remote-fetch.util.spec.ts +117 -0
- package/src/file/remote-fetch.util.ts +330 -0
- package/src/impersonation/dto/start-impersonation.dto.ts +5 -2
- package/src/impersonation/impersonation.service.spec.ts +24 -1
- package/src/impersonation/impersonation.service.ts +14 -4
- package/src/incident/incident.controller.ts +9 -1
- package/src/incident/incident.service.ts +7 -0
- package/src/index.ts +23 -1
- package/src/integration-profile/integration-profile.secrets.ts +28 -0
- package/src/integration-profile/integration-profile.service.ts +7 -64
- package/src/integration-profile/integration-profile.utils.spec.ts +9 -0
- package/src/integration-profile/integration-profile.utils.ts +5 -5
- package/src/integration-profile/testers/ai.testers.ts +70 -5
- package/src/integration-profile/testers/index.ts +2 -0
- package/src/integration-profile/testers/remaining.testers.spec.ts +144 -1
- package/src/integration-profile/testers/shipping.testers.ts +94 -0
- package/src/integration-profile/testers/tester-coverage.spec.ts +10 -0
- package/src/mail/dto/send.dto.ts +6 -1
- package/src/mail/mail-template.spec.ts +58 -1
- package/src/mail/mail.service.spec.ts +112 -0
- package/src/mail/mail.service.ts +42 -4
- package/src/mail-sent/mail-sent.service.ts +3 -0
- package/src/mail-sent/mail-sent.sort.ts +19 -0
- package/src/mcp/filters/mcp-challenge.filter.spec.ts +76 -0
- package/src/mcp/filters/mcp-challenge.filter.ts +70 -0
- package/src/mcp/guards/mcp-auth.guard.spec.ts +51 -2
- package/src/mcp/guards/mcp-auth.guard.ts +24 -1
- package/src/mcp/guards/mcp-permission.guard.spec.ts +109 -15
- package/src/mcp/guards/mcp-permission.guard.ts +76 -51
- package/src/mcp/mcp-audit.service.spec.ts +107 -0
- package/src/mcp/mcp-audit.service.ts +37 -1
- package/src/mcp/mcp-permission.service.spec.ts +197 -0
- package/src/mcp/mcp-permission.service.ts +184 -0
- package/src/mcp/mcp-server.service.spec.ts +84 -2
- package/src/mcp/mcp-server.service.ts +111 -87
- package/src/mcp/mcp.controller.ts +8 -1
- package/src/mcp/mcp.module.ts +7 -1
- package/src/mcp/tools/core-access-log.mcp-tools.ts +66 -0
- package/src/mcp/tools/core-ai.mcp-tools.ts +1 -1
- package/src/mcp/tools/core-dashboard-items.mcp-tools.ts +1 -1
- package/src/mcp/tools/core-dashboard.mcp-tools.ts +1 -1
- package/src/mcp/tools/core-event-webhooks.mcp-tools.ts +1 -2
- package/src/mcp/tools/core-files.mcp-tools.ts +202 -22
- package/src/mcp/tools/core-integration-events.mcp-tools.ts +1 -1
- package/src/mcp/tools/core-mail-sent.mcp-tools.ts +1 -1
- package/src/mcp/tools/core-mail.mcp-tools.ts +1 -1
- package/src/mcp/tools/core-menus.mcp-tools.ts +1 -2
- package/src/mcp/tools/core-notifications.mcp-tools.ts +0 -1
- package/src/mcp/tools/core-roles.mcp-tools.ts +1 -5
- package/src/mcp/tools/core-routes.mcp-tools.ts +1 -3
- package/src/mcp/tools/core-screens.mcp-tools.ts +1 -3
- package/src/mcp/tools/core-sessions.mcp-tools.ts +0 -2
- package/src/mcp/tools/core-settings.mcp-tools.ts +1 -2
- package/src/mcp/tools/core-users.mcp-tools.ts +1 -1
- package/src/mcp/tools/core-webhooks.mcp-tools.ts +1 -2
- package/src/mcp/types/mcp-context.type.ts +15 -6
- package/src/mcp-chat/mcp-chat.service.ts +8 -0
- package/src/meeting/meeting-provider.registry.ts +201 -0
- package/src/meeting/meeting.constants.ts +74 -0
- package/src/menu/menu.service.spec.ts +89 -0
- package/src/menu/menu.service.ts +29 -11
- package/src/message-template/dto/update-message-template.dto.ts +22 -0
- package/src/message-template/message-template-admin.service.spec.ts +163 -0
- package/src/message-template/message-template-admin.service.ts +239 -0
- package/src/message-template/message-template.controller.ts +52 -0
- package/src/message-template/message-template.module.ts +21 -0
- package/src/message-template/message-template.registry.spec.ts +62 -0
- package/src/message-template/message-template.registry.ts +125 -0
- package/src/message-template/message-template.service.spec.ts +149 -0
- package/src/message-template/message-template.service.ts +149 -0
- package/src/notification/notification.constants.ts +10 -0
- package/src/notification/notification.module.ts +3 -0
- package/src/notification/notification.service.spec.ts +75 -1
- package/src/notification/notification.service.ts +39 -1
- package/src/oauth/oauth-token-broker.service.spec.ts +108 -0
- package/src/oauth/oauth-token-broker.service.ts +129 -2
- package/src/oauth/oauth.controller.ts +0 -1
- package/src/oauth/oauth.errors.ts +7 -0
- package/src/oauth/oauth.module.ts +6 -1
- package/src/oauth/oauth.service.spec.ts +58 -7
- package/src/oauth/oauth.service.ts +71 -32
- package/src/oauth/providers/abstract.provider.spec.ts +192 -0
- package/src/oauth/providers/abstract.provider.ts +46 -14
- package/src/oauth/providers/github.provider.ts +57 -34
- package/src/oauth/providers/microsoft-entra-id.provider.spec.ts +133 -0
- package/src/oauth/providers/microsoft-entra-id.provider.ts +37 -3
- package/src/observability/monitored-cron.spec.ts +164 -31
- package/src/observability/monitored-cron.ts +154 -62
- package/src/pdf/document/charts/chart-bar.ts +217 -0
- package/src/pdf/document/charts/chart-donut.ts +163 -0
- package/src/pdf/document/charts/chart-gauge.ts +94 -0
- package/src/pdf/document/charts/chart-line.ts +159 -0
- package/src/pdf/document/charts/chart-primitives.ts +188 -0
- package/src/pdf/document/charts/chart-radar.ts +136 -0
- package/src/pdf/document/charts/chart-scale.spec.ts +93 -0
- package/src/pdf/document/charts/chart-scale.ts +141 -0
- package/src/pdf/document/charts/charts.spec.ts +157 -0
- package/src/pdf/document/charts/index.ts +7 -0
- package/src/pdf/document/index.ts +7 -0
- package/src/pdf/document/pdf-document.chrome.ts +38 -0
- package/src/pdf/document/pdf-document.css.ts +238 -0
- package/src/pdf/document/pdf-document.renderer.spec.ts +129 -0
- package/src/pdf/document/pdf-document.renderer.ts +215 -0
- package/src/pdf/document/pdf-document.service.ts +77 -0
- package/src/pdf/document/pdf-document.theme.ts +146 -0
- package/src/pdf/document/pdf-document.types.ts +97 -0
- package/src/pdf/pdf.module.ts +3 -2
- package/src/pdf/pdf.service.spec.ts +131 -0
- package/src/pdf/pdf.service.ts +245 -82
- package/src/pdf/templates/commercial-proposal.template.spec.ts +177 -0
- package/src/pdf/templates/commercial-proposal.template.ts +400 -0
- package/src/profile/dto/change-password.dto.ts +25 -7
- package/src/profile/profile.service.spec.ts +97 -0
- package/src/profile/profile.service.ts +9 -3
- package/src/realtime/realtime-tick.coalescer.spec.ts +92 -0
- package/src/realtime/realtime-tick.coalescer.ts +60 -0
- package/src/realtime/realtime.service.spec.ts +33 -0
- package/src/realtime/realtime.service.ts +28 -2
- package/src/redis/redis-kv.service.ts +261 -0
- package/src/redis/redis-master.spec.ts +111 -0
- package/src/redis/redis-master.ts +86 -0
- package/src/redis/redis-pubsub.ts +27 -3
- package/src/redis/redis.module.ts +17 -0
- package/src/session/session.service.spec.ts +121 -42
- package/src/session/session.service.ts +279 -82
- package/src/setting/favicon.controller.spec.ts +92 -0
- package/src/setting/favicon.controller.ts +135 -0
- package/src/setting/setting.module.ts +2 -1
- package/src/setting/setting.service.ts +44 -3
- package/src/task/task.service.spec.ts +41 -0
- package/src/task/task.service.ts +53 -13
- package/src/token/token.service.spec.ts +90 -0
- package/src/token/token.service.ts +48 -2
- package/src/user/user-credential.util.ts +14 -5
- package/src/user/user.service.ts +2 -12
- package/src/user/user.sort.ts +25 -0
- package/src/utils/abbreviate-name.spec.ts +50 -0
- package/src/utils/abbreviate-name.ts +44 -0
- package/src/utils/date-range-query.dto.ts +56 -0
- package/src/utils/date-range.spec.ts +175 -0
- package/src/utils/date-range.ts +246 -0
- package/src/webhook-integration/webhook-utils.spec.ts +67 -0
- package/src/webhook-integration/webhook-utils.ts +26 -0
- package/src/whatsapp-sender/whatsapp-recipients.spec.ts +89 -0
- package/src/whatsapp-sender/whatsapp-recipients.ts +83 -0
- package/src/whatsapp-sender/whatsapp-sender.service.spec.ts +185 -0
- package/src/whatsapp-sender/whatsapp-sender.service.ts +90 -7
- package/hedhog/query/device_pairing_request.sql +0 -46
- package/hedhog/query/impersonation_grant.sql +0 -71
- package/hedhog/query/oauth_authorize_pkce.sql +0 -58
- package/hedhog/query/oauth_mobile_state_token.sql +0 -30
- package/hedhog/query/oauth_web_ref_token.sql +0 -25
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Tradução única de `?from=yyyy-MM-dd&to=yyyy-MM-dd` para limites comparáveis
|
|
4
|
+
* no banco.
|
|
5
|
+
*
|
|
6
|
+
* A janela é **meio-aberta** — `[from 00:00, to+1d 00:00)` — e nunca inclusiva.
|
|
7
|
+
* `lte new Date('2026-08-31')` compara contra o *instante* `T00:00:00Z` e
|
|
8
|
+
* derruba o dia 31 inteiro; `lte 23:59:59.999` perde o último milissegundo e
|
|
9
|
+
* mente sobre o modelo de dados. A forma meio-aberta é a única que vale igual
|
|
10
|
+
* para coluna `@db.Date` e para coluna `@db.Timestamptz(6)`, sem flag nenhum.
|
|
11
|
+
*
|
|
12
|
+
* Diferenças de propósito para o `resolveRangeWindow` do operations
|
|
13
|
+
* (`libraries/operations/src/services/shared/operations-activity-window.helper.ts`),
|
|
14
|
+
* que serve relatório e não listagem:
|
|
15
|
+
*
|
|
16
|
+
* - sem `from` e sem `to` devolve `null` (= sem recorte), e não o dia de hoje:
|
|
17
|
+
* listagem sem filtro tem de devolver tudo;
|
|
18
|
+
* - **não limita o fim em agora**: reunião de amanhã, contrato que vence em
|
|
19
|
+
* 2027 e assinatura com período à frente são justamente o que essas telas
|
|
20
|
+
* procuram;
|
|
21
|
+
* - aceita janela aberta de um lado só.
|
|
22
|
+
*
|
|
23
|
+
* Os dois hão de convergir, mas depois: aquele alimenta o e-mail do relatório
|
|
24
|
+
* diário e depende do clamp.
|
|
25
|
+
*/
|
|
26
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
+
exports.addIsoDays = addIsoDays;
|
|
28
|
+
exports.resolveDateRange = resolveDateRange;
|
|
29
|
+
exports.dateRangeWhere = dateRangeWhere;
|
|
30
|
+
/** Tolera ISO completo: só o prefixo `yyyy-MM-dd` interessa. */
|
|
31
|
+
const ISO_DATE_PREFIX = /^(\d{4})-(\d{2})-(\d{2})/;
|
|
32
|
+
function normalizeTimezone(timezone) {
|
|
33
|
+
const candidate = String(timezone !== null && timezone !== void 0 ? timezone : '').trim();
|
|
34
|
+
if (!candidate)
|
|
35
|
+
return 'UTC';
|
|
36
|
+
try {
|
|
37
|
+
new Intl.DateTimeFormat('en-US', { timeZone: candidate });
|
|
38
|
+
return candidate;
|
|
39
|
+
}
|
|
40
|
+
catch (_a) {
|
|
41
|
+
// Fuso inventado não pode derrubar uma listagem: cai no fuso dos pods.
|
|
42
|
+
return 'UTC';
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function toIsoDate(value) {
|
|
46
|
+
const match = ISO_DATE_PREFIX.exec(String(value !== null && value !== void 0 ? value : '').trim());
|
|
47
|
+
if (!match)
|
|
48
|
+
return null;
|
|
49
|
+
const [, yearText, monthText, dayText] = match;
|
|
50
|
+
const year = Number(yearText);
|
|
51
|
+
const month = Number(monthText);
|
|
52
|
+
const day = Number(dayText);
|
|
53
|
+
// `2026-02-31` casa com o regex e o `Date.UTC` o aceita virando 03/03.
|
|
54
|
+
// Só a volta denuncia.
|
|
55
|
+
const probe = new Date(Date.UTC(year, month - 1, day));
|
|
56
|
+
if (probe.getUTCFullYear() !== year ||
|
|
57
|
+
probe.getUTCMonth() !== month - 1 ||
|
|
58
|
+
probe.getUTCDate() !== day) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
return `${yearText}-${monthText}-${dayText}`;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Soma dias de **calendário**. Somar 86400000 ms a um instante zonado erra o
|
|
65
|
+
* dia em toda virada de horário de verão.
|
|
66
|
+
*/
|
|
67
|
+
function addIsoDays(isoDate, days) {
|
|
68
|
+
const [year, month, day] = isoDate.split('-').map(Number);
|
|
69
|
+
return new Date(Date.UTC(year, month - 1, day + days))
|
|
70
|
+
.toISOString()
|
|
71
|
+
.slice(0, 10);
|
|
72
|
+
}
|
|
73
|
+
function utcMidnight(isoDate) {
|
|
74
|
+
return new Date(`${isoDate}T00:00:00.000Z`);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Deslocamento do fuso, em ms, no instante informado. Formatar a data no fuso
|
|
78
|
+
* e reinterpretar as partes como UTC devolve o offset vigente — inclusive em
|
|
79
|
+
* fuso com horário de verão.
|
|
80
|
+
*/
|
|
81
|
+
function timezoneOffsetMs(at, timezone) {
|
|
82
|
+
const parts = new Intl.DateTimeFormat('en-US', {
|
|
83
|
+
timeZone: timezone,
|
|
84
|
+
hour12: false,
|
|
85
|
+
year: 'numeric',
|
|
86
|
+
month: '2-digit',
|
|
87
|
+
day: '2-digit',
|
|
88
|
+
hour: '2-digit',
|
|
89
|
+
minute: '2-digit',
|
|
90
|
+
second: '2-digit',
|
|
91
|
+
}).formatToParts(at);
|
|
92
|
+
const part = (type) => { var _a, _b; return Number((_b = (_a = parts.find((item) => item.type === type)) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : 0); };
|
|
93
|
+
const asUtc = Date.UTC(part('year'), part('month') - 1, part('day'),
|
|
94
|
+
// Algumas engines devolvem "24" para a meia-noite em hour12:false.
|
|
95
|
+
part('hour') % 24, part('minute'), part('second'));
|
|
96
|
+
return asUtc - at.getTime();
|
|
97
|
+
}
|
|
98
|
+
/** Meia-noite civil de `isoDate` naquele fuso, como instante UTC. */
|
|
99
|
+
function zonedMidnight(isoDate, timezone) {
|
|
100
|
+
if (timezone === 'UTC')
|
|
101
|
+
return utcMidnight(isoDate);
|
|
102
|
+
const naive = Date.parse(`${isoDate}T00:00:00.000Z`);
|
|
103
|
+
// Duas passadas: a primeira usa o offset do palpite, a segunda o do instante
|
|
104
|
+
// já corrigido — é o que resolve a virada de horário de verão.
|
|
105
|
+
let utc = naive;
|
|
106
|
+
for (let pass = 0; pass < 2; pass += 1) {
|
|
107
|
+
utc = naive - timezoneOffsetMs(new Date(utc), timezone);
|
|
108
|
+
}
|
|
109
|
+
return new Date(utc);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Resolve o par `from`/`to` da query.
|
|
113
|
+
*
|
|
114
|
+
* Devolve `null` quando nenhuma das pontas é data utilizável — o que cobre de
|
|
115
|
+
* uma vez "o cliente não filtrou", "o cliente limpou o campo e mandou
|
|
116
|
+
* `?from=`" e "o cliente mandou `31/08/2026`". Filtro ilegível vira "sem
|
|
117
|
+
* filtro", não 500: o `ValidationPipe` barra o que dá para barrar na borda, e
|
|
118
|
+
* aqui dentro a listagem não pode cair.
|
|
119
|
+
*
|
|
120
|
+
* Intervalo invertido é desinvertido: arrastar o calendário de trás para
|
|
121
|
+
* frente não deve devolver lista vazia.
|
|
122
|
+
*/
|
|
123
|
+
function resolveDateRange(from, to, options = {}) {
|
|
124
|
+
const timezone = normalizeTimezone(options.timezone);
|
|
125
|
+
let fromIso = toIsoDate(from);
|
|
126
|
+
let toIso = toIsoDate(to);
|
|
127
|
+
if (!fromIso && !toIso)
|
|
128
|
+
return null;
|
|
129
|
+
if (fromIso && toIso && toIso < fromIso) {
|
|
130
|
+
[fromIso, toIso] = [toIso, fromIso];
|
|
131
|
+
}
|
|
132
|
+
const toExclusiveIso = toIso ? addIsoDays(toIso, 1) : undefined;
|
|
133
|
+
return {
|
|
134
|
+
gte: fromIso ? zonedMidnight(fromIso, timezone) : undefined,
|
|
135
|
+
lt: toExclusiveIso ? zonedMidnight(toExclusiveIso, timezone) : undefined,
|
|
136
|
+
dateOnly: {
|
|
137
|
+
gte: fromIso ? utcMidnight(fromIso) : undefined,
|
|
138
|
+
lt: toExclusiveIso ? utcMidnight(toExclusiveIso) : undefined,
|
|
139
|
+
},
|
|
140
|
+
fromIso: fromIso !== null && fromIso !== void 0 ? fromIso : undefined,
|
|
141
|
+
toExclusiveIso,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Fragmento pronto para espalhar dentro de um `where` do Prisma:
|
|
146
|
+
*
|
|
147
|
+
* ```ts
|
|
148
|
+
* const where = {
|
|
149
|
+
* deleted_at: null,
|
|
150
|
+
* ...dateRangeWhere('created_at', filters?.from, filters?.to),
|
|
151
|
+
* };
|
|
152
|
+
* ```
|
|
153
|
+
*
|
|
154
|
+
* Devolve `{}` quando não há recorte, então espalhar é sempre seguro e não
|
|
155
|
+
* existe o caminho "montei um `created_at: {}` vazio". As chaves ausentes são
|
|
156
|
+
* omitidas de verdade, não postas como `undefined`.
|
|
157
|
+
*/
|
|
158
|
+
function dateRangeWhere(field, from, to, options = {}) {
|
|
159
|
+
const range = resolveDateRange(from, to, options);
|
|
160
|
+
if (!range)
|
|
161
|
+
return {};
|
|
162
|
+
const source = options.dateOnly
|
|
163
|
+
? range.dateOnly
|
|
164
|
+
: { gte: range.gte, lt: range.lt };
|
|
165
|
+
const bounds = {};
|
|
166
|
+
if (source.gte)
|
|
167
|
+
bounds.gte = source.gte;
|
|
168
|
+
if (source.lt)
|
|
169
|
+
bounds.lt = source.lt;
|
|
170
|
+
return Object.keys(bounds).length > 0 ? { [field]: bounds } : {};
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=date-range.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-range.js","sourceRoot":"","sources":["../../src/utils/date-range.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook-utils.d.ts","sourceRoot":"","sources":["../../src/webhook-integration/webhook-utils.ts"],"names":[],"mappings":"AAGA,wBAAgB,gBAAgB,wDAE/B;AAED,wBAAgB,gBAAgB,WAE/B;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,UAEtC;
|
|
1
|
+
{"version":3,"file":"webhook-utils.d.ts","sourceRoot":"","sources":["../../src/webhook-integration/webhook-utils.ts"],"names":[],"mappings":"AAGA,wBAAgB,gBAAgB,wDAE/B;AAED,wBAAgB,gBAAgB,WAE/B;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,UAEtC;AA4BD,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,OAuB3E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,OAoB9C;AAqBD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,OAAO,EACd,OAAO,SAAK,GACX,OAAO,CAiCT;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,OAejD"}
|
|
@@ -51,6 +51,30 @@ function createPlainToken() {
|
|
|
51
51
|
function hashToken(token) {
|
|
52
52
|
return (0, crypto_1.createHash)('sha256').update(token).digest('hex');
|
|
53
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Handlebars puro não compara valores: `{{#if}}` só testa se algo é vazio. Sem
|
|
56
|
+
* isto um template não consegue reagir ao conteúdo do payload — o caso que
|
|
57
|
+
* motivou os helpers foi o webhook do Alertmanager, onde `status` chega como
|
|
58
|
+
* "firing" ou "resolved" e a mensagem precisa ser diferente em cada caso (mandar
|
|
59
|
+
* o texto de alerta quando o problema acabou é pior do que não mandar nada).
|
|
60
|
+
*
|
|
61
|
+
* Registrados uma vez, no import do módulo: `Handlebars.registerHelper` é global
|
|
62
|
+
* e chamá-lo a cada render só repetiria trabalho.
|
|
63
|
+
*/
|
|
64
|
+
const HELPERS = {
|
|
65
|
+
// `{{#if (eq status "firing")}}`. A comparação é frouxa de propósito: o payload
|
|
66
|
+
// vem de JSON externo, onde 200 e "200" são a mesma coisa para quem escreve o
|
|
67
|
+
// template.
|
|
68
|
+
eq: (a, b) => String(a) === String(b),
|
|
69
|
+
ne: (a, b) => String(a) !== String(b),
|
|
70
|
+
gt: (a, b) => Number(a) > Number(b),
|
|
71
|
+
lt: (a, b) => Number(a) < Number(b),
|
|
72
|
+
upper: (value) => String(value !== null && value !== void 0 ? value : '').toUpperCase(),
|
|
73
|
+
lower: (value) => String(value !== null && value !== void 0 ? value : '').toLowerCase(),
|
|
74
|
+
};
|
|
75
|
+
for (const [name, fn] of Object.entries(HELPERS)) {
|
|
76
|
+
Handlebars.registerHelper(name, fn);
|
|
77
|
+
}
|
|
54
78
|
function renderTemplate(source, context) {
|
|
55
79
|
if (source === undefined || source === null) {
|
|
56
80
|
return source;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook-utils.js","sourceRoot":"","sources":["../../src/webhook-integration/webhook-utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,4CAEC;AAED,4CAEC;AAED,8BAEC;
|
|
1
|
+
{"version":3,"file":"webhook-utils.js","sourceRoot":"","sources":["../../src/webhook-integration/webhook-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { WhatsappTargetType } from './whatsapp-sender.service';
|
|
2
|
+
/**
|
|
3
|
+
* Destino de um aviso interno por WhatsApp: celular ou grupo.
|
|
4
|
+
*
|
|
5
|
+
* Mora no core, e nao na library que avisa, porque ja sao duas a ler a mesma
|
|
6
|
+
* lista digitada a mao — o SAC, para o grupo do atendimento, e o commerce, para
|
|
7
|
+
* os grupos de venda. Reconhecedor de JID de grupo duplicado e como as duas
|
|
8
|
+
* divergem: uma passa a aceitar o id sem sufixo e a outra nao, e o destino some
|
|
9
|
+
* em silencio no modulo que ficou para tras.
|
|
10
|
+
*/
|
|
11
|
+
export type WhatsappRecipient = {
|
|
12
|
+
to: string;
|
|
13
|
+
targetType: WhatsappTargetType;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Id de grupo do WhatsApp (`...@g.us`), ou null quando o item nao e grupo.
|
|
17
|
+
*
|
|
18
|
+
* Grupo tem duas formas: a atual, so digitos (`120363...@g.us`), e a antiga,
|
|
19
|
+
* derivada de quem criou o grupo (`5511999998888-1564082267@g.us`). As duas
|
|
20
|
+
* saem do painel da Evolution ja com o sufixo.
|
|
21
|
+
*
|
|
22
|
+
* Sem sufixo tambem vale: um id colado do painel tem 18 digitos, e acima do teto
|
|
23
|
+
* do E.164 (15) nao existe telefone — a alternativa seria o descarte silencioso
|
|
24
|
+
* por "longo demais", que e o modo de falha que este canal combate. O corte em
|
|
25
|
+
* 20 digitos deixa de fora a colagem de dois telefones grudados, que nao e
|
|
26
|
+
* destino nenhum.
|
|
27
|
+
*/
|
|
28
|
+
export declare function toWhatsappGroupJid(value: string): string | null;
|
|
29
|
+
/**
|
|
30
|
+
* Destinos de WhatsApp de uma lista digitada a mao: celulares e grupos.
|
|
31
|
+
*
|
|
32
|
+
* Nao da para reusar um `split` de e-mail: `WhatsappSenderService.normalizeTarget`
|
|
33
|
+
* apenas remove os nao-digitos e **nao acrescenta DDI**. Um `(11) 99999-8888`
|
|
34
|
+
* digitado no admin viraria `11999998888`, um numero que o provedor aceita e
|
|
35
|
+
* entrega em outro lugar — falha silenciosa, que e exatamente o que este canal
|
|
36
|
+
* existe para evitar. Por isso o DDI 55 e completado aqui quando o que sobrou
|
|
37
|
+
* tem cara de numero nacional (DDD + 8 ou 9 digitos).
|
|
38
|
+
*
|
|
39
|
+
* A separacao e so por virgula, ponto-e-virgula e quebra de linha — nao por
|
|
40
|
+
* espaco. Espaco faz parte da mascara de um telefone (`+55 (11) 3333-4444`), e
|
|
41
|
+
* quebrar ali produziria os fragmentos `+55`, `(11)` e `3333-4444`, todos
|
|
42
|
+
* descartados: a lista inteira sumiria em silencio.
|
|
43
|
+
*
|
|
44
|
+
* Menos de 10 digitos nao e telefone com DDD, e mais de 15 nao e telefone nenhum
|
|
45
|
+
* (o teto do E.164) — normalmente sao dois numeros que alguem separou so com
|
|
46
|
+
* espaco. Descartar e melhor que enviar para um numero inventado.
|
|
47
|
+
*/
|
|
48
|
+
export declare function parseWhatsappRecipients(raw: string | null | undefined): WhatsappRecipient[];
|
|
49
|
+
//# sourceMappingURL=whatsapp-recipients.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whatsapp-recipients.d.ts","sourceRoot":"","sources":["../../src/whatsapp-sender/whatsapp-recipients.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,kBAAkB,CAAC;CAChC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK/D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC7B,iBAAiB,EAAE,CAyBrB"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toWhatsappGroupJid = toWhatsappGroupJid;
|
|
4
|
+
exports.parseWhatsappRecipients = parseWhatsappRecipients;
|
|
5
|
+
/**
|
|
6
|
+
* Id de grupo do WhatsApp (`...@g.us`), ou null quando o item nao e grupo.
|
|
7
|
+
*
|
|
8
|
+
* Grupo tem duas formas: a atual, so digitos (`120363...@g.us`), e a antiga,
|
|
9
|
+
* derivada de quem criou o grupo (`5511999998888-1564082267@g.us`). As duas
|
|
10
|
+
* saem do painel da Evolution ja com o sufixo.
|
|
11
|
+
*
|
|
12
|
+
* Sem sufixo tambem vale: um id colado do painel tem 18 digitos, e acima do teto
|
|
13
|
+
* do E.164 (15) nao existe telefone — a alternativa seria o descarte silencioso
|
|
14
|
+
* por "longo demais", que e o modo de falha que este canal combate. O corte em
|
|
15
|
+
* 20 digitos deixa de fora a colagem de dois telefones grudados, que nao e
|
|
16
|
+
* destino nenhum.
|
|
17
|
+
*/
|
|
18
|
+
function toWhatsappGroupJid(value) {
|
|
19
|
+
const match = /^(\d{5,}(?:-\d{5,})?)@g\.us$/i.exec(value);
|
|
20
|
+
if (match)
|
|
21
|
+
return `${match[1]}@g.us`;
|
|
22
|
+
return /^\d{16,20}$/.test(value) ? `${value}@g.us` : null;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Destinos de WhatsApp de uma lista digitada a mao: celulares e grupos.
|
|
26
|
+
*
|
|
27
|
+
* Nao da para reusar um `split` de e-mail: `WhatsappSenderService.normalizeTarget`
|
|
28
|
+
* apenas remove os nao-digitos e **nao acrescenta DDI**. Um `(11) 99999-8888`
|
|
29
|
+
* digitado no admin viraria `11999998888`, um numero que o provedor aceita e
|
|
30
|
+
* entrega em outro lugar — falha silenciosa, que e exatamente o que este canal
|
|
31
|
+
* existe para evitar. Por isso o DDI 55 e completado aqui quando o que sobrou
|
|
32
|
+
* tem cara de numero nacional (DDD + 8 ou 9 digitos).
|
|
33
|
+
*
|
|
34
|
+
* A separacao e so por virgula, ponto-e-virgula e quebra de linha — nao por
|
|
35
|
+
* espaco. Espaco faz parte da mascara de um telefone (`+55 (11) 3333-4444`), e
|
|
36
|
+
* quebrar ali produziria os fragmentos `+55`, `(11)` e `3333-4444`, todos
|
|
37
|
+
* descartados: a lista inteira sumiria em silencio.
|
|
38
|
+
*
|
|
39
|
+
* Menos de 10 digitos nao e telefone com DDD, e mais de 15 nao e telefone nenhum
|
|
40
|
+
* (o teto do E.164) — normalmente sao dois numeros que alguem separou so com
|
|
41
|
+
* espaco. Descartar e melhor que enviar para um numero inventado.
|
|
42
|
+
*/
|
|
43
|
+
function parseWhatsappRecipients(raw) {
|
|
44
|
+
if (!raw)
|
|
45
|
+
return [];
|
|
46
|
+
// Map, e nao Set: o mesmo destino escrito de duas formas continua contando uma
|
|
47
|
+
// vez so, e o tipo precisa vir junto do valor.
|
|
48
|
+
const seen = new Map();
|
|
49
|
+
for (const item of raw.split(/[,;\n]+/)) {
|
|
50
|
+
const value = item.trim();
|
|
51
|
+
if (!value)
|
|
52
|
+
continue;
|
|
53
|
+
const group = toWhatsappGroupJid(value);
|
|
54
|
+
if (group) {
|
|
55
|
+
seen.set(group, { to: group, targetType: 'group' });
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
const digits = value.replace(/\D+/g, '');
|
|
59
|
+
if (digits.length < 10 || digits.length > 15)
|
|
60
|
+
continue;
|
|
61
|
+
const phone = digits.length <= 11 ? `55${digits}` : digits;
|
|
62
|
+
seen.set(phone, { to: phone, targetType: 'phone' });
|
|
63
|
+
}
|
|
64
|
+
return [...seen.values()];
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=whatsapp-recipients.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whatsapp-recipients.js","sourceRoot":"","sources":["../../src/whatsapp-sender/whatsapp-recipients.ts"],"names":[],"mappings":";;AA6BA,gDAKC;AAqBD,0DA2BC;AAlED;;;;;;;;;;;;GAYG;AACH,SAAgB,kBAAkB,CAAC,KAAa;IAC9C,MAAM,KAAK,GAAG,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1D,IAAI,KAAK;QAAE,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;IAErC,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5D,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAgB,uBAAuB,CACrC,GAA8B;IAE9B,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IAEpB,+EAA+E;IAC/E,+CAA+C;IAC/C,MAAM,IAAI,GAAG,IAAI,GAAG,EAA6B,CAAC;IAElD,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK;YAAE,SAAS;QAErB,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAExC,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;YACpD,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACzC,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE;YAAE,SAAS;QACvD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAC3D,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { PrismaService } from '@hed-hog/api-prisma';
|
|
2
|
+
import { BadRequestException } from '@nestjs/common';
|
|
2
3
|
export type WhatsappTargetType = 'phone' | 'group';
|
|
3
4
|
export type WhatsappMedia = {
|
|
4
5
|
/** Bare base64 (sem prefixo data:) ou data URL — ambos aceitos. */
|
|
@@ -23,6 +24,16 @@ export type WhatsappSendInput = {
|
|
|
23
24
|
params?: string[];
|
|
24
25
|
};
|
|
25
26
|
};
|
|
27
|
+
/**
|
|
28
|
+
* Erro de envio classificado: `retryable` diz se tentar de novo pode dar
|
|
29
|
+
* resultado diferente. Um HTTP 4xx da Graph API (id inexistente, sem
|
|
30
|
+
* permissão, token ruim) não muda em cinco minutos; um 5xx ou falha de rede
|
|
31
|
+
* pode ser uma instabilidade passageira do provedor.
|
|
32
|
+
*/
|
|
33
|
+
export declare class WhatsappSendError extends BadRequestException {
|
|
34
|
+
readonly retryable: boolean;
|
|
35
|
+
constructor(message: string, retryable: boolean);
|
|
36
|
+
}
|
|
26
37
|
/**
|
|
27
38
|
* Envio de WhatsApp usando um perfil de integração escolhido pelo usuário.
|
|
28
39
|
*
|
|
@@ -37,6 +48,20 @@ export declare class WhatsappSenderService {
|
|
|
37
48
|
send(input: WhatsappSendInput): Promise<void>;
|
|
38
49
|
/** Diz se há perfil utilizável, para o chamador decidir por um fallback sem tentar o envio. */
|
|
39
50
|
isConfigured(profileSlug?: string): Promise<boolean>;
|
|
51
|
+
/**
|
|
52
|
+
* Identidade do perfil que o `send` usaria, sem o `config`.
|
|
53
|
+
*
|
|
54
|
+
* Quem envia pelo provider oficial precisa dizer por qual número a mensagem
|
|
55
|
+
* sai, e cada módulo guarda esse id no próprio cadastro. Para achar o cadastro
|
|
56
|
+
* certo é preciso saber qual perfil foi resolvido — inclusive quando o slug
|
|
57
|
+
* veio vazio e a escolha coube a este serviço. O `config` fica de fora de
|
|
58
|
+
* propósito: é onde moram `access_token` e `app_secret`.
|
|
59
|
+
*/
|
|
60
|
+
describeProfile(profileSlug?: string): Promise<{
|
|
61
|
+
id: number;
|
|
62
|
+
slug: string;
|
|
63
|
+
providerSlug: string;
|
|
64
|
+
}>;
|
|
40
65
|
/**
|
|
41
66
|
* Normaliza o destino: número vira só dígitos, id de grupo passa intacto
|
|
42
67
|
* (grupos do WhatsApp têm sufixo `@g.us`, que seria destruído por um strip).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whatsapp-sender.service.d.ts","sourceRoot":"","sources":["../../src/whatsapp-sender/whatsapp-sender.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"whatsapp-sender.service.d.ts","sourceRoot":"","sources":["../../src/whatsapp-sender/whatsapp-sender.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,mBAAmB,EAMpB,MAAM,gBAAgB,CAAC;AAKxB,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,OAAO,CAAC;AAEnD,MAAM,MAAM,aAAa,GAAG;IAC1B,mEAAmE;IACnE,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CACnE,CAAC;AASF;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,mBAAmB;aAGtC,SAAS,EAAE,OAAO;gBADlC,OAAO,EAAE,MAAM,EACC,SAAS,EAAE,OAAO;CAIrC;AAED;;;;;;GAMG;AACH,qBACa,qBAAqB;IAK9B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0C;gBAI9C,MAAM,EAAE,aAAa;IAGlC,IAAI,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAenD,+FAA+F;IACzF,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAoB1D;;;;;;;;OAQG;IACG,eAAe,CACnB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IAK9D;;;OAGG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,GAAE,kBAA4B,GAAG,MAAM;YAsBnE,cAAc;IA0C5B,OAAO,CAAC,mBAAmB;YAUb,iBAAiB;YAiEjB,gBAAgB;CAwG/B"}
|
|
@@ -13,10 +13,23 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
13
13
|
};
|
|
14
14
|
var WhatsappSenderService_1;
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
-
exports.WhatsappSenderService = void 0;
|
|
16
|
+
exports.WhatsappSenderService = exports.WhatsappSendError = void 0;
|
|
17
17
|
const api_prisma_1 = require("@hed-hog/api-prisma");
|
|
18
18
|
const common_1 = require("@nestjs/common");
|
|
19
19
|
const integration_profile_utils_1 = require("../integration-profile/integration-profile.utils");
|
|
20
|
+
/**
|
|
21
|
+
* Erro de envio classificado: `retryable` diz se tentar de novo pode dar
|
|
22
|
+
* resultado diferente. Um HTTP 4xx da Graph API (id inexistente, sem
|
|
23
|
+
* permissão, token ruim) não muda em cinco minutos; um 5xx ou falha de rede
|
|
24
|
+
* pode ser uma instabilidade passageira do provedor.
|
|
25
|
+
*/
|
|
26
|
+
class WhatsappSendError extends common_1.BadRequestException {
|
|
27
|
+
constructor(message, retryable) {
|
|
28
|
+
super(message);
|
|
29
|
+
this.retryable = retryable;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.WhatsappSendError = WhatsappSendError;
|
|
20
33
|
/**
|
|
21
34
|
* Envio de WhatsApp usando um perfil de integração escolhido pelo usuário.
|
|
22
35
|
*
|
|
@@ -58,6 +71,19 @@ let WhatsappSenderService = WhatsappSenderService_1 = class WhatsappSenderServic
|
|
|
58
71
|
return false;
|
|
59
72
|
}
|
|
60
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* Identidade do perfil que o `send` usaria, sem o `config`.
|
|
76
|
+
*
|
|
77
|
+
* Quem envia pelo provider oficial precisa dizer por qual número a mensagem
|
|
78
|
+
* sai, e cada módulo guarda esse id no próprio cadastro. Para achar o cadastro
|
|
79
|
+
* certo é preciso saber qual perfil foi resolvido — inclusive quando o slug
|
|
80
|
+
* veio vazio e a escolha coube a este serviço. O `config` fica de fora de
|
|
81
|
+
* propósito: é onde moram `access_token` e `app_secret`.
|
|
82
|
+
*/
|
|
83
|
+
async describeProfile(profileSlug) {
|
|
84
|
+
const { id, slug, providerSlug } = await this.resolveProfile(profileSlug);
|
|
85
|
+
return { id, slug, providerSlug };
|
|
86
|
+
}
|
|
61
87
|
/**
|
|
62
88
|
* Normaliza o destino: número vira só dígitos, id de grupo passa intacto
|
|
63
89
|
* (grupos do WhatsApp têm sufixo `@g.us`, que seria destruído por um strip).
|
|
@@ -104,6 +130,7 @@ let WhatsappSenderService = WhatsappSenderService_1 = class WhatsappSenderServic
|
|
|
104
130
|
throw new common_1.BadRequestException(`Perfil de integração "${profile.slug}" não é do tipo whatsapp.`);
|
|
105
131
|
}
|
|
106
132
|
return {
|
|
133
|
+
id: profile.id,
|
|
107
134
|
slug: profile.slug,
|
|
108
135
|
providerSlug: String((_c = (_b = profile.integration_provider) === null || _b === void 0 ? void 0 : _b.slug) !== null && _c !== void 0 ? _c : ''),
|
|
109
136
|
config: ((_d = profile.config) !== null && _d !== void 0 ? _d : {}),
|
|
@@ -147,14 +174,31 @@ let WhatsappSenderService = WhatsappSenderService_1 = class WhatsappSenderServic
|
|
|
147
174
|
if (!response.ok) {
|
|
148
175
|
const detail = await response.text().catch(() => '');
|
|
149
176
|
if (response.status === 401) {
|
|
150
|
-
throw new
|
|
177
|
+
throw new WhatsappSendError(`Credenciais do WhatsApp inválidas (401). Verifique o token do perfil "${profile.slug}".`, false);
|
|
151
178
|
}
|
|
152
|
-
|
|
179
|
+
// Número sem conta no WhatsApp: a Evolution responde 400 com
|
|
180
|
+
// `exists: false`. É dado do cadastro, não instabilidade — reenviar não
|
|
181
|
+
// muda nada, e o chamador precisa saber disso para não insistir.
|
|
182
|
+
if (isEvolutionNumberMissing(detail)) {
|
|
183
|
+
throw new WhatsappSendError(`O número ${target} não tem WhatsApp (Evolution: exists=false).`, false);
|
|
184
|
+
}
|
|
185
|
+
// Mesmo critério do provider oficial: 4xx é recusa estrutural, 5xx e
|
|
186
|
+
// 429 podem passar numa próxima tentativa.
|
|
187
|
+
throw new WhatsappSendError(`Evolution API recusou o envio (HTTP ${response.status}): ${detail.slice(0, 300)}`, response.status >= 500 || response.status === 429);
|
|
153
188
|
}
|
|
154
189
|
}
|
|
155
190
|
async sendWithOfficial(profile, input) {
|
|
156
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
191
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
157
192
|
const cfg = (0, integration_profile_utils_1.buildWhatsappOfficialConfigFromIntegration)(profile.config);
|
|
193
|
+
// A Cloud API da Meta não envia para grupo — não há endpoint para isso. Sem
|
|
194
|
+
// esta guarda o `normalizeTarget(..., 'phone')` logo abaixo arrancaria o
|
|
195
|
+
// sufixo `@g.us` e a Graph API receberia o id do grupo como se fosse um
|
|
196
|
+
// telefone: ou erro genérico de número inválido, ou (pior) entrega a um
|
|
197
|
+
// número que por acaso exista. `retryable: false` porque trocar de provider
|
|
198
|
+
// é decisão de configuração, não instabilidade.
|
|
199
|
+
if (input.targetType === 'group') {
|
|
200
|
+
throw new WhatsappSendError(`Perfil de integração "${profile.slug}" usa a Cloud API oficial da Meta, que não envia mensagem para grupo. Use um perfil evolution-api para esse destino.`, false);
|
|
201
|
+
}
|
|
158
202
|
if (!cfg.accessToken) {
|
|
159
203
|
throw new common_1.BadRequestException(`Perfil de WhatsApp "${profile.slug}" está sem access_token.`);
|
|
160
204
|
}
|
|
@@ -204,9 +248,14 @@ let WhatsappSenderService = WhatsappSenderService_1 = class WhatsappSenderServic
|
|
|
204
248
|
});
|
|
205
249
|
if (!response.ok) {
|
|
206
250
|
const payload = (await response.json().catch(() => ({})));
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
251
|
+
// Código documentado pela Meta para "business-initiated message fora da
|
|
252
|
+
// janela de 24h sem template" (re-engagement). Outros 4xx (id inválido,
|
|
253
|
+
// sem permissão, token ruim) não têm nada a ver com template e não
|
|
254
|
+
// devem exibir essa dica.
|
|
255
|
+
const isReengagementWindowError = ((_e = payload === null || payload === void 0 ? void 0 : payload.error) === null || _e === void 0 ? void 0 : _e.code) === 131047;
|
|
256
|
+
throw new WhatsappSendError(`WhatsApp recusou o envio (HTTP ${response.status}): ${(_g = (_f = payload === null || payload === void 0 ? void 0 : payload.error) === null || _f === void 0 ? void 0 : _f.message) !== null && _g !== void 0 ? _g : 'sem detalhe'}${!((_h = input.template) === null || _h === void 0 ? void 0 : _h.name) && isReengagementWindowError
|
|
257
|
+
? ' — sem template configurado, a entrega só funciona na janela de 24h'
|
|
258
|
+
: ''}`, response.status >= 500);
|
|
210
259
|
}
|
|
211
260
|
}
|
|
212
261
|
};
|
|
@@ -216,6 +265,21 @@ exports.WhatsappSenderService = WhatsappSenderService = WhatsappSenderService_1
|
|
|
216
265
|
__param(0, (0, common_1.Inject)((0, common_1.forwardRef)(() => api_prisma_1.PrismaService))),
|
|
217
266
|
__metadata("design:paramtypes", [api_prisma_1.PrismaService])
|
|
218
267
|
], WhatsappSenderService);
|
|
268
|
+
/**
|
|
269
|
+
* Reconhece o 400 da Evolution para destino inexistente:
|
|
270
|
+
* `{"response":{"message":[{"exists":false,"number":"55..."}]}}`.
|
|
271
|
+
*/
|
|
272
|
+
function isEvolutionNumberMissing(detail) {
|
|
273
|
+
var _a, _b;
|
|
274
|
+
try {
|
|
275
|
+
const messages = (_b = (_a = JSON.parse(detail)) === null || _a === void 0 ? void 0 : _a.response) === null || _b === void 0 ? void 0 : _b.message;
|
|
276
|
+
return (Array.isArray(messages) &&
|
|
277
|
+
messages.some((item) => item && typeof item === 'object' && item.exists === false));
|
|
278
|
+
}
|
|
279
|
+
catch (_c) {
|
|
280
|
+
return false;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
219
283
|
/** Evolution espera base64 puro; um data URL vindo do chamador quebraria o envio. */
|
|
220
284
|
function stripDataUrlPrefix(image) {
|
|
221
285
|
const match = /^data:[^;]+;base64,(.*)$/i.exec(image);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whatsapp-sender.service.js","sourceRoot":"","sources":["../../src/whatsapp-sender/whatsapp-sender.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAoD;AACpD,2CAOwB;AACxB,gGAE0D;
|
|
1
|
+
{"version":3,"file":"whatsapp-sender.service.js","sourceRoot":"","sources":["../../src/whatsapp-sender/whatsapp-sender.service.ts"],"names":[],"mappings":"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"}
|
package/hedhog/data/locale.yaml
CHANGED