@hed-hog/core 0.0.399 → 0.0.400
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 +4 -4
- package/dist/ai/ai.service.d.ts +35 -4
- package/dist/ai/ai.service.d.ts.map +1 -1
- package/dist/ai/ai.service.js +51 -137
- 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/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 +6 -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/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 +182 -6
- package/dist/file/file.service.d.ts.map +1 -1
- package/dist/file/file.service.js +386 -54
- 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 +75 -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 +17 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -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 +7 -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/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 +5 -1
- package/dist/mcp/mcp.module.js.map +1 -1
- 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 +115 -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.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.map +1 -1
- package/dist/oauth/providers/microsoft-entra-id.provider.js +6 -0
- 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/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/setting.controller.d.ts +5 -0
- package/dist/setting/setting.controller.d.ts.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 +46 -5
- 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 +6 -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 +140 -0
- package/hedhog/data/setting_group.yaml +137 -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 +183 -36
- package/hedhog/frontend/messages/pt.json +183 -36
- 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 +7 -5
- package/src/ai/ai-agent.sort.ts +21 -0
- package/src/ai/ai.service.spec.ts +173 -1
- package/src/ai/ai.service.ts +64 -193
- package/src/ai-instruction/ai-instruction.service.ts +32 -28
- package/src/ai-instruction/ai-instruction.sort.ts +32 -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 +6 -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/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 +94 -0
- package/src/file/file.service.ts +433 -53
- 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 +83 -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 +17 -0
- package/src/integration-profile/integration-profile.secrets.ts +7 -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/index.ts +2 -0
- package/src/integration-profile/testers/remaining.testers.spec.ts +79 -0
- package/src/integration-profile/testers/shipping.testers.ts +94 -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 +5 -1
- 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 +121 -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.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.ts +8 -1
- package/src/observability/monitored-cron.spec.ts +164 -31
- package/src/observability/monitored-cron.ts +154 -62
- 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/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 +112 -0
- package/src/whatsapp-sender/whatsapp-sender.service.ts +58 -5
- 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
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
|
+
ColumnsVisibilityMenu,
|
|
4
5
|
EmptyState,
|
|
6
|
+
EntityTable,
|
|
5
7
|
Page,
|
|
6
8
|
PageHeader,
|
|
7
9
|
PaginationFooter,
|
|
@@ -19,21 +21,18 @@ import {
|
|
|
19
21
|
} from '@/components/ui/card';
|
|
20
22
|
import { KpiCardsGrid } from '@/components/ui/kpi-cards-grid';
|
|
21
23
|
import { Skeleton } from '@/components/ui/skeleton';
|
|
22
|
-
import {
|
|
23
|
-
Table,
|
|
24
|
-
TableBody,
|
|
25
|
-
TableCell,
|
|
26
|
-
TableHead,
|
|
27
|
-
TableHeader,
|
|
28
|
-
TableRow,
|
|
29
|
-
} from '@/components/ui/table';
|
|
30
24
|
import { ToggleGroup, ToggleGroupItem } from '@/components/ui/toggle-group';
|
|
31
25
|
import {
|
|
32
26
|
Tooltip,
|
|
33
27
|
TooltipContent,
|
|
34
28
|
TooltipTrigger,
|
|
35
29
|
} from '@/components/ui/tooltip';
|
|
30
|
+
import {
|
|
31
|
+
useEntityColumnTable,
|
|
32
|
+
type EntityColumnMeta,
|
|
33
|
+
} from '@/hooks/use-entity-column-table';
|
|
36
34
|
import { usePersistedPageSize } from '@/hooks/use-persisted-page-size';
|
|
35
|
+
import { useTableSort, type SortableColumn } from '@/hooks/use-table-sort';
|
|
37
36
|
import { formatDateTime } from '@/lib/format-date';
|
|
38
37
|
import { PresenceDot } from '@/components/presence/presence-dot';
|
|
39
38
|
import { usePresence } from '@/components/presence/use-presence';
|
|
@@ -42,12 +41,7 @@ import { getUserEmail } from '@/lib/get-user-email';
|
|
|
42
41
|
import { PaginatedResult } from '@/types/pagination-result';
|
|
43
42
|
import { User, UserMfa } from '@hed-hog/api-types';
|
|
44
43
|
import { useApp, useQuery } from '@hed-hog/next-app-provider';
|
|
45
|
-
import {
|
|
46
|
-
type ColumnDef,
|
|
47
|
-
flexRender,
|
|
48
|
-
getCoreRowModel,
|
|
49
|
-
useReactTable,
|
|
50
|
-
} from '@tanstack/react-table';
|
|
44
|
+
import { type ColumnDef } from '@tanstack/react-table';
|
|
51
45
|
import { formatDistanceToNow } from 'date-fns';
|
|
52
46
|
import { enUS, ptBR } from 'date-fns/locale';
|
|
53
47
|
import {
|
|
@@ -81,6 +75,22 @@ type RequestResponse<T> = {
|
|
|
81
75
|
|
|
82
76
|
const DEFAULT_PAGE_SIZES = [6, 12, 24, 48, 96] as const;
|
|
83
77
|
|
|
78
|
+
/**
|
|
79
|
+
* Reaproveita o `USER_SORT` do backend. `email` fica de fora: mora em
|
|
80
|
+
* `user_identifier` (relação to-many filtrada por tipo), sem coluna própria em
|
|
81
|
+
* `user` para ordenar. `passwordReset` também fica de fora: é booleano
|
|
82
|
+
* calculado no service, não uma coluna.
|
|
83
|
+
*/
|
|
84
|
+
type UserSortField = 'name' | 'suspended_until' | 'last_login_at';
|
|
85
|
+
|
|
86
|
+
const SORT_COLUMNS: readonly SortableColumn<UserSortField>[] = [
|
|
87
|
+
'name',
|
|
88
|
+
'suspended_until',
|
|
89
|
+
{ field: 'last_login_at', initialOrder: 'desc' },
|
|
90
|
+
];
|
|
91
|
+
|
|
92
|
+
const DEFAULT_SORT = { field: 'name', order: 'asc' } as const;
|
|
93
|
+
|
|
84
94
|
export default function UserPage() {
|
|
85
95
|
const t = useTranslations('core.UserPage');
|
|
86
96
|
const simulationT = useTranslations('core.AccessSimulation');
|
|
@@ -94,6 +104,11 @@ export default function UserPage() {
|
|
|
94
104
|
const { canSimulateAccess } = useImpersonationAccess();
|
|
95
105
|
|
|
96
106
|
const [page, setPage] = useState(1);
|
|
107
|
+
const sort = useTableSort<UserSortField>({
|
|
108
|
+
columns: SORT_COLUMNS,
|
|
109
|
+
defaultSort: DEFAULT_SORT,
|
|
110
|
+
onSortChange: () => setPage(1),
|
|
111
|
+
});
|
|
97
112
|
const { data: generalSettings } = useQuery<{
|
|
98
113
|
data: Array<{ slug: string; value: string }>;
|
|
99
114
|
}>({
|
|
@@ -132,12 +147,21 @@ export default function UserPage() {
|
|
|
132
147
|
const [statusFilter, setStatusFilter] = useState('all');
|
|
133
148
|
|
|
134
149
|
useEffect(() => {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
150
|
+
// Deferred via setTimeout, not called synchronously in the effect body:
|
|
151
|
+
// reading the persisted mode after mount (never during the render that
|
|
152
|
+
// produced the SSR-consistent 'table' default) is what avoids a
|
|
153
|
+
// hydration mismatch here — see the same technique in
|
|
154
|
+
// `usePersistedViewMode`.
|
|
155
|
+
const timeout = window.setTimeout(() => {
|
|
156
|
+
try {
|
|
157
|
+
const saved = window.localStorage.getItem(USER_VIEW_STORAGE_KEY);
|
|
158
|
+
if (saved === 'table' || saved === 'cards') setViewMode(saved);
|
|
159
|
+
} catch {
|
|
160
|
+
// Ignore storage read failures.
|
|
161
|
+
}
|
|
162
|
+
}, 0);
|
|
163
|
+
|
|
164
|
+
return () => window.clearTimeout(timeout);
|
|
141
165
|
}, []);
|
|
142
166
|
|
|
143
167
|
const handleViewModeChange = (value: string) => {
|
|
@@ -165,6 +189,8 @@ export default function UserPage() {
|
|
|
165
189
|
searchQuery,
|
|
166
190
|
statusFilter,
|
|
167
191
|
currentLocaleCode,
|
|
192
|
+
sort.sortField,
|
|
193
|
+
sort.sortOrder,
|
|
168
194
|
],
|
|
169
195
|
queryFn: async () => {
|
|
170
196
|
const params = new URLSearchParams();
|
|
@@ -173,6 +199,8 @@ export default function UserPage() {
|
|
|
173
199
|
if (searchQuery) params.set('search', searchQuery);
|
|
174
200
|
if (statusFilter && statusFilter !== 'all')
|
|
175
201
|
params.set('filter', statusFilter);
|
|
202
|
+
params.set('sortField', sort.sortField);
|
|
203
|
+
params.set('sortOrder', sort.sortOrder);
|
|
176
204
|
|
|
177
205
|
const response = await request<RequestResponse<User>>({
|
|
178
206
|
url: `/user?${params.toString()}`,
|
|
@@ -283,7 +311,10 @@ export default function UserPage() {
|
|
|
283
311
|
() => [
|
|
284
312
|
{
|
|
285
313
|
accessorKey: 'name',
|
|
286
|
-
|
|
314
|
+
meta: {
|
|
315
|
+
label: t('columnName'),
|
|
316
|
+
sortField: 'name',
|
|
317
|
+
} satisfies EntityColumnMeta,
|
|
287
318
|
cell: ({ row }) => {
|
|
288
319
|
const user = row.original;
|
|
289
320
|
return (
|
|
@@ -310,7 +341,7 @@ export default function UserPage() {
|
|
|
310
341
|
},
|
|
311
342
|
{
|
|
312
343
|
accessorKey: 'email',
|
|
313
|
-
|
|
344
|
+
meta: { label: t('columnEmail') } satisfies EntityColumnMeta,
|
|
314
345
|
cell: ({ row }) => (
|
|
315
346
|
<span className="text-sm text-muted-foreground">
|
|
316
347
|
{getUserEmail(row.original)}
|
|
@@ -319,7 +350,10 @@ export default function UserPage() {
|
|
|
319
350
|
},
|
|
320
351
|
{
|
|
321
352
|
accessorKey: 'status',
|
|
322
|
-
|
|
353
|
+
meta: {
|
|
354
|
+
label: t('columnStatus'),
|
|
355
|
+
sortField: 'suspended_until',
|
|
356
|
+
} satisfies EntityColumnMeta,
|
|
323
357
|
cell: ({ row }) => {
|
|
324
358
|
const user = row.original;
|
|
325
359
|
return user.suspended_until ? (
|
|
@@ -341,7 +375,7 @@ export default function UserPage() {
|
|
|
341
375
|
},
|
|
342
376
|
{
|
|
343
377
|
id: 'passwordReset',
|
|
344
|
-
|
|
378
|
+
meta: { label: t('columnPasswordReset') } satisfies EntityColumnMeta,
|
|
345
379
|
cell: ({ row }) =>
|
|
346
380
|
row.original.requires_password_reset ? (
|
|
347
381
|
<Badge
|
|
@@ -359,7 +393,10 @@ export default function UserPage() {
|
|
|
359
393
|
},
|
|
360
394
|
{
|
|
361
395
|
id: 'lastLogin',
|
|
362
|
-
|
|
396
|
+
meta: {
|
|
397
|
+
label: t('columnLastLogin'),
|
|
398
|
+
sortField: 'last_login_at',
|
|
399
|
+
} satisfies EntityColumnMeta,
|
|
363
400
|
cell: ({ row }) => {
|
|
364
401
|
const lastLogin = getLastLoginLabel(row.original);
|
|
365
402
|
|
|
@@ -385,7 +422,6 @@ export default function UserPage() {
|
|
|
385
422
|
},
|
|
386
423
|
{
|
|
387
424
|
id: 'actions',
|
|
388
|
-
header: '',
|
|
389
425
|
cell: ({ row }) => (
|
|
390
426
|
<div className="flex justify-end gap-1">
|
|
391
427
|
{canSimulateAccess && canSimulate(row.original) && (
|
|
@@ -428,10 +464,10 @@ export default function UserPage() {
|
|
|
428
464
|
[paginate]
|
|
429
465
|
);
|
|
430
466
|
|
|
431
|
-
const table =
|
|
432
|
-
|
|
467
|
+
const { table, columnPrefs, visibilityMenuProps } = useEntityColumnTable({
|
|
468
|
+
storageKey: 'core-users-columns-v1',
|
|
433
469
|
columns,
|
|
434
|
-
|
|
470
|
+
data: tableData,
|
|
435
471
|
});
|
|
436
472
|
|
|
437
473
|
const users: User[] = tableData;
|
|
@@ -484,6 +520,9 @@ export default function UserPage() {
|
|
|
484
520
|
</div>
|
|
485
521
|
|
|
486
522
|
<div className="flex items-center gap-3 xl:justify-end">
|
|
523
|
+
{viewMode === 'table' && (
|
|
524
|
+
<ColumnsVisibilityMenu {...visibilityMenuProps} />
|
|
525
|
+
)}
|
|
487
526
|
<span className="text-xs font-medium text-muted-foreground">
|
|
488
527
|
{t('viewMode')}
|
|
489
528
|
</span>
|
|
@@ -551,44 +590,15 @@ export default function UserPage() {
|
|
|
551
590
|
onAction={handleOpenCreate}
|
|
552
591
|
/>
|
|
553
592
|
) : viewMode === 'table' ? (
|
|
554
|
-
<
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
: flexRender(
|
|
564
|
-
header.column.columnDef.header,
|
|
565
|
-
header.getContext()
|
|
566
|
-
)}
|
|
567
|
-
</TableHead>
|
|
568
|
-
))}
|
|
569
|
-
</TableRow>
|
|
570
|
-
))}
|
|
571
|
-
</TableHeader>
|
|
572
|
-
<TableBody>
|
|
573
|
-
{table.getRowModel().rows.map((row) => (
|
|
574
|
-
<TableRow
|
|
575
|
-
key={row.id}
|
|
576
|
-
className="cursor-pointer"
|
|
577
|
-
onDoubleClick={() => handleOpenEdit(row.original)}
|
|
578
|
-
>
|
|
579
|
-
{row.getVisibleCells().map((cell) => (
|
|
580
|
-
<TableCell key={cell.id}>
|
|
581
|
-
{flexRender(
|
|
582
|
-
cell.column.columnDef.cell,
|
|
583
|
-
cell.getContext()
|
|
584
|
-
)}
|
|
585
|
-
</TableCell>
|
|
586
|
-
))}
|
|
587
|
-
</TableRow>
|
|
588
|
-
))}
|
|
589
|
-
</TableBody>
|
|
590
|
-
</Table>
|
|
591
|
-
</div>
|
|
593
|
+
<EntityTable
|
|
594
|
+
table={table}
|
|
595
|
+
columnPrefs={columnPrefs}
|
|
596
|
+
getSortProps={sort.getSortProps}
|
|
597
|
+
rowProps={(row) => ({
|
|
598
|
+
className: 'cursor-pointer',
|
|
599
|
+
onDoubleClick: () => handleOpenEdit(row.original),
|
|
600
|
+
})}
|
|
601
|
+
/>
|
|
592
602
|
) : (
|
|
593
603
|
<div className="grid gap-4 grid-cols-1 sm:grid-cols-2 lg:grid-cols-2 xl:grid-cols-3">
|
|
594
604
|
{users.map((user: User) => (
|
|
@@ -1,4 +1,29 @@
|
|
|
1
1
|
{
|
|
2
|
+
"DateRangePicker": {
|
|
3
|
+
"placeholder": "Select period",
|
|
4
|
+
"apply": "Apply",
|
|
5
|
+
"clear": "Clear",
|
|
6
|
+
"clearTooltip": "Clear period",
|
|
7
|
+
"otherYears": "Other years",
|
|
8
|
+
"fromLabel": "From",
|
|
9
|
+
"toLabel": "To",
|
|
10
|
+
"datePlaceholder": "dd/mm/yyyy",
|
|
11
|
+
"invalidDate": "Invalid date",
|
|
12
|
+
"previousDecade": "Previous decade",
|
|
13
|
+
"nextDecade": "Next decade",
|
|
14
|
+
"presets": {
|
|
15
|
+
"today": "Today",
|
|
16
|
+
"yesterday": "Yesterday",
|
|
17
|
+
"last7Days": "Last 7 days",
|
|
18
|
+
"thisWeek": "This week",
|
|
19
|
+
"lastWeek": "Last week",
|
|
20
|
+
"thisMonth": "This month",
|
|
21
|
+
"lastMonth": "Last month",
|
|
22
|
+
"last30Days": "Last 30 days",
|
|
23
|
+
"last90Days": "Last 90 days",
|
|
24
|
+
"thisYear": "This year"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
2
27
|
"TagSelectorSheet": {
|
|
3
28
|
"addTag": "Add tag",
|
|
4
29
|
"sheetTitle": "Manage tags",
|
|
@@ -23,6 +48,16 @@
|
|
|
23
48
|
"btnBuscar": "Search",
|
|
24
49
|
"filterPlaceholder": "Filter"
|
|
25
50
|
},
|
|
51
|
+
"TableSort": {
|
|
52
|
+
"sortAscending": "Sort ascending",
|
|
53
|
+
"sortDescending": "Sort descending"
|
|
54
|
+
},
|
|
55
|
+
"ColumnsMenu": {
|
|
56
|
+
"trigger": "Columns",
|
|
57
|
+
"label": "Show columns",
|
|
58
|
+
"reset": "Reset to default",
|
|
59
|
+
"dragHandle": "Drag to reorder column"
|
|
60
|
+
},
|
|
26
61
|
"Sheet": {
|
|
27
62
|
"close": "Close"
|
|
28
63
|
},
|
|
@@ -574,6 +609,8 @@
|
|
|
574
609
|
"tableVariables": "Variables",
|
|
575
610
|
"tableUpdated": "Updated",
|
|
576
611
|
"tableActions": "Actions",
|
|
612
|
+
"moreVariables": "+{count} variables",
|
|
613
|
+
"allVariablesTitle": "All variables",
|
|
577
614
|
"editTemplate": "Edit Template",
|
|
578
615
|
"newTemplateTitle": "New Template",
|
|
579
616
|
"editTemplateDescription": "Edit email template information",
|
|
@@ -976,7 +1013,8 @@
|
|
|
976
1013
|
"nameLabel": "Name",
|
|
977
1014
|
"mfaNameAriaLabel": "MFA name",
|
|
978
1015
|
"cancel": "Cancel",
|
|
979
|
-
"save": "Save"
|
|
1016
|
+
"save": "Save",
|
|
1017
|
+
"removeMfa": "Remove method"
|
|
980
1018
|
},
|
|
981
1019
|
"RecoveryCodes": {
|
|
982
1020
|
"title": "Recovery Codes",
|
|
@@ -994,7 +1032,8 @@
|
|
|
994
1032
|
"allCodesCopyFailed": "Failed to copy codes",
|
|
995
1033
|
"noCodesAvailable": "No recovery codes to download",
|
|
996
1034
|
"codesDownloaded": "Recovery codes downloaded",
|
|
997
|
-
"downloadFailed": "Failed to download codes"
|
|
1035
|
+
"downloadFailed": "Failed to download codes",
|
|
1036
|
+
"copyCode": "Copy code"
|
|
998
1037
|
},
|
|
999
1038
|
"RegenerateRecoveryCodes": {
|
|
1000
1039
|
"title": "Regenerate Recovery Codes",
|
|
@@ -1410,44 +1449,99 @@
|
|
|
1410
1449
|
"byteUnitGB": "GB",
|
|
1411
1450
|
"byteUnitTB": "TB",
|
|
1412
1451
|
"selectOption": "Select an option",
|
|
1413
|
-
"
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1452
|
+
"profileTypes": {
|
|
1453
|
+
"ai": {
|
|
1454
|
+
"placeholder": "Select an AI profile",
|
|
1455
|
+
"emptyState": "No AI profiles found.",
|
|
1456
|
+
"name": "AI profile"
|
|
1457
|
+
},
|
|
1458
|
+
"email": {
|
|
1459
|
+
"placeholder": "Select a mail profile",
|
|
1460
|
+
"emptyState": "No mail profiles found.",
|
|
1461
|
+
"name": "email profile"
|
|
1462
|
+
},
|
|
1463
|
+
"whatsapp": {
|
|
1464
|
+
"placeholder": "Select a WhatsApp profile",
|
|
1465
|
+
"emptyState": "No WhatsApp profiles found.",
|
|
1466
|
+
"name": "WhatsApp profile"
|
|
1467
|
+
},
|
|
1468
|
+
"storage": {
|
|
1469
|
+
"placeholder": "Select a storage profile",
|
|
1470
|
+
"emptyState": "No storage profiles found.",
|
|
1471
|
+
"name": "storage profile"
|
|
1472
|
+
},
|
|
1473
|
+
"oauth": {
|
|
1474
|
+
"placeholder": "Select an OAuth profile",
|
|
1475
|
+
"emptyState": "No OAuth profiles found.",
|
|
1476
|
+
"name": "OAuth profile"
|
|
1477
|
+
},
|
|
1478
|
+
"payment": {
|
|
1479
|
+
"placeholder": "Select a payment profile",
|
|
1480
|
+
"emptyState": "No payment profiles found.",
|
|
1481
|
+
"name": "payment profile"
|
|
1482
|
+
},
|
|
1483
|
+
"infrastructure": {
|
|
1484
|
+
"placeholder": "Select infrastructure profile",
|
|
1485
|
+
"emptyState": "No infrastructure profiles found. Create a DigitalOcean or Kubernetes profile first.",
|
|
1486
|
+
"name": "infrastructure profile"
|
|
1487
|
+
},
|
|
1488
|
+
"shipping": {
|
|
1489
|
+
"placeholder": "Select a shipping profile",
|
|
1490
|
+
"emptyState": "No shipping profiles found. Create a Melhor Envio profile first.",
|
|
1491
|
+
"name": "shipping profile"
|
|
1492
|
+
},
|
|
1493
|
+
"captcha": {
|
|
1494
|
+
"placeholder": "Select a captcha profile",
|
|
1495
|
+
"emptyState": "No captcha profiles found.",
|
|
1496
|
+
"name": "captcha profile"
|
|
1497
|
+
},
|
|
1498
|
+
"video": {
|
|
1499
|
+
"placeholder": "Select a video profile",
|
|
1500
|
+
"emptyState": "No video profiles found.",
|
|
1501
|
+
"name": "video profile"
|
|
1502
|
+
},
|
|
1503
|
+
"fiscal": {
|
|
1504
|
+
"placeholder": "Select a fiscal profile",
|
|
1505
|
+
"emptyState": "No fiscal profiles found.",
|
|
1506
|
+
"name": "fiscal profile"
|
|
1507
|
+
},
|
|
1508
|
+
"generic": {
|
|
1509
|
+
"placeholder": "Select an integration profile",
|
|
1510
|
+
"emptyState": "No integration profiles found.",
|
|
1511
|
+
"name": "integration profile"
|
|
1512
|
+
}
|
|
1513
|
+
},
|
|
1514
|
+
"profileProviders": {
|
|
1515
|
+
"kubernetes": "Kubernetes profile"
|
|
1516
|
+
},
|
|
1427
1517
|
"editProfileAria": "Edit {profile}",
|
|
1428
1518
|
"createProfileAria": "Create {profile}",
|
|
1429
|
-
"profileTypeNames": {
|
|
1430
|
-
"ai": "AI profile",
|
|
1431
|
-
"email": "email profile",
|
|
1432
|
-
"whatsapp": "WhatsApp profile",
|
|
1433
|
-
"storage": "storage profile",
|
|
1434
|
-
"oauth": "OAuth profile",
|
|
1435
|
-
"payment": "payment profile",
|
|
1436
|
-
"infrastructure": "infrastructure profile",
|
|
1437
|
-
"kubernetes": "Kubernetes profile",
|
|
1438
|
-
"generic": "integration profile"
|
|
1439
|
-
},
|
|
1440
|
-
"selectInfraProfile": "Select infrastructure profile",
|
|
1441
|
-
"infraProfileEmptyState": "No infrastructure profiles found. Create a DigitalOcean or Kubernetes profile first.",
|
|
1442
|
-
"selectK8sInfraProfile": "Select Kubernetes profile",
|
|
1443
|
-
"k8sInfraProfileEmptyState": "No Kubernetes infrastructure profiles found. Create one first.",
|
|
1444
1519
|
"openLink": "Open",
|
|
1445
1520
|
"settingOptions": {
|
|
1446
1521
|
"commerce-android-checkout-mode": {
|
|
1447
1522
|
"web": "Website checkout",
|
|
1448
1523
|
"play_billing": "Google Play Billing (in-app purchase)"
|
|
1524
|
+
},
|
|
1525
|
+
"commerce-store-interest-mode": {
|
|
1526
|
+
"buyer_pays": "Buyer pays the interest",
|
|
1527
|
+
"merchant_absorbs": "Store absorbs the interest"
|
|
1449
1528
|
}
|
|
1450
|
-
}
|
|
1529
|
+
},
|
|
1530
|
+
"imageOptimization": {
|
|
1531
|
+
"title": "Reprocess stored images",
|
|
1532
|
+
"description": "The settings above apply to new uploads only. Use this action to re-apply them to images already in storage — each file is rewritten in place, keeping the same id, and is only replaced when the result is smaller or changes format.",
|
|
1533
|
+
"preview": "{count, plural, =0 {No images above this size.} one {# image above this size, totaling {size}.} other {# images above this size, totaling {size}.}}",
|
|
1534
|
+
"previewLoading": "Calculating…",
|
|
1535
|
+
"previewFailed": "Could not calculate the preview.",
|
|
1536
|
+
"refresh": "Recalculate",
|
|
1537
|
+
"queueAction": "Reprocess",
|
|
1538
|
+
"queueHint": "Reprocessing runs in the background; follow it in <link>Job Queue</link>.",
|
|
1539
|
+
"queuedSuccess": "{count, plural, =0 {No jobs queued.} one {# image queued for reprocessing.} other {# images queued for reprocessing.}}",
|
|
1540
|
+
"queuedRemaining": "{count, plural, one {# image left: run the action again to queue the rest.} other {# images left: run the action again to queue the rest.}}",
|
|
1541
|
+
"queueFailed": "Could not queue the image reprocessing."
|
|
1542
|
+
},
|
|
1543
|
+
"menuActions": "More actions",
|
|
1544
|
+
"uploadFile": "Upload file"
|
|
1451
1545
|
},
|
|
1452
1546
|
"AddWidgetDialog": {
|
|
1453
1547
|
"title": "Select Dashboard Components",
|
|
@@ -1663,6 +1757,7 @@
|
|
|
1663
1757
|
"description": "Devices connected to your account",
|
|
1664
1758
|
"moreInfo": "More Info",
|
|
1665
1759
|
"thisSession": "This session",
|
|
1760
|
+
"moreActions": "More actions",
|
|
1666
1761
|
"terminateSession": "Terminate session",
|
|
1667
1762
|
"activeNow": "Active now",
|
|
1668
1763
|
"minutesAgo": "{count}min ago",
|
|
@@ -1759,7 +1854,8 @@
|
|
|
1759
1854
|
"darkPalette": "Dark palette",
|
|
1760
1855
|
"primary": "Primary",
|
|
1761
1856
|
"notSet": "Not set"
|
|
1762
|
-
}
|
|
1857
|
+
},
|
|
1858
|
+
"removeWidget": "Remove widget"
|
|
1763
1859
|
},
|
|
1764
1860
|
"WidgetRenderer": {
|
|
1765
1861
|
"saveWidgetPreview": "Save widget preview",
|
|
@@ -1937,7 +2033,11 @@
|
|
|
1937
2033
|
"componentSlugPlaceholder": "total-users",
|
|
1938
2034
|
"componentNamePlaceholder": "Total Users",
|
|
1939
2035
|
"addItemError": "Error adding item",
|
|
1940
|
-
"deleteItemError": "Error deleting item"
|
|
2036
|
+
"deleteItemError": "Error deleting item",
|
|
2037
|
+
"goToFirstPage": "Go to first page",
|
|
2038
|
+
"goToPreviousPage": "Go to previous page",
|
|
2039
|
+
"goToNextPage": "Go to next page",
|
|
2040
|
+
"goToLastPage": "Go to last page"
|
|
1941
2041
|
},
|
|
1942
2042
|
"ForbiddenDialog": {
|
|
1943
2043
|
"title": "Access Denied",
|
|
@@ -2203,7 +2303,13 @@
|
|
|
2203
2303
|
"logRetryError": "Failed to retry the webhook call",
|
|
2204
2304
|
"logRetryFailedAgain": "The retry ran but the call failed again",
|
|
2205
2305
|
"logRetryConfirmTitle": "Retry this webhook call?",
|
|
2206
|
-
"logRetryConfirmDescription": "All active actions of this webhook will run again using the original payload. Actions that already succeeded (e.g. emails or WhatsApp messages) may be sent again."
|
|
2306
|
+
"logRetryConfirmDescription": "All active actions of this webhook will run again using the original payload. Actions that already succeeded (e.g. emails or WhatsApp messages) may be sent again.",
|
|
2307
|
+
"duplicate": "Duplicate",
|
|
2308
|
+
"removeIp": "Remove IP",
|
|
2309
|
+
"editSelectedMailProfile": "Edit selected email profile",
|
|
2310
|
+
"editSelectedMailTemplate": "Edit selected email template",
|
|
2311
|
+
"editAction": "Edit action",
|
|
2312
|
+
"deleteAction": "Delete action"
|
|
2207
2313
|
},
|
|
2208
2314
|
"McpChatPage": {
|
|
2209
2315
|
"title": "MCP Chat",
|
|
@@ -2310,7 +2416,10 @@
|
|
|
2310
2416
|
"mcpUsageExampleLabel": "Example (Claude Desktop / Cursor):",
|
|
2311
2417
|
"apiUsageDesc": "Use this token to authenticate REST API requests by passing it as a Bearer token in the Authorization header.",
|
|
2312
2418
|
"apiUsageHeader": "Add this header to every request:",
|
|
2313
|
-
"apiUsageExampleLabel": "Example (curl):"
|
|
2419
|
+
"apiUsageExampleLabel": "Example (curl):",
|
|
2420
|
+
"copy": "Copy",
|
|
2421
|
+
"copyToken": "Copy token",
|
|
2422
|
+
"revoke": "Revoke token"
|
|
2314
2423
|
},
|
|
2315
2424
|
"McpFloatingChat": {
|
|
2316
2425
|
"title": "MCP Chat",
|
|
@@ -2429,6 +2538,8 @@
|
|
|
2429
2538
|
"rawUserAgent": "User Agent",
|
|
2430
2539
|
"simulated": "Simulated",
|
|
2431
2540
|
"simulatedBy": "Simulated by {name}",
|
|
2541
|
+
"connectedApp": "Connected app",
|
|
2542
|
+
"viaConnector": "Via connector",
|
|
2432
2543
|
"simulatedAccess": "Simulated access",
|
|
2433
2544
|
"filterBySimulated": "Simulation",
|
|
2434
2545
|
"simulatedAll": "All accesses",
|
|
@@ -2623,6 +2734,7 @@
|
|
|
2623
2734
|
"paymentGooglePlayStep3": "Grant the Play publisher service account permission to publish to the topic.",
|
|
2624
2735
|
"paymentGooglePlayStep4": "Send a test notification and confirm it arrives.",
|
|
2625
2736
|
"paymentWebhookSecretRequiredNote": "In production mode, set the Webhook Secret from the provider — without it, production webhooks are rejected (unsigned requests are not processed).",
|
|
2737
|
+
"paymentWebhookSecretMissingInProduction": "This profile is in production with no Webhook Secret: in this state every gateway webhook is rejected with 401 and the order never leaves pending. Register the URL above in the provider panel, copy the generated secret and paste it into Webhook Secret.",
|
|
2626
2738
|
"paymentGooglePlayNote": "Google Play RTDN is authenticated by Pub/Sub (OIDC push); there is no webhook secret to configure. The subscription state is always re-fetched from the Play Developer API.",
|
|
2627
2739
|
"fieldBasePath": "Base Path",
|
|
2628
2740
|
"fieldBucket": "Bucket",
|
|
@@ -2649,6 +2761,7 @@
|
|
|
2649
2761
|
"fieldModeSandbox": "Sandbox",
|
|
2650
2762
|
"fieldModeProduction": "Production",
|
|
2651
2763
|
"fieldSiteKey": "Site Key",
|
|
2764
|
+
"fieldHostnames": "Allowed hostnames",
|
|
2652
2765
|
"fieldHmacKey": "HMAC Key",
|
|
2653
2766
|
"fieldScoreThreshold": "Score Threshold",
|
|
2654
2767
|
"fieldApiUrl": "API URL",
|
|
@@ -2664,6 +2777,8 @@
|
|
|
2664
2777
|
"addCallbackUrl": "Add URL",
|
|
2665
2778
|
"noCallbackUrls": "No callback URLs configured.",
|
|
2666
2779
|
"callbackUrlPlaceholder": "https://yourdomain.com/callback/...",
|
|
2780
|
+
"copyUrl": "Copy URL",
|
|
2781
|
+
"removeCallbackUrl": "Remove URL",
|
|
2667
2782
|
"showPassword": "Show value",
|
|
2668
2783
|
"hidePassword": "Hide value",
|
|
2669
2784
|
"leaveBlankToKeep": "Leave blank to keep current value",
|
|
@@ -2675,6 +2790,8 @@
|
|
|
2675
2790
|
"fieldApiServer": "API Server URL",
|
|
2676
2791
|
"fieldCaCert": "CA Certificate (PEM)",
|
|
2677
2792
|
"fieldNamespace": "Namespace",
|
|
2793
|
+
"fieldUserAgent": "User-Agent (contact e-mail)",
|
|
2794
|
+
"fieldSandbox": "Sandbox environment",
|
|
2678
2795
|
"fieldVideoNodePool": "Video Node Pool",
|
|
2679
2796
|
"nodePoolSectionTitle": "Video Node Pool",
|
|
2680
2797
|
"nodePoolSectionDescription": "Pool where video conversion pods run. Load the pools from DigitalOcean and pick one by name.",
|
|
@@ -2868,6 +2985,7 @@
|
|
|
2868
2985
|
"columnInList": "In the list",
|
|
2869
2986
|
"columnInFilters": "As a filter",
|
|
2870
2987
|
"addColumn": "Add column",
|
|
2988
|
+
"removeColumn": "Remove column",
|
|
2871
2989
|
"generateBackend": "Generate backend",
|
|
2872
2990
|
"generateBackendHint": "Creates table YAML, migration, DTO, service, controller and NestJS module.",
|
|
2873
2991
|
"menuParent": "Parent menu",
|
|
@@ -3050,6 +3168,7 @@
|
|
|
3050
3168
|
"noContent": "No content to preview",
|
|
3051
3169
|
"complexHtmlWarningTitle": "Complex HTML detected",
|
|
3052
3170
|
"complexHtmlWarningDesc": "This content has style, head or script tags that the visual editor removes. Use the HTML tab to edit it.",
|
|
3171
|
+
"complexHtmlTabDisabled": "Unavailable for complex HTML: the visual editor would strip style, head or script tags. Use the HTML tab.",
|
|
3053
3172
|
"aiEditTitle": "Adjust HTML with AI",
|
|
3054
3173
|
"aiInstructionPlaceholder": "Describe the adjustment the AI should make to this HTML.",
|
|
3055
3174
|
"aiApplyButton": "Adjust with AI",
|
|
@@ -3130,5 +3249,33 @@
|
|
|
3130
3249
|
"redeemMissingCode": "No simulation code found in the link.",
|
|
3131
3250
|
"noAdminAccessTitle": "This user has no access to the admin panel",
|
|
3132
3251
|
"noAdminAccessDescription": "{name} has no administrative role, so there is nothing to show here. Simulate them in the application they actually use."
|
|
3252
|
+
},
|
|
3253
|
+
"MessageTemplatesPage": {
|
|
3254
|
+
"title": "Message templates",
|
|
3255
|
+
"description": "Text of the messages the platform sends outside e-mail, such as the new ticket and sale alerts on WhatsApp.",
|
|
3256
|
+
"breadcrumbDashboard": "Home",
|
|
3257
|
+
"breadcrumbManagement": "Management",
|
|
3258
|
+
"breadcrumbCurrent": "Message templates",
|
|
3259
|
+
"emptyTitle": "No templates available",
|
|
3260
|
+
"emptyDescription": "Templates come from the installed modules. If this list is empty, no module declared a message to edit.",
|
|
3261
|
+
"edit": "Edit",
|
|
3262
|
+
"restore": "Restore default",
|
|
3263
|
+
"restoreHint": "Deletes the edited text and goes back to what the module ships. Later improvements apply again.",
|
|
3264
|
+
"customized": "Customized",
|
|
3265
|
+
"inactive": "Edited text off",
|
|
3266
|
+
"sheetTitle": "Edit template",
|
|
3267
|
+
"sheetDescription": "The text goes to WhatsApp as is. Use *asterisks* for bold and the variables below for the data.",
|
|
3268
|
+
"fieldActive": "Use the edited text",
|
|
3269
|
+
"fieldActiveHint": "When off, the alert goes back to the module default — it is never left without an alert.",
|
|
3270
|
+
"fieldBody": "Message body",
|
|
3271
|
+
"fieldBodyHint": "A line holding only {{#if variable}} does not show up in the message: it just hides the block when the field is empty.",
|
|
3272
|
+
"locale_pt": "Portuguese",
|
|
3273
|
+
"locale_en": "English",
|
|
3274
|
+
"variables": "Available variables",
|
|
3275
|
+
"preview": "Preview",
|
|
3276
|
+
"previewHint": "Renders the text with sample data, without saving.",
|
|
3277
|
+
"save": "Save",
|
|
3278
|
+
"cancel": "Cancel",
|
|
3279
|
+
"saved": "Template saved."
|
|
3133
3280
|
}
|
|
3134
3281
|
}
|