@rapidmx/web-client 0.20.0 → 0.22.0

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 (906) hide show
  1. package/README.md +415 -381
  2. package/apps/admin/_layout.tsx +2 -2
  3. package/apps/admin/audit-log/index.tsx +4 -4
  4. package/apps/admin/branding/index.tsx +39 -39
  5. package/apps/admin/data-requests/index.tsx +482 -482
  6. package/apps/admin/distribution-lists/[uid].tsx +3 -3
  7. package/apps/admin/distribution-lists/index.tsx +4 -4
  8. package/apps/admin/distribution-lists/new/index.tsx +5 -5
  9. package/apps/admin/domains/[uid].tsx +166 -166
  10. package/apps/admin/domains/index.tsx +4 -4
  11. package/apps/admin/domains/new/index.tsx +5 -5
  12. package/apps/admin/encryption-policy/index.tsx +1 -1
  13. package/apps/admin/escrow-scopes/[uid].tsx +350 -350
  14. package/apps/admin/escrow-scopes/index.tsx +4 -4
  15. package/apps/admin/escrow-scopes/new/index.tsx +5 -5
  16. package/apps/admin/index.tsx +129 -129
  17. package/apps/admin/ingest-queue/index.tsx +4 -4
  18. package/apps/admin/mailbox-policy/index.tsx +1 -1
  19. package/apps/admin/mailboxes/[uid].tsx +271 -271
  20. package/apps/admin/mailboxes/new/index.tsx +30 -30
  21. package/apps/admin/plugins/index.tsx +15 -15
  22. package/apps/admin/quarantine/index.tsx +5 -5
  23. package/apps/admin/retention-policy/index.tsx +39 -39
  24. package/apps/admin/signing-certificates/index.tsx +343 -343
  25. package/apps/admin/transport-rules/[uid].tsx +5 -5
  26. package/apps/admin/transport-rules/_transportRuleConfig.tsx +3 -3
  27. package/apps/admin/transport-rules/index.tsx +4 -4
  28. package/apps/admin/transport-rules/new/index.tsx +5 -5
  29. package/apps/escrow/_layout.tsx +1 -1
  30. package/apps/escrow/audit-log/index.tsx +196 -196
  31. package/apps/escrow/index.tsx +4 -4
  32. package/apps/escrow/matters/[uid].tsx +621 -621
  33. package/apps/escrow/matters/new/index.tsx +6 -6
  34. package/apps/shared/appearance/AppearanceForm.tsx +3 -3
  35. package/apps/shared/appearance/AppearanceHead.tsx +1 -1
  36. package/apps/shared/appearance/AppearanceProvider.tsx +3 -3
  37. package/apps/shared/appearance/appearanceCache.ts +1 -1
  38. package/apps/shared/appearance/appearanceContext.ts +1 -1
  39. package/apps/shared/appearance/theme.ts +1 -1
  40. package/apps/shared/auth/adminAccess.ts +99 -99
  41. package/apps/shared/calendar/bookingPlugin.ts +1 -1
  42. package/apps/shared/calendar/calendarLiveUpdates.ts +1 -1
  43. package/apps/shared/calendar/calendarReminders.ts +1 -1
  44. package/apps/shared/calendar/useCalendarReminders.ts +1 -1
  45. package/apps/shared/components/admin/diagnostics/DiagnosticsManager.tsx +1 -1
  46. package/apps/shared/components/admin/diagnostics/InstalledPlugins.tsx +2 -2
  47. package/apps/shared/components/admin/diagnostics/LogsPanel.tsx +2 -2
  48. package/apps/shared/components/admin/diagnostics/PackagesTable.tsx +1 -1
  49. package/apps/shared/components/admin/diagnostics/RuntimePanel.tsx +1 -1
  50. package/apps/shared/components/admin/diagnostics/SystemPanel.tsx +2 -2
  51. package/apps/shared/components/admin/diagnostics/VersionsPanel.tsx +1 -1
  52. package/apps/shared/components/admin/diagnostics/diagnosticsApi.ts +1 -1
  53. package/apps/shared/components/admin/diagnostics/format.ts +1 -1
  54. package/apps/shared/components/admin/diagnostics/logClient.ts +1 -1
  55. package/apps/shared/components/admin/distributionLists/MemberListCard.tsx +4 -4
  56. package/apps/shared/components/admin/elevation.ts +1 -1
  57. package/apps/shared/components/admin/escrowScopes/EscrowScopeKeyAndHoldersFields.tsx +3 -3
  58. package/apps/shared/components/admin/layout/AdminShell.tsx +384 -384
  59. package/apps/shared/components/admin/mailboxes/EraseLeftoverDataDialog.tsx +238 -238
  60. package/apps/shared/components/admin/mailboxes/EscrowScopeCard.tsx +154 -152
  61. package/apps/shared/components/admin/mailboxes/LeftoverMailboxesSection.tsx +194 -194
  62. package/apps/shared/components/admin/mailboxes/MailboxTable.tsx +1 -1
  63. package/apps/shared/components/admin/mailboxes/ResourceSettingsCard.tsx +19 -14
  64. package/apps/shared/components/admin/mailboxes/ShareAccessCard.tsx +5 -5
  65. package/apps/shared/components/admin/settings/BrandingForm.tsx +423 -423
  66. package/apps/shared/components/admin/settings/DomainDnsSetup.tsx +5 -5
  67. package/apps/shared/components/admin/settings/EncryptionPolicyForm.tsx +119 -119
  68. package/apps/shared/components/admin/settings/LoadedSettingsForm.tsx +2 -2
  69. package/apps/shared/components/admin/settings/MailboxCreateForm.tsx +32 -27
  70. package/apps/shared/components/admin/settings/MailboxPolicyForm.tsx +198 -198
  71. package/apps/shared/components/admin/settings/PluginsManager.tsx +2093 -2093
  72. package/apps/shared/components/admin/settings/RetentionPolicyForm.tsx +182 -182
  73. package/apps/shared/components/admin/setup/EscrowSetupStep.tsx +288 -288
  74. package/apps/shared/components/admin/setup/SetupWizard.tsx +450 -446
  75. package/apps/shared/components/admin/signOut.ts +1 -1
  76. package/apps/shared/components/admin/usePagedList.tsx +129 -129
  77. package/apps/shared/components/calendar/AppointmentQuickForm.tsx +3 -3
  78. package/apps/shared/components/calendar/CalendarListSidebar.tsx +3 -3
  79. package/apps/shared/components/calendar/DescriptionEditor.tsx +1 -1
  80. package/apps/shared/components/calendar/EventDescriptionView.tsx +1 -1
  81. package/apps/shared/components/calendar/EventDetails.tsx +16 -14
  82. package/apps/shared/components/calendar/EventEditor.tsx +54 -39
  83. package/apps/shared/components/calendar/EventExpandedForm.tsx +3 -3
  84. package/apps/shared/components/calendar/EventFormParts.tsx +2 -2
  85. package/apps/shared/components/calendar/EventModal.tsx +206 -206
  86. package/apps/shared/components/calendar/EventQuickForm.tsx +3 -3
  87. package/apps/shared/components/calendar/EventShell.tsx +1 -1
  88. package/apps/shared/components/calendar/FindATime.tsx +6 -4
  89. package/apps/shared/components/calendar/GuestInput.tsx +2 -2
  90. package/apps/shared/components/calendar/MonthView.tsx +185 -185
  91. package/apps/shared/components/calendar/QuickCreateFaces.tsx +1 -1
  92. package/apps/shared/components/calendar/QuickFaceFrame.tsx +1 -1
  93. package/apps/shared/components/calendar/RecurrenceEditor.tsx +227 -227
  94. package/apps/shared/components/calendar/RequestChangeForm.tsx +8 -6
  95. package/apps/shared/components/calendar/ResourcePicker.tsx +7 -5
  96. package/apps/shared/components/calendar/SplitDayView.tsx +144 -144
  97. package/apps/shared/components/calendar/TaskQuickForm.tsx +23 -18
  98. package/apps/shared/components/calendar/TimeGridView.tsx +246 -246
  99. package/apps/shared/components/calendar/allDay.ts +124 -124
  100. package/apps/shared/components/calendar/eventDialogFields.ts +3 -3
  101. package/apps/shared/components/calendar/eventForm.ts +3 -3
  102. package/apps/shared/components/calendar/eventFormat.ts +3 -3
  103. package/apps/shared/components/calendar/findTimeGrid.ts +2 -2
  104. package/apps/shared/components/calendar/layout/CalendarShell.tsx +11 -9
  105. package/apps/shared/components/contacts/ContactDetailPane.tsx +4 -4
  106. package/apps/shared/components/contacts/ContactForm.tsx +393 -383
  107. package/apps/shared/components/contacts/ContactsSidebar.tsx +7 -5
  108. package/apps/shared/components/contacts/ContactsToolbar.tsx +103 -103
  109. package/apps/shared/components/contacts/KeyChangeReview.tsx +5 -5
  110. package/apps/shared/components/contacts/contactKeys.ts +3 -3
  111. package/apps/shared/components/contacts/layout/ContactsShell.tsx +9 -7
  112. package/apps/shared/components/escrow/layout/EscrowShell.tsx +155 -155
  113. package/apps/shared/components/forms/StringListField.tsx +1 -1
  114. package/apps/shared/components/layout/AppShell.tsx +465 -461
  115. package/apps/shared/components/layout/BrandingChrome.tsx +1 -1
  116. package/apps/shared/components/layout/KeyEnrollmentGate.tsx +398 -398
  117. package/apps/shared/components/layout/MailboxProvisioning.tsx +170 -168
  118. package/apps/shared/components/layout/RecoveryCodeUnlock.tsx +9 -9
  119. package/apps/shared/components/layout/ResponsiveToolbar.tsx +315 -315
  120. package/apps/shared/components/layout/ThemeSwitch.tsx +84 -84
  121. package/apps/shared/components/layout/UnlockPromptProvider.tsx +6 -6
  122. package/apps/shared/components/layout/UserMenu.tsx +441 -439
  123. package/apps/shared/components/mail/ConversationList.tsx +334 -332
  124. package/apps/shared/components/mail/ConversationThreadPane.tsx +624 -613
  125. package/apps/shared/components/mail/InviteCard.tsx +11 -9
  126. package/apps/shared/components/mail/LazyReadingPane.tsx +2 -2
  127. package/apps/shared/components/mail/MailAddress.tsx +1 -1
  128. package/apps/shared/components/mail/MailListToolbar.tsx +2 -2
  129. package/apps/shared/components/mail/MailSelectionBar.tsx +240 -240
  130. package/apps/shared/components/mail/MenuButton.tsx +404 -404
  131. package/apps/shared/components/mail/MessageDetailPane.tsx +1759 -1757
  132. package/apps/shared/components/mail/MoveToFolderDialog.tsx +8 -6
  133. package/apps/shared/components/mail/OutboxRowStatus.tsx +1 -1
  134. package/apps/shared/components/mail/PermanentDeleteDialog.tsx +2 -2
  135. package/apps/shared/components/mail/compose/ComposeContext.tsx +323 -312
  136. package/apps/shared/components/mail/compose/ComposeToolbar.tsx +422 -422
  137. package/apps/shared/components/mail/compose/ComposeWindow.tsx +1709 -1681
  138. package/apps/shared/components/mail/compose/ComposeWindowPlaceholder.tsx +4 -4
  139. package/apps/shared/components/mail/compose/EmojiPicker.tsx +2 -2
  140. package/apps/shared/components/mail/compose/GifPicker.tsx +3 -3
  141. package/apps/shared/components/mail/compose/RecipientInput.tsx +1 -1
  142. package/apps/shared/components/mail/compose/RichTextEditor.tsx +147 -147
  143. package/apps/shared/components/mail/compose/ScheduleSendPicker.tsx +1 -1
  144. package/apps/shared/components/mail/compose/composeFlushRegistry.ts +60 -60
  145. package/apps/shared/components/mail/compose/encryptionRequirement.ts +2 -2
  146. package/apps/shared/components/mail/compose/quotedBody.ts +161 -161
  147. package/apps/shared/components/mail/compose/recipients.ts +1 -1
  148. package/apps/shared/components/mail/invite/InviteRowChip.tsx +2 -2
  149. package/apps/shared/components/mail/invite/InviteRsvpPopover.tsx +9 -7
  150. package/apps/shared/components/mail/invite/InviteTimeline.tsx +1 -1
  151. package/apps/shared/components/mail/invite/ProposeTimeForm.tsx +2 -2
  152. package/apps/shared/components/mail/invite/inviteFormat.ts +2 -2
  153. package/apps/shared/components/mail/invite/inviteStore.ts +14 -6
  154. package/apps/shared/components/mail/labelMenu.tsx +9 -7
  155. package/apps/shared/components/mail/layout/MailShell.tsx +4 -4
  156. package/apps/shared/components/mail/listPreferences.ts +2 -2
  157. package/apps/shared/components/mail/pinnedSigners.ts +45 -19
  158. package/apps/shared/components/mail/reading/EncryptedBody.tsx +2 -2
  159. package/apps/shared/components/mail/reading/MessageBody.tsx +6 -6
  160. package/apps/shared/components/mail/reading/MessageCard.tsx +3 -3
  161. package/apps/shared/components/mail/reading/MessageMoreMenu.tsx +258 -258
  162. package/apps/shared/components/mail/reading/MessageSourceDialog.tsx +79 -79
  163. package/apps/shared/components/mail/reading/PendingMessageCard.tsx +1 -1
  164. package/apps/shared/components/mail/reading/bodyContent.ts +3 -3
  165. package/apps/shared/components/mail/reading/bodyHtml.ts +1 -1
  166. package/apps/shared/components/mail/reading/messageExport.ts +59 -59
  167. package/apps/shared/components/mail/reading/printMessage.ts +99 -99
  168. package/apps/shared/components/mail/reading/useMessageActions.ts +450 -443
  169. package/apps/shared/components/mail/unreadStyle.tsx +1 -1
  170. package/apps/shared/components/mail/verificationSeals.ts +129 -125
  171. package/apps/shared/components/mail/writableMailboxes.ts +14 -7
  172. package/apps/shared/components/rules/RuleBuilder.tsx +311 -311
  173. package/apps/shared/components/settings/SigningCertificateCard.tsx +344 -344
  174. package/apps/shared/components/settings/layout/SettingsShell.tsx +8 -6
  175. package/apps/shared/components/sharing/PrincipalListField.tsx +1 -1
  176. package/apps/shared/components/sharing/PrincipalPicker.tsx +1 -1
  177. package/apps/shared/components/sharing/PrincipalResolver.tsx +4 -4
  178. package/apps/shared/components/tasks/TasksSidebar.tsx +7 -5
  179. package/apps/shared/components/tasks/layout/TasksShell.tsx +9 -7
  180. package/apps/shared/keyboard/GlobalShortcuts.tsx +51 -51
  181. package/apps/shared/keyboard/ShortcutProvider.tsx +62 -62
  182. package/apps/shared/keyboard/ShortcutsDialog.tsx +84 -84
  183. package/apps/shared/keyboard/dispatch.ts +124 -124
  184. package/apps/shared/keyboard/format.ts +89 -89
  185. package/apps/shared/keyboard/keymap.ts +114 -114
  186. package/apps/shared/keyboard/registry.ts +65 -65
  187. package/apps/shared/keyboard/targets.ts +79 -79
  188. package/apps/shared/mail/findWellKnownFolderUid.ts +6 -4
  189. package/apps/shared/mail/folderCounts.ts +8 -4
  190. package/apps/shared/mail/folderOfType.ts +51 -49
  191. package/apps/shared/mail/folderTree.ts +143 -143
  192. package/apps/shared/mail/listAllPages.ts +39 -39
  193. package/apps/shared/mail/listSnapshots.ts +2 -2
  194. package/apps/shared/mail/messageReadState.ts +6 -5
  195. package/apps/shared/mail/newMailNotifications.ts +171 -171
  196. package/apps/shared/mail/outbox/composeBridge.ts +2 -2
  197. package/apps/shared/mail/outbox/outboxState.ts +1 -1
  198. package/apps/shared/mail/outbox/outgoingReplies.ts +2 -2
  199. package/apps/shared/mail/outbox/sendDecision.ts +2 -2
  200. package/apps/shared/mail/outbox/sendJob.ts +450 -445
  201. package/apps/shared/mail/outbox/sendOutcomes.ts +160 -155
  202. package/apps/shared/mail/outbox/useOutboxStatus.ts +5 -3
  203. package/apps/shared/mail/permanentDelete.ts +8 -7
  204. package/apps/shared/mail/primaryMailbox.ts +1 -1
  205. package/apps/shared/mail/reportNotices.ts +66 -66
  206. package/apps/shared/mail/senderBlocking.ts +157 -141
  207. package/apps/shared/mail/useMailConnection.ts +207 -205
  208. package/apps/shared/mail/useMailLiveUpdates.ts +277 -277
  209. package/apps/shared/mail/useMailboxUpdateAccess.ts +84 -60
  210. package/apps/shared/mail/useMarkMessageRead.ts +54 -47
  211. package/apps/shared/mail/useNewMailNotifications.ts +178 -178
  212. package/apps/shared/mail/usePermanentDelete.tsx +5 -3
  213. package/apps/shared/navigation/pageTitle.ts +1 -1
  214. package/apps/shared/notifications/NotificationCenter.tsx +1 -1
  215. package/apps/shared/notifications/NotificationHistoryDialog.tsx +2 -2
  216. package/apps/shared/notifications/apiErrors.ts +2 -2
  217. package/apps/shared/notifications/pushStatus.ts +1 -1
  218. package/apps/shared/notifications/store.ts +560 -560
  219. package/apps/shared/notifications/systemErrors.ts +1 -1
  220. package/apps/shared/search/LocalIndexLifecycle.tsx +120 -114
  221. package/apps/shared/search/crossMailboxSearch.ts +3 -3
  222. package/apps/shared/search/localIndexBuilder.ts +493 -481
  223. package/apps/shared/search/localIndexKey.ts +1 -1
  224. package/apps/shared/search/localIndexRpcClient.ts +150 -30
  225. package/apps/shared/search/localIndexTransport.ts +84 -0
  226. package/apps/shared/search/localIndexWorker.ts +1 -1
  227. package/apps/shared/search/searchTier2.ts +3 -3
  228. package/apps/shared/signing/enrollmentStorage.ts +33 -33
  229. package/apps/shared/signing/enrollmentTracker.ts +385 -385
  230. package/apps/shared/signing/enrollmentView.ts +251 -251
  231. package/apps/shared/signing/signingInfo.ts +1 -1
  232. package/apps/shared/signing/useNow.ts +19 -19
  233. package/apps/shared/signing/useSigningEnrollmentWatcher.ts +92 -90
  234. package/apps/shared/styles/app.css +387 -396
  235. package/apps/www/_layout.tsx +2 -2
  236. package/apps/www/calendar/index.tsx +583 -581
  237. package/apps/www/contacts/[uid].tsx +114 -112
  238. package/apps/www/contacts/index.tsx +19 -17
  239. package/apps/www/index.tsx +3021 -3012
  240. package/apps/www/messages/[uid].tsx +141 -139
  241. package/apps/www/settings/auto-reply/index.tsx +138 -136
  242. package/apps/www/settings/blocked-senders/index.tsx +305 -303
  243. package/apps/www/settings/encryption/index.tsx +1296 -1290
  244. package/apps/www/settings/filters/[uid].tsx +184 -179
  245. package/apps/www/settings/filters/_mailFilterRuleConfig.tsx +2 -2
  246. package/apps/www/settings/filters/index.tsx +105 -105
  247. package/apps/www/settings/filters/new/index.tsx +167 -165
  248. package/apps/www/settings/labels/index.tsx +209 -207
  249. package/apps/www/settings/privacy/index.tsx +499 -495
  250. package/apps/www/settings/profile/index.tsx +256 -251
  251. package/apps/www/settings/read-receipts/index.tsx +155 -150
  252. package/apps/www/settings/sharing/index.tsx +259 -259
  253. package/apps/www/settings/signatures/[uid].tsx +175 -175
  254. package/apps/www/settings/signatures/index.tsx +91 -91
  255. package/apps/www/settings/signatures/new/index.tsx +138 -138
  256. package/apps/www/settings/signatures/signatureDefaults.ts +1 -1
  257. package/apps/www/tasks/index.tsx +659 -654
  258. package/dist/apps/admin/_layout.d.ts +1 -1
  259. package/dist/apps/admin/_layout.js +1 -1
  260. package/dist/apps/admin/audit-log/index.d.ts +1 -1
  261. package/dist/apps/admin/audit-log/index.js +4 -4
  262. package/dist/apps/admin/branding/index.js +3 -3
  263. package/dist/apps/admin/data-requests/index.js +8 -8
  264. package/dist/apps/admin/distribution-lists/[uid].js +3 -3
  265. package/dist/apps/admin/distribution-lists/index.js +4 -4
  266. package/dist/apps/admin/distribution-lists/new/index.js +5 -5
  267. package/dist/apps/admin/domains/[uid].js +6 -6
  268. package/dist/apps/admin/domains/index.js +4 -4
  269. package/dist/apps/admin/domains/new/index.js +5 -5
  270. package/dist/apps/admin/encryption-policy/index.js +1 -1
  271. package/dist/apps/admin/escrow-scopes/[uid].d.ts +1 -1
  272. package/dist/apps/admin/escrow-scopes/[uid].js +7 -7
  273. package/dist/apps/admin/escrow-scopes/index.js +4 -4
  274. package/dist/apps/admin/escrow-scopes/new/index.js +5 -5
  275. package/dist/apps/admin/index.js +6 -6
  276. package/dist/apps/admin/ingest-queue/index.js +4 -4
  277. package/dist/apps/admin/mailbox-policy/index.js +1 -1
  278. package/dist/apps/admin/mailboxes/[uid].js +5 -5
  279. package/dist/apps/admin/quarantine/index.js +5 -5
  280. package/dist/apps/admin/retention-policy/index.js +3 -3
  281. package/dist/apps/admin/signing-certificates/index.js +5 -5
  282. package/dist/apps/admin/transport-rules/[uid].js +5 -5
  283. package/dist/apps/admin/transport-rules/_transportRuleConfig.d.ts +1 -1
  284. package/dist/apps/admin/transport-rules/_transportRuleConfig.js +2 -2
  285. package/dist/apps/admin/transport-rules/index.js +4 -4
  286. package/dist/apps/admin/transport-rules/new/index.js +5 -5
  287. package/dist/apps/escrow/_layout.d.ts +1 -1
  288. package/dist/apps/escrow/audit-log/index.d.ts +1 -1
  289. package/dist/apps/escrow/audit-log/index.js +4 -4
  290. package/dist/apps/escrow/index.js +4 -4
  291. package/dist/apps/escrow/matters/[uid].js +10 -10
  292. package/dist/apps/escrow/matters/new/index.js +6 -6
  293. package/dist/apps/shared/appearance/AppearanceForm.js +3 -3
  294. package/dist/apps/shared/appearance/AppearanceHead.js +1 -1
  295. package/dist/apps/shared/appearance/AppearanceProvider.d.ts +1 -1
  296. package/dist/apps/shared/appearance/AppearanceProvider.js +3 -3
  297. package/dist/apps/shared/appearance/appearanceCache.d.ts +1 -1
  298. package/dist/apps/shared/appearance/appearanceCache.js +1 -1
  299. package/dist/apps/shared/appearance/appearanceContext.d.ts +1 -1
  300. package/dist/apps/shared/appearance/theme.d.ts +1 -1
  301. package/dist/apps/shared/auth/adminAccess.js +1 -1
  302. package/dist/apps/shared/calendar/bookingPlugin.js +1 -1
  303. package/dist/apps/shared/calendar/calendarLiveUpdates.d.ts +1 -1
  304. package/dist/apps/shared/calendar/calendarReminders.d.ts +1 -1
  305. package/dist/apps/shared/calendar/useCalendarReminders.js +1 -1
  306. package/dist/apps/shared/components/admin/diagnostics/DiagnosticsManager.js +1 -1
  307. package/dist/apps/shared/components/admin/diagnostics/InstalledPlugins.d.ts +1 -1
  308. package/dist/apps/shared/components/admin/diagnostics/InstalledPlugins.js +2 -2
  309. package/dist/apps/shared/components/admin/diagnostics/LogsPanel.js +2 -2
  310. package/dist/apps/shared/components/admin/diagnostics/PackagesTable.js +1 -1
  311. package/dist/apps/shared/components/admin/diagnostics/RuntimePanel.js +1 -1
  312. package/dist/apps/shared/components/admin/diagnostics/SystemPanel.js +2 -2
  313. package/dist/apps/shared/components/admin/diagnostics/VersionsPanel.js +1 -1
  314. package/dist/apps/shared/components/admin/diagnostics/diagnosticsApi.js +1 -1
  315. package/dist/apps/shared/components/admin/diagnostics/format.js +1 -1
  316. package/dist/apps/shared/components/admin/diagnostics/logClient.js +1 -1
  317. package/dist/apps/shared/components/admin/distributionLists/MemberListCard.d.ts +1 -1
  318. package/dist/apps/shared/components/admin/distributionLists/MemberListCard.js +4 -4
  319. package/dist/apps/shared/components/admin/elevation.js +1 -1
  320. package/dist/apps/shared/components/admin/escrowScopes/EscrowScopeKeyAndHoldersFields.js +3 -3
  321. package/dist/apps/shared/components/admin/layout/AdminShell.d.ts +1 -1
  322. package/dist/apps/shared/components/admin/layout/AdminShell.js +8 -8
  323. package/dist/apps/shared/components/admin/mailboxes/EraseLeftoverDataDialog.d.ts +1 -1
  324. package/dist/apps/shared/components/admin/mailboxes/EraseLeftoverDataDialog.js +6 -6
  325. package/dist/apps/shared/components/admin/mailboxes/EscrowScopeCard.d.ts +1 -1
  326. package/dist/apps/shared/components/admin/mailboxes/EscrowScopeCard.js +10 -8
  327. package/dist/apps/shared/components/admin/mailboxes/LeftoverMailboxesSection.js +4 -4
  328. package/dist/apps/shared/components/admin/mailboxes/MailboxTable.d.ts +1 -1
  329. package/dist/apps/shared/components/admin/mailboxes/ResourceSettingsCard.d.ts +1 -1
  330. package/dist/apps/shared/components/admin/mailboxes/ResourceSettingsCard.js +7 -5
  331. package/dist/apps/shared/components/admin/mailboxes/ShareAccessCard.js +5 -5
  332. package/dist/apps/shared/components/admin/settings/BrandingForm.d.ts +1 -1
  333. package/dist/apps/shared/components/admin/settings/BrandingForm.js +8 -8
  334. package/dist/apps/shared/components/admin/settings/DomainDnsSetup.d.ts +1 -1
  335. package/dist/apps/shared/components/admin/settings/DomainDnsSetup.js +5 -5
  336. package/dist/apps/shared/components/admin/settings/EncryptionPolicyForm.d.ts +1 -1
  337. package/dist/apps/shared/components/admin/settings/EncryptionPolicyForm.js +4 -4
  338. package/dist/apps/shared/components/admin/settings/LoadedSettingsForm.js +2 -2
  339. package/dist/apps/shared/components/admin/settings/MailboxCreateForm.d.ts +1 -1
  340. package/dist/apps/shared/components/admin/settings/MailboxCreateForm.js +14 -12
  341. package/dist/apps/shared/components/admin/settings/MailboxPolicyForm.d.ts +1 -1
  342. package/dist/apps/shared/components/admin/settings/MailboxPolicyForm.js +4 -4
  343. package/dist/apps/shared/components/admin/settings/PluginsManager.js +5 -5
  344. package/dist/apps/shared/components/admin/settings/RetentionPolicyForm.d.ts +1 -1
  345. package/dist/apps/shared/components/admin/settings/RetentionPolicyForm.js +5 -5
  346. package/dist/apps/shared/components/admin/setup/EscrowSetupStep.js +7 -7
  347. package/dist/apps/shared/components/admin/setup/SetupWizard.js +26 -22
  348. package/dist/apps/shared/components/admin/signOut.js +1 -1
  349. package/dist/apps/shared/components/admin/usePagedList.js +2 -2
  350. package/dist/apps/shared/components/calendar/AppointmentQuickForm.js +3 -3
  351. package/dist/apps/shared/components/calendar/CalendarListSidebar.d.ts +1 -1
  352. package/dist/apps/shared/components/calendar/CalendarListSidebar.js +2 -2
  353. package/dist/apps/shared/components/calendar/DescriptionEditor.js +1 -1
  354. package/dist/apps/shared/components/calendar/EventDescriptionView.js +1 -1
  355. package/dist/apps/shared/components/calendar/EventDetails.d.ts +2 -2
  356. package/dist/apps/shared/components/calendar/EventDetails.js +16 -14
  357. package/dist/apps/shared/components/calendar/EventEditor.d.ts +2 -2
  358. package/dist/apps/shared/components/calendar/EventEditor.js +22 -20
  359. package/dist/apps/shared/components/calendar/EventExpandedForm.js +2 -2
  360. package/dist/apps/shared/components/calendar/EventFormParts.d.ts +1 -1
  361. package/dist/apps/shared/components/calendar/EventFormParts.js +1 -1
  362. package/dist/apps/shared/components/calendar/EventModal.d.ts +2 -2
  363. package/dist/apps/shared/components/calendar/EventModal.js +3 -3
  364. package/dist/apps/shared/components/calendar/EventQuickForm.js +3 -3
  365. package/dist/apps/shared/components/calendar/EventShell.js +1 -1
  366. package/dist/apps/shared/components/calendar/FindATime.js +6 -4
  367. package/dist/apps/shared/components/calendar/GuestInput.d.ts +2 -2
  368. package/dist/apps/shared/components/calendar/MonthView.d.ts +1 -1
  369. package/dist/apps/shared/components/calendar/MonthView.js +1 -1
  370. package/dist/apps/shared/components/calendar/QuickCreateFaces.js +1 -1
  371. package/dist/apps/shared/components/calendar/QuickFaceFrame.js +1 -1
  372. package/dist/apps/shared/components/calendar/RecurrenceEditor.d.ts +1 -1
  373. package/dist/apps/shared/components/calendar/RecurrenceEditor.js +1 -1
  374. package/dist/apps/shared/components/calendar/RequestChangeForm.js +8 -6
  375. package/dist/apps/shared/components/calendar/ResourcePicker.d.ts +1 -1
  376. package/dist/apps/shared/components/calendar/ResourcePicker.js +7 -5
  377. package/dist/apps/shared/components/calendar/SplitDayView.d.ts +1 -1
  378. package/dist/apps/shared/components/calendar/TaskQuickForm.d.ts +1 -1
  379. package/dist/apps/shared/components/calendar/TaskQuickForm.js +9 -7
  380. package/dist/apps/shared/components/calendar/TimeGridView.d.ts +1 -1
  381. package/dist/apps/shared/components/calendar/TimeGridView.js +1 -1
  382. package/dist/apps/shared/components/calendar/allDay.d.ts +2 -2
  383. package/dist/apps/shared/components/calendar/allDay.js +1 -1
  384. package/dist/apps/shared/components/calendar/eventDialogFields.d.ts +2 -2
  385. package/dist/apps/shared/components/calendar/eventDialogFields.js +2 -2
  386. package/dist/apps/shared/components/calendar/eventForm.d.ts +3 -3
  387. package/dist/apps/shared/components/calendar/eventFormat.d.ts +1 -1
  388. package/dist/apps/shared/components/calendar/eventFormat.js +2 -2
  389. package/dist/apps/shared/components/calendar/findTimeGrid.d.ts +1 -1
  390. package/dist/apps/shared/components/calendar/findTimeGrid.js +1 -1
  391. package/dist/apps/shared/components/calendar/layout/CalendarShell.d.ts +1 -1
  392. package/dist/apps/shared/components/calendar/layout/CalendarShell.js +11 -9
  393. package/dist/apps/shared/components/contacts/ContactDetailPane.d.ts +1 -1
  394. package/dist/apps/shared/components/contacts/ContactDetailPane.js +2 -2
  395. package/dist/apps/shared/components/contacts/ContactForm.d.ts +2 -2
  396. package/dist/apps/shared/components/contacts/ContactForm.js +12 -8
  397. package/dist/apps/shared/components/contacts/ContactsSidebar.d.ts +1 -1
  398. package/dist/apps/shared/components/contacts/ContactsSidebar.js +7 -5
  399. package/dist/apps/shared/components/contacts/KeyChangeReview.d.ts +1 -1
  400. package/dist/apps/shared/components/contacts/KeyChangeReview.js +5 -5
  401. package/dist/apps/shared/components/contacts/contactKeys.d.ts +2 -2
  402. package/dist/apps/shared/components/contacts/contactKeys.js +2 -2
  403. package/dist/apps/shared/components/contacts/layout/ContactsShell.d.ts +1 -1
  404. package/dist/apps/shared/components/contacts/layout/ContactsShell.js +9 -7
  405. package/dist/apps/shared/components/escrow/layout/EscrowShell.js +7 -7
  406. package/dist/apps/shared/components/forms/StringListField.js +1 -1
  407. package/dist/apps/shared/components/layout/AppShell.d.ts +2 -2
  408. package/dist/apps/shared/components/layout/AppShell.js +14 -10
  409. package/dist/apps/shared/components/layout/BrandingChrome.d.ts +1 -1
  410. package/dist/apps/shared/components/layout/KeyEnrollmentGate.d.ts +1 -1
  411. package/dist/apps/shared/components/layout/KeyEnrollmentGate.js +9 -9
  412. package/dist/apps/shared/components/layout/MailboxProvisioning.js +8 -6
  413. package/dist/apps/shared/components/layout/RecoveryCodeUnlock.d.ts +1 -1
  414. package/dist/apps/shared/components/layout/RecoveryCodeUnlock.js +9 -9
  415. package/dist/apps/shared/components/layout/UnlockPromptProvider.d.ts +2 -2
  416. package/dist/apps/shared/components/layout/UnlockPromptProvider.js +5 -5
  417. package/dist/apps/shared/components/layout/UserMenu.js +6 -4
  418. package/dist/apps/shared/components/mail/ConversationList.d.ts +2 -2
  419. package/dist/apps/shared/components/mail/ConversationList.js +6 -4
  420. package/dist/apps/shared/components/mail/ConversationThreadPane.d.ts +3 -3
  421. package/dist/apps/shared/components/mail/ConversationThreadPane.js +13 -11
  422. package/dist/apps/shared/components/mail/InviteCard.js +10 -8
  423. package/dist/apps/shared/components/mail/LazyReadingPane.js +2 -2
  424. package/dist/apps/shared/components/mail/MailAddress.d.ts +1 -1
  425. package/dist/apps/shared/components/mail/MailAddress.js +1 -1
  426. package/dist/apps/shared/components/mail/MailListToolbar.d.ts +2 -2
  427. package/dist/apps/shared/components/mail/MailSelectionBar.d.ts +2 -2
  428. package/dist/apps/shared/components/mail/MenuButton.js +1 -1
  429. package/dist/apps/shared/components/mail/MessageDetailPane.d.ts +3 -3
  430. package/dist/apps/shared/components/mail/MessageDetailPane.js +30 -28
  431. package/dist/apps/shared/components/mail/MoveToFolderDialog.d.ts +1 -1
  432. package/dist/apps/shared/components/mail/MoveToFolderDialog.js +8 -6
  433. package/dist/apps/shared/components/mail/OutboxRowStatus.d.ts +1 -1
  434. package/dist/apps/shared/components/mail/PermanentDeleteDialog.js +2 -2
  435. package/dist/apps/shared/components/mail/compose/ComposeContext.d.ts +10 -1
  436. package/dist/apps/shared/components/mail/compose/ComposeContext.js +4 -2
  437. package/dist/apps/shared/components/mail/compose/ComposeWindow.d.ts +7 -1
  438. package/dist/apps/shared/components/mail/compose/ComposeWindow.js +54 -31
  439. package/dist/apps/shared/components/mail/compose/ComposeWindowPlaceholder.js +4 -4
  440. package/dist/apps/shared/components/mail/compose/EmojiPicker.js +2 -2
  441. package/dist/apps/shared/components/mail/compose/GifPicker.js +3 -3
  442. package/dist/apps/shared/components/mail/compose/RecipientInput.d.ts +1 -1
  443. package/dist/apps/shared/components/mail/compose/RecipientInput.js +1 -1
  444. package/dist/apps/shared/components/mail/compose/ScheduleSendPicker.js +1 -1
  445. package/dist/apps/shared/components/mail/compose/encryptionRequirement.d.ts +2 -2
  446. package/dist/apps/shared/components/mail/compose/encryptionRequirement.js +1 -1
  447. package/dist/apps/shared/components/mail/compose/quotedBody.d.ts +3 -3
  448. package/dist/apps/shared/components/mail/compose/quotedBody.js +3 -3
  449. package/dist/apps/shared/components/mail/compose/recipients.d.ts +1 -1
  450. package/dist/apps/shared/components/mail/invite/InviteRowChip.d.ts +1 -1
  451. package/dist/apps/shared/components/mail/invite/InviteRsvpPopover.d.ts +1 -1
  452. package/dist/apps/shared/components/mail/invite/InviteRsvpPopover.js +9 -7
  453. package/dist/apps/shared/components/mail/invite/InviteTimeline.d.ts +1 -1
  454. package/dist/apps/shared/components/mail/invite/ProposeTimeForm.d.ts +1 -1
  455. package/dist/apps/shared/components/mail/invite/ProposeTimeForm.js +1 -1
  456. package/dist/apps/shared/components/mail/invite/inviteFormat.d.ts +2 -2
  457. package/dist/apps/shared/components/mail/invite/inviteStore.d.ts +9 -3
  458. package/dist/apps/shared/components/mail/invite/inviteStore.js +13 -6
  459. package/dist/apps/shared/components/mail/labelMenu.d.ts +1 -1
  460. package/dist/apps/shared/components/mail/labelMenu.js +9 -7
  461. package/dist/apps/shared/components/mail/layout/MailShell.d.ts +1 -1
  462. package/dist/apps/shared/components/mail/layout/MailShell.js +3 -3
  463. package/dist/apps/shared/components/mail/listPreferences.d.ts +2 -2
  464. package/dist/apps/shared/components/mail/listPreferences.js +1 -1
  465. package/dist/apps/shared/components/mail/pinnedSigners.d.ts +12 -5
  466. package/dist/apps/shared/components/mail/pinnedSigners.js +37 -18
  467. package/dist/apps/shared/components/mail/reading/EncryptedBody.js +2 -2
  468. package/dist/apps/shared/components/mail/reading/MessageBody.d.ts +2 -2
  469. package/dist/apps/shared/components/mail/reading/MessageBody.js +4 -4
  470. package/dist/apps/shared/components/mail/reading/MessageCard.d.ts +1 -1
  471. package/dist/apps/shared/components/mail/reading/MessageCard.js +2 -2
  472. package/dist/apps/shared/components/mail/reading/MessageSourceDialog.js +3 -3
  473. package/dist/apps/shared/components/mail/reading/PendingMessageCard.js +1 -1
  474. package/dist/apps/shared/components/mail/reading/bodyContent.d.ts +2 -2
  475. package/dist/apps/shared/components/mail/reading/bodyContent.js +2 -2
  476. package/dist/apps/shared/components/mail/reading/bodyHtml.js +1 -1
  477. package/dist/apps/shared/components/mail/reading/messageExport.js +1 -1
  478. package/dist/apps/shared/components/mail/reading/printMessage.d.ts +2 -2
  479. package/dist/apps/shared/components/mail/reading/printMessage.js +11 -11
  480. package/dist/apps/shared/components/mail/reading/useMessageActions.d.ts +1 -1
  481. package/dist/apps/shared/components/mail/reading/useMessageActions.js +18 -16
  482. package/dist/apps/shared/components/mail/unreadStyle.d.ts +1 -1
  483. package/dist/apps/shared/components/mail/verificationSeals.d.ts +27 -6
  484. package/dist/apps/shared/components/mail/verificationSeals.js +15 -11
  485. package/dist/apps/shared/components/mail/writableMailboxes.d.ts +8 -3
  486. package/dist/apps/shared/components/mail/writableMailboxes.js +12 -6
  487. package/dist/apps/shared/components/rules/RuleBuilder.js +1 -1
  488. package/dist/apps/shared/components/settings/SigningCertificateCard.d.ts +1 -1
  489. package/dist/apps/shared/components/settings/SigningCertificateCard.js +3 -3
  490. package/dist/apps/shared/components/settings/layout/SettingsShell.d.ts +1 -1
  491. package/dist/apps/shared/components/settings/layout/SettingsShell.js +8 -6
  492. package/dist/apps/shared/components/sharing/PrincipalListField.d.ts +1 -1
  493. package/dist/apps/shared/components/sharing/PrincipalPicker.d.ts +1 -1
  494. package/dist/apps/shared/components/sharing/PrincipalPicker.js +1 -1
  495. package/dist/apps/shared/components/sharing/PrincipalResolver.d.ts +1 -1
  496. package/dist/apps/shared/components/sharing/PrincipalResolver.js +3 -3
  497. package/dist/apps/shared/components/tasks/TasksSidebar.d.ts +1 -1
  498. package/dist/apps/shared/components/tasks/TasksSidebar.js +7 -5
  499. package/dist/apps/shared/components/tasks/layout/TasksShell.d.ts +1 -1
  500. package/dist/apps/shared/components/tasks/layout/TasksShell.js +9 -7
  501. package/dist/apps/shared/keyboard/ShortcutsDialog.js +1 -1
  502. package/dist/apps/shared/mail/findWellKnownFolderUid.d.ts +5 -3
  503. package/dist/apps/shared/mail/findWellKnownFolderUid.js +5 -4
  504. package/dist/apps/shared/mail/folderCounts.d.ts +1 -1
  505. package/dist/apps/shared/mail/folderCounts.js +6 -4
  506. package/dist/apps/shared/mail/folderOfType.d.ts +3 -2
  507. package/dist/apps/shared/mail/folderOfType.js +4 -4
  508. package/dist/apps/shared/mail/folderTree.d.ts +1 -1
  509. package/dist/apps/shared/mail/listSnapshots.d.ts +2 -2
  510. package/dist/apps/shared/mail/messageReadState.d.ts +4 -3
  511. package/dist/apps/shared/mail/messageReadState.js +5 -5
  512. package/dist/apps/shared/mail/newMailNotifications.d.ts +1 -1
  513. package/dist/apps/shared/mail/newMailNotifications.js +1 -1
  514. package/dist/apps/shared/mail/outbox/composeBridge.d.ts +2 -2
  515. package/dist/apps/shared/mail/outbox/outboxState.d.ts +1 -1
  516. package/dist/apps/shared/mail/outbox/outgoingReplies.d.ts +2 -2
  517. package/dist/apps/shared/mail/outbox/sendDecision.d.ts +2 -2
  518. package/dist/apps/shared/mail/outbox/sendDecision.js +1 -1
  519. package/dist/apps/shared/mail/outbox/sendJob.d.ts +10 -6
  520. package/dist/apps/shared/mail/outbox/sendJob.js +39 -35
  521. package/dist/apps/shared/mail/outbox/sendOutcomes.d.ts +6 -3
  522. package/dist/apps/shared/mail/outbox/sendOutcomes.js +19 -15
  523. package/dist/apps/shared/mail/outbox/useOutboxStatus.js +5 -3
  524. package/dist/apps/shared/mail/permanentDelete.d.ts +4 -3
  525. package/dist/apps/shared/mail/permanentDelete.js +8 -8
  526. package/dist/apps/shared/mail/primaryMailbox.d.ts +1 -1
  527. package/dist/apps/shared/mail/primaryMailbox.js +1 -1
  528. package/dist/apps/shared/mail/reportNotices.d.ts +1 -1
  529. package/dist/apps/shared/mail/senderBlocking.d.ts +5 -4
  530. package/dist/apps/shared/mail/senderBlocking.js +19 -16
  531. package/dist/apps/shared/mail/useMailConnection.d.ts +1 -1
  532. package/dist/apps/shared/mail/useMailConnection.js +12 -10
  533. package/dist/apps/shared/mail/useMailLiveUpdates.d.ts +2 -2
  534. package/dist/apps/shared/mail/useMailLiveUpdates.js +2 -2
  535. package/dist/apps/shared/mail/useMailboxUpdateAccess.d.ts +3 -2
  536. package/dist/apps/shared/mail/useMailboxUpdateAccess.js +31 -10
  537. package/dist/apps/shared/mail/useMarkMessageRead.d.ts +1 -1
  538. package/dist/apps/shared/mail/useMarkMessageRead.js +5 -3
  539. package/dist/apps/shared/mail/useNewMailNotifications.d.ts +1 -1
  540. package/dist/apps/shared/mail/usePermanentDelete.d.ts +1 -1
  541. package/dist/apps/shared/mail/usePermanentDelete.js +4 -2
  542. package/dist/apps/shared/navigation/pageTitle.d.ts +1 -1
  543. package/dist/apps/shared/notifications/NotificationCenter.js +1 -1
  544. package/dist/apps/shared/notifications/NotificationHistoryDialog.js +2 -2
  545. package/dist/apps/shared/notifications/apiErrors.js +2 -2
  546. package/dist/apps/shared/notifications/pushStatus.js +1 -1
  547. package/dist/apps/shared/notifications/systemErrors.js +1 -1
  548. package/dist/apps/shared/search/LocalIndexLifecycle.d.ts +2 -2
  549. package/dist/apps/shared/search/LocalIndexLifecycle.js +15 -10
  550. package/dist/apps/shared/search/crossMailboxSearch.d.ts +1 -1
  551. package/dist/apps/shared/search/crossMailboxSearch.js +2 -2
  552. package/dist/apps/shared/search/localIndexBuilder.d.ts +4 -3
  553. package/dist/apps/shared/search/localIndexBuilder.js +15 -12
  554. package/dist/apps/shared/search/localIndexKey.js +1 -1
  555. package/dist/apps/shared/search/localIndexRpcClient.d.ts +43 -31
  556. package/dist/apps/shared/search/localIndexRpcClient.js +113 -20
  557. package/dist/apps/shared/search/localIndexTransport.d.ts +77 -0
  558. package/dist/apps/shared/search/localIndexTransport.js +1 -0
  559. package/dist/apps/shared/search/localIndexWorker.d.ts +1 -1
  560. package/dist/apps/shared/search/searchTier2.d.ts +3 -3
  561. package/dist/apps/shared/signing/enrollmentTracker.d.ts +1 -1
  562. package/dist/apps/shared/signing/enrollmentTracker.js +3 -3
  563. package/dist/apps/shared/signing/enrollmentView.d.ts +1 -1
  564. package/dist/apps/shared/signing/signingInfo.d.ts +1 -1
  565. package/dist/apps/shared/signing/signingInfo.js +1 -1
  566. package/dist/apps/shared/signing/useSigningEnrollmentWatcher.d.ts +1 -1
  567. package/dist/apps/shared/signing/useSigningEnrollmentWatcher.js +5 -3
  568. package/dist/apps/shared/styles/app.css +387 -396
  569. package/dist/apps/www/_layout.d.ts +1 -1
  570. package/dist/apps/www/_layout.js +1 -1
  571. package/dist/apps/www/calendar/index.d.ts +1 -1
  572. package/dist/apps/www/calendar/index.js +20 -18
  573. package/dist/apps/www/contacts/[uid].d.ts +1 -1
  574. package/dist/apps/www/contacts/[uid].js +8 -6
  575. package/dist/apps/www/contacts/index.d.ts +1 -1
  576. package/dist/apps/www/contacts/index.js +19 -17
  577. package/dist/apps/www/index.d.ts +1 -1
  578. package/dist/apps/www/index.js +54 -50
  579. package/dist/apps/www/messages/[uid].d.ts +1 -1
  580. package/dist/apps/www/messages/[uid].js +11 -9
  581. package/dist/apps/www/settings/appearance/index.d.ts +1 -1
  582. package/dist/apps/www/settings/auto-reply/index.d.ts +1 -1
  583. package/dist/apps/www/settings/auto-reply/index.js +6 -4
  584. package/dist/apps/www/settings/blocked-senders/index.d.ts +1 -1
  585. package/dist/apps/www/settings/blocked-senders/index.js +6 -4
  586. package/dist/apps/www/settings/encryption/index.d.ts +1 -1
  587. package/dist/apps/www/settings/encryption/index.js +31 -29
  588. package/dist/apps/www/settings/filters/[uid].d.ts +1 -1
  589. package/dist/apps/www/settings/filters/[uid].js +11 -9
  590. package/dist/apps/www/settings/filters/_mailFilterRuleConfig.d.ts +2 -2
  591. package/dist/apps/www/settings/filters/index.d.ts +1 -1
  592. package/dist/apps/www/settings/filters/index.js +4 -4
  593. package/dist/apps/www/settings/filters/new/index.d.ts +1 -1
  594. package/dist/apps/www/settings/filters/new/index.js +10 -8
  595. package/dist/apps/www/settings/labels/index.d.ts +1 -1
  596. package/dist/apps/www/settings/labels/index.js +12 -10
  597. package/dist/apps/www/settings/privacy/index.d.ts +1 -1
  598. package/dist/apps/www/settings/privacy/index.js +18 -14
  599. package/dist/apps/www/settings/profile/index.d.ts +1 -1
  600. package/dist/apps/www/settings/profile/index.js +7 -5
  601. package/dist/apps/www/settings/read-receipts/index.d.ts +1 -1
  602. package/dist/apps/www/settings/read-receipts/index.js +5 -3
  603. package/dist/apps/www/settings/sharing/index.d.ts +1 -1
  604. package/dist/apps/www/settings/sharing/index.js +6 -6
  605. package/dist/apps/www/settings/signatures/[uid].d.ts +1 -1
  606. package/dist/apps/www/settings/signatures/[uid].js +5 -5
  607. package/dist/apps/www/settings/signatures/index.d.ts +1 -1
  608. package/dist/apps/www/settings/signatures/index.js +4 -4
  609. package/dist/apps/www/settings/signatures/new/index.d.ts +1 -1
  610. package/dist/apps/www/settings/signatures/new/index.js +4 -4
  611. package/dist/apps/www/settings/signatures/signatureDefaults.d.ts +1 -1
  612. package/dist/apps/www/settings/signatures/signatureDefaults.js +1 -1
  613. package/dist/apps/www/tasks/index.d.ts +1 -1
  614. package/dist/apps/www/tasks/index.js +17 -15
  615. package/dist/lib/admin/auditLogApi.d.ts +32 -0
  616. package/dist/lib/admin/auditLogApi.js +27 -0
  617. package/dist/lib/admin/distributionListsApi.d.ts +47 -0
  618. package/dist/lib/admin/distributionListsApi.js +34 -0
  619. package/dist/lib/admin/domainsApi.d.ts +75 -0
  620. package/dist/lib/admin/domainsApi.js +44 -0
  621. package/dist/lib/admin/escrowAccessRequestsApi.d.ts +79 -0
  622. package/dist/lib/admin/escrowAccessRequestsApi.js +46 -0
  623. package/dist/lib/admin/escrowAuditLogApi.d.ts +66 -0
  624. package/dist/lib/admin/escrowAuditLogApi.js +31 -0
  625. package/dist/lib/admin/escrowScopesApi.d.ts +78 -0
  626. package/dist/lib/admin/escrowScopesApi.js +50 -0
  627. package/dist/lib/admin/leftoverMailboxApi.d.ts +73 -0
  628. package/dist/lib/admin/leftoverMailboxApi.js +67 -0
  629. package/dist/lib/admin/mailboxPolicyApi.d.ts +27 -0
  630. package/dist/lib/admin/mailboxPolicyApi.js +21 -0
  631. package/dist/lib/admin/matterExportApi.d.ts +40 -0
  632. package/dist/lib/admin/matterExportApi.js +39 -0
  633. package/dist/lib/admin/matterSearchApi.d.ts +20 -0
  634. package/dist/lib/admin/matterSearchApi.js +27 -0
  635. package/dist/lib/admin/mattersApi.d.ts +56 -0
  636. package/dist/lib/admin/mattersApi.js +40 -0
  637. package/dist/lib/admin/pluginsApi.d.ts +265 -0
  638. package/dist/lib/admin/pluginsApi.js +102 -0
  639. package/dist/lib/admin/retentionPolicyApi.d.ts +32 -0
  640. package/dist/lib/admin/retentionPolicyApi.js +29 -0
  641. package/dist/lib/admin/setupApi.d.ts +23 -0
  642. package/dist/lib/admin/setupApi.js +26 -0
  643. package/dist/lib/admin/transportRulesApi.d.ts +66 -0
  644. package/dist/lib/admin/transportRulesApi.js +43 -0
  645. package/dist/lib/appearance/preferencesApi.d.ts +128 -0
  646. package/dist/lib/appearance/preferencesApi.js +257 -0
  647. package/dist/lib/auth/profileApi.d.ts +33 -0
  648. package/dist/lib/auth/profileApi.js +52 -0
  649. package/dist/lib/auth/session.d.ts +70 -0
  650. package/dist/lib/auth/session.js +210 -0
  651. package/dist/lib/branding/brandingApi.d.ts +47 -0
  652. package/dist/lib/branding/brandingApi.js +61 -0
  653. package/dist/lib/branding/useBranding.d.ts +23 -0
  654. package/dist/lib/branding/useBranding.js +65 -0
  655. package/dist/lib/calendar/calendarApi.d.ts +230 -0
  656. package/dist/lib/calendar/calendarApi.js +106 -0
  657. package/dist/lib/calendar/calendarColors.d.ts +18 -0
  658. package/dist/lib/calendar/calendarColors.js +39 -0
  659. package/dist/lib/calendar/calendarDragIds.d.ts +42 -0
  660. package/dist/lib/calendar/calendarDragIds.js +92 -0
  661. package/dist/lib/calendar/calendarMutations.d.ts +68 -0
  662. package/dist/lib/calendar/calendarMutations.js +190 -0
  663. package/dist/lib/calendar/eventDescription.d.ts +43 -0
  664. package/dist/lib/calendar/eventDescription.js +195 -0
  665. package/dist/lib/calendar/freeBusyApi.d.ts +100 -0
  666. package/dist/lib/calendar/freeBusyApi.js +119 -0
  667. package/dist/lib/calendar/inviteApi.d.ts +121 -0
  668. package/dist/lib/calendar/inviteApi.js +54 -0
  669. package/dist/lib/calendar/recurrence.d.ts +60 -0
  670. package/dist/lib/calendar/recurrence.js +225 -0
  671. package/dist/lib/components/avatar/ContactAvatar.d.ts +8 -0
  672. package/dist/lib/components/avatar/ContactAvatar.js +26 -0
  673. package/dist/lib/components/buttons/Button.d.ts +9 -0
  674. package/dist/lib/components/buttons/Button.js +14 -0
  675. package/dist/lib/components/buttons/CopyButton.d.ts +18 -0
  676. package/dist/lib/components/buttons/CopyButton.js +14 -0
  677. package/dist/lib/components/feedback/Alert.d.ts +4 -0
  678. package/dist/lib/components/feedback/Alert.js +4 -0
  679. package/dist/lib/components/feedback/Skeleton.d.ts +21 -0
  680. package/dist/lib/components/feedback/Skeleton.js +14 -0
  681. package/dist/lib/components/forms/FormField.d.ts +8 -0
  682. package/dist/lib/components/forms/FormField.js +5 -0
  683. package/dist/lib/components/navigation/BottomTabBar.d.ts +27 -0
  684. package/dist/lib/components/navigation/BottomTabBar.js +32 -0
  685. package/dist/lib/components/overlays/Drawer.d.ts +20 -0
  686. package/dist/lib/components/overlays/Drawer.js +27 -0
  687. package/dist/lib/components/overlays/Modal.d.ts +17 -0
  688. package/dist/lib/components/overlays/Modal.js +25 -0
  689. package/dist/lib/components/overlays/PopoverPortal.d.ts +23 -0
  690. package/dist/lib/components/overlays/PopoverPortal.js +53 -0
  691. package/dist/lib/components/overlays/overlayStack.d.ts +31 -0
  692. package/dist/lib/components/overlays/overlayStack.js +143 -0
  693. package/dist/lib/components/pickers/MiniDatePicker.d.ts +13 -0
  694. package/dist/lib/components/pickers/MiniDatePicker.js +42 -0
  695. package/dist/lib/contacts/contactsApi.d.ts +174 -0
  696. package/dist/lib/contacts/contactsApi.js +139 -0
  697. package/dist/lib/contacts/vcard.d.ts +23 -0
  698. package/dist/lib/contacts/vcard.js +179 -0
  699. package/dist/lib/crypto/composeSecurity.d.ts +67 -0
  700. package/dist/lib/crypto/composeSecurity.js +93 -0
  701. package/dist/lib/crypto/encoding.d.ts +9 -0
  702. package/dist/lib/crypto/encoding.js +32 -0
  703. package/dist/lib/crypto/escrowKeys.d.ts +25 -0
  704. package/dist/lib/crypto/escrowKeys.js +59 -0
  705. package/dist/lib/crypto/idleTimeout.d.ts +16 -0
  706. package/dist/lib/crypto/idleTimeout.js +47 -0
  707. package/dist/lib/crypto/keySession.d.ts +159 -0
  708. package/dist/lib/crypto/keySession.js +367 -0
  709. package/dist/lib/crypto/keys.d.ts +50 -0
  710. package/dist/lib/crypto/keys.js +89 -0
  711. package/dist/lib/crypto/keyvaultApi.d.ts +394 -0
  712. package/dist/lib/crypto/keyvaultApi.js +350 -0
  713. package/dist/lib/crypto/masterKey.d.ts +59 -0
  714. package/dist/lib/crypto/masterKey.js +104 -0
  715. package/dist/lib/crypto/masterKeyWraps.d.ts +108 -0
  716. package/dist/lib/crypto/masterKeyWraps.js +228 -0
  717. package/dist/lib/crypto/messageSecurity.d.ts +248 -0
  718. package/dist/lib/crypto/messageSecurity.js +367 -0
  719. package/dist/lib/crypto/mime.d.ts +143 -0
  720. package/dist/lib/crypto/mime.js +504 -0
  721. package/dist/lib/crypto/passkeyUnlock.d.ts +20 -0
  722. package/dist/lib/crypto/passkeyUnlock.js +79 -0
  723. package/dist/lib/crypto/passwordUnlock.d.ts +39 -0
  724. package/dist/lib/crypto/passwordUnlock.js +73 -0
  725. package/dist/lib/crypto/recoveryCode.d.ts +28 -0
  726. package/dist/lib/crypto/recoveryCode.js +86 -0
  727. package/dist/lib/crypto/signingProviderApi.d.ts +95 -0
  728. package/dist/lib/crypto/signingProviderApi.js +60 -0
  729. package/dist/lib/crypto/smime.d.ts +128 -0
  730. package/dist/lib/crypto/smime.js +402 -0
  731. package/dist/lib/crypto/smimeMessage.d.ts +132 -0
  732. package/dist/lib/crypto/smimeMessage.js +341 -0
  733. package/dist/lib/crypto/useIdleKeyTimeout.d.ts +10 -0
  734. package/dist/lib/crypto/useIdleKeyTimeout.js +163 -0
  735. package/dist/lib/crypto/verificationSeal.d.ts +56 -0
  736. package/dist/lib/crypto/verificationSeal.js +220 -0
  737. package/dist/lib/mail/compose/composeQuoting.d.ts +88 -0
  738. package/dist/lib/mail/compose/composeQuoting.js +204 -0
  739. package/dist/lib/mail/compose/emojiData.d.ts +9 -0
  740. package/dist/lib/mail/compose/emojiData.js +18 -0
  741. package/dist/lib/mail/compose/giphyApi.d.ts +17 -0
  742. package/dist/lib/mail/compose/giphyApi.js +20 -0
  743. package/dist/lib/mail/conversationsApi.d.ts +80 -0
  744. package/dist/lib/mail/conversationsApi.js +44 -0
  745. package/dist/lib/mail/dataExportApi.d.ts +50 -0
  746. package/dist/lib/mail/dataExportApi.js +40 -0
  747. package/dist/lib/mail/directoryApi.d.ts +49 -0
  748. package/dist/lib/mail/directoryApi.js +101 -0
  749. package/dist/lib/mail/erasureRequestApi.d.ts +45 -0
  750. package/dist/lib/mail/erasureRequestApi.js +43 -0
  751. package/dist/lib/mail/flaggedMessages.d.ts +22 -0
  752. package/dist/lib/mail/flaggedMessages.js +73 -0
  753. package/dist/lib/mail/focusedInboxOverridesApi.d.ts +37 -0
  754. package/dist/lib/mail/focusedInboxOverridesApi.js +34 -0
  755. package/dist/lib/mail/labelsApi.d.ts +47 -0
  756. package/dist/lib/mail/labelsApi.js +38 -0
  757. package/dist/lib/mail/mailAddress.d.ts +27 -0
  758. package/dist/lib/mail/mailAddress.js +54 -0
  759. package/dist/lib/mail/mailApi.d.ts +850 -0
  760. package/dist/lib/mail/mailApi.js +602 -0
  761. package/dist/lib/mail/mailDetailHooks.d.ts +10 -0
  762. package/dist/lib/mail/mailDetailHooks.js +53 -0
  763. package/dist/lib/mail/mailFilterRulesApi.d.ts +76 -0
  764. package/dist/lib/mail/mailFilterRulesApi.js +45 -0
  765. package/dist/lib/mail/mailSignaturesApi.d.ts +49 -0
  766. package/dist/lib/mail/mailSignaturesApi.js +42 -0
  767. package/dist/lib/mail/mailboxAccessApi.d.ts +74 -0
  768. package/dist/lib/mail/mailboxAccessApi.js +56 -0
  769. package/dist/lib/mail/mailboxImportApi.d.ts +53 -0
  770. package/dist/lib/mail/mailboxImportApi.js +51 -0
  771. package/dist/lib/mail/messageBodySanitizer.d.ts +16 -0
  772. package/dist/lib/mail/messageBodySanitizer.js +118 -0
  773. package/dist/lib/mail/pushClient.d.ts +106 -0
  774. package/dist/lib/mail/pushClient.js +317 -0
  775. package/dist/lib/mail/sendEvents.d.ts +33 -0
  776. package/dist/lib/mail/sendEvents.js +44 -0
  777. package/dist/lib/mail/sendFailure.d.ts +16 -0
  778. package/dist/lib/mail/sendFailure.js +86 -0
  779. package/dist/lib/mail/senderListsApi.d.ts +69 -0
  780. package/dist/lib/mail/senderListsApi.js +126 -0
  781. package/dist/lib/search/queryGrammar.d.ts +51 -0
  782. package/dist/lib/search/queryGrammar.js +111 -0
  783. package/dist/lib/search/searchApi.d.ts +100 -0
  784. package/dist/lib/search/searchApi.js +107 -0
  785. package/dist/lib/search/searchScoring.d.ts +34 -0
  786. package/dist/lib/search/searchScoring.js +44 -0
  787. package/dist/lib/search/searchTier3.d.ts +64 -0
  788. package/dist/lib/search/searchTier3.js +335 -0
  789. package/dist/lib/tasks/tasksApi.d.ts +85 -0
  790. package/dist/lib/tasks/tasksApi.js +55 -0
  791. package/dist/lib/util/api.d.ts +160 -0
  792. package/dist/lib/util/api.js +251 -0
  793. package/dist/lib/util/apiClientContext.d.ts +7 -0
  794. package/dist/lib/util/apiClientContext.js +32 -0
  795. package/dist/lib/util/apiQuery.d.ts +32 -0
  796. package/dist/lib/util/apiQuery.js +42 -0
  797. package/dist/lib/util/clipboard.d.ts +7 -0
  798. package/dist/lib/util/clipboard.js +56 -0
  799. package/dist/lib/util/dateInput.d.ts +6 -0
  800. package/dist/lib/util/dateInput.js +14 -0
  801. package/dist/lib/util/timeZone.d.ts +12 -0
  802. package/dist/lib/util/timeZone.js +32 -0
  803. package/dist/lib/util/useCopyToClipboard.d.ts +12 -0
  804. package/dist/lib/util/useCopyToClipboard.js +34 -0
  805. package/dist/lib/util/useIsMobile.d.ts +10 -0
  806. package/dist/lib/util/useIsMobile.js +29 -0
  807. package/dist/lib/videoconf/videoMeetingsApi.d.ts +116 -0
  808. package/dist/lib/videoconf/videoMeetingsApi.js +49 -0
  809. package/lib/admin/auditLogApi.ts +48 -0
  810. package/lib/admin/distributionListsApi.ts +77 -0
  811. package/lib/admin/domainsApi.ts +113 -0
  812. package/lib/admin/escrowAccessRequestsApi.ts +110 -0
  813. package/lib/admin/escrowAuditLogApi.ts +101 -0
  814. package/lib/admin/escrowScopesApi.ts +112 -0
  815. package/lib/admin/leftoverMailboxApi.ts +120 -0
  816. package/lib/admin/mailboxPolicyApi.ts +38 -0
  817. package/lib/admin/matterExportApi.ts +62 -0
  818. package/lib/admin/matterSearchApi.ts +35 -0
  819. package/lib/admin/mattersApi.ts +86 -0
  820. package/lib/admin/pluginsApi.ts +339 -0
  821. package/lib/admin/retentionPolicyApi.ts +46 -0
  822. package/lib/admin/setupApi.ts +40 -0
  823. package/lib/admin/transportRulesApi.ts +106 -0
  824. package/lib/appearance/preferencesApi.ts +335 -0
  825. package/lib/auth/profileApi.ts +77 -0
  826. package/lib/auth/session.ts +238 -0
  827. package/lib/branding/brandingApi.ts +97 -0
  828. package/lib/branding/useBranding.ts +81 -0
  829. package/lib/calendar/calendarApi.ts +309 -0
  830. package/lib/calendar/calendarColors.ts +45 -0
  831. package/lib/calendar/calendarDragIds.ts +112 -0
  832. package/lib/calendar/calendarMutations.ts +236 -0
  833. package/lib/calendar/eventDescription.ts +211 -0
  834. package/lib/calendar/freeBusyApi.ts +197 -0
  835. package/lib/calendar/inviteApi.ts +154 -0
  836. package/lib/calendar/recurrence.ts +285 -0
  837. package/lib/components/avatar/ContactAvatar.tsx +47 -0
  838. package/lib/components/buttons/Button.tsx +40 -0
  839. package/lib/components/buttons/CopyButton.tsx +45 -0
  840. package/lib/components/feedback/Alert.tsx +13 -0
  841. package/lib/components/feedback/Skeleton.tsx +38 -0
  842. package/lib/components/forms/FormField.tsx +23 -0
  843. package/lib/components/navigation/BottomTabBar.tsx +66 -0
  844. package/lib/components/overlays/Drawer.tsx +72 -0
  845. package/lib/components/overlays/Modal.tsx +64 -0
  846. package/lib/components/overlays/PopoverPortal.tsx +74 -0
  847. package/lib/components/overlays/overlayStack.ts +165 -0
  848. package/lib/components/pickers/MiniDatePicker.tsx +90 -0
  849. package/lib/contacts/contactsApi.ts +289 -0
  850. package/lib/contacts/vcard.ts +197 -0
  851. package/lib/crypto/composeSecurity.ts +140 -0
  852. package/lib/crypto/encoding.ts +36 -0
  853. package/lib/crypto/escrowKeys.ts +74 -0
  854. package/lib/crypto/idleTimeout.ts +49 -0
  855. package/lib/crypto/keySession.ts +483 -0
  856. package/lib/crypto/keys.ts +105 -0
  857. package/lib/crypto/keyvaultApi.ts +674 -0
  858. package/lib/crypto/masterKey.ts +134 -0
  859. package/lib/crypto/masterKeyWraps.ts +269 -0
  860. package/lib/crypto/messageSecurity.ts +600 -0
  861. package/lib/crypto/mime.ts +568 -0
  862. package/lib/crypto/passkeyUnlock.ts +103 -0
  863. package/lib/crypto/passwordUnlock.ts +98 -0
  864. package/lib/crypto/recoveryCode.ts +93 -0
  865. package/lib/crypto/signingProviderApi.ts +135 -0
  866. package/lib/crypto/smime.ts +459 -0
  867. package/lib/crypto/smimeMessage.ts +491 -0
  868. package/lib/crypto/useIdleKeyTimeout.ts +176 -0
  869. package/lib/crypto/verificationSeal.ts +288 -0
  870. package/lib/mail/compose/composeQuoting.ts +243 -0
  871. package/lib/mail/compose/emojiData.ts +34 -0
  872. package/lib/mail/compose/giphyApi.ts +31 -0
  873. package/lib/mail/conversationsApi.ts +123 -0
  874. package/lib/mail/dataExportApi.ts +73 -0
  875. package/lib/mail/directoryApi.ts +161 -0
  876. package/lib/mail/erasureRequestApi.ts +71 -0
  877. package/lib/mail/flaggedMessages.ts +80 -0
  878. package/lib/mail/focusedInboxOverridesApi.ts +64 -0
  879. package/lib/mail/labelsApi.ts +71 -0
  880. package/lib/mail/mailAddress.ts +76 -0
  881. package/lib/mail/mailApi.ts +1286 -0
  882. package/lib/mail/mailDetailHooks.ts +57 -0
  883. package/lib/mail/mailFilterRulesApi.ts +116 -0
  884. package/lib/mail/mailSignaturesApi.ts +84 -0
  885. package/lib/mail/mailboxAccessApi.ts +106 -0
  886. package/lib/mail/mailboxImportApi.ts +87 -0
  887. package/lib/mail/messageBodySanitizer.ts +129 -0
  888. package/lib/mail/pushClient.ts +375 -0
  889. package/lib/mail/sendEvents.ts +72 -0
  890. package/lib/mail/sendFailure.ts +98 -0
  891. package/lib/mail/senderListsApi.ts +161 -0
  892. package/lib/search/queryGrammar.ts +179 -0
  893. package/lib/search/searchApi.ts +199 -0
  894. package/lib/search/searchScoring.ts +46 -0
  895. package/lib/search/searchTier3.ts +406 -0
  896. package/lib/tasks/tasksApi.ts +128 -0
  897. package/lib/util/api.ts +318 -0
  898. package/lib/util/apiClientContext.ts +35 -0
  899. package/lib/util/apiQuery.ts +61 -0
  900. package/lib/util/clipboard.ts +55 -0
  901. package/lib/util/dateInput.ts +15 -0
  902. package/lib/util/timeZone.ts +33 -0
  903. package/lib/util/useCopyToClipboard.ts +48 -0
  904. package/lib/util/useIsMobile.ts +34 -0
  905. package/lib/videoconf/videoMeetingsApi.ts +144 -0
  906. package/package.json +10 -4
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Typed wrappers over `@rapidmx/restapi`'s `EscrowAccessRequest` route (`BaseEscrowAccessRequestRoute`) —
3
+ * a bespoke (non-`CRUDRoute`) route: no `update`/`delete`/`count`, and `create()` only ever accepts
4
+ * `{matterId, mailboxUid}` (everything else is derived server-side). Holder-gated throughout, same as
5
+ * `mattersApi.ts`. `find()`/`findById()` auto-scope to matters under scopes the caller holds; `approve()`/
6
+ * `deny()` mutate in place and return the updated request; `material()` is only ever readable once the
7
+ * request is `approved`/`fulfilled`, and returns still-encrypted `MasterKeyWraps` this server can't
8
+ * decrypt either — see `EscrowAccessMaterial`'s own doc comment.
9
+ */
10
+ import { ApiClient } from "../util/api.js";
11
+ import { ListParams, RequestListParams } from "../util/apiQuery.js";
12
+ export type { ListParams, RequestListParams };
13
+ export interface EscrowAccessRequestApproval {
14
+ holderUserUid: string;
15
+ /** ISO 8601 timestamp. */
16
+ approvedAt: string;
17
+ }
18
+ export type EscrowAccessRequestStatus = "pending" | "approved" | "denied" | "fulfilled";
19
+ export interface EscrowAccessRequest {
20
+ uid: string;
21
+ version: number;
22
+ dateCreated: string;
23
+ dateModified: string;
24
+ matterId: string;
25
+ mailboxUid: string;
26
+ requestedByUserUid: string;
27
+ approvals: EscrowAccessRequestApproval[];
28
+ /** Snapshotted from `EscrowScope.requiredHolders` at creation time — see this type's own restapi doc
29
+ * comment on why it's never re-read live. */
30
+ requiredHoldersAtCreation: number;
31
+ status: EscrowAccessRequestStatus;
32
+ /** Set the first time `getAccessRequestMaterial()` is successfully called — informational only. */
33
+ fulfilledAt?: string;
34
+ deniedByUserUid?: string;
35
+ deniedAt?: string;
36
+ }
37
+ /** Mirrors `@rapidmx/restapi`'s `MasterKeyWrap` — same shape `crypto/keyvaultApi.ts` already defines for
38
+ * the mailbox-owner side of this feature, duplicated here rather than cross-imported (same convention
39
+ * every other `*Api.ts` wrapper in this package already follows for overlapping wire shapes). */
40
+ export interface MasterKeyWrap {
41
+ method: "password" | "passkey" | "recovery" | "escrow";
42
+ methodId?: string;
43
+ escrowScopeId?: string;
44
+ ciphertext: string;
45
+ nonce: string;
46
+ salt: string;
47
+ kdf: string;
48
+ schemeVersion: number;
49
+ createdAt: number;
50
+ }
51
+ /** The wire shape `getAccessRequestMaterial()` returns — only ever the escrow-method wraps scoped to the
52
+ * matter's own escrow scope, never `wrappedKeys` or any other unlock method. This app deliberately never
53
+ * attempts to decrypt these — they're surfaced as-is for the holder to copy into their own offline
54
+ * tooling, per `specs/end-to-end_encryption.md`'s "this server never holds the scope's private key". */
55
+ export interface EscrowAccessMaterial {
56
+ masterKeyWraps: MasterKeyWrap[];
57
+ }
58
+ /** `client`, given by every function below, is an explicit `ApiClient` from `createApiClient()` (e.g. one
59
+ * account of a multi-account app) to call instead of the default global `apiFetch()` - see `withClient()`'s
60
+ * own doc comment in `util/api.ts`. Omitted (the default), every function here behaves exactly as before. */
61
+ /** Newest first. Every request belongs to one Matter, so `params.matterId` narrows the list to that
62
+ * Matter's requests (still only ever within scopes the caller holds). */
63
+ export declare function listAccessRequests(params?: RequestListParams, client?: ApiClient): Promise<EscrowAccessRequest[]>;
64
+ export declare function getAccessRequest(uid: string, client?: ApiClient): Promise<EscrowAccessRequest>;
65
+ export interface CreateAccessRequestInput {
66
+ matterId: string;
67
+ mailboxUid: string;
68
+ }
69
+ /** The requester's own creation counts as their first approval — auto-approved immediately if
70
+ * `EscrowScope.requiredHolders` is `1`. */
71
+ export declare function createAccessRequest(input: CreateAccessRequestInput, client?: ApiClient): Promise<EscrowAccessRequest>;
72
+ /** 409s if the request isn't `pending`; 400s if the caller already approved it. */
73
+ export declare function approveAccessRequest(uid: string, client?: ApiClient): Promise<EscrowAccessRequest>;
74
+ /** 409s if the request isn't `pending`. */
75
+ export declare function denyAccessRequest(uid: string, client?: ApiClient): Promise<EscrowAccessRequest>;
76
+ /** 403s ("Dual control threshold not yet met.") unless the request is `approved`/`fulfilled`. Marks the
77
+ * request `fulfilled` server-side as a side effect of a successful call, and records an
78
+ * `EscrowAuditAction.MATERIAL_READ` entry — see `escrowAuditLogApi.ts`. */
79
+ export declare function getAccessRequestMaterial(uid: string, client?: ApiClient): Promise<EscrowAccessMaterial>;
@@ -0,0 +1,46 @@
1
+ ///////////////////////////////////////////////////////////////////////////////
2
+ // Copyright (C) 2026 Jean-Philippe Steinmetz
3
+ // SPDX-License-Identifier: MPL-2.0
4
+ ///////////////////////////////////////////////////////////////////////////////
5
+ /**
6
+ * Typed wrappers over `@rapidmx/restapi`'s `EscrowAccessRequest` route (`BaseEscrowAccessRequestRoute`) —
7
+ * a bespoke (non-`CRUDRoute`) route: no `update`/`delete`/`count`, and `create()` only ever accepts
8
+ * `{matterId, mailboxUid}` (everything else is derived server-side). Holder-gated throughout, same as
9
+ * `mattersApi.ts`. `find()`/`findById()` auto-scope to matters under scopes the caller holds; `approve()`/
10
+ * `deny()` mutate in place and return the updated request; `material()` is only ever readable once the
11
+ * request is `approved`/`fulfilled`, and returns still-encrypted `MasterKeyWraps` this server can't
12
+ * decrypt either — see `EscrowAccessMaterial`'s own doc comment.
13
+ */
14
+ import { withClient } from "../util/api.js";
15
+ import { buildQuery } from "../util/apiQuery.js";
16
+ /** `client`, given by every function below, is an explicit `ApiClient` from `createApiClient()` (e.g. one
17
+ * account of a multi-account app) to call instead of the default global `apiFetch()` - see `withClient()`'s
18
+ * own doc comment in `util/api.ts`. Omitted (the default), every function here behaves exactly as before. */
19
+ /** Newest first. Every request belongs to one Matter, so `params.matterId` narrows the list to that
20
+ * Matter's requests (still only ever within scopes the caller holds). */
21
+ export function listAccessRequests(params = {}, client) {
22
+ const { matterId, ...paging } = params;
23
+ return withClient(client, `/escrow/access-requests?${buildQuery(paging, matterId ? { matterId } : {})}`);
24
+ }
25
+ export function getAccessRequest(uid, client) {
26
+ return withClient(client, `/escrow/access-requests/${encodeURIComponent(uid)}`);
27
+ }
28
+ /** The requester's own creation counts as their first approval — auto-approved immediately if
29
+ * `EscrowScope.requiredHolders` is `1`. */
30
+ export function createAccessRequest(input, client) {
31
+ return withClient(client, "/escrow/access-requests", { method: "POST", body: JSON.stringify(input) });
32
+ }
33
+ /** 409s if the request isn't `pending`; 400s if the caller already approved it. */
34
+ export function approveAccessRequest(uid, client) {
35
+ return withClient(client, `/escrow/access-requests/${encodeURIComponent(uid)}/approve`, { method: "POST" });
36
+ }
37
+ /** 409s if the request isn't `pending`. */
38
+ export function denyAccessRequest(uid, client) {
39
+ return withClient(client, `/escrow/access-requests/${encodeURIComponent(uid)}/deny`, { method: "POST" });
40
+ }
41
+ /** 403s ("Dual control threshold not yet met.") unless the request is `approved`/`fulfilled`. Marks the
42
+ * request `fulfilled` server-side as a side effect of a successful call, and records an
43
+ * `EscrowAuditAction.MATERIAL_READ` entry — see `escrowAuditLogApi.ts`. */
44
+ export function getAccessRequestMaterial(uid, client) {
45
+ return withClient(client, `/escrow/access-requests/${encodeURIComponent(uid)}/material`);
46
+ }
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Typed wrappers over `@rapidmx/restapi`'s `EscrowAuditLogEntry` route (`BaseEscrowAuditLogRoute`) — read
3
+ * only, same posture as `auditLogApi.ts`: `create`/`update`/`delete`/`truncate` unconditionally 403 for
4
+ * every caller, trusted included (the only writer is restapi's own internal `recordEscrowAuditEntry()`),
5
+ * so there is no write function here to mirror. `find`/`get` auto-scope to matters under scopes the
6
+ * caller holds (unfiltered for a trusted admin); `verifyAuditChain()` (`GET /verify`) is
7
+ * `@RequiresTrustedRole()`-only server-side — this wrapper applies no gating of its own, the server
8
+ * enforces it and a non-trusted caller simply gets a 403 `ApiRequestError` back.
9
+ */
10
+ import { ApiClient } from "../util/api.js";
11
+ import { ListParams } from "../util/apiQuery.js";
12
+ export type { ListParams };
13
+ /** The lifecycle event an `EscrowAuditLogEntry` records — mirrors `@rapidmx/restapi`'s `EscrowAuditAction`
14
+ * enum values exactly, including a Matter-scoped eDiscovery export's lifecycle (`matter_export.*`, whose
15
+ * `requestId` is the `MatterExportRequest` uid). Deliberately excludes a denied access request (nothing was
16
+ * ever granted or used there); that goes through the ordinary `AuditLogEntry` (`auditLogApi.ts`) instead. */
17
+ export type EscrowAuditAction = "escrow_access_request.created" | "escrow_access_request.approved" | "matter_export.requested" | "matter_export.ready" | "matter_export.failed" | "escrow_access_request.material_read";
18
+ export interface EscrowAuditLogEntry {
19
+ uid: string;
20
+ version: number;
21
+ dateCreated: string;
22
+ dateModified: string;
23
+ /** Monotonic, global (not per-scope) sequence number. */
24
+ sequence: number;
25
+ /** The immediately-preceding entry's `hash` — `undefined` only for the very first entry
26
+ * (`sequence === 0`). */
27
+ previousHash?: string;
28
+ /** Hex digest over this entry's own content plus `previousHash`, computed with `hashAlgorithm`. */
29
+ hash: string;
30
+ /** The scheme `hash` was computed with. Absent = a legacy entry verified with plain SHA-256. */
31
+ hashAlgorithm?: EscrowAuditHashAlgorithm;
32
+ action: EscrowAuditAction;
33
+ holderUserUid: string;
34
+ matterId: string;
35
+ mailboxUid: string;
36
+ requestId: string;
37
+ /** ISO 8601 timestamp. */
38
+ occurredAt: string;
39
+ details?: Record<string, unknown>;
40
+ }
41
+ /** `client`, given by every function below, is an explicit `ApiClient` from `createApiClient()` (e.g. one
42
+ * account of a multi-account app) to call instead of the default global `apiFetch()` - see `withClient()`'s
43
+ * own doc comment in `util/api.ts`. Omitted (the default), every function here behaves exactly as before. */
44
+ export declare function listAuditLogEntries(params?: ListParams, client?: ApiClient): Promise<EscrowAuditLogEntry[]>;
45
+ export declare function getAuditLogEntry(uid: string, client?: ApiClient): Promise<EscrowAuditLogEntry>;
46
+ /** Mirrors `@rapidmx/restapi`'s `EscrowAuditHashAlgorithm` enum values. */
47
+ export type EscrowAuditHashAlgorithm = "sha256" | "hmac-sha256";
48
+ /** Why the chain failed verification - mirrors `@rapidmx/restapi`'s `EscrowAuditVerificationFailure`
49
+ * (`util/EscrowAuditUtils.ts`): `link_mismatch` (an entry deleted/inserted/reordered), `hash_mismatch` (an
50
+ * entry edited), `unknown_algorithm`, `algorithm_downgrade` (an unkeyed entry after an HMAC one),
51
+ * `hmac_key_unavailable` (server can't check HMAC entries), `truncated` (entries deleted from the tail),
52
+ * `head_mismatch`, `head_mac_mismatch` (forged/edited head record), `head_missing`. */
53
+ export type EscrowAuditVerificationFailure = "link_mismatch" | "hash_mismatch" | "unknown_algorithm" | "algorithm_downgrade" | "hmac_key_unavailable" | "truncated" | "head_mismatch" | "head_mac_mismatch" | "head_missing";
54
+ export interface EscrowAuditVerificationResult {
55
+ valid: boolean;
56
+ /** The lowest `sequence` at which the chain breaks, if `valid` is `false`. */
57
+ brokenAtSequence?: number;
58
+ /** Why the chain is invalid, when `valid` is `false`. A newer server may add values - treat an
59
+ * unrecognized one as a generic verification failure. */
60
+ reason?: EscrowAuditVerificationFailure | (string & {});
61
+ }
62
+ /** Walks the entire hash chain end to end. `@RequiresTrustedRole()`-only server-side, deliberately not
63
+ * holder-accessible — the chain is global across every scope, so `brokenAtSequence` would leak the
64
+ * existence/volume of *other* scopes' escrow activity to a holder who only has standing to know about
65
+ * their own scope. A non-trusted caller gets a 403 `ApiRequestError`, same as any other gated endpoint. */
66
+ export declare function verifyAuditChain(client?: ApiClient): Promise<EscrowAuditVerificationResult>;
@@ -0,0 +1,31 @@
1
+ ///////////////////////////////////////////////////////////////////////////////
2
+ // Copyright (C) 2026 Jean-Philippe Steinmetz
3
+ // SPDX-License-Identifier: MPL-2.0
4
+ ///////////////////////////////////////////////////////////////////////////////
5
+ /**
6
+ * Typed wrappers over `@rapidmx/restapi`'s `EscrowAuditLogEntry` route (`BaseEscrowAuditLogRoute`) — read
7
+ * only, same posture as `auditLogApi.ts`: `create`/`update`/`delete`/`truncate` unconditionally 403 for
8
+ * every caller, trusted included (the only writer is restapi's own internal `recordEscrowAuditEntry()`),
9
+ * so there is no write function here to mirror. `find`/`get` auto-scope to matters under scopes the
10
+ * caller holds (unfiltered for a trusted admin); `verifyAuditChain()` (`GET /verify`) is
11
+ * `@RequiresTrustedRole()`-only server-side — this wrapper applies no gating of its own, the server
12
+ * enforces it and a non-trusted caller simply gets a 403 `ApiRequestError` back.
13
+ */
14
+ import { withClient } from "../util/api.js";
15
+ import { buildQuery } from "../util/apiQuery.js";
16
+ /** `client`, given by every function below, is an explicit `ApiClient` from `createApiClient()` (e.g. one
17
+ * account of a multi-account app) to call instead of the default global `apiFetch()` - see `withClient()`'s
18
+ * own doc comment in `util/api.ts`. Omitted (the default), every function here behaves exactly as before. */
19
+ export function listAuditLogEntries(params = {}, client) {
20
+ return withClient(client, `/escrow/audit-log?${buildQuery(params)}`);
21
+ }
22
+ export function getAuditLogEntry(uid, client) {
23
+ return withClient(client, `/escrow/audit-log/${encodeURIComponent(uid)}`);
24
+ }
25
+ /** Walks the entire hash chain end to end. `@RequiresTrustedRole()`-only server-side, deliberately not
26
+ * holder-accessible — the chain is global across every scope, so `brokenAtSequence` would leak the
27
+ * existence/volume of *other* scopes' escrow activity to a holder who only has standing to know about
28
+ * their own scope. A non-trusted caller gets a 403 `ApiRequestError`, same as any other gated endpoint. */
29
+ export function verifyAuditChain(client) {
30
+ return withClient(client, "/escrow/audit-log/verify");
31
+ }
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Typed wrappers over `@rapidmx/restapi`'s `EscrowScope` CRUD route (`BaseEscrowScopeRoute`) —
3
+ * trusted-role-only for every action (create/update/delete/find/count/findById). Configuring *who counts
4
+ * as a holder*, the dual-control threshold, and the scope's own public key is an administrative act,
5
+ * deliberately separate from actually holding the eDiscovery/compliance role (see `mattersApi.ts`,
6
+ * `specs/end-to-end_encryption.md`'s "Separation of duties") — this file is consumed only by
7
+ * `apps/admin/escrow-scopes/*`, never by the holder-facing `apps/escrow` area.
8
+ */
9
+ import { ApiClient } from "../util/api.js";
10
+ import { ListParams } from "../util/apiQuery.js";
11
+ import type { ResolvedPrincipal } from "../mail/mailboxAccessApi.js";
12
+ export type { ListParams };
13
+ export type { ResolvedPrincipal };
14
+ /** A scope's own public key — mirrors `@rapidmx/restapi`'s `EscrowScopePublicKey` exactly. An admin
15
+ * pastes in the fields of an already-issued certificate here; nothing in this app generates a keypair. */
16
+ export interface EscrowScopePublicKey {
17
+ /** Base64-encoded public key (DER-encoded X.509 certificate, or raw key material). */
18
+ publicKey: string;
19
+ type: string;
20
+ /** SHA-256 fingerprint of the key, hex encoded. */
21
+ fingerprint: string;
22
+ /** UTC timestamp (epoch ms) at which this key becomes valid. */
23
+ notBefore: number;
24
+ /** UTC timestamp (epoch ms) at which this key expires. */
25
+ notAfter: number;
26
+ /** UTC timestamp (epoch ms) at which this key was revoked, if applicable. */
27
+ revokedAt?: number;
28
+ }
29
+ export interface EscrowScope {
30
+ uid: string;
31
+ version: number;
32
+ dateCreated: string;
33
+ dateModified: string;
34
+ name: string;
35
+ description?: string;
36
+ publicKey: EscrowScopePublicKey;
37
+ /** Uids of every user in the eDiscovery/compliance role for this scope. At least one required. */
38
+ holderUserUids: string[];
39
+ /** M in "M-of-N dual control" — must be between 1 and `holderUserUids.length` inclusive. */
40
+ requiredHolders: number;
41
+ notifySubjectOnAccess: boolean;
42
+ }
43
+ /** `client`, given by every function below, is an explicit `ApiClient` from `createApiClient()` (e.g. one
44
+ * account of a multi-account app) to call instead of the default global `apiFetch()` - see `withClient()`'s
45
+ * own doc comment in `util/api.ts`. Omitted (the default), every function here behaves exactly as before. */
46
+ export declare function listEscrowScopes(params?: ListParams, client?: ApiClient): Promise<EscrowScope[]>;
47
+ /**
48
+ * Who a typed principal - a mailbox address, an auth-server username or e-mail alias, or a user uid - is, for the
49
+ * escrow-scope admin screen to confirm before adding them to `holderUserUids`. Rejects with a 404 `ApiRequestError`
50
+ * ("No user found for ...") for nobody. Trusted-role-only (`BaseEscrowScopeRoute.resolveHolder()` in
51
+ * `@rapidmx/restapi`) - never weaker than `createEscrowScope()`/`updateEscrowScope()`'s own gate on this same field.
52
+ */
53
+ export declare function resolveEscrowScopeHolder(principal: string, client?: ApiClient): Promise<ResolvedPrincipal>;
54
+ export declare function getEscrowScope(uid: string, client?: ApiClient): Promise<EscrowScope>;
55
+ export interface CreateEscrowScopeInput {
56
+ name: string;
57
+ description?: string;
58
+ publicKey: EscrowScopePublicKey;
59
+ holderUserUids: string[];
60
+ requiredHolders: number;
61
+ notifySubjectOnAccess?: boolean;
62
+ }
63
+ export declare function createEscrowScope(input: CreateEscrowScopeInput, client?: ApiClient): Promise<EscrowScope>;
64
+ export interface UpdateEscrowScopeInput {
65
+ uid: string;
66
+ version: number;
67
+ name?: string;
68
+ description?: string;
69
+ publicKey?: EscrowScopePublicKey;
70
+ holderUserUids?: string[];
71
+ requiredHolders?: number;
72
+ notifySubjectOnAccess?: boolean;
73
+ }
74
+ export declare function updateEscrowScope(input: UpdateEscrowScopeInput, client?: ApiClient): Promise<EscrowScope>;
75
+ /** 409s if a `Matter` still references this scope (`BaseEscrowScopeRoute.delete()`'s own referencing-Matter
76
+ * guard) — the caller is expected to surface that `ApiRequestError` as-is, same as every other CRUD wrapper
77
+ * in this package. */
78
+ export declare function deleteEscrowScope(uid: string, version: number, client?: ApiClient): Promise<void>;
@@ -0,0 +1,50 @@
1
+ ///////////////////////////////////////////////////////////////////////////////
2
+ // Copyright (C) 2026 Jean-Philippe Steinmetz
3
+ // SPDX-License-Identifier: MPL-2.0
4
+ ///////////////////////////////////////////////////////////////////////////////
5
+ /**
6
+ * Typed wrappers over `@rapidmx/restapi`'s `EscrowScope` CRUD route (`BaseEscrowScopeRoute`) —
7
+ * trusted-role-only for every action (create/update/delete/find/count/findById). Configuring *who counts
8
+ * as a holder*, the dual-control threshold, and the scope's own public key is an administrative act,
9
+ * deliberately separate from actually holding the eDiscovery/compliance role (see `mattersApi.ts`,
10
+ * `specs/end-to-end_encryption.md`'s "Separation of duties") — this file is consumed only by
11
+ * `apps/admin/escrow-scopes/*`, never by the holder-facing `apps/escrow` area.
12
+ */
13
+ import { withClient } from "../util/api.js";
14
+ import { buildQuery } from "../util/apiQuery.js";
15
+ /** `client`, given by every function below, is an explicit `ApiClient` from `createApiClient()` (e.g. one
16
+ * account of a multi-account app) to call instead of the default global `apiFetch()` - see `withClient()`'s
17
+ * own doc comment in `util/api.ts`. Omitted (the default), every function here behaves exactly as before. */
18
+ export function listEscrowScopes(params = {}, client) {
19
+ return withClient(client, `/escrow/scopes?${buildQuery(params)}`);
20
+ }
21
+ /**
22
+ * Who a typed principal - a mailbox address, an auth-server username or e-mail alias, or a user uid - is, for the
23
+ * escrow-scope admin screen to confirm before adding them to `holderUserUids`. Rejects with a 404 `ApiRequestError`
24
+ * ("No user found for ...") for nobody. Trusted-role-only (`BaseEscrowScopeRoute.resolveHolder()` in
25
+ * `@rapidmx/restapi`) - never weaker than `createEscrowScope()`/`updateEscrowScope()`'s own gate on this same field.
26
+ */
27
+ export function resolveEscrowScopeHolder(principal, client) {
28
+ return withClient(client, `/escrow/scopes/resolve-holder?principal=${encodeURIComponent(principal)}`);
29
+ }
30
+ export function getEscrowScope(uid, client) {
31
+ return withClient(client, `/escrow/scopes/${encodeURIComponent(uid)}`);
32
+ }
33
+ export function createEscrowScope(input, client) {
34
+ return withClient(client, "/escrow/scopes", {
35
+ method: "POST",
36
+ body: JSON.stringify({ notifySubjectOnAccess: false, ...input }),
37
+ });
38
+ }
39
+ export function updateEscrowScope(input, client) {
40
+ return withClient(client, `/escrow/scopes/${encodeURIComponent(input.uid)}`, {
41
+ method: "PUT",
42
+ body: JSON.stringify(input),
43
+ });
44
+ }
45
+ /** 409s if a `Matter` still references this scope (`BaseEscrowScopeRoute.delete()`'s own referencing-Matter
46
+ * guard) — the caller is expected to surface that `ApiRequestError` as-is, same as every other CRUD wrapper
47
+ * in this package. */
48
+ export function deleteEscrowScope(uid, version, client) {
49
+ return withClient(client, `/escrow/scopes/${encodeURIComponent(uid)}?version=${version}`, { method: "DELETE" });
50
+ }
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Typed wrappers over what `@rapidmx/restapi` offers for the data a deleted mailbox leaves behind. Deleting a mailbox removes
3
+ * only the mailbox itself: its folders and everything in them stay, and a new mailbox at the same address is refused (409)
4
+ * until that data is erased. An administrator (a trusted role AND an elevated session, like every admin-console call) lists
5
+ * what is left (`listLeftoverMailboxes()`) and erases it (`eraseLeftoverMailbox()`), which files an already approved erasure
6
+ * request that the server's `ErasureExecutionJob` then runs - poll it with `getErasureRequest()` (`erasureRequestApi.ts`).
7
+ * The erasure is irreversible; a legal hold on the address makes the server refuse it (409, its message names the matter).
8
+ */
9
+ import { ApiClient } from "../util/api.js";
10
+ import type { DataSubjectErasureRequest, DataSubjectErasureStatus } from "../mail/erasureRequestApi.js";
11
+ /** The newest erasure request filed for a leftover address. */
12
+ export interface LeftoverErasure {
13
+ uid: string;
14
+ status: DataSubjectErasureStatus;
15
+ dateCreated: string;
16
+ }
17
+ /** A deleted mailbox that still has data. */
18
+ export interface LeftoverMailbox {
19
+ /** The deleted mailbox's uid - its address. */
20
+ mailboxUid: string;
21
+ /** Folders it still has (trashed ones included). */
22
+ folderCount: number;
23
+ /** Messages it still has (trashed ones included). */
24
+ messageCount: number;
25
+ /** The newest erasure request filed for the address, when there is one. */
26
+ erasure?: LeftoverErasure;
27
+ }
28
+ /** One page of `listLeftoverMailboxes()`. */
29
+ export interface LeftoverMailboxPage {
30
+ items: LeftoverMailbox[];
31
+ /** Pass as `after` to continue; absent at the end of the list. */
32
+ next?: string;
33
+ }
34
+ export interface LeftoverMailboxListParams {
35
+ /** At most this many (the server's default is 50 and its ceiling 100). */
36
+ limit?: number;
37
+ /** Continue after this mailbox uid - a previous page's `next`. */
38
+ after?: string;
39
+ }
40
+ /** `client`, given by every function below, is an explicit `ApiClient` from `createApiClient()` (e.g. one
41
+ * account of a multi-account app) to call instead of the default global `apiFetch()` - see `withClient()`'s
42
+ * own doc comment in `util/api.ts`. Omitted (the default), every function here behaves exactly as before. */
43
+ /** Lists the deleted mailboxes that still have data, sorted by address. Administrators only (403 otherwise). */
44
+ export declare function listLeftoverMailboxes(params?: LeftoverMailboxListParams, client?: ApiClient): Promise<LeftoverMailboxPage>;
45
+ /**
46
+ * Erases what the deleted mailbox `mailboxUid` (its address) left behind - permanently. Answers the erasure request, already
47
+ * approved; it runs in the background, so poll `getErasureRequest()` until its status is `completed` (or `denied`). Repeating
48
+ * the call returns the request already filed. Rejects with 409 while a legal hold covers the address (the message names the
49
+ * matter) or when a mailbox exists at the address (a live mailbox is never erased this way), and with 404 when nothing is left.
50
+ */
51
+ export declare function eraseLeftoverMailbox(mailboxUid: string, client?: ApiClient): Promise<DataSubjectErasureRequest>;
52
+ /** Why creating a mailbox at an address was refused because of the data a deleted mailbox left there. */
53
+ export type LeftoverConflict = {
54
+ /** The data is still there: erasing it (`eraseLeftoverMailbox()`) is the way out. */
55
+ reason: "mailbox-data-remaining";
56
+ mailboxUid?: string;
57
+ } | {
58
+ /** An erasure of it is approved or running and has not finished: wait for it (poll `erasure.uid`). */
59
+ reason: "mailbox-data-erasing";
60
+ mailboxUid?: string;
61
+ erasure: {
62
+ uid: string;
63
+ status: DataSubjectErasureStatus;
64
+ };
65
+ };
66
+ /**
67
+ * What `error` says about leftover data, when it is the 409 that `createMailbox()` answers for an address whose deleted mailbox
68
+ * still has data - `undefined` for any other error. Read defensively: the server's body is untrusted data, and an error from
69
+ * before the server said why (no `reason`) is not recognised.
70
+ */
71
+ export declare function leftoverConflictOf(error: unknown): LeftoverConflict | undefined;
72
+ /** Whether an erasure request is no longer going to change: it finished or was refused. */
73
+ export declare function isErasureSettled(status: DataSubjectErasureStatus): boolean;
@@ -0,0 +1,67 @@
1
+ ///////////////////////////////////////////////////////////////////////////////
2
+ // Copyright (C) 2026 Jean-Philippe Steinmetz
3
+ // SPDX-License-Identifier: MPL-2.0
4
+ ///////////////////////////////////////////////////////////////////////////////
5
+ /**
6
+ * Typed wrappers over what `@rapidmx/restapi` offers for the data a deleted mailbox leaves behind. Deleting a mailbox removes
7
+ * only the mailbox itself: its folders and everything in them stay, and a new mailbox at the same address is refused (409)
8
+ * until that data is erased. An administrator (a trusted role AND an elevated session, like every admin-console call) lists
9
+ * what is left (`listLeftoverMailboxes()`) and erases it (`eraseLeftoverMailbox()`), which files an already approved erasure
10
+ * request that the server's `ErasureExecutionJob` then runs - poll it with `getErasureRequest()` (`erasureRequestApi.ts`).
11
+ * The erasure is irreversible; a legal hold on the address makes the server refuse it (409, its message names the matter).
12
+ */
13
+ import { ApiRequestError, withClient } from "../util/api.js";
14
+ /** `client`, given by every function below, is an explicit `ApiClient` from `createApiClient()` (e.g. one
15
+ * account of a multi-account app) to call instead of the default global `apiFetch()` - see `withClient()`'s
16
+ * own doc comment in `util/api.ts`. Omitted (the default), every function here behaves exactly as before. */
17
+ /** Lists the deleted mailboxes that still have data, sorted by address. Administrators only (403 otherwise). */
18
+ export function listLeftoverMailboxes(params = {}, client) {
19
+ const query = new URLSearchParams();
20
+ if (params.limit !== undefined) {
21
+ query.set("limit", String(params.limit));
22
+ }
23
+ if (params.after !== undefined) {
24
+ query.set("after", params.after);
25
+ }
26
+ const suffix = query.toString();
27
+ return withClient(client, `/mail/mailboxes/leftover${suffix ? `?${suffix}` : ""}`);
28
+ }
29
+ /**
30
+ * Erases what the deleted mailbox `mailboxUid` (its address) left behind - permanently. Answers the erasure request, already
31
+ * approved; it runs in the background, so poll `getErasureRequest()` until its status is `completed` (or `denied`). Repeating
32
+ * the call returns the request already filed. Rejects with 409 while a legal hold covers the address (the message names the
33
+ * matter) or when a mailbox exists at the address (a live mailbox is never erased this way), and with 404 when nothing is left.
34
+ */
35
+ export function eraseLeftoverMailbox(mailboxUid, client) {
36
+ return withClient(client, `/mail/erasure-requests/leftover`, {
37
+ method: "POST",
38
+ body: JSON.stringify({ mailboxUid }),
39
+ });
40
+ }
41
+ /**
42
+ * What `error` says about leftover data, when it is the 409 that `createMailbox()` answers for an address whose deleted mailbox
43
+ * still has data - `undefined` for any other error. Read defensively: the server's body is untrusted data, and an error from
44
+ * before the server said why (no `reason`) is not recognised.
45
+ */
46
+ export function leftoverConflictOf(error) {
47
+ if (!(error instanceof ApiRequestError) || error.status !== 409) {
48
+ return undefined;
49
+ }
50
+ const body = error.details;
51
+ const mailboxUid = typeof body?.mailboxUid === "string" ? body.mailboxUid : undefined;
52
+ if (body?.reason === "mailbox-data-remaining") {
53
+ return { reason: "mailbox-data-remaining", mailboxUid };
54
+ }
55
+ if (body?.reason === "mailbox-data-erasing" && typeof body.erasure?.uid === "string" && typeof body.erasure.status === "string") {
56
+ return {
57
+ reason: "mailbox-data-erasing",
58
+ mailboxUid,
59
+ erasure: { uid: body.erasure.uid, status: body.erasure.status },
60
+ };
61
+ }
62
+ return undefined;
63
+ }
64
+ /** Whether an erasure request is no longer going to change: it finished or was refused. */
65
+ export function isErasureSettled(status) {
66
+ return status === "completed" || status === "denied";
67
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Typed wrappers over `@rapidmx/restapi`'s deployment-wide `MailboxPolicy` singleton (`BaseMailboxPolicyRoute`,
3
+ * mounted at `system/mailbox-policy`). `GET` is readable by any authenticated user and always returns the values in
4
+ * effect (server config fills anything never saved), along with the server's current config values for the same
5
+ * fields as `defaults`; `PUT` is trusted-admin-only.
6
+ */
7
+ import { ApiClient } from "../util/api.js";
8
+ /** Mirrors `@rapidmx/restapi`'s `PublicMailboxPolicy`. */
9
+ export interface MailboxPolicy {
10
+ /** The quota a newly created mailbox starts with, in bytes. */
11
+ defaultQuotaBytes: number;
12
+ /** Whether a signed-in user without a mailbox may create their own on first sign-in. */
13
+ autoProvisionEnabled: boolean;
14
+ /** The quota of a mailbox a user creates for themselves, in bytes. */
15
+ autoProvisionQuotaBytes: number;
16
+ /**
17
+ * What the server's config says for each field right now - what a "reset" puts it back to. Absent from a server
18
+ * that predates it, in which case there is nothing to reset to.
19
+ */
20
+ defaults?: Omit<MailboxPolicy, "defaults">;
21
+ }
22
+ /** `client`, given by every function below, is an explicit `ApiClient` from `createApiClient()` (e.g. one
23
+ * account of a multi-account app) to call instead of the default global `apiFetch()` - see `withClient()`'s
24
+ * own doc comment in `util/api.ts`. Omitted (the default), every function here behaves exactly as before. */
25
+ export declare function getMailboxPolicy(client?: ApiClient): Promise<MailboxPolicy>;
26
+ /** Partial patch - only supplied fields change. */
27
+ export declare function updateMailboxPolicy(patch: Partial<Omit<MailboxPolicy, "defaults">>, client?: ApiClient): Promise<MailboxPolicy>;
@@ -0,0 +1,21 @@
1
+ ///////////////////////////////////////////////////////////////////////////////
2
+ // Copyright (C) 2026 Jean-Philippe Steinmetz
3
+ // SPDX-License-Identifier: MPL-2.0
4
+ ///////////////////////////////////////////////////////////////////////////////
5
+ /**
6
+ * Typed wrappers over `@rapidmx/restapi`'s deployment-wide `MailboxPolicy` singleton (`BaseMailboxPolicyRoute`,
7
+ * mounted at `system/mailbox-policy`). `GET` is readable by any authenticated user and always returns the values in
8
+ * effect (server config fills anything never saved), along with the server's current config values for the same
9
+ * fields as `defaults`; `PUT` is trusted-admin-only.
10
+ */
11
+ import { withClient } from "../util/api.js";
12
+ /** `client`, given by every function below, is an explicit `ApiClient` from `createApiClient()` (e.g. one
13
+ * account of a multi-account app) to call instead of the default global `apiFetch()` - see `withClient()`'s
14
+ * own doc comment in `util/api.ts`. Omitted (the default), every function here behaves exactly as before. */
15
+ export function getMailboxPolicy(client) {
16
+ return withClient(client, "/system/mailbox-policy");
17
+ }
18
+ /** Partial patch - only supplied fields change. */
19
+ export function updateMailboxPolicy(patch, client) {
20
+ return withClient(client, "/system/mailbox-policy", { method: "PUT", body: JSON.stringify(patch) });
21
+ }
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Typed wrappers over `@rapidmx/restapi`'s eDiscovery Matter export (`BaseMatterExportRequestRoute`,
3
+ * mounted at `escrow/matter-export-requests`) — holder-gated throughout (`requireEscrowHolder()` against
4
+ * the matter's own `escrowScopeId`), never admin-gated. Lives under `admin/` only because that's where
5
+ * every other Matter/Escrow-family wrapper in this package lives (see `mattersApi.ts`'s own doc
6
+ * comment) — consumed exclusively by `apps/escrow`. Export runs asynchronously (restapi's own
7
+ * `MatterExportJob`, not this client) — `createMatterExportRequest()` only stages a `pending` request;
8
+ * poll `listMatterExportRequests()` for `status` to become `"ready"` (or `"failed"`).
9
+ */
10
+ import { ApiClient } from "../util/api.js";
11
+ import { RequestListParams } from "../util/apiQuery.js";
12
+ export type { RequestListParams };
13
+ export type MatterExportStatus = "pending" | "processing" | "ready" | "failed";
14
+ export interface MatterExportRequest {
15
+ uid: string;
16
+ version: number;
17
+ dateCreated: string;
18
+ dateModified: string;
19
+ matterId: string;
20
+ requestedByUserUid: string;
21
+ status: MatterExportStatus;
22
+ blobKey?: string;
23
+ errorMessage?: string;
24
+ /** How many times the server job has claimed this request into `"processing"` (a stalled claim is reclaimed
25
+ * back to `"pending"` until the job's max attempts, then marked `"failed"`). */
26
+ processingAttempts?: number;
27
+ }
28
+ /** `client`, given by every function below that isn't a plain URL builder, is an explicit `ApiClient` from
29
+ * `createApiClient()` (e.g. one account of a multi-account app) to call instead of the default global
30
+ * `apiFetch()` - see `withClient()`'s own doc comment in `util/api.ts`. Omitted (the default), every
31
+ * function here behaves exactly as before. */
32
+ export declare function createMatterExportRequest(matterId: string, client?: ApiClient): Promise<MatterExportRequest>;
33
+ /** Scoped server-side to matters under scopes the caller holds — never all requests, even for a trusted
34
+ * admin who isn't also a holder. Newest first; `params` pages through them (`limit` capped at 500
35
+ * server-side) and/or narrows to one `matterId`. */
36
+ export declare function listMatterExportRequests(params?: RequestListParams, client?: ApiClient): Promise<MatterExportRequest[]>;
37
+ export declare function getMatterExportRequest(uid: string, client?: ApiClient): Promise<MatterExportRequest>;
38
+ /** A plain URL, not a fetch wrapper — same "let the browser download it natively" pattern
39
+ * `dataExportApi.ts`'s `exportRequestDownloadUrl()` already establishes. 404s until `status === "ready"`. */
40
+ export declare function matterExportRequestDownloadUrl(uid: string): string;
@@ -0,0 +1,39 @@
1
+ ///////////////////////////////////////////////////////////////////////////////
2
+ // Copyright (C) 2026 Jean-Philippe Steinmetz
3
+ // SPDX-License-Identifier: MPL-2.0
4
+ ///////////////////////////////////////////////////////////////////////////////
5
+ /**
6
+ * Typed wrappers over `@rapidmx/restapi`'s eDiscovery Matter export (`BaseMatterExportRequestRoute`,
7
+ * mounted at `escrow/matter-export-requests`) — holder-gated throughout (`requireEscrowHolder()` against
8
+ * the matter's own `escrowScopeId`), never admin-gated. Lives under `admin/` only because that's where
9
+ * every other Matter/Escrow-family wrapper in this package lives (see `mattersApi.ts`'s own doc
10
+ * comment) — consumed exclusively by `apps/escrow`. Export runs asynchronously (restapi's own
11
+ * `MatterExportJob`, not this client) — `createMatterExportRequest()` only stages a `pending` request;
12
+ * poll `listMatterExportRequests()` for `status` to become `"ready"` (or `"failed"`).
13
+ */
14
+ import { apiUrl, withClient } from "../util/api.js";
15
+ import { buildRequestListQuery } from "../util/apiQuery.js";
16
+ /** `client`, given by every function below that isn't a plain URL builder, is an explicit `ApiClient` from
17
+ * `createApiClient()` (e.g. one account of a multi-account app) to call instead of the default global
18
+ * `apiFetch()` - see `withClient()`'s own doc comment in `util/api.ts`. Omitted (the default), every
19
+ * function here behaves exactly as before. */
20
+ export function createMatterExportRequest(matterId, client) {
21
+ return withClient(client, `/escrow/matter-export-requests`, {
22
+ method: "POST",
23
+ body: JSON.stringify({ matterId }),
24
+ });
25
+ }
26
+ /** Scoped server-side to matters under scopes the caller holds — never all requests, even for a trusted
27
+ * admin who isn't also a holder. Newest first; `params` pages through them (`limit` capped at 500
28
+ * server-side) and/or narrows to one `matterId`. */
29
+ export function listMatterExportRequests(params = {}, client) {
30
+ return withClient(client, `/escrow/matter-export-requests${buildRequestListQuery(params)}`);
31
+ }
32
+ export function getMatterExportRequest(uid, client) {
33
+ return withClient(client, `/escrow/matter-export-requests/${encodeURIComponent(uid)}`);
34
+ }
35
+ /** A plain URL, not a fetch wrapper — same "let the browser download it natively" pattern
36
+ * `dataExportApi.ts`'s `exportRequestDownloadUrl()` already establishes. 404s until `status === "ready"`. */
37
+ export function matterExportRequestDownloadUrl(uid) {
38
+ return apiUrl(`/escrow/matter-export-requests/${encodeURIComponent(uid)}/download`);
39
+ }