@open-mercato/core 0.4.5-develop-5191db4ef3 → 0.4.5-develop-033a719bf2
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/generated/entities/message/index.js +65 -0
- package/dist/generated/entities/message/index.js.map +7 -0
- package/dist/generated/entities/message_access_token/index.js +19 -0
- package/dist/generated/entities/message_access_token/index.js.map +7 -0
- package/dist/generated/entities/message_confirmation/index.js +21 -0
- package/dist/generated/entities/message_confirmation/index.js.map +7 -0
- package/dist/generated/entities/message_object/index.js +23 -0
- package/dist/generated/entities/message_object/index.js.map +7 -0
- package/dist/generated/entities/message_recipient/index.js +31 -0
- package/dist/generated/entities/message_recipient/index.js.map +7 -0
- package/dist/generated/entities.ids.generated.js +8 -0
- package/dist/generated/entities.ids.generated.js.map +2 -2
- package/dist/generated/entity-fields-registry.js +10 -0
- package/dist/generated/entity-fields-registry.js.map +2 -2
- package/dist/modules/customers/backend/customers/deals/[id]/page.js +27 -8
- package/dist/modules/customers/backend/customers/deals/[id]/page.js.map +2 -2
- package/dist/modules/customers/lib/messageObjectPreviews.js +131 -0
- package/dist/modules/customers/lib/messageObjectPreviews.js.map +7 -0
- package/dist/modules/customers/message-objects.js +71 -0
- package/dist/modules/customers/message-objects.js.map +7 -0
- package/dist/modules/customers/widgets/messages/CustomerMessageObjectDetail.js +51 -0
- package/dist/modules/customers/widgets/messages/CustomerMessageObjectDetail.js.map +7 -0
- package/dist/modules/customers/widgets/messages/CustomerMessageObjectPreview.js +35 -0
- package/dist/modules/customers/widgets/messages/CustomerMessageObjectPreview.js.map +7 -0
- package/dist/modules/customers/widgets/messages/index.js +7 -0
- package/dist/modules/customers/widgets/messages/index.js.map +7 -0
- package/dist/modules/messages/acl.js +15 -0
- package/dist/modules/messages/acl.js.map +7 -0
- package/dist/modules/messages/api/[id]/actions/[actionId]/route.js +92 -0
- package/dist/modules/messages/api/[id]/actions/[actionId]/route.js.map +7 -0
- package/dist/modules/messages/api/[id]/archive/route.js +120 -0
- package/dist/modules/messages/api/[id]/archive/route.js.map +7 -0
- package/dist/modules/messages/api/[id]/attachments/route.js +195 -0
- package/dist/modules/messages/api/[id]/attachments/route.js.map +7 -0
- package/dist/modules/messages/api/[id]/confirmation/route.js +67 -0
- package/dist/modules/messages/api/[id]/confirmation/route.js.map +7 -0
- package/dist/modules/messages/api/[id]/conversation/archive/route.js +68 -0
- package/dist/modules/messages/api/[id]/conversation/archive/route.js.map +7 -0
- package/dist/modules/messages/api/[id]/conversation/read/route.js +68 -0
- package/dist/modules/messages/api/[id]/conversation/read/route.js.map +7 -0
- package/dist/modules/messages/api/[id]/conversation/route.js +68 -0
- package/dist/modules/messages/api/[id]/conversation/route.js.map +7 -0
- package/dist/modules/messages/api/[id]/forward/route.js +85 -0
- package/dist/modules/messages/api/[id]/forward/route.js.map +7 -0
- package/dist/modules/messages/api/[id]/forward-preview/route.js +70 -0
- package/dist/modules/messages/api/[id]/forward-preview/route.js.map +7 -0
- package/dist/modules/messages/api/[id]/read/route.js +120 -0
- package/dist/modules/messages/api/[id]/read/route.js.map +7 -0
- package/dist/modules/messages/api/[id]/reply/route.js +87 -0
- package/dist/modules/messages/api/[id]/reply/route.js.map +7 -0
- package/dist/modules/messages/api/[id]/route.js +350 -0
- package/dist/modules/messages/api/[id]/route.js.map +7 -0
- package/dist/modules/messages/api/object-types/route.js +54 -0
- package/dist/modules/messages/api/object-types/route.js.map +7 -0
- package/dist/modules/messages/api/openapi.js +261 -0
- package/dist/modules/messages/api/openapi.js.map +7 -0
- package/dist/modules/messages/api/route.js +262 -0
- package/dist/modules/messages/api/route.js.map +7 -0
- package/dist/modules/messages/api/token/[token]/route.js +99 -0
- package/dist/modules/messages/api/token/[token]/route.js.map +7 -0
- package/dist/modules/messages/api/types/route.js +40 -0
- package/dist/modules/messages/api/types/route.js.map +7 -0
- package/dist/modules/messages/api/unread-count/route.js +43 -0
- package/dist/modules/messages/api/unread-count/route.js.map +7 -0
- package/dist/modules/messages/backend/messages/[id]/page.js +10 -0
- package/dist/modules/messages/backend/messages/[id]/page.js.map +7 -0
- package/dist/modules/messages/backend/messages/[id]/page.meta.js +16 -0
- package/dist/modules/messages/backend/messages/[id]/page.meta.js.map +7 -0
- package/dist/modules/messages/backend/messages/compose/page.js +10 -0
- package/dist/modules/messages/backend/messages/compose/page.js.map +7 -0
- package/dist/modules/messages/backend/messages/compose/page.meta.js +17 -0
- package/dist/modules/messages/backend/messages/compose/page.meta.js.map +7 -0
- package/dist/modules/messages/backend/page.js +10 -0
- package/dist/modules/messages/backend/page.js.map +7 -0
- package/dist/modules/messages/backend/page.meta.js +33 -0
- package/dist/modules/messages/backend/page.meta.js.map +7 -0
- package/dist/modules/messages/commands/actions.js +265 -0
- package/dist/modules/messages/commands/actions.js.map +7 -0
- package/dist/modules/messages/commands/attachments.js +217 -0
- package/dist/modules/messages/commands/attachments.js.map +7 -0
- package/dist/modules/messages/commands/confirmations.js +151 -0
- package/dist/modules/messages/commands/confirmations.js.map +7 -0
- package/dist/modules/messages/commands/conversation.js +240 -0
- package/dist/modules/messages/commands/conversation.js.map +7 -0
- package/dist/modules/messages/commands/messages.js +748 -0
- package/dist/modules/messages/commands/messages.js.map +7 -0
- package/dist/modules/messages/commands/recipients.js +259 -0
- package/dist/modules/messages/commands/recipients.js.map +7 -0
- package/dist/modules/messages/commands/shared.js +258 -0
- package/dist/modules/messages/commands/shared.js.map +7 -0
- package/dist/modules/messages/commands/tokens.js +69 -0
- package/dist/modules/messages/commands/tokens.js.map +7 -0
- package/dist/modules/messages/components/ComposeMessagePageClient.js +24 -0
- package/dist/modules/messages/components/ComposeMessagePageClient.js.map +7 -0
- package/dist/modules/messages/components/MessageDetailPageClient.js +261 -0
- package/dist/modules/messages/components/MessageDetailPageClient.js.map +7 -0
- package/dist/modules/messages/components/MessagesInboxPageClient.js +390 -0
- package/dist/modules/messages/components/MessagesInboxPageClient.js.map +7 -0
- package/dist/modules/messages/components/confirmation/MessageConfirmationActions.js +31 -0
- package/dist/modules/messages/components/confirmation/MessageConfirmationActions.js.map +7 -0
- package/dist/modules/messages/components/confirmation/MessageConfirmationContent.js +69 -0
- package/dist/modules/messages/components/confirmation/MessageConfirmationContent.js.map +7 -0
- package/dist/modules/messages/components/defaults/DefaultMessageActions.js +31 -0
- package/dist/modules/messages/components/defaults/DefaultMessageActions.js.map +7 -0
- package/dist/modules/messages/components/defaults/DefaultMessageContent.js +19 -0
- package/dist/modules/messages/components/defaults/DefaultMessageContent.js.map +7 -0
- package/dist/modules/messages/components/defaults/DefaultMessageListItem.js +90 -0
- package/dist/modules/messages/components/defaults/DefaultMessageListItem.js.map +7 -0
- package/dist/modules/messages/components/defaults/MessageRecordObjectDetail.js +86 -0
- package/dist/modules/messages/components/defaults/MessageRecordObjectDetail.js.map +7 -0
- package/dist/modules/messages/components/defaults/MessageRecordObjectPreview.js +61 -0
- package/dist/modules/messages/components/defaults/MessageRecordObjectPreview.js.map +7 -0
- package/dist/modules/messages/components/message-detail/detail-panels.js +27 -0
- package/dist/modules/messages/components/message-detail/detail-panels.js.map +7 -0
- package/dist/modules/messages/components/message-detail/hooks/useMessageDetails.js +52 -0
- package/dist/modules/messages/components/message-detail/hooks/useMessageDetails.js.map +7 -0
- package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsActions.js +289 -0
- package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsActions.js.map +7 -0
- package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsConversation.js +103 -0
- package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsConversation.js.map +7 -0
- package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsQueries.js +78 -0
- package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsQueries.js.map +7 -0
- package/dist/modules/messages/components/message-detail/panels/MainMessageHeader.js +94 -0
- package/dist/modules/messages/components/message-detail/panels/MainMessageHeader.js.map +7 -0
- package/dist/modules/messages/components/message-detail/panels/MessageHeader.js +110 -0
- package/dist/modules/messages/components/message-detail/panels/MessageHeader.js.map +7 -0
- package/dist/modules/messages/components/message-detail/panels/MessageListComponent.js +58 -0
- package/dist/modules/messages/components/message-detail/panels/MessageListComponent.js.map +7 -0
- package/dist/modules/messages/components/message-detail/panels/actions-panel.js +51 -0
- package/dist/modules/messages/components/message-detail/panels/actions-panel.js.map +7 -0
- package/dist/modules/messages/components/message-detail/panels/attachments-panel.js +66 -0
- package/dist/modules/messages/components/message-detail/panels/attachments-panel.js.map +7 -0
- package/dist/modules/messages/components/message-detail/panels/body-panel.js +20 -0
- package/dist/modules/messages/components/message-detail/panels/body-panel.js.map +7 -0
- package/dist/modules/messages/components/message-detail/panels/composer-dialogs.js +36 -0
- package/dist/modules/messages/components/message-detail/panels/composer-dialogs.js.map +7 -0
- package/dist/modules/messages/components/message-detail/panels/dialogs.js +96 -0
- package/dist/modules/messages/components/message-detail/panels/dialogs.js.map +7 -0
- package/dist/modules/messages/components/message-detail/panels/index.js +25 -0
- package/dist/modules/messages/components/message-detail/panels/index.js.map +7 -0
- package/dist/modules/messages/components/message-detail/panels/meta-panel.js +14 -0
- package/dist/modules/messages/components/message-detail/panels/meta-panel.js.map +7 -0
- package/dist/modules/messages/components/message-detail/panels/objects-panel.js +51 -0
- package/dist/modules/messages/components/message-detail/panels/objects-panel.js.map +7 -0
- package/dist/modules/messages/components/message-detail/panels/thread-panel.js +54 -0
- package/dist/modules/messages/components/message-detail/panels/thread-panel.js.map +7 -0
- package/dist/modules/messages/components/message-detail/types.js +1 -0
- package/dist/modules/messages/components/message-detail/types.js.map +7 -0
- package/dist/modules/messages/components/message-detail/utils.js +54 -0
- package/dist/modules/messages/components/message-detail/utils.js.map +7 -0
- package/dist/modules/messages/components/utils/PriorityBadge.js +52 -0
- package/dist/modules/messages/components/utils/PriorityBadge.js.map +7 -0
- package/dist/modules/messages/components/utils/typeUiRegistry.js +77 -0
- package/dist/modules/messages/components/utils/typeUiRegistry.js.map +7 -0
- package/dist/modules/messages/data/entities.js +309 -0
- package/dist/modules/messages/data/entities.js.map +7 -0
- package/dist/modules/messages/data/validators.js +272 -0
- package/dist/modules/messages/data/validators.js.map +7 -0
- package/dist/modules/messages/emails/MessageEmail.js +108 -0
- package/dist/modules/messages/emails/MessageEmail.js.map +7 -0
- package/dist/modules/messages/events.js +24 -0
- package/dist/modules/messages/events.js.map +7 -0
- package/dist/modules/messages/frontend/messages/view/[token]/page.js +247 -0
- package/dist/modules/messages/frontend/messages/view/[token]/page.js.map +7 -0
- package/dist/modules/messages/frontend/messages/view/[token]/page.meta.js +9 -0
- package/dist/modules/messages/frontend/messages/view/[token]/page.meta.js.map +7 -0
- package/dist/modules/messages/index.js +21 -0
- package/dist/modules/messages/index.js.map +7 -0
- package/dist/modules/messages/lib/actions.js +141 -0
- package/dist/modules/messages/lib/actions.js.map +7 -0
- package/dist/modules/messages/lib/attachments.js +131 -0
- package/dist/modules/messages/lib/attachments.js.map +7 -0
- package/dist/modules/messages/lib/constants.js +7 -0
- package/dist/modules/messages/lib/constants.js.map +7 -0
- package/dist/modules/messages/lib/email-sender.js +201 -0
- package/dist/modules/messages/lib/email-sender.js.map +7 -0
- package/dist/modules/messages/lib/forwarding.js +179 -0
- package/dist/modules/messages/lib/forwarding.js.map +7 -0
- package/dist/modules/messages/lib/message-objects-registry.js +49 -0
- package/dist/modules/messages/lib/message-objects-registry.js.map +7 -0
- package/dist/modules/messages/lib/message-types-registry.js +41 -0
- package/dist/modules/messages/lib/message-types-registry.js.map +7 -0
- package/dist/modules/messages/lib/object-validation.js +20 -0
- package/dist/modules/messages/lib/object-validation.js.map +7 -0
- package/dist/modules/messages/lib/operationMetadata.js +21 -0
- package/dist/modules/messages/lib/operationMetadata.js.map +7 -0
- package/dist/modules/messages/lib/priorityUtils.js +61 -0
- package/dist/modules/messages/lib/priorityUtils.js.map +7 -0
- package/dist/modules/messages/lib/routeHelpers.js +44 -0
- package/dist/modules/messages/lib/routeHelpers.js.map +7 -0
- package/dist/modules/messages/message-objects.js +7 -0
- package/dist/modules/messages/message-objects.js.map +7 -0
- package/dist/modules/messages/message-types.js +67 -0
- package/dist/modules/messages/message-types.js.map +7 -0
- package/dist/modules/messages/migrations/Migration20260213181243.js +31 -0
- package/dist/modules/messages/migrations/Migration20260213181243.js.map +7 -0
- package/dist/modules/messages/migrations/Migration20260215165126.js +16 -0
- package/dist/modules/messages/migrations/Migration20260215165126.js.map +7 -0
- package/dist/modules/messages/notifications.js +27 -0
- package/dist/modules/messages/notifications.js.map +7 -0
- package/dist/modules/messages/setup.js +21 -0
- package/dist/modules/messages/setup.js.map +7 -0
- package/dist/modules/messages/subscribers/message-notification.js +108 -0
- package/dist/modules/messages/subscribers/message-notification.js.map +7 -0
- package/dist/modules/messages/workers/send-email.worker.js +253 -0
- package/dist/modules/messages/workers/send-email.worker.js.map +7 -0
- package/dist/modules/sales/backend/sales/documents/[id]/page.js +30 -11
- package/dist/modules/sales/backend/sales/documents/[id]/page.js.map +2 -2
- package/dist/modules/sales/commands/payments.js +12 -6
- package/dist/modules/sales/commands/payments.js.map +2 -2
- package/dist/modules/sales/lib/messageObjectPreviews.js +114 -0
- package/dist/modules/sales/lib/messageObjectPreviews.js.map +7 -0
- package/dist/modules/sales/message-objects.js +57 -0
- package/dist/modules/sales/message-objects.js.map +7 -0
- package/dist/modules/sales/widgets/messages/SalesDocumentMessageDetail.js +51 -0
- package/dist/modules/sales/widgets/messages/SalesDocumentMessageDetail.js.map +7 -0
- package/dist/modules/sales/widgets/messages/SalesDocumentMessagePreview.js +36 -0
- package/dist/modules/sales/widgets/messages/SalesDocumentMessagePreview.js.map +7 -0
- package/dist/modules/sales/widgets/messages/index.js +7 -0
- package/dist/modules/sales/widgets/messages/index.js.map +7 -0
- package/dist/modules/staff/backend/staff/leave-requests/[id]/page.js +55 -1
- package/dist/modules/staff/backend/staff/leave-requests/[id]/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/my-leave-requests/[id]/page.js +60 -1
- package/dist/modules/staff/backend/staff/my-leave-requests/[id]/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/team-members/[id]/page.js +2 -19
- package/dist/modules/staff/backend/staff/team-members/[id]/page.js.map +2 -2
- package/dist/modules/staff/components/LeaveRequestDetail.js +112 -0
- package/dist/modules/staff/components/LeaveRequestDetail.js.map +7 -0
- package/dist/modules/staff/components/LeaveRequestForm.js +3 -1
- package/dist/modules/staff/components/LeaveRequestForm.js.map +2 -2
- package/dist/modules/staff/components/LeaveRequestPreview.js +43 -0
- package/dist/modules/staff/components/LeaveRequestPreview.js.map +7 -0
- package/dist/modules/staff/lib/messageObjectPreviews.js +148 -0
- package/dist/modules/staff/lib/messageObjectPreviews.js.map +7 -0
- package/dist/modules/staff/message-objects.js +104 -0
- package/dist/modules/staff/message-objects.js.map +7 -0
- package/dist/modules/staff/message-types.js +23 -0
- package/dist/modules/staff/message-types.js.map +7 -0
- package/dist/modules/staff/widgets/messages/StaffMessageObjectDetail.js +51 -0
- package/dist/modules/staff/widgets/messages/StaffMessageObjectDetail.js.map +7 -0
- package/dist/modules/staff/widgets/messages/StaffMessageObjectPreview.js +34 -0
- package/dist/modules/staff/widgets/messages/StaffMessageObjectPreview.js.map +7 -0
- package/dist/modules/staff/widgets/messages/index.js +7 -0
- package/dist/modules/staff/widgets/messages/index.js.map +7 -0
- package/generated/entities/message/index.ts +31 -0
- package/generated/entities/message_access_token/index.ts +8 -0
- package/generated/entities/message_confirmation/index.ts +9 -0
- package/generated/entities/message_object/index.ts +10 -0
- package/generated/entities/message_recipient/index.ts +14 -0
- package/generated/entities.ids.generated.ts +8 -0
- package/generated/entity-fields-registry.ts +10 -0
- package/jest.setup.ts +5 -0
- package/package.json +2 -2
- package/src/modules/customers/backend/customers/deals/[id]/page.tsx +20 -4
- package/src/modules/customers/i18n/de.json +4 -0
- package/src/modules/customers/i18n/en.json +4 -0
- package/src/modules/customers/i18n/es.json +4 -0
- package/src/modules/customers/i18n/pl.json +4 -0
- package/src/modules/customers/lib/messageObjectPreviews.ts +154 -0
- package/src/modules/customers/message-objects.ts +70 -0
- package/src/modules/customers/widgets/messages/CustomerMessageObjectDetail.tsx +57 -0
- package/src/modules/customers/widgets/messages/CustomerMessageObjectPreview.tsx +49 -0
- package/src/modules/customers/widgets/messages/index.ts +2 -0
- package/src/modules/messages/acl.ts +11 -0
- package/src/modules/messages/api/[id]/actions/[actionId]/route.ts +103 -0
- package/src/modules/messages/api/[id]/archive/route.ts +138 -0
- package/src/modules/messages/api/[id]/attachments/route.ts +217 -0
- package/src/modules/messages/api/[id]/confirmation/route.ts +73 -0
- package/src/modules/messages/api/[id]/conversation/archive/route.ts +69 -0
- package/src/modules/messages/api/[id]/conversation/read/route.ts +69 -0
- package/src/modules/messages/api/[id]/conversation/route.ts +69 -0
- package/src/modules/messages/api/[id]/forward/route.ts +87 -0
- package/src/modules/messages/api/[id]/forward-preview/route.ts +75 -0
- package/src/modules/messages/api/[id]/read/route.ts +138 -0
- package/src/modules/messages/api/[id]/reply/route.ts +89 -0
- package/src/modules/messages/api/[id]/route.ts +401 -0
- package/src/modules/messages/api/object-types/route.ts +54 -0
- package/src/modules/messages/api/openapi.ts +261 -0
- package/src/modules/messages/api/route.ts +374 -0
- package/src/modules/messages/api/token/[token]/route.ts +103 -0
- package/src/modules/messages/api/types/route.ts +39 -0
- package/src/modules/messages/api/unread-count/route.ts +55 -0
- package/src/modules/messages/backend/messages/[id]/page.meta.ts +12 -0
- package/src/modules/messages/backend/messages/[id]/page.tsx +12 -0
- package/src/modules/messages/backend/messages/compose/page.meta.ts +13 -0
- package/src/modules/messages/backend/messages/compose/page.tsx +12 -0
- package/src/modules/messages/backend/page.meta.ts +31 -0
- package/src/modules/messages/backend/page.tsx +12 -0
- package/src/modules/messages/commands/actions.ts +307 -0
- package/src/modules/messages/commands/attachments.ts +227 -0
- package/src/modules/messages/commands/confirmations.ts +183 -0
- package/src/modules/messages/commands/conversation.ts +292 -0
- package/src/modules/messages/commands/messages.ts +845 -0
- package/src/modules/messages/commands/recipients.ts +281 -0
- package/src/modules/messages/commands/shared.ts +350 -0
- package/src/modules/messages/commands/tokens.ts +80 -0
- package/src/modules/messages/components/ComposeMessagePageClient.tsx +23 -0
- package/src/modules/messages/components/MessageDetailPageClient.tsx +287 -0
- package/src/modules/messages/components/MessagesInboxPageClient.tsx +469 -0
- package/src/modules/messages/components/confirmation/MessageConfirmationActions.tsx +35 -0
- package/src/modules/messages/components/confirmation/MessageConfirmationContent.tsx +88 -0
- package/src/modules/messages/components/defaults/DefaultMessageActions.tsx +37 -0
- package/src/modules/messages/components/defaults/DefaultMessageContent.tsx +21 -0
- package/src/modules/messages/components/defaults/DefaultMessageListItem.tsx +102 -0
- package/src/modules/messages/components/defaults/MessageRecordObjectDetail.tsx +114 -0
- package/src/modules/messages/components/defaults/MessageRecordObjectPreview.tsx +74 -0
- package/src/modules/messages/components/message-detail/detail-panels.ts +13 -0
- package/src/modules/messages/components/message-detail/hooks/useMessageDetails.ts +56 -0
- package/src/modules/messages/components/message-detail/hooks/useMessageDetailsActions.ts +367 -0
- package/src/modules/messages/components/message-detail/hooks/useMessageDetailsConversation.ts +134 -0
- package/src/modules/messages/components/message-detail/hooks/useMessageDetailsQueries.ts +102 -0
- package/src/modules/messages/components/message-detail/panels/MainMessageHeader.tsx +108 -0
- package/src/modules/messages/components/message-detail/panels/MessageHeader.tsx +144 -0
- package/src/modules/messages/components/message-detail/panels/MessageListComponent.tsx +63 -0
- package/src/modules/messages/components/message-detail/panels/actions-panel.tsx +66 -0
- package/src/modules/messages/components/message-detail/panels/attachments-panel.tsx +86 -0
- package/src/modules/messages/components/message-detail/panels/body-panel.tsx +32 -0
- package/src/modules/messages/components/message-detail/panels/composer-dialogs.tsx +42 -0
- package/src/modules/messages/components/message-detail/panels/dialogs.tsx +107 -0
- package/src/modules/messages/components/message-detail/panels/index.ts +11 -0
- package/src/modules/messages/components/message-detail/panels/meta-panel.tsx +19 -0
- package/src/modules/messages/components/message-detail/panels/objects-panel.tsx +65 -0
- package/src/modules/messages/components/message-detail/panels/thread-panel.tsx +65 -0
- package/src/modules/messages/components/message-detail/types.ts +114 -0
- package/src/modules/messages/components/message-detail/utils.ts +62 -0
- package/src/modules/messages/components/utils/PriorityBadge.tsx +63 -0
- package/src/modules/messages/components/utils/typeUiRegistry.ts +106 -0
- package/src/modules/messages/data/entities.ts +284 -0
- package/src/modules/messages/data/validators.ts +297 -0
- package/src/modules/messages/emails/MessageEmail.tsx +143 -0
- package/src/modules/messages/events.ts +24 -0
- package/src/modules/messages/frontend/messages/view/[token]/page.meta.ts +5 -0
- package/src/modules/messages/frontend/messages/view/[token]/page.tsx +389 -0
- package/src/modules/messages/i18n/de.json +240 -0
- package/src/modules/messages/i18n/en.json +240 -0
- package/src/modules/messages/i18n/es.json +240 -0
- package/src/modules/messages/i18n/pl.json +240 -0
- package/src/modules/messages/index.ts +19 -0
- package/src/modules/messages/lib/actions.ts +204 -0
- package/src/modules/messages/lib/attachments.ts +197 -0
- package/src/modules/messages/lib/constants.ts +2 -0
- package/src/modules/messages/lib/email-sender.ts +255 -0
- package/src/modules/messages/lib/forwarding.ts +240 -0
- package/src/modules/messages/lib/message-objects-registry.ts +60 -0
- package/src/modules/messages/lib/message-types-registry.ts +48 -0
- package/src/modules/messages/lib/object-validation.ts +26 -0
- package/src/modules/messages/lib/operationMetadata.ts +43 -0
- package/src/modules/messages/lib/priorityUtils.ts +76 -0
- package/src/modules/messages/lib/routeHelpers.ts +65 -0
- package/src/modules/messages/message-objects.ts +5 -0
- package/src/modules/messages/message-types.ts +65 -0
- package/src/modules/messages/migrations/.snapshot-open-mercato.json +957 -0
- package/src/modules/messages/migrations/Migration20260213181243.ts +34 -0
- package/src/modules/messages/migrations/Migration20260215165126.ts +16 -0
- package/src/modules/messages/notifications.ts +25 -0
- package/src/modules/messages/setup.ts +19 -0
- package/src/modules/messages/subscribers/message-notification.ts +138 -0
- package/src/modules/messages/workers/send-email.worker.ts +321 -0
- package/src/modules/sales/backend/sales/documents/[id]/page.tsx +23 -7
- package/src/modules/sales/commands/payments.ts +12 -6
- package/src/modules/sales/i18n/de.json +3 -0
- package/src/modules/sales/i18n/en.json +3 -0
- package/src/modules/sales/i18n/es.json +3 -0
- package/src/modules/sales/i18n/pl.json +3 -0
- package/src/modules/sales/lib/messageObjectPreviews.ts +150 -0
- package/src/modules/sales/message-objects.ts +56 -0
- package/src/modules/sales/widgets/messages/SalesDocumentMessageDetail.tsx +57 -0
- package/src/modules/sales/widgets/messages/SalesDocumentMessagePreview.tsx +46 -0
- package/src/modules/sales/widgets/messages/index.ts +2 -0
- package/src/modules/staff/backend/staff/leave-requests/[id]/page.tsx +54 -0
- package/src/modules/staff/backend/staff/my-leave-requests/[id]/page.tsx +58 -0
- package/src/modules/staff/backend/staff/team-members/[id]/page.tsx +2 -32
- package/src/modules/staff/components/LeaveRequestDetail.tsx +135 -0
- package/src/modules/staff/components/LeaveRequestForm.tsx +3 -0
- package/src/modules/staff/components/LeaveRequestPreview.tsx +74 -0
- package/src/modules/staff/i18n/de.json +8 -0
- package/src/modules/staff/i18n/en.json +8 -0
- package/src/modules/staff/i18n/es.json +8 -0
- package/src/modules/staff/i18n/pl.json +8 -0
- package/src/modules/staff/lib/messageObjectPreviews.ts +182 -0
- package/src/modules/staff/message-objects.ts +102 -0
- package/src/modules/staff/message-types.ts +21 -0
- package/src/modules/staff/widgets/messages/StaffMessageObjectDetail.tsx +57 -0
- package/src/modules/staff/widgets/messages/StaffMessageObjectPreview.tsx +44 -0
- package/src/modules/staff/widgets/messages/index.ts +2 -0
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { findWithDecryption } from "@open-mercato/shared/lib/encryption/find";
|
|
2
|
+
import { User } from "../../auth/data/entities.js";
|
|
3
|
+
import { Message, MessageRecipient } from "../data/entities.js";
|
|
4
|
+
const FORWARD_MARKER = "---------- Forwarded message ----------";
|
|
5
|
+
const MAX_FORWARD_BODY_LENGTH = 5e4;
|
|
6
|
+
function formatForwardSubject(subject) {
|
|
7
|
+
if (/^fwd:\s*/i.test(subject)) return subject;
|
|
8
|
+
return `Fwd: ${subject}`;
|
|
9
|
+
}
|
|
10
|
+
function formatDateLabel(date) {
|
|
11
|
+
if (!date) return "-";
|
|
12
|
+
return date.toISOString();
|
|
13
|
+
}
|
|
14
|
+
function normalizeSubject(subject) {
|
|
15
|
+
if (typeof subject !== "string") return "(no subject)";
|
|
16
|
+
const trimmed = subject.trim();
|
|
17
|
+
return trimmed.length > 0 ? trimmed : "(no subject)";
|
|
18
|
+
}
|
|
19
|
+
function formatUserLabel(user, fallbackUserId) {
|
|
20
|
+
const name = user?.name?.trim();
|
|
21
|
+
const email = user?.email?.trim();
|
|
22
|
+
if (name && email) return `${name} <${email}>`;
|
|
23
|
+
if (name) return name;
|
|
24
|
+
if (email) return email;
|
|
25
|
+
return fallbackUserId;
|
|
26
|
+
}
|
|
27
|
+
function ensureMaxForwardBodyLength(body) {
|
|
28
|
+
if (body.length > MAX_FORWARD_BODY_LENGTH) {
|
|
29
|
+
throw new Error("Forward body exceeds maximum length");
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
async function buildForwardThreadSlice(em, scope, selectedMessage) {
|
|
33
|
+
const threadMessages = await em.find(
|
|
34
|
+
Message,
|
|
35
|
+
{
|
|
36
|
+
threadId: selectedMessage.threadId ?? selectedMessage.id,
|
|
37
|
+
tenantId: scope.tenantId,
|
|
38
|
+
organizationId: scope.organizationId,
|
|
39
|
+
deletedAt: null,
|
|
40
|
+
isDraft: false
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
orderBy: {
|
|
44
|
+
sentAt: "ASC",
|
|
45
|
+
createdAt: "ASC",
|
|
46
|
+
id: "ASC"
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
);
|
|
50
|
+
const messagesById = new Map(threadMessages.map((item) => [item.id, item]));
|
|
51
|
+
messagesById.set(selectedMessage.id, selectedMessage);
|
|
52
|
+
const threadRootId = selectedMessage.threadId ?? null;
|
|
53
|
+
if (threadRootId && !messagesById.has(threadRootId)) {
|
|
54
|
+
const threadRoot = await em.findOne(Message, {
|
|
55
|
+
id: threadRootId,
|
|
56
|
+
tenantId: scope.tenantId,
|
|
57
|
+
organizationId: scope.organizationId,
|
|
58
|
+
deletedAt: null,
|
|
59
|
+
isDraft: false
|
|
60
|
+
});
|
|
61
|
+
if (threadRoot) {
|
|
62
|
+
messagesById.set(threadRoot.id, threadRoot);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
let parentMessageId = selectedMessage.parentMessageId ?? null;
|
|
66
|
+
while (parentMessageId) {
|
|
67
|
+
const parentMessage = await em.findOne(Message, {
|
|
68
|
+
id: parentMessageId,
|
|
69
|
+
tenantId: scope.tenantId,
|
|
70
|
+
organizationId: scope.organizationId,
|
|
71
|
+
deletedAt: null,
|
|
72
|
+
isDraft: false
|
|
73
|
+
});
|
|
74
|
+
if (!parentMessage) break;
|
|
75
|
+
messagesById.set(parentMessage.id, parentMessage);
|
|
76
|
+
parentMessageId = parentMessage.parentMessageId ?? null;
|
|
77
|
+
}
|
|
78
|
+
const orderedThreadMessages = Array.from(messagesById.values()).sort((a, b) => {
|
|
79
|
+
const aTime = a.sentAt?.getTime() ?? 0;
|
|
80
|
+
const bTime = b.sentAt?.getTime() ?? 0;
|
|
81
|
+
if (aTime !== bTime) return aTime - bTime;
|
|
82
|
+
const aCreatedAt = a.createdAt.getTime();
|
|
83
|
+
const bCreatedAt = b.createdAt.getTime();
|
|
84
|
+
if (aCreatedAt !== bCreatedAt) return aCreatedAt - bCreatedAt;
|
|
85
|
+
return a.id.localeCompare(b.id);
|
|
86
|
+
});
|
|
87
|
+
const selectedIndex = orderedThreadMessages.findIndex((item) => item.id === selectedMessage.id);
|
|
88
|
+
const threadSlice = selectedIndex >= 0 ? orderedThreadMessages.slice(0, selectedIndex + 1) : [selectedMessage];
|
|
89
|
+
if (scope.userId) {
|
|
90
|
+
const sliceIds = threadSlice.map((item) => item.id);
|
|
91
|
+
const recipientRows = sliceIds.length > 0 ? await em.find(MessageRecipient, {
|
|
92
|
+
messageId: { $in: sliceIds },
|
|
93
|
+
recipientUserId: scope.userId,
|
|
94
|
+
deletedAt: null
|
|
95
|
+
}) : [];
|
|
96
|
+
const recipientMessageIds = new Set(recipientRows.map((row) => row.messageId));
|
|
97
|
+
const visibleSlice = threadSlice.filter(
|
|
98
|
+
(item) => item.senderUserId === scope.userId || recipientMessageIds.has(item.id)
|
|
99
|
+
);
|
|
100
|
+
return visibleSlice.map((item) => ({
|
|
101
|
+
id: item.id,
|
|
102
|
+
senderUserId: item.senderUserId,
|
|
103
|
+
subject: item.subject,
|
|
104
|
+
body: item.body,
|
|
105
|
+
sentAt: item.sentAt,
|
|
106
|
+
createdAt: item.createdAt
|
|
107
|
+
}));
|
|
108
|
+
}
|
|
109
|
+
return threadSlice.map((item) => ({
|
|
110
|
+
id: item.id,
|
|
111
|
+
senderUserId: item.senderUserId,
|
|
112
|
+
subject: item.subject,
|
|
113
|
+
body: item.body,
|
|
114
|
+
sentAt: item.sentAt,
|
|
115
|
+
createdAt: item.createdAt
|
|
116
|
+
}));
|
|
117
|
+
}
|
|
118
|
+
async function buildForwardPreviewFromThreadSlice(em, scope, selectedMessage, threadSlice) {
|
|
119
|
+
const allMessageIds = threadSlice.map((item) => item.id);
|
|
120
|
+
const allSenderIds = Array.from(new Set(threadSlice.map((item) => item.senderUserId)));
|
|
121
|
+
const recipients = allMessageIds.length > 0 ? await em.find(MessageRecipient, {
|
|
122
|
+
messageId: { $in: allMessageIds },
|
|
123
|
+
deletedAt: null
|
|
124
|
+
}) : [];
|
|
125
|
+
const allRecipientUserIds = Array.from(new Set(recipients.map((item) => item.recipientUserId)));
|
|
126
|
+
const allUserIds = Array.from(/* @__PURE__ */ new Set([...allSenderIds, ...allRecipientUserIds]));
|
|
127
|
+
const users = allUserIds.length > 0 ? await findWithDecryption(
|
|
128
|
+
em,
|
|
129
|
+
User,
|
|
130
|
+
{ id: { $in: allUserIds } },
|
|
131
|
+
void 0,
|
|
132
|
+
{ tenantId: scope.tenantId, organizationId: scope.organizationId }
|
|
133
|
+
) : [];
|
|
134
|
+
const userById = new Map(users.map((user) => [user.id, user]));
|
|
135
|
+
const recipientsByMessageId = /* @__PURE__ */ new Map();
|
|
136
|
+
for (const recipient of recipients) {
|
|
137
|
+
const currentRecipients = recipientsByMessageId.get(recipient.messageId) ?? [];
|
|
138
|
+
currentRecipients.push(recipient);
|
|
139
|
+
recipientsByMessageId.set(recipient.messageId, currentRecipients);
|
|
140
|
+
}
|
|
141
|
+
const body = threadSlice.map((item) => {
|
|
142
|
+
const sender = userById.get(item.senderUserId);
|
|
143
|
+
const toRecipients = recipientsByMessageId.get(item.id) ?? [];
|
|
144
|
+
const toLabel = toRecipients.length > 0 ? toRecipients.map((recipient) => formatUserLabel(userById.get(recipient.recipientUserId), recipient.recipientUserId)).join(", ") : "-";
|
|
145
|
+
return [
|
|
146
|
+
FORWARD_MARKER,
|
|
147
|
+
`From: ${formatUserLabel(sender, item.senderUserId)}`,
|
|
148
|
+
`Date: ${formatDateLabel(item.sentAt ?? item.createdAt)}`,
|
|
149
|
+
`Subject: ${normalizeSubject(item.subject)}`,
|
|
150
|
+
`To: ${toLabel}`,
|
|
151
|
+
"",
|
|
152
|
+
item.body ?? ""
|
|
153
|
+
].join("\n");
|
|
154
|
+
}).join("\n\n");
|
|
155
|
+
ensureMaxForwardBodyLength(body);
|
|
156
|
+
return {
|
|
157
|
+
subject: formatForwardSubject(selectedMessage.subject),
|
|
158
|
+
body
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
async function buildForwardPreview(em, scope, selectedMessage) {
|
|
162
|
+
const threadSlice = await buildForwardThreadSlice(em, scope, selectedMessage);
|
|
163
|
+
return buildForwardPreviewFromThreadSlice(em, scope, selectedMessage, threadSlice);
|
|
164
|
+
}
|
|
165
|
+
function buildForwardBodyFromLegacyInput(generatedBody, additionalBody) {
|
|
166
|
+
const legacyPrefix = additionalBody?.trim();
|
|
167
|
+
const finalBody = legacyPrefix ? `${legacyPrefix}
|
|
168
|
+
|
|
169
|
+
${generatedBody}` : generatedBody;
|
|
170
|
+
ensureMaxForwardBodyLength(finalBody);
|
|
171
|
+
return finalBody;
|
|
172
|
+
}
|
|
173
|
+
export {
|
|
174
|
+
buildForwardBodyFromLegacyInput,
|
|
175
|
+
buildForwardPreview,
|
|
176
|
+
buildForwardPreviewFromThreadSlice,
|
|
177
|
+
buildForwardThreadSlice
|
|
178
|
+
};
|
|
179
|
+
//# sourceMappingURL=forwarding.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/modules/messages/lib/forwarding.ts"],
|
|
4
|
+
"sourcesContent": ["import type { EntityManager } from '@mikro-orm/postgresql'\nimport { findWithDecryption } from '@open-mercato/shared/lib/encryption/find'\nimport { User } from '../../auth/data/entities'\nimport { Message, MessageRecipient } from '../data/entities'\n\nconst FORWARD_MARKER = '---------- Forwarded message ----------'\nconst MAX_FORWARD_BODY_LENGTH = 50_000\n\ntype MessageScope = {\n tenantId: string\n organizationId: string | null\n userId?: string | null\n}\n\ntype ForwardMessageBlock = {\n id: string\n senderUserId: string\n subject: string\n body: string\n sentAt: Date | null | undefined\n createdAt: Date\n}\n\nfunction formatForwardSubject(subject: string): string {\n if (/^fwd:\\s*/i.test(subject)) return subject\n return `Fwd: ${subject}`\n}\n\nfunction formatDateLabel(date: Date | null | undefined): string {\n if (!date) return '-'\n return date.toISOString()\n}\n\nfunction normalizeSubject(subject: string | null | undefined): string {\n if (typeof subject !== 'string') return '(no subject)'\n const trimmed = subject.trim()\n return trimmed.length > 0 ? trimmed : '(no subject)'\n}\n\nfunction formatUserLabel(user: { name?: string | null; email?: string | null } | undefined, fallbackUserId: string): string {\n const name = user?.name?.trim()\n const email = user?.email?.trim()\n if (name && email) return `${name} <${email}>`\n if (name) return name\n if (email) return email\n return fallbackUserId\n}\n\nfunction ensureMaxForwardBodyLength(body: string): void {\n if (body.length > MAX_FORWARD_BODY_LENGTH) {\n throw new Error('Forward body exceeds maximum length')\n }\n}\n\nexport async function buildForwardThreadSlice(\n em: EntityManager,\n scope: MessageScope,\n selectedMessage: Message,\n): Promise<ForwardMessageBlock[]> {\n const threadMessages = await em.find(\n Message,\n {\n threadId: selectedMessage.threadId ?? selectedMessage.id,\n tenantId: scope.tenantId,\n organizationId: scope.organizationId,\n deletedAt: null,\n isDraft: false,\n },\n {\n orderBy: {\n sentAt: 'ASC',\n createdAt: 'ASC',\n id: 'ASC',\n },\n },\n )\n\n const messagesById = new Map(threadMessages.map((item) => [item.id, item]))\n messagesById.set(selectedMessage.id, selectedMessage)\n\n const threadRootId = selectedMessage.threadId ?? null\n if (threadRootId && !messagesById.has(threadRootId)) {\n const threadRoot = await em.findOne(Message, {\n id: threadRootId,\n tenantId: scope.tenantId,\n organizationId: scope.organizationId,\n deletedAt: null,\n isDraft: false,\n })\n if (threadRoot) {\n messagesById.set(threadRoot.id, threadRoot)\n }\n }\n\n let parentMessageId = selectedMessage.parentMessageId ?? null\n while (parentMessageId) {\n const parentMessage = await em.findOne(Message, {\n id: parentMessageId,\n tenantId: scope.tenantId,\n organizationId: scope.organizationId,\n deletedAt: null,\n isDraft: false,\n })\n if (!parentMessage) break\n messagesById.set(parentMessage.id, parentMessage)\n parentMessageId = parentMessage.parentMessageId ?? null\n }\n\n const orderedThreadMessages = Array.from(messagesById.values()).sort((a, b) => {\n const aTime = a.sentAt?.getTime() ?? 0\n const bTime = b.sentAt?.getTime() ?? 0\n if (aTime !== bTime) return aTime - bTime\n\n const aCreatedAt = a.createdAt.getTime()\n const bCreatedAt = b.createdAt.getTime()\n if (aCreatedAt !== bCreatedAt) return aCreatedAt - bCreatedAt\n\n return a.id.localeCompare(b.id)\n })\n\n const selectedIndex = orderedThreadMessages.findIndex((item) => item.id === selectedMessage.id)\n const threadSlice = selectedIndex >= 0 ? orderedThreadMessages.slice(0, selectedIndex + 1) : [selectedMessage]\n\n if (scope.userId) {\n const sliceIds = threadSlice.map((item) => item.id)\n const recipientRows = sliceIds.length > 0\n ? await em.find(MessageRecipient, {\n messageId: { $in: sliceIds },\n recipientUserId: scope.userId,\n deletedAt: null,\n })\n : []\n const recipientMessageIds = new Set(recipientRows.map((row) => row.messageId))\n const visibleSlice = threadSlice.filter(\n (item) => item.senderUserId === scope.userId || recipientMessageIds.has(item.id),\n )\n return visibleSlice.map((item) => ({\n id: item.id,\n senderUserId: item.senderUserId,\n subject: item.subject,\n body: item.body,\n sentAt: item.sentAt,\n createdAt: item.createdAt,\n }))\n }\n\n return threadSlice.map((item) => ({\n id: item.id,\n senderUserId: item.senderUserId,\n subject: item.subject,\n body: item.body,\n sentAt: item.sentAt,\n createdAt: item.createdAt,\n }))\n}\n\nexport async function buildForwardPreviewFromThreadSlice(\n em: EntityManager,\n scope: MessageScope,\n selectedMessage: Message,\n threadSlice: ForwardMessageBlock[],\n): Promise<{ subject: string; body: string }> {\n const allMessageIds = threadSlice.map((item) => item.id)\n const allSenderIds = Array.from(new Set(threadSlice.map((item) => item.senderUserId)))\n\n const recipients = allMessageIds.length > 0\n ? await em.find(MessageRecipient, {\n messageId: { $in: allMessageIds },\n deletedAt: null,\n })\n : []\n\n const allRecipientUserIds = Array.from(new Set(recipients.map((item) => item.recipientUserId)))\n const allUserIds = Array.from(new Set([...allSenderIds, ...allRecipientUserIds]))\n const users = allUserIds.length > 0\n ? await findWithDecryption(\n em,\n User,\n { id: { $in: allUserIds } },\n undefined,\n { tenantId: scope.tenantId, organizationId: scope.organizationId },\n )\n : []\n\n const userById = new Map(users.map((user) => [user.id, user]))\n const recipientsByMessageId = new Map<string, MessageRecipient[]>()\n for (const recipient of recipients) {\n const currentRecipients = recipientsByMessageId.get(recipient.messageId) ?? []\n currentRecipients.push(recipient)\n recipientsByMessageId.set(recipient.messageId, currentRecipients)\n }\n\n const body = threadSlice.map((item) => {\n const sender = userById.get(item.senderUserId)\n const toRecipients = recipientsByMessageId.get(item.id) ?? []\n const toLabel = toRecipients.length > 0\n ? toRecipients\n .map((recipient) => formatUserLabel(userById.get(recipient.recipientUserId), recipient.recipientUserId))\n .join(', ')\n : '-'\n\n return [\n FORWARD_MARKER,\n `From: ${formatUserLabel(sender, item.senderUserId)}`,\n `Date: ${formatDateLabel(item.sentAt ?? item.createdAt)}`,\n `Subject: ${normalizeSubject(item.subject)}`,\n `To: ${toLabel}`,\n '',\n item.body ?? '',\n ].join('\\n')\n }).join('\\n\\n')\n\n ensureMaxForwardBodyLength(body)\n\n return {\n subject: formatForwardSubject(selectedMessage.subject),\n body,\n }\n}\n\nexport async function buildForwardPreview(\n em: EntityManager,\n scope: MessageScope,\n selectedMessage: Message,\n): Promise<{ subject: string; body: string }> {\n const threadSlice = await buildForwardThreadSlice(em, scope, selectedMessage)\n return buildForwardPreviewFromThreadSlice(em, scope, selectedMessage, threadSlice)\n}\n\nexport function buildForwardBodyFromLegacyInput(\n generatedBody: string,\n additionalBody?: string,\n): string {\n const legacyPrefix = additionalBody?.trim()\n const finalBody = legacyPrefix\n ? `${legacyPrefix}\\n\\n${generatedBody}`\n : generatedBody\n ensureMaxForwardBodyLength(finalBody)\n return finalBody\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import defaultTypes from "../message-objects.js";
|
|
2
|
+
const registry = /* @__PURE__ */ new Map();
|
|
3
|
+
function getKey(module, entityType) {
|
|
4
|
+
return `${module}:${entityType}`;
|
|
5
|
+
}
|
|
6
|
+
function ensureDefaults() {
|
|
7
|
+
if (registry.size > 0) return;
|
|
8
|
+
registerMessageObjectTypes(defaultTypes);
|
|
9
|
+
}
|
|
10
|
+
function registerMessageObjectTypes(types, options = {}) {
|
|
11
|
+
if (options.replace) {
|
|
12
|
+
registry.clear();
|
|
13
|
+
}
|
|
14
|
+
for (const type of types) {
|
|
15
|
+
const key = getKey(type.module, type.entityType);
|
|
16
|
+
if (registry.has(key)) {
|
|
17
|
+
console.warn(`[messages] Message object type "${key}" is already registered, overwriting`);
|
|
18
|
+
}
|
|
19
|
+
registry.set(key, type);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function getMessageObjectType(module, entityType) {
|
|
23
|
+
ensureDefaults();
|
|
24
|
+
return registry.get(getKey(module, entityType));
|
|
25
|
+
}
|
|
26
|
+
function isMessageObjectTypeAllowedForMessageType(objectType, messageType) {
|
|
27
|
+
if (!messageType || !messageType.trim()) return true;
|
|
28
|
+
const allowed = objectType.messageTypes;
|
|
29
|
+
if (!Array.isArray(allowed) || allowed.length === 0) return true;
|
|
30
|
+
return allowed.includes(messageType);
|
|
31
|
+
}
|
|
32
|
+
function getMessageObjectTypesForMessageType(messageType) {
|
|
33
|
+
ensureDefaults();
|
|
34
|
+
return Array.from(registry.values()).filter(
|
|
35
|
+
(objectType) => isMessageObjectTypeAllowedForMessageType(objectType, messageType)
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
function getAllMessageObjectTypes() {
|
|
39
|
+
ensureDefaults();
|
|
40
|
+
return Array.from(registry.values());
|
|
41
|
+
}
|
|
42
|
+
export {
|
|
43
|
+
getAllMessageObjectTypes,
|
|
44
|
+
getMessageObjectType,
|
|
45
|
+
getMessageObjectTypesForMessageType,
|
|
46
|
+
isMessageObjectTypeAllowedForMessageType,
|
|
47
|
+
registerMessageObjectTypes
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=message-objects-registry.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/modules/messages/lib/message-objects-registry.ts"],
|
|
4
|
+
"sourcesContent": ["import type { MessageObjectTypeDefinition } from '@open-mercato/shared/modules/messages/types'\nimport defaultTypes from '../message-objects'\n\nconst registry = new Map<string, MessageObjectTypeDefinition>()\n\nexport type RegisterMessageObjectTypesOptions = {\n replace?: boolean\n}\n\nfunction getKey(module: string, entityType: string): string {\n return `${module}:${entityType}`\n}\n\nfunction ensureDefaults(): void {\n if (registry.size > 0) return\n registerMessageObjectTypes(defaultTypes)\n}\n\nexport function registerMessageObjectTypes(\n types: MessageObjectTypeDefinition[],\n options: RegisterMessageObjectTypesOptions = {},\n): void {\n if (options.replace) {\n registry.clear()\n }\n for (const type of types) {\n const key = getKey(type.module, type.entityType)\n if (registry.has(key)) {\n console.warn(`[messages] Message object type \"${key}\" is already registered, overwriting`)\n }\n registry.set(key, type)\n }\n}\n\nexport function getMessageObjectType(module: string, entityType: string): MessageObjectTypeDefinition | undefined {\n ensureDefaults()\n return registry.get(getKey(module, entityType))\n}\n\nexport function isMessageObjectTypeAllowedForMessageType(\n objectType: MessageObjectTypeDefinition,\n messageType: string,\n): boolean {\n if (!messageType || !messageType.trim()) return true\n const allowed = objectType.messageTypes\n if (!Array.isArray(allowed) || allowed.length === 0) return true\n return allowed.includes(messageType)\n}\n\nexport function getMessageObjectTypesForMessageType(messageType: string): MessageObjectTypeDefinition[] {\n ensureDefaults()\n return Array.from(registry.values()).filter((objectType) =>\n isMessageObjectTypeAllowedForMessageType(objectType, messageType),\n )\n}\n\nexport function getAllMessageObjectTypes(): MessageObjectTypeDefinition[] {\n ensureDefaults()\n return Array.from(registry.values())\n}\n"],
|
|
5
|
+
"mappings": "AACA,OAAO,kBAAkB;AAEzB,MAAM,WAAW,oBAAI,IAAyC;AAM9D,SAAS,OAAO,QAAgB,YAA4B;AAC1D,SAAO,GAAG,MAAM,IAAI,UAAU;AAChC;AAEA,SAAS,iBAAuB;AAC9B,MAAI,SAAS,OAAO,EAAG;AACvB,6BAA2B,YAAY;AACzC;AAEO,SAAS,2BACd,OACA,UAA6C,CAAC,GACxC;AACN,MAAI,QAAQ,SAAS;AACnB,aAAS,MAAM;AAAA,EACjB;AACA,aAAW,QAAQ,OAAO;AACxB,UAAM,MAAM,OAAO,KAAK,QAAQ,KAAK,UAAU;AAC/C,QAAI,SAAS,IAAI,GAAG,GAAG;AACrB,cAAQ,KAAK,mCAAmC,GAAG,sCAAsC;AAAA,IAC3F;AACA,aAAS,IAAI,KAAK,IAAI;AAAA,EACxB;AACF;AAEO,SAAS,qBAAqB,QAAgB,YAA6D;AAChH,iBAAe;AACf,SAAO,SAAS,IAAI,OAAO,QAAQ,UAAU,CAAC;AAChD;AAEO,SAAS,yCACd,YACA,aACS;AACT,MAAI,CAAC,eAAe,CAAC,YAAY,KAAK,EAAG,QAAO;AAChD,QAAM,UAAU,WAAW;AAC3B,MAAI,CAAC,MAAM,QAAQ,OAAO,KAAK,QAAQ,WAAW,EAAG,QAAO;AAC5D,SAAO,QAAQ,SAAS,WAAW;AACrC;AAEO,SAAS,oCAAoC,aAAoD;AACtG,iBAAe;AACf,SAAO,MAAM,KAAK,SAAS,OAAO,CAAC,EAAE;AAAA,IAAO,CAAC,eAC3C,yCAAyC,YAAY,WAAW;AAAA,EAClE;AACF;AAEO,SAAS,2BAA0D;AACxE,iBAAe;AACf,SAAO,MAAM,KAAK,SAAS,OAAO,CAAC;AACrC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import defaultTypes from "../message-types.js";
|
|
2
|
+
const registry = /* @__PURE__ */ new Map();
|
|
3
|
+
function ensureDefaults() {
|
|
4
|
+
if (registry.size > 0) return;
|
|
5
|
+
registerMessageTypes(defaultTypes);
|
|
6
|
+
}
|
|
7
|
+
function registerMessageTypes(types, options = {}) {
|
|
8
|
+
if (options.replace) {
|
|
9
|
+
registry.clear();
|
|
10
|
+
}
|
|
11
|
+
for (const type of types) {
|
|
12
|
+
if (registry.has(type.type)) {
|
|
13
|
+
console.warn(`[messages] Message type "${type.type}" is already registered, overwriting`);
|
|
14
|
+
}
|
|
15
|
+
registry.set(type.type, type);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function getMessageType(type) {
|
|
19
|
+
ensureDefaults();
|
|
20
|
+
return registry.get(type);
|
|
21
|
+
}
|
|
22
|
+
function getMessageTypeOrDefault(type) {
|
|
23
|
+
ensureDefaults();
|
|
24
|
+
return registry.get(type) ?? registry.get("default") ?? defaultTypes[0];
|
|
25
|
+
}
|
|
26
|
+
function getAllMessageTypes() {
|
|
27
|
+
ensureDefaults();
|
|
28
|
+
return Array.from(registry.values());
|
|
29
|
+
}
|
|
30
|
+
function getMessageTypesByModule(module) {
|
|
31
|
+
ensureDefaults();
|
|
32
|
+
return Array.from(registry.values()).filter((entry) => entry.module === module);
|
|
33
|
+
}
|
|
34
|
+
export {
|
|
35
|
+
getAllMessageTypes,
|
|
36
|
+
getMessageType,
|
|
37
|
+
getMessageTypeOrDefault,
|
|
38
|
+
getMessageTypesByModule,
|
|
39
|
+
registerMessageTypes
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=message-types-registry.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/modules/messages/lib/message-types-registry.ts"],
|
|
4
|
+
"sourcesContent": ["import type { MessageTypeDefinition } from '@open-mercato/shared/modules/messages/types'\nimport defaultTypes from '../message-types'\n\nconst registry = new Map<string, MessageTypeDefinition>()\n\nexport type RegisterMessageTypesOptions = {\n replace?: boolean\n}\n\nfunction ensureDefaults(): void {\n if (registry.size > 0) return\n registerMessageTypes(defaultTypes)\n}\n\nexport function registerMessageTypes(\n types: MessageTypeDefinition[],\n options: RegisterMessageTypesOptions = {},\n): void {\n if (options.replace) {\n registry.clear()\n }\n for (const type of types) {\n if (registry.has(type.type)) {\n console.warn(`[messages] Message type \"${type.type}\" is already registered, overwriting`)\n }\n registry.set(type.type, type)\n }\n}\n\nexport function getMessageType(type: string): MessageTypeDefinition | undefined {\n ensureDefaults()\n return registry.get(type)\n}\n\nexport function getMessageTypeOrDefault(type: string): MessageTypeDefinition {\n ensureDefaults()\n return registry.get(type) ?? registry.get('default') ?? defaultTypes[0]!\n}\n\nexport function getAllMessageTypes(): MessageTypeDefinition[] {\n ensureDefaults()\n return Array.from(registry.values())\n}\n\nexport function getMessageTypesByModule(module: string): MessageTypeDefinition[] {\n ensureDefaults()\n return Array.from(registry.values()).filter((entry) => entry.module === module)\n}\n"],
|
|
5
|
+
"mappings": "AACA,OAAO,kBAAkB;AAEzB,MAAM,WAAW,oBAAI,IAAmC;AAMxD,SAAS,iBAAuB;AAC9B,MAAI,SAAS,OAAO,EAAG;AACvB,uBAAqB,YAAY;AACnC;AAEO,SAAS,qBACd,OACA,UAAuC,CAAC,GAClC;AACN,MAAI,QAAQ,SAAS;AACnB,aAAS,MAAM;AAAA,EACjB;AACA,aAAW,QAAQ,OAAO;AACxB,QAAI,SAAS,IAAI,KAAK,IAAI,GAAG;AAC3B,cAAQ,KAAK,4BAA4B,KAAK,IAAI,sCAAsC;AAAA,IAC1F;AACA,aAAS,IAAI,KAAK,MAAM,IAAI;AAAA,EAC9B;AACF;AAEO,SAAS,eAAe,MAAiD;AAC9E,iBAAe;AACf,SAAO,SAAS,IAAI,IAAI;AAC1B;AAEO,SAAS,wBAAwB,MAAqC;AAC3E,iBAAe;AACf,SAAO,SAAS,IAAI,IAAI,KAAK,SAAS,IAAI,SAAS,KAAK,aAAa,CAAC;AACxE;AAEO,SAAS,qBAA8C;AAC5D,iBAAe;AACf,SAAO,MAAM,KAAK,SAAS,OAAO,CAAC;AACrC;AAEO,SAAS,wBAAwB,QAAyC;AAC/E,iBAAe;AACf,SAAO,MAAM,KAAK,SAAS,OAAO,CAAC,EAAE,OAAO,CAAC,UAAU,MAAM,WAAW,MAAM;AAChF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getMessageObjectType,
|
|
3
|
+
isMessageObjectTypeAllowedForMessageType
|
|
4
|
+
} from "./message-objects-registry.js";
|
|
5
|
+
function validateMessageObjectsForType(messageType, objects) {
|
|
6
|
+
for (const object of objects) {
|
|
7
|
+
const objectType = getMessageObjectType(object.entityModule, object.entityType);
|
|
8
|
+
if (!objectType) {
|
|
9
|
+
return `Unsupported message object type: ${object.entityModule}:${object.entityType}`;
|
|
10
|
+
}
|
|
11
|
+
if (!isMessageObjectTypeAllowedForMessageType(objectType, messageType)) {
|
|
12
|
+
return `Object type ${object.entityModule}:${object.entityType} is not allowed for message type ${messageType}`;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
export {
|
|
18
|
+
validateMessageObjectsForType
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=object-validation.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/modules/messages/lib/object-validation.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n getMessageObjectType,\n isMessageObjectTypeAllowedForMessageType,\n} from './message-objects-registry'\n\ntype MessageObjectLike = {\n entityModule: string\n entityType: string\n entityId: string\n}\n\nexport function validateMessageObjectsForType(\n messageType: string,\n objects: MessageObjectLike[],\n): string | null {\n for (const object of objects) {\n const objectType = getMessageObjectType(object.entityModule, object.entityType)\n if (!objectType) {\n return `Unsupported message object type: ${object.entityModule}:${object.entityType}`\n }\n if (!isMessageObjectTypeAllowedForMessageType(objectType, messageType)) {\n return `Object type ${object.entityModule}:${object.entityType} is not allowed for message type ${messageType}`\n }\n }\n return null\n}\n"],
|
|
5
|
+
"mappings": "AAAA;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAQA,SAAS,8BACd,aACA,SACe;AACf,aAAW,UAAU,SAAS;AAC5B,UAAM,aAAa,qBAAqB,OAAO,cAAc,OAAO,UAAU;AAC9E,QAAI,CAAC,YAAY;AACf,aAAO,oCAAoC,OAAO,YAAY,IAAI,OAAO,UAAU;AAAA,IACrF;AACA,QAAI,CAAC,yCAAyC,YAAY,WAAW,GAAG;AACtE,aAAO,eAAe,OAAO,YAAY,IAAI,OAAO,UAAU,oCAAoC,WAAW;AAAA,IAC/G;AAAA,EACF;AACA,SAAO;AACT;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { serializeOperationMetadata } from "@open-mercato/shared/lib/commands/operationMetadata";
|
|
2
|
+
function attachOperationMetadataHeader(response, logEntry, fallback = {}) {
|
|
3
|
+
if (!logEntry?.undoToken || !logEntry.id || !logEntry.commandId) return;
|
|
4
|
+
const executedAt = logEntry.createdAt instanceof Date ? logEntry.createdAt.toISOString() : typeof logEntry.createdAt === "string" && logEntry.createdAt.trim().length > 0 ? logEntry.createdAt : (/* @__PURE__ */ new Date()).toISOString();
|
|
5
|
+
response.headers.set(
|
|
6
|
+
"x-om-operation",
|
|
7
|
+
serializeOperationMetadata({
|
|
8
|
+
id: logEntry.id,
|
|
9
|
+
undoToken: logEntry.undoToken,
|
|
10
|
+
commandId: logEntry.commandId,
|
|
11
|
+
actionLabel: logEntry.actionLabel ?? null,
|
|
12
|
+
resourceKind: logEntry.resourceKind ?? fallback.resourceKind ?? null,
|
|
13
|
+
resourceId: logEntry.resourceId ?? fallback.resourceId ?? null,
|
|
14
|
+
executedAt
|
|
15
|
+
})
|
|
16
|
+
);
|
|
17
|
+
}
|
|
18
|
+
export {
|
|
19
|
+
attachOperationMetadataHeader
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=operationMetadata.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/modules/messages/lib/operationMetadata.ts"],
|
|
4
|
+
"sourcesContent": ["import { serializeOperationMetadata } from '@open-mercato/shared/lib/commands/operationMetadata'\n\nexport type OperationLogEntryLike = {\n id?: string | null\n undoToken?: string | null\n commandId?: string | null\n actionLabel?: string | null\n resourceKind?: string | null\n resourceId?: string | null\n createdAt?: Date | string | null\n}\n\ntype OperationFallback = {\n resourceKind?: string | null\n resourceId?: string | null\n}\n\nexport function attachOperationMetadataHeader(\n response: Response,\n logEntry: OperationLogEntryLike | null | undefined,\n fallback: OperationFallback = {},\n) {\n if (!logEntry?.undoToken || !logEntry.id || !logEntry.commandId) return\n\n const executedAt = logEntry.createdAt instanceof Date\n ? logEntry.createdAt.toISOString()\n : typeof logEntry.createdAt === 'string' && logEntry.createdAt.trim().length > 0\n ? logEntry.createdAt\n : new Date().toISOString()\n\n response.headers.set(\n 'x-om-operation',\n serializeOperationMetadata({\n id: logEntry.id,\n undoToken: logEntry.undoToken,\n commandId: logEntry.commandId,\n actionLabel: logEntry.actionLabel ?? null,\n resourceKind: logEntry.resourceKind ?? fallback.resourceKind ?? null,\n resourceId: logEntry.resourceId ?? fallback.resourceId ?? null,\n executedAt,\n }),\n )\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,kCAAkC;AAiBpC,SAAS,8BACd,UACA,UACA,WAA8B,CAAC,GAC/B;AACA,MAAI,CAAC,UAAU,aAAa,CAAC,SAAS,MAAM,CAAC,SAAS,UAAW;AAEjE,QAAM,aAAa,SAAS,qBAAqB,OAC7C,SAAS,UAAU,YAAY,IAC/B,OAAO,SAAS,cAAc,YAAY,SAAS,UAAU,KAAK,EAAE,SAAS,IAC3E,SAAS,aACT,oBAAI,KAAK,GAAE,YAAY;AAE7B,WAAS,QAAQ;AAAA,IACf;AAAA,IACA,2BAA2B;AAAA,MACzB,IAAI,SAAS;AAAA,MACb,WAAW,SAAS;AAAA,MACpB,WAAW,SAAS;AAAA,MACpB,aAAa,SAAS,eAAe;AAAA,MACrC,cAAc,SAAS,gBAAgB,SAAS,gBAAgB;AAAA,MAChE,YAAY,SAAS,cAAc,SAAS,cAAc;AAAA,MAC1D;AAAA,IACF,CAAC;AAAA,EACH;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
function getPriorityBadgeVariant(priority) {
|
|
2
|
+
switch (priority) {
|
|
3
|
+
case "low":
|
|
4
|
+
return "muted";
|
|
5
|
+
case "normal":
|
|
6
|
+
return "secondary";
|
|
7
|
+
case "high":
|
|
8
|
+
return "default";
|
|
9
|
+
case "urgent":
|
|
10
|
+
return "destructive";
|
|
11
|
+
default:
|
|
12
|
+
return "secondary";
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function getPriorityBadgeClassName(priority) {
|
|
16
|
+
switch (priority) {
|
|
17
|
+
case "low":
|
|
18
|
+
return "text-slate-600 bg-slate-100 border-slate-200";
|
|
19
|
+
case "normal":
|
|
20
|
+
return "text-blue-600 bg-blue-100 border-blue-200";
|
|
21
|
+
case "high":
|
|
22
|
+
return "text-orange-600 bg-orange-100 border-orange-200";
|
|
23
|
+
case "urgent":
|
|
24
|
+
return "text-red-600 bg-red-100 border-red-200";
|
|
25
|
+
default:
|
|
26
|
+
return "text-blue-600 bg-blue-100 border-blue-200";
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function getPriorityLabelKey(priority) {
|
|
30
|
+
return `messages.priority.${priority}`;
|
|
31
|
+
}
|
|
32
|
+
function getPriorityFallbackLabel(priority) {
|
|
33
|
+
switch (priority) {
|
|
34
|
+
case "low":
|
|
35
|
+
return "Low";
|
|
36
|
+
case "normal":
|
|
37
|
+
return "Normal";
|
|
38
|
+
case "high":
|
|
39
|
+
return "High";
|
|
40
|
+
case "urgent":
|
|
41
|
+
return "Urgent";
|
|
42
|
+
default:
|
|
43
|
+
return "Normal";
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function getPriorityOptions() {
|
|
47
|
+
return [
|
|
48
|
+
{ value: "low", labelKey: getPriorityLabelKey("low"), fallbackLabel: getPriorityFallbackLabel("low") },
|
|
49
|
+
{ value: "normal", labelKey: getPriorityLabelKey("normal"), fallbackLabel: getPriorityFallbackLabel("normal") },
|
|
50
|
+
{ value: "high", labelKey: getPriorityLabelKey("high"), fallbackLabel: getPriorityFallbackLabel("high") },
|
|
51
|
+
{ value: "urgent", labelKey: getPriorityLabelKey("urgent"), fallbackLabel: getPriorityFallbackLabel("urgent") }
|
|
52
|
+
];
|
|
53
|
+
}
|
|
54
|
+
export {
|
|
55
|
+
getPriorityBadgeClassName,
|
|
56
|
+
getPriorityBadgeVariant,
|
|
57
|
+
getPriorityFallbackLabel,
|
|
58
|
+
getPriorityLabelKey,
|
|
59
|
+
getPriorityOptions
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=priorityUtils.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/modules/messages/lib/priorityUtils.ts"],
|
|
4
|
+
"sourcesContent": ["import type { BadgeProps } from '@open-mercato/ui/primitives/badge'\n\nexport type MessagePriority = 'low' | 'normal' | 'high' | 'urgent'\n\n/**\n * Get the Badge variant for a given priority level\n */\nexport function getPriorityBadgeVariant(priority: MessagePriority): BadgeProps['variant'] {\n switch (priority) {\n case 'low':\n return 'muted'\n case 'normal':\n return 'secondary'\n case 'high':\n return 'default'\n case 'urgent':\n return 'destructive'\n default:\n return 'secondary'\n }\n}\n\n/**\n * Get custom CSS classes for priority badge colors\n */\nexport function getPriorityBadgeClassName(priority: MessagePriority): string {\n switch (priority) {\n case 'low':\n return 'text-slate-600 bg-slate-100 border-slate-200'\n case 'normal':\n return 'text-blue-600 bg-blue-100 border-blue-200'\n case 'high':\n return 'text-orange-600 bg-orange-100 border-orange-200'\n case 'urgent':\n return 'text-red-600 bg-red-100 border-red-200'\n default:\n return 'text-blue-600 bg-blue-100 border-blue-200'\n }\n}\n\n/**\n * Get the localized priority label key\n */\nexport function getPriorityLabelKey(priority: MessagePriority): string {\n return `messages.priority.${priority}`\n}\n\n/**\n * Get the default fallback label for a priority\n */\nexport function getPriorityFallbackLabel(priority: MessagePriority): string {\n switch (priority) {\n case 'low':\n return 'Low'\n case 'normal':\n return 'Normal'\n case 'high':\n return 'High'\n case 'urgent':\n return 'Urgent'\n default:\n return 'Normal'\n }\n}\n\n/**\n * Get all available priority options for dropdowns/selects\n */\nexport function getPriorityOptions(): Array<{ value: MessagePriority; labelKey: string; fallbackLabel: string }> {\n return [\n { value: 'low', labelKey: getPriorityLabelKey('low'), fallbackLabel: getPriorityFallbackLabel('low') },\n { value: 'normal', labelKey: getPriorityLabelKey('normal'), fallbackLabel: getPriorityFallbackLabel('normal') },\n { value: 'high', labelKey: getPriorityLabelKey('high'), fallbackLabel: getPriorityFallbackLabel('high') },\n { value: 'urgent', labelKey: getPriorityLabelKey('urgent'), fallbackLabel: getPriorityFallbackLabel('urgent') },\n ]\n}"],
|
|
5
|
+
"mappings": "AAOO,SAAS,wBAAwB,UAAkD;AACxF,UAAQ,UAAU;AAAA,IAChB,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAKO,SAAS,0BAA0B,UAAmC;AAC3E,UAAQ,UAAU;AAAA,IAChB,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAKO,SAAS,oBAAoB,UAAmC;AACrE,SAAO,qBAAqB,QAAQ;AACtC;AAKO,SAAS,yBAAyB,UAAmC;AAC1E,UAAQ,UAAU;AAAA,IAChB,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAKO,SAAS,qBAAiG;AAC/G,SAAO;AAAA,IACL,EAAE,OAAO,OAAO,UAAU,oBAAoB,KAAK,GAAG,eAAe,yBAAyB,KAAK,EAAE;AAAA,IACrG,EAAE,OAAO,UAAU,UAAU,oBAAoB,QAAQ,GAAG,eAAe,yBAAyB,QAAQ,EAAE;AAAA,IAC9G,EAAE,OAAO,QAAQ,UAAU,oBAAoB,MAAM,GAAG,eAAe,yBAAyB,MAAM,EAAE;AAAA,IACxG,EAAE,OAAO,UAAU,UAAU,oBAAoB,QAAQ,GAAG,eAAe,yBAAyB,QAAQ,EAAE;AAAA,EAChH;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { resolveRequestContext } from "@open-mercato/shared/lib/api/context";
|
|
2
|
+
import { hasFeature } from "@open-mercato/shared/security/features";
|
|
3
|
+
function hasOrganizationAccess(scopeOrganizationId, messageOrganizationId) {
|
|
4
|
+
if (scopeOrganizationId) {
|
|
5
|
+
return messageOrganizationId === scopeOrganizationId;
|
|
6
|
+
}
|
|
7
|
+
return messageOrganizationId == null;
|
|
8
|
+
}
|
|
9
|
+
async function resolveMessageContext(req) {
|
|
10
|
+
const { ctx } = await resolveRequestContext(req);
|
|
11
|
+
return {
|
|
12
|
+
ctx,
|
|
13
|
+
scope: {
|
|
14
|
+
tenantId: ctx.auth?.tenantId ?? "",
|
|
15
|
+
organizationId: ctx.auth?.orgId ?? null,
|
|
16
|
+
userId: ctx.auth?.sub ?? ""
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
async function parseRequestBodySafe(req) {
|
|
21
|
+
try {
|
|
22
|
+
const text = await req.text();
|
|
23
|
+
if (!text) return {};
|
|
24
|
+
return JSON.parse(text);
|
|
25
|
+
} catch {
|
|
26
|
+
return {};
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
async function canUseMessageEmailFeature(ctx, scope) {
|
|
30
|
+
if (!scope.userId || !scope.tenantId) return false;
|
|
31
|
+
const rbac = ctx.container.resolve("rbacService");
|
|
32
|
+
const acl = await rbac.loadAcl(scope.userId, {
|
|
33
|
+
tenantId: scope.tenantId,
|
|
34
|
+
organizationId: scope.organizationId
|
|
35
|
+
});
|
|
36
|
+
return Boolean(acl.isSuperAdmin) || hasFeature(acl.features, "messages.email");
|
|
37
|
+
}
|
|
38
|
+
export {
|
|
39
|
+
canUseMessageEmailFeature,
|
|
40
|
+
hasOrganizationAccess,
|
|
41
|
+
parseRequestBodySafe,
|
|
42
|
+
resolveMessageContext
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=routeHelpers.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/modules/messages/lib/routeHelpers.ts"],
|
|
4
|
+
"sourcesContent": ["import { resolveRequestContext } from '@open-mercato/shared/lib/api/context'\nimport { hasFeature } from '@open-mercato/shared/security/features'\n\nexport function hasOrganizationAccess(\n scopeOrganizationId: string | null,\n messageOrganizationId: string | null | undefined,\n): boolean {\n if (scopeOrganizationId) {\n return messageOrganizationId === scopeOrganizationId\n }\n return messageOrganizationId == null\n}\n\nexport type MessageScope = {\n tenantId: string\n organizationId: string | null\n userId: string\n}\n\nexport async function resolveMessageContext(req: Request): Promise<{\n ctx: Awaited<ReturnType<typeof resolveRequestContext>>['ctx']\n scope: MessageScope\n}> {\n const { ctx } = await resolveRequestContext(req)\n return {\n ctx,\n scope: {\n tenantId: ctx.auth?.tenantId ?? '',\n organizationId: ctx.auth?.orgId ?? null,\n userId: ctx.auth?.sub ?? '',\n },\n }\n}\n\ntype RbacService = {\n loadAcl: (\n userId: string,\n scope: { tenantId: string | null; organizationId: string | null }\n ) => Promise<{ features?: string[]; isSuperAdmin?: boolean }>\n}\n\nexport async function parseRequestBodySafe(req: Request): Promise<unknown> {\n try {\n const text = await req.text()\n if (!text) return {}\n return JSON.parse(text)\n } catch {\n return {}\n }\n}\n\nexport async function canUseMessageEmailFeature(\n ctx: Awaited<ReturnType<typeof resolveRequestContext>>['ctx'],\n scope: MessageScope,\n): Promise<boolean> {\n if (!scope.userId || !scope.tenantId) return false\n\n const rbac = ctx.container.resolve('rbacService') as RbacService\n const acl = await rbac.loadAcl(scope.userId, {\n tenantId: scope.tenantId,\n organizationId: scope.organizationId,\n })\n\n return Boolean(acl.isSuperAdmin) || hasFeature(acl.features, 'messages.email')\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,6BAA6B;AACtC,SAAS,kBAAkB;AAEpB,SAAS,sBACd,qBACA,uBACS;AACT,MAAI,qBAAqB;AACvB,WAAO,0BAA0B;AAAA,EACnC;AACA,SAAO,yBAAyB;AAClC;AAQA,eAAsB,sBAAsB,KAGzC;AACD,QAAM,EAAE,IAAI,IAAI,MAAM,sBAAsB,GAAG;AAC/C,SAAO;AAAA,IACL;AAAA,IACA,OAAO;AAAA,MACL,UAAU,IAAI,MAAM,YAAY;AAAA,MAChC,gBAAgB,IAAI,MAAM,SAAS;AAAA,MACnC,QAAQ,IAAI,MAAM,OAAO;AAAA,IAC3B;AAAA,EACF;AACF;AASA,eAAsB,qBAAqB,KAAgC;AACzE,MAAI;AACF,UAAM,OAAO,MAAM,IAAI,KAAK;AAC5B,QAAI,CAAC,KAAM,QAAO,CAAC;AACnB,WAAO,KAAK,MAAM,IAAI;AAAA,EACxB,QAAQ;AACN,WAAO,CAAC;AAAA,EACV;AACF;AAEA,eAAsB,0BACpB,KACA,OACkB;AAClB,MAAI,CAAC,MAAM,UAAU,CAAC,MAAM,SAAU,QAAO;AAE7C,QAAM,OAAO,IAAI,UAAU,QAAQ,aAAa;AAChD,QAAM,MAAM,MAAM,KAAK,QAAQ,MAAM,QAAQ;AAAA,IAC3C,UAAU,MAAM;AAAA,IAChB,gBAAgB,MAAM;AAAA,EACxB,CAAC;AAED,SAAO,QAAQ,IAAI,YAAY,KAAK,WAAW,IAAI,UAAU,gBAAgB;AAC/E;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/modules/messages/message-objects.ts"],
|
|
4
|
+
"sourcesContent": ["import type { MessageObjectTypeDefinition } from '@open-mercato/shared/modules/messages/types'\n\nexport const messageObjectTypes: MessageObjectTypeDefinition[] = []\n\nexport default messageObjectTypes\n"],
|
|
5
|
+
"mappings": "AAEO,MAAM,qBAAoD,CAAC;AAElE,IAAO,0BAAQ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { DefaultMessageActions } from "./components/defaults/DefaultMessageActions.js";
|
|
2
|
+
import { MessageConfirmationActions } from "./components/confirmation/MessageConfirmationActions.js";
|
|
3
|
+
import { MessageConfirmationContent } from "./components/confirmation/MessageConfirmationContent.js";
|
|
4
|
+
import { DefaultMessageContent } from "./components/defaults/DefaultMessageContent.js";
|
|
5
|
+
import { DefaultMessageListItem } from "./components/defaults/DefaultMessageListItem.js";
|
|
6
|
+
const messageTypes = [
|
|
7
|
+
{
|
|
8
|
+
type: "default",
|
|
9
|
+
module: "messages",
|
|
10
|
+
labelKey: "messages.types.default",
|
|
11
|
+
icon: "mail",
|
|
12
|
+
ui: {
|
|
13
|
+
listItemComponent: "messages.default.listItem",
|
|
14
|
+
contentComponent: "messages.default.content",
|
|
15
|
+
actionsComponent: "messages.default.actions"
|
|
16
|
+
},
|
|
17
|
+
ListItemComponent: DefaultMessageListItem,
|
|
18
|
+
ContentComponent: DefaultMessageContent,
|
|
19
|
+
ActionsComponent: DefaultMessageActions,
|
|
20
|
+
allowReply: true,
|
|
21
|
+
allowForward: true
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
type: "messages.confirmation",
|
|
25
|
+
module: "messages",
|
|
26
|
+
labelKey: "messages.types.confirmation",
|
|
27
|
+
icon: "badge-check",
|
|
28
|
+
color: "green",
|
|
29
|
+
ui: {
|
|
30
|
+
listItemComponent: "messages.default.listItem",
|
|
31
|
+
contentComponent: "messages.confirmation.content",
|
|
32
|
+
actionsComponent: "messages.confirmation.actions"
|
|
33
|
+
},
|
|
34
|
+
ListItemComponent: DefaultMessageListItem,
|
|
35
|
+
ContentComponent: MessageConfirmationContent,
|
|
36
|
+
ActionsComponent: MessageConfirmationActions,
|
|
37
|
+
defaultActions: [
|
|
38
|
+
{
|
|
39
|
+
id: "confirmation",
|
|
40
|
+
label: "Confirm",
|
|
41
|
+
labelKey: "messages.actions.confirmation",
|
|
42
|
+
variant: "default",
|
|
43
|
+
icon: "check",
|
|
44
|
+
commandId: "messages.confirmations.confirm",
|
|
45
|
+
isTerminal: true,
|
|
46
|
+
confirmRequired: true
|
|
47
|
+
}
|
|
48
|
+
],
|
|
49
|
+
allowReply: true,
|
|
50
|
+
allowForward: true
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
type: "messages.defaultWithObjects",
|
|
54
|
+
module: "messages",
|
|
55
|
+
labelKey: "messages.types.defaultWithObjects",
|
|
56
|
+
icon: "attachment",
|
|
57
|
+
color: "blue",
|
|
58
|
+
allowReply: true,
|
|
59
|
+
allowForward: true
|
|
60
|
+
}
|
|
61
|
+
];
|
|
62
|
+
var message_types_default = messageTypes;
|
|
63
|
+
export {
|
|
64
|
+
message_types_default as default,
|
|
65
|
+
messageTypes
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=message-types.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/modules/messages/message-types.ts"],
|
|
4
|
+
"sourcesContent": ["import type { MessageTypeDefinition } from '@open-mercato/shared/modules/messages/types'\nimport { DefaultMessageActions } from './components/defaults/DefaultMessageActions'\nimport { MessageConfirmationActions } from './components/confirmation/MessageConfirmationActions'\nimport { MessageConfirmationContent } from './components/confirmation/MessageConfirmationContent'\nimport { DefaultMessageContent } from './components/defaults/DefaultMessageContent'\nimport { DefaultMessageListItem } from './components/defaults/DefaultMessageListItem'\n\nexport const messageTypes: MessageTypeDefinition[] = [\n {\n type: 'default',\n module: 'messages',\n labelKey: 'messages.types.default',\n icon: 'mail',\n ui: {\n listItemComponent: 'messages.default.listItem',\n contentComponent: 'messages.default.content',\n actionsComponent: 'messages.default.actions',\n },\n ListItemComponent: DefaultMessageListItem,\n ContentComponent: DefaultMessageContent,\n ActionsComponent: DefaultMessageActions,\n allowReply: true,\n allowForward: true,\n },\n {\n type: 'messages.confirmation',\n module: 'messages',\n labelKey: 'messages.types.confirmation',\n icon: 'badge-check',\n color: 'green',\n ui: {\n listItemComponent: 'messages.default.listItem',\n contentComponent: 'messages.confirmation.content',\n actionsComponent: 'messages.confirmation.actions',\n },\n ListItemComponent: DefaultMessageListItem,\n ContentComponent: MessageConfirmationContent,\n ActionsComponent: MessageConfirmationActions,\n defaultActions: [\n {\n id: 'confirmation',\n label: 'Confirm',\n labelKey: 'messages.actions.confirmation',\n variant: 'default',\n icon: 'check',\n commandId: 'messages.confirmations.confirm',\n isTerminal: true,\n confirmRequired: true,\n },\n ],\n allowReply: true,\n allowForward: true,\n },\n {\n type: 'messages.defaultWithObjects',\n module: 'messages',\n labelKey: 'messages.types.defaultWithObjects',\n icon: 'attachment',\n color: 'blue',\n allowReply: true,\n allowForward: true,\n },\n]\n\nexport default messageTypes\n"],
|
|
5
|
+
"mappings": "AACA,SAAS,6BAA6B;AACtC,SAAS,kCAAkC;AAC3C,SAAS,kCAAkC;AAC3C,SAAS,6BAA6B;AACtC,SAAS,8BAA8B;AAEhC,MAAM,eAAwC;AAAA,EACnD;AAAA,IACE,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,MAAM;AAAA,IACN,IAAI;AAAA,MACF,mBAAmB;AAAA,MACnB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,IACpB;AAAA,IACA,mBAAmB;AAAA,IACnB,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,IAClB,YAAY;AAAA,IACZ,cAAc;AAAA,EAChB;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,MAAM;AAAA,IACN,OAAO;AAAA,IACP,IAAI;AAAA,MACF,mBAAmB;AAAA,MACnB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,IACpB;AAAA,IACA,mBAAmB;AAAA,IACnB,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,IAClB,gBAAgB;AAAA,MACd;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,UAAU;AAAA,QACV,SAAS;AAAA,QACT,MAAM;AAAA,QACN,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,iBAAiB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,YAAY;AAAA,IACZ,cAAc;AAAA,EAChB;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,MAAM;AAAA,IACN,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,cAAc;AAAA,EAChB;AACF;AAEA,IAAO,wBAAQ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|