@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
|
@@ -2,10 +2,12 @@ import { Request, Response } from 'express';
|
|
|
2
2
|
import { DeleteDTO } from './dto/delete.dto';
|
|
3
3
|
import { UploadFileDTO } from './dto/upload.dto';
|
|
4
4
|
import { FileService } from './file.service';
|
|
5
|
+
import { FileUploadTicketService } from './file-upload-ticket.service';
|
|
5
6
|
export declare class FileController {
|
|
6
7
|
private readonly fileService;
|
|
8
|
+
private readonly uploadTickets;
|
|
7
9
|
private readonly logger;
|
|
8
|
-
constructor(fileService: FileService);
|
|
10
|
+
constructor(fileService: FileService, uploadTickets: FileUploadTicketService);
|
|
9
11
|
private renderDownloadErrorHtml;
|
|
10
12
|
list(paginationParams: any): Promise<{
|
|
11
13
|
total: any;
|
|
@@ -27,6 +29,7 @@ export declare class FileController {
|
|
|
27
29
|
mimetype_id: number;
|
|
28
30
|
size: number;
|
|
29
31
|
is_private: boolean;
|
|
32
|
+
created_by_user_id: number | null;
|
|
30
33
|
}>;
|
|
31
34
|
getTempOpenURL(id: number, req: Request): Promise<{
|
|
32
35
|
url: string;
|
|
@@ -34,6 +37,25 @@ export declare class FileController {
|
|
|
34
37
|
getTempURL(id: number, req: Request): Promise<{
|
|
35
38
|
url: string;
|
|
36
39
|
}>;
|
|
40
|
+
/**
|
|
41
|
+
* Recebe o binário de um upload aberto por `core.files.create-upload-url`.
|
|
42
|
+
*
|
|
43
|
+
* É `@Public()` porque a autorização é o próprio token: ele é assinado, vale por
|
|
44
|
+
* minutos, aponta para um único ticket e só serve uma vez. Existe para tirar o arquivo
|
|
45
|
+
* do corpo da chamada MCP — base64 de um PDF de 131 KB já passa de 175 mil caracteres,
|
|
46
|
+
* acima do que o modelo consegue emitir.
|
|
47
|
+
*
|
|
48
|
+
* O corpo é o binário cru, sem multipart: `express.json` não o toca porque o
|
|
49
|
+
* content-type não é JSON, e o stream vai direto para um arquivo temporário com
|
|
50
|
+
* contador de bytes, que é o que impede um corpo sem `Content-Length` de encher a
|
|
51
|
+
* memória do pod.
|
|
52
|
+
*/
|
|
53
|
+
uploadSigned(token: string, req: Request): Promise<{
|
|
54
|
+
uploadId: number;
|
|
55
|
+
fileId: number;
|
|
56
|
+
filename: string;
|
|
57
|
+
size: number;
|
|
58
|
+
}>;
|
|
37
59
|
download(token: string, res: Response, locale: string): Promise<void>;
|
|
38
60
|
/**
|
|
39
61
|
* `w`/`f`/`q` request a resized variant. Widths outside the configured
|
|
@@ -53,6 +75,7 @@ export declare class FileController {
|
|
|
53
75
|
mimetype_id: number;
|
|
54
76
|
size: number;
|
|
55
77
|
is_private: boolean;
|
|
78
|
+
created_by_user_id: number | null;
|
|
56
79
|
}>;
|
|
57
80
|
delete(data: DeleteDTO, locale: string): Promise<number[]>;
|
|
58
81
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.controller.d.ts","sourceRoot":"","sources":["../../src/file/file.controller.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAO5C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"file.controller.d.ts","sourceRoot":"","sources":["../../src/file/file.controller.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAO5C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAQvE,qBAEa,cAAc;IAKvB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,aAAa;IANhC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;gBAIvC,WAAW,EAAE,WAAW,EAExB,aAAa,EAAE,uBAAuB;IAGzD,OAAO,CAAC,uBAAuB;IAsCzB,IAAI,CAAe,gBAAgB,KAAA;;;;;;;;;IAKnC,IAAI,CAA4B,EAAE,KAAA;;;;;;;;;;;;;IAKlC,cAAc,CACS,EAAE,EAAE,MAAM,EAC9B,GAAG,EAAE,OAAO;;;IAYb,UAAU,CACa,EAAE,EAAE,MAAM,EAC9B,GAAG,EAAE,OAAO;;;IAWvB;;;;;;;;;;;;OAYG;IAGG,YAAY,CAAiB,KAAK,EAAE,MAAM,EAAS,GAAG,EAAE,OAAO;;;;;;IAiD/D,QAAQ,CACI,KAAK,EAAE,MAAM,EACtB,GAAG,EAAE,QAAQ,EACV,MAAM,EAAE,MAAM;IA8B1B;;;;OAIG;IAGG,SAAS,CACc,EAAE,EAAE,MAAM,EAC9B,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACV,MAAM,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM;IAkBxB,IAAI,CACQ,KAAK,EAAE,MAAM,EACtB,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACV,MAAM,EAAE,MAAM;IAyDpB,MAAM,CACM,IAAI,EAAE,UAAU,EACxB,IAAI,EAAE,aAAa;;;;;;;;;;;;;IA6BvB,MAAM,CAAS,IAAI,EAAE,SAAS,EAAY,MAAM,EAAE,MAAM;CAG/D"}
|
|
@@ -31,13 +31,15 @@ const path_1 = require("path");
|
|
|
31
31
|
const delete_dto_1 = require("./dto/delete.dto");
|
|
32
32
|
const upload_dto_1 = require("./dto/upload.dto");
|
|
33
33
|
const file_service_1 = require("./file.service");
|
|
34
|
+
const file_upload_ticket_service_1 = require("./file-upload-ticket.service");
|
|
34
35
|
// Teto duro do multipart, avaliado enquanto o corpo ainda está chegando. É
|
|
35
36
|
// diferente do setting `storage-max-size`, que só roda depois do arquivo inteiro
|
|
36
37
|
// já estar recebido e por isso nunca serviu de proteção de recurso.
|
|
37
38
|
const MAX_UPLOAD_BYTES = Number(process.env.STORAGE_MAX_UPLOAD_BYTES) || 2 * 1024 * 1024 * 1024;
|
|
38
39
|
let FileController = FileController_1 = class FileController {
|
|
39
|
-
constructor(fileService) {
|
|
40
|
+
constructor(fileService, uploadTickets) {
|
|
40
41
|
this.fileService = fileService;
|
|
42
|
+
this.uploadTickets = uploadTickets;
|
|
41
43
|
this.logger = new common_1.Logger(FileController_1.name);
|
|
42
44
|
}
|
|
43
45
|
renderDownloadErrorHtml(locale, error) {
|
|
@@ -93,6 +95,54 @@ let FileController = FileController_1 = class FileController {
|
|
|
93
95
|
url: `${origin}/file/download/${encodeURIComponent(token)}`,
|
|
94
96
|
};
|
|
95
97
|
}
|
|
98
|
+
/**
|
|
99
|
+
* Recebe o binário de um upload aberto por `core.files.create-upload-url`.
|
|
100
|
+
*
|
|
101
|
+
* É `@Public()` porque a autorização é o próprio token: ele é assinado, vale por
|
|
102
|
+
* minutos, aponta para um único ticket e só serve uma vez. Existe para tirar o arquivo
|
|
103
|
+
* do corpo da chamada MCP — base64 de um PDF de 131 KB já passa de 175 mil caracteres,
|
|
104
|
+
* acima do que o modelo consegue emitir.
|
|
105
|
+
*
|
|
106
|
+
* O corpo é o binário cru, sem multipart: `express.json` não o toca porque o
|
|
107
|
+
* content-type não é JSON, e o stream vai direto para um arquivo temporário com
|
|
108
|
+
* contador de bytes, que é o que impede um corpo sem `Content-Length` de encher a
|
|
109
|
+
* memória do pod.
|
|
110
|
+
*/
|
|
111
|
+
async uploadSigned(token, req) {
|
|
112
|
+
const ticket = await this.uploadTickets.resolveTicketFromToken(token);
|
|
113
|
+
// Reivindica ANTES de gravar: dois PUTs simultâneos com o mesmo token subiriam os
|
|
114
|
+
// dois e deixariam um blob órfão no storage, além de dois registros para um ticket.
|
|
115
|
+
if (!(await this.uploadTickets.claim(ticket.id))) {
|
|
116
|
+
throw new common_1.BadRequestException(`Upload token already used or expired for ticket ${ticket.id}`);
|
|
117
|
+
}
|
|
118
|
+
const tempPath = (0, path_1.join)((0, os_1.tmpdir)(), `hedhog-upload-${ticket.id}-${Date.now()}`);
|
|
119
|
+
try {
|
|
120
|
+
// Uma passada só: grava, conta, hasheia e guarda o cabeçalho para o sniff.
|
|
121
|
+
const digest = await this.fileService.writeStreamToPath(req, tempPath, ticket.size_bytes);
|
|
122
|
+
await this.uploadTickets.assertContentMatchesTicket(ticket, digest);
|
|
123
|
+
const file = await this.fileService.uploadFromPath(ticket.destination, tempPath, {
|
|
124
|
+
originalname: ticket.filename,
|
|
125
|
+
mimetype: ticket.mimetype,
|
|
126
|
+
size: digest.bytes,
|
|
127
|
+
isPrivate: ticket.is_private,
|
|
128
|
+
createdByUserId: ticket.user_id,
|
|
129
|
+
});
|
|
130
|
+
await this.uploadTickets.attachFile(ticket.id, file.id);
|
|
131
|
+
return {
|
|
132
|
+
uploadId: ticket.id,
|
|
133
|
+
fileId: file.id,
|
|
134
|
+
filename: file.filename,
|
|
135
|
+
size: file.size,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
await this.uploadTickets.markFailed(ticket.id);
|
|
140
|
+
throw error;
|
|
141
|
+
}
|
|
142
|
+
finally {
|
|
143
|
+
await (0, promises_1.rm)(tempPath, { force: true }).catch(() => undefined);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
96
146
|
async download(token, res, locale) {
|
|
97
147
|
try {
|
|
98
148
|
const { stream, filename, mimetype, size } = await this.fileService.download(locale, token);
|
|
@@ -216,6 +266,15 @@ __decorate([
|
|
|
216
266
|
__metadata("design:paramtypes", [Number, Object]),
|
|
217
267
|
__metadata("design:returntype", Promise)
|
|
218
268
|
], FileController.prototype, "getTempURL", null);
|
|
269
|
+
__decorate([
|
|
270
|
+
(0, api_1.Public)(),
|
|
271
|
+
(0, common_1.Put)('upload/:token'),
|
|
272
|
+
__param(0, (0, common_1.Param)('token')),
|
|
273
|
+
__param(1, (0, common_1.Req)()),
|
|
274
|
+
__metadata("design:type", Function),
|
|
275
|
+
__metadata("design:paramtypes", [String, Object]),
|
|
276
|
+
__metadata("design:returntype", Promise)
|
|
277
|
+
], FileController.prototype, "uploadSigned", null);
|
|
219
278
|
__decorate([
|
|
220
279
|
(0, api_1.Public)(),
|
|
221
280
|
(0, common_1.Get)('download/:token'),
|
|
@@ -275,6 +334,8 @@ exports.FileController = FileController = FileController_1 = __decorate([
|
|
|
275
334
|
(0, api_1.Role)(),
|
|
276
335
|
(0, common_1.Controller)('file'),
|
|
277
336
|
__param(0, (0, common_1.Inject)((0, common_1.forwardRef)(() => file_service_1.FileService))),
|
|
278
|
-
|
|
337
|
+
__param(1, (0, common_1.Inject)((0, common_1.forwardRef)(() => file_upload_ticket_service_1.FileUploadTicketService))),
|
|
338
|
+
__metadata("design:paramtypes", [file_service_1.FileService,
|
|
339
|
+
file_upload_ticket_service_1.FileUploadTicketService])
|
|
279
340
|
], FileController);
|
|
280
341
|
//# sourceMappingURL=file.controller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.controller.js","sourceRoot":"","sources":["../../src/file/file.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,sCAA4C;AAC5C,oDAA4D;AAC5D,4DAAqD;AACrD,2CAkBwB;AACxB,+DAA2D;AAE3D,2BAAkC;AAClC,0CAAiC;AACjC,4DAAoC;AACpC,mCAAqC;AACrC,2BAA4B;AAC5B,+BAA4B;AAC5B,iDAA6C;AAC7C,iDAAiD;AACjD,iDAA6C;
|
|
1
|
+
{"version":3,"file":"file.controller.js","sourceRoot":"","sources":["../../src/file/file.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.module.d.ts","sourceRoot":"","sources":["../../src/file/file.module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"file.module.d.ts","sourceRoot":"","sources":["../../src/file/file.module.ts"],"names":[],"mappings":"AAWA,qBAuBa,UAAU;CAAI"}
|
package/dist/file/file.module.js
CHANGED
|
@@ -14,7 +14,9 @@ const jwt_1 = require("@nestjs/jwt");
|
|
|
14
14
|
const setting_module_1 = require("../setting/setting.module");
|
|
15
15
|
const file_controller_1 = require("./file.controller");
|
|
16
16
|
const file_service_1 = require("./file.service");
|
|
17
|
+
const file_upload_ticket_service_1 = require("./file-upload-ticket.service");
|
|
17
18
|
const image_optimization_service_1 = require("./image-optimization.service");
|
|
19
|
+
const mcp_file_source_service_1 = require("./mcp-file-source.service");
|
|
18
20
|
let FileModule = class FileModule {
|
|
19
21
|
};
|
|
20
22
|
exports.FileModule = FileModule;
|
|
@@ -26,8 +28,18 @@ exports.FileModule = FileModule = __decorate([
|
|
|
26
28
|
(0, common_1.forwardRef)(() => setting_module_1.SettingModule),
|
|
27
29
|
(0, common_1.forwardRef)(() => jwt_1.JwtModule),
|
|
28
30
|
],
|
|
29
|
-
providers: [
|
|
30
|
-
|
|
31
|
+
providers: [
|
|
32
|
+
file_service_1.FileService,
|
|
33
|
+
image_optimization_service_1.ImageOptimizationService,
|
|
34
|
+
file_upload_ticket_service_1.FileUploadTicketService,
|
|
35
|
+
mcp_file_source_service_1.McpFileSourceService,
|
|
36
|
+
],
|
|
37
|
+
exports: [
|
|
38
|
+
file_service_1.FileService,
|
|
39
|
+
image_optimization_service_1.ImageOptimizationService,
|
|
40
|
+
file_upload_ticket_service_1.FileUploadTicketService,
|
|
41
|
+
mcp_file_source_service_1.McpFileSourceService,
|
|
42
|
+
],
|
|
31
43
|
controllers: [file_controller_1.FileController],
|
|
32
44
|
})
|
|
33
45
|
], FileModule);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.module.js","sourceRoot":"","sources":["../../src/file/file.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,4DAA2D;AAC3D,oDAAmD;AACnD,2CAAoD;AACpD,qCAAwC;AACxC,8DAA0D;AAC1D,uDAAmD;AACnD,iDAA6C;AAC7C,6EAAwE;
|
|
1
|
+
{"version":3,"file":"file.module.js","sourceRoot":"","sources":["../../src/file/file.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,4DAA2D;AAC3D,oDAAmD;AACnD,2CAAoD;AACpD,qCAAwC;AACxC,8DAA0D;AAC1D,uDAAmD;AACnD,iDAA6C;AAC7C,6EAAuE;AACvE,6EAAwE;AACxE,uEAAiE;AAyB1D,IAAM,UAAU,GAAhB,MAAM,UAAU;CAAI,CAAA;AAAd,gCAAU;qBAAV,UAAU;IAvBtB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,yBAAY,CAAC;YAC9B,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,iCAAgB,CAAC;YAClC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,8BAAa,CAAC;YAC/B,IAAA,mBAAU,EAAC,GAAG,EAAE,CACd,eAAS,CACV;SACF;QACD,SAAS,EAAE;YACT,0BAAW;YACX,qDAAwB;YACxB,oDAAuB;YACvB,8CAAoB;SACrB;QACD,OAAO,EAAE;YACP,0BAAW;YACX,qDAAwB;YACxB,oDAAuB;YACvB,8CAAoB;SACrB;QACD,WAAW,EAAE,CAAC,gCAAc,CAAC;KAC9B,CAAC;GACW,UAAU,CAAI"}
|
|
@@ -25,7 +25,11 @@ export declare class FileService implements OnModuleInit {
|
|
|
25
25
|
private cachedProvider;
|
|
26
26
|
private providerResolution;
|
|
27
27
|
private resolveProviderPath;
|
|
28
|
-
|
|
28
|
+
/**
|
|
29
|
+
* Nome que chegou com o encoding trocado (busboy entrega `originalname` em
|
|
30
|
+
* latin1, e a base ainda recebe nome importado com o mesmo defeito). A lógica
|
|
31
|
+
* mora no util porque a migration de backfill a reproduz em plpgsql.
|
|
32
|
+
*/
|
|
29
33
|
private normalizeUploadedFilename;
|
|
30
34
|
constructor(prismaService: PrismaService, paginationService: PaginationService, settingService: SettingService, jwtService: JwtService, imageOptimizationService: ImageOptimizationService);
|
|
31
35
|
onModuleInit(): Promise<void>;
|
|
@@ -45,6 +49,7 @@ export declare class FileService implements OnModuleInit {
|
|
|
45
49
|
mimetype_id: number;
|
|
46
50
|
size: number;
|
|
47
51
|
is_private: boolean;
|
|
52
|
+
created_by_user_id: number | null;
|
|
48
53
|
}>;
|
|
49
54
|
private mapStorageNotFoundError;
|
|
50
55
|
openReadStreamById(fileId: number): Promise<{
|
|
@@ -66,6 +71,7 @@ export declare class FileService implements OnModuleInit {
|
|
|
66
71
|
mimetype_id: number;
|
|
67
72
|
size: number;
|
|
68
73
|
is_private: boolean;
|
|
74
|
+
created_by_user_id: number | null;
|
|
69
75
|
};
|
|
70
76
|
stream: any;
|
|
71
77
|
size: number;
|
|
@@ -89,6 +95,7 @@ export declare class FileService implements OnModuleInit {
|
|
|
89
95
|
mimetype_id: number;
|
|
90
96
|
size: number;
|
|
91
97
|
is_private: boolean;
|
|
98
|
+
created_by_user_id: number | null;
|
|
92
99
|
};
|
|
93
100
|
stream: any;
|
|
94
101
|
totalSize: number;
|
|
@@ -118,6 +125,7 @@ export declare class FileService implements OnModuleInit {
|
|
|
118
125
|
mimetype_id: number;
|
|
119
126
|
size: number;
|
|
120
127
|
is_private: boolean;
|
|
128
|
+
created_by_user_id: number | null;
|
|
121
129
|
};
|
|
122
130
|
path: string;
|
|
123
131
|
size: number;
|
|
@@ -141,6 +149,7 @@ export declare class FileService implements OnModuleInit {
|
|
|
141
149
|
mimetype_id: number;
|
|
142
150
|
size: number;
|
|
143
151
|
is_private: boolean;
|
|
152
|
+
created_by_user_id: number | null;
|
|
144
153
|
};
|
|
145
154
|
buffer: Buffer<ArrayBuffer>;
|
|
146
155
|
}>;
|
|
@@ -167,6 +176,7 @@ export declare class FileService implements OnModuleInit {
|
|
|
167
176
|
skipMimeValidation?: boolean;
|
|
168
177
|
skipSizeValidation?: boolean;
|
|
169
178
|
isPrivate?: boolean;
|
|
179
|
+
createdByUserId?: number | null;
|
|
170
180
|
}): Promise<{
|
|
171
181
|
id: number;
|
|
172
182
|
path: string;
|
|
@@ -178,6 +188,7 @@ export declare class FileService implements OnModuleInit {
|
|
|
178
188
|
mimetype_id: number;
|
|
179
189
|
size: number;
|
|
180
190
|
is_private: boolean;
|
|
191
|
+
created_by_user_id: number | null;
|
|
181
192
|
}>;
|
|
182
193
|
uploadFromPath(destination: string, filePath: string, metadata?: {
|
|
183
194
|
originalname?: string;
|
|
@@ -188,6 +199,7 @@ export declare class FileService implements OnModuleInit {
|
|
|
188
199
|
skipMimeValidation?: boolean;
|
|
189
200
|
skipSizeValidation?: boolean;
|
|
190
201
|
isPrivate?: boolean;
|
|
202
|
+
createdByUserId?: number | null;
|
|
191
203
|
resize?: {
|
|
192
204
|
maxWidth?: number;
|
|
193
205
|
maxHeight?: number;
|
|
@@ -203,15 +215,54 @@ export declare class FileService implements OnModuleInit {
|
|
|
203
215
|
mimetype_id: number;
|
|
204
216
|
size: number;
|
|
205
217
|
is_private: boolean;
|
|
218
|
+
created_by_user_id: number | null;
|
|
206
219
|
}>;
|
|
220
|
+
/**
|
|
221
|
+
* Mimetypes de imagem que `optimizeBuffer` devolve intactos por decisão de projeto
|
|
222
|
+
* (vetor não vira bitmap, GIF animado não vira quadro único). Enfileirá-los para
|
|
223
|
+
* reotimização seria custo de download e reprocessamento com resultado garantidamente
|
|
224
|
+
* nulo, então ficam fora da varredura.
|
|
225
|
+
*/
|
|
226
|
+
private static readonly NON_OPTIMIZABLE_IMAGE_MIMETYPES;
|
|
227
|
+
/**
|
|
228
|
+
* Lista as imagens armazenadas que valem uma passada por `reoptimizeFile`, para a
|
|
229
|
+
* operação em massa de reprocessamento do acervo.
|
|
230
|
+
*
|
|
231
|
+
* Devolve junto o total e a soma de bytes do filtro inteiro (não só da página), que é
|
|
232
|
+
* o que permite mostrar uma prévia antes de enfileirar dezenas de milhares de jobs.
|
|
233
|
+
* O core não conhece a fila — quem enfileira é a library `queue`, que depende deste
|
|
234
|
+
* pacote e não o contrário.
|
|
235
|
+
*/
|
|
236
|
+
findOptimizableImages(params?: {
|
|
237
|
+
/** Piso de tamanho em bytes; abaixo disso o ganho não paga o reprocessamento. */
|
|
238
|
+
minSize?: number;
|
|
239
|
+
/** Restringe a `location` exatas (ex.: `lms/xp/skills`), para rollout em ondas. */
|
|
240
|
+
locations?: string[];
|
|
241
|
+
offset?: number;
|
|
242
|
+
limit?: number;
|
|
243
|
+
}): Promise<{
|
|
244
|
+
ids: number[];
|
|
245
|
+
total: number;
|
|
246
|
+
totalBytes: number;
|
|
247
|
+
}>;
|
|
248
|
+
/**
|
|
249
|
+
* Ganho mínimo para valer a regravação de um arquivo que já está no formato final.
|
|
250
|
+
*
|
|
251
|
+
* Recomprimir WebP sobre WebP sempre devolve alguns bytes a menos, então um limiar de
|
|
252
|
+
* "estritamente menor" nunca converge: cada passada da varredura trocaria o arquivo
|
|
253
|
+
* por um ganho irrisório e mais uma geração de perda de qualidade. Medido aqui, três
|
|
254
|
+
* passadas seguidas rendiam 10926 → 10664 → 10662 bytes — a última custou uma
|
|
255
|
+
* recompressão inteira para economizar 2 bytes.
|
|
256
|
+
*/
|
|
257
|
+
private static readonly REOPTIMIZE_MIN_GAIN_RATIO;
|
|
207
258
|
/**
|
|
208
259
|
* Re-applies the current image-optimization settings to an already-stored file,
|
|
209
260
|
* rewriting it in place: the `file` record keeps the same id, so every row that
|
|
210
261
|
* references it (course_image, course_lesson_video_frame, ...) stays valid without
|
|
211
|
-
* any FK juggling. Only replaces the stored object when the
|
|
212
|
-
*
|
|
213
|
-
* operation idempotent and avoids repeated
|
|
214
|
-
* left untouched.
|
|
262
|
+
* any FK juggling. Only replaces the stored object when the mimetype changed
|
|
263
|
+
* (e.g. PNG → WebP) or the result is smaller by a margin that justifies the rewrite —
|
|
264
|
+
* that margin is what actually makes the operation idempotent and avoids repeated
|
|
265
|
+
* lossy recompression. Non-image files are left untouched.
|
|
215
266
|
*/
|
|
216
267
|
reoptimizeFile(fileId: number): Promise<{
|
|
217
268
|
changed: boolean;
|
|
@@ -220,7 +271,48 @@ export declare class FileService implements OnModuleInit {
|
|
|
220
271
|
mimetypeChanged: boolean;
|
|
221
272
|
}>;
|
|
222
273
|
delete(locale: string, { ids }: DeleteDTO): Promise<number[]>;
|
|
223
|
-
|
|
274
|
+
/**
|
|
275
|
+
* `ownerUserId` restringe a listagem aos arquivos enviados por aquele usuário.
|
|
276
|
+
*
|
|
277
|
+
* Existe para as tools MCP: sem ele, `core.files.list` é um índice de tudo o que
|
|
278
|
+
* qualquer empresa já subiu, incluindo o que está gravado como `is_private`. O
|
|
279
|
+
* controller REST continua chamando sem o parâmetro, porque ali a rota já é `admin`
|
|
280
|
+
* e a tela de arquivos é justamente a visão global.
|
|
281
|
+
*/
|
|
282
|
+
/**
|
|
283
|
+
* Grava um stream em disco medindo, hasheando e guardando o cabeçalho de uma vez só.
|
|
284
|
+
*
|
|
285
|
+
* O upload assinado recebe o binário cru no corpo do PUT, e nada garante que venha com
|
|
286
|
+
* `Content-Length` — sem o contador abaixo, um corpo aberto encheria o disco do pod. O
|
|
287
|
+
* corte é feito em pleno voo, antes de o excedente chegar ao arquivo.
|
|
288
|
+
*
|
|
289
|
+
* Passa o cabeçalho adiante porque conferir o tipo real é obrigatório nesse caminho, e
|
|
290
|
+
* reler o arquivo depois seria uma segunda passada por nada.
|
|
291
|
+
*/
|
|
292
|
+
writeStreamToPath(source: NodeJS.ReadableStream, targetPath: string, maxBytes: number): Promise<{
|
|
293
|
+
bytes: number;
|
|
294
|
+
sha256: string;
|
|
295
|
+
header: Buffer;
|
|
296
|
+
}>;
|
|
297
|
+
/**
|
|
298
|
+
* Conteúdo de um arquivo já armazenado, em memória.
|
|
299
|
+
*
|
|
300
|
+
* Existe para as tools que consomem os bytes sem persistir nada (importar extrato,
|
|
301
|
+
* extrair dados de uma nota com IA): elas recebem um `fileId` e precisam do arquivo,
|
|
302
|
+
* não de um stream. O teto evita que um `fileId` apontando para um SCORM de vários GB
|
|
303
|
+
* derrube o pod — quem serve arquivo grande usa `openReadStream` e não passa por aqui.
|
|
304
|
+
*/
|
|
305
|
+
bufferById(fileId: number, maxBytes: number): Promise<Buffer>;
|
|
306
|
+
/**
|
|
307
|
+
* Nome do mimetype de um arquivo.
|
|
308
|
+
*
|
|
309
|
+
* `get()` e `upload()` devolvem a linha crua, sem a relação, e cada chamador que
|
|
310
|
+
* precisava do tipo vinha refazendo o `include` por conta. Como o cache de
|
|
311
|
+
* `getMimeType` é id-por-nome, este é o inverso dele e sai do mesmo mapa quando já
|
|
312
|
+
* tiver sido consultado.
|
|
313
|
+
*/
|
|
314
|
+
mimetypeNameById(mimetypeId: number): Promise<string>;
|
|
315
|
+
getFiles(paginationParams: PaginationDTO, ownerUserId?: number): Promise<{
|
|
224
316
|
total: any;
|
|
225
317
|
lastPage: number;
|
|
226
318
|
page: number;
|
|
@@ -229,6 +321,45 @@ export declare class FileService implements OnModuleInit {
|
|
|
229
321
|
next: number;
|
|
230
322
|
data: any[];
|
|
231
323
|
}>;
|
|
324
|
+
/**
|
|
325
|
+
* Papéis que enxergam qualquer arquivo. Os mesmos que já governam as rotas de arquivo
|
|
326
|
+
* em `route.yaml` — quem administra o acervo pela tela também o administra pelo MCP.
|
|
327
|
+
*/
|
|
328
|
+
private static readonly FILE_ADMIN_ROLES;
|
|
329
|
+
/** Cache curto de papéis, no mesmo espírito do McpPermissionService. */
|
|
330
|
+
private readonly fileAdminCache;
|
|
331
|
+
private static readonly FILE_ADMIN_CACHE_TTL_MS;
|
|
332
|
+
isFileAdmin(userId: number): Promise<boolean>;
|
|
333
|
+
/**
|
|
334
|
+
* Porteiro do `fileId` vindo de fora: só o dono usa um arquivo, e quem administra o
|
|
335
|
+
* acervo usa qualquer um.
|
|
336
|
+
*
|
|
337
|
+
* Sem isto, apontar um `fileId` numa tool seria enumerar — id de arquivo é sequencial,
|
|
338
|
+
* exatamente o motivo pelo qual `is_private` existe. Arquivo anterior a esta coluna
|
|
339
|
+
* (ou gravado por cron/seed/webhook) fica com dono nulo e só o admin alcança: não dá
|
|
340
|
+
* para provar de quem ele é, e adivinhar a favor do chamador seria abrir a porta que
|
|
341
|
+
* este método fecha.
|
|
342
|
+
*/
|
|
343
|
+
assertFileUsable(fileId: number, userId: number): Promise<{
|
|
344
|
+
file_mimetype: {
|
|
345
|
+
id: number;
|
|
346
|
+
created_at: Date;
|
|
347
|
+
name: string;
|
|
348
|
+
updated_at: Date;
|
|
349
|
+
};
|
|
350
|
+
} & {
|
|
351
|
+
id: number;
|
|
352
|
+
path: string;
|
|
353
|
+
created_at: Date;
|
|
354
|
+
updated_at: Date;
|
|
355
|
+
filename: string;
|
|
356
|
+
provider_id: number;
|
|
357
|
+
location: string;
|
|
358
|
+
mimetype_id: number;
|
|
359
|
+
size: number;
|
|
360
|
+
is_private: boolean;
|
|
361
|
+
created_by_user_id: number | null;
|
|
362
|
+
}>;
|
|
232
363
|
get(fileId: number): Promise<{
|
|
233
364
|
id: number;
|
|
234
365
|
path: string;
|
|
@@ -240,6 +371,7 @@ export declare class FileService implements OnModuleInit {
|
|
|
240
371
|
mimetype_id: number;
|
|
241
372
|
size: number;
|
|
242
373
|
is_private: boolean;
|
|
374
|
+
created_by_user_id: number | null;
|
|
243
375
|
}>;
|
|
244
376
|
/**
|
|
245
377
|
* Creates an independent copy of a stored file: new bytes in storage + a new `file` row.
|
|
@@ -270,6 +402,7 @@ export declare class FileService implements OnModuleInit {
|
|
|
270
402
|
mimetype_id: number;
|
|
271
403
|
size: number;
|
|
272
404
|
is_private: boolean;
|
|
405
|
+
created_by_user_id: number | null;
|
|
273
406
|
}>;
|
|
274
407
|
readStream(filepath: string): Promise<any>;
|
|
275
408
|
/**
|
|
@@ -290,6 +423,20 @@ export declare class FileService implements OnModuleInit {
|
|
|
290
423
|
declaredSize: number;
|
|
291
424
|
}>;
|
|
292
425
|
private getFileSizeFromMetadata;
|
|
426
|
+
/**
|
|
427
|
+
* Resolve o `file` cujo `resolveProviderPath` (location + path, ou path já combinado) bate com
|
|
428
|
+
* o `filepath` embutido no token de download — é o inverso de `resolveProviderPath`.
|
|
429
|
+
*
|
|
430
|
+
* Bug corrigido (relatado como "Token de download inválido ou expirado" no storage local):
|
|
431
|
+
* `tempURLById` assina o token com `resolveProviderPath(file)` (ex.:
|
|
432
|
+
* "class-assignment-tasks/abc123.pdf", já com o prefixo de `location`), mas o upload local/S3
|
|
433
|
+
* grava só o basename em `file.path` ("abc123.pdf") e o `location` separado em outra coluna.
|
|
434
|
+
* Um `findFirst({ where: { path: filepath } })` direto nunca batia para esses arquivos — sempre
|
|
435
|
+
* caía no `catch` abaixo e mostrava a mensagem genérica de token inválido, mesmo com o token
|
|
436
|
+
* (e o arquivo) perfeitamente válidos. S3 mascarava isso porque `S3Provider.tempURL` devolve uma
|
|
437
|
+
* URL assinada direto do bucket, sem passar por este método.
|
|
438
|
+
*/
|
|
439
|
+
private findFileByResolvedPath;
|
|
293
440
|
download(locale: string, token: string): Promise<{
|
|
294
441
|
stream: any;
|
|
295
442
|
filename: string;
|
|
@@ -325,6 +472,14 @@ export declare class FileService implements OnModuleInit {
|
|
|
325
472
|
* extractions) with a correct Content-Type instead of rejecting them.
|
|
326
473
|
*/
|
|
327
474
|
private inferImageContentType;
|
|
475
|
+
/**
|
|
476
|
+
* Lê só o começo do arquivo, o bastante para o sharp reconhecer o formato pelo
|
|
477
|
+
* cabeçalho. Existe para o sniffing de `uploadFromPath`, que não pode chamar
|
|
478
|
+
* `fs.readFile`: o mesmo caminho recebe pacotes SCORM e vídeos de vários GB, e
|
|
479
|
+
* carregá-los inteiros estoura o limite de Buffer. Devolve `undefined` em qualquer
|
|
480
|
+
* falha de leitura — quem chama já trata a ausência do buffer.
|
|
481
|
+
*/
|
|
482
|
+
private readFileHeader;
|
|
328
483
|
/**
|
|
329
484
|
* Resolves the MIME type to persist for an upload. When the incoming mimetype is
|
|
330
485
|
* generic (application/octet-stream or empty), recovers the real image type from
|
|
@@ -376,6 +531,8 @@ export declare class FileService implements OnModuleInit {
|
|
|
376
531
|
*/
|
|
377
532
|
tempURLById(fileId: number, expires?: number): Promise<any>;
|
|
378
533
|
tempOpenURL(filepath: string, expires?: number): Promise<any>;
|
|
534
|
+
/** Par de `tempURLById`, pela mesma razão: `path` cru resolve para NoSuchKey no S3. */
|
|
535
|
+
tempOpenURLById(fileId: number, expires?: number): Promise<any>;
|
|
379
536
|
getTemporaryCredentials(params: {
|
|
380
537
|
accessKeyId: string;
|
|
381
538
|
secretAccessKey: string;
|
|
@@ -402,6 +559,25 @@ export declare class FileService implements OnModuleInit {
|
|
|
402
559
|
ContentLength?: number;
|
|
403
560
|
ETag?: string;
|
|
404
561
|
}>;
|
|
562
|
+
/**
|
|
563
|
+
* URL assinada de um objeto em bucket avulso.
|
|
564
|
+
*
|
|
565
|
+
* O `getFileUrl` do provider resolve arquivos do acervo, que vivem no destino
|
|
566
|
+
* ativo do core. Este metodo serve para os buckets que outras libraries
|
|
567
|
+
* configuram por conta propria — o Studio grava no perfil de armazenamento
|
|
568
|
+
* dele, que pode nao ser o mesmo — e por isso recebe as credenciais e o bucket
|
|
569
|
+
* de fora, como o `headS3Object` ao lado.
|
|
570
|
+
*/
|
|
571
|
+
signS3Object(params: {
|
|
572
|
+
accessKeyId: string;
|
|
573
|
+
secretAccessKey: string;
|
|
574
|
+
sessionToken?: string;
|
|
575
|
+
region: string;
|
|
576
|
+
bucket: string;
|
|
577
|
+
key: string;
|
|
578
|
+
expiresInSeconds?: number;
|
|
579
|
+
downloadFileName?: string;
|
|
580
|
+
}): Promise<string>;
|
|
405
581
|
headS3Bucket(params: {
|
|
406
582
|
accessKeyId: string;
|
|
407
583
|
secretAccessKey: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.service.d.ts","sourceRoot":"","sources":["../../src/file/file.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"file.service.d.ts","sourceRoot":"","sources":["../../src/file/file.service.ts"],"names":[],"mappings":"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"}
|