@nocobase/app-plugin-mail 0.0.0-stage → 1.0.0-beta.9
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/CHANGELOG.md +273 -0
- package/README.md +55 -2
- package/dist/client/components/index.d.ts +19 -0
- package/dist/client/components/index.d.ts.map +1 -0
- package/dist/client/components/index.js +19 -0
- package/dist/client/components/index.js.map +1 -0
- package/dist/client/components/mail-account-card.d.ts +14 -0
- package/dist/client/components/mail-account-card.d.ts.map +1 -0
- package/dist/client/components/mail-account-card.js +18 -0
- package/dist/client/components/mail-account-card.js.map +1 -0
- package/dist/client/components/mail-account-connector.d.ts +32 -0
- package/dist/client/components/mail-account-connector.d.ts.map +1 -0
- package/dist/client/components/mail-account-connector.js +59 -0
- package/dist/client/components/mail-account-connector.js.map +1 -0
- package/dist/client/components/mail-bulk-send-logs.d.ts +3 -0
- package/dist/client/components/mail-bulk-send-logs.d.ts.map +1 -0
- package/dist/client/components/mail-bulk-send-logs.js +185 -0
- package/dist/client/components/mail-bulk-send-logs.js.map +1 -0
- package/dist/client/components/mail-composer.d.ts +4 -0
- package/dist/client/components/mail-composer.d.ts.map +1 -0
- package/dist/client/components/mail-composer.js +312 -0
- package/dist/client/components/mail-composer.js.map +1 -0
- package/dist/client/components/mail-conversation-view.d.ts +64 -0
- package/dist/client/components/mail-conversation-view.d.ts.map +1 -0
- package/dist/client/components/mail-conversation-view.js +196 -0
- package/dist/client/components/mail-conversation-view.js.map +1 -0
- package/dist/client/components/mail-dev-page-shell.d.ts +10 -0
- package/dist/client/components/mail-dev-page-shell.d.ts.map +1 -0
- package/dist/client/components/mail-dev-page-shell.js +7 -0
- package/dist/client/components/mail-dev-page-shell.js.map +1 -0
- package/dist/client/components/mail-error-description.d.ts +6 -0
- package/dist/client/components/mail-error-description.d.ts.map +1 -0
- package/dist/client/components/mail-error-description.js +10 -0
- package/dist/client/components/mail-error-description.js.map +1 -0
- package/dist/client/components/mail-html-body.d.ts +9 -0
- package/dist/client/components/mail-html-body.d.ts.map +1 -0
- package/dist/client/components/mail-html-body.js +60 -0
- package/dist/client/components/mail-html-body.js.map +1 -0
- package/dist/client/components/mail-image-resizer.d.ts +10 -0
- package/dist/client/components/mail-image-resizer.d.ts.map +1 -0
- package/dist/client/components/mail-image-resizer.js +168 -0
- package/dist/client/components/mail-image-resizer.js.map +1 -0
- package/dist/client/components/mail-label-manager.d.ts +3 -0
- package/dist/client/components/mail-label-manager.d.ts.map +1 -0
- package/dist/client/components/mail-label-manager.js +145 -0
- package/dist/client/components/mail-label-manager.js.map +1 -0
- package/dist/client/components/mail-label-tag.d.ts +15 -0
- package/dist/client/components/mail-label-tag.d.ts.map +1 -0
- package/dist/client/components/mail-label-tag.js +12 -0
- package/dist/client/components/mail-label-tag.js.map +1 -0
- package/dist/client/components/mail-management-form-actions.d.ts +14 -0
- package/dist/client/components/mail-management-form-actions.d.ts.map +1 -0
- package/dist/client/components/mail-management-form-actions.js +8 -0
- package/dist/client/components/mail-management-form-actions.js.map +1 -0
- package/dist/client/components/mail-management-list-item.d.ts +11 -0
- package/dist/client/components/mail-management-list-item.d.ts.map +1 -0
- package/dist/client/components/mail-management-list-item.js +8 -0
- package/dist/client/components/mail-management-list-item.js.map +1 -0
- package/dist/client/components/mail-management-message-detail.d.ts +8 -0
- package/dist/client/components/mail-management-message-detail.d.ts.map +1 -0
- package/dist/client/components/mail-management-message-detail.js +88 -0
- package/dist/client/components/mail-management-message-detail.js.map +1 -0
- package/dist/client/components/mail-message-content.d.ts +9 -0
- package/dist/client/components/mail-message-content.d.ts.map +1 -0
- package/dist/client/components/mail-message-content.js +44 -0
- package/dist/client/components/mail-message-content.js.map +1 -0
- package/dist/client/components/mail-message-list.d.ts +25 -0
- package/dist/client/components/mail-message-list.d.ts.map +1 -0
- package/dist/client/components/mail-message-list.js +77 -0
- package/dist/client/components/mail-message-list.js.map +1 -0
- package/dist/client/components/mail-navigation-icon.d.ts +5 -0
- package/dist/client/components/mail-navigation-icon.d.ts.map +1 -0
- package/dist/client/components/mail-navigation-icon.js +63 -0
- package/dist/client/components/mail-navigation-icon.js.map +1 -0
- package/dist/client/components/mail-page-header.d.ts +9 -0
- package/dist/client/components/mail-page-header.d.ts.map +1 -0
- package/dist/client/components/mail-page-header.js +6 -0
- package/dist/client/components/mail-page-header.js.map +1 -0
- package/dist/client/components/mail-pagination.d.ts +12 -0
- package/dist/client/components/mail-pagination.d.ts.map +1 -0
- package/dist/client/components/mail-pagination.js +62 -0
- package/dist/client/components/mail-pagination.js.map +1 -0
- package/dist/client/components/mail-pending-deliveries.d.ts +6 -0
- package/dist/client/components/mail-pending-deliveries.d.ts.map +1 -0
- package/dist/client/components/mail-pending-deliveries.js +50 -0
- package/dist/client/components/mail-pending-deliveries.js.map +1 -0
- package/dist/client/components/mail-provider-card.d.ts +13 -0
- package/dist/client/components/mail-provider-card.d.ts.map +1 -0
- package/dist/client/components/mail-provider-card.js +11 -0
- package/dist/client/components/mail-provider-card.js.map +1 -0
- package/dist/client/components/mail-rich-text-editor.d.ts +64 -0
- package/dist/client/components/mail-rich-text-editor.d.ts.map +1 -0
- package/dist/client/components/mail-rich-text-editor.js +199 -0
- package/dist/client/components/mail-rich-text-editor.js.map +1 -0
- package/dist/client/components/mail-scheduled-status.d.ts +8 -0
- package/dist/client/components/mail-scheduled-status.d.ts.map +1 -0
- package/dist/client/components/mail-scheduled-status.js +52 -0
- package/dist/client/components/mail-scheduled-status.js.map +1 -0
- package/dist/client/components/mail-signature-manager.d.ts +8 -0
- package/dist/client/components/mail-signature-manager.d.ts.map +1 -0
- package/dist/client/components/mail-signature-manager.js +255 -0
- package/dist/client/components/mail-signature-manager.js.map +1 -0
- package/dist/client/components/mail-status-badge.d.ts +8 -0
- package/dist/client/components/mail-status-badge.d.ts.map +1 -0
- package/dist/client/components/mail-status-badge.js +12 -0
- package/dist/client/components/mail-status-badge.js.map +1 -0
- package/dist/client/components/mail-submission-status.d.ts +6 -0
- package/dist/client/components/mail-submission-status.d.ts.map +1 -0
- package/dist/client/components/mail-submission-status.js +24 -0
- package/dist/client/components/mail-submission-status.js.map +1 -0
- package/dist/client/components/mail-sync-policy-fields.d.ts +14 -0
- package/dist/client/components/mail-sync-policy-fields.d.ts.map +1 -0
- package/dist/client/components/mail-sync-policy-fields.js +27 -0
- package/dist/client/components/mail-sync-policy-fields.js.map +1 -0
- package/dist/client/components/mail-template-manager.d.ts +3 -0
- package/dist/client/components/mail-template-manager.d.ts.map +1 -0
- package/dist/client/components/mail-template-manager.js +135 -0
- package/dist/client/components/mail-template-manager.js.map +1 -0
- package/dist/client/components/mail-text-body.d.ts +5 -0
- package/dist/client/components/mail-text-body.d.ts.map +1 -0
- package/dist/client/components/mail-text-body.js +11 -0
- package/dist/client/components/mail-text-body.js.map +1 -0
- package/dist/client/components/mail-workspace-composer.d.ts +4 -0
- package/dist/client/components/mail-workspace-composer.d.ts.map +1 -0
- package/dist/client/components/mail-workspace-composer.js +74 -0
- package/dist/client/components/mail-workspace-composer.js.map +1 -0
- package/dist/client/components/mailbox-sidebar.d.ts +38 -0
- package/dist/client/components/mailbox-sidebar.d.ts.map +1 -0
- package/dist/client/components/mailbox-sidebar.js +71 -0
- package/dist/client/components/mailbox-sidebar.js.map +1 -0
- package/dist/client/components/page-container.d.ts +4 -0
- package/dist/client/components/page-container.d.ts.map +1 -0
- package/dist/client/components/page-container.js +6 -0
- package/dist/client/components/page-container.js.map +1 -0
- package/dist/client/components/page-header.d.ts +8 -0
- package/dist/client/components/page-header.d.ts.map +1 -0
- package/dist/client/components/page-header.js +5 -0
- package/dist/client/components/page-header.js.map +1 -0
- package/dist/client/components/public.d.ts +19 -0
- package/dist/client/components/public.d.ts.map +1 -0
- package/dist/client/components/public.js +18 -0
- package/dist/client/components/public.js.map +1 -0
- package/dist/client/components/ui/button.d.ts +7 -0
- package/dist/client/components/ui/button.d.ts.map +1 -0
- package/dist/client/components/ui/button.js +19 -0
- package/dist/client/components/ui/button.js.map +1 -0
- package/dist/client/components/ui/calendar.d.ts +9 -0
- package/dist/client/components/ui/calendar.d.ts.map +1 -0
- package/dist/client/components/ui/calendar.js +23 -0
- package/dist/client/components/ui/calendar.js.map +1 -0
- package/dist/client/components/ui/card.d.ts +3 -0
- package/dist/client/components/ui/card.d.ts.map +1 -0
- package/dist/client/components/ui/card.js +6 -0
- package/dist/client/components/ui/card.js.map +1 -0
- package/dist/client/components/ui/checkbox.d.ts +5 -0
- package/dist/client/components/ui/checkbox.d.ts.map +1 -0
- package/dist/client/components/ui/checkbox.js +8 -0
- package/dist/client/components/ui/checkbox.js.map +1 -0
- package/dist/client/components/ui/collapsible.d.ts +6 -0
- package/dist/client/components/ui/collapsible.d.ts.map +1 -0
- package/dist/client/components/ui/collapsible.js +12 -0
- package/dist/client/components/ui/collapsible.js.map +1 -0
- package/dist/client/components/ui/dialog.d.ts +14 -0
- package/dist/client/components/ui/dialog.d.ts.map +1 -0
- package/dist/client/components/ui/dialog.js +36 -0
- package/dist/client/components/ui/dialog.js.map +1 -0
- package/dist/client/components/ui/dropdown-menu.d.ts +8 -0
- package/dist/client/components/ui/dropdown-menu.d.ts.map +1 -0
- package/dist/client/components/ui/dropdown-menu.js +21 -0
- package/dist/client/components/ui/dropdown-menu.js.map +1 -0
- package/dist/client/components/ui/input.d.ts +4 -0
- package/dist/client/components/ui/input.d.ts.map +1 -0
- package/dist/client/components/ui/input.js +7 -0
- package/dist/client/components/ui/input.js.map +1 -0
- package/dist/client/components/ui/native-select.d.ts +4 -0
- package/dist/client/components/ui/native-select.d.ts.map +1 -0
- package/dist/client/components/ui/native-select.js +7 -0
- package/dist/client/components/ui/native-select.js.map +1 -0
- package/dist/client/components/ui/popover.d.ts +10 -0
- package/dist/client/components/ui/popover.d.ts.map +1 -0
- package/dist/client/components/ui/popover.js +23 -0
- package/dist/client/components/ui/popover.js.map +1 -0
- package/dist/client/components/ui/sheet.d.ts +13 -0
- package/dist/client/components/ui/sheet.d.ts.map +1 -0
- package/dist/client/components/ui/sheet.js +28 -0
- package/dist/client/components/ui/sheet.js.map +1 -0
- package/dist/client/components/ui/textarea.d.ts +4 -0
- package/dist/client/components/ui/textarea.d.ts.map +1 -0
- package/dist/client/components/ui/textarea.js +6 -0
- package/dist/client/components/ui/textarea.js.map +1 -0
- package/dist/client/components/ui/tooltip.d.ts +7 -0
- package/dist/client/components/ui/tooltip.d.ts.map +1 -0
- package/dist/client/components/ui/tooltip.js +16 -0
- package/dist/client/components/ui/tooltip.js.map +1 -0
- package/dist/client/contracts/composer.d.ts +68 -0
- package/dist/client/contracts/composer.d.ts.map +1 -0
- package/dist/client/contracts/composer.js +12 -0
- package/dist/client/contracts/composer.js.map +1 -0
- package/dist/client/hooks/use-mail-composer.d.ts +52 -0
- package/dist/client/hooks/use-mail-composer.d.ts.map +1 -0
- package/dist/client/hooks/use-mail-composer.js +633 -0
- package/dist/client/hooks/use-mail-composer.js.map +1 -0
- package/dist/client/hooks/use-mail-invalidations.d.ts +3 -0
- package/dist/client/hooks/use-mail-invalidations.d.ts.map +1 -0
- package/dist/client/hooks/use-mail-invalidations.js +28 -0
- package/dist/client/hooks/use-mail-invalidations.js.map +1 -0
- package/dist/client/hooks/use-mail-log-page.d.ts +17 -0
- package/dist/client/hooks/use-mail-log-page.d.ts.map +1 -0
- package/dist/client/hooks/use-mail-log-page.js +85 -0
- package/dist/client/hooks/use-mail-log-page.js.map +1 -0
- package/dist/client/hooks/use-mail-table-page.d.ts +12 -0
- package/dist/client/hooks/use-mail-table-page.d.ts.map +1 -0
- package/dist/client/hooks/use-mail-table-page.js +22 -0
- package/dist/client/hooks/use-mail-table-page.js.map +1 -0
- package/dist/client/hooks/use-mail-workspace-data.d.ts +35 -0
- package/dist/client/hooks/use-mail-workspace-data.d.ts.map +1 -0
- package/dist/client/hooks/use-mail-workspace-data.js +409 -0
- package/dist/client/hooks/use-mail-workspace-data.js.map +1 -0
- package/dist/client/index.d.ts +14 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +10 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/lib/mail-address.d.ts +5 -0
- package/dist/client/lib/mail-address.d.ts.map +1 -0
- package/dist/client/lib/mail-address.js +14 -0
- package/dist/client/lib/mail-address.js.map +1 -0
- package/dist/client/lib/mail-body-theme.d.ts +3 -0
- package/dist/client/lib/mail-body-theme.d.ts.map +1 -0
- package/dist/client/lib/mail-body-theme.js +69 -0
- package/dist/client/lib/mail-body-theme.js.map +1 -0
- package/dist/client/lib/mail-composer-state.d.ts +36 -0
- package/dist/client/lib/mail-composer-state.d.ts.map +1 -0
- package/dist/client/lib/mail-composer-state.js +212 -0
- package/dist/client/lib/mail-composer-state.js.map +1 -0
- package/dist/client/lib/mail-editor-headings.d.ts +3 -0
- package/dist/client/lib/mail-editor-headings.d.ts.map +1 -0
- package/dist/client/lib/mail-editor-headings.js +27 -0
- package/dist/client/lib/mail-editor-headings.js.map +1 -0
- package/dist/client/lib/mail-editor-images.d.ts +10 -0
- package/dist/client/lib/mail-editor-images.d.ts.map +1 -0
- package/dist/client/lib/mail-editor-images.js +82 -0
- package/dist/client/lib/mail-editor-images.js.map +1 -0
- package/dist/client/lib/mail-editor-labels.d.ts +3 -0
- package/dist/client/lib/mail-editor-labels.d.ts.map +1 -0
- package/dist/client/lib/mail-editor-labels.js +43 -0
- package/dist/client/lib/mail-editor-labels.js.map +1 -0
- package/dist/client/lib/mail-error-description.d.ts +7 -0
- package/dist/client/lib/mail-error-description.d.ts.map +1 -0
- package/dist/client/lib/mail-error-description.js +84 -0
- package/dist/client/lib/mail-error-description.js.map +1 -0
- package/dist/client/lib/mail-folders.d.ts +40 -0
- package/dist/client/lib/mail-folders.d.ts.map +1 -0
- package/dist/client/lib/mail-folders.js +215 -0
- package/dist/client/lib/mail-folders.js.map +1 -0
- package/dist/client/lib/mail-forward-content.d.ts +19 -0
- package/dist/client/lib/mail-forward-content.d.ts.map +1 -0
- package/dist/client/lib/mail-forward-content.js +120 -0
- package/dist/client/lib/mail-forward-content.js.map +1 -0
- package/dist/client/lib/mail-inline-images.d.ts +6 -0
- package/dist/client/lib/mail-inline-images.d.ts.map +1 -0
- package/dist/client/lib/mail-inline-images.js +41 -0
- package/dist/client/lib/mail-inline-images.js.map +1 -0
- package/dist/client/lib/mail-label.d.ts +10 -0
- package/dist/client/lib/mail-label.d.ts.map +1 -0
- package/dist/client/lib/mail-label.js +47 -0
- package/dist/client/lib/mail-label.js.map +1 -0
- package/dist/client/lib/mail-message-document.d.ts +6 -0
- package/dist/client/lib/mail-message-document.d.ts.map +1 -0
- package/dist/client/lib/mail-message-document.js +68 -0
- package/dist/client/lib/mail-message-document.js.map +1 -0
- package/dist/client/lib/mail-pending-delivery.d.ts +22 -0
- package/dist/client/lib/mail-pending-delivery.d.ts.map +1 -0
- package/dist/client/lib/mail-pending-delivery.js +81 -0
- package/dist/client/lib/mail-pending-delivery.js.map +1 -0
- package/dist/client/lib/mail-quoted-content.d.ts +8 -0
- package/dist/client/lib/mail-quoted-content.d.ts.map +1 -0
- package/dist/client/lib/mail-quoted-content.js +62 -0
- package/dist/client/lib/mail-quoted-content.js.map +1 -0
- package/dist/client/lib/mail-reply-content.d.ts +9 -0
- package/dist/client/lib/mail-reply-content.d.ts.map +1 -0
- package/dist/client/lib/mail-reply-content.js +50 -0
- package/dist/client/lib/mail-reply-content.js.map +1 -0
- package/dist/client/lib/mail-signature.d.ts +8 -0
- package/dist/client/lib/mail-signature.d.ts.map +1 -0
- package/dist/client/lib/mail-signature.js +40 -0
- package/dist/client/lib/mail-signature.js.map +1 -0
- package/dist/client/lib/mail-template.d.ts +14 -0
- package/dist/client/lib/mail-template.d.ts.map +1 -0
- package/dist/client/lib/mail-template.js +189 -0
- package/dist/client/lib/mail-template.js.map +1 -0
- package/dist/client/lib/utils.d.ts +2 -0
- package/dist/client/lib/utils.d.ts.map +1 -0
- package/dist/client/lib/utils.js +2 -0
- package/dist/client/lib/utils.js.map +1 -0
- package/dist/client/locales/en-US.d.ts +677 -0
- package/dist/client/locales/en-US.d.ts.map +1 -0
- package/dist/client/locales/en-US.js +675 -0
- package/dist/client/locales/en-US.js.map +1 -0
- package/dist/client/locales/index.d.ts +4 -0
- package/dist/client/locales/index.d.ts.map +1 -0
- package/dist/client/locales/index.js +6 -0
- package/dist/client/locales/index.js.map +1 -0
- package/dist/client/locales/zh-CN.d.ts +4 -0
- package/dist/client/locales/zh-CN.d.ts.map +1 -0
- package/dist/client/locales/zh-CN.js +675 -0
- package/dist/client/locales/zh-CN.js.map +1 -0
- package/dist/client/mail-client.d.ts +112 -0
- package/dist/client/mail-client.d.ts.map +1 -0
- package/dist/client/mail-client.js +412 -0
- package/dist/client/mail-client.js.map +1 -0
- package/dist/client/namespace.d.ts +4 -0
- package/dist/client/namespace.d.ts.map +1 -0
- package/dist/client/namespace.js +3 -0
- package/dist/client/namespace.js.map +1 -0
- package/dist/client/pages/mail-accounts-dev-page.d.ts +2 -0
- package/dist/client/pages/mail-accounts-dev-page.d.ts.map +1 -0
- package/dist/client/pages/mail-accounts-dev-page.js +2 -0
- package/dist/client/pages/mail-accounts-dev-page.js.map +1 -0
- package/dist/client/pages/mail-accounts-page.d.ts +8 -0
- package/dist/client/pages/mail-accounts-page.d.ts.map +1 -0
- package/dist/client/pages/mail-accounts-page.js +463 -0
- package/dist/client/pages/mail-accounts-page.js.map +1 -0
- package/dist/client/pages/mail-dev-hub-page.d.ts +9 -0
- package/dist/client/pages/mail-dev-hub-page.d.ts.map +1 -0
- package/dist/client/pages/mail-dev-hub-page.js +49 -0
- package/dist/client/pages/mail-dev-hub-page.js.map +1 -0
- package/dist/client/pages/mail-dev-page.d.ts +5 -0
- package/dist/client/pages/mail-dev-page.d.ts.map +1 -0
- package/dist/client/pages/mail-dev-page.js +12 -0
- package/dist/client/pages/mail-dev-page.js.map +1 -0
- package/dist/client/pages/mail-management-page.d.ts +3 -0
- package/dist/client/pages/mail-management-page.d.ts.map +1 -0
- package/dist/client/pages/mail-management-page.js +335 -0
- package/dist/client/pages/mail-management-page.js.map +1 -0
- package/dist/client/pages/mail-send-logs-page.d.ts +3 -0
- package/dist/client/pages/mail-send-logs-page.d.ts.map +1 -0
- package/dist/client/pages/mail-send-logs-page.js +79 -0
- package/dist/client/pages/mail-send-logs-page.js.map +1 -0
- package/dist/client/pages/mail-send-page.d.ts +3 -0
- package/dist/client/pages/mail-send-page.d.ts.map +1 -0
- package/dist/client/pages/mail-send-page.js +127 -0
- package/dist/client/pages/mail-send-page.js.map +1 -0
- package/dist/client/pages/mail-settings-page.d.ts +3 -0
- package/dist/client/pages/mail-settings-page.d.ts.map +1 -0
- package/dist/client/pages/mail-settings-page.js +79 -0
- package/dist/client/pages/mail-settings-page.js.map +1 -0
- package/dist/client/pages/mail-sync-logs-page.d.ts +3 -0
- package/dist/client/pages/mail-sync-logs-page.d.ts.map +1 -0
- package/dist/client/pages/mail-sync-logs-page.js +80 -0
- package/dist/client/pages/mail-sync-logs-page.js.map +1 -0
- package/dist/client/pages/mail-workspace-page.d.ts +10 -0
- package/dist/client/pages/mail-workspace-page.d.ts.map +1 -0
- package/dist/client/pages/mail-workspace-page.js +834 -0
- package/dist/client/pages/mail-workspace-page.js.map +1 -0
- package/dist/client/plugin.d.ts +7 -0
- package/dist/client/plugin.d.ts.map +1 -0
- package/dist/client/plugin.js +12 -0
- package/dist/client/plugin.js.map +1 -0
- package/dist/client/routes.d.ts +4 -0
- package/dist/client/routes.d.ts.map +1 -0
- package/dist/client/routes.js +146 -0
- package/dist/client/routes.js.map +1 -0
- package/dist/client/runtime.d.ts +5 -0
- package/dist/client/runtime.d.ts.map +1 -0
- package/dist/client/runtime.js +7 -0
- package/dist/client/runtime.js.map +1 -0
- package/dist/client/service-provider.d.ts +10 -0
- package/dist/client/service-provider.d.ts.map +1 -0
- package/dist/client/service-provider.js +15 -0
- package/dist/client/service-provider.js.map +1 -0
- package/dist/client/subscription.d.ts +8 -0
- package/dist/client/subscription.d.ts.map +1 -0
- package/dist/client/subscription.js +33 -0
- package/dist/client/subscription.js.map +1 -0
- package/dist/database/migrations/.manifest.json +21 -0
- package/dist/database/migrations/202609030001_create_mail_tables.d.ts +4 -0
- package/dist/database/migrations/202609030001_create_mail_tables.d.ts.map +1 -0
- package/dist/database/migrations/202609030001_create_mail_tables.js +536 -0
- package/dist/database/migrations/202609030001_create_mail_tables.js.map +1 -0
- package/dist/database/migrations/202609200001_backfill_mail_conversations.d.ts +4 -0
- package/dist/database/migrations/202609200001_backfill_mail_conversations.d.ts.map +1 -0
- package/dist/database/migrations/202609200001_backfill_mail_conversations.js +42 -0
- package/dist/database/migrations/202609200001_backfill_mail_conversations.js.map +1 -0
- package/dist/database/migrations/202609210001_normalize_mail_folders.d.ts +4 -0
- package/dist/database/migrations/202609210001_normalize_mail_folders.d.ts.map +1 -0
- package/dist/database/migrations/202609210001_normalize_mail_folders.js +42 -0
- package/dist/database/migrations/202609210001_normalize_mail_folders.js.map +1 -0
- package/dist/database/migrations/202609260001_add_mail_sync_retry_attempts.d.ts +4 -0
- package/dist/database/migrations/202609260001_add_mail_sync_retry_attempts.d.ts.map +1 -0
- package/dist/database/migrations/202609260001_add_mail_sync_retry_attempts.js +17 -0
- package/dist/database/migrations/202609260001_add_mail_sync_retry_attempts.js.map +1 -0
- package/dist/server/adapter-resolver.d.ts +14 -0
- package/dist/server/adapter-resolver.d.ts.map +1 -0
- package/dist/server/adapter-resolver.js +21 -0
- package/dist/server/adapter-resolver.js.map +1 -0
- package/dist/server/adapters/gmail/adapter.d.ts +42 -0
- package/dist/server/adapters/gmail/adapter.d.ts.map +1 -0
- package/dist/server/adapters/gmail/adapter.js +800 -0
- package/dist/server/adapters/gmail/adapter.js.map +1 -0
- package/dist/server/adapters/gmail/auth.d.ts +9 -0
- package/dist/server/adapters/gmail/auth.d.ts.map +1 -0
- package/dist/server/adapters/gmail/auth.js +178 -0
- package/dist/server/adapters/gmail/auth.js.map +1 -0
- package/dist/server/adapters/gmail/batch.d.ts +8 -0
- package/dist/server/adapters/gmail/batch.d.ts.map +1 -0
- package/dist/server/adapters/gmail/batch.js +116 -0
- package/dist/server/adapters/gmail/batch.js.map +1 -0
- package/dist/server/adapters/gmail/concurrency.d.ts +2 -0
- package/dist/server/adapters/gmail/concurrency.d.ts.map +1 -0
- package/dist/server/adapters/gmail/concurrency.js +12 -0
- package/dist/server/adapters/gmail/concurrency.js.map +1 -0
- package/dist/server/adapters/gmail/constants.d.ts +7 -0
- package/dist/server/adapters/gmail/constants.d.ts.map +1 -0
- package/dist/server/adapters/gmail/constants.js +19 -0
- package/dist/server/adapters/gmail/constants.js.map +1 -0
- package/dist/server/adapters/gmail/definition.d.ts +4 -0
- package/dist/server/adapters/gmail/definition.d.ts.map +1 -0
- package/dist/server/adapters/gmail/definition.js +58 -0
- package/dist/server/adapters/gmail/definition.js.map +1 -0
- package/dist/server/adapters/gmail/errors.d.ts +12 -0
- package/dist/server/adapters/gmail/errors.d.ts.map +1 -0
- package/dist/server/adapters/gmail/errors.js +58 -0
- package/dist/server/adapters/gmail/errors.js.map +1 -0
- package/dist/server/adapters/gmail/http.d.ts +11 -0
- package/dist/server/adapters/gmail/http.d.ts.map +1 -0
- package/dist/server/adapters/gmail/http.js +152 -0
- package/dist/server/adapters/gmail/http.js.map +1 -0
- package/dist/server/adapters/gmail/index.d.ts +4 -0
- package/dist/server/adapters/gmail/index.d.ts.map +1 -0
- package/dist/server/adapters/gmail/index.js +3 -0
- package/dist/server/adapters/gmail/index.js.map +1 -0
- package/dist/server/adapters/gmail/mime.d.ts +7 -0
- package/dist/server/adapters/gmail/mime.d.ts.map +1 -0
- package/dist/server/adapters/gmail/mime.js +189 -0
- package/dist/server/adapters/gmail/mime.js.map +1 -0
- package/dist/server/adapters/gmail/normalize.d.ts +7 -0
- package/dist/server/adapters/gmail/normalize.d.ts.map +1 -0
- package/dist/server/adapters/gmail/normalize.js +104 -0
- package/dist/server/adapters/gmail/normalize.js.map +1 -0
- package/dist/server/adapters/gmail/quota.d.ts +3 -0
- package/dist/server/adapters/gmail/quota.d.ts.map +1 -0
- package/dist/server/adapters/gmail/quota.js +112 -0
- package/dist/server/adapters/gmail/quota.js.map +1 -0
- package/dist/server/adapters/gmail/sync.d.ts +5 -0
- package/dist/server/adapters/gmail/sync.d.ts.map +1 -0
- package/dist/server/adapters/gmail/sync.js +32 -0
- package/dist/server/adapters/gmail/sync.js.map +1 -0
- package/dist/server/adapters/gmail/types.d.ts +141 -0
- package/dist/server/adapters/gmail/types.d.ts.map +1 -0
- package/dist/server/adapters/gmail/types.js +2 -0
- package/dist/server/adapters/gmail/types.js.map +1 -0
- package/dist/server/adapters/imap-smtp/adapter.d.ts +40 -0
- package/dist/server/adapters/imap-smtp/adapter.d.ts.map +1 -0
- package/dist/server/adapters/imap-smtp/adapter.js +721 -0
- package/dist/server/adapters/imap-smtp/adapter.js.map +1 -0
- package/dist/server/adapters/imap-smtp/config.d.ts +19 -0
- package/dist/server/adapters/imap-smtp/config.d.ts.map +1 -0
- package/dist/server/adapters/imap-smtp/config.js +2 -0
- package/dist/server/adapters/imap-smtp/config.js.map +1 -0
- package/dist/server/adapters/imap-smtp/connection.d.ts +9 -0
- package/dist/server/adapters/imap-smtp/connection.d.ts.map +1 -0
- package/dist/server/adapters/imap-smtp/connection.js +72 -0
- package/dist/server/adapters/imap-smtp/connection.js.map +1 -0
- package/dist/server/adapters/imap-smtp/constants.d.ts +7 -0
- package/dist/server/adapters/imap-smtp/constants.d.ts.map +1 -0
- package/dist/server/adapters/imap-smtp/constants.js +16 -0
- package/dist/server/adapters/imap-smtp/constants.js.map +1 -0
- package/dist/server/adapters/imap-smtp/content.d.ts +11 -0
- package/dist/server/adapters/imap-smtp/content.d.ts.map +1 -0
- package/dist/server/adapters/imap-smtp/content.js +157 -0
- package/dist/server/adapters/imap-smtp/content.js.map +1 -0
- package/dist/server/adapters/imap-smtp/definition.d.ts +4 -0
- package/dist/server/adapters/imap-smtp/definition.d.ts.map +1 -0
- package/dist/server/adapters/imap-smtp/definition.js +59 -0
- package/dist/server/adapters/imap-smtp/definition.js.map +1 -0
- package/dist/server/adapters/imap-smtp/errors.d.ts +10 -0
- package/dist/server/adapters/imap-smtp/errors.d.ts.map +1 -0
- package/dist/server/adapters/imap-smtp/errors.js +95 -0
- package/dist/server/adapters/imap-smtp/errors.js.map +1 -0
- package/dist/server/adapters/imap-smtp/folders.d.ts +7 -0
- package/dist/server/adapters/imap-smtp/folders.d.ts.map +1 -0
- package/dist/server/adapters/imap-smtp/folders.js +39 -0
- package/dist/server/adapters/imap-smtp/folders.js.map +1 -0
- package/dist/server/adapters/imap-smtp/index.d.ts +3 -0
- package/dist/server/adapters/imap-smtp/index.d.ts.map +1 -0
- package/dist/server/adapters/imap-smtp/index.js +2 -0
- package/dist/server/adapters/imap-smtp/index.js.map +1 -0
- package/dist/server/adapters/imap-smtp/locators.d.ts +23 -0
- package/dist/server/adapters/imap-smtp/locators.d.ts.map +1 -0
- package/dist/server/adapters/imap-smtp/locators.js +156 -0
- package/dist/server/adapters/imap-smtp/locators.js.map +1 -0
- package/dist/server/adapters/imap-smtp/normalize.d.ts +27 -0
- package/dist/server/adapters/imap-smtp/normalize.d.ts.map +1 -0
- package/dist/server/adapters/imap-smtp/normalize.js +64 -0
- package/dist/server/adapters/imap-smtp/normalize.js.map +1 -0
- package/dist/server/adapters/imap-smtp/types.d.ts +21 -0
- package/dist/server/adapters/imap-smtp/types.d.ts.map +1 -0
- package/dist/server/adapters/imap-smtp/types.js +2 -0
- package/dist/server/adapters/imap-smtp/types.js.map +1 -0
- package/dist/server/adapters/incomplete-message.d.ts +4 -0
- package/dist/server/adapters/incomplete-message.d.ts.map +1 -0
- package/dist/server/adapters/incomplete-message.js +21 -0
- package/dist/server/adapters/incomplete-message.js.map +1 -0
- package/dist/server/adapters/microsoft/adapter.d.ts +42 -0
- package/dist/server/adapters/microsoft/adapter.d.ts.map +1 -0
- package/dist/server/adapters/microsoft/adapter.js +1063 -0
- package/dist/server/adapters/microsoft/adapter.js.map +1 -0
- package/dist/server/adapters/microsoft/auth.d.ts +10 -0
- package/dist/server/adapters/microsoft/auth.d.ts.map +1 -0
- package/dist/server/adapters/microsoft/auth.js +153 -0
- package/dist/server/adapters/microsoft/auth.js.map +1 -0
- package/dist/server/adapters/microsoft/concurrency.d.ts +2 -0
- package/dist/server/adapters/microsoft/concurrency.d.ts.map +1 -0
- package/dist/server/adapters/microsoft/concurrency.js +15 -0
- package/dist/server/adapters/microsoft/concurrency.js.map +1 -0
- package/dist/server/adapters/microsoft/constants.d.ts +10 -0
- package/dist/server/adapters/microsoft/constants.d.ts.map +1 -0
- package/dist/server/adapters/microsoft/constants.js +46 -0
- package/dist/server/adapters/microsoft/constants.js.map +1 -0
- package/dist/server/adapters/microsoft/content.d.ts +9 -0
- package/dist/server/adapters/microsoft/content.d.ts.map +1 -0
- package/dist/server/adapters/microsoft/content.js +40 -0
- package/dist/server/adapters/microsoft/content.js.map +1 -0
- package/dist/server/adapters/microsoft/definition.d.ts +4 -0
- package/dist/server/adapters/microsoft/definition.d.ts.map +1 -0
- package/dist/server/adapters/microsoft/definition.js +48 -0
- package/dist/server/adapters/microsoft/definition.js.map +1 -0
- package/dist/server/adapters/microsoft/errors.d.ts +12 -0
- package/dist/server/adapters/microsoft/errors.d.ts.map +1 -0
- package/dist/server/adapters/microsoft/errors.js +51 -0
- package/dist/server/adapters/microsoft/errors.js.map +1 -0
- package/dist/server/adapters/microsoft/http.d.ts +13 -0
- package/dist/server/adapters/microsoft/http.d.ts.map +1 -0
- package/dist/server/adapters/microsoft/http.js +115 -0
- package/dist/server/adapters/microsoft/http.js.map +1 -0
- package/dist/server/adapters/microsoft/index.d.ts +4 -0
- package/dist/server/adapters/microsoft/index.d.ts.map +1 -0
- package/dist/server/adapters/microsoft/index.js +3 -0
- package/dist/server/adapters/microsoft/index.js.map +1 -0
- package/dist/server/adapters/microsoft/normalize.d.ts +14 -0
- package/dist/server/adapters/microsoft/normalize.d.ts.map +1 -0
- package/dist/server/adapters/microsoft/normalize.js +110 -0
- package/dist/server/adapters/microsoft/normalize.js.map +1 -0
- package/dist/server/adapters/microsoft/sync.d.ts +12 -0
- package/dist/server/adapters/microsoft/sync.d.ts.map +1 -0
- package/dist/server/adapters/microsoft/sync.js +111 -0
- package/dist/server/adapters/microsoft/sync.js.map +1 -0
- package/dist/server/adapters/microsoft/types.d.ts +128 -0
- package/dist/server/adapters/microsoft/types.d.ts.map +1 -0
- package/dist/server/adapters/microsoft/types.js +2 -0
- package/dist/server/adapters/microsoft/types.js.map +1 -0
- package/dist/server/config.d.ts +56 -0
- package/dist/server/config.d.ts.map +1 -0
- package/dist/server/config.js +251 -0
- package/dist/server/config.js.map +1 -0
- package/dist/server/contracts/persistence.d.ts +220 -0
- package/dist/server/contracts/persistence.d.ts.map +1 -0
- package/dist/server/contracts/persistence.js +2 -0
- package/dist/server/contracts/persistence.js.map +1 -0
- package/dist/server/contracts/provider.d.ts +303 -0
- package/dist/server/contracts/provider.d.ts.map +1 -0
- package/dist/server/contracts/provider.js +4 -0
- package/dist/server/contracts/provider.js.map +1 -0
- package/dist/server/contracts/service.d.ts +82 -0
- package/dist/server/contracts/service.d.ts.map +1 -0
- package/dist/server/contracts/service.js +2 -0
- package/dist/server/contracts/service.js.map +1 -0
- package/dist/server/credentials.d.ts +24 -0
- package/dist/server/credentials.d.ts.map +1 -0
- package/dist/server/credentials.js +263 -0
- package/dist/server/credentials.js.map +1 -0
- package/dist/server/index.d.ts +13 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +7 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/jobs/send-scheduled-mail.d.ts +8 -0
- package/dist/server/jobs/send-scheduled-mail.d.ts.map +1 -0
- package/dist/server/jobs/send-scheduled-mail.js +18 -0
- package/dist/server/jobs/send-scheduled-mail.js.map +1 -0
- package/dist/server/jobs/sync-mailbox.d.ts +11 -0
- package/dist/server/jobs/sync-mailbox.d.ts.map +1 -0
- package/dist/server/jobs/sync-mailbox.js +23 -0
- package/dist/server/jobs/sync-mailbox.js.map +1 -0
- package/dist/server/locales/en-US.d.ts +18 -0
- package/dist/server/locales/en-US.d.ts.map +1 -0
- package/dist/server/locales/en-US.js +16 -0
- package/dist/server/locales/en-US.js.map +1 -0
- package/dist/server/locales/index.d.ts +4 -0
- package/dist/server/locales/index.d.ts.map +1 -0
- package/dist/server/locales/index.js +6 -0
- package/dist/server/locales/index.js.map +1 -0
- package/dist/server/locales/zh-CN.d.ts +4 -0
- package/dist/server/locales/zh-CN.d.ts.map +1 -0
- package/dist/server/locales/zh-CN.js +16 -0
- package/dist/server/locales/zh-CN.js.map +1 -0
- package/dist/server/log-pagination.d.ts +2 -0
- package/dist/server/log-pagination.d.ts.map +1 -0
- package/dist/server/log-pagination.js +8 -0
- package/dist/server/log-pagination.js.map +1 -0
- package/dist/server/logging.d.ts +16 -0
- package/dist/server/logging.d.ts.map +1 -0
- package/dist/server/logging.js +24 -0
- package/dist/server/logging.js.map +1 -0
- package/dist/server/operations/index.d.ts +3 -0
- package/dist/server/operations/index.d.ts.map +1 -0
- package/dist/server/operations/index.js +3 -0
- package/dist/server/operations/index.js.map +1 -0
- package/dist/server/operations/message-mutations.d.ts +16 -0
- package/dist/server/operations/message-mutations.d.ts.map +1 -0
- package/dist/server/operations/message-mutations.js +139 -0
- package/dist/server/operations/message-mutations.js.map +1 -0
- package/dist/server/operations/schedule-sync.d.ts +15 -0
- package/dist/server/operations/schedule-sync.d.ts.map +1 -0
- package/dist/server/operations/schedule-sync.js +44 -0
- package/dist/server/operations/schedule-sync.js.map +1 -0
- package/dist/server/operations/send-mail.d.ts +36 -0
- package/dist/server/operations/send-mail.d.ts.map +1 -0
- package/dist/server/operations/send-mail.js +691 -0
- package/dist/server/operations/send-mail.js.map +1 -0
- package/dist/server/operations/sync-mailbox.d.ts +29 -0
- package/dist/server/operations/sync-mailbox.d.ts.map +1 -0
- package/dist/server/operations/sync-mailbox.js +388 -0
- package/dist/server/operations/sync-mailbox.js.map +1 -0
- package/dist/server/outbound-attachments.d.ts +28 -0
- package/dist/server/outbound-attachments.d.ts.map +1 -0
- package/dist/server/outbound-attachments.js +91 -0
- package/dist/server/outbound-attachments.js.map +1 -0
- package/dist/server/plugin.d.ts +4 -0
- package/dist/server/plugin.d.ts.map +1 -0
- package/dist/server/plugin.js +16 -0
- package/dist/server/plugin.js.map +1 -0
- package/dist/server/providers/index.d.ts +4 -0
- package/dist/server/providers/index.d.ts.map +1 -0
- package/dist/server/providers/index.js +8 -0
- package/dist/server/providers/index.js.map +1 -0
- package/dist/server/providers/mail-builtins.d.ts +7 -0
- package/dist/server/providers/mail-builtins.d.ts.map +1 -0
- package/dist/server/providers/mail-builtins.js +17 -0
- package/dist/server/providers/mail-builtins.js.map +1 -0
- package/dist/server/providers/mail-core.d.ts +23 -0
- package/dist/server/providers/mail-core.d.ts.map +1 -0
- package/dist/server/providers/mail-core.js +150 -0
- package/dist/server/providers/mail-core.js.map +1 -0
- package/dist/server/public-types.d.ts +7 -0
- package/dist/server/public-types.d.ts.map +1 -0
- package/dist/server/public-types.js +2 -0
- package/dist/server/public-types.js.map +1 -0
- package/dist/server/realtime.d.ts +11 -0
- package/dist/server/realtime.d.ts.map +1 -0
- package/dist/server/realtime.js +20 -0
- package/dist/server/realtime.js.map +1 -0
- package/dist/server/registry.d.ts +10 -0
- package/dist/server/registry.d.ts.map +1 -0
- package/dist/server/registry.js +21 -0
- package/dist/server/registry.js.map +1 -0
- package/dist/server/routes/api.d.ts +4 -0
- package/dist/server/routes/api.d.ts.map +1 -0
- package/dist/server/routes/api.js +1025 -0
- package/dist/server/routes/api.js.map +1 -0
- package/dist/server/routes/index.d.ts +5 -0
- package/dist/server/routes/index.d.ts.map +1 -0
- package/dist/server/routes/index.js +10 -0
- package/dist/server/routes/index.js.map +1 -0
- package/dist/server/routes/oauth-callback.d.ts +5 -0
- package/dist/server/routes/oauth-callback.d.ts.map +1 -0
- package/dist/server/routes/oauth-callback.js +41 -0
- package/dist/server/routes/oauth-callback.js.map +1 -0
- package/dist/server/routes/push-webhook.d.ts +5 -0
- package/dist/server/routes/push-webhook.d.ts.map +1 -0
- package/dist/server/routes/push-webhook.js +95 -0
- package/dist/server/routes/push-webhook.js.map +1 -0
- package/dist/server/routes/schemas.d.ts +345 -0
- package/dist/server/routes/schemas.d.ts.map +1 -0
- package/dist/server/routes/schemas.js +649 -0
- package/dist/server/routes/schemas.js.map +1 -0
- package/dist/server/runtime/account-removals.d.ts +8 -0
- package/dist/server/runtime/account-removals.d.ts.map +1 -0
- package/dist/server/runtime/account-removals.js +84 -0
- package/dist/server/runtime/account-removals.js.map +1 -0
- package/dist/server/runtime/background-tasks.d.ts +8 -0
- package/dist/server/runtime/background-tasks.d.ts.map +1 -0
- package/dist/server/runtime/background-tasks.js +18 -0
- package/dist/server/runtime/background-tasks.js.map +1 -0
- package/dist/server/runtime/outbox-relay.d.ts +19 -0
- package/dist/server/runtime/outbox-relay.d.ts.map +1 -0
- package/dist/server/runtime/outbox-relay.js +41 -0
- package/dist/server/runtime/outbox-relay.js.map +1 -0
- package/dist/server/runtime/push-subscriptions.d.ts +15 -0
- package/dist/server/runtime/push-subscriptions.d.ts.map +1 -0
- package/dist/server/runtime/push-subscriptions.js +144 -0
- package/dist/server/runtime/push-subscriptions.js.map +1 -0
- package/dist/server/runtime.d.ts +67 -0
- package/dist/server/runtime.d.ts.map +1 -0
- package/dist/server/runtime.js +296 -0
- package/dist/server/runtime.js.map +1 -0
- package/dist/server/service.d.ts +75 -0
- package/dist/server/service.d.ts.map +1 -0
- package/dist/server/service.js +213 -0
- package/dist/server/service.js.map +1 -0
- package/dist/server/services/access.d.ts +10 -0
- package/dist/server/services/access.d.ts.map +1 -0
- package/dist/server/services/access.js +33 -0
- package/dist/server/services/access.js.map +1 -0
- package/dist/server/services/accounts.d.ts +10 -0
- package/dist/server/services/accounts.d.ts.map +1 -0
- package/dist/server/services/accounts.js +58 -0
- package/dist/server/services/accounts.js.map +1 -0
- package/dist/server/services/attachments.d.ts +12 -0
- package/dist/server/services/attachments.d.ts.map +1 -0
- package/dist/server/services/attachments.js +92 -0
- package/dist/server/services/attachments.js.map +1 -0
- package/dist/server/services/authorization.d.ts +15 -0
- package/dist/server/services/authorization.d.ts.map +1 -0
- package/dist/server/services/authorization.js +221 -0
- package/dist/server/services/authorization.js.map +1 -0
- package/dist/server/services/dependencies.d.ts +30 -0
- package/dist/server/services/dependencies.d.ts.map +1 -0
- package/dist/server/services/dependencies.js +2 -0
- package/dist/server/services/dependencies.js.map +1 -0
- package/dist/server/services/draft-content.d.ts +10 -0
- package/dist/server/services/draft-content.d.ts.map +1 -0
- package/dist/server/services/draft-content.js +81 -0
- package/dist/server/services/draft-content.js.map +1 -0
- package/dist/server/services/drafts.d.ts +12 -0
- package/dist/server/services/drafts.d.ts.map +1 -0
- package/dist/server/services/drafts.js +173 -0
- package/dist/server/services/drafts.js.map +1 -0
- package/dist/server/services/errors.d.ts +76 -0
- package/dist/server/services/errors.d.ts.map +1 -0
- package/dist/server/services/errors.js +131 -0
- package/dist/server/services/errors.js.map +1 -0
- package/dist/server/services/input.d.ts +7 -0
- package/dist/server/services/input.d.ts.map +1 -0
- package/dist/server/services/input.js +37 -0
- package/dist/server/services/input.js.map +1 -0
- package/dist/server/services/management.d.ts +17 -0
- package/dist/server/services/management.d.ts.map +1 -0
- package/dist/server/services/management.js +133 -0
- package/dist/server/services/management.js.map +1 -0
- package/dist/server/services/messages.d.ts +18 -0
- package/dist/server/services/messages.d.ts.map +1 -0
- package/dist/server/services/messages.js +77 -0
- package/dist/server/services/messages.js.map +1 -0
- package/dist/server/services/preferences.d.ts +21 -0
- package/dist/server/services/preferences.d.ts.map +1 -0
- package/dist/server/services/preferences.js +186 -0
- package/dist/server/services/preferences.js.map +1 -0
- package/dist/server/services/provider-lifecycle.d.ts +5 -0
- package/dist/server/services/provider-lifecycle.d.ts.map +1 -0
- package/dist/server/services/provider-lifecycle.js +46 -0
- package/dist/server/services/provider-lifecycle.js.map +1 -0
- package/dist/server/services/providers.d.ts +8 -0
- package/dist/server/services/providers.d.ts.map +1 -0
- package/dist/server/services/providers.js +58 -0
- package/dist/server/services/providers.js.map +1 -0
- package/dist/server/services/submissions.d.ts +14 -0
- package/dist/server/services/submissions.d.ts.map +1 -0
- package/dist/server/services/submissions.js +93 -0
- package/dist/server/services/submissions.js.map +1 -0
- package/dist/server/services/sync.d.ts +15 -0
- package/dist/server/services/sync.d.ts.map +1 -0
- package/dist/server/services/sync.js +74 -0
- package/dist/server/services/sync.js.map +1 -0
- package/dist/server/store/account-guard.d.ts +4 -0
- package/dist/server/store/account-guard.d.ts.map +1 -0
- package/dist/server/store/account-guard.js +13 -0
- package/dist/server/store/account-guard.js.map +1 -0
- package/dist/server/store/account-removals.d.ts +13 -0
- package/dist/server/store/account-removals.d.ts.map +1 -0
- package/dist/server/store/account-removals.js +170 -0
- package/dist/server/store/account-removals.js.map +1 -0
- package/dist/server/store/account-writes.d.ts +6 -0
- package/dist/server/store/account-writes.d.ts.map +1 -0
- package/dist/server/store/account-writes.js +137 -0
- package/dist/server/store/account-writes.js.map +1 -0
- package/dist/server/store/accounts.d.ts +16 -0
- package/dist/server/store/accounts.d.ts.map +1 -0
- package/dist/server/store/accounts.js +142 -0
- package/dist/server/store/accounts.js.map +1 -0
- package/dist/server/store/attachments.d.ts +13 -0
- package/dist/server/store/attachments.d.ts.map +1 -0
- package/dist/server/store/attachments.js +157 -0
- package/dist/server/store/attachments.js.map +1 -0
- package/dist/server/store/authorization.d.ts +10 -0
- package/dist/server/store/authorization.d.ts.map +1 -0
- package/dist/server/store/authorization.js +71 -0
- package/dist/server/store/authorization.js.map +1 -0
- package/dist/server/store/draft-states.d.ts +5 -0
- package/dist/server/store/draft-states.d.ts.map +1 -0
- package/dist/server/store/draft-states.js +96 -0
- package/dist/server/store/draft-states.js.map +1 -0
- package/dist/server/store/mappers.d.ts +22 -0
- package/dist/server/store/mappers.d.ts.map +1 -0
- package/dist/server/store/mappers.js +378 -0
- package/dist/server/store/mappers.js.map +1 -0
- package/dist/server/store/message-cursor.d.ts +8 -0
- package/dist/server/store/message-cursor.d.ts.map +1 -0
- package/dist/server/store/message-cursor.js +26 -0
- package/dist/server/store/message-cursor.js.map +1 -0
- package/dist/server/store/message-queries.d.ts +8 -0
- package/dist/server/store/message-queries.d.ts.map +1 -0
- package/dist/server/store/message-queries.js +116 -0
- package/dist/server/store/message-queries.js.map +1 -0
- package/dist/server/store/message-writes.d.ts +8 -0
- package/dist/server/store/message-writes.d.ts.map +1 -0
- package/dist/server/store/message-writes.js +180 -0
- package/dist/server/store/message-writes.js.map +1 -0
- package/dist/server/store/messages.d.ts +32 -0
- package/dist/server/store/messages.d.ts.map +1 -0
- package/dist/server/store/messages.js +564 -0
- package/dist/server/store/messages.js.map +1 -0
- package/dist/server/store/metadata.d.ts +22 -0
- package/dist/server/store/metadata.d.ts.map +1 -0
- package/dist/server/store/metadata.js +178 -0
- package/dist/server/store/metadata.js.map +1 -0
- package/dist/server/store/outbox.d.ts +11 -0
- package/dist/server/store/outbox.d.ts.map +1 -0
- package/dist/server/store/outbox.js +98 -0
- package/dist/server/store/outbox.js.map +1 -0
- package/dist/server/store/push.d.ts +22 -0
- package/dist/server/store/push.d.ts.map +1 -0
- package/dist/server/store/push.js +302 -0
- package/dist/server/store/push.js.map +1 -0
- package/dist/server/store/rows.d.ts +224 -0
- package/dist/server/store/rows.d.ts.map +1 -0
- package/dist/server/store/rows.js +2 -0
- package/dist/server/store/rows.js.map +1 -0
- package/dist/server/store/scheduled-drafts.d.ts +6 -0
- package/dist/server/store/scheduled-drafts.d.ts.map +1 -0
- package/dist/server/store/scheduled-drafts.js +38 -0
- package/dist/server/store/scheduled-drafts.js.map +1 -0
- package/dist/server/store/serialization.d.ts +6 -0
- package/dist/server/store/serialization.d.ts.map +1 -0
- package/dist/server/store/serialization.js +27 -0
- package/dist/server/store/serialization.js.map +1 -0
- package/dist/server/store/submissions.d.ts +23 -0
- package/dist/server/store/submissions.d.ts.map +1 -0
- package/dist/server/store/submissions.js +498 -0
- package/dist/server/store/submissions.js.map +1 -0
- package/dist/server/store/sync-writes.d.ts +5 -0
- package/dist/server/store/sync-writes.d.ts.map +1 -0
- package/dist/server/store/sync-writes.js +48 -0
- package/dist/server/store/sync-writes.js.map +1 -0
- package/dist/server/store/sync.d.ts +27 -0
- package/dist/server/store/sync.d.ts.map +1 -0
- package/dist/server/store/sync.js +508 -0
- package/dist/server/store/sync.js.map +1 -0
- package/dist/server/store/templates.d.ts +10 -0
- package/dist/server/store/templates.d.ts.map +1 -0
- package/dist/server/store/templates.js +70 -0
- package/dist/server/store/templates.js.map +1 -0
- package/dist/server/store.d.ts +128 -0
- package/dist/server/store.d.ts.map +1 -0
- package/dist/server/store.js +343 -0
- package/dist/server/store.js.map +1 -0
- package/dist/server/tokens.d.ts +13 -0
- package/dist/server/tokens.d.ts.map +1 -0
- package/dist/server/tokens.js +9 -0
- package/dist/server/tokens.js.map +1 -0
- package/dist/server/types.d.ts +6 -0
- package/dist/server/types.d.ts.map +1 -0
- package/dist/server/types.js +6 -0
- package/dist/server/types.js.map +1 -0
- package/dist/server/views.d.ts +6 -0
- package/dist/server/views.d.ts.map +1 -0
- package/dist/server/views.js +65 -0
- package/dist/server/views.js.map +1 -0
- package/dist/shared/inline-images.d.ts +12 -0
- package/dist/shared/inline-images.d.ts.map +1 -0
- package/dist/shared/inline-images.js +15 -0
- package/dist/shared/inline-images.js.map +1 -0
- package/dist/shared/mail-sync-date.d.ts +2 -0
- package/dist/shared/mail-sync-date.d.ts.map +1 -0
- package/dist/shared/mail-sync-date.js +10 -0
- package/dist/shared/mail-sync-date.js.map +1 -0
- package/dist/shared/mail.d.ts +667 -0
- package/dist/shared/mail.d.ts.map +1 -0
- package/dist/shared/mail.js +50 -0
- package/dist/shared/mail.js.map +1 -0
- package/dist/shared/realtime.d.ts +5 -0
- package/dist/shared/realtime.d.ts.map +1 -0
- package/dist/shared/realtime.js +2 -0
- package/dist/shared/realtime.js.map +1 -0
- package/package.json +126 -3
- package/skills/nocobase-app-plugin-mail/SKILL.md +118 -0
- package/skills/nocobase-app-plugin-mail/references/client-integration.md +107 -0
- package/skills/nocobase-app-plugin-mail/references/configuration-and-accounts.md +167 -0
- package/skills/nocobase-app-plugin-mail/references/http-api.md +131 -0
- package/skills/nocobase-app-plugin-mail/references/public-api.md +117 -0
- package/skills/nocobase-app-plugin-mail/references/sending-and-drafts.md +53 -0
- package/skills/nocobase-app-plugin-mail/references/synchronization-and-diagnostics.md +57 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
# @nocobase/app-plugin-mail
|
|
2
|
+
|
|
3
|
+
## 1.0.0-beta.9
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- a6758ec: Point published package repository metadata to nocobase/nocobase while preserving each package's monorepo directory.
|
|
8
|
+
- Updated dependencies [487921c]
|
|
9
|
+
- @nocobase/app-server@2.0.0-beta.2
|
|
10
|
+
- @nocobase/app-plugin-authentication@2.0.0-beta.2
|
|
11
|
+
- @nocobase/app-client@2.0.0-beta.2
|
|
12
|
+
- @nocobase/db@1.0.0-beta.18
|
|
13
|
+
- @nocobase/i18n@1.0.0-beta.5
|
|
14
|
+
- @nocobase/jobs@0.1.0-beta.2
|
|
15
|
+
- @nocobase/service-provider@0.0.2-beta.1
|
|
16
|
+
- @nocobase/app-plugin-authorization@1.0.0-beta.25
|
|
17
|
+
|
|
18
|
+
## 1.0.0-beta.8
|
|
19
|
+
|
|
20
|
+
### Patch Changes
|
|
21
|
+
|
|
22
|
+
- 860ef32: Move Mail and its offline provider example into the open-source NocoBase 3 workspace. Keep their package names, public APIs, database migrations, and version history, and publish future releases through the OSS release pipeline. The Examples template loads both plugins with three offline demo providers. Other templates keep Mail opt-in and do not load the demo.
|
|
23
|
+
- Updated dependencies [bb8484b]
|
|
24
|
+
- @nocobase/app-client@2.0.0-beta.2
|
|
25
|
+
- @nocobase/app-plugin-authentication@2.0.0-beta.2
|
|
26
|
+
- @nocobase/app-server@2.0.0-beta.1
|
|
27
|
+
- @nocobase/db@1.0.0-beta.18
|
|
28
|
+
- @nocobase/i18n@1.0.0-beta.5
|
|
29
|
+
- @nocobase/jobs@0.1.0-beta.2
|
|
30
|
+
- @nocobase/service-provider@0.0.2-beta.1
|
|
31
|
+
- @nocobase/app-plugin-authorization@1.0.0-beta.25
|
|
32
|
+
|
|
33
|
+
## 1.0.0-beta.7
|
|
34
|
+
|
|
35
|
+
### Patch Changes
|
|
36
|
+
|
|
37
|
+
- 391ff55: Republish against the 2.0.0 prerelease line of `@nocobase/app-server`, `@nocobase/app-client`, `@nocobase/app-plugin-authentication` and `@nocobase/app-plugin-ai-employee`. Those packages moved from `1.0.0-beta.N` to `2.0.0-beta.0` so that the breaking HTTP API changes they carry show in the major version, and the ranges these plugins published before, such as `^1.0.0-beta.33`, do not accept a 2.0.0 prerelease. This release changes no code; it publishes ranges such as `^2.0.0-beta.0` so the plugins install alongside the new versions.
|
|
38
|
+
|
|
39
|
+
## 1.0.0-beta.6
|
|
40
|
+
|
|
41
|
+
### Major Changes
|
|
42
|
+
|
|
43
|
+
- a220bf4: Move the commercial plugins' HTTP routes to the HTTP API rules: paths are camelCase segments under each plugin's namespace, standard methods replace `resource:action` actions, every input is validated, success answers `{ data }` or `{ data, meta }`, and every failure answers the standard error body, whose `reason` clients branch on.
|
|
44
|
+
|
|
45
|
+
**Mail: routes follow the HTTP API rules.** Every route stays under `/api/mail`; these paths change:
|
|
46
|
+
|
|
47
|
+
| Before | After |
|
|
48
|
+
| ------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
|
|
49
|
+
| `GET /api/mail/unread-count` | `GET /api/mail/messages/countUnread` |
|
|
50
|
+
| `GET /api/mail/settings/operation-logs` | `GET /api/mail/settings/syncRuns` and `GET /api/mail/settings/submissions`, each paged |
|
|
51
|
+
| `GET /api/mail/sync-runs` | `GET /api/mail/syncRuns` |
|
|
52
|
+
| `GET /api/mail/sync-runs/{syncRunId}` | `GET /api/mail/syncRuns/{syncRunId}` |
|
|
53
|
+
| `POST /api/mail/sync-runs/{syncRunId}/retry` | `POST /api/mail/syncRuns/{syncRunId}/retry` |
|
|
54
|
+
| `POST /api/mail/sync-runs/{syncRunId}/cancel` | `POST /api/mail/syncRuns/{syncRunId}/cancel` |
|
|
55
|
+
| `POST /api/mail/messages/bulk` | `POST /api/mail/messages/sendBulk` |
|
|
56
|
+
| `POST /api/mail/messages/drafts` | `POST /api/mail/messages/saveDraft` |
|
|
57
|
+
| `POST /api/mail/accounts/{accountId}/messages/{messageId}/draft-conflict` | `POST /api/mail/accounts/{accountId}/messages/{messageId}/resolveDraftConflict` |
|
|
58
|
+
| `POST /api/mail/accounts/{accountId}/messages/{messageId}/content/retry` | `POST /api/mail/accounts/{accountId}/messages/{messageId}/retryContent` |
|
|
59
|
+
| `PATCH /api/mail/accounts/{accountId}/messages/{messageId}/labels` | `POST /api/mail/accounts/{accountId}/messages/{messageId}/modifyLabels` |
|
|
60
|
+
| `POST /api/mail/management/messages/actions` | `POST /api/mail/management/messages/batchApply` |
|
|
61
|
+
|
|
62
|
+
`POST /api/mail/authorizations`, `/accounts/connect`, `/templates`, `/labels`, `/attachments` and `/accounts/{accountId}/signatures` answer `201` instead of `200`. `DELETE /api/mail/accounts/{accountId}` answers `202` with the account in its `removing` status, or `202` with no body when the removal already finished. `PATCH` on a template, label or signature changes only the fields it sends; an omitted field keeps its stored value instead of being cleared. The OAuth callback and the push webhook are root routes and unchanged, including the callback's own error body for a missing `state`.
|
|
63
|
+
|
|
64
|
+
Lists page in the standard way. `/syncRuns`, `/submissions`, `/settings/syncRuns`, `/settings/submissions` and `/management/messages` take `page` and `pageSize` and answer `{ data, meta: { page, pageSize, total } }`, replacing `offset`, `limit`, `withTotal` and the `{ items, total }` body; their unpaged variants are removed, and the administrators' operation logs are no longer one unpaged object silently cut at 200 rows. Bounded lists (`/providers`, `/accounts`, an account's identities, signatures and folders, `/templates`, `/labels`, `/settings/accounts`, `/management/accounts` and a managed account's folders) answer `{ data, meta: { total } }`. `/messages` and a conversation's messages take `pageSize` and `pageToken` and answer `meta: { nextPageToken, total }`, replacing `cursor`, `offset`, `limit` and `withTotal`. Search is `q` instead of `query`. `pageSize` defaults to 20 and is capped at 100. Every JSON body is validated by a strict schema, so an unknown field, including the previously ignored `automaticSyncIntervalMinutes`, sync `batchSize` and sync `maxMessages` (which no longer capped an import), is `400 INVALID_INPUT`. `initialSyncReceivedAfter`, `receivedAfter` and `scheduledAt` must be RFC 3339 date-times.
|
|
65
|
+
|
|
66
|
+
Errors use the standard body `{ error: { code, status, reason, domain: 'mail', message, localizedMessage, requestId } }` in place of `{ error: { code, ns, key, params, message } }`; the translated text moves to `localizedMessage`. `MAIL_ACCESS_DENIED` (`403`), `MAIL_IDEMPOTENCY_CONFLICT` (`409`), `MAIL_MESSAGE_NOT_FOUND` and `MAIL_SYNC_RUN_NOT_FOUND` (`404`) and `INVALID_MAIL_REQUEST` (`400`, or `415` for an upload that is not multipart) keep their reasons. A JSON body over 8 MiB or an attachment upload over 27 MiB is `413` with reason `BODY_TOO_LARGE` instead of `INVALID_MAIL_REQUEST`. The catch-all `422 MAIL_REQUEST_FAILED` is gone: a missing account, identity, signature, label, template, submission, draft, attachment or folder is `404` when the path names it and `400` with a field violation when the body does (`MAIL_ACCOUNT_NOT_FOUND` and the like); a state that forbids the operation is `400 FAILED_PRECONDITION` (`MAIL_ACCOUNT_INACTIVE`, `MAIL_ACCOUNT_REMOVING`, `MAIL_ACCOUNT_REAUTHORIZATION_REQUIRED`, `MAIL_SYNC_RUN_STATE_INVALID`, `MAIL_SUBMISSION_STATE_INVALID` and others); a taken label name or an account connected to another user is `409 ALREADY_EXISTS`; an outdated draft revision is `409 ABORTED MAIL_DRAFT_REVISION_OUTDATED`; a Provider failure is `MAIL_PROVIDER_REQUEST_FAILED`, `429` when rate-limited and `503` when unreachable, with the public Provider error in `metadata`; a missing account behind `/management/accounts/{accountId}/folders` is `404 MAIL_ACCOUNT_NOT_FOUND`; input Mail rejects below the schema, such as an unreadable `pageToken`, is `400 INVALID_MAIL_REQUEST` with a field violation; anything unexpected, a `TypeError` included, is an opaque `500`.
|
|
67
|
+
|
|
68
|
+
`MailService` gains `updateSignature` and `updateTemplate`, `updateLabel` takes `MailUpdateLabelInput`, `removeAccount` resolves the removing account, `listManagedOperationLogs` is replaced by `listManagedSyncRunsPage` and `listManagedSubmissionsPage`, and `MailStartSyncInput` drops `maxMessages`. `MailClient` follows: `listManagedOperationLogs` and `MailManagedOperationLogsView` are replaced by `listManagedSyncRunsPage` and `listManagedSubmissionsPage`, `removeAccount` resolves the removing account, `listSyncRunsPage` and `listSubmissionsPage` take an options object, `listManagedMessages` takes `{ page, pageSize, q, ... }`, `listMessages` and `listConversationMessages` take `pageSize`, `pageToken` and `q`, and `listSyncRuns` and `listSubmissions` are removed. `mailErrorMessage` shows the server's `localizedMessage` for display, and the workspace recognizes a missing message by its `reason`. The Mail example's pages use the new paging.
|
|
69
|
+
|
|
70
|
+
**AI Knowledge Base: routes follow the HTTP API rules.** Knowledge bases are served under `/api/aiKnowledgeBases`, addressed by their public key, and every other resource of the plugin under `/api/aiKnowledgeBase`; the `/api/ai/...:action` routes are removed:
|
|
71
|
+
|
|
72
|
+
| Before | After |
|
|
73
|
+
| ------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
74
|
+
| `GET /api/ai/aiKnowledgeBase:list` | `GET /api/aiKnowledgeBases` (`page`, `pageSize` up to 100, `q`, `vectorDatabaseKey`) |
|
|
75
|
+
| list filtered by `filter[key]` | `GET /api/aiKnowledgeBases/{key}` |
|
|
76
|
+
| `POST /api/ai/aiKnowledgeBase:create` | `POST /api/aiKnowledgeBases` (`201`) |
|
|
77
|
+
| `POST /api/ai/aiKnowledgeBase:update?filterByTk={id}` | `PATCH /api/aiKnowledgeBases/{key}` |
|
|
78
|
+
| `POST /api/ai/aiKnowledgeBase:destroy?filterByTk={id}` | `DELETE /api/aiKnowledgeBases/{key}` (`204`) |
|
|
79
|
+
| `POST /api/ai/aiKnowledgeBase:runHitTest` | `POST /api/aiKnowledgeBases/{key}/search` |
|
|
80
|
+
| `GET /api/ai/aiKnowledgeBase:checkVectorStoreChanged?key=` | `GET /api/aiKnowledgeBases/{key}/vectorStoreStatus` |
|
|
81
|
+
| `POST /api/ai/aiKnowledgeBase:confirmVectorStoreChanged?key=` | `POST /api/aiKnowledgeBases/{key}/confirmVectorStoreChange` |
|
|
82
|
+
| `GET /api/ai/aiKnowledgeBase:listStorageDisks` | `GET /api/aiKnowledgeBase/storageDisks` |
|
|
83
|
+
| `GET /api/ai/aiKnowledgeBase:listExternalVectorStoreProviders` | `GET /api/aiKnowledgeBase/vectorStoreProviders` |
|
|
84
|
+
| `GET /api/ai/aiKnowledgeBaseDocs:list?filter[knowledgeBaseKey]=` | `GET /api/aiKnowledgeBase/documents?knowledgeBaseKey=` (`q` searches titles) |
|
|
85
|
+
| `GET /api/ai/aiKnowledgeBaseDocs:get?filterByTk=` | `GET /api/aiKnowledgeBase/documents/{documentId}` |
|
|
86
|
+
| `GET /api/ai/aiKnowledgeBaseDocs:download?filterByTk=` | `GET /api/aiKnowledgeBase/documents/{documentId}/download` |
|
|
87
|
+
| `POST /api/ai/aiKnowledgeBaseDocs:upload?knowledgeBaseKey=` | `POST /api/aiKnowledgeBase/documents` (`201`; `knowledgeBaseKey` is a form field, the query parameter is no longer read) |
|
|
88
|
+
| `GET /api/ai/aiKnowledgeBaseDocs:getUploadStorage?knowledgeBaseKey=` | `GET /api/aiKnowledgeBases/{key}/uploadConstraints` |
|
|
89
|
+
| `POST /api/ai/aiKnowledgeBaseDocs:vectorization?knowledgeBaseKey=&id=` | `POST /api/aiKnowledgeBases/{key}/vectorizeDocuments` with `{ documentIds? }` (`202`); re-vectorizing every document of the App is no longer possible in one request |
|
|
90
|
+
| `POST /api/ai/aiKnowledgeBaseDocs:destroy?filterByTk=` | `DELETE /api/aiKnowledgeBase/documents/{documentId}` (`204`), or `POST /api/aiKnowledgeBase/documents/batchDelete` with `{ documentIds }` (`204`) |
|
|
91
|
+
| `GET /api/ai/aiKnowledgeBaseDocSegments:list?knowledgeBaseDocsId=` | `GET /api/aiKnowledgeBase/documents/{documentId}/segments` (`q`, `enabled`) |
|
|
92
|
+
| `GET /api/ai/aiKnowledgeBaseDocSegments:getSegment` | `GET /api/aiKnowledgeBase/documents/{documentId}/segments/{segmentUid}` |
|
|
93
|
+
| `POST /api/ai/aiKnowledgeBaseDocSegments:updateSegment`, `:updateQuestions`, `:setEnabled` | `PATCH /api/aiKnowledgeBase/documents/{documentId}/segments/{segmentUid}` |
|
|
94
|
+
| `POST /api/ai/aiKnowledgeBaseDocSegments:deleteSegment` | `DELETE /api/aiKnowledgeBase/documents/{documentId}/segments/{segmentUid}` (`204`) |
|
|
95
|
+
| `POST /api/ai/aiKnowledgeBaseDocSegments:regenerate` | `POST /api/aiKnowledgeBase/documents/{documentId}/regenerateSegments` (`202`) |
|
|
96
|
+
| `GET /api/ai/aiVectorDatabases:list`, `:listEnabled` | `GET /api/aiKnowledgeBase/vectorDatabases` (`enabled=true` for the enabled ones) |
|
|
97
|
+
| `GET /api/ai/aiVectorDatabases:get?filterByTk=` | `GET /api/aiKnowledgeBase/vectorDatabases/{id}` |
|
|
98
|
+
| `POST /api/ai/aiVectorDatabases:create` | `POST /api/aiKnowledgeBase/vectorDatabases` (`201`) |
|
|
99
|
+
| `POST /api/ai/aiVectorDatabases:update?filterByTk=` | `PATCH /api/aiKnowledgeBase/vectorDatabases/{id}` |
|
|
100
|
+
| `POST /api/ai/aiVectorDatabases:destroy?filterByTk=` | `DELETE /api/aiKnowledgeBase/vectorDatabases/{id}` (`204`) |
|
|
101
|
+
| `POST /api/ai/aiVectorDatabases:testConnection?filterByTk=` | `POST /api/aiKnowledgeBase/vectorDatabases/{id}/testConnection` |
|
|
102
|
+
| `POST /api/ai/aiVectorDatabases:testConnection` | `POST /api/aiKnowledgeBase/vectorDatabases/testConnection` |
|
|
103
|
+
| `GET /api/ai/aiVectorDatabases:findRelatedKnowledgeBase?vectorDatabaseKey=` | `GET /api/aiKnowledgeBases?vectorDatabaseKey=` |
|
|
104
|
+
| `GET /api/ai/aiVectorDatabases:listProviders` | `GET /api/aiKnowledgeBase/vectorDatabaseProviders` |
|
|
105
|
+
|
|
106
|
+
A success is `{ data }` and a list `{ data, meta: { page, pageSize, total } }` instead of `{ data: { data, meta: { count, page, pageSize } } }`; `paginate=false` is gone and `pageSize` is capped at 100. The editor catalogs (`storageDisks`, `vectorStoreProviders`, `vectorDatabaseProviders`) answer `{ data, meta: { total } }`. Every id in a response (knowledge base, document, segment, vector database, and a segment's document and shard ids) is a string and `enabled` a boolean on every database, where SQLite and MySQL answered numbers and `0`/`1` before; ids are accepted only as strings, including a segment question's `id`. Deletes answer `204` with no body instead of `{ success: true }`. JSON bodies are validated and strict, so an unknown field, such as `managedBy` or a counter, is `400 INVALID_INPUT`, and a knowledge base's `key` can no longer be changed by an update. Errors use the standard body `{ error: { code, status, reason, domain: 'aiKnowledgeBases', message, requestId } }` in place of `{ code, message, errors }`: no AI settings access is `403 AI_SETTINGS_ACCESS_REQUIRED` (was `FORBIDDEN`); a missing knowledge base, document, segment or vector database named in the path is `404` (`KNOWLEDGE_BASE_NOT_FOUND`, `DOCUMENT_NOT_FOUND`, `SEGMENT_NOT_FOUND`, `VECTOR_DATABASE_NOT_FOUND`) where some answered `200 null` or `500` before, and one named in the body is `400` with a field violation; `LOCAL_KNOWLEDGE_BASE_REQUIRED` is `400 FAILED_PRECONDITION`; a stale segment hash is `409 ABORTED SEGMENT_CONTENT_CHANGED`; a config-managed vector database is `400 FAILED_PRECONDITION VECTOR_DATABASE_CONFIG_MANAGED` and one still in use `400 VECTOR_DATABASE_IN_USE` (both were `409`); an existing vector table is `409 ALREADY_EXISTS TABLE_ALREADY_EXISTS`; a duplicate knowledge base key is `409 KNOWLEDGE_BASE_ALREADY_EXISTS`; missing vector settings, a disallowed disk and invalid connection properties are `400` (`VECTOR_CONFIG_REQUIRED`, `STORAGE_DISK_NOT_ALLOWED`, `INVALID_CONNECT_PROPS`) instead of `500`; upload errors keep their codes as reasons, with `413 UPLOAD_TOO_LARGE` for a file over 100 MiB, `415 UNSUPPORTED_UPLOAD_CONTENT_TYPE` for a request that is not multipart, `400 UNSUPPORTED_FILE_TYPE` for an extension that is not accepted (was `415`) and `503 UNAVAILABLE STORAGE_UNAVAILABLE`; an upload request over 101 MiB or a JSON body over 1 MiB is rejected with `413 BODY_TOO_LARGE` before it is read; a missing document named in `batchDelete` is `400 DOCUMENT_NOT_FOUND` with a field violation even when the body names only one. An unexpected failure is an opaque `500` that no longer carries the underlying message.
|
|
107
|
+
|
|
108
|
+
The client service now speaks these routes through `createKnowledgeBaseApiTransport(api)`, which replaces `createKnowledgeBaseActionClient`; `KnowledgeBaseApiTransport` and `KnowledgeBaseRequestOptions` replace `KnowledgeBaseActionClient` and `KnowledgeBaseActionOptions`. `updateKnowledgeBase` and `deleteKnowledgeBase` take the knowledge base's key instead of its id. `normalizePagedResult` reads only `{ data, meta }` and no longer accepts a bare array, `rows`/`count` or a nested `data`; `normalizeKnowledgeBaseError` reads `status` and `reason` from `ApiClientError` and no longer parses the payload; `conflict` is set only for `SEGMENT_CONTENT_CHANGED`. The embedding services and models the editor offers come from the AI Employee plugin's `GET /api/aiEmployee/models?type=EMBEDDING`. The Registry items carry the same changes and require plugin version `>=1.0.0-beta.0 <2.0.0`; the `providers` item no longer calls the removed S3 presign and ZIP encoding actions, and no longer offers `.zip` uploads, which the server rejects.
|
|
109
|
+
|
|
110
|
+
**Pro example: `GET /api/pro-example` is now `GET /api/proExample`** and answers `{ data: { scope, plugin, message } }`; an anonymous request gets the standard `401` error body.
|
|
111
|
+
|
|
112
|
+
- 7b77c1a: Define a deliberate Mail integration surface, publish the composer components and HTTP contract, and make Provider capabilities extensible.
|
|
113
|
+
|
|
114
|
+
### Minor Changes
|
|
115
|
+
|
|
116
|
+
- b6d3ac4: Run mailbox synchronization and scheduled sending on the application's jobs service instead of `@nocobase/queue`. Mail submits its tasks to its own executor on the `@nocobase/app-plugin-mail` scope, starts consuming when the application starts, and lets running tasks finish before it shuts down. The application must compose `JobExecutorServiceProvider` from `@nocobase/app-server/jobs` and a `jobs` configuration, as the default template does; without it, Mail refuses to start and says what to add. `mail.jobs`, or its override `MAIL_JOBS`, names the `jobs` configuration the tasks run on, so Mail can have its own `concurrency` or backend; left out, they follow `jobs.default`, and a name that `jobs` does not define stops the application from starting. `@nocobase/jobs` replaces `@nocobase/queue` as a peer dependency. Deployments with more than one instance need a `redis` jobs configuration. Tasks still waiting in a queue connection are not moved: synchronization runs are recovered by maintenance, but let a `redis` or `database` queue connection drain scheduled messages before upgrading.
|
|
117
|
+
- ff22cac: Answer mail Provider failures with the status they mean instead of an opaque `500`. A route that waits for the Provider now answers `429 RESOURCE_EXHAUSTED` when Gmail, Microsoft Graph or an IMAP/SMTP server throttles it or a quota ran out, with `Retry-After` and `metadata.retryAfter` in seconds when the Provider gives a delay; `503 UNAVAILABLE` when the Provider cannot be reached, times out or fails on its side; and `400 FAILED_PRECONDITION` with reason `MAIL_ACCOUNT_REAUTHORIZATION_REQUIRED` when the account's authorization was revoked or has expired. Connecting an account with credentials the Provider refuses answers `400 INVALID_ARGUMENT` with the new reason `MAIL_ACCOUNT_CREDENTIALS_INVALID` and a field violation on `password`, and any other Provider refusal while connecting or starting an OAuth authorization answers `400 FAILED_PRECONDITION` `MAIL_PROVIDER_REQUEST_FAILED`; all of these were `500` before. A Provider that cannot download attachments answers `400 FAILED_PRECONDITION` `MAIL_PROVIDER_OPERATION_UNSUPPORTED`. Clients that branched on `MAIL_PROVIDER_REQUEST_FAILED` for a revoked authorization on message actions now receive `MAIL_ACCOUNT_REAUTHORIZATION_REQUIRED` instead.
|
|
118
|
+
|
|
119
|
+
Provider failures are classified more precisely, which background synchronization and sending also see: an OAuth token request that is throttled or fails with a 5xx is retried rather than marking the account for reauthorization, a non-JSON error page from a token endpoint is no longer reported as invalid content, Microsoft Graph's `Retry-After` is read as an HTTP date too, and IMAP `[THROTTLED]`, `[UNAVAILABLE]`, `[EXPIRED]` and `[AUTHORIZATIONFAILED]`, imapflow's throttling and socket timeouts, and SMTP replies that report a sending rate limit get their own categories.
|
|
120
|
+
|
|
121
|
+
The OpenAPI document now lists `429` and `503` only on the routes that wait for the Provider — connecting an account, updating, moving or deleting a message, retrying message content and downloading a Provider attachment — and no longer on sending, bulk sending, saving drafts, resolving draft conflicts or starting an OAuth authorization, which never answered them.
|
|
122
|
+
|
|
123
|
+
### Patch Changes
|
|
124
|
+
|
|
125
|
+
- 7b77c1a: Add Gmail, Microsoft 365, and IMAP/SMTP mock accounts with account management, editable templates and signatures, labels, all mail, sync logs, a complete Mail workspace, and simulated delivery. Reuse Mail's account management page and its management panels in the example.
|
|
126
|
+
- ff22cac: Declare every `/api` route in the application's OpenAPI document, served as Swagger UI at `/api/swagger/docs` and as JSON at `/api/swagger` for a signed-in user or an API key. Mail's routes are tagged `Mail` with operationIds such as `mailSendMessage`, the knowledge base's are tagged `AiKnowledgeBase` with operationIds starting with `aiKnowledgeBases`, and the pro example's route is `proExampleGetGreeting`. Each route documents its parameters, request body, response schema and the error statuses it can return — `403` only where it checks a permission, and `400` from its input validators plus any other `400` it answers, such as a failed precondition — including the multipart attachment and document uploads (`413`, `415`) and the binary downloads. Inputs are now validated with `apiValidator`, which answers invalid input exactly as before. The knowledge base plugin moves from zod 3 to zod 4 (the workspace catalog version), because the document generator cannot read zod 3 schemas; its input `fieldViolations` now carry zod 4's wording, while their codes and reasons are unchanged. Requires the `@nocobase/app-server` release that adds the OpenAPI document. The pro example's README describes how its route is declared, which statuses it lists and how its test checks the declaration. The mail example's `AGENTS.md` describes the same declaration pattern.
|
|
127
|
+
- 7b77c1a: Skip empty IMAP UID ranges during incremental sync so mailboxes with sparse UIDs complete without repeatedly scheduling empty pages.
|
|
128
|
+
- 7b77c1a: Open Mail logs on the Sync logs tab by default.
|
|
129
|
+
- 7b77c1a: Use Shadcn components for the Mail client's interactive controls.
|
|
130
|
+
|
|
131
|
+
## 0.1.0-beta.5
|
|
132
|
+
|
|
133
|
+
### Patch Changes
|
|
134
|
+
|
|
135
|
+
- 7f1312d: Add virtual standard folders that aggregate matching folders across mail accounts while preserving direct access to each account's actual folders. Show mailbox accounts as collapsible folder trees, localize provider system folders, and order folders by mail function before custom names. Export Mail environment mappings for applications to wire through the current configuration API.
|
|
136
|
+
- 7f1312d: Harden IMAP mailbox selection and UID validation, reconcile remotely deleted messages during synchronization, and preserve local messages when provider searches fail.
|
|
137
|
+
- 7f1312d: Localize the initial mail sync date picker in Chinese and keep the connected accounts table scrollable on narrow screens.
|
|
138
|
+
|
|
139
|
+
## 0.1.0-beta.4
|
|
140
|
+
|
|
141
|
+
### Patch Changes
|
|
142
|
+
|
|
143
|
+
- 7b54d97: Show actionable, localized mail provider error details for Gmail quota, authorization, and timeout failures without exposing raw provider messages.
|
|
144
|
+
- 7b54d97: Bound first-time mailbox imports to a recent date, batch Gmail message reads, and pace quota usage with retry backoff.
|
|
145
|
+
- 7b54d97: Use an aligned calendar popover for selecting the initial mail sync date.
|
|
146
|
+
|
|
147
|
+
## 0.1.0-beta.3
|
|
148
|
+
|
|
149
|
+
### Minor Changes
|
|
150
|
+
|
|
151
|
+
- 47f218d: Declare the Mail environment variables on `mailConfig`
|
|
152
|
+
|
|
153
|
+
`mailConfig` now declares `MAIL_OAUTH_CALLBACK_URL`, `MAIL_OAUTH_RETURN_URL`, `MAIL_AUTOMATIC_SYNC_INTERVAL_MS`, `MAIL_SYNC_BATCH_SIZE`, `MAIL_PUSH_WEBHOOK_URL` and `MAIL_PUSH_WEBHOOK_SECRET` itself, the way the current OSS template declares every section's variables, and `pnpm nocobase config env` lists them. Registering `mailConfig` in `server/config/index.ts` is all an application does to make them take effect; applications created from the current template have no `server/environment.ts` to edit.
|
|
154
|
+
|
|
155
|
+
The README and Skill now say so, and tell agents to register the plugin with `pnpm nocobase plugin register mail`, since the `plugin:register` script alias no longer exists in generated applications.
|
|
156
|
+
|
|
157
|
+
## 0.1.0-beta.2
|
|
158
|
+
|
|
159
|
+
### Minor Changes
|
|
160
|
+
|
|
161
|
+
- c857ecb: Add a configurable OAuth return URL for production Mail account connection pages and preserve authorization status query parameters after callback completion.
|
|
162
|
+
|
|
163
|
+
### Patch Changes
|
|
164
|
+
|
|
165
|
+
- c857ecb: Make Mail startup resilient when the application has not registered its `mail` configuration namespace, validate configuration errors with actionable paths, and document the required application configuration wiring.
|
|
166
|
+
- c857ecb: Clarify production OAuth callback and return-page configuration for Mail integrations.
|
|
167
|
+
|
|
168
|
+
## 0.1.0-beta.1
|
|
169
|
+
|
|
170
|
+
### Patch Changes
|
|
171
|
+
|
|
172
|
+
- d646023: Remove duplicated package documentation from the published Mail plugin package and keep user-facing documentation in the main NocoBase documentation site.
|
|
173
|
+
- d646023: Use Microsoft Graph well-known folder identifiers when normalizing provider folders, preserve additional folders that share a standard type, and keep IMAP special-use Drafts folders consistent with normalized message draft state.
|
|
174
|
+
- d646023: Show account-specific mail folders inline with standard folders, add account markers in the all-accounts view, and keep folder selection in the current account scope.
|
|
175
|
+
- d646023: Remove the unreliable unread count badge from the mail folder sidebar while keeping message unread state and filtering unchanged.
|
|
176
|
+
- 339e583: Update Mail configuration guidance for applications generated from the OSS default template following retirement of the Pro template.
|
|
177
|
+
- 73e0030: Use date-scoped IMAP UID searches for initial mailbox history so sparse UID spaces do not require scanning empty ranges before the configured received-after boundary.
|
|
178
|
+
|
|
179
|
+
## 0.1.0-beta.0
|
|
180
|
+
|
|
181
|
+
### Minor Changes
|
|
182
|
+
|
|
183
|
+
- 5f89965: Add the Mail plugin with built-in Gmail, Microsoft 365, and IMAP/SMTP adapters, automatic provider registration, and extension contracts for third-party providers. Register Mail in the Pro default application template with server configuration and environment mappings.
|
|
184
|
+
|
|
185
|
+
Provide account connection and lifecycle management, sending identities, reusable templates with current-record variables, rich-text signatures, inbound and outbound attachments, automatic draft saving and recovery, replies, forwards, scheduled delivery, and separate per-recipient bulk sending. Use a shared composer in the Mail center and development send page, preserve each account's message, attachments, and signature when switching senders, and preserve editing during background autosaves. Preserve forwarded content, formatting, and attachments without duplicating the original body. Confirm account deactivation and template or signature deletion, and explain template placeholder requirements.
|
|
186
|
+
|
|
187
|
+
Add automatic and manual mailbox synchronization, push webhooks with subscription renewal, synchronization retry and cancellation, and a global unread indicator. Configure automatic synchronization through server configuration. Preserve IMAP folder pagination and mailbox selection, handle missing UIDNEXT metadata, retain Gmail recovery checkpoints, load Microsoft inline attachments, and prevent implicit permanent IMAP deletion. Refresh mailboxes after accepted sends and support configurable IMAP sent-copy archiving without retrying confirmed deliveries. Consolidate the unreleased schema into one initial migration, including synchronization recovery state, incomplete message metadata, and synchronization deletion records.
|
|
188
|
+
|
|
189
|
+
Preserve request identity after lost send responses, distinguish temporary and permanent SMTP failures from unknown delivery outcomes, and report partially accepted deliveries with accepted and rejected recipients without retrying accepted recipients. Keep attachment preparation failures classified as unsent. Add persistent delivery histories with recipient details, expandable batch totals, safe retry and pending-delivery cancellation, and pagination that keeps complete batches together.
|
|
190
|
+
|
|
191
|
+
Improve the responsive Mail center and conversation reading layout with isolated, script-disabled HTML rendering that preserves email styles and authenticated inline images. Resize message bodies as content loads, mark opened messages as read, preserve conversation expansion choices, keep single messages expanded, and show labels, notes, to-do controls, and localized action tooltips. Improve rich-text heading and font-size controls, paragraph spacing, form spacing, management selection, and signature ordering. Exclude drafts from non-draft lists before pagination and hide draft read-state controls.
|
|
192
|
+
|
|
193
|
+
Unify account, management, and log table pagination with server-side totals, numbered pages, direct page entry, and page-size selection while retaining the Mail center's cursor pagination. Show account owner names and provide permission-protected management detail drawers and attachment downloads. Remove the unsafe cross-account move control, provider message ID column, standalone Mail application route, and administration operation-log page. Keep the development Mail center, account management, and consolidated send, bulk, and synchronization logs available, with redirects from the previous send tabs.
|
|
194
|
+
|
|
195
|
+
Keep folder membership and signatures in dedicated sources of truth, enforce account and identity ownership, cascade account-owned records, and clean up temporary OAuth credentials and published outbox records. Preserve local draft attachment contents, scope the client to its application container, expose supported server integration and background-runtime contracts, and retain translation metadata in HTTP errors. Store provider credentials as plain JSON in the core credential store; encryption is left to a separate plugin. Expand persistence, ownership, provider, API, and UI regression coverage, enforce coverage thresholds, and update integration documentation and plugin guidance.
|
|
196
|
+
|
|
197
|
+
Hide suspended accounts and their messages from the Mail center and unread count while preserving management access to synchronized mail. Explain this behavior in the deactivation confirmation.
|
|
198
|
+
|
|
199
|
+
Fix Microsoft Graph attachment metadata queries by qualifying the fileAttachment contentId property, allowing draft and forwarded messages to send without HTTP 400 errors while preserving inline image metadata.
|
|
200
|
+
|
|
201
|
+
Import all date-scoped mail history in resumable batches, interleave new-mail synchronization, recover abandoned queue tasks, and rescan expired cursors without skipping mail. Preserve incomplete message metadata, expose independent content retries, and display recovery and partial-content progress.
|
|
202
|
+
|
|
203
|
+
Preserve mail error details in application logs, route cleanup and realtime failures through the shared logger, and record sending, synchronization, and retry outcomes with correlation fields without changing delivery behavior when logging fails.
|
|
204
|
+
|
|
205
|
+
Show accepted messages with provider IDs in the known Sent folder immediately, reconcile them with later mailbox synchronization, and prevent stale provider drafts from reverting accepted messages. Hide synchronized duplicates of editable local drafts before pagination and preserve confirmed delivery when local cleanup fails.
|
|
206
|
+
|
|
207
|
+
Reorganize the Mail application Skill into focused configuration, client integration, sending, and synchronization references. Clarify production OAuth return handling, provider capabilities, delivery retry boundaries, and resumable synchronization without a total history cap.
|
|
208
|
+
|
|
209
|
+
Unify personal and management message mutations, including local draft deletion; refresh mailbox data on realtime changes while preserving reading and composing state; drain background synchronization work on shutdown. Separate shared contracts, scheduling, delivery, and composer state responsibilities while preserving existing public exports.
|
|
210
|
+
|
|
211
|
+
Recover failed initial mailbox loads on realtime changes and mark newly displayed replies in an open conversation as read after refreshing.
|
|
212
|
+
|
|
213
|
+
Fix PostgreSQL folder and label queries, index creation, and address searches with persisted text projections. Preserve editable Gmail drafts and attachments across changing provider message IDs. Honor Reply-To, keep explicit unread state and mailbox pagination during refreshes, bound automatic read writes, coalesce badge refreshes, preserve notifications across service boot order, and prefilter IMAP history by receipt date before downloading bodies.
|
|
214
|
+
|
|
215
|
+
Store absent mail received and sent timestamps as SQL NULL so PostgreSQL accepts messages with missing date metadata and clears dates consistently on updates.
|
|
216
|
+
|
|
217
|
+
Save drafts silently after two seconds of inactivity using local editing, inline save status and browser recovery, without interrupting typing, closing, attachments or sending. Retain a manual Save draft action that closes the composer only after the latest content is persisted. Preserve editing on failure, reload the latest draft before reopening and validate save acknowledgements against stale revisions. Transfer submitted content and attachments to durable outgoing snapshots, remove drafts after accepted, failed, unknown or partially accepted delivery, retry failed snapshots independently, and prevent late saves or synchronization from resurrecting closed drafts.
|
|
218
|
+
|
|
219
|
+
Keep scheduled messages in Drafts with their send time and status until delivery, and require successful cancellation before editing or rescheduling. Preserve recipients and attachments, prevent cancelled jobs from sending, and protect in-progress and uncertain deliveries against duplicate sends. Show a dedicated detail banner and compact list badges, place cancellation beside the scheduled time, and expose full date and timezone details on hover.
|
|
220
|
+
|
|
221
|
+
Allow sending without a subject after composer confirmation, including scheduled and separate delivery, and allow templates without a subject. Accept HTML-only and image-only bodies for single and bulk sends while retaining subject and body type and size validation and requiring a non-empty body. Preserve the authored message body when sending or saving so sanitized or edited signatures are not duplicated. Newly created and imported signatures are not automatically defaults; allow clearing a default, including the only signature, by clicking its Default badge.
|
|
222
|
+
|
|
223
|
+
Support rich-text image uploads with authenticated previews, CID references, and proportional resizing through a drag handle or arrow keys. Preserve image dimensions and inline delivery data through drafts and sends. Hide inline images from attachment lists, counts and indicators while retaining their body previews; keep regular image and document attachments visible. Allow deleting selected editor images and drop attachment references when the final body reference is removed. Clear retained inline font sizes when changing heading levels, track the caret in the heading selector, and align heading spacing in the editor and message details.
|
|
224
|
+
|
|
225
|
+
Include original content and inline images in replies, preserve quotes through draft saves, and prevent duplicate original bodies in Microsoft replies. Allow removing and restoring quoted content while preserving authored text and attachments, without the provider reinserting removed reply content. Collapse recognized HTML and plain-text history when reading, with accessible expansion controls. Adapt HTML bodies to light and dark application themes while restoring sender formatting on returning to light mode.
|
|
226
|
+
|
|
227
|
+
Show sender and recipient names with address fallbacks, avoid duplicate sender addresses, and show recipients in message details. Place header actions beneath timestamps in narrow detail panes. Add global reply and forward buttons below conversation details, targeting the latest non-draft message regardless of collapsed state or loading older pages. Exclude drafts from conversation content and counts before pagination while keeping them in Drafts.
|
|
228
|
+
|
|
229
|
+
Align mail page containers and headers with the application template layout. Remove the duplicate mail center header and conflicting height constraints, place search in the mailbox toolbar, and keep log navigation below its page header. Show the current message range and total on one line immediately before compact previous and next arrow buttons, with the whole pagination group aligned right. Clarify English and Chinese copy for account connections, synchronization, signatures, label deletion and provider acceptance, including automatic synchronization after connection and initial progress in Sync logs. Throttle focus refreshes to once every 30 seconds and avoid reloading composer identities and folders when account metadata is unchanged.
|
|
230
|
+
|
|
231
|
+
Bound background IMAP body reads to 2 MiB per message and on-demand content reads to 16 MiB. Stream attachments independently without downloading entire messages, preserve synchronization pagination and checkpoints, enforce protocol response allocation limits, and avoid encoded attachment sizes in download Content-Length headers.
|
|
232
|
+
|
|
233
|
+
Remove accounts asynchronously in bounded database batches with durable work, restart recovery, retryable cleanup failures and visible removal status. Fence late synchronization and sending results so removed accounts cannot be repopulated. Return HTTP 202 for removal while preserving provider messages. Index active synchronization recovery and align removal folder batches with the existing index to reduce scans and sorting.
|
|
234
|
+
|
|
235
|
+
Use one initial migration for the complete unreleased Mail schema, including address search, account cleanup, synchronization recovery, scheduled drafts and draft states. Development databases that ran the former migration sequence require a fresh database for this baseline.
|
|
236
|
+
|
|
237
|
+
Remove icons from the Mail development submenu while retaining its parent navigation icon.
|
|
238
|
+
|
|
239
|
+
### Patch Changes
|
|
240
|
+
|
|
241
|
+
- 5f89965: Clarify mailbox provider configuration, stable instance names, OAuth callbacks and secret handling, and optional client-side sent-mail archiving in the template example and Mail configuration guide.
|
|
242
|
+
- 5f89965: Normalize core mail folders across IMAP, Gmail, and Microsoft providers, and group SMTP sent messages with IMAP replies using RFC reply headers when provider conversation IDs are unavailable, including existing stored messages.
|
|
243
|
+
- 5f89965: Keep automatic mailbox synchronization running when maintenance tasks fail, and isolate account scheduling errors so other accounts can continue syncing.
|
|
244
|
+
|
|
245
|
+
## 0.0.1
|
|
246
|
+
|
|
247
|
+
### Patch Changes
|
|
248
|
+
|
|
249
|
+
- Add authenticated mail sending with persisted idempotency and explicit
|
|
250
|
+
indeterminate submission results.
|
|
251
|
+
- Add resumable, bounded mailbox synchronization through a transactional
|
|
252
|
+
Outbox, Queue Job adapter, and initial-sync catch-up watermark.
|
|
253
|
+
- Add the Mail database schema, runtime service wiring, and Provider contracts.
|
|
254
|
+
- Add one-time PKCE OAuth orchestration and a replaceable database credential
|
|
255
|
+
store for concrete Provider plugins.
|
|
256
|
+
- Add `/dev/mail/center` for mailbox-style inspection, `/dev/mail/management`
|
|
257
|
+
for the complete synchronized message table, and `/dev/mail/send` for test
|
|
258
|
+
sending.
|
|
259
|
+
- Add a development Mail workspace with account and folder navigation, indexed
|
|
260
|
+
folder filtering, and Provider-native conversation detail.
|
|
261
|
+
- Recover interrupted pending sends, terminal OAuth failures, and expired sync
|
|
262
|
+
cursors; paginate folder discovery and renew long-running sync leases.
|
|
263
|
+
- Add Server error translations, local shadcn UI primitives, and an App-facing
|
|
264
|
+
Mail Plugin Skill.
|
|
265
|
+
- Add a permission-protected Mail account management page under Settings with
|
|
266
|
+
explicit account-type selection and OAuth association.
|
|
267
|
+
- Keep account management in Mail settings and expose synchronization and send logs from the Mail development pages.
|
|
268
|
+
- Add a Settings send-log page backed by authenticated submission history.
|
|
269
|
+
- Show all users' connected mailboxes in Mail Settings while preserving
|
|
270
|
+
account-owner synchronization boundaries.
|
|
271
|
+
- Remove account association controls from the all-user Mail account page.
|
|
272
|
+
- Move initial-sync limits and mailbox synchronization actions from Settings
|
|
273
|
+
to the development Mail accounts page.
|
package/README.md
CHANGED
|
@@ -1,3 +1,56 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @nocobase/app-plugin-mail
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
`@nocobase/app-plugin-mail` provides the NocoBase 3 user-mailbox runtime. It manages mailboxes connected by users, including authorization, synchronization, reading, composing, sending, drafts, attachments, and delivery history.
|
|
4
|
+
|
|
5
|
+
The plugin is separate from notification delivery. Use the notification provider plugins for system notifications; use Mail when an application needs to read a user's mailbox or send through an account connected by that user.
|
|
6
|
+
|
|
7
|
+
## Built-in providers
|
|
8
|
+
|
|
9
|
+
Gmail, Microsoft 365, and generic IMAP/SMTP providers are registered automatically. Register `mail` in the application, register its application configuration, and configure stable provider instances under `mail.providers`.
|
|
10
|
+
|
|
11
|
+
`pnpm nocobase plugin register mail` adds the dependency, Client/Server composition entries, and the Mail Skill. It does not edit the application-owned configuration composition. Add the configuration explicitly:
|
|
12
|
+
|
|
13
|
+
```ts
|
|
14
|
+
// server/config/mail.ts
|
|
15
|
+
import { mailConfig } from '@nocobase/app-plugin-mail/server';
|
|
16
|
+
|
|
17
|
+
export default mailConfig;
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
```ts
|
|
21
|
+
// server/config/index.ts
|
|
22
|
+
import mail from './mail.js';
|
|
23
|
+
|
|
24
|
+
// Add `mail: ReturnType<typeof mail>;` to the default config type and `mail,` to defaultAppConfigs({ ... }).
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
The plugin can start with built-in defaults when this namespace is absent, but no external Mail provider is available until the application configures one. Keep provider credentials in private server configuration. If the application uses Mail environment overrides, merge the exported `mailEnvironmentMappings` into the application's environment mappings in `server/environment.ts`. The package metadata lists the supported variables, but applications must explicitly map them for the overrides to take effect.
|
|
28
|
+
|
|
29
|
+
For Gmail, `mail.providers.<name>.quota` can override per-user and per-project quota pacing using the allocation shown in Google Cloud; otherwise the plugin uses conservative defaults with headroom. Account creation requires an initial-sync date, and the account screen defaults it to one calendar month ago. Direct initial-sync requests must also provide a date boundary. See the Mail Skill references for configuration and quota details.
|
|
30
|
+
|
|
31
|
+
## Supported integration surface
|
|
32
|
+
|
|
33
|
+
Import the server plugin and service contracts from `@nocobase/app-plugin-mail/server`, the client plugin and `MailWorkspacePage` from `@nocobase/app-plugin-mail/client`, and reusable UI from `@nocobase/app-plugin-mail/client/components`. The package root is a Server alias; new application code should use the explicit `/server` path. `MailClient` and `mailClientToken` are the supported Client data access layer; `mailServiceToken` is the supported in-process Server facade. Do not import implementation files, persistence contracts, internal service tokens, or route contribution modules. See the [public API inventory](skills/nocobase-app-plugin-mail/references/public-api.md) for the exported names and responsibility of each entry.
|
|
34
|
+
|
|
35
|
+
The supported reusable UI exports `MailAccountCard`, `MailAccountConnector`, `MailConversationView`, `MailMessageList`, `MailProviderCard`, `MailRichTextEditor`, `MailNavigationIcon`, `MailLabelManager`, `MailLabelTag`, `MailLabelColorDot`, `MailSignatureManager`, `MailStatusBadge`, `MailSyncPolicyFields`, `MailTemplateManager`, `MailboxSidebar`, `MailComposer`, and `MailWorkspaceComposer`, together with their exported props and state types. `MailComposer` renders one supplied compose request; `MailWorkspaceComposer` additionally coordinates sendable identities across accounts. Register the Mail Client plugin before rendering components that use `useMailClient()`.
|
|
36
|
+
|
|
37
|
+
Other Server plugins may register custom providers through `mailProviderRegistryToken` and `MailProviderDefinition`. `createMailProviderRegistry()` creates a standalone registry for tests or isolated integrations; applications should extend the registry supplied by Mail Core. Provider capability records may contain capabilities unknown to this Mail version; Mail does not use unknown keys to enable built-in operations, and treats missing known capabilities as unsupported. Client UIs should tolerate unknown capability keys. A custom `MailCredentialVault` may be registered through `mailCredentialVaultToken` before Mail Core initializes when an application needs its own credential storage.
|
|
38
|
+
|
|
39
|
+
`MailClient` is the preferred integration with Mail's HTTP API. The [HTTP API reference](skills/nocobase-app-plugin-mail/references/http-api.md) lists the `/api/mail` paths, request and response shapes, error codes, permission resources, realtime event, OAuth callback, and Provider webhook contracts. OAuth callbacks and Provider webhooks are protocol endpoints rather than general application APIs. A running application also serves the `/api/mail` routes in its OpenAPI document, at `/api/swagger/docs` (Swagger UI) and `/api/swagger` (JSON), for a signed-in user or an API key.
|
|
40
|
+
|
|
41
|
+
Within a major version, existing public exports, required props, request fields, response meanings, error codes, permissions, and event semantics remain compatible. Additive fields and capabilities must be optional or safely ignored by older consumers. Removing or changing a public contract requires a new major version and a migration note.
|
|
42
|
+
|
|
43
|
+
## Agent integration
|
|
44
|
+
|
|
45
|
+
The package ships `skills/nocobase-app-plugin-mail/` for application agents. Keep this Skill and its references synchronized with the installed package version; it contains the integration contract, safety gates, provider boundaries, and validation workflow.
|
|
46
|
+
|
|
47
|
+
## Verification
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
pnpm --filter @nocobase/app-plugin-mail lint
|
|
51
|
+
pnpm --filter @nocobase/app-plugin-mail typecheck
|
|
52
|
+
pnpm --filter @nocobase/app-plugin-mail test
|
|
53
|
+
pnpm --filter @nocobase/app-plugin-mail build
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
User-facing and application-integration documentation is maintained in the NocoBase documentation site rather than duplicated in this package README.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export * from './mail-account-card.js';
|
|
2
|
+
export * from './mail-account-connector.js';
|
|
3
|
+
export * from './mail-conversation-view.js';
|
|
4
|
+
export * from './mail-dev-page-shell.js';
|
|
5
|
+
export * from './mail-message-list.js';
|
|
6
|
+
export * from './mail-page-header.js';
|
|
7
|
+
export * from './mail-provider-card.js';
|
|
8
|
+
export * from './mail-rich-text-editor.js';
|
|
9
|
+
export * from './mail-navigation-icon.js';
|
|
10
|
+
export * from './mail-label-manager.js';
|
|
11
|
+
export * from './mail-label-tag.js';
|
|
12
|
+
export * from './mail-signature-manager.js';
|
|
13
|
+
export * from './mail-status-badge.js';
|
|
14
|
+
export * from './mail-sync-policy-fields.js';
|
|
15
|
+
export * from './mail-template-manager.js';
|
|
16
|
+
export * from './mailbox-sidebar.js';
|
|
17
|
+
export * from './page-container.js';
|
|
18
|
+
export * from './page-header.js';
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../client/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export * from './mail-account-card.js';
|
|
2
|
+
export * from './mail-account-connector.js';
|
|
3
|
+
export * from './mail-conversation-view.js';
|
|
4
|
+
export * from './mail-dev-page-shell.js';
|
|
5
|
+
export * from './mail-message-list.js';
|
|
6
|
+
export * from './mail-page-header.js';
|
|
7
|
+
export * from './mail-provider-card.js';
|
|
8
|
+
export * from './mail-rich-text-editor.js';
|
|
9
|
+
export * from './mail-navigation-icon.js';
|
|
10
|
+
export * from './mail-label-manager.js';
|
|
11
|
+
export * from './mail-label-tag.js';
|
|
12
|
+
export * from './mail-signature-manager.js';
|
|
13
|
+
export * from './mail-status-badge.js';
|
|
14
|
+
export * from './mail-sync-policy-fields.js';
|
|
15
|
+
export * from './mail-template-manager.js';
|
|
16
|
+
export * from './mailbox-sidebar.js';
|
|
17
|
+
export * from './page-container.js';
|
|
18
|
+
export * from './page-header.js';
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../client/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ReactElement } from 'react';
|
|
2
|
+
import type { MailAccountView } from '../mail-client.js';
|
|
3
|
+
export interface MailAccountCardProps {
|
|
4
|
+
readonly account: MailAccountView;
|
|
5
|
+
readonly canSync?: boolean;
|
|
6
|
+
readonly providerLabel: string;
|
|
7
|
+
readonly syncLabel?: string;
|
|
8
|
+
readonly statusLabel: string;
|
|
9
|
+
readonly ownerLabel?: string;
|
|
10
|
+
readonly syncing?: boolean;
|
|
11
|
+
readonly onSync?: (account: MailAccountView) => void;
|
|
12
|
+
}
|
|
13
|
+
export declare function MailAccountCard({ account, canSync, providerLabel, syncLabel, statusLabel, ownerLabel, syncing, onSync, }: MailAccountCardProps): ReactElement;
|
|
14
|
+
//# sourceMappingURL=mail-account-card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mail-account-card.d.ts","sourceRoot":"","sources":["../../../client/components/mail-account-card.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAKzD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;CACtD;AAED,wBAAgB,eAAe,CAAC,EAC9B,OAAO,EACP,OAAc,EACd,aAAa,EACb,SAAS,EACT,WAAW,EACX,UAAU,EACV,OAAe,EACf,MAAM,GACP,EAAE,oBAAoB,GAAG,YAAY,CAoCrC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { RefreshCw } from 'lucide-react';
|
|
3
|
+
import { MailStatusBadge } from './mail-status-badge.js';
|
|
4
|
+
import { Button } from './ui/button.js';
|
|
5
|
+
import { Card } from './ui/card.js';
|
|
6
|
+
export function MailAccountCard({ account, canSync = true, providerLabel, syncLabel, statusLabel, ownerLabel, syncing = false, onSync, }) {
|
|
7
|
+
return (_jsx(Card, { className: 'p-5 shadow-sm', children: _jsxs("div", { className: 'flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between', children: [_jsxs("div", { className: 'min-w-0', children: [_jsxs("div", { className: 'flex flex-wrap items-center gap-2', children: [_jsx("h3", { className: 'truncate font-semibold', children: account.address }), _jsx(MailStatusBadge, { label: statusLabel, tone: accountStatusTone(account.status) })] }), _jsxs("p", { className: 'mt-1 text-sm text-muted-foreground', children: [account.displayName ? `${account.displayName} · ` : '', providerLabel] }), ownerLabel ? (_jsx("p", { className: 'mt-1 text-xs text-muted-foreground', children: ownerLabel })) : null] }), canSync && onSync && syncLabel ? (_jsxs(Button, { disabled: syncing || account.status !== 'active', onClick: () => onSync(account), type: 'button', children: [_jsx(RefreshCw, { "aria-hidden": 'true', className: `size-4 ${syncing ? 'animate-spin' : ''}` }), syncLabel] })) : null] }) }));
|
|
8
|
+
}
|
|
9
|
+
function accountStatusTone(status) {
|
|
10
|
+
if (status === 'active')
|
|
11
|
+
return 'success';
|
|
12
|
+
if (status === 'connecting')
|
|
13
|
+
return 'info';
|
|
14
|
+
if (status === 'reauthorizationRequired')
|
|
15
|
+
return 'warning';
|
|
16
|
+
return 'danger';
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=mail-account-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mail-account-card.js","sourceRoot":"","sources":["../../../client/components/mail-account-card.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIzC,OAAO,EAAE,eAAe,EAAuB,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAapC,MAAM,UAAU,eAAe,CAAC,EAC9B,OAAO,EACP,OAAO,GAAG,IAAI,EACd,aAAa,EACb,SAAS,EACT,WAAW,EACX,UAAU,EACV,OAAO,GAAG,KAAK,EACf,MAAM,GACe;IACrB,OAAO,CACL,KAAC,IAAI,IAAC,SAAS,EAAC,eAAe,YAC7B,eAAK,SAAS,EAAC,oEAAoE,aACjF,eAAK,SAAS,EAAC,SAAS,aACtB,eAAK,SAAS,EAAC,mCAAmC,aAChD,aAAI,SAAS,EAAC,wBAAwB,YAAE,OAAO,CAAC,OAAO,GAAM,EAC7D,KAAC,eAAe,IACd,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,GACvC,IACE,EACN,aAAG,SAAS,EAAC,oCAAoC,aAC9C,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,EAAE,EACtD,aAAa,IACZ,EACH,UAAU,CAAC,CAAC,CAAC,CACZ,YAAG,SAAS,EAAC,oCAAoC,YAAE,UAAU,GAAK,CACnE,CAAC,CAAC,CAAC,IAAI,IACJ,EACL,OAAO,IAAI,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,CAChC,MAAC,MAAM,IACL,QAAQ,EAAE,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAChD,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAC9B,IAAI,EAAC,QAAQ,aAEb,KAAC,SAAS,mBACI,MAAM,EAClB,SAAS,EAAE,UAAU,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,GACpD,EACD,SAAS,IACH,CACV,CAAC,CAAC,CAAC,IAAI,IACJ,GACD,CACR,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAiC;IAC1D,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,MAAM,KAAK,YAAY;QAAE,OAAO,MAAM,CAAC;IAC3C,IAAI,MAAM,KAAK,yBAAyB;QAAE,OAAO,SAAS,CAAC;IAC3D,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { ReactElement } from 'react';
|
|
2
|
+
import type { MailProviderView } from '../mail-client.js';
|
|
3
|
+
export interface MailAccountConnectorLabels {
|
|
4
|
+
readonly accountType: string;
|
|
5
|
+
readonly chooseAccountType: string;
|
|
6
|
+
readonly connect: string;
|
|
7
|
+
readonly connecting: string;
|
|
8
|
+
readonly connectedAccounts: (count: number) => string;
|
|
9
|
+
readonly capability: (capability: string) => string;
|
|
10
|
+
readonly configurationRequired: string;
|
|
11
|
+
readonly emailAddress?: string;
|
|
12
|
+
readonly username?: string;
|
|
13
|
+
readonly password?: string;
|
|
14
|
+
readonly displayName?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface MailAccountCredentials {
|
|
17
|
+
readonly address: string;
|
|
18
|
+
readonly username: string;
|
|
19
|
+
readonly password: string;
|
|
20
|
+
readonly displayName?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface MailAccountConnectorProps {
|
|
23
|
+
readonly providers: readonly MailProviderView[];
|
|
24
|
+
readonly credentialDefaults?: Pick<MailAccountCredentials, 'username' | 'password'>;
|
|
25
|
+
readonly connectedAccountCount: (provider: MailProviderView) => number;
|
|
26
|
+
readonly connectingProviderName?: string;
|
|
27
|
+
readonly labels: MailAccountConnectorLabels;
|
|
28
|
+
readonly onConnect: (provider: MailProviderView) => void;
|
|
29
|
+
readonly onConnectCredentials?: (provider: MailProviderView, credentials: MailAccountCredentials) => void;
|
|
30
|
+
}
|
|
31
|
+
export declare function MailAccountConnector({ providers, credentialDefaults, connectedAccountCount, connectingProviderName, labels, onConnect, onConnectCredentials, }: MailAccountConnectorProps): ReactElement;
|
|
32
|
+
//# sourceMappingURL=mail-account-connector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mail-account-connector.d.ts","sourceRoot":"","sources":["../../../client/components/mail-account-connector.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAK1D,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACtD,QAAQ,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IACpD,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAChD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAChC,sBAAsB,EACtB,UAAU,GAAG,UAAU,CACxB,CAAC;IACF,QAAQ,CAAC,qBAAqB,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,MAAM,CAAC;IACvE,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACzD,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAC9B,QAAQ,EAAE,gBAAgB,EAC1B,WAAW,EAAE,sBAAsB,KAChC,IAAI,CAAC;CACX;AAED,wBAAgB,oBAAoB,CAAC,EACnC,SAAS,EACT,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,MAAM,EACN,SAAS,EACT,oBAAoB,GACrB,EAAE,yBAAyB,GAAG,YAAY,CAmJ1C"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Link2 } from 'lucide-react';
|
|
3
|
+
import { useMemo, useState } from 'react';
|
|
4
|
+
import { Button } from './ui/button.js';
|
|
5
|
+
import { Input } from './ui/input.js';
|
|
6
|
+
import { NativeSelect } from './ui/native-select.js';
|
|
7
|
+
export function MailAccountConnector({ providers, credentialDefaults, connectedAccountCount, connectingProviderName, labels, onConnect, onConnectCredentials, }) {
|
|
8
|
+
const [selectedKey, setSelectedKey] = useState('');
|
|
9
|
+
const [address, setAddress] = useState('');
|
|
10
|
+
const [username, setUsername] = useState(credentialDefaults?.username ?? '');
|
|
11
|
+
const [password, setPassword] = useState(credentialDefaults?.password ?? '');
|
|
12
|
+
const [displayName, setDisplayName] = useState('');
|
|
13
|
+
const selectedProvider = useMemo(() => providers.find((provider) => providerKey(provider) === selectedKey), [providers, selectedKey]);
|
|
14
|
+
const connecting = selectedProvider !== undefined &&
|
|
15
|
+
selectedProvider.name === connectingProviderName;
|
|
16
|
+
const providerConfigured = selectedProvider?.configured !== false;
|
|
17
|
+
const capabilities = selectedProvider
|
|
18
|
+
? Object.entries(selectedProvider.capabilities)
|
|
19
|
+
.filter(([, enabled]) => enabled)
|
|
20
|
+
.map(([name]) => name)
|
|
21
|
+
: [];
|
|
22
|
+
const usesCredentials = selectedProvider?.connection === 'credentials';
|
|
23
|
+
const credentialsReady = address.trim().length > 0 &&
|
|
24
|
+
username.trim().length > 0 &&
|
|
25
|
+
password.length > 0 &&
|
|
26
|
+
onConnectCredentials !== undefined;
|
|
27
|
+
return (_jsxs("div", { className: 'space-y-4', children: [_jsxs("div", { className: 'grid gap-3 sm:grid-cols-[minmax(0,1fr)_auto] sm:items-end', children: [_jsxs("label", { className: 'grid gap-2 text-sm font-medium', children: [_jsx("span", { children: labels.accountType }), _jsxs(NativeSelect, { onChange: (event) => {
|
|
28
|
+
setSelectedKey(event.target.value);
|
|
29
|
+
setAddress('');
|
|
30
|
+
setUsername(credentialDefaults?.username ?? '');
|
|
31
|
+
setPassword(credentialDefaults?.password ?? '');
|
|
32
|
+
setDisplayName('');
|
|
33
|
+
}, value: selectedKey, children: [_jsx("option", { value: '', children: labels.chooseAccountType }), providers.map((provider) => (_jsxs("option", { value: providerKey(provider), children: [provider.label, provider.name === provider.type ? '' : ` · ${provider.name}`, provider.configured === false
|
|
34
|
+
? ` · ${labels.configurationRequired}`
|
|
35
|
+
: ''] }, providerKey(provider))))] })] }), _jsxs(Button, { disabled: !selectedProvider ||
|
|
36
|
+
!providerConfigured ||
|
|
37
|
+
connecting ||
|
|
38
|
+
(usesCredentials && !credentialsReady), onClick: () => {
|
|
39
|
+
if (!selectedProvider)
|
|
40
|
+
return;
|
|
41
|
+
if (usesCredentials) {
|
|
42
|
+
onConnectCredentials?.(selectedProvider, {
|
|
43
|
+
address: address.trim(),
|
|
44
|
+
username: username.trim(),
|
|
45
|
+
password,
|
|
46
|
+
displayName: displayName.trim() || undefined,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
onConnect(selectedProvider);
|
|
51
|
+
}
|
|
52
|
+
}, children: [_jsx(Link2, { "aria-hidden": 'true', className: 'size-4' }), connecting ? labels.connecting : labels.connect] })] }), usesCredentials && providerConfigured ? (_jsxs("div", { className: 'grid gap-3 sm:grid-cols-2', children: [_jsxs("label", { className: 'grid gap-2 text-sm font-medium', children: [_jsx("span", { children: labels.emailAddress ?? 'Email address' }), _jsx(Input, { autoComplete: 'email', onChange: (event) => setAddress(event.target.value), value: address })] }), _jsxs("label", { className: 'grid gap-2 text-sm font-medium', children: [_jsx("span", { children: labels.username ?? 'Username' }), _jsx(Input, { autoComplete: 'username', onChange: (event) => setUsername(event.target.value), value: username })] }), _jsxs("label", { className: 'grid gap-2 text-sm font-medium', children: [_jsx("span", { children: labels.password ?? 'Password' }), _jsx(Input, { autoComplete: 'current-password', onChange: (event) => setPassword(event.target.value), type: 'password', value: password })] }), _jsxs("label", { className: 'grid gap-2 text-sm font-medium', children: [_jsx("span", { children: labels.displayName ?? 'Sender name (optional)' }), _jsx(Input, { autoComplete: 'name', onChange: (event) => setDisplayName(event.target.value), value: displayName })] })] })) : null, selectedProvider ? (_jsx("div", { className: 'rounded-lg border bg-muted/20 p-4', children: _jsxs("div", { className: 'flex flex-wrap items-center justify-between gap-2', children: [_jsxs("div", { children: [_jsx("p", { className: 'font-medium', children: selectedProvider.label }), _jsx("p", { className: 'text-xs text-muted-foreground', children: providerConfigured
|
|
53
|
+
? labels.connectedAccounts(connectedAccountCount(selectedProvider))
|
|
54
|
+
: labels.configurationRequired })] }), providerConfigured ? (_jsx("div", { className: 'flex flex-wrap justify-end gap-1.5', children: capabilities.map((capability) => (_jsx("span", { className: 'rounded-md border bg-background px-2 py-1 text-xs text-muted-foreground', children: labels.capability(capability) }, capability))) })) : null] }) })) : null] }));
|
|
55
|
+
}
|
|
56
|
+
function providerKey(provider) {
|
|
57
|
+
return `${provider.type}:${provider.name}`;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=mail-account-connector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mail-account-connector.js","sourceRoot":"","sources":["../../../client/components/mail-account-connector.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAI1C,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAuCrD,MAAM,UAAU,oBAAoB,CAAC,EACnC,SAAS,EACT,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,MAAM,EACN,SAAS,EACT,oBAAoB,GACM;IAC1B,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,kBAAkB,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;IAC7E,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,kBAAkB,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;IAC7E,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnD,MAAM,gBAAgB,GAAG,OAAO,CAC9B,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,WAAW,CAAC,EACzE,CAAC,SAAS,EAAE,WAAW,CAAC,CACzB,CAAC;IACF,MAAM,UAAU,GACd,gBAAgB,KAAK,SAAS;QAC9B,gBAAgB,CAAC,IAAI,KAAK,sBAAsB,CAAC;IACnD,MAAM,kBAAkB,GAAG,gBAAgB,EAAE,UAAU,KAAK,KAAK,CAAC;IAClE,MAAM,YAAY,GAAG,gBAAgB;QACnC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,CAAC;aAC1C,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC;aAChC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;QAC1B,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,eAAe,GAAG,gBAAgB,EAAE,UAAU,KAAK,aAAa,CAAC;IACvE,MAAM,gBAAgB,GACpB,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QACzB,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QAC1B,QAAQ,CAAC,MAAM,GAAG,CAAC;QACnB,oBAAoB,KAAK,SAAS,CAAC;IAErC,OAAO,CACL,eAAK,SAAS,EAAC,WAAW,aACxB,eAAK,SAAS,EAAC,2DAA2D,aACxE,iBAAO,SAAS,EAAC,gCAAgC,aAC/C,yBAAO,MAAM,CAAC,WAAW,GAAQ,EACjC,MAAC,YAAY,IACX,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oCAClB,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oCACnC,UAAU,CAAC,EAAE,CAAC,CAAC;oCACf,WAAW,CAAC,kBAAkB,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;oCAChD,WAAW,CAAC,kBAAkB,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;oCAChD,cAAc,CAAC,EAAE,CAAC,CAAC;gCACrB,CAAC,EACD,KAAK,EAAE,WAAW,aAElB,iBAAQ,KAAK,EAAC,EAAE,YAAE,MAAM,CAAC,iBAAiB,GAAU,EACnD,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAC3B,kBAAoC,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,aAC7D,QAAQ,CAAC,KAAK,EACd,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,EAC5D,QAAQ,CAAC,UAAU,KAAK,KAAK;gDAC5B,CAAC,CAAC,MAAM,MAAM,CAAC,qBAAqB,EAAE;gDACtC,CAAC,CAAC,EAAE,KALK,WAAW,CAAC,QAAQ,CAAC,CAMzB,CACV,CAAC,IACW,IACT,EACR,MAAC,MAAM,IACL,QAAQ,EACN,CAAC,gBAAgB;4BACjB,CAAC,kBAAkB;4BACnB,UAAU;4BACV,CAAC,eAAe,IAAI,CAAC,gBAAgB,CAAC,EAExC,OAAO,EAAE,GAAG,EAAE;4BACZ,IAAI,CAAC,gBAAgB;gCAAE,OAAO;4BAC9B,IAAI,eAAe,EAAE,CAAC;gCACpB,oBAAoB,EAAE,CAAC,gBAAgB,EAAE;oCACvC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE;oCACvB,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE;oCACzB,QAAQ;oCACR,WAAW,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,SAAS;iCAC7C,CAAC,CAAC;4BACL,CAAC;iCAAM,CAAC;gCACN,SAAS,CAAC,gBAAgB,CAAC,CAAC;4BAC9B,CAAC;wBACH,CAAC,aAED,KAAC,KAAK,mBAAa,MAAM,EAAC,SAAS,EAAC,QAAQ,GAAG,EAC9C,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,IACzC,IACL,EAEL,eAAe,IAAI,kBAAkB,CAAC,CAAC,CAAC,CACvC,eAAK,SAAS,EAAC,2BAA2B,aACxC,iBAAO,SAAS,EAAC,gCAAgC,aAC/C,yBAAO,MAAM,CAAC,YAAY,IAAI,eAAe,GAAQ,EACrD,KAAC,KAAK,IACJ,YAAY,EAAC,OAAO,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EACnD,KAAK,EAAE,OAAO,GACd,IACI,EACR,iBAAO,SAAS,EAAC,gCAAgC,aAC/C,yBAAO,MAAM,CAAC,QAAQ,IAAI,UAAU,GAAQ,EAC5C,KAAC,KAAK,IACJ,YAAY,EAAC,UAAU,EACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EACpD,KAAK,EAAE,QAAQ,GACf,IACI,EACR,iBAAO,SAAS,EAAC,gCAAgC,aAC/C,yBAAO,MAAM,CAAC,QAAQ,IAAI,UAAU,GAAQ,EAC5C,KAAC,KAAK,IACJ,YAAY,EAAC,kBAAkB,EAC/B,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EACpD,IAAI,EAAC,UAAU,EACf,KAAK,EAAE,QAAQ,GACf,IACI,EACR,iBAAO,SAAS,EAAC,gCAAgC,aAC/C,yBAAO,MAAM,CAAC,WAAW,IAAI,wBAAwB,GAAQ,EAC7D,KAAC,KAAK,IACJ,YAAY,EAAC,MAAM,EACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EACvD,KAAK,EAAE,WAAW,GAClB,IACI,IACJ,CACP,CAAC,CAAC,CAAC,IAAI,EAEP,gBAAgB,CAAC,CAAC,CAAC,CAClB,cAAK,SAAS,EAAC,mCAAmC,YAChD,eAAK,SAAS,EAAC,mDAAmD,aAChE,0BACE,YAAG,SAAS,EAAC,aAAa,YAAE,gBAAgB,CAAC,KAAK,GAAK,EACvD,YAAG,SAAS,EAAC,+BAA+B,YACzC,kBAAkB;wCACjB,CAAC,CAAC,MAAM,CAAC,iBAAiB,CACtB,qBAAqB,CAAC,gBAAgB,CAAC,CACxC;wCACH,CAAC,CAAC,MAAM,CAAC,qBAAqB,GAC9B,IACA,EACL,kBAAkB,CAAC,CAAC,CAAC,CACpB,cAAK,SAAS,EAAC,oCAAoC,YAChD,YAAY,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAChC,eACE,SAAS,EAAC,yEAAyE,YAGlF,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,IAFzB,UAAU,CAGV,CACR,CAAC,GACE,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,GACF,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,QAA0B;IAC7C,OAAO,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mail-bulk-send-logs.d.ts","sourceRoot":"","sources":["../../../client/components/mail-bulk-send-logs.tsx"],"names":[],"mappings":"AAGA,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,OAAO,CAAC;AAYf,wBAAgB,gBAAgB,IAAI,YAAY,CAqY/C"}
|