@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.
Files changed (891) hide show
  1. package/CHANGELOG.md +273 -0
  2. package/README.md +55 -2
  3. package/dist/client/components/index.d.ts +19 -0
  4. package/dist/client/components/index.d.ts.map +1 -0
  5. package/dist/client/components/index.js +19 -0
  6. package/dist/client/components/index.js.map +1 -0
  7. package/dist/client/components/mail-account-card.d.ts +14 -0
  8. package/dist/client/components/mail-account-card.d.ts.map +1 -0
  9. package/dist/client/components/mail-account-card.js +18 -0
  10. package/dist/client/components/mail-account-card.js.map +1 -0
  11. package/dist/client/components/mail-account-connector.d.ts +32 -0
  12. package/dist/client/components/mail-account-connector.d.ts.map +1 -0
  13. package/dist/client/components/mail-account-connector.js +59 -0
  14. package/dist/client/components/mail-account-connector.js.map +1 -0
  15. package/dist/client/components/mail-bulk-send-logs.d.ts +3 -0
  16. package/dist/client/components/mail-bulk-send-logs.d.ts.map +1 -0
  17. package/dist/client/components/mail-bulk-send-logs.js +185 -0
  18. package/dist/client/components/mail-bulk-send-logs.js.map +1 -0
  19. package/dist/client/components/mail-composer.d.ts +4 -0
  20. package/dist/client/components/mail-composer.d.ts.map +1 -0
  21. package/dist/client/components/mail-composer.js +312 -0
  22. package/dist/client/components/mail-composer.js.map +1 -0
  23. package/dist/client/components/mail-conversation-view.d.ts +64 -0
  24. package/dist/client/components/mail-conversation-view.d.ts.map +1 -0
  25. package/dist/client/components/mail-conversation-view.js +196 -0
  26. package/dist/client/components/mail-conversation-view.js.map +1 -0
  27. package/dist/client/components/mail-dev-page-shell.d.ts +10 -0
  28. package/dist/client/components/mail-dev-page-shell.d.ts.map +1 -0
  29. package/dist/client/components/mail-dev-page-shell.js +7 -0
  30. package/dist/client/components/mail-dev-page-shell.js.map +1 -0
  31. package/dist/client/components/mail-error-description.d.ts +6 -0
  32. package/dist/client/components/mail-error-description.d.ts.map +1 -0
  33. package/dist/client/components/mail-error-description.js +10 -0
  34. package/dist/client/components/mail-error-description.js.map +1 -0
  35. package/dist/client/components/mail-html-body.d.ts +9 -0
  36. package/dist/client/components/mail-html-body.d.ts.map +1 -0
  37. package/dist/client/components/mail-html-body.js +60 -0
  38. package/dist/client/components/mail-html-body.js.map +1 -0
  39. package/dist/client/components/mail-image-resizer.d.ts +10 -0
  40. package/dist/client/components/mail-image-resizer.d.ts.map +1 -0
  41. package/dist/client/components/mail-image-resizer.js +168 -0
  42. package/dist/client/components/mail-image-resizer.js.map +1 -0
  43. package/dist/client/components/mail-label-manager.d.ts +3 -0
  44. package/dist/client/components/mail-label-manager.d.ts.map +1 -0
  45. package/dist/client/components/mail-label-manager.js +145 -0
  46. package/dist/client/components/mail-label-manager.js.map +1 -0
  47. package/dist/client/components/mail-label-tag.d.ts +15 -0
  48. package/dist/client/components/mail-label-tag.d.ts.map +1 -0
  49. package/dist/client/components/mail-label-tag.js +12 -0
  50. package/dist/client/components/mail-label-tag.js.map +1 -0
  51. package/dist/client/components/mail-management-form-actions.d.ts +14 -0
  52. package/dist/client/components/mail-management-form-actions.d.ts.map +1 -0
  53. package/dist/client/components/mail-management-form-actions.js +8 -0
  54. package/dist/client/components/mail-management-form-actions.js.map +1 -0
  55. package/dist/client/components/mail-management-list-item.d.ts +11 -0
  56. package/dist/client/components/mail-management-list-item.d.ts.map +1 -0
  57. package/dist/client/components/mail-management-list-item.js +8 -0
  58. package/dist/client/components/mail-management-list-item.js.map +1 -0
  59. package/dist/client/components/mail-management-message-detail.d.ts +8 -0
  60. package/dist/client/components/mail-management-message-detail.d.ts.map +1 -0
  61. package/dist/client/components/mail-management-message-detail.js +88 -0
  62. package/dist/client/components/mail-management-message-detail.js.map +1 -0
  63. package/dist/client/components/mail-message-content.d.ts +9 -0
  64. package/dist/client/components/mail-message-content.d.ts.map +1 -0
  65. package/dist/client/components/mail-message-content.js +44 -0
  66. package/dist/client/components/mail-message-content.js.map +1 -0
  67. package/dist/client/components/mail-message-list.d.ts +25 -0
  68. package/dist/client/components/mail-message-list.d.ts.map +1 -0
  69. package/dist/client/components/mail-message-list.js +77 -0
  70. package/dist/client/components/mail-message-list.js.map +1 -0
  71. package/dist/client/components/mail-navigation-icon.d.ts +5 -0
  72. package/dist/client/components/mail-navigation-icon.d.ts.map +1 -0
  73. package/dist/client/components/mail-navigation-icon.js +63 -0
  74. package/dist/client/components/mail-navigation-icon.js.map +1 -0
  75. package/dist/client/components/mail-page-header.d.ts +9 -0
  76. package/dist/client/components/mail-page-header.d.ts.map +1 -0
  77. package/dist/client/components/mail-page-header.js +6 -0
  78. package/dist/client/components/mail-page-header.js.map +1 -0
  79. package/dist/client/components/mail-pagination.d.ts +12 -0
  80. package/dist/client/components/mail-pagination.d.ts.map +1 -0
  81. package/dist/client/components/mail-pagination.js +62 -0
  82. package/dist/client/components/mail-pagination.js.map +1 -0
  83. package/dist/client/components/mail-pending-deliveries.d.ts +6 -0
  84. package/dist/client/components/mail-pending-deliveries.d.ts.map +1 -0
  85. package/dist/client/components/mail-pending-deliveries.js +50 -0
  86. package/dist/client/components/mail-pending-deliveries.js.map +1 -0
  87. package/dist/client/components/mail-provider-card.d.ts +13 -0
  88. package/dist/client/components/mail-provider-card.d.ts.map +1 -0
  89. package/dist/client/components/mail-provider-card.js +11 -0
  90. package/dist/client/components/mail-provider-card.js.map +1 -0
  91. package/dist/client/components/mail-rich-text-editor.d.ts +64 -0
  92. package/dist/client/components/mail-rich-text-editor.d.ts.map +1 -0
  93. package/dist/client/components/mail-rich-text-editor.js +199 -0
  94. package/dist/client/components/mail-rich-text-editor.js.map +1 -0
  95. package/dist/client/components/mail-scheduled-status.d.ts +8 -0
  96. package/dist/client/components/mail-scheduled-status.d.ts.map +1 -0
  97. package/dist/client/components/mail-scheduled-status.js +52 -0
  98. package/dist/client/components/mail-scheduled-status.js.map +1 -0
  99. package/dist/client/components/mail-signature-manager.d.ts +8 -0
  100. package/dist/client/components/mail-signature-manager.d.ts.map +1 -0
  101. package/dist/client/components/mail-signature-manager.js +255 -0
  102. package/dist/client/components/mail-signature-manager.js.map +1 -0
  103. package/dist/client/components/mail-status-badge.d.ts +8 -0
  104. package/dist/client/components/mail-status-badge.d.ts.map +1 -0
  105. package/dist/client/components/mail-status-badge.js +12 -0
  106. package/dist/client/components/mail-status-badge.js.map +1 -0
  107. package/dist/client/components/mail-submission-status.d.ts +6 -0
  108. package/dist/client/components/mail-submission-status.d.ts.map +1 -0
  109. package/dist/client/components/mail-submission-status.js +24 -0
  110. package/dist/client/components/mail-submission-status.js.map +1 -0
  111. package/dist/client/components/mail-sync-policy-fields.d.ts +14 -0
  112. package/dist/client/components/mail-sync-policy-fields.d.ts.map +1 -0
  113. package/dist/client/components/mail-sync-policy-fields.js +27 -0
  114. package/dist/client/components/mail-sync-policy-fields.js.map +1 -0
  115. package/dist/client/components/mail-template-manager.d.ts +3 -0
  116. package/dist/client/components/mail-template-manager.d.ts.map +1 -0
  117. package/dist/client/components/mail-template-manager.js +135 -0
  118. package/dist/client/components/mail-template-manager.js.map +1 -0
  119. package/dist/client/components/mail-text-body.d.ts +5 -0
  120. package/dist/client/components/mail-text-body.d.ts.map +1 -0
  121. package/dist/client/components/mail-text-body.js +11 -0
  122. package/dist/client/components/mail-text-body.js.map +1 -0
  123. package/dist/client/components/mail-workspace-composer.d.ts +4 -0
  124. package/dist/client/components/mail-workspace-composer.d.ts.map +1 -0
  125. package/dist/client/components/mail-workspace-composer.js +74 -0
  126. package/dist/client/components/mail-workspace-composer.js.map +1 -0
  127. package/dist/client/components/mailbox-sidebar.d.ts +38 -0
  128. package/dist/client/components/mailbox-sidebar.d.ts.map +1 -0
  129. package/dist/client/components/mailbox-sidebar.js +71 -0
  130. package/dist/client/components/mailbox-sidebar.js.map +1 -0
  131. package/dist/client/components/page-container.d.ts +4 -0
  132. package/dist/client/components/page-container.d.ts.map +1 -0
  133. package/dist/client/components/page-container.js +6 -0
  134. package/dist/client/components/page-container.js.map +1 -0
  135. package/dist/client/components/page-header.d.ts +8 -0
  136. package/dist/client/components/page-header.d.ts.map +1 -0
  137. package/dist/client/components/page-header.js +5 -0
  138. package/dist/client/components/page-header.js.map +1 -0
  139. package/dist/client/components/public.d.ts +19 -0
  140. package/dist/client/components/public.d.ts.map +1 -0
  141. package/dist/client/components/public.js +18 -0
  142. package/dist/client/components/public.js.map +1 -0
  143. package/dist/client/components/ui/button.d.ts +7 -0
  144. package/dist/client/components/ui/button.d.ts.map +1 -0
  145. package/dist/client/components/ui/button.js +19 -0
  146. package/dist/client/components/ui/button.js.map +1 -0
  147. package/dist/client/components/ui/calendar.d.ts +9 -0
  148. package/dist/client/components/ui/calendar.d.ts.map +1 -0
  149. package/dist/client/components/ui/calendar.js +23 -0
  150. package/dist/client/components/ui/calendar.js.map +1 -0
  151. package/dist/client/components/ui/card.d.ts +3 -0
  152. package/dist/client/components/ui/card.d.ts.map +1 -0
  153. package/dist/client/components/ui/card.js +6 -0
  154. package/dist/client/components/ui/card.js.map +1 -0
  155. package/dist/client/components/ui/checkbox.d.ts +5 -0
  156. package/dist/client/components/ui/checkbox.d.ts.map +1 -0
  157. package/dist/client/components/ui/checkbox.js +8 -0
  158. package/dist/client/components/ui/checkbox.js.map +1 -0
  159. package/dist/client/components/ui/collapsible.d.ts +6 -0
  160. package/dist/client/components/ui/collapsible.d.ts.map +1 -0
  161. package/dist/client/components/ui/collapsible.js +12 -0
  162. package/dist/client/components/ui/collapsible.js.map +1 -0
  163. package/dist/client/components/ui/dialog.d.ts +14 -0
  164. package/dist/client/components/ui/dialog.d.ts.map +1 -0
  165. package/dist/client/components/ui/dialog.js +36 -0
  166. package/dist/client/components/ui/dialog.js.map +1 -0
  167. package/dist/client/components/ui/dropdown-menu.d.ts +8 -0
  168. package/dist/client/components/ui/dropdown-menu.d.ts.map +1 -0
  169. package/dist/client/components/ui/dropdown-menu.js +21 -0
  170. package/dist/client/components/ui/dropdown-menu.js.map +1 -0
  171. package/dist/client/components/ui/input.d.ts +4 -0
  172. package/dist/client/components/ui/input.d.ts.map +1 -0
  173. package/dist/client/components/ui/input.js +7 -0
  174. package/dist/client/components/ui/input.js.map +1 -0
  175. package/dist/client/components/ui/native-select.d.ts +4 -0
  176. package/dist/client/components/ui/native-select.d.ts.map +1 -0
  177. package/dist/client/components/ui/native-select.js +7 -0
  178. package/dist/client/components/ui/native-select.js.map +1 -0
  179. package/dist/client/components/ui/popover.d.ts +10 -0
  180. package/dist/client/components/ui/popover.d.ts.map +1 -0
  181. package/dist/client/components/ui/popover.js +23 -0
  182. package/dist/client/components/ui/popover.js.map +1 -0
  183. package/dist/client/components/ui/sheet.d.ts +13 -0
  184. package/dist/client/components/ui/sheet.d.ts.map +1 -0
  185. package/dist/client/components/ui/sheet.js +28 -0
  186. package/dist/client/components/ui/sheet.js.map +1 -0
  187. package/dist/client/components/ui/textarea.d.ts +4 -0
  188. package/dist/client/components/ui/textarea.d.ts.map +1 -0
  189. package/dist/client/components/ui/textarea.js +6 -0
  190. package/dist/client/components/ui/textarea.js.map +1 -0
  191. package/dist/client/components/ui/tooltip.d.ts +7 -0
  192. package/dist/client/components/ui/tooltip.d.ts.map +1 -0
  193. package/dist/client/components/ui/tooltip.js +16 -0
  194. package/dist/client/components/ui/tooltip.js.map +1 -0
  195. package/dist/client/contracts/composer.d.ts +68 -0
  196. package/dist/client/contracts/composer.d.ts.map +1 -0
  197. package/dist/client/contracts/composer.js +12 -0
  198. package/dist/client/contracts/composer.js.map +1 -0
  199. package/dist/client/hooks/use-mail-composer.d.ts +52 -0
  200. package/dist/client/hooks/use-mail-composer.d.ts.map +1 -0
  201. package/dist/client/hooks/use-mail-composer.js +633 -0
  202. package/dist/client/hooks/use-mail-composer.js.map +1 -0
  203. package/dist/client/hooks/use-mail-invalidations.d.ts +3 -0
  204. package/dist/client/hooks/use-mail-invalidations.d.ts.map +1 -0
  205. package/dist/client/hooks/use-mail-invalidations.js +28 -0
  206. package/dist/client/hooks/use-mail-invalidations.js.map +1 -0
  207. package/dist/client/hooks/use-mail-log-page.d.ts +17 -0
  208. package/dist/client/hooks/use-mail-log-page.d.ts.map +1 -0
  209. package/dist/client/hooks/use-mail-log-page.js +85 -0
  210. package/dist/client/hooks/use-mail-log-page.js.map +1 -0
  211. package/dist/client/hooks/use-mail-table-page.d.ts +12 -0
  212. package/dist/client/hooks/use-mail-table-page.d.ts.map +1 -0
  213. package/dist/client/hooks/use-mail-table-page.js +22 -0
  214. package/dist/client/hooks/use-mail-table-page.js.map +1 -0
  215. package/dist/client/hooks/use-mail-workspace-data.d.ts +35 -0
  216. package/dist/client/hooks/use-mail-workspace-data.d.ts.map +1 -0
  217. package/dist/client/hooks/use-mail-workspace-data.js +409 -0
  218. package/dist/client/hooks/use-mail-workspace-data.js.map +1 -0
  219. package/dist/client/index.d.ts +14 -0
  220. package/dist/client/index.d.ts.map +1 -0
  221. package/dist/client/index.js +10 -0
  222. package/dist/client/index.js.map +1 -0
  223. package/dist/client/lib/mail-address.d.ts +5 -0
  224. package/dist/client/lib/mail-address.d.ts.map +1 -0
  225. package/dist/client/lib/mail-address.js +14 -0
  226. package/dist/client/lib/mail-address.js.map +1 -0
  227. package/dist/client/lib/mail-body-theme.d.ts +3 -0
  228. package/dist/client/lib/mail-body-theme.d.ts.map +1 -0
  229. package/dist/client/lib/mail-body-theme.js +69 -0
  230. package/dist/client/lib/mail-body-theme.js.map +1 -0
  231. package/dist/client/lib/mail-composer-state.d.ts +36 -0
  232. package/dist/client/lib/mail-composer-state.d.ts.map +1 -0
  233. package/dist/client/lib/mail-composer-state.js +212 -0
  234. package/dist/client/lib/mail-composer-state.js.map +1 -0
  235. package/dist/client/lib/mail-editor-headings.d.ts +3 -0
  236. package/dist/client/lib/mail-editor-headings.d.ts.map +1 -0
  237. package/dist/client/lib/mail-editor-headings.js +27 -0
  238. package/dist/client/lib/mail-editor-headings.js.map +1 -0
  239. package/dist/client/lib/mail-editor-images.d.ts +10 -0
  240. package/dist/client/lib/mail-editor-images.d.ts.map +1 -0
  241. package/dist/client/lib/mail-editor-images.js +82 -0
  242. package/dist/client/lib/mail-editor-images.js.map +1 -0
  243. package/dist/client/lib/mail-editor-labels.d.ts +3 -0
  244. package/dist/client/lib/mail-editor-labels.d.ts.map +1 -0
  245. package/dist/client/lib/mail-editor-labels.js +43 -0
  246. package/dist/client/lib/mail-editor-labels.js.map +1 -0
  247. package/dist/client/lib/mail-error-description.d.ts +7 -0
  248. package/dist/client/lib/mail-error-description.d.ts.map +1 -0
  249. package/dist/client/lib/mail-error-description.js +84 -0
  250. package/dist/client/lib/mail-error-description.js.map +1 -0
  251. package/dist/client/lib/mail-folders.d.ts +40 -0
  252. package/dist/client/lib/mail-folders.d.ts.map +1 -0
  253. package/dist/client/lib/mail-folders.js +215 -0
  254. package/dist/client/lib/mail-folders.js.map +1 -0
  255. package/dist/client/lib/mail-forward-content.d.ts +19 -0
  256. package/dist/client/lib/mail-forward-content.d.ts.map +1 -0
  257. package/dist/client/lib/mail-forward-content.js +120 -0
  258. package/dist/client/lib/mail-forward-content.js.map +1 -0
  259. package/dist/client/lib/mail-inline-images.d.ts +6 -0
  260. package/dist/client/lib/mail-inline-images.d.ts.map +1 -0
  261. package/dist/client/lib/mail-inline-images.js +41 -0
  262. package/dist/client/lib/mail-inline-images.js.map +1 -0
  263. package/dist/client/lib/mail-label.d.ts +10 -0
  264. package/dist/client/lib/mail-label.d.ts.map +1 -0
  265. package/dist/client/lib/mail-label.js +47 -0
  266. package/dist/client/lib/mail-label.js.map +1 -0
  267. package/dist/client/lib/mail-message-document.d.ts +6 -0
  268. package/dist/client/lib/mail-message-document.d.ts.map +1 -0
  269. package/dist/client/lib/mail-message-document.js +68 -0
  270. package/dist/client/lib/mail-message-document.js.map +1 -0
  271. package/dist/client/lib/mail-pending-delivery.d.ts +22 -0
  272. package/dist/client/lib/mail-pending-delivery.d.ts.map +1 -0
  273. package/dist/client/lib/mail-pending-delivery.js +81 -0
  274. package/dist/client/lib/mail-pending-delivery.js.map +1 -0
  275. package/dist/client/lib/mail-quoted-content.d.ts +8 -0
  276. package/dist/client/lib/mail-quoted-content.d.ts.map +1 -0
  277. package/dist/client/lib/mail-quoted-content.js +62 -0
  278. package/dist/client/lib/mail-quoted-content.js.map +1 -0
  279. package/dist/client/lib/mail-reply-content.d.ts +9 -0
  280. package/dist/client/lib/mail-reply-content.d.ts.map +1 -0
  281. package/dist/client/lib/mail-reply-content.js +50 -0
  282. package/dist/client/lib/mail-reply-content.js.map +1 -0
  283. package/dist/client/lib/mail-signature.d.ts +8 -0
  284. package/dist/client/lib/mail-signature.d.ts.map +1 -0
  285. package/dist/client/lib/mail-signature.js +40 -0
  286. package/dist/client/lib/mail-signature.js.map +1 -0
  287. package/dist/client/lib/mail-template.d.ts +14 -0
  288. package/dist/client/lib/mail-template.d.ts.map +1 -0
  289. package/dist/client/lib/mail-template.js +189 -0
  290. package/dist/client/lib/mail-template.js.map +1 -0
  291. package/dist/client/lib/utils.d.ts +2 -0
  292. package/dist/client/lib/utils.d.ts.map +1 -0
  293. package/dist/client/lib/utils.js +2 -0
  294. package/dist/client/lib/utils.js.map +1 -0
  295. package/dist/client/locales/en-US.d.ts +677 -0
  296. package/dist/client/locales/en-US.d.ts.map +1 -0
  297. package/dist/client/locales/en-US.js +675 -0
  298. package/dist/client/locales/en-US.js.map +1 -0
  299. package/dist/client/locales/index.d.ts +4 -0
  300. package/dist/client/locales/index.d.ts.map +1 -0
  301. package/dist/client/locales/index.js +6 -0
  302. package/dist/client/locales/index.js.map +1 -0
  303. package/dist/client/locales/zh-CN.d.ts +4 -0
  304. package/dist/client/locales/zh-CN.d.ts.map +1 -0
  305. package/dist/client/locales/zh-CN.js +675 -0
  306. package/dist/client/locales/zh-CN.js.map +1 -0
  307. package/dist/client/mail-client.d.ts +112 -0
  308. package/dist/client/mail-client.d.ts.map +1 -0
  309. package/dist/client/mail-client.js +412 -0
  310. package/dist/client/mail-client.js.map +1 -0
  311. package/dist/client/namespace.d.ts +4 -0
  312. package/dist/client/namespace.d.ts.map +1 -0
  313. package/dist/client/namespace.js +3 -0
  314. package/dist/client/namespace.js.map +1 -0
  315. package/dist/client/pages/mail-accounts-dev-page.d.ts +2 -0
  316. package/dist/client/pages/mail-accounts-dev-page.d.ts.map +1 -0
  317. package/dist/client/pages/mail-accounts-dev-page.js +2 -0
  318. package/dist/client/pages/mail-accounts-dev-page.js.map +1 -0
  319. package/dist/client/pages/mail-accounts-page.d.ts +8 -0
  320. package/dist/client/pages/mail-accounts-page.d.ts.map +1 -0
  321. package/dist/client/pages/mail-accounts-page.js +463 -0
  322. package/dist/client/pages/mail-accounts-page.js.map +1 -0
  323. package/dist/client/pages/mail-dev-hub-page.d.ts +9 -0
  324. package/dist/client/pages/mail-dev-hub-page.d.ts.map +1 -0
  325. package/dist/client/pages/mail-dev-hub-page.js +49 -0
  326. package/dist/client/pages/mail-dev-hub-page.js.map +1 -0
  327. package/dist/client/pages/mail-dev-page.d.ts +5 -0
  328. package/dist/client/pages/mail-dev-page.d.ts.map +1 -0
  329. package/dist/client/pages/mail-dev-page.js +12 -0
  330. package/dist/client/pages/mail-dev-page.js.map +1 -0
  331. package/dist/client/pages/mail-management-page.d.ts +3 -0
  332. package/dist/client/pages/mail-management-page.d.ts.map +1 -0
  333. package/dist/client/pages/mail-management-page.js +335 -0
  334. package/dist/client/pages/mail-management-page.js.map +1 -0
  335. package/dist/client/pages/mail-send-logs-page.d.ts +3 -0
  336. package/dist/client/pages/mail-send-logs-page.d.ts.map +1 -0
  337. package/dist/client/pages/mail-send-logs-page.js +79 -0
  338. package/dist/client/pages/mail-send-logs-page.js.map +1 -0
  339. package/dist/client/pages/mail-send-page.d.ts +3 -0
  340. package/dist/client/pages/mail-send-page.d.ts.map +1 -0
  341. package/dist/client/pages/mail-send-page.js +127 -0
  342. package/dist/client/pages/mail-send-page.js.map +1 -0
  343. package/dist/client/pages/mail-settings-page.d.ts +3 -0
  344. package/dist/client/pages/mail-settings-page.d.ts.map +1 -0
  345. package/dist/client/pages/mail-settings-page.js +79 -0
  346. package/dist/client/pages/mail-settings-page.js.map +1 -0
  347. package/dist/client/pages/mail-sync-logs-page.d.ts +3 -0
  348. package/dist/client/pages/mail-sync-logs-page.d.ts.map +1 -0
  349. package/dist/client/pages/mail-sync-logs-page.js +80 -0
  350. package/dist/client/pages/mail-sync-logs-page.js.map +1 -0
  351. package/dist/client/pages/mail-workspace-page.d.ts +10 -0
  352. package/dist/client/pages/mail-workspace-page.d.ts.map +1 -0
  353. package/dist/client/pages/mail-workspace-page.js +834 -0
  354. package/dist/client/pages/mail-workspace-page.js.map +1 -0
  355. package/dist/client/plugin.d.ts +7 -0
  356. package/dist/client/plugin.d.ts.map +1 -0
  357. package/dist/client/plugin.js +12 -0
  358. package/dist/client/plugin.js.map +1 -0
  359. package/dist/client/routes.d.ts +4 -0
  360. package/dist/client/routes.d.ts.map +1 -0
  361. package/dist/client/routes.js +146 -0
  362. package/dist/client/routes.js.map +1 -0
  363. package/dist/client/runtime.d.ts +5 -0
  364. package/dist/client/runtime.d.ts.map +1 -0
  365. package/dist/client/runtime.js +7 -0
  366. package/dist/client/runtime.js.map +1 -0
  367. package/dist/client/service-provider.d.ts +10 -0
  368. package/dist/client/service-provider.d.ts.map +1 -0
  369. package/dist/client/service-provider.js +15 -0
  370. package/dist/client/service-provider.js.map +1 -0
  371. package/dist/client/subscription.d.ts +8 -0
  372. package/dist/client/subscription.d.ts.map +1 -0
  373. package/dist/client/subscription.js +33 -0
  374. package/dist/client/subscription.js.map +1 -0
  375. package/dist/database/migrations/.manifest.json +21 -0
  376. package/dist/database/migrations/202609030001_create_mail_tables.d.ts +4 -0
  377. package/dist/database/migrations/202609030001_create_mail_tables.d.ts.map +1 -0
  378. package/dist/database/migrations/202609030001_create_mail_tables.js +536 -0
  379. package/dist/database/migrations/202609030001_create_mail_tables.js.map +1 -0
  380. package/dist/database/migrations/202609200001_backfill_mail_conversations.d.ts +4 -0
  381. package/dist/database/migrations/202609200001_backfill_mail_conversations.d.ts.map +1 -0
  382. package/dist/database/migrations/202609200001_backfill_mail_conversations.js +42 -0
  383. package/dist/database/migrations/202609200001_backfill_mail_conversations.js.map +1 -0
  384. package/dist/database/migrations/202609210001_normalize_mail_folders.d.ts +4 -0
  385. package/dist/database/migrations/202609210001_normalize_mail_folders.d.ts.map +1 -0
  386. package/dist/database/migrations/202609210001_normalize_mail_folders.js +42 -0
  387. package/dist/database/migrations/202609210001_normalize_mail_folders.js.map +1 -0
  388. package/dist/database/migrations/202609260001_add_mail_sync_retry_attempts.d.ts +4 -0
  389. package/dist/database/migrations/202609260001_add_mail_sync_retry_attempts.d.ts.map +1 -0
  390. package/dist/database/migrations/202609260001_add_mail_sync_retry_attempts.js +17 -0
  391. package/dist/database/migrations/202609260001_add_mail_sync_retry_attempts.js.map +1 -0
  392. package/dist/server/adapter-resolver.d.ts +14 -0
  393. package/dist/server/adapter-resolver.d.ts.map +1 -0
  394. package/dist/server/adapter-resolver.js +21 -0
  395. package/dist/server/adapter-resolver.js.map +1 -0
  396. package/dist/server/adapters/gmail/adapter.d.ts +42 -0
  397. package/dist/server/adapters/gmail/adapter.d.ts.map +1 -0
  398. package/dist/server/adapters/gmail/adapter.js +800 -0
  399. package/dist/server/adapters/gmail/adapter.js.map +1 -0
  400. package/dist/server/adapters/gmail/auth.d.ts +9 -0
  401. package/dist/server/adapters/gmail/auth.d.ts.map +1 -0
  402. package/dist/server/adapters/gmail/auth.js +178 -0
  403. package/dist/server/adapters/gmail/auth.js.map +1 -0
  404. package/dist/server/adapters/gmail/batch.d.ts +8 -0
  405. package/dist/server/adapters/gmail/batch.d.ts.map +1 -0
  406. package/dist/server/adapters/gmail/batch.js +116 -0
  407. package/dist/server/adapters/gmail/batch.js.map +1 -0
  408. package/dist/server/adapters/gmail/concurrency.d.ts +2 -0
  409. package/dist/server/adapters/gmail/concurrency.d.ts.map +1 -0
  410. package/dist/server/adapters/gmail/concurrency.js +12 -0
  411. package/dist/server/adapters/gmail/concurrency.js.map +1 -0
  412. package/dist/server/adapters/gmail/constants.d.ts +7 -0
  413. package/dist/server/adapters/gmail/constants.d.ts.map +1 -0
  414. package/dist/server/adapters/gmail/constants.js +19 -0
  415. package/dist/server/adapters/gmail/constants.js.map +1 -0
  416. package/dist/server/adapters/gmail/definition.d.ts +4 -0
  417. package/dist/server/adapters/gmail/definition.d.ts.map +1 -0
  418. package/dist/server/adapters/gmail/definition.js +58 -0
  419. package/dist/server/adapters/gmail/definition.js.map +1 -0
  420. package/dist/server/adapters/gmail/errors.d.ts +12 -0
  421. package/dist/server/adapters/gmail/errors.d.ts.map +1 -0
  422. package/dist/server/adapters/gmail/errors.js +58 -0
  423. package/dist/server/adapters/gmail/errors.js.map +1 -0
  424. package/dist/server/adapters/gmail/http.d.ts +11 -0
  425. package/dist/server/adapters/gmail/http.d.ts.map +1 -0
  426. package/dist/server/adapters/gmail/http.js +152 -0
  427. package/dist/server/adapters/gmail/http.js.map +1 -0
  428. package/dist/server/adapters/gmail/index.d.ts +4 -0
  429. package/dist/server/adapters/gmail/index.d.ts.map +1 -0
  430. package/dist/server/adapters/gmail/index.js +3 -0
  431. package/dist/server/adapters/gmail/index.js.map +1 -0
  432. package/dist/server/adapters/gmail/mime.d.ts +7 -0
  433. package/dist/server/adapters/gmail/mime.d.ts.map +1 -0
  434. package/dist/server/adapters/gmail/mime.js +189 -0
  435. package/dist/server/adapters/gmail/mime.js.map +1 -0
  436. package/dist/server/adapters/gmail/normalize.d.ts +7 -0
  437. package/dist/server/adapters/gmail/normalize.d.ts.map +1 -0
  438. package/dist/server/adapters/gmail/normalize.js +104 -0
  439. package/dist/server/adapters/gmail/normalize.js.map +1 -0
  440. package/dist/server/adapters/gmail/quota.d.ts +3 -0
  441. package/dist/server/adapters/gmail/quota.d.ts.map +1 -0
  442. package/dist/server/adapters/gmail/quota.js +112 -0
  443. package/dist/server/adapters/gmail/quota.js.map +1 -0
  444. package/dist/server/adapters/gmail/sync.d.ts +5 -0
  445. package/dist/server/adapters/gmail/sync.d.ts.map +1 -0
  446. package/dist/server/adapters/gmail/sync.js +32 -0
  447. package/dist/server/adapters/gmail/sync.js.map +1 -0
  448. package/dist/server/adapters/gmail/types.d.ts +141 -0
  449. package/dist/server/adapters/gmail/types.d.ts.map +1 -0
  450. package/dist/server/adapters/gmail/types.js +2 -0
  451. package/dist/server/adapters/gmail/types.js.map +1 -0
  452. package/dist/server/adapters/imap-smtp/adapter.d.ts +40 -0
  453. package/dist/server/adapters/imap-smtp/adapter.d.ts.map +1 -0
  454. package/dist/server/adapters/imap-smtp/adapter.js +721 -0
  455. package/dist/server/adapters/imap-smtp/adapter.js.map +1 -0
  456. package/dist/server/adapters/imap-smtp/config.d.ts +19 -0
  457. package/dist/server/adapters/imap-smtp/config.d.ts.map +1 -0
  458. package/dist/server/adapters/imap-smtp/config.js +2 -0
  459. package/dist/server/adapters/imap-smtp/config.js.map +1 -0
  460. package/dist/server/adapters/imap-smtp/connection.d.ts +9 -0
  461. package/dist/server/adapters/imap-smtp/connection.d.ts.map +1 -0
  462. package/dist/server/adapters/imap-smtp/connection.js +72 -0
  463. package/dist/server/adapters/imap-smtp/connection.js.map +1 -0
  464. package/dist/server/adapters/imap-smtp/constants.d.ts +7 -0
  465. package/dist/server/adapters/imap-smtp/constants.d.ts.map +1 -0
  466. package/dist/server/adapters/imap-smtp/constants.js +16 -0
  467. package/dist/server/adapters/imap-smtp/constants.js.map +1 -0
  468. package/dist/server/adapters/imap-smtp/content.d.ts +11 -0
  469. package/dist/server/adapters/imap-smtp/content.d.ts.map +1 -0
  470. package/dist/server/adapters/imap-smtp/content.js +157 -0
  471. package/dist/server/adapters/imap-smtp/content.js.map +1 -0
  472. package/dist/server/adapters/imap-smtp/definition.d.ts +4 -0
  473. package/dist/server/adapters/imap-smtp/definition.d.ts.map +1 -0
  474. package/dist/server/adapters/imap-smtp/definition.js +59 -0
  475. package/dist/server/adapters/imap-smtp/definition.js.map +1 -0
  476. package/dist/server/adapters/imap-smtp/errors.d.ts +10 -0
  477. package/dist/server/adapters/imap-smtp/errors.d.ts.map +1 -0
  478. package/dist/server/adapters/imap-smtp/errors.js +95 -0
  479. package/dist/server/adapters/imap-smtp/errors.js.map +1 -0
  480. package/dist/server/adapters/imap-smtp/folders.d.ts +7 -0
  481. package/dist/server/adapters/imap-smtp/folders.d.ts.map +1 -0
  482. package/dist/server/adapters/imap-smtp/folders.js +39 -0
  483. package/dist/server/adapters/imap-smtp/folders.js.map +1 -0
  484. package/dist/server/adapters/imap-smtp/index.d.ts +3 -0
  485. package/dist/server/adapters/imap-smtp/index.d.ts.map +1 -0
  486. package/dist/server/adapters/imap-smtp/index.js +2 -0
  487. package/dist/server/adapters/imap-smtp/index.js.map +1 -0
  488. package/dist/server/adapters/imap-smtp/locators.d.ts +23 -0
  489. package/dist/server/adapters/imap-smtp/locators.d.ts.map +1 -0
  490. package/dist/server/adapters/imap-smtp/locators.js +156 -0
  491. package/dist/server/adapters/imap-smtp/locators.js.map +1 -0
  492. package/dist/server/adapters/imap-smtp/normalize.d.ts +27 -0
  493. package/dist/server/adapters/imap-smtp/normalize.d.ts.map +1 -0
  494. package/dist/server/adapters/imap-smtp/normalize.js +64 -0
  495. package/dist/server/adapters/imap-smtp/normalize.js.map +1 -0
  496. package/dist/server/adapters/imap-smtp/types.d.ts +21 -0
  497. package/dist/server/adapters/imap-smtp/types.d.ts.map +1 -0
  498. package/dist/server/adapters/imap-smtp/types.js +2 -0
  499. package/dist/server/adapters/imap-smtp/types.js.map +1 -0
  500. package/dist/server/adapters/incomplete-message.d.ts +4 -0
  501. package/dist/server/adapters/incomplete-message.d.ts.map +1 -0
  502. package/dist/server/adapters/incomplete-message.js +21 -0
  503. package/dist/server/adapters/incomplete-message.js.map +1 -0
  504. package/dist/server/adapters/microsoft/adapter.d.ts +42 -0
  505. package/dist/server/adapters/microsoft/adapter.d.ts.map +1 -0
  506. package/dist/server/adapters/microsoft/adapter.js +1063 -0
  507. package/dist/server/adapters/microsoft/adapter.js.map +1 -0
  508. package/dist/server/adapters/microsoft/auth.d.ts +10 -0
  509. package/dist/server/adapters/microsoft/auth.d.ts.map +1 -0
  510. package/dist/server/adapters/microsoft/auth.js +153 -0
  511. package/dist/server/adapters/microsoft/auth.js.map +1 -0
  512. package/dist/server/adapters/microsoft/concurrency.d.ts +2 -0
  513. package/dist/server/adapters/microsoft/concurrency.d.ts.map +1 -0
  514. package/dist/server/adapters/microsoft/concurrency.js +15 -0
  515. package/dist/server/adapters/microsoft/concurrency.js.map +1 -0
  516. package/dist/server/adapters/microsoft/constants.d.ts +10 -0
  517. package/dist/server/adapters/microsoft/constants.d.ts.map +1 -0
  518. package/dist/server/adapters/microsoft/constants.js +46 -0
  519. package/dist/server/adapters/microsoft/constants.js.map +1 -0
  520. package/dist/server/adapters/microsoft/content.d.ts +9 -0
  521. package/dist/server/adapters/microsoft/content.d.ts.map +1 -0
  522. package/dist/server/adapters/microsoft/content.js +40 -0
  523. package/dist/server/adapters/microsoft/content.js.map +1 -0
  524. package/dist/server/adapters/microsoft/definition.d.ts +4 -0
  525. package/dist/server/adapters/microsoft/definition.d.ts.map +1 -0
  526. package/dist/server/adapters/microsoft/definition.js +48 -0
  527. package/dist/server/adapters/microsoft/definition.js.map +1 -0
  528. package/dist/server/adapters/microsoft/errors.d.ts +12 -0
  529. package/dist/server/adapters/microsoft/errors.d.ts.map +1 -0
  530. package/dist/server/adapters/microsoft/errors.js +51 -0
  531. package/dist/server/adapters/microsoft/errors.js.map +1 -0
  532. package/dist/server/adapters/microsoft/http.d.ts +13 -0
  533. package/dist/server/adapters/microsoft/http.d.ts.map +1 -0
  534. package/dist/server/adapters/microsoft/http.js +115 -0
  535. package/dist/server/adapters/microsoft/http.js.map +1 -0
  536. package/dist/server/adapters/microsoft/index.d.ts +4 -0
  537. package/dist/server/adapters/microsoft/index.d.ts.map +1 -0
  538. package/dist/server/adapters/microsoft/index.js +3 -0
  539. package/dist/server/adapters/microsoft/index.js.map +1 -0
  540. package/dist/server/adapters/microsoft/normalize.d.ts +14 -0
  541. package/dist/server/adapters/microsoft/normalize.d.ts.map +1 -0
  542. package/dist/server/adapters/microsoft/normalize.js +110 -0
  543. package/dist/server/adapters/microsoft/normalize.js.map +1 -0
  544. package/dist/server/adapters/microsoft/sync.d.ts +12 -0
  545. package/dist/server/adapters/microsoft/sync.d.ts.map +1 -0
  546. package/dist/server/adapters/microsoft/sync.js +111 -0
  547. package/dist/server/adapters/microsoft/sync.js.map +1 -0
  548. package/dist/server/adapters/microsoft/types.d.ts +128 -0
  549. package/dist/server/adapters/microsoft/types.d.ts.map +1 -0
  550. package/dist/server/adapters/microsoft/types.js +2 -0
  551. package/dist/server/adapters/microsoft/types.js.map +1 -0
  552. package/dist/server/config.d.ts +56 -0
  553. package/dist/server/config.d.ts.map +1 -0
  554. package/dist/server/config.js +251 -0
  555. package/dist/server/config.js.map +1 -0
  556. package/dist/server/contracts/persistence.d.ts +220 -0
  557. package/dist/server/contracts/persistence.d.ts.map +1 -0
  558. package/dist/server/contracts/persistence.js +2 -0
  559. package/dist/server/contracts/persistence.js.map +1 -0
  560. package/dist/server/contracts/provider.d.ts +303 -0
  561. package/dist/server/contracts/provider.d.ts.map +1 -0
  562. package/dist/server/contracts/provider.js +4 -0
  563. package/dist/server/contracts/provider.js.map +1 -0
  564. package/dist/server/contracts/service.d.ts +82 -0
  565. package/dist/server/contracts/service.d.ts.map +1 -0
  566. package/dist/server/contracts/service.js +2 -0
  567. package/dist/server/contracts/service.js.map +1 -0
  568. package/dist/server/credentials.d.ts +24 -0
  569. package/dist/server/credentials.d.ts.map +1 -0
  570. package/dist/server/credentials.js +263 -0
  571. package/dist/server/credentials.js.map +1 -0
  572. package/dist/server/index.d.ts +13 -0
  573. package/dist/server/index.d.ts.map +1 -0
  574. package/dist/server/index.js +7 -0
  575. package/dist/server/index.js.map +1 -0
  576. package/dist/server/jobs/send-scheduled-mail.d.ts +8 -0
  577. package/dist/server/jobs/send-scheduled-mail.d.ts.map +1 -0
  578. package/dist/server/jobs/send-scheduled-mail.js +18 -0
  579. package/dist/server/jobs/send-scheduled-mail.js.map +1 -0
  580. package/dist/server/jobs/sync-mailbox.d.ts +11 -0
  581. package/dist/server/jobs/sync-mailbox.d.ts.map +1 -0
  582. package/dist/server/jobs/sync-mailbox.js +23 -0
  583. package/dist/server/jobs/sync-mailbox.js.map +1 -0
  584. package/dist/server/locales/en-US.d.ts +18 -0
  585. package/dist/server/locales/en-US.d.ts.map +1 -0
  586. package/dist/server/locales/en-US.js +16 -0
  587. package/dist/server/locales/en-US.js.map +1 -0
  588. package/dist/server/locales/index.d.ts +4 -0
  589. package/dist/server/locales/index.d.ts.map +1 -0
  590. package/dist/server/locales/index.js +6 -0
  591. package/dist/server/locales/index.js.map +1 -0
  592. package/dist/server/locales/zh-CN.d.ts +4 -0
  593. package/dist/server/locales/zh-CN.d.ts.map +1 -0
  594. package/dist/server/locales/zh-CN.js +16 -0
  595. package/dist/server/locales/zh-CN.js.map +1 -0
  596. package/dist/server/log-pagination.d.ts +2 -0
  597. package/dist/server/log-pagination.d.ts.map +1 -0
  598. package/dist/server/log-pagination.js +8 -0
  599. package/dist/server/log-pagination.js.map +1 -0
  600. package/dist/server/logging.d.ts +16 -0
  601. package/dist/server/logging.d.ts.map +1 -0
  602. package/dist/server/logging.js +24 -0
  603. package/dist/server/logging.js.map +1 -0
  604. package/dist/server/operations/index.d.ts +3 -0
  605. package/dist/server/operations/index.d.ts.map +1 -0
  606. package/dist/server/operations/index.js +3 -0
  607. package/dist/server/operations/index.js.map +1 -0
  608. package/dist/server/operations/message-mutations.d.ts +16 -0
  609. package/dist/server/operations/message-mutations.d.ts.map +1 -0
  610. package/dist/server/operations/message-mutations.js +139 -0
  611. package/dist/server/operations/message-mutations.js.map +1 -0
  612. package/dist/server/operations/schedule-sync.d.ts +15 -0
  613. package/dist/server/operations/schedule-sync.d.ts.map +1 -0
  614. package/dist/server/operations/schedule-sync.js +44 -0
  615. package/dist/server/operations/schedule-sync.js.map +1 -0
  616. package/dist/server/operations/send-mail.d.ts +36 -0
  617. package/dist/server/operations/send-mail.d.ts.map +1 -0
  618. package/dist/server/operations/send-mail.js +691 -0
  619. package/dist/server/operations/send-mail.js.map +1 -0
  620. package/dist/server/operations/sync-mailbox.d.ts +29 -0
  621. package/dist/server/operations/sync-mailbox.d.ts.map +1 -0
  622. package/dist/server/operations/sync-mailbox.js +388 -0
  623. package/dist/server/operations/sync-mailbox.js.map +1 -0
  624. package/dist/server/outbound-attachments.d.ts +28 -0
  625. package/dist/server/outbound-attachments.d.ts.map +1 -0
  626. package/dist/server/outbound-attachments.js +91 -0
  627. package/dist/server/outbound-attachments.js.map +1 -0
  628. package/dist/server/plugin.d.ts +4 -0
  629. package/dist/server/plugin.d.ts.map +1 -0
  630. package/dist/server/plugin.js +16 -0
  631. package/dist/server/plugin.js.map +1 -0
  632. package/dist/server/providers/index.d.ts +4 -0
  633. package/dist/server/providers/index.d.ts.map +1 -0
  634. package/dist/server/providers/index.js +8 -0
  635. package/dist/server/providers/index.js.map +1 -0
  636. package/dist/server/providers/mail-builtins.d.ts +7 -0
  637. package/dist/server/providers/mail-builtins.d.ts.map +1 -0
  638. package/dist/server/providers/mail-builtins.js +17 -0
  639. package/dist/server/providers/mail-builtins.js.map +1 -0
  640. package/dist/server/providers/mail-core.d.ts +23 -0
  641. package/dist/server/providers/mail-core.d.ts.map +1 -0
  642. package/dist/server/providers/mail-core.js +150 -0
  643. package/dist/server/providers/mail-core.js.map +1 -0
  644. package/dist/server/public-types.d.ts +7 -0
  645. package/dist/server/public-types.d.ts.map +1 -0
  646. package/dist/server/public-types.js +2 -0
  647. package/dist/server/public-types.js.map +1 -0
  648. package/dist/server/realtime.d.ts +11 -0
  649. package/dist/server/realtime.d.ts.map +1 -0
  650. package/dist/server/realtime.js +20 -0
  651. package/dist/server/realtime.js.map +1 -0
  652. package/dist/server/registry.d.ts +10 -0
  653. package/dist/server/registry.d.ts.map +1 -0
  654. package/dist/server/registry.js +21 -0
  655. package/dist/server/registry.js.map +1 -0
  656. package/dist/server/routes/api.d.ts +4 -0
  657. package/dist/server/routes/api.d.ts.map +1 -0
  658. package/dist/server/routes/api.js +1025 -0
  659. package/dist/server/routes/api.js.map +1 -0
  660. package/dist/server/routes/index.d.ts +5 -0
  661. package/dist/server/routes/index.d.ts.map +1 -0
  662. package/dist/server/routes/index.js +10 -0
  663. package/dist/server/routes/index.js.map +1 -0
  664. package/dist/server/routes/oauth-callback.d.ts +5 -0
  665. package/dist/server/routes/oauth-callback.d.ts.map +1 -0
  666. package/dist/server/routes/oauth-callback.js +41 -0
  667. package/dist/server/routes/oauth-callback.js.map +1 -0
  668. package/dist/server/routes/push-webhook.d.ts +5 -0
  669. package/dist/server/routes/push-webhook.d.ts.map +1 -0
  670. package/dist/server/routes/push-webhook.js +95 -0
  671. package/dist/server/routes/push-webhook.js.map +1 -0
  672. package/dist/server/routes/schemas.d.ts +345 -0
  673. package/dist/server/routes/schemas.d.ts.map +1 -0
  674. package/dist/server/routes/schemas.js +649 -0
  675. package/dist/server/routes/schemas.js.map +1 -0
  676. package/dist/server/runtime/account-removals.d.ts +8 -0
  677. package/dist/server/runtime/account-removals.d.ts.map +1 -0
  678. package/dist/server/runtime/account-removals.js +84 -0
  679. package/dist/server/runtime/account-removals.js.map +1 -0
  680. package/dist/server/runtime/background-tasks.d.ts +8 -0
  681. package/dist/server/runtime/background-tasks.d.ts.map +1 -0
  682. package/dist/server/runtime/background-tasks.js +18 -0
  683. package/dist/server/runtime/background-tasks.js.map +1 -0
  684. package/dist/server/runtime/outbox-relay.d.ts +19 -0
  685. package/dist/server/runtime/outbox-relay.d.ts.map +1 -0
  686. package/dist/server/runtime/outbox-relay.js +41 -0
  687. package/dist/server/runtime/outbox-relay.js.map +1 -0
  688. package/dist/server/runtime/push-subscriptions.d.ts +15 -0
  689. package/dist/server/runtime/push-subscriptions.d.ts.map +1 -0
  690. package/dist/server/runtime/push-subscriptions.js +144 -0
  691. package/dist/server/runtime/push-subscriptions.js.map +1 -0
  692. package/dist/server/runtime.d.ts +67 -0
  693. package/dist/server/runtime.d.ts.map +1 -0
  694. package/dist/server/runtime.js +296 -0
  695. package/dist/server/runtime.js.map +1 -0
  696. package/dist/server/service.d.ts +75 -0
  697. package/dist/server/service.d.ts.map +1 -0
  698. package/dist/server/service.js +213 -0
  699. package/dist/server/service.js.map +1 -0
  700. package/dist/server/services/access.d.ts +10 -0
  701. package/dist/server/services/access.d.ts.map +1 -0
  702. package/dist/server/services/access.js +33 -0
  703. package/dist/server/services/access.js.map +1 -0
  704. package/dist/server/services/accounts.d.ts +10 -0
  705. package/dist/server/services/accounts.d.ts.map +1 -0
  706. package/dist/server/services/accounts.js +58 -0
  707. package/dist/server/services/accounts.js.map +1 -0
  708. package/dist/server/services/attachments.d.ts +12 -0
  709. package/dist/server/services/attachments.d.ts.map +1 -0
  710. package/dist/server/services/attachments.js +92 -0
  711. package/dist/server/services/attachments.js.map +1 -0
  712. package/dist/server/services/authorization.d.ts +15 -0
  713. package/dist/server/services/authorization.d.ts.map +1 -0
  714. package/dist/server/services/authorization.js +221 -0
  715. package/dist/server/services/authorization.js.map +1 -0
  716. package/dist/server/services/dependencies.d.ts +30 -0
  717. package/dist/server/services/dependencies.d.ts.map +1 -0
  718. package/dist/server/services/dependencies.js +2 -0
  719. package/dist/server/services/dependencies.js.map +1 -0
  720. package/dist/server/services/draft-content.d.ts +10 -0
  721. package/dist/server/services/draft-content.d.ts.map +1 -0
  722. package/dist/server/services/draft-content.js +81 -0
  723. package/dist/server/services/draft-content.js.map +1 -0
  724. package/dist/server/services/drafts.d.ts +12 -0
  725. package/dist/server/services/drafts.d.ts.map +1 -0
  726. package/dist/server/services/drafts.js +173 -0
  727. package/dist/server/services/drafts.js.map +1 -0
  728. package/dist/server/services/errors.d.ts +76 -0
  729. package/dist/server/services/errors.d.ts.map +1 -0
  730. package/dist/server/services/errors.js +131 -0
  731. package/dist/server/services/errors.js.map +1 -0
  732. package/dist/server/services/input.d.ts +7 -0
  733. package/dist/server/services/input.d.ts.map +1 -0
  734. package/dist/server/services/input.js +37 -0
  735. package/dist/server/services/input.js.map +1 -0
  736. package/dist/server/services/management.d.ts +17 -0
  737. package/dist/server/services/management.d.ts.map +1 -0
  738. package/dist/server/services/management.js +133 -0
  739. package/dist/server/services/management.js.map +1 -0
  740. package/dist/server/services/messages.d.ts +18 -0
  741. package/dist/server/services/messages.d.ts.map +1 -0
  742. package/dist/server/services/messages.js +77 -0
  743. package/dist/server/services/messages.js.map +1 -0
  744. package/dist/server/services/preferences.d.ts +21 -0
  745. package/dist/server/services/preferences.d.ts.map +1 -0
  746. package/dist/server/services/preferences.js +186 -0
  747. package/dist/server/services/preferences.js.map +1 -0
  748. package/dist/server/services/provider-lifecycle.d.ts +5 -0
  749. package/dist/server/services/provider-lifecycle.d.ts.map +1 -0
  750. package/dist/server/services/provider-lifecycle.js +46 -0
  751. package/dist/server/services/provider-lifecycle.js.map +1 -0
  752. package/dist/server/services/providers.d.ts +8 -0
  753. package/dist/server/services/providers.d.ts.map +1 -0
  754. package/dist/server/services/providers.js +58 -0
  755. package/dist/server/services/providers.js.map +1 -0
  756. package/dist/server/services/submissions.d.ts +14 -0
  757. package/dist/server/services/submissions.d.ts.map +1 -0
  758. package/dist/server/services/submissions.js +93 -0
  759. package/dist/server/services/submissions.js.map +1 -0
  760. package/dist/server/services/sync.d.ts +15 -0
  761. package/dist/server/services/sync.d.ts.map +1 -0
  762. package/dist/server/services/sync.js +74 -0
  763. package/dist/server/services/sync.js.map +1 -0
  764. package/dist/server/store/account-guard.d.ts +4 -0
  765. package/dist/server/store/account-guard.d.ts.map +1 -0
  766. package/dist/server/store/account-guard.js +13 -0
  767. package/dist/server/store/account-guard.js.map +1 -0
  768. package/dist/server/store/account-removals.d.ts +13 -0
  769. package/dist/server/store/account-removals.d.ts.map +1 -0
  770. package/dist/server/store/account-removals.js +170 -0
  771. package/dist/server/store/account-removals.js.map +1 -0
  772. package/dist/server/store/account-writes.d.ts +6 -0
  773. package/dist/server/store/account-writes.d.ts.map +1 -0
  774. package/dist/server/store/account-writes.js +137 -0
  775. package/dist/server/store/account-writes.js.map +1 -0
  776. package/dist/server/store/accounts.d.ts +16 -0
  777. package/dist/server/store/accounts.d.ts.map +1 -0
  778. package/dist/server/store/accounts.js +142 -0
  779. package/dist/server/store/accounts.js.map +1 -0
  780. package/dist/server/store/attachments.d.ts +13 -0
  781. package/dist/server/store/attachments.d.ts.map +1 -0
  782. package/dist/server/store/attachments.js +157 -0
  783. package/dist/server/store/attachments.js.map +1 -0
  784. package/dist/server/store/authorization.d.ts +10 -0
  785. package/dist/server/store/authorization.d.ts.map +1 -0
  786. package/dist/server/store/authorization.js +71 -0
  787. package/dist/server/store/authorization.js.map +1 -0
  788. package/dist/server/store/draft-states.d.ts +5 -0
  789. package/dist/server/store/draft-states.d.ts.map +1 -0
  790. package/dist/server/store/draft-states.js +96 -0
  791. package/dist/server/store/draft-states.js.map +1 -0
  792. package/dist/server/store/mappers.d.ts +22 -0
  793. package/dist/server/store/mappers.d.ts.map +1 -0
  794. package/dist/server/store/mappers.js +378 -0
  795. package/dist/server/store/mappers.js.map +1 -0
  796. package/dist/server/store/message-cursor.d.ts +8 -0
  797. package/dist/server/store/message-cursor.d.ts.map +1 -0
  798. package/dist/server/store/message-cursor.js +26 -0
  799. package/dist/server/store/message-cursor.js.map +1 -0
  800. package/dist/server/store/message-queries.d.ts +8 -0
  801. package/dist/server/store/message-queries.d.ts.map +1 -0
  802. package/dist/server/store/message-queries.js +116 -0
  803. package/dist/server/store/message-queries.js.map +1 -0
  804. package/dist/server/store/message-writes.d.ts +8 -0
  805. package/dist/server/store/message-writes.d.ts.map +1 -0
  806. package/dist/server/store/message-writes.js +180 -0
  807. package/dist/server/store/message-writes.js.map +1 -0
  808. package/dist/server/store/messages.d.ts +32 -0
  809. package/dist/server/store/messages.d.ts.map +1 -0
  810. package/dist/server/store/messages.js +564 -0
  811. package/dist/server/store/messages.js.map +1 -0
  812. package/dist/server/store/metadata.d.ts +22 -0
  813. package/dist/server/store/metadata.d.ts.map +1 -0
  814. package/dist/server/store/metadata.js +178 -0
  815. package/dist/server/store/metadata.js.map +1 -0
  816. package/dist/server/store/outbox.d.ts +11 -0
  817. package/dist/server/store/outbox.d.ts.map +1 -0
  818. package/dist/server/store/outbox.js +98 -0
  819. package/dist/server/store/outbox.js.map +1 -0
  820. package/dist/server/store/push.d.ts +22 -0
  821. package/dist/server/store/push.d.ts.map +1 -0
  822. package/dist/server/store/push.js +302 -0
  823. package/dist/server/store/push.js.map +1 -0
  824. package/dist/server/store/rows.d.ts +224 -0
  825. package/dist/server/store/rows.d.ts.map +1 -0
  826. package/dist/server/store/rows.js +2 -0
  827. package/dist/server/store/rows.js.map +1 -0
  828. package/dist/server/store/scheduled-drafts.d.ts +6 -0
  829. package/dist/server/store/scheduled-drafts.d.ts.map +1 -0
  830. package/dist/server/store/scheduled-drafts.js +38 -0
  831. package/dist/server/store/scheduled-drafts.js.map +1 -0
  832. package/dist/server/store/serialization.d.ts +6 -0
  833. package/dist/server/store/serialization.d.ts.map +1 -0
  834. package/dist/server/store/serialization.js +27 -0
  835. package/dist/server/store/serialization.js.map +1 -0
  836. package/dist/server/store/submissions.d.ts +23 -0
  837. package/dist/server/store/submissions.d.ts.map +1 -0
  838. package/dist/server/store/submissions.js +498 -0
  839. package/dist/server/store/submissions.js.map +1 -0
  840. package/dist/server/store/sync-writes.d.ts +5 -0
  841. package/dist/server/store/sync-writes.d.ts.map +1 -0
  842. package/dist/server/store/sync-writes.js +48 -0
  843. package/dist/server/store/sync-writes.js.map +1 -0
  844. package/dist/server/store/sync.d.ts +27 -0
  845. package/dist/server/store/sync.d.ts.map +1 -0
  846. package/dist/server/store/sync.js +508 -0
  847. package/dist/server/store/sync.js.map +1 -0
  848. package/dist/server/store/templates.d.ts +10 -0
  849. package/dist/server/store/templates.d.ts.map +1 -0
  850. package/dist/server/store/templates.js +70 -0
  851. package/dist/server/store/templates.js.map +1 -0
  852. package/dist/server/store.d.ts +128 -0
  853. package/dist/server/store.d.ts.map +1 -0
  854. package/dist/server/store.js +343 -0
  855. package/dist/server/store.js.map +1 -0
  856. package/dist/server/tokens.d.ts +13 -0
  857. package/dist/server/tokens.d.ts.map +1 -0
  858. package/dist/server/tokens.js +9 -0
  859. package/dist/server/tokens.js.map +1 -0
  860. package/dist/server/types.d.ts +6 -0
  861. package/dist/server/types.d.ts.map +1 -0
  862. package/dist/server/types.js +6 -0
  863. package/dist/server/types.js.map +1 -0
  864. package/dist/server/views.d.ts +6 -0
  865. package/dist/server/views.d.ts.map +1 -0
  866. package/dist/server/views.js +65 -0
  867. package/dist/server/views.js.map +1 -0
  868. package/dist/shared/inline-images.d.ts +12 -0
  869. package/dist/shared/inline-images.d.ts.map +1 -0
  870. package/dist/shared/inline-images.js +15 -0
  871. package/dist/shared/inline-images.js.map +1 -0
  872. package/dist/shared/mail-sync-date.d.ts +2 -0
  873. package/dist/shared/mail-sync-date.d.ts.map +1 -0
  874. package/dist/shared/mail-sync-date.js +10 -0
  875. package/dist/shared/mail-sync-date.js.map +1 -0
  876. package/dist/shared/mail.d.ts +667 -0
  877. package/dist/shared/mail.d.ts.map +1 -0
  878. package/dist/shared/mail.js +50 -0
  879. package/dist/shared/mail.js.map +1 -0
  880. package/dist/shared/realtime.d.ts +5 -0
  881. package/dist/shared/realtime.d.ts.map +1 -0
  882. package/dist/shared/realtime.js +2 -0
  883. package/dist/shared/realtime.js.map +1 -0
  884. package/package.json +126 -3
  885. package/skills/nocobase-app-plugin-mail/SKILL.md +118 -0
  886. package/skills/nocobase-app-plugin-mail/references/client-integration.md +107 -0
  887. package/skills/nocobase-app-plugin-mail/references/configuration-and-accounts.md +167 -0
  888. package/skills/nocobase-app-plugin-mail/references/http-api.md +131 -0
  889. package/skills/nocobase-app-plugin-mail/references/public-api.md +117 -0
  890. package/skills/nocobase-app-plugin-mail/references/sending-and-drafts.md +53 -0
  891. package/skills/nocobase-app-plugin-mail/references/synchronization-and-diagnostics.md +57 -0
@@ -0,0 +1,498 @@
1
+ import { closeDrafts } from './draft-states.js';
2
+ import { upsertMessages } from './message-writes.js';
3
+ import { assertDraftEditable } from './scheduled-drafts.js';
4
+ import { lockWritableAccount } from './account-guard.js';
5
+ import { validateLogPagination } from '../log-pagination.js';
6
+ import { randomUUID } from 'node:crypto';
7
+ import { toMailMessage, fromSubmissionRow } from './mappers.js';
8
+ import { jsonOrNull, parseJson } from './serialization.js';
9
+ import { mailFailedPrecondition, mailNotFound } from '../services/errors.js';
10
+ export class MailSubmissionsStore {
11
+ database;
12
+ accounts;
13
+ constructor(database, accounts) {
14
+ this.database = database;
15
+ this.accounts = accounts;
16
+ }
17
+ async getSubmissionByIdempotencyKey(accountId, idempotencyKey) {
18
+ const row = await this.database
19
+ .query()
20
+ .selectFrom('mailSubmissions')
21
+ .selectAll()
22
+ .where('accountId', '=', accountId)
23
+ .where('idempotencyKey', '=', idempotencyKey)
24
+ .executeTakeFirst();
25
+ return row ? fromSubmissionRow(row) : undefined;
26
+ }
27
+ async countSubmissions(userId, bulkOnly = false, groupByBatch = false) {
28
+ const accounts = await this.accounts.listAccounts(userId);
29
+ if (accounts.length === 0)
30
+ return 0;
31
+ let query = this.database
32
+ .query()
33
+ .selectFrom('mailSubmissions')
34
+ .select(({ fn }) => [fn.countAll().as('count')])
35
+ .where('accountId', 'in', accounts.map((account) => account.id));
36
+ if (groupByBatch)
37
+ query = query.where('idempotencyKey', 'like', 'bulk:%:0');
38
+ else if (bulkOnly)
39
+ query = query.where('idempotencyKey', 'like', 'bulk:%');
40
+ const row = await query.executeTakeFirst();
41
+ return Number(row?.count ?? 0);
42
+ }
43
+ async listSubmissions(userId, bulkOnly = false, offset = 0, groupByBatch = false, limit = groupByBatch ? 20 : 100) {
44
+ validateLogPagination(offset, limit);
45
+ const accounts = await this.accounts.listAccounts(userId);
46
+ if (accounts.length === 0)
47
+ return [];
48
+ let query = this.database
49
+ .query()
50
+ .selectFrom('mailSubmissions')
51
+ .selectAll()
52
+ .where('accountId', 'in', accounts.map((account) => account.id));
53
+ if (groupByBatch) {
54
+ // sendBulk persists recipient zero first, making it the stable batch anchor.
55
+ const anchors = await query
56
+ .where('idempotencyKey', 'like', 'bulk:%:0')
57
+ .orderBy('createdAt', 'desc')
58
+ .orderBy('id', 'desc')
59
+ .offset(offset)
60
+ .limit(limit)
61
+ .execute();
62
+ if (anchors.length === 0)
63
+ return [];
64
+ const rows = await query
65
+ .where((builder) => builder.or(anchors.map((anchor) => {
66
+ const prefix = anchor.idempotencyKey.slice(0, -1);
67
+ return builder.and([
68
+ builder('accountId', '=', anchor.accountId),
69
+ builder('idempotencyKey', 'in', Array.from({ length: 100 }, (_, index) => `${prefix}${index}`)),
70
+ ]);
71
+ })))
72
+ .orderBy('createdAt', 'asc')
73
+ .orderBy('id', 'asc')
74
+ .execute();
75
+ return anchors.flatMap((anchor) => {
76
+ const prefix = anchor.idempotencyKey.slice(0, -1);
77
+ return rows
78
+ .filter((row) => row.accountId === anchor.accountId &&
79
+ row.idempotencyKey.startsWith(prefix))
80
+ .map(fromSubmissionRow);
81
+ });
82
+ }
83
+ if (bulkOnly)
84
+ query = query.where('idempotencyKey', 'like', 'bulk:%');
85
+ const rows = await query
86
+ .orderBy('createdAt', 'desc')
87
+ .orderBy('id', 'desc')
88
+ .offset(offset)
89
+ .limit(limit)
90
+ .execute();
91
+ return rows.map(fromSubmissionRow);
92
+ }
93
+ async listAllSubmissions(offset, limit) {
94
+ validateLogPagination(offset, limit);
95
+ const [rows, count] = await Promise.all([
96
+ this.database
97
+ .query()
98
+ .selectFrom('mailSubmissions')
99
+ .selectAll()
100
+ .orderBy('createdAt', 'desc')
101
+ .orderBy('id', 'desc')
102
+ .offset(offset)
103
+ .limit(limit)
104
+ .execute(),
105
+ this.database
106
+ .query()
107
+ .selectFrom('mailSubmissions')
108
+ .select(({ fn }) => [fn.countAll().as('count')])
109
+ .executeTakeFirst(),
110
+ ]);
111
+ return {
112
+ items: rows.map(fromSubmissionRow),
113
+ total: Number(count?.count ?? 0),
114
+ };
115
+ }
116
+ async createSubmission(submission, idempotencyKey, requestFingerprint, actorId, input) {
117
+ const now = new Date().toISOString();
118
+ try {
119
+ await this.database.transaction(async ({ query }) => {
120
+ await lockWritableAccount(query, submission.accountId);
121
+ await query
122
+ .insertInto('mailSubmissions')
123
+ .values({
124
+ ...submission,
125
+ idempotencyKey,
126
+ requestFingerprint,
127
+ requestedBy: actorId,
128
+ composeInput: input ? JSON.stringify(input) : null,
129
+ error: jsonOrNull(submission.error),
130
+ createdAt: now,
131
+ updatedAt: now,
132
+ })
133
+ .execute();
134
+ if (input)
135
+ await closeDrafts(query, submission.accountId, input.draftMessageId, input.draftKey);
136
+ });
137
+ }
138
+ catch (error) {
139
+ const existing = await this.getSubmissionByIdempotencyKey(submission.accountId, idempotencyKey);
140
+ if (existing)
141
+ return existing;
142
+ throw error;
143
+ }
144
+ return {
145
+ ...submission,
146
+ requestFingerprint,
147
+ createdAt: now,
148
+ updatedAt: now,
149
+ };
150
+ }
151
+ async createScheduledSubmission(submission, idempotencyKey, requestFingerprint, actorId, input, draftSnapshot) {
152
+ const scheduledAt = submission.scheduledAt;
153
+ if (!scheduledAt)
154
+ throw new Error('Scheduled submission time is required.');
155
+ const now = new Date().toISOString();
156
+ try {
157
+ await this.database.transaction(async (connection) => {
158
+ await lockWritableAccount(connection.query, submission.accountId);
159
+ let deliveryInput = input;
160
+ if (draftSnapshot) {
161
+ if (input.draftMessageId) {
162
+ await assertDraftEditable(connection.query, submission.accountId, input.draftMessageId);
163
+ const existingDraft = await connection.query
164
+ .selectFrom('mailMessages')
165
+ .selectAll()
166
+ .where('id', '=', input.draftMessageId)
167
+ .where('accountId', '=', submission.accountId)
168
+ .where('draft', '=', true)
169
+ .executeTakeFirst();
170
+ if (!existingDraft)
171
+ throw new Error('Mail draft was not found.');
172
+ await connection.query
173
+ .updateTable('mailMessages')
174
+ .set({ providerMessageId: draftSnapshot.providerMessageId })
175
+ .where('id', '=', existingDraft.id)
176
+ .execute();
177
+ }
178
+ await upsertMessages(connection.query, submission.accountId, [
179
+ draftSnapshot,
180
+ ]);
181
+ const savedDraft = await connection.query
182
+ .selectFrom('mailMessages')
183
+ .selectAll()
184
+ .where('accountId', '=', submission.accountId)
185
+ .where('providerMessageId', '=', draftSnapshot.providerMessageId)
186
+ .executeTakeFirst();
187
+ if (!savedDraft)
188
+ throw new Error('Scheduled draft was not saved.');
189
+ await connection.query
190
+ .updateTable('mailMessages')
191
+ .set({ scheduledSubmissionId: submission.id })
192
+ .where('id', '=', savedDraft.id)
193
+ .execute();
194
+ deliveryInput = {
195
+ ...input,
196
+ draftMessageId: savedDraft.id,
197
+ deliverySnapshot: input.deliverySnapshot ?? toMailMessage(savedDraft, [], []),
198
+ retainedAttachmentIds: [],
199
+ forwardBodyIncluded: true,
200
+ replyBodyIncluded: true,
201
+ };
202
+ }
203
+ await connection.query
204
+ .insertInto('mailSubmissions')
205
+ .values({
206
+ ...submission,
207
+ idempotencyKey,
208
+ requestFingerprint,
209
+ scheduledAt,
210
+ requestedBy: actorId,
211
+ composeInput: JSON.stringify(deliveryInput),
212
+ error: jsonOrNull(submission.error),
213
+ createdAt: now,
214
+ updatedAt: now,
215
+ })
216
+ .execute();
217
+ await connection.query
218
+ .insertInto('mailOutbox')
219
+ .values({
220
+ id: randomUUID(),
221
+ type: 'sendScheduledMail',
222
+ aggregateId: submission.id,
223
+ deduplicationKey: `scheduled-send:${submission.id}`,
224
+ payload: JSON.stringify({
225
+ version: 1,
226
+ submissionId: submission.id,
227
+ }),
228
+ status: 'pending',
229
+ attempts: 0,
230
+ availableAt: scheduledAt,
231
+ createdAt: now,
232
+ })
233
+ .execute();
234
+ });
235
+ }
236
+ catch (error) {
237
+ const existing = await this.getSubmissionByIdempotencyKey(submission.accountId, idempotencyKey);
238
+ if (existing)
239
+ return existing;
240
+ throw error;
241
+ }
242
+ return {
243
+ ...submission,
244
+ requestFingerprint,
245
+ createdAt: now,
246
+ updatedAt: now,
247
+ };
248
+ }
249
+ async getScheduledSubmission(submissionId) {
250
+ const row = await this.database
251
+ .query()
252
+ .selectFrom('mailSubmissions')
253
+ .selectAll()
254
+ .where('id', '=', submissionId)
255
+ .executeTakeFirst();
256
+ if (!row?.requestedBy || !row.composeInput)
257
+ return undefined;
258
+ return {
259
+ actorId: row.requestedBy,
260
+ input: parseJson(row.composeInput, 'scheduled input'),
261
+ submission: fromSubmissionRow(row),
262
+ };
263
+ }
264
+ async clearScheduledSubmission(submissionId) {
265
+ await this.database
266
+ .query()
267
+ .updateTable('mailSubmissions')
268
+ .set({ requestedBy: null, composeInput: null })
269
+ .where('id', '=', submissionId)
270
+ .execute();
271
+ }
272
+ async failScheduledSubmission(submissionId, error) {
273
+ const existing = await this.getScheduledSubmission(submissionId);
274
+ if (!existing)
275
+ return;
276
+ await this.database.transaction(async ({ query }) => {
277
+ await lockWritableAccount(query, existing.submission.accountId);
278
+ const result = await query
279
+ .updateTable('mailSubmissions')
280
+ .set({
281
+ status: 'failed',
282
+ error: JSON.stringify(error),
283
+ updatedAt: new Date().toISOString(),
284
+ })
285
+ .where('id', '=', submissionId)
286
+ .where('status', '=', 'pending')
287
+ .execute();
288
+ if (result.updatedCount === 1)
289
+ await closeDrafts(query, existing.input.accountId, existing.input.draftMessageId ??
290
+ existing.input.sourceDraft?.messageId, existing.input.draftKey);
291
+ });
292
+ }
293
+ async transitionSubmission(submissionId, action) {
294
+ const now = new Date().toISOString();
295
+ return this.database.transaction(async (connection) => {
296
+ const current = await connection.query
297
+ .selectFrom('mailSubmissions')
298
+ .select('accountId')
299
+ .where('id', '=', submissionId)
300
+ .executeTakeFirst();
301
+ if (!current)
302
+ throw mailNotFound('MAIL_SUBMISSION_NOT_FOUND', 'Mail submission was not found.', 'submissionId');
303
+ await lockWritableAccount(connection.query, current.accountId);
304
+ const result = await connection.query
305
+ .updateTable('mailSubmissions')
306
+ .set({
307
+ status: action === 'retry' ? 'pending' : 'cancelled',
308
+ error: null,
309
+ updatedAt: now,
310
+ })
311
+ .where('id', '=', submissionId)
312
+ .where('status', 'in', action === 'retry' ? ['failed'] : ['pending', 'failed'])
313
+ .where('composeInput', 'is not', null)
314
+ .execute();
315
+ if (result.updatedCount !== 1) {
316
+ throw mailFailedPrecondition('MAIL_SUBMISSION_STATE_INVALID', 'The mail submission cannot perform this action in its current state.');
317
+ }
318
+ if (action === 'cancel') {
319
+ await connection.query
320
+ .updateTable('mailMessages')
321
+ .set({ scheduledSubmissionId: null })
322
+ .where('scheduledSubmissionId', '=', submissionId)
323
+ .execute();
324
+ }
325
+ if (action === 'retry') {
326
+ await connection.query
327
+ .insertInto('mailOutbox')
328
+ .values({
329
+ id: randomUUID(),
330
+ type: 'sendScheduledMail',
331
+ aggregateId: submissionId,
332
+ deduplicationKey: `retry-send:${submissionId}:${randomUUID()}`,
333
+ payload: JSON.stringify({ version: 1, submissionId }),
334
+ status: 'pending',
335
+ attempts: 0,
336
+ availableAt: now,
337
+ createdAt: now,
338
+ })
339
+ .execute();
340
+ }
341
+ const row = await connection.query
342
+ .selectFrom('mailSubmissions')
343
+ .selectAll()
344
+ .where('id', '=', submissionId)
345
+ .executeTakeFirst();
346
+ if (!row)
347
+ throw new Error('Mail submission was not found.');
348
+ return fromSubmissionRow(row);
349
+ });
350
+ }
351
+ async claimSubmission(submissionId, leaseToken, leaseExpiresAt) {
352
+ return this.database.transaction(async ({ query }) => {
353
+ const submission = await query
354
+ .selectFrom('mailSubmissions')
355
+ .select('accountId')
356
+ .where('id', '=', submissionId)
357
+ .executeTakeFirst();
358
+ if (!submission)
359
+ return false;
360
+ const writable = await query
361
+ .updateTable('mailAccounts')
362
+ .set({ id: submission.accountId })
363
+ .where('id', '=', submission.accountId)
364
+ .where('status', '=', 'active')
365
+ .execute();
366
+ if (writable.updatedCount !== 1)
367
+ return false;
368
+ const result = await query
369
+ .updateTable('mailSubmissions')
370
+ .set({
371
+ status: 'submitting',
372
+ leaseToken,
373
+ leaseExpiresAt,
374
+ updatedAt: new Date().toISOString(),
375
+ })
376
+ .where('id', '=', submissionId)
377
+ .where('status', '=', 'pending')
378
+ .execute();
379
+ return result.updatedCount === 1;
380
+ });
381
+ }
382
+ async recoverExpiredSubmissions(now) {
383
+ const expired = await this.database
384
+ .query()
385
+ .selectFrom('mailSubmissions')
386
+ .selectAll()
387
+ .where('status', '=', 'submitting')
388
+ .where('leaseExpiresAt', '<=', now)
389
+ .execute();
390
+ let count = 0;
391
+ for (const row of expired) {
392
+ await this.database.transaction(async ({ query }) => {
393
+ await lockWritableAccount(query, row.accountId);
394
+ const result = await query
395
+ .updateTable('mailSubmissions')
396
+ .set({
397
+ status: 'unknown',
398
+ error: JSON.stringify({
399
+ code: 'MAIL_SEND_RESULT_UNKNOWN',
400
+ message: 'The Provider result is unknown after sender interruption.',
401
+ category: 'unknown',
402
+ retryable: false,
403
+ }),
404
+ leaseExpiresAt: null,
405
+ leaseToken: null,
406
+ updatedAt: now,
407
+ })
408
+ .where('id', '=', row.id)
409
+ .where('status', '=', 'submitting')
410
+ .where('leaseExpiresAt', '<=', now)
411
+ .execute();
412
+ if (result.updatedCount !== 1)
413
+ return;
414
+ count++;
415
+ if (row.composeInput) {
416
+ const input = parseJson(row.composeInput, 'outgoing content');
417
+ await closeDrafts(query, row.accountId, input.draftMessageId ?? input.sourceDraft?.messageId, input.draftKey);
418
+ }
419
+ });
420
+ }
421
+ return count;
422
+ }
423
+ async finishSubmission(submission, leaseToken) {
424
+ const account = await this.accounts.getAccount(submission.accountId);
425
+ if (!account || account.status === 'removing')
426
+ return submission;
427
+ const writable = await this.database.transaction(async (connection) => {
428
+ const writable = await connection.query
429
+ .updateTable('mailAccounts')
430
+ .set({ id: submission.accountId })
431
+ .where('id', '=', submission.accountId)
432
+ .where('status', '!=', 'removing')
433
+ .execute();
434
+ if (writable.updatedCount !== 1)
435
+ return false;
436
+ const updated = await connection.query
437
+ .updateTable('mailSubmissions')
438
+ .set({
439
+ status: submission.status,
440
+ providerMessageId: submission.providerMessageId ?? null,
441
+ error: jsonOrNull(submission.error),
442
+ leaseToken: null,
443
+ leaseExpiresAt: null,
444
+ updatedAt: new Date().toISOString(),
445
+ })
446
+ .where('id', '=', submission.id)
447
+ .where('status', '=', 'submitting')
448
+ .where('leaseToken', '=', leaseToken)
449
+ .execute();
450
+ if (updated.updatedCount === 1 &&
451
+ ['accepted', 'failed', 'unknown'].includes(submission.status)) {
452
+ const stored = await connection.query
453
+ .selectFrom('mailSubmissions')
454
+ .select('composeInput')
455
+ .where('id', '=', submission.id)
456
+ .executeTakeFirst();
457
+ if (stored?.composeInput) {
458
+ const input = parseJson(stored.composeInput, 'outgoing content');
459
+ await closeDrafts(connection.query, submission.accountId, input.draftMessageId ?? input.sourceDraft?.messageId, input.draftKey);
460
+ }
461
+ }
462
+ if (updated.updatedCount === 1 && submission.status === 'accepted') {
463
+ // Persist refresh requests with acceptance so a restart cannot lose them.
464
+ const now = Date.now();
465
+ await connection.query
466
+ .insertInto('mailOutbox')
467
+ .values([0, 5_000, 30_000].map((delay) => ({
468
+ id: randomUUID(),
469
+ type: 'requestMailboxSync',
470
+ aggregateId: submission.id,
471
+ deduplicationKey: `sent-sync:${submission.id}:${delay}`,
472
+ payload: JSON.stringify({
473
+ version: 1,
474
+ accountId: submission.accountId,
475
+ }),
476
+ status: 'pending',
477
+ attempts: 0,
478
+ availableAt: new Date(now + delay).toISOString(),
479
+ createdAt: new Date(now).toISOString(),
480
+ })))
481
+ .execute();
482
+ }
483
+ return true;
484
+ });
485
+ if (!writable)
486
+ return submission;
487
+ const row = await this.database
488
+ .query()
489
+ .selectFrom('mailSubmissions')
490
+ .selectAll()
491
+ .where('id', '=', submission.id)
492
+ .executeTakeFirst();
493
+ if (!row)
494
+ return submission;
495
+ return fromSubmissionRow(row);
496
+ }
497
+ }
498
+ //# sourceMappingURL=submissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submissions.js","sourceRoot":"","sources":["../../../server/store/submissions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { type QueryAdapter } from '@nocobase/db';
2
+ import { type MailSyncCursor, type MailSyncRun } from '../../shared/mail.js';
3
+ export declare function upsertSyncState(query: QueryAdapter, accountId: string, cursor: MailSyncCursor): Promise<void>;
4
+ export declare function insertOutbox(query: QueryAdapter, run: Pick<MailSyncRun, 'id' | 'phase' | 'revision'>, sequence: number, now: string, retryId?: string): Promise<void>;
5
+ //# sourceMappingURL=sync-writes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-writes.d.ts","sourceRoot":"","sources":["../../../server/store/sync-writes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAG7E,wBAAsB,eAAe,CACnC,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC,CAuBf;AAED,wBAAsB,YAAY,CAChC,KAAK,EAAE,YAAY,EACnB,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,OAAO,GAAG,UAAU,CAAC,EACnD,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAoBf"}
@@ -0,0 +1,48 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ export async function upsertSyncState(query, accountId, cursor) {
3
+ const existing = await query
4
+ .selectFrom('mailSyncStates')
5
+ .select('accountId')
6
+ .where('accountId', '=', accountId)
7
+ .executeTakeFirst();
8
+ const row = {
9
+ accountId,
10
+ cursor: JSON.stringify(cursor),
11
+ lastSyncedAt: new Date().toISOString(),
12
+ };
13
+ if (existing) {
14
+ await query
15
+ .updateTable('mailSyncStates')
16
+ .set(row)
17
+ .where('accountId', '=', accountId)
18
+ .execute();
19
+ }
20
+ else {
21
+ await query
22
+ .insertInto('mailSyncStates')
23
+ .values(row)
24
+ .execute();
25
+ }
26
+ }
27
+ export async function insertOutbox(query, run, sequence, now, retryId) {
28
+ await query
29
+ .insertInto('mailOutbox')
30
+ .values({
31
+ id: randomUUID(),
32
+ type: 'syncMailbox',
33
+ aggregateId: run.id,
34
+ deduplicationKey: `sync:${run.id}:${sequence}:${run.phase}${retryId ? `:retry:${retryId}` : ''}`,
35
+ payload: JSON.stringify({
36
+ version: 1,
37
+ syncRunId: run.id,
38
+ expectedRevision: run.revision,
39
+ expectedPhase: run.phase,
40
+ }),
41
+ status: 'pending',
42
+ attempts: 0,
43
+ availableAt: now,
44
+ createdAt: now,
45
+ })
46
+ .execute();
47
+ }
48
+ //# sourceMappingURL=sync-writes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-writes.js","sourceRoot":"","sources":["../../../server/store/sync-writes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAmB,EACnB,SAAiB,EACjB,MAAsB;IAEtB,MAAM,QAAQ,GAAG,MAAM,KAAK;SACzB,UAAU,CAAe,gBAAgB,CAAC;SAC1C,MAAM,CAAC,WAAW,CAAC;SACnB,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,SAAS,CAAC;SAClC,gBAAgB,EAAE,CAAC;IACtB,MAAM,GAAG,GAAiB;QACxB,SAAS;QACT,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAC9B,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACvC,CAAC;IACF,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,KAAK;aACR,WAAW,CAAe,gBAAgB,CAAC;aAC3C,GAAG,CAAC,GAAG,CAAC;aACR,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,SAAS,CAAC;aAClC,OAAO,EAAE,CAAC;IACf,CAAC;SAAM,CAAC;QACN,MAAM,KAAK;aACR,UAAU,CAAe,gBAAgB,CAAC;aAC1C,MAAM,CAAC,GAAG,CAAC;aACX,OAAO,EAAE,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAmB,EACnB,GAAmD,EACnD,QAAgB,EAChB,GAAW,EACX,OAAgB;IAEhB,MAAM,KAAK;SACR,UAAU,CAAY,YAAY,CAAC;SACnC,MAAM,CAAC;QACN,EAAE,EAAE,UAAU,EAAE;QAChB,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,GAAG,CAAC,EAAE;QACnB,gBAAgB,EAAE,QAAQ,GAAG,CAAC,EAAE,IAAI,QAAQ,IAAI,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;QAChG,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;YACtB,OAAO,EAAE,CAAC;YACV,SAAS,EAAE,GAAG,CAAC,EAAE;YACjB,gBAAgB,EAAE,GAAG,CAAC,QAAQ;YAC9B,aAAa,EAAE,GAAG,CAAC,KAAK;SACzB,CAAC;QACF,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,CAAC;QACX,WAAW,EAAE,GAAG;QAChB,SAAS,EAAE,GAAG;KACf,CAAC;SACD,OAAO,EAAE,CAAC;AACf,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { type DatabaseManager } from '@nocobase/db';
2
+ import { type MailOffsetPage, type MailProviderError, type MailSyncCursor, type MailSyncRun } from '../../shared/mail.js';
3
+ import { type MailCreateSyncRunInput, type MailStore, type MailSyncBatch, type MailSyncStepCommit } from '../contracts/persistence.js';
4
+ export declare class MailSyncStore {
5
+ private readonly database;
6
+ private readonly accounts;
7
+ constructor(database: DatabaseManager, accounts: Pick<MailStore, 'getAccount' | 'listAccounts'>);
8
+ commitSyncBatch(batch: MailSyncBatch): Promise<void>;
9
+ getSyncCursor(accountId: string): Promise<MailSyncCursor | undefined>;
10
+ getLastSyncedAt(accountId: string): Promise<string | undefined>;
11
+ clearSyncCursor(accountId: string): Promise<void>;
12
+ createSyncRun(input: MailCreateSyncRunInput): Promise<MailSyncRun>;
13
+ findActiveSyncRun(accountId: string): Promise<MailSyncRun | undefined>;
14
+ getSyncRun(syncRunId: string): Promise<MailSyncRun | undefined>;
15
+ countSyncRuns(userId: string): Promise<number>;
16
+ listSyncRuns(userId: string, offset?: number, limit?: number): Promise<readonly MailSyncRun[]>;
17
+ listAllSyncRuns(offset: number, limit: number): Promise<MailOffsetPage<MailSyncRun>>;
18
+ /** Recreate lost queue deliveries from durable checkpoints, fenced by revision and lease. */
19
+ recoverSyncRuns(now: string): Promise<number>;
20
+ cancelSyncRun(syncRunId: string): Promise<MailSyncRun | undefined>;
21
+ claimSyncRun(syncRunId: string, expectedRevision: number, expectedPhase: MailSyncRun['phase'], leaseToken: string, leaseExpiresAt: string): Promise<MailSyncRun | undefined>;
22
+ renewSyncRunLease(syncRunId: string, leaseToken: string, leaseExpiresAt: string): Promise<boolean>;
23
+ commitSyncStep(input: MailSyncStepCommit): Promise<MailSyncRun>;
24
+ failSyncRun(run: MailSyncRun, error: MailProviderError): Promise<MailSyncRun>;
25
+ releaseSyncRun(run: MailSyncRun, error: MailProviderError, availableAt: string): Promise<MailSyncRun>;
26
+ }
27
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../server/store/sync.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAC;AAoBrC,qBAAa,aAAa;IAEtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBADR,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,YAAY,GAAG,cAAc,CAAC;IAG9D,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBpD,aAAa,CACxB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAYzB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAU/D,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQjD,aAAa,CACxB,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAAC,WAAW,CAAC;IA6CV,iBAAiB,CAC5B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAYtB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAU/D,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkB9C,YAAY,CACvB,MAAM,EAAE,MAAM,EACd,MAAM,SAAI,EACV,KAAK,SAAM,GACV,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC;IAqBrB,eAAe,CAC1B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAwBvC,6FAA6F;IAChF,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAwF7C,aAAa,CACxB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAyBtB,YAAY,CACvB,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,MAAM,EACxB,aAAa,EAAE,WAAW,CAAC,OAAO,CAAC,EACnC,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAoBtB,iBAAiB,CAC5B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,OAAO,CAAC;IAYN,cAAc,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC;IA2N/D,WAAW,CACtB,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,WAAW,CAAC;IAqBV,cAAc,CACzB,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,iBAAiB,EACxB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,WAAW,CAAC;CAiCxB"}