@rapidmx/web-client 0.21.0 → 0.23.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 (897) hide show
  1. package/README.md +48 -14
  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 +3 -3
  5. package/apps/admin/data-requests/index.tsx +8 -8
  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 +6 -6
  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 +7 -7
  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 +6 -6
  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 +5 -5
  20. package/apps/admin/quarantine/index.tsx +5 -5
  21. package/apps/admin/retention-policy/index.tsx +3 -3
  22. package/apps/admin/signing-certificates/index.tsx +5 -5
  23. package/apps/admin/transport-rules/[uid].tsx +5 -5
  24. package/apps/admin/transport-rules/_transportRuleConfig.tsx +3 -3
  25. package/apps/admin/transport-rules/index.tsx +4 -4
  26. package/apps/admin/transport-rules/new/index.tsx +5 -5
  27. package/apps/escrow/_layout.tsx +1 -1
  28. package/apps/escrow/audit-log/index.tsx +4 -4
  29. package/apps/escrow/index.tsx +4 -4
  30. package/apps/escrow/matters/[uid].tsx +10 -10
  31. package/apps/escrow/matters/new/index.tsx +6 -6
  32. package/apps/shared/appearance/AppearanceForm.tsx +3 -3
  33. package/apps/shared/appearance/AppearanceHead.tsx +1 -1
  34. package/apps/shared/appearance/AppearanceProvider.tsx +3 -3
  35. package/apps/shared/appearance/appearanceCache.ts +1 -1
  36. package/apps/shared/appearance/appearanceContext.ts +1 -1
  37. package/apps/shared/appearance/theme.ts +1 -1
  38. package/apps/shared/auth/adminAccess.ts +1 -1
  39. package/apps/shared/calendar/bookingPlugin.ts +1 -1
  40. package/apps/shared/calendar/calendarLiveUpdates.ts +1 -1
  41. package/apps/shared/calendar/calendarReminders.ts +1 -1
  42. package/apps/shared/calendar/useCalendarReminders.ts +1 -1
  43. package/apps/shared/components/admin/diagnostics/DiagnosticsManager.tsx +1 -1
  44. package/apps/shared/components/admin/diagnostics/InstalledPlugins.tsx +2 -2
  45. package/apps/shared/components/admin/diagnostics/LogsPanel.tsx +2 -2
  46. package/apps/shared/components/admin/diagnostics/PackagesTable.tsx +1 -1
  47. package/apps/shared/components/admin/diagnostics/RuntimePanel.tsx +1 -1
  48. package/apps/shared/components/admin/diagnostics/SystemPanel.tsx +2 -2
  49. package/apps/shared/components/admin/diagnostics/VersionsPanel.tsx +1 -1
  50. package/apps/shared/components/admin/diagnostics/diagnosticsApi.ts +1 -1
  51. package/apps/shared/components/admin/diagnostics/format.ts +1 -1
  52. package/apps/shared/components/admin/diagnostics/logClient.ts +1 -1
  53. package/apps/shared/components/admin/distributionLists/MemberListCard.tsx +4 -4
  54. package/apps/shared/components/admin/elevation.ts +1 -1
  55. package/apps/shared/components/admin/escrowScopes/EscrowScopeKeyAndHoldersFields.tsx +3 -3
  56. package/apps/shared/components/admin/layout/AdminShell.tsx +8 -8
  57. package/apps/shared/components/admin/mailboxes/EraseLeftoverDataDialog.tsx +6 -6
  58. package/apps/shared/components/admin/mailboxes/EscrowScopeCard.tsx +10 -8
  59. package/apps/shared/components/admin/mailboxes/LeftoverMailboxesSection.tsx +4 -4
  60. package/apps/shared/components/admin/mailboxes/MailboxTable.tsx +1 -1
  61. package/apps/shared/components/admin/mailboxes/ResourceSettingsCard.tsx +19 -14
  62. package/apps/shared/components/admin/mailboxes/ShareAccessCard.tsx +5 -5
  63. package/apps/shared/components/admin/settings/BrandingForm.tsx +5 -5
  64. package/apps/shared/components/admin/settings/DomainDnsSetup.tsx +5 -5
  65. package/apps/shared/components/admin/settings/EncryptionPolicyForm.tsx +4 -4
  66. package/apps/shared/components/admin/settings/LoadedSettingsForm.tsx +2 -2
  67. package/apps/shared/components/admin/settings/MailboxCreateForm.tsx +32 -27
  68. package/apps/shared/components/admin/settings/MailboxPolicyForm.tsx +4 -4
  69. package/apps/shared/components/admin/settings/PluginsManager.tsx +5 -5
  70. package/apps/shared/components/admin/settings/RetentionPolicyForm.tsx +5 -5
  71. package/apps/shared/components/admin/setup/EscrowSetupStep.tsx +7 -7
  72. package/apps/shared/components/admin/setup/SetupWizard.tsx +28 -24
  73. package/apps/shared/components/admin/signOut.ts +1 -1
  74. package/apps/shared/components/admin/usePagedList.tsx +2 -2
  75. package/apps/shared/components/calendar/AppointmentQuickForm.tsx +3 -3
  76. package/apps/shared/components/calendar/CalendarListSidebar.tsx +3 -3
  77. package/apps/shared/components/calendar/DescriptionEditor.tsx +1 -1
  78. package/apps/shared/components/calendar/EventDescriptionView.tsx +1 -1
  79. package/apps/shared/components/calendar/EventDetails.tsx +16 -14
  80. package/apps/shared/components/calendar/EventEditor.tsx +54 -39
  81. package/apps/shared/components/calendar/EventExpandedForm.tsx +3 -3
  82. package/apps/shared/components/calendar/EventFormParts.tsx +2 -2
  83. package/apps/shared/components/calendar/EventModal.tsx +5 -5
  84. package/apps/shared/components/calendar/EventQuickForm.tsx +3 -3
  85. package/apps/shared/components/calendar/EventShell.tsx +1 -1
  86. package/apps/shared/components/calendar/FindATime.tsx +6 -4
  87. package/apps/shared/components/calendar/GuestInput.tsx +2 -2
  88. package/apps/shared/components/calendar/MonthView.tsx +2 -2
  89. package/apps/shared/components/calendar/QuickCreateFaces.tsx +1 -1
  90. package/apps/shared/components/calendar/QuickFaceFrame.tsx +1 -1
  91. package/apps/shared/components/calendar/RecurrenceEditor.tsx +2 -2
  92. package/apps/shared/components/calendar/RequestChangeForm.tsx +8 -6
  93. package/apps/shared/components/calendar/ResourcePicker.tsx +7 -5
  94. package/apps/shared/components/calendar/SplitDayView.tsx +1 -1
  95. package/apps/shared/components/calendar/TaskQuickForm.tsx +23 -18
  96. package/apps/shared/components/calendar/TimeGridView.tsx +5 -3
  97. package/apps/shared/components/calendar/allDay.ts +2 -2
  98. package/apps/shared/components/calendar/eventDialogFields.ts +3 -3
  99. package/apps/shared/components/calendar/eventForm.ts +3 -3
  100. package/apps/shared/components/calendar/eventFormat.ts +3 -3
  101. package/apps/shared/components/calendar/findTimeGrid.ts +2 -2
  102. package/apps/shared/components/calendar/layout/CalendarShell.tsx +11 -9
  103. package/apps/shared/components/contacts/ContactDetailPane.tsx +4 -4
  104. package/apps/shared/components/contacts/ContactForm.tsx +27 -17
  105. package/apps/shared/components/contacts/ContactsSidebar.tsx +7 -5
  106. package/apps/shared/components/contacts/KeyChangeReview.tsx +5 -5
  107. package/apps/shared/components/contacts/contactKeys.ts +3 -3
  108. package/apps/shared/components/contacts/layout/ContactsShell.tsx +9 -7
  109. package/apps/shared/components/escrow/layout/EscrowShell.tsx +6 -6
  110. package/apps/shared/components/forms/StringListField.tsx +1 -1
  111. package/apps/shared/components/layout/AppShell.tsx +12 -10
  112. package/apps/shared/components/layout/BrandingChrome.tsx +1 -1
  113. package/apps/shared/components/layout/KeyEnrollmentGate.tsx +9 -9
  114. package/apps/shared/components/layout/MailboxProvisioning.tsx +8 -6
  115. package/apps/shared/components/layout/RecoveryCodeUnlock.tsx +9 -9
  116. package/apps/shared/components/layout/ThemeSwitch.tsx +1 -1
  117. package/apps/shared/components/layout/UnlockPromptProvider.tsx +6 -6
  118. package/apps/shared/components/layout/UserMenu.tsx +6 -4
  119. package/apps/shared/components/mail/ConversationList.tsx +25 -10
  120. package/apps/shared/components/mail/ConversationThreadPane.tsx +33 -17
  121. package/apps/shared/components/mail/InviteCard.tsx +11 -9
  122. package/apps/shared/components/mail/LazyReadingPane.tsx +2 -2
  123. package/apps/shared/components/mail/MailAddress.tsx +1 -1
  124. package/apps/shared/components/mail/MailListToolbar.tsx +2 -2
  125. package/apps/shared/components/mail/MailSelectionBar.tsx +2 -2
  126. package/apps/shared/components/mail/MenuButton.tsx +1 -1
  127. package/apps/shared/components/mail/MessageDetailPane.tsx +69 -48
  128. package/apps/shared/components/mail/MoveToFolderDialog.tsx +8 -6
  129. package/apps/shared/components/mail/OutboxRowStatus.tsx +1 -1
  130. package/apps/shared/components/mail/PermanentDeleteDialog.tsx +2 -2
  131. package/apps/shared/components/mail/compose/ComposeContext.tsx +14 -3
  132. package/apps/shared/components/mail/compose/ComposeWindow.tsx +34 -30
  133. package/apps/shared/components/mail/compose/ComposeWindowPlaceholder.tsx +4 -4
  134. package/apps/shared/components/mail/compose/EmojiPicker.tsx +2 -2
  135. package/apps/shared/components/mail/compose/GifPicker.tsx +3 -3
  136. package/apps/shared/components/mail/compose/RecipientInput.tsx +1 -1
  137. package/apps/shared/components/mail/compose/ScheduleSendPicker.tsx +1 -1
  138. package/apps/shared/components/mail/compose/encryptionRequirement.ts +2 -2
  139. package/apps/shared/components/mail/compose/quotedBody.ts +5 -5
  140. package/apps/shared/components/mail/compose/recipients.ts +1 -1
  141. package/apps/shared/components/mail/invite/InviteRowChip.tsx +10 -14
  142. package/apps/shared/components/mail/invite/InviteRsvpPopover.tsx +11 -9
  143. package/apps/shared/components/mail/invite/InviteTimeline.tsx +1 -1
  144. package/apps/shared/components/mail/invite/ProposeTimeForm.tsx +2 -2
  145. package/apps/shared/components/mail/invite/inviteFormat.ts +2 -2
  146. package/apps/shared/components/mail/invite/inviteStore.ts +14 -6
  147. package/apps/shared/components/mail/labelMenu.tsx +9 -7
  148. package/apps/shared/components/mail/layout/MailShell.tsx +4 -4
  149. package/apps/shared/components/mail/listPreferences.ts +2 -2
  150. package/apps/shared/components/mail/pinnedSigners.ts +45 -19
  151. package/apps/shared/components/mail/reading/EncryptedBody.tsx +2 -2
  152. package/apps/shared/components/mail/reading/MessageBody.tsx +6 -6
  153. package/apps/shared/components/mail/reading/MessageCard.tsx +3 -3
  154. package/apps/shared/components/mail/reading/MessageSourceDialog.tsx +3 -3
  155. package/apps/shared/components/mail/reading/PendingMessageCard.tsx +1 -1
  156. package/apps/shared/components/mail/reading/bodyContent.ts +3 -3
  157. package/apps/shared/components/mail/reading/bodyHtml.ts +1 -1
  158. package/apps/shared/components/mail/reading/conversationPrint.ts +76 -0
  159. package/apps/shared/components/mail/reading/messageExport.ts +1 -1
  160. package/apps/shared/components/mail/reading/printMessage.ts +46 -9
  161. package/apps/shared/components/mail/reading/useMessageActions.ts +28 -21
  162. package/apps/shared/components/mail/unreadStyle.tsx +1 -1
  163. package/apps/shared/components/mail/verificationSeals.ts +16 -12
  164. package/apps/shared/components/mail/writableMailboxes.ts +14 -7
  165. package/apps/shared/components/rules/RuleBuilder.tsx +1 -1
  166. package/apps/shared/components/settings/SigningCertificateCard.tsx +4 -4
  167. package/apps/shared/components/settings/layout/SettingsShell.tsx +8 -6
  168. package/apps/shared/components/sharing/PrincipalListField.tsx +1 -1
  169. package/apps/shared/components/sharing/PrincipalPicker.tsx +1 -1
  170. package/apps/shared/components/sharing/PrincipalResolver.tsx +4 -4
  171. package/apps/shared/components/tasks/TasksSidebar.tsx +7 -5
  172. package/apps/shared/components/tasks/layout/TasksShell.tsx +9 -7
  173. package/apps/shared/keyboard/ShortcutsDialog.tsx +1 -1
  174. package/apps/shared/keyboard/keymap.ts +1 -0
  175. package/apps/shared/mail/decryptedMessages.ts +116 -0
  176. package/apps/shared/mail/findWellKnownFolderUid.ts +6 -4
  177. package/apps/shared/mail/folderCounts.ts +8 -4
  178. package/apps/shared/mail/folderOfType.ts +5 -3
  179. package/apps/shared/mail/folderTree.ts +1 -1
  180. package/apps/shared/mail/listSnapshots.ts +2 -2
  181. package/apps/shared/mail/messageReadState.ts +6 -5
  182. package/apps/shared/mail/newMailNotifications.ts +2 -2
  183. package/apps/shared/mail/outbox/composeBridge.ts +2 -2
  184. package/apps/shared/mail/outbox/outboxState.ts +1 -1
  185. package/apps/shared/mail/outbox/outgoingReplies.ts +2 -2
  186. package/apps/shared/mail/outbox/sendDecision.ts +2 -2
  187. package/apps/shared/mail/outbox/sendJob.ts +40 -35
  188. package/apps/shared/mail/outbox/sendOutcomes.ts +20 -15
  189. package/apps/shared/mail/outbox/useOutboxStatus.ts +5 -3
  190. package/apps/shared/mail/permanentDelete.ts +8 -7
  191. package/apps/shared/mail/primaryMailbox.ts +1 -1
  192. package/apps/shared/mail/reportNotices.ts +1 -1
  193. package/apps/shared/mail/senderBlocking.ts +36 -20
  194. package/apps/shared/mail/useMailConnection.ts +12 -10
  195. package/apps/shared/mail/useMailLiveUpdates.ts +3 -3
  196. package/apps/shared/mail/useMailboxUpdateAccess.ts +35 -11
  197. package/apps/shared/mail/useMarkMessageRead.ts +14 -7
  198. package/apps/shared/mail/useNewMailNotifications.ts +1 -1
  199. package/apps/shared/mail/usePermanentDelete.tsx +5 -3
  200. package/apps/shared/navigation/pageTitle.ts +1 -1
  201. package/apps/shared/notifications/NotificationCenter.tsx +1 -1
  202. package/apps/shared/notifications/NotificationHistoryDialog.tsx +2 -2
  203. package/apps/shared/notifications/apiErrors.ts +2 -2
  204. package/apps/shared/notifications/pushStatus.ts +1 -1
  205. package/apps/shared/notifications/systemErrors.ts +1 -1
  206. package/apps/shared/search/LocalIndexLifecycle.tsx +18 -12
  207. package/apps/shared/search/crossMailboxSearch.ts +3 -3
  208. package/apps/shared/search/localIndexBuilder.ts +24 -12
  209. package/apps/shared/search/localIndexKey.ts +1 -1
  210. package/apps/shared/search/localIndexRpcClient.ts +150 -30
  211. package/apps/shared/search/localIndexTransport.ts +84 -0
  212. package/apps/shared/search/localIndexWorker.ts +1 -1
  213. package/apps/shared/search/searchTier2.ts +3 -3
  214. package/apps/shared/signing/enrollmentTracker.ts +3 -3
  215. package/apps/shared/signing/enrollmentView.ts +1 -1
  216. package/apps/shared/signing/signingInfo.ts +1 -1
  217. package/apps/shared/signing/useSigningEnrollmentWatcher.ts +6 -4
  218. package/apps/shared/styles/app.css +14 -23
  219. package/apps/www/_layout.tsx +2 -2
  220. package/apps/www/calendar/index.tsx +20 -18
  221. package/apps/www/contacts/[uid].tsx +8 -6
  222. package/apps/www/contacts/index.tsx +19 -17
  223. package/apps/www/index.tsx +68 -48
  224. package/apps/www/messages/[uid].tsx +11 -9
  225. package/apps/www/settings/auto-reply/index.tsx +6 -4
  226. package/apps/www/settings/blocked-senders/index.tsx +9 -7
  227. package/apps/www/settings/encryption/index.tsx +38 -32
  228. package/apps/www/settings/filters/[uid].tsx +19 -14
  229. package/apps/www/settings/filters/_mailFilterRuleConfig.tsx +2 -2
  230. package/apps/www/settings/filters/index.tsx +4 -4
  231. package/apps/www/settings/filters/new/index.tsx +10 -8
  232. package/apps/www/settings/labels/index.tsx +12 -10
  233. package/apps/www/settings/privacy/index.tsx +18 -14
  234. package/apps/www/settings/profile/index.tsx +16 -11
  235. package/apps/www/settings/read-receipts/index.tsx +17 -12
  236. package/apps/www/settings/sharing/index.tsx +6 -6
  237. package/apps/www/settings/signatures/[uid].tsx +5 -5
  238. package/apps/www/settings/signatures/index.tsx +4 -4
  239. package/apps/www/settings/signatures/new/index.tsx +4 -4
  240. package/apps/www/settings/signatures/signatureDefaults.ts +1 -1
  241. package/apps/www/tasks/index.tsx +28 -23
  242. package/dist/apps/admin/_layout.d.ts +1 -1
  243. package/dist/apps/admin/_layout.js +1 -1
  244. package/dist/apps/admin/audit-log/index.d.ts +1 -1
  245. package/dist/apps/admin/audit-log/index.js +4 -4
  246. package/dist/apps/admin/branding/index.js +3 -3
  247. package/dist/apps/admin/data-requests/index.js +8 -8
  248. package/dist/apps/admin/distribution-lists/[uid].js +3 -3
  249. package/dist/apps/admin/distribution-lists/index.js +4 -4
  250. package/dist/apps/admin/distribution-lists/new/index.js +5 -5
  251. package/dist/apps/admin/domains/[uid].js +6 -6
  252. package/dist/apps/admin/domains/index.js +4 -4
  253. package/dist/apps/admin/domains/new/index.js +5 -5
  254. package/dist/apps/admin/encryption-policy/index.js +1 -1
  255. package/dist/apps/admin/escrow-scopes/[uid].d.ts +1 -1
  256. package/dist/apps/admin/escrow-scopes/[uid].js +7 -7
  257. package/dist/apps/admin/escrow-scopes/index.js +4 -4
  258. package/dist/apps/admin/escrow-scopes/new/index.js +5 -5
  259. package/dist/apps/admin/index.js +6 -6
  260. package/dist/apps/admin/ingest-queue/index.js +4 -4
  261. package/dist/apps/admin/mailbox-policy/index.js +1 -1
  262. package/dist/apps/admin/mailboxes/[uid].js +5 -5
  263. package/dist/apps/admin/quarantine/index.js +5 -5
  264. package/dist/apps/admin/retention-policy/index.js +3 -3
  265. package/dist/apps/admin/signing-certificates/index.js +5 -5
  266. package/dist/apps/admin/transport-rules/[uid].js +5 -5
  267. package/dist/apps/admin/transport-rules/_transportRuleConfig.d.ts +1 -1
  268. package/dist/apps/admin/transport-rules/_transportRuleConfig.js +2 -2
  269. package/dist/apps/admin/transport-rules/index.js +4 -4
  270. package/dist/apps/admin/transport-rules/new/index.js +5 -5
  271. package/dist/apps/escrow/_layout.d.ts +1 -1
  272. package/dist/apps/escrow/audit-log/index.d.ts +1 -1
  273. package/dist/apps/escrow/audit-log/index.js +4 -4
  274. package/dist/apps/escrow/index.js +4 -4
  275. package/dist/apps/escrow/matters/[uid].js +10 -10
  276. package/dist/apps/escrow/matters/new/index.js +6 -6
  277. package/dist/apps/shared/appearance/AppearanceForm.js +3 -3
  278. package/dist/apps/shared/appearance/AppearanceHead.js +1 -1
  279. package/dist/apps/shared/appearance/AppearanceProvider.d.ts +1 -1
  280. package/dist/apps/shared/appearance/AppearanceProvider.js +3 -3
  281. package/dist/apps/shared/appearance/appearanceCache.d.ts +1 -1
  282. package/dist/apps/shared/appearance/appearanceCache.js +1 -1
  283. package/dist/apps/shared/appearance/appearanceContext.d.ts +1 -1
  284. package/dist/apps/shared/appearance/theme.d.ts +1 -1
  285. package/dist/apps/shared/auth/adminAccess.js +1 -1
  286. package/dist/apps/shared/calendar/bookingPlugin.js +1 -1
  287. package/dist/apps/shared/calendar/calendarLiveUpdates.d.ts +1 -1
  288. package/dist/apps/shared/calendar/calendarReminders.d.ts +1 -1
  289. package/dist/apps/shared/calendar/useCalendarReminders.js +1 -1
  290. package/dist/apps/shared/components/admin/diagnostics/DiagnosticsManager.js +1 -1
  291. package/dist/apps/shared/components/admin/diagnostics/InstalledPlugins.d.ts +1 -1
  292. package/dist/apps/shared/components/admin/diagnostics/InstalledPlugins.js +2 -2
  293. package/dist/apps/shared/components/admin/diagnostics/LogsPanel.js +2 -2
  294. package/dist/apps/shared/components/admin/diagnostics/PackagesTable.js +1 -1
  295. package/dist/apps/shared/components/admin/diagnostics/RuntimePanel.js +1 -1
  296. package/dist/apps/shared/components/admin/diagnostics/SystemPanel.js +2 -2
  297. package/dist/apps/shared/components/admin/diagnostics/VersionsPanel.js +1 -1
  298. package/dist/apps/shared/components/admin/diagnostics/diagnosticsApi.js +1 -1
  299. package/dist/apps/shared/components/admin/diagnostics/format.js +1 -1
  300. package/dist/apps/shared/components/admin/diagnostics/logClient.js +1 -1
  301. package/dist/apps/shared/components/admin/distributionLists/MemberListCard.d.ts +1 -1
  302. package/dist/apps/shared/components/admin/distributionLists/MemberListCard.js +4 -4
  303. package/dist/apps/shared/components/admin/elevation.js +1 -1
  304. package/dist/apps/shared/components/admin/escrowScopes/EscrowScopeKeyAndHoldersFields.js +3 -3
  305. package/dist/apps/shared/components/admin/layout/AdminShell.d.ts +1 -1
  306. package/dist/apps/shared/components/admin/layout/AdminShell.js +7 -7
  307. package/dist/apps/shared/components/admin/mailboxes/EraseLeftoverDataDialog.d.ts +1 -1
  308. package/dist/apps/shared/components/admin/mailboxes/EraseLeftoverDataDialog.js +6 -6
  309. package/dist/apps/shared/components/admin/mailboxes/EscrowScopeCard.d.ts +1 -1
  310. package/dist/apps/shared/components/admin/mailboxes/EscrowScopeCard.js +10 -8
  311. package/dist/apps/shared/components/admin/mailboxes/LeftoverMailboxesSection.js +4 -4
  312. package/dist/apps/shared/components/admin/mailboxes/MailboxTable.d.ts +1 -1
  313. package/dist/apps/shared/components/admin/mailboxes/ResourceSettingsCard.d.ts +1 -1
  314. package/dist/apps/shared/components/admin/mailboxes/ResourceSettingsCard.js +7 -5
  315. package/dist/apps/shared/components/admin/mailboxes/ShareAccessCard.js +5 -5
  316. package/dist/apps/shared/components/admin/settings/BrandingForm.d.ts +1 -1
  317. package/dist/apps/shared/components/admin/settings/BrandingForm.js +5 -5
  318. package/dist/apps/shared/components/admin/settings/DomainDnsSetup.d.ts +1 -1
  319. package/dist/apps/shared/components/admin/settings/DomainDnsSetup.js +5 -5
  320. package/dist/apps/shared/components/admin/settings/EncryptionPolicyForm.d.ts +1 -1
  321. package/dist/apps/shared/components/admin/settings/EncryptionPolicyForm.js +4 -4
  322. package/dist/apps/shared/components/admin/settings/LoadedSettingsForm.js +2 -2
  323. package/dist/apps/shared/components/admin/settings/MailboxCreateForm.d.ts +1 -1
  324. package/dist/apps/shared/components/admin/settings/MailboxCreateForm.js +14 -12
  325. package/dist/apps/shared/components/admin/settings/MailboxPolicyForm.d.ts +1 -1
  326. package/dist/apps/shared/components/admin/settings/MailboxPolicyForm.js +4 -4
  327. package/dist/apps/shared/components/admin/settings/PluginsManager.js +5 -5
  328. package/dist/apps/shared/components/admin/settings/RetentionPolicyForm.d.ts +1 -1
  329. package/dist/apps/shared/components/admin/settings/RetentionPolicyForm.js +5 -5
  330. package/dist/apps/shared/components/admin/setup/EscrowSetupStep.js +7 -7
  331. package/dist/apps/shared/components/admin/setup/SetupWizard.d.ts +4 -4
  332. package/dist/apps/shared/components/admin/setup/SetupWizard.js +27 -23
  333. package/dist/apps/shared/components/admin/signOut.js +1 -1
  334. package/dist/apps/shared/components/admin/usePagedList.js +2 -2
  335. package/dist/apps/shared/components/calendar/AppointmentQuickForm.js +3 -3
  336. package/dist/apps/shared/components/calendar/CalendarListSidebar.d.ts +1 -1
  337. package/dist/apps/shared/components/calendar/CalendarListSidebar.js +2 -2
  338. package/dist/apps/shared/components/calendar/DescriptionEditor.js +1 -1
  339. package/dist/apps/shared/components/calendar/EventDescriptionView.js +1 -1
  340. package/dist/apps/shared/components/calendar/EventDetails.d.ts +2 -2
  341. package/dist/apps/shared/components/calendar/EventDetails.js +16 -14
  342. package/dist/apps/shared/components/calendar/EventEditor.d.ts +2 -2
  343. package/dist/apps/shared/components/calendar/EventEditor.js +22 -20
  344. package/dist/apps/shared/components/calendar/EventExpandedForm.js +2 -2
  345. package/dist/apps/shared/components/calendar/EventFormParts.d.ts +1 -1
  346. package/dist/apps/shared/components/calendar/EventFormParts.js +1 -1
  347. package/dist/apps/shared/components/calendar/EventModal.d.ts +2 -2
  348. package/dist/apps/shared/components/calendar/EventModal.js +3 -3
  349. package/dist/apps/shared/components/calendar/EventQuickForm.js +3 -3
  350. package/dist/apps/shared/components/calendar/EventShell.js +1 -1
  351. package/dist/apps/shared/components/calendar/FindATime.js +6 -4
  352. package/dist/apps/shared/components/calendar/GuestInput.d.ts +2 -2
  353. package/dist/apps/shared/components/calendar/MonthView.d.ts +1 -1
  354. package/dist/apps/shared/components/calendar/MonthView.js +1 -1
  355. package/dist/apps/shared/components/calendar/QuickCreateFaces.js +1 -1
  356. package/dist/apps/shared/components/calendar/QuickFaceFrame.js +1 -1
  357. package/dist/apps/shared/components/calendar/RecurrenceEditor.d.ts +1 -1
  358. package/dist/apps/shared/components/calendar/RecurrenceEditor.js +1 -1
  359. package/dist/apps/shared/components/calendar/RequestChangeForm.js +8 -6
  360. package/dist/apps/shared/components/calendar/ResourcePicker.d.ts +1 -1
  361. package/dist/apps/shared/components/calendar/ResourcePicker.js +7 -5
  362. package/dist/apps/shared/components/calendar/SplitDayView.d.ts +1 -1
  363. package/dist/apps/shared/components/calendar/TaskQuickForm.d.ts +1 -1
  364. package/dist/apps/shared/components/calendar/TaskQuickForm.js +9 -7
  365. package/dist/apps/shared/components/calendar/TimeGridView.d.ts +1 -1
  366. package/dist/apps/shared/components/calendar/TimeGridView.js +2 -2
  367. package/dist/apps/shared/components/calendar/allDay.d.ts +2 -2
  368. package/dist/apps/shared/components/calendar/allDay.js +1 -1
  369. package/dist/apps/shared/components/calendar/eventDialogFields.d.ts +2 -2
  370. package/dist/apps/shared/components/calendar/eventDialogFields.js +2 -2
  371. package/dist/apps/shared/components/calendar/eventForm.d.ts +3 -3
  372. package/dist/apps/shared/components/calendar/eventFormat.d.ts +1 -1
  373. package/dist/apps/shared/components/calendar/eventFormat.js +2 -2
  374. package/dist/apps/shared/components/calendar/findTimeGrid.d.ts +1 -1
  375. package/dist/apps/shared/components/calendar/findTimeGrid.js +1 -1
  376. package/dist/apps/shared/components/calendar/layout/CalendarShell.d.ts +1 -1
  377. package/dist/apps/shared/components/calendar/layout/CalendarShell.js +11 -9
  378. package/dist/apps/shared/components/contacts/ContactDetailPane.d.ts +1 -1
  379. package/dist/apps/shared/components/contacts/ContactDetailPane.js +2 -2
  380. package/dist/apps/shared/components/contacts/ContactForm.d.ts +2 -2
  381. package/dist/apps/shared/components/contacts/ContactForm.js +12 -8
  382. package/dist/apps/shared/components/contacts/ContactsSidebar.d.ts +1 -1
  383. package/dist/apps/shared/components/contacts/ContactsSidebar.js +7 -5
  384. package/dist/apps/shared/components/contacts/KeyChangeReview.d.ts +1 -1
  385. package/dist/apps/shared/components/contacts/KeyChangeReview.js +5 -5
  386. package/dist/apps/shared/components/contacts/contactKeys.d.ts +2 -2
  387. package/dist/apps/shared/components/contacts/contactKeys.js +2 -2
  388. package/dist/apps/shared/components/contacts/layout/ContactsShell.d.ts +1 -1
  389. package/dist/apps/shared/components/contacts/layout/ContactsShell.js +9 -7
  390. package/dist/apps/shared/components/escrow/layout/EscrowShell.js +6 -6
  391. package/dist/apps/shared/components/forms/StringListField.js +1 -1
  392. package/dist/apps/shared/components/layout/AppShell.d.ts +2 -2
  393. package/dist/apps/shared/components/layout/AppShell.js +11 -9
  394. package/dist/apps/shared/components/layout/BrandingChrome.d.ts +1 -1
  395. package/dist/apps/shared/components/layout/KeyEnrollmentGate.d.ts +1 -1
  396. package/dist/apps/shared/components/layout/KeyEnrollmentGate.js +9 -9
  397. package/dist/apps/shared/components/layout/MailboxProvisioning.js +8 -6
  398. package/dist/apps/shared/components/layout/RecoveryCodeUnlock.d.ts +1 -1
  399. package/dist/apps/shared/components/layout/RecoveryCodeUnlock.js +9 -9
  400. package/dist/apps/shared/components/layout/UnlockPromptProvider.d.ts +2 -2
  401. package/dist/apps/shared/components/layout/UnlockPromptProvider.js +5 -5
  402. package/dist/apps/shared/components/layout/UserMenu.js +6 -4
  403. package/dist/apps/shared/components/mail/ConversationList.d.ts +2 -2
  404. package/dist/apps/shared/components/mail/ConversationList.js +23 -8
  405. package/dist/apps/shared/components/mail/ConversationThreadPane.d.ts +3 -3
  406. package/dist/apps/shared/components/mail/ConversationThreadPane.js +19 -13
  407. package/dist/apps/shared/components/mail/InviteCard.js +10 -8
  408. package/dist/apps/shared/components/mail/LazyReadingPane.js +2 -2
  409. package/dist/apps/shared/components/mail/MailAddress.d.ts +1 -1
  410. package/dist/apps/shared/components/mail/MailAddress.js +1 -1
  411. package/dist/apps/shared/components/mail/MailListToolbar.d.ts +2 -2
  412. package/dist/apps/shared/components/mail/MailSelectionBar.d.ts +2 -2
  413. package/dist/apps/shared/components/mail/MenuButton.js +1 -1
  414. package/dist/apps/shared/components/mail/MessageDetailPane.d.ts +3 -3
  415. package/dist/apps/shared/components/mail/MessageDetailPane.js +61 -46
  416. package/dist/apps/shared/components/mail/MoveToFolderDialog.d.ts +1 -1
  417. package/dist/apps/shared/components/mail/MoveToFolderDialog.js +8 -6
  418. package/dist/apps/shared/components/mail/OutboxRowStatus.d.ts +1 -1
  419. package/dist/apps/shared/components/mail/PermanentDeleteDialog.js +2 -2
  420. package/dist/apps/shared/components/mail/compose/ComposeContext.d.ts +10 -1
  421. package/dist/apps/shared/components/mail/compose/ComposeContext.js +4 -2
  422. package/dist/apps/shared/components/mail/compose/ComposeWindow.js +34 -30
  423. package/dist/apps/shared/components/mail/compose/ComposeWindowPlaceholder.js +4 -4
  424. package/dist/apps/shared/components/mail/compose/EmojiPicker.js +2 -2
  425. package/dist/apps/shared/components/mail/compose/GifPicker.js +3 -3
  426. package/dist/apps/shared/components/mail/compose/RecipientInput.d.ts +1 -1
  427. package/dist/apps/shared/components/mail/compose/RecipientInput.js +1 -1
  428. package/dist/apps/shared/components/mail/compose/ScheduleSendPicker.js +1 -1
  429. package/dist/apps/shared/components/mail/compose/encryptionRequirement.d.ts +2 -2
  430. package/dist/apps/shared/components/mail/compose/encryptionRequirement.js +1 -1
  431. package/dist/apps/shared/components/mail/compose/quotedBody.d.ts +3 -3
  432. package/dist/apps/shared/components/mail/compose/quotedBody.js +3 -3
  433. package/dist/apps/shared/components/mail/compose/recipients.d.ts +1 -1
  434. package/dist/apps/shared/components/mail/invite/InviteRowChip.d.ts +3 -3
  435. package/dist/apps/shared/components/mail/invite/InviteRowChip.js +7 -9
  436. package/dist/apps/shared/components/mail/invite/InviteRsvpPopover.d.ts +2 -2
  437. package/dist/apps/shared/components/mail/invite/InviteRsvpPopover.js +11 -9
  438. package/dist/apps/shared/components/mail/invite/InviteTimeline.d.ts +1 -1
  439. package/dist/apps/shared/components/mail/invite/ProposeTimeForm.d.ts +1 -1
  440. package/dist/apps/shared/components/mail/invite/ProposeTimeForm.js +1 -1
  441. package/dist/apps/shared/components/mail/invite/inviteFormat.d.ts +2 -2
  442. package/dist/apps/shared/components/mail/invite/inviteStore.d.ts +9 -3
  443. package/dist/apps/shared/components/mail/invite/inviteStore.js +13 -6
  444. package/dist/apps/shared/components/mail/labelMenu.d.ts +1 -1
  445. package/dist/apps/shared/components/mail/labelMenu.js +9 -7
  446. package/dist/apps/shared/components/mail/layout/MailShell.d.ts +1 -1
  447. package/dist/apps/shared/components/mail/layout/MailShell.js +3 -3
  448. package/dist/apps/shared/components/mail/listPreferences.d.ts +2 -2
  449. package/dist/apps/shared/components/mail/listPreferences.js +1 -1
  450. package/dist/apps/shared/components/mail/pinnedSigners.d.ts +12 -5
  451. package/dist/apps/shared/components/mail/pinnedSigners.js +37 -18
  452. package/dist/apps/shared/components/mail/reading/EncryptedBody.js +2 -2
  453. package/dist/apps/shared/components/mail/reading/MessageBody.d.ts +2 -2
  454. package/dist/apps/shared/components/mail/reading/MessageBody.js +4 -4
  455. package/dist/apps/shared/components/mail/reading/MessageCard.d.ts +1 -1
  456. package/dist/apps/shared/components/mail/reading/MessageCard.js +2 -2
  457. package/dist/apps/shared/components/mail/reading/MessageSourceDialog.js +3 -3
  458. package/dist/apps/shared/components/mail/reading/PendingMessageCard.js +1 -1
  459. package/dist/apps/shared/components/mail/reading/bodyContent.d.ts +2 -2
  460. package/dist/apps/shared/components/mail/reading/bodyContent.js +2 -2
  461. package/dist/apps/shared/components/mail/reading/bodyHtml.js +1 -1
  462. package/dist/apps/shared/components/mail/reading/conversationPrint.d.ts +15 -0
  463. package/dist/apps/shared/components/mail/reading/conversationPrint.js +69 -0
  464. package/dist/apps/shared/components/mail/reading/messageExport.js +1 -1
  465. package/dist/apps/shared/components/mail/reading/printMessage.d.ts +9 -3
  466. package/dist/apps/shared/components/mail/reading/printMessage.js +33 -6
  467. package/dist/apps/shared/components/mail/reading/useMessageActions.d.ts +1 -1
  468. package/dist/apps/shared/components/mail/reading/useMessageActions.js +18 -16
  469. package/dist/apps/shared/components/mail/unreadStyle.d.ts +1 -1
  470. package/dist/apps/shared/components/mail/verificationSeals.d.ts +27 -6
  471. package/dist/apps/shared/components/mail/verificationSeals.js +15 -11
  472. package/dist/apps/shared/components/mail/writableMailboxes.d.ts +8 -3
  473. package/dist/apps/shared/components/mail/writableMailboxes.js +12 -6
  474. package/dist/apps/shared/components/rules/RuleBuilder.js +1 -1
  475. package/dist/apps/shared/components/settings/SigningCertificateCard.d.ts +1 -1
  476. package/dist/apps/shared/components/settings/SigningCertificateCard.js +3 -3
  477. package/dist/apps/shared/components/settings/layout/SettingsShell.d.ts +1 -1
  478. package/dist/apps/shared/components/settings/layout/SettingsShell.js +8 -6
  479. package/dist/apps/shared/components/sharing/PrincipalListField.d.ts +1 -1
  480. package/dist/apps/shared/components/sharing/PrincipalPicker.d.ts +1 -1
  481. package/dist/apps/shared/components/sharing/PrincipalPicker.js +1 -1
  482. package/dist/apps/shared/components/sharing/PrincipalResolver.d.ts +1 -1
  483. package/dist/apps/shared/components/sharing/PrincipalResolver.js +3 -3
  484. package/dist/apps/shared/components/tasks/TasksSidebar.d.ts +1 -1
  485. package/dist/apps/shared/components/tasks/TasksSidebar.js +7 -5
  486. package/dist/apps/shared/components/tasks/layout/TasksShell.d.ts +1 -1
  487. package/dist/apps/shared/components/tasks/layout/TasksShell.js +9 -7
  488. package/dist/apps/shared/keyboard/ShortcutsDialog.js +1 -1
  489. package/dist/apps/shared/keyboard/keymap.d.ts +6 -0
  490. package/dist/apps/shared/keyboard/keymap.js +1 -0
  491. package/dist/apps/shared/mail/decryptedMessages.d.ts +27 -0
  492. package/dist/apps/shared/mail/decryptedMessages.js +97 -0
  493. package/dist/apps/shared/mail/findWellKnownFolderUid.d.ts +5 -3
  494. package/dist/apps/shared/mail/findWellKnownFolderUid.js +5 -4
  495. package/dist/apps/shared/mail/folderCounts.d.ts +1 -1
  496. package/dist/apps/shared/mail/folderCounts.js +6 -4
  497. package/dist/apps/shared/mail/folderOfType.d.ts +3 -2
  498. package/dist/apps/shared/mail/folderOfType.js +4 -4
  499. package/dist/apps/shared/mail/folderTree.d.ts +1 -1
  500. package/dist/apps/shared/mail/listSnapshots.d.ts +2 -2
  501. package/dist/apps/shared/mail/messageReadState.d.ts +4 -3
  502. package/dist/apps/shared/mail/messageReadState.js +5 -5
  503. package/dist/apps/shared/mail/newMailNotifications.d.ts +1 -1
  504. package/dist/apps/shared/mail/newMailNotifications.js +1 -1
  505. package/dist/apps/shared/mail/outbox/composeBridge.d.ts +2 -2
  506. package/dist/apps/shared/mail/outbox/outboxState.d.ts +1 -1
  507. package/dist/apps/shared/mail/outbox/outgoingReplies.d.ts +2 -2
  508. package/dist/apps/shared/mail/outbox/sendDecision.d.ts +2 -2
  509. package/dist/apps/shared/mail/outbox/sendDecision.js +1 -1
  510. package/dist/apps/shared/mail/outbox/sendJob.d.ts +10 -6
  511. package/dist/apps/shared/mail/outbox/sendJob.js +39 -35
  512. package/dist/apps/shared/mail/outbox/sendOutcomes.d.ts +6 -3
  513. package/dist/apps/shared/mail/outbox/sendOutcomes.js +19 -15
  514. package/dist/apps/shared/mail/outbox/useOutboxStatus.js +5 -3
  515. package/dist/apps/shared/mail/permanentDelete.d.ts +4 -3
  516. package/dist/apps/shared/mail/permanentDelete.js +8 -8
  517. package/dist/apps/shared/mail/primaryMailbox.d.ts +1 -1
  518. package/dist/apps/shared/mail/primaryMailbox.js +1 -1
  519. package/dist/apps/shared/mail/reportNotices.d.ts +1 -1
  520. package/dist/apps/shared/mail/senderBlocking.d.ts +5 -4
  521. package/dist/apps/shared/mail/senderBlocking.js +19 -16
  522. package/dist/apps/shared/mail/useMailConnection.d.ts +1 -1
  523. package/dist/apps/shared/mail/useMailConnection.js +12 -10
  524. package/dist/apps/shared/mail/useMailLiveUpdates.d.ts +2 -2
  525. package/dist/apps/shared/mail/useMailLiveUpdates.js +2 -2
  526. package/dist/apps/shared/mail/useMailboxUpdateAccess.d.ts +3 -2
  527. package/dist/apps/shared/mail/useMailboxUpdateAccess.js +31 -10
  528. package/dist/apps/shared/mail/useMarkMessageRead.d.ts +1 -1
  529. package/dist/apps/shared/mail/useMarkMessageRead.js +5 -3
  530. package/dist/apps/shared/mail/useNewMailNotifications.d.ts +1 -1
  531. package/dist/apps/shared/mail/usePermanentDelete.d.ts +1 -1
  532. package/dist/apps/shared/mail/usePermanentDelete.js +4 -2
  533. package/dist/apps/shared/navigation/pageTitle.d.ts +1 -1
  534. package/dist/apps/shared/notifications/NotificationCenter.js +1 -1
  535. package/dist/apps/shared/notifications/NotificationHistoryDialog.js +2 -2
  536. package/dist/apps/shared/notifications/apiErrors.js +2 -2
  537. package/dist/apps/shared/notifications/pushStatus.js +1 -1
  538. package/dist/apps/shared/notifications/systemErrors.js +1 -1
  539. package/dist/apps/shared/search/LocalIndexLifecycle.d.ts +2 -2
  540. package/dist/apps/shared/search/LocalIndexLifecycle.js +15 -10
  541. package/dist/apps/shared/search/crossMailboxSearch.d.ts +1 -1
  542. package/dist/apps/shared/search/crossMailboxSearch.js +2 -2
  543. package/dist/apps/shared/search/localIndexBuilder.d.ts +4 -3
  544. package/dist/apps/shared/search/localIndexBuilder.js +15 -12
  545. package/dist/apps/shared/search/localIndexKey.js +1 -1
  546. package/dist/apps/shared/search/localIndexRpcClient.d.ts +43 -31
  547. package/dist/apps/shared/search/localIndexRpcClient.js +113 -20
  548. package/dist/apps/shared/search/localIndexTransport.d.ts +77 -0
  549. package/dist/apps/shared/search/localIndexTransport.js +1 -0
  550. package/dist/apps/shared/search/localIndexWorker.d.ts +1 -1
  551. package/dist/apps/shared/search/searchTier2.d.ts +3 -3
  552. package/dist/apps/shared/signing/enrollmentTracker.d.ts +1 -1
  553. package/dist/apps/shared/signing/enrollmentTracker.js +3 -3
  554. package/dist/apps/shared/signing/enrollmentView.d.ts +1 -1
  555. package/dist/apps/shared/signing/signingInfo.d.ts +1 -1
  556. package/dist/apps/shared/signing/signingInfo.js +1 -1
  557. package/dist/apps/shared/signing/useSigningEnrollmentWatcher.d.ts +1 -1
  558. package/dist/apps/shared/signing/useSigningEnrollmentWatcher.js +5 -3
  559. package/dist/apps/shared/styles/app.css +14 -23
  560. package/dist/apps/www/_layout.d.ts +1 -1
  561. package/dist/apps/www/_layout.js +1 -1
  562. package/dist/apps/www/calendar/index.d.ts +1 -1
  563. package/dist/apps/www/calendar/index.js +20 -18
  564. package/dist/apps/www/contacts/[uid].d.ts +1 -1
  565. package/dist/apps/www/contacts/[uid].js +8 -6
  566. package/dist/apps/www/contacts/index.d.ts +1 -1
  567. package/dist/apps/www/contacts/index.js +19 -17
  568. package/dist/apps/www/index.d.ts +1 -1
  569. package/dist/apps/www/index.js +64 -50
  570. package/dist/apps/www/messages/[uid].d.ts +1 -1
  571. package/dist/apps/www/messages/[uid].js +11 -9
  572. package/dist/apps/www/settings/appearance/index.d.ts +1 -1
  573. package/dist/apps/www/settings/auto-reply/index.d.ts +1 -1
  574. package/dist/apps/www/settings/auto-reply/index.js +6 -4
  575. package/dist/apps/www/settings/blocked-senders/index.d.ts +1 -1
  576. package/dist/apps/www/settings/blocked-senders/index.js +6 -4
  577. package/dist/apps/www/settings/encryption/index.d.ts +1 -1
  578. package/dist/apps/www/settings/encryption/index.js +31 -29
  579. package/dist/apps/www/settings/filters/[uid].d.ts +1 -1
  580. package/dist/apps/www/settings/filters/[uid].js +11 -9
  581. package/dist/apps/www/settings/filters/_mailFilterRuleConfig.d.ts +2 -2
  582. package/dist/apps/www/settings/filters/index.d.ts +1 -1
  583. package/dist/apps/www/settings/filters/index.js +4 -4
  584. package/dist/apps/www/settings/filters/new/index.d.ts +1 -1
  585. package/dist/apps/www/settings/filters/new/index.js +10 -8
  586. package/dist/apps/www/settings/labels/index.d.ts +1 -1
  587. package/dist/apps/www/settings/labels/index.js +12 -10
  588. package/dist/apps/www/settings/privacy/index.d.ts +1 -1
  589. package/dist/apps/www/settings/privacy/index.js +18 -14
  590. package/dist/apps/www/settings/profile/index.d.ts +1 -1
  591. package/dist/apps/www/settings/profile/index.js +7 -5
  592. package/dist/apps/www/settings/read-receipts/index.d.ts +1 -1
  593. package/dist/apps/www/settings/read-receipts/index.js +5 -3
  594. package/dist/apps/www/settings/sharing/index.d.ts +1 -1
  595. package/dist/apps/www/settings/sharing/index.js +6 -6
  596. package/dist/apps/www/settings/signatures/[uid].d.ts +1 -1
  597. package/dist/apps/www/settings/signatures/[uid].js +5 -5
  598. package/dist/apps/www/settings/signatures/index.d.ts +1 -1
  599. package/dist/apps/www/settings/signatures/index.js +4 -4
  600. package/dist/apps/www/settings/signatures/new/index.d.ts +1 -1
  601. package/dist/apps/www/settings/signatures/new/index.js +4 -4
  602. package/dist/apps/www/settings/signatures/signatureDefaults.d.ts +1 -1
  603. package/dist/apps/www/settings/signatures/signatureDefaults.js +1 -1
  604. package/dist/apps/www/tasks/index.d.ts +1 -1
  605. package/dist/apps/www/tasks/index.js +17 -15
  606. package/dist/lib/admin/auditLogApi.d.ts +32 -0
  607. package/dist/lib/admin/auditLogApi.js +27 -0
  608. package/dist/lib/admin/distributionListsApi.d.ts +47 -0
  609. package/dist/lib/admin/distributionListsApi.js +34 -0
  610. package/dist/lib/admin/domainsApi.d.ts +75 -0
  611. package/dist/lib/admin/domainsApi.js +44 -0
  612. package/dist/lib/admin/escrowAccessRequestsApi.d.ts +79 -0
  613. package/dist/lib/admin/escrowAccessRequestsApi.js +46 -0
  614. package/dist/lib/admin/escrowAuditLogApi.d.ts +66 -0
  615. package/dist/lib/admin/escrowAuditLogApi.js +31 -0
  616. package/dist/lib/admin/escrowScopesApi.d.ts +78 -0
  617. package/dist/lib/admin/escrowScopesApi.js +50 -0
  618. package/dist/lib/admin/leftoverMailboxApi.d.ts +73 -0
  619. package/dist/lib/admin/leftoverMailboxApi.js +67 -0
  620. package/dist/lib/admin/mailboxPolicyApi.d.ts +27 -0
  621. package/dist/lib/admin/mailboxPolicyApi.js +21 -0
  622. package/dist/lib/admin/matterExportApi.d.ts +40 -0
  623. package/dist/lib/admin/matterExportApi.js +39 -0
  624. package/dist/lib/admin/matterSearchApi.d.ts +20 -0
  625. package/dist/lib/admin/matterSearchApi.js +27 -0
  626. package/dist/lib/admin/mattersApi.d.ts +56 -0
  627. package/dist/lib/admin/mattersApi.js +40 -0
  628. package/dist/lib/admin/pluginsApi.d.ts +265 -0
  629. package/dist/lib/admin/pluginsApi.js +102 -0
  630. package/dist/lib/admin/retentionPolicyApi.d.ts +32 -0
  631. package/dist/lib/admin/retentionPolicyApi.js +29 -0
  632. package/dist/lib/admin/setupApi.d.ts +23 -0
  633. package/dist/lib/admin/setupApi.js +26 -0
  634. package/dist/lib/admin/transportRulesApi.d.ts +66 -0
  635. package/dist/lib/admin/transportRulesApi.js +43 -0
  636. package/dist/lib/appearance/preferencesApi.d.ts +128 -0
  637. package/dist/lib/appearance/preferencesApi.js +257 -0
  638. package/dist/lib/auth/profileApi.d.ts +33 -0
  639. package/dist/lib/auth/profileApi.js +52 -0
  640. package/dist/lib/auth/session.d.ts +70 -0
  641. package/dist/lib/auth/session.js +210 -0
  642. package/dist/lib/branding/brandingApi.d.ts +47 -0
  643. package/dist/lib/branding/brandingApi.js +61 -0
  644. package/dist/lib/branding/useBranding.d.ts +23 -0
  645. package/dist/lib/branding/useBranding.js +65 -0
  646. package/dist/lib/calendar/calendarApi.d.ts +230 -0
  647. package/dist/lib/calendar/calendarApi.js +106 -0
  648. package/dist/lib/calendar/calendarColors.d.ts +18 -0
  649. package/dist/lib/calendar/calendarColors.js +39 -0
  650. package/dist/lib/calendar/calendarDragIds.d.ts +42 -0
  651. package/dist/lib/calendar/calendarDragIds.js +92 -0
  652. package/dist/lib/calendar/calendarMutations.d.ts +68 -0
  653. package/dist/lib/calendar/calendarMutations.js +190 -0
  654. package/dist/lib/calendar/eventDescription.d.ts +43 -0
  655. package/dist/lib/calendar/eventDescription.js +195 -0
  656. package/dist/lib/calendar/freeBusyApi.d.ts +100 -0
  657. package/dist/lib/calendar/freeBusyApi.js +119 -0
  658. package/dist/lib/calendar/inviteApi.d.ts +121 -0
  659. package/dist/lib/calendar/inviteApi.js +54 -0
  660. package/dist/lib/calendar/recurrence.d.ts +60 -0
  661. package/dist/lib/calendar/recurrence.js +225 -0
  662. package/dist/lib/components/avatar/ContactAvatar.d.ts +8 -0
  663. package/dist/lib/components/avatar/ContactAvatar.js +26 -0
  664. package/dist/lib/components/buttons/Button.d.ts +9 -0
  665. package/dist/lib/components/buttons/Button.js +14 -0
  666. package/dist/lib/components/buttons/CopyButton.d.ts +18 -0
  667. package/dist/lib/components/buttons/CopyButton.js +14 -0
  668. package/dist/lib/components/feedback/Alert.d.ts +4 -0
  669. package/dist/lib/components/feedback/Alert.js +4 -0
  670. package/dist/lib/components/feedback/Skeleton.d.ts +21 -0
  671. package/dist/lib/components/feedback/Skeleton.js +14 -0
  672. package/dist/lib/components/forms/FormField.d.ts +8 -0
  673. package/dist/lib/components/forms/FormField.js +5 -0
  674. package/dist/lib/components/navigation/BottomTabBar.d.ts +27 -0
  675. package/dist/lib/components/navigation/BottomTabBar.js +32 -0
  676. package/dist/lib/components/overlays/Drawer.d.ts +20 -0
  677. package/dist/lib/components/overlays/Drawer.js +27 -0
  678. package/dist/lib/components/overlays/Modal.d.ts +17 -0
  679. package/dist/lib/components/overlays/Modal.js +25 -0
  680. package/dist/lib/components/overlays/PopoverPortal.d.ts +23 -0
  681. package/dist/lib/components/overlays/PopoverPortal.js +53 -0
  682. package/dist/lib/components/overlays/overlayStack.d.ts +31 -0
  683. package/dist/lib/components/overlays/overlayStack.js +143 -0
  684. package/dist/lib/components/pickers/MiniDatePicker.d.ts +13 -0
  685. package/dist/lib/components/pickers/MiniDatePicker.js +42 -0
  686. package/dist/lib/contacts/contactsApi.d.ts +174 -0
  687. package/dist/lib/contacts/contactsApi.js +139 -0
  688. package/dist/lib/contacts/vcard.d.ts +23 -0
  689. package/dist/lib/contacts/vcard.js +179 -0
  690. package/dist/lib/crypto/composeSecurity.d.ts +67 -0
  691. package/dist/lib/crypto/composeSecurity.js +93 -0
  692. package/dist/lib/crypto/encoding.d.ts +9 -0
  693. package/dist/lib/crypto/encoding.js +32 -0
  694. package/dist/lib/crypto/escrowKeys.d.ts +25 -0
  695. package/dist/lib/crypto/escrowKeys.js +59 -0
  696. package/dist/lib/crypto/idleTimeout.d.ts +16 -0
  697. package/dist/lib/crypto/idleTimeout.js +47 -0
  698. package/dist/lib/crypto/keySession.d.ts +159 -0
  699. package/dist/lib/crypto/keySession.js +367 -0
  700. package/dist/lib/crypto/keys.d.ts +50 -0
  701. package/dist/lib/crypto/keys.js +89 -0
  702. package/dist/lib/crypto/keyvaultApi.d.ts +394 -0
  703. package/dist/lib/crypto/keyvaultApi.js +350 -0
  704. package/dist/lib/crypto/masterKey.d.ts +59 -0
  705. package/dist/lib/crypto/masterKey.js +104 -0
  706. package/dist/lib/crypto/masterKeyWraps.d.ts +108 -0
  707. package/dist/lib/crypto/masterKeyWraps.js +228 -0
  708. package/dist/lib/crypto/messageSecurity.d.ts +248 -0
  709. package/dist/lib/crypto/messageSecurity.js +367 -0
  710. package/dist/lib/crypto/mime.d.ts +143 -0
  711. package/dist/lib/crypto/mime.js +504 -0
  712. package/dist/lib/crypto/passkeyUnlock.d.ts +20 -0
  713. package/dist/lib/crypto/passkeyUnlock.js +79 -0
  714. package/dist/lib/crypto/passwordUnlock.d.ts +39 -0
  715. package/dist/lib/crypto/passwordUnlock.js +73 -0
  716. package/dist/lib/crypto/recoveryCode.d.ts +28 -0
  717. package/dist/lib/crypto/recoveryCode.js +86 -0
  718. package/dist/lib/crypto/signingProviderApi.d.ts +95 -0
  719. package/dist/lib/crypto/signingProviderApi.js +60 -0
  720. package/dist/lib/crypto/smime.d.ts +128 -0
  721. package/dist/lib/crypto/smime.js +402 -0
  722. package/dist/lib/crypto/smimeMessage.d.ts +132 -0
  723. package/dist/lib/crypto/smimeMessage.js +341 -0
  724. package/dist/lib/crypto/useIdleKeyTimeout.d.ts +10 -0
  725. package/dist/lib/crypto/useIdleKeyTimeout.js +163 -0
  726. package/dist/lib/crypto/verificationSeal.d.ts +56 -0
  727. package/dist/lib/crypto/verificationSeal.js +220 -0
  728. package/dist/lib/mail/compose/composeQuoting.d.ts +88 -0
  729. package/dist/lib/mail/compose/composeQuoting.js +204 -0
  730. package/dist/lib/mail/compose/emojiData.d.ts +9 -0
  731. package/dist/lib/mail/compose/emojiData.js +18 -0
  732. package/dist/lib/mail/compose/giphyApi.d.ts +17 -0
  733. package/dist/lib/mail/compose/giphyApi.js +20 -0
  734. package/dist/lib/mail/conversationsApi.d.ts +80 -0
  735. package/dist/lib/mail/conversationsApi.js +44 -0
  736. package/dist/lib/mail/dataExportApi.d.ts +50 -0
  737. package/dist/lib/mail/dataExportApi.js +40 -0
  738. package/dist/lib/mail/directoryApi.d.ts +49 -0
  739. package/dist/lib/mail/directoryApi.js +101 -0
  740. package/dist/lib/mail/erasureRequestApi.d.ts +45 -0
  741. package/dist/lib/mail/erasureRequestApi.js +43 -0
  742. package/dist/lib/mail/flaggedMessages.d.ts +22 -0
  743. package/dist/lib/mail/flaggedMessages.js +73 -0
  744. package/dist/lib/mail/focusedInboxOverridesApi.d.ts +37 -0
  745. package/dist/lib/mail/focusedInboxOverridesApi.js +34 -0
  746. package/dist/lib/mail/labelsApi.d.ts +47 -0
  747. package/dist/lib/mail/labelsApi.js +38 -0
  748. package/dist/lib/mail/mailAddress.d.ts +27 -0
  749. package/dist/lib/mail/mailAddress.js +54 -0
  750. package/dist/lib/mail/mailApi.d.ts +850 -0
  751. package/dist/lib/mail/mailApi.js +602 -0
  752. package/dist/lib/mail/mailDetailHooks.d.ts +10 -0
  753. package/dist/lib/mail/mailDetailHooks.js +53 -0
  754. package/dist/lib/mail/mailFilterRulesApi.d.ts +76 -0
  755. package/dist/lib/mail/mailFilterRulesApi.js +45 -0
  756. package/dist/lib/mail/mailSignaturesApi.d.ts +49 -0
  757. package/dist/lib/mail/mailSignaturesApi.js +42 -0
  758. package/dist/lib/mail/mailboxAccessApi.d.ts +74 -0
  759. package/dist/lib/mail/mailboxAccessApi.js +56 -0
  760. package/dist/lib/mail/mailboxImportApi.d.ts +53 -0
  761. package/dist/lib/mail/mailboxImportApi.js +51 -0
  762. package/dist/lib/mail/messageBodySanitizer.d.ts +16 -0
  763. package/dist/lib/mail/messageBodySanitizer.js +118 -0
  764. package/dist/lib/mail/pushClient.d.ts +106 -0
  765. package/dist/lib/mail/pushClient.js +317 -0
  766. package/dist/lib/mail/sendEvents.d.ts +33 -0
  767. package/dist/lib/mail/sendEvents.js +44 -0
  768. package/dist/lib/mail/sendFailure.d.ts +16 -0
  769. package/dist/lib/mail/sendFailure.js +86 -0
  770. package/dist/lib/mail/senderListsApi.d.ts +69 -0
  771. package/dist/lib/mail/senderListsApi.js +126 -0
  772. package/dist/lib/search/queryGrammar.d.ts +51 -0
  773. package/dist/lib/search/queryGrammar.js +111 -0
  774. package/dist/lib/search/searchApi.d.ts +100 -0
  775. package/dist/lib/search/searchApi.js +107 -0
  776. package/dist/lib/search/searchScoring.d.ts +34 -0
  777. package/dist/lib/search/searchScoring.js +44 -0
  778. package/dist/lib/search/searchTier3.d.ts +64 -0
  779. package/dist/lib/search/searchTier3.js +335 -0
  780. package/dist/lib/tasks/tasksApi.d.ts +85 -0
  781. package/dist/lib/tasks/tasksApi.js +55 -0
  782. package/dist/lib/util/api.d.ts +160 -0
  783. package/dist/lib/util/api.js +251 -0
  784. package/dist/lib/util/apiClientContext.d.ts +7 -0
  785. package/dist/lib/util/apiClientContext.js +32 -0
  786. package/dist/lib/util/apiQuery.d.ts +32 -0
  787. package/dist/lib/util/apiQuery.js +42 -0
  788. package/dist/lib/util/clipboard.d.ts +7 -0
  789. package/dist/lib/util/clipboard.js +56 -0
  790. package/dist/lib/util/dateInput.d.ts +6 -0
  791. package/dist/lib/util/dateInput.js +14 -0
  792. package/dist/lib/util/timeZone.d.ts +12 -0
  793. package/dist/lib/util/timeZone.js +32 -0
  794. package/dist/lib/util/useCopyToClipboard.d.ts +12 -0
  795. package/dist/lib/util/useCopyToClipboard.js +34 -0
  796. package/dist/lib/util/useIsMobile.d.ts +10 -0
  797. package/dist/lib/util/useIsMobile.js +29 -0
  798. package/dist/lib/videoconf/videoMeetingsApi.d.ts +116 -0
  799. package/dist/lib/videoconf/videoMeetingsApi.js +49 -0
  800. package/lib/admin/auditLogApi.ts +48 -0
  801. package/lib/admin/distributionListsApi.ts +77 -0
  802. package/lib/admin/domainsApi.ts +113 -0
  803. package/lib/admin/escrowAccessRequestsApi.ts +110 -0
  804. package/lib/admin/escrowAuditLogApi.ts +101 -0
  805. package/lib/admin/escrowScopesApi.ts +112 -0
  806. package/lib/admin/leftoverMailboxApi.ts +120 -0
  807. package/lib/admin/mailboxPolicyApi.ts +38 -0
  808. package/lib/admin/matterExportApi.ts +62 -0
  809. package/lib/admin/matterSearchApi.ts +35 -0
  810. package/lib/admin/mattersApi.ts +86 -0
  811. package/lib/admin/pluginsApi.ts +339 -0
  812. package/lib/admin/retentionPolicyApi.ts +46 -0
  813. package/lib/admin/setupApi.ts +40 -0
  814. package/lib/admin/transportRulesApi.ts +106 -0
  815. package/lib/appearance/preferencesApi.ts +335 -0
  816. package/lib/auth/profileApi.ts +77 -0
  817. package/lib/auth/session.ts +238 -0
  818. package/lib/branding/brandingApi.ts +97 -0
  819. package/lib/branding/useBranding.ts +81 -0
  820. package/lib/calendar/calendarApi.ts +309 -0
  821. package/lib/calendar/calendarColors.ts +45 -0
  822. package/lib/calendar/calendarDragIds.ts +112 -0
  823. package/lib/calendar/calendarMutations.ts +236 -0
  824. package/lib/calendar/eventDescription.ts +211 -0
  825. package/lib/calendar/freeBusyApi.ts +197 -0
  826. package/lib/calendar/inviteApi.ts +154 -0
  827. package/lib/calendar/recurrence.ts +285 -0
  828. package/lib/components/avatar/ContactAvatar.tsx +47 -0
  829. package/lib/components/buttons/Button.tsx +40 -0
  830. package/lib/components/buttons/CopyButton.tsx +45 -0
  831. package/lib/components/feedback/Alert.tsx +13 -0
  832. package/lib/components/feedback/Skeleton.tsx +38 -0
  833. package/lib/components/forms/FormField.tsx +23 -0
  834. package/lib/components/navigation/BottomTabBar.tsx +66 -0
  835. package/lib/components/overlays/Drawer.tsx +72 -0
  836. package/lib/components/overlays/Modal.tsx +64 -0
  837. package/lib/components/overlays/PopoverPortal.tsx +74 -0
  838. package/lib/components/overlays/overlayStack.ts +165 -0
  839. package/lib/components/pickers/MiniDatePicker.tsx +90 -0
  840. package/lib/contacts/contactsApi.ts +289 -0
  841. package/lib/contacts/vcard.ts +197 -0
  842. package/lib/crypto/composeSecurity.ts +140 -0
  843. package/lib/crypto/encoding.ts +36 -0
  844. package/lib/crypto/escrowKeys.ts +74 -0
  845. package/lib/crypto/idleTimeout.ts +49 -0
  846. package/lib/crypto/keySession.ts +483 -0
  847. package/lib/crypto/keys.ts +105 -0
  848. package/lib/crypto/keyvaultApi.ts +674 -0
  849. package/lib/crypto/masterKey.ts +134 -0
  850. package/lib/crypto/masterKeyWraps.ts +269 -0
  851. package/lib/crypto/messageSecurity.ts +600 -0
  852. package/lib/crypto/mime.ts +568 -0
  853. package/lib/crypto/passkeyUnlock.ts +103 -0
  854. package/lib/crypto/passwordUnlock.ts +98 -0
  855. package/lib/crypto/recoveryCode.ts +93 -0
  856. package/lib/crypto/signingProviderApi.ts +135 -0
  857. package/lib/crypto/smime.ts +459 -0
  858. package/lib/crypto/smimeMessage.ts +491 -0
  859. package/lib/crypto/useIdleKeyTimeout.ts +176 -0
  860. package/lib/crypto/verificationSeal.ts +288 -0
  861. package/lib/mail/compose/composeQuoting.ts +243 -0
  862. package/lib/mail/compose/emojiData.ts +34 -0
  863. package/lib/mail/compose/giphyApi.ts +31 -0
  864. package/lib/mail/conversationsApi.ts +123 -0
  865. package/lib/mail/dataExportApi.ts +73 -0
  866. package/lib/mail/directoryApi.ts +161 -0
  867. package/lib/mail/erasureRequestApi.ts +71 -0
  868. package/lib/mail/flaggedMessages.ts +80 -0
  869. package/lib/mail/focusedInboxOverridesApi.ts +64 -0
  870. package/lib/mail/labelsApi.ts +71 -0
  871. package/lib/mail/mailAddress.ts +76 -0
  872. package/lib/mail/mailApi.ts +1286 -0
  873. package/lib/mail/mailDetailHooks.ts +57 -0
  874. package/lib/mail/mailFilterRulesApi.ts +116 -0
  875. package/lib/mail/mailSignaturesApi.ts +84 -0
  876. package/lib/mail/mailboxAccessApi.ts +106 -0
  877. package/lib/mail/mailboxImportApi.ts +87 -0
  878. package/lib/mail/messageBodySanitizer.ts +129 -0
  879. package/lib/mail/pushClient.ts +375 -0
  880. package/lib/mail/sendEvents.ts +72 -0
  881. package/lib/mail/sendFailure.ts +98 -0
  882. package/lib/mail/senderListsApi.ts +161 -0
  883. package/lib/search/queryGrammar.ts +179 -0
  884. package/lib/search/searchApi.ts +199 -0
  885. package/lib/search/searchScoring.ts +46 -0
  886. package/lib/search/searchTier3.ts +406 -0
  887. package/lib/tasks/tasksApi.ts +128 -0
  888. package/lib/util/api.ts +318 -0
  889. package/lib/util/apiClientContext.ts +35 -0
  890. package/lib/util/apiQuery.ts +61 -0
  891. package/lib/util/clipboard.ts +55 -0
  892. package/lib/util/dateInput.ts +15 -0
  893. package/lib/util/timeZone.ts +33 -0
  894. package/lib/util/useCopyToClipboard.ts +48 -0
  895. package/lib/util/useIsMobile.ts +34 -0
  896. package/lib/videoconf/videoMeetingsApi.ts +144 -0
  897. package/package.json +10 -4
@@ -21,17 +21,44 @@
21
21
  * every pending request and drops the module-level `worker` reference so the next `call()` spawns a
22
22
  * replacement. `searchTier2.ts` additionally races its own calls against a timeout, since a Worker that's
23
23
  * merely stuck (not crashed) posts no `error` event at all.
24
+ *
25
+ * **Swappable transport**: everything above is specific to this one implementation - the Worker/OPFS-backed
26
+ * default. Every function this module exports below (`initLocalIndex`, `searchLocal`, `destroyLocalIndex`, ...)
27
+ * is a thin delegator to whichever `LocalIndexTransport` (`localIndexTransport.ts`) is "current," which defaults
28
+ * to `workerLocalIndexTransport` - this file's own implementation, wrapped - and can be swapped once, at startup,
29
+ * via `setLocalIndexTransport()`. A host app with a different storage backend (no Worker, no OPFS, no WASM at
30
+ * all - `tauri-client`'s native SQLCipher/`rusqlite` index) installs its own transport there; every call site
31
+ * that already goes through this file's exports (`searchTier2.ts`, `LocalIndexLifecycle.tsx`,
32
+ * `localIndexBuilder.ts`, and the rest) then runs against that backend instead, unmodified. The three
33
+ * module-level constants below (`SIGN_OUT_CHANNEL`, `PENDING_DELETIONS_KEY`, `DESTROY_ALL_TIMEOUT_MS`) remain
34
+ * plain exports, not part of the swappable interface - they name this one transport's own cross-tab/localStorage
35
+ * mechanics, which a different transport has no reason to share.
24
36
  */
25
- import type { ParsedSearchQuery } from "@rapidmx/react-shared/search/queryGrammar.js";
37
+ import type { ParsedSearchQuery } from "../../../lib/search/queryGrammar.js";
26
38
  import type { Coverage, IndexEntitiesResult, InitParams, LocalSearchPage, WindowState } from "./localIndexWorker.js";
27
39
  import type { LocalIndexEntity } from "./localIndexSchema.js";
28
- /** A fresh generation - see this module's doc comment. */
29
- export declare function nextLocalIndexGeneration(): number;
40
+ import type { LocalIndexTransport, PruneLocalEntitiesOptions, SetLocalIndexBuildingCompletion } from "./localIndexTransport.js";
30
41
  export declare const SIGN_OUT_CHANNEL = "rapidmx-localsearch";
31
42
  export declare const PENDING_DELETIONS_KEY = "rapidmx-localsearch-pending-deletions";
32
- /** Retries every deletion an earlier page load couldn't finish. Runs once per page load (memoized), before
33
- * this tab's first `init` - so it never races an index this tab itself opens. Never rejects. */
34
- export declare function retryPendingLocalIndexDeletions(): Promise<void>;
43
+ /** How long sign-out waits for local index destruction before navigating anyway. */
44
+ export declare const DESTROY_ALL_TIMEOUT_MS = 3000;
45
+ /**
46
+ * This file's own Worker/OPFS-backed implementation, wrapping the functions above - see this module's own doc
47
+ * comment ("Swappable transport"). The default `LocalIndexTransport` (`localIndexTransport.ts`); every export
48
+ * below delegates to whichever transport `setLocalIndexTransport()` has made current, which starts out as this
49
+ * one.
50
+ */
51
+ export declare const workerLocalIndexTransport: LocalIndexTransport;
52
+ /**
53
+ * Swaps the `LocalIndexTransport` every export below delegates to - see this module's own doc comment
54
+ * ("Swappable transport"). Defaults to `workerLocalIndexTransport`; a host app with a different storage backend
55
+ * (e.g. `tauri-client`'s native SQLCipher/`rusqlite` index) calls this once, at startup, before any of this
56
+ * module's other exports are used, so every call site already wired through them runs against that backend
57
+ * instead - unmodified.
58
+ */
59
+ export declare function setLocalIndexTransport(transport: LocalIndexTransport): void;
60
+ /** A fresh generation - see this module's doc comment. */
61
+ export declare function nextLocalIndexGeneration(): number;
35
62
  export declare function initLocalIndex(params: InitParams): Promise<void>;
36
63
  export declare function indexLocalEntities(mailboxUid: string, entities: LocalIndexEntity[], generation?: number): Promise<IndexEntitiesResult>;
37
64
  /** Drops one message from this session's local index (a delete). A no-op for a mailbox not indexed in
@@ -41,36 +68,21 @@ export declare function removeLocalEntity(mailboxUid: string, entityUid: string)
41
68
  * local searches stay correct. Same no-op/never-rejects rules as `removeLocalEntity()`. */
42
69
  export declare function moveLocalEntity(mailboxUid: string, entityUid: string, folderUid: string): Promise<void>;
43
70
  export declare function getIndexedVersions(mailboxUid: string, entityUids: string[]): Promise<Record<string, string>>;
44
- export declare function pruneLocalEntities(mailboxUid: string, keepEntityUids: string[], since: string | undefined, options?: {
45
- folderUids?: string[];
46
- generation?: number;
47
- }): Promise<number>;
71
+ export declare function pruneLocalEntities(mailboxUid: string, keepEntityUids: string[], since: string | undefined, options?: PruneLocalEntitiesOptions): Promise<number>;
48
72
  export declare function searchLocal(mailboxUid: string, parsed: ParsedSearchQuery, limit: number, offset?: number): Promise<LocalSearchPage>;
49
73
  export declare function getLocalCoverage(mailboxUid: string): Promise<Coverage>;
50
74
  export declare function setLocalIndexWindow(mailboxUid: string, timeFloorMonths: number, byteBudgetBytes: number, generation?: number): Promise<WindowState>;
51
- export declare function setLocalIndexBuilding(mailboxUid: string, building: boolean, completion?: {
52
- complete: boolean;
53
- coveredFrom?: string;
54
- coveredUntil?: string;
55
- generation?: number;
56
- }): Promise<void>;
57
- /** Destroys one mailbox's local index (both the SQLite connection and its on-disk OPFS storage) - spec
58
- * §11 "MUST be destroyed on the same events that destroy private keys." Never rejects (it's called from
59
- * lifecycle hooks where a failure mustn't block key destruction) but resolves `false` - and logs why -
60
- * when the index could not be removed, e.g. because another tab still has it open; the deletion is then
61
- * retried on the next page load. */
75
+ export declare function setLocalIndexBuilding(mailboxUid: string, building: boolean, completion?: SetLocalIndexBuildingCompletion): Promise<void>;
76
+ /** Destroys one mailbox's local index - spec §11 "MUST be destroyed on the same events that destroy private
77
+ * keys." Never rejects (it's called from lifecycle hooks where a failure mustn't block key destruction) but
78
+ * resolves `false` when the index could not be removed - see the current transport's own doc comment for what
79
+ * that means for it (the Worker transport also logs why, and retries on the next page load). */
62
80
  export declare function destroyLocalIndex(mailboxUid: string): Promise<boolean>;
63
- /** How long sign-out waits for local index destruction before navigating anyway. */
64
- export declare const DESTROY_ALL_TIMEOUT_MS = 3000;
65
- /**
66
- * Destroys **every** local index on this device - not just the mailboxes this page load opened (sign-out
67
- * from Calendar, say, never opened any), by enumerating OPFS for the index directory prefix - and tells every
68
- * other tab to close its own connections. Closes this tab's own open connections through the Worker first
69
- * (only if one was ever spawned - there's nothing to close otherwise, and booting one just to delete files
70
- * would be waste), then removes the directories. Anything left behind is retried on the next load. Resolves
71
- * `true` when everything was removed within `timeoutMs`; never rejects.
72
- */
81
+ /** Destroys **every** local index this transport knows of - not just the mailboxes this session opened - e.g.
82
+ * on sign-out. Never rejects. Resolves `true` only if everything was removed within `timeoutMs`. */
73
83
  export declare function destroyAllLocalIndexes(timeoutMs?: number): Promise<boolean>;
74
84
  /** Removes local indexes for mailboxes outside `accessibleMailboxUids` - e.g. left behind by a different
75
85
  * user who signed in on this device without signing out. Never rejects. */
76
86
  export declare function pruneInaccessibleLocalIndexes(accessibleMailboxUids: Iterable<string>): Promise<void>;
87
+ /** Retries every deletion an earlier session couldn't finish. Never rejects. */
88
+ export declare function retryPendingLocalIndexDeletions(): Promise<void>;
@@ -8,7 +8,7 @@ const pending = new Map();
8
8
  const initializedMailboxes = new Set();
9
9
  let generationCounter = 0;
10
10
  /** A fresh generation - see this module's doc comment. */
11
- export function nextLocalIndexGeneration() {
11
+ function nextLocalIndexGenerationImpl() {
12
12
  generationCounter += 1;
13
13
  return generationCounter;
14
14
  }
@@ -83,7 +83,7 @@ function listenForSignOut() {
83
83
  async function closeEverythingInThisTab() {
84
84
  signedOut = true;
85
85
  initializedMailboxes.clear();
86
- await call("destroyAll", { generation: nextLocalIndexGeneration() }).catch(() => undefined);
86
+ await call("destroyAll", { generation: nextLocalIndexGenerationImpl() }).catch(() => undefined);
87
87
  }
88
88
  function call(method, params) {
89
89
  const id = nextRequestId++;
@@ -133,7 +133,7 @@ function updatePendingDeletions(update) {
133
133
  let pendingRetry;
134
134
  /** Retries every deletion an earlier page load couldn't finish. Runs once per page load (memoized), before
135
135
  * this tab's first `init` - so it never races an index this tab itself opens. Never rejects. */
136
- export function retryPendingLocalIndexDeletions() {
136
+ function retryPendingLocalIndexDeletionsImpl() {
137
137
  pendingRetry ?? (pendingRetry = (async () => {
138
138
  const uids = readPendingDeletions();
139
139
  if (uids.length === 0) {
@@ -153,49 +153,49 @@ export function retryPendingLocalIndexDeletions() {
153
153
  })());
154
154
  return pendingRetry;
155
155
  }
156
- export async function initLocalIndex(params) {
157
- await retryPendingLocalIndexDeletions();
156
+ async function initLocalIndexImpl(params) {
157
+ await retryPendingLocalIndexDeletionsImpl();
158
158
  if (signedOut) {
159
159
  throw new Error("Signed out - the local search index is unavailable in this tab.");
160
160
  }
161
161
  await call("init", params);
162
162
  initializedMailboxes.add(params.mailboxUid);
163
163
  }
164
- export function indexLocalEntities(mailboxUid, entities, generation) {
164
+ function indexLocalEntitiesImpl(mailboxUid, entities, generation) {
165
165
  return call("indexEntities", { mailboxUid, entities, generation });
166
166
  }
167
167
  /** Drops one message from this session's local index (a delete). A no-op for a mailbox not indexed in
168
168
  * this tab - a later build pass prunes it instead. Never rejects: best-effort housekeeping. */
169
- export async function removeLocalEntity(mailboxUid, entityUid) {
169
+ async function removeLocalEntityImpl(mailboxUid, entityUid) {
170
170
  if (!initializedMailboxes.has(mailboxUid)) {
171
171
  return;
172
172
  }
173
173
  await call("removeEntity", { mailboxUid, entityUid }).catch(() => undefined);
174
174
  }
175
175
  /** Re-points one indexed message at its new folder (archive, cancel-scheduled-send) so `folder:`-scoped
176
- * local searches stay correct. Same no-op/never-rejects rules as `removeLocalEntity()`. */
177
- export async function moveLocalEntity(mailboxUid, entityUid, folderUid) {
176
+ * local searches stay correct. Same no-op/never-rejects rules as `removeLocalEntityImpl()`. */
177
+ async function moveLocalEntityImpl(mailboxUid, entityUid, folderUid) {
178
178
  if (!initializedMailboxes.has(mailboxUid)) {
179
179
  return;
180
180
  }
181
181
  await call("moveEntity", { mailboxUid, entityUid, folderUid }).catch(() => undefined);
182
182
  }
183
- export function getIndexedVersions(mailboxUid, entityUids) {
183
+ function getIndexedVersionsImpl(mailboxUid, entityUids) {
184
184
  return call("indexedVersions", { mailboxUid, entityUids });
185
185
  }
186
- export function pruneLocalEntities(mailboxUid, keepEntityUids, since, options = {}) {
186
+ function pruneLocalEntitiesImpl(mailboxUid, keepEntityUids, since, options) {
187
187
  return call("pruneEntities", { mailboxUid, keepEntityUids, since, ...options });
188
188
  }
189
- export function searchLocal(mailboxUid, parsed, limit, offset = 0) {
189
+ function searchLocalImpl(mailboxUid, parsed, limit, offset) {
190
190
  return call("search", { mailboxUid, parsed, limit, offset });
191
191
  }
192
- export function getLocalCoverage(mailboxUid) {
192
+ function getLocalCoverageImpl(mailboxUid) {
193
193
  return call("coverage", mailboxUid);
194
194
  }
195
- export function setLocalIndexWindow(mailboxUid, timeFloorMonths, byteBudgetBytes, generation) {
195
+ function setLocalIndexWindowImpl(mailboxUid, timeFloorMonths, byteBudgetBytes, generation) {
196
196
  return call("setWindow", { mailboxUid, timeFloorMonths, byteBudgetBytes, generation });
197
197
  }
198
- export function setLocalIndexBuilding(mailboxUid, building, completion = { complete: false }) {
198
+ function setLocalIndexBuildingImpl(mailboxUid, building, completion) {
199
199
  return call("setBuilding", { mailboxUid, building, ...completion });
200
200
  }
201
201
  /** Destroys one mailbox's local index (both the SQLite connection and its on-disk OPFS storage) - spec
@@ -203,10 +203,10 @@ export function setLocalIndexBuilding(mailboxUid, building, completion = { compl
203
203
  * lifecycle hooks where a failure mustn't block key destruction) but resolves `false` - and logs why -
204
204
  * when the index could not be removed, e.g. because another tab still has it open; the deletion is then
205
205
  * retried on the next page load. */
206
- export async function destroyLocalIndex(mailboxUid) {
206
+ async function destroyLocalIndexImpl(mailboxUid) {
207
207
  updatePendingDeletions((current) => current.add(mailboxUid));
208
208
  try {
209
- await call("destroy", { mailboxUid, generation: nextLocalIndexGeneration() });
209
+ await call("destroy", { mailboxUid, generation: nextLocalIndexGenerationImpl() });
210
210
  updatePendingDeletions((current) => current.delete(mailboxUid));
211
211
  return true;
212
212
  }
@@ -229,7 +229,7 @@ export const DESTROY_ALL_TIMEOUT_MS = 3000;
229
229
  * would be waste), then removes the directories. Anything left behind is retried on the next load. Resolves
230
230
  * `true` when everything was removed within `timeoutMs`; never rejects.
231
231
  */
232
- export async function destroyAllLocalIndexes(timeoutMs = DESTROY_ALL_TIMEOUT_MS) {
232
+ async function destroyAllLocalIndexesImpl(timeoutMs) {
233
233
  signedOut = true;
234
234
  writePendingDeletions([ALL_INDEXES]);
235
235
  try {
@@ -241,7 +241,7 @@ export async function destroyAllLocalIndexes(timeoutMs = DESTROY_ALL_TIMEOUT_MS)
241
241
  const work = (async () => {
242
242
  let ok = true;
243
243
  if (worker) {
244
- const { failed } = await call("destroyAll", { generation: nextLocalIndexGeneration() }).catch(() => ({
244
+ const { failed } = await call("destroyAll", { generation: nextLocalIndexGenerationImpl() }).catch(() => ({
245
245
  failed: ["(worker)"],
246
246
  }));
247
247
  ok = failed.length === 0;
@@ -264,6 +264,99 @@ export async function destroyAllLocalIndexes(timeoutMs = DESTROY_ALL_TIMEOUT_MS)
264
264
  }
265
265
  /** Removes local indexes for mailboxes outside `accessibleMailboxUids` - e.g. left behind by a different
266
266
  * user who signed in on this device without signing out. Never rejects. */
267
- export async function pruneInaccessibleLocalIndexes(accessibleMailboxUids) {
267
+ async function pruneInaccessibleLocalIndexesImpl(accessibleMailboxUids) {
268
268
  await removeLocalIndexDirectories(new Set(accessibleMailboxUids)).catch(() => undefined);
269
269
  }
270
+ /**
271
+ * This file's own Worker/OPFS-backed implementation, wrapping the functions above - see this module's own doc
272
+ * comment ("Swappable transport"). The default `LocalIndexTransport` (`localIndexTransport.ts`); every export
273
+ * below delegates to whichever transport `setLocalIndexTransport()` has made current, which starts out as this
274
+ * one.
275
+ */
276
+ export const workerLocalIndexTransport = {
277
+ nextGeneration: nextLocalIndexGenerationImpl,
278
+ init: initLocalIndexImpl,
279
+ indexEntities: indexLocalEntitiesImpl,
280
+ removeEntity: removeLocalEntityImpl,
281
+ moveEntity: moveLocalEntityImpl,
282
+ indexedVersions: getIndexedVersionsImpl,
283
+ pruneEntities: pruneLocalEntitiesImpl,
284
+ search: searchLocalImpl,
285
+ coverage: getLocalCoverageImpl,
286
+ setWindow: setLocalIndexWindowImpl,
287
+ setBuilding: setLocalIndexBuildingImpl,
288
+ destroy: destroyLocalIndexImpl,
289
+ destroyAll: destroyAllLocalIndexesImpl,
290
+ pruneInaccessible: pruneInaccessibleLocalIndexesImpl,
291
+ retryPendingDeletions: retryPendingLocalIndexDeletionsImpl,
292
+ };
293
+ let currentTransport = workerLocalIndexTransport;
294
+ /**
295
+ * Swaps the `LocalIndexTransport` every export below delegates to - see this module's own doc comment
296
+ * ("Swappable transport"). Defaults to `workerLocalIndexTransport`; a host app with a different storage backend
297
+ * (e.g. `tauri-client`'s native SQLCipher/`rusqlite` index) calls this once, at startup, before any of this
298
+ * module's other exports are used, so every call site already wired through them runs against that backend
299
+ * instead - unmodified.
300
+ */
301
+ export function setLocalIndexTransport(transport) {
302
+ currentTransport = transport;
303
+ }
304
+ /** A fresh generation - see this module's doc comment. */
305
+ export function nextLocalIndexGeneration() {
306
+ return currentTransport.nextGeneration();
307
+ }
308
+ export function initLocalIndex(params) {
309
+ return currentTransport.init(params);
310
+ }
311
+ export function indexLocalEntities(mailboxUid, entities, generation) {
312
+ return currentTransport.indexEntities(mailboxUid, entities, generation);
313
+ }
314
+ /** Drops one message from this session's local index (a delete). A no-op for a mailbox not indexed in
315
+ * this tab - a later build pass prunes it instead. Never rejects: best-effort housekeeping. */
316
+ export function removeLocalEntity(mailboxUid, entityUid) {
317
+ return currentTransport.removeEntity(mailboxUid, entityUid);
318
+ }
319
+ /** Re-points one indexed message at its new folder (archive, cancel-scheduled-send) so `folder:`-scoped
320
+ * local searches stay correct. Same no-op/never-rejects rules as `removeLocalEntity()`. */
321
+ export function moveLocalEntity(mailboxUid, entityUid, folderUid) {
322
+ return currentTransport.moveEntity(mailboxUid, entityUid, folderUid);
323
+ }
324
+ export function getIndexedVersions(mailboxUid, entityUids) {
325
+ return currentTransport.indexedVersions(mailboxUid, entityUids);
326
+ }
327
+ export function pruneLocalEntities(mailboxUid, keepEntityUids, since, options = {}) {
328
+ return currentTransport.pruneEntities(mailboxUid, keepEntityUids, since, options);
329
+ }
330
+ export function searchLocal(mailboxUid, parsed, limit, offset = 0) {
331
+ return currentTransport.search(mailboxUid, parsed, limit, offset);
332
+ }
333
+ export function getLocalCoverage(mailboxUid) {
334
+ return currentTransport.coverage(mailboxUid);
335
+ }
336
+ export function setLocalIndexWindow(mailboxUid, timeFloorMonths, byteBudgetBytes, generation) {
337
+ return currentTransport.setWindow(mailboxUid, timeFloorMonths, byteBudgetBytes, generation);
338
+ }
339
+ export function setLocalIndexBuilding(mailboxUid, building, completion = { complete: false }) {
340
+ return currentTransport.setBuilding(mailboxUid, building, completion);
341
+ }
342
+ /** Destroys one mailbox's local index - spec §11 "MUST be destroyed on the same events that destroy private
343
+ * keys." Never rejects (it's called from lifecycle hooks where a failure mustn't block key destruction) but
344
+ * resolves `false` when the index could not be removed - see the current transport's own doc comment for what
345
+ * that means for it (the Worker transport also logs why, and retries on the next page load). */
346
+ export function destroyLocalIndex(mailboxUid) {
347
+ return currentTransport.destroy(mailboxUid);
348
+ }
349
+ /** Destroys **every** local index this transport knows of - not just the mailboxes this session opened - e.g.
350
+ * on sign-out. Never rejects. Resolves `true` only if everything was removed within `timeoutMs`. */
351
+ export function destroyAllLocalIndexes(timeoutMs = DESTROY_ALL_TIMEOUT_MS) {
352
+ return currentTransport.destroyAll(timeoutMs);
353
+ }
354
+ /** Removes local indexes for mailboxes outside `accessibleMailboxUids` - e.g. left behind by a different
355
+ * user who signed in on this device without signing out. Never rejects. */
356
+ export function pruneInaccessibleLocalIndexes(accessibleMailboxUids) {
357
+ return currentTransport.pruneInaccessible(accessibleMailboxUids);
358
+ }
359
+ /** Retries every deletion an earlier session couldn't finish. Never rejects. */
360
+ export function retryPendingLocalIndexDeletions() {
361
+ return currentTransport.retryPendingDeletions();
362
+ }
@@ -0,0 +1,77 @@
1
+ /**
2
+ * The Tier 2 local index's transport contract - every operation `localIndexRpcClient.ts`'s public functions perform
3
+ * against whatever actually stores and queries the index. Type-only: this module declares the shape, it never runs
4
+ * anything itself.
5
+ *
6
+ * The browser/Electron path is backed by `workerLocalIndexTransport` (`localIndexRpcClient.ts`, exported from that
7
+ * same file) - a Promise/RPC wrapper around a Worker running `@journeyapps/wa-sqlite` over OPFS. That module's own
8
+ * doc comment covers the Worker/RPC mechanics this interface abstracts away (generations, cross-tab sign-out,
9
+ * retried deletions, Worker-crash recovery); none of that is part of this contract - it is that transport's own
10
+ * implementation detail, not something a second implementation needs to reproduce.
11
+ *
12
+ * A host app with no Worker/OPFS/WASM at all - `tauri-client`, backed instead by real SQLCipher-encrypted SQLite
13
+ * via a Rust `rusqlite` `invoke()` command - implements this same shape and installs it once at startup via
14
+ * `localIndexRpcClient.ts`'s `setLocalIndexTransport()`. Every call site already going through that file's exported
15
+ * functions (`searchTier2.ts`, `LocalIndexLifecycle.tsx`, `localIndexBuilder.ts`, and the rest) then runs against
16
+ * the native backend instead, unmodified - those exports are thin delegators to whichever transport is current.
17
+ *
18
+ * Method names mirror the Worker's own RPC method names (`localIndexWorker.ts`'s `LocalIndexRequest["method"]`),
19
+ * not `localIndexRpcClient.ts`'s public function names - a second implementation has no reason to repeat that
20
+ * file's "Local"-infixed naming (`indexLocalEntities`, `getLocalCoverage`, ...) for its own methods.
21
+ *
22
+ * Every method takes exactly the arguments its `localIndexRpcClient.ts` counterpart already resolves down to -
23
+ * where that file's own export has a default parameter (`offset = 0`, `options = {}`, `timeoutMs = DESTROY_ALL_TIMEOUT_MS`),
24
+ * this interface takes the resolved value as required, so an implementation never has to reproduce that default
25
+ * itself.
26
+ */
27
+ import type { ParsedSearchQuery } from "../../../lib/search/queryGrammar.js";
28
+ import type { Coverage, IndexEntitiesResult, InitParams, LocalSearchPage, WindowState } from "./localIndexWorker.js";
29
+ import type { LocalIndexEntity } from "./localIndexSchema.js";
30
+ /** `LocalIndexTransport.pruneEntities()`'s options - which folders' unseen rows may be pruned (see
31
+ * `localIndexBuilder.ts`'s own "reliable" folders), and this pass's generation tag. */
32
+ export interface PruneLocalEntitiesOptions {
33
+ folderUids?: string[];
34
+ generation?: number;
35
+ }
36
+ /** `LocalIndexTransport.setBuilding()`'s completion summary - whether a build pass just finished, and how much of
37
+ * the mailbox it covered (`Coverage.complete`/`coveredFrom`/`coveredUntil`'s own source). */
38
+ export interface SetLocalIndexBuildingCompletion {
39
+ complete: boolean;
40
+ coveredFrom?: string;
41
+ coveredUntil?: string;
42
+ generation?: number;
43
+ }
44
+ /** See this module's own doc comment. */
45
+ export interface LocalIndexTransport {
46
+ /** A fresh, monotonic generation from this transport's own counter. */
47
+ nextGeneration(): number;
48
+ /** Opens (or reuses) this mailbox's index connection. */
49
+ init(params: InitParams): Promise<void>;
50
+ /** Indexes (inserts or updates) the given entities, applying byte-budget eviction as needed. */
51
+ indexEntities(mailboxUid: string, entities: LocalIndexEntity[], generation?: number): Promise<IndexEntitiesResult>;
52
+ /** Drops one indexed entity. */
53
+ removeEntity(mailboxUid: string, entityUid: string): Promise<void>;
54
+ /** Re-points one indexed entity at its new folder. */
55
+ moveEntity(mailboxUid: string, entityUid: string, folderUid: string): Promise<void>;
56
+ /** The indexed version marker (`Message.version` + folder) currently stored for each of the given entity uids. */
57
+ indexedVersions(mailboxUid: string, entityUids: string[]): Promise<Record<string, string>>;
58
+ /** Removes indexed rows outside `keepEntityUids` (and `since`/`options.folderUids`'s own scope). Returns how many rows were pruned. */
59
+ pruneEntities(mailboxUid: string, keepEntityUids: string[], since: string | undefined, options: PruneLocalEntitiesOptions): Promise<number>;
60
+ /** Runs a parsed query against the index, already scored and paginated. */
61
+ search(mailboxUid: string, parsed: ParsedSearchQuery, limit: number, offset: number): Promise<LocalSearchPage>;
62
+ /** How much of the mailbox the index currently covers. */
63
+ coverage(mailboxUid: string): Promise<Coverage>;
64
+ /** Sets this mailbox's window (time floor + byte budget), applying eviction immediately if it shrank. */
65
+ setWindow(mailboxUid: string, timeFloorMonths: number, byteBudgetBytes: number, generation?: number): Promise<WindowState>;
66
+ /** Flags whether a build pass is running, and - once it finishes - how much of the mailbox it covered. */
67
+ setBuilding(mailboxUid: string, building: boolean, completion: SetLocalIndexBuildingCompletion): Promise<void>;
68
+ /** Destroys one mailbox's index. Never rejects; resolves `false` (logging why) when it could not be removed. */
69
+ destroy(mailboxUid: string): Promise<boolean>;
70
+ /** Destroys every index this transport knows of, e.g. on sign-out. Never rejects; resolves `true` only if
71
+ * everything was removed within `timeoutMs`. */
72
+ destroyAll(timeoutMs: number): Promise<boolean>;
73
+ /** Removes indexes for mailboxes outside `accessibleMailboxUids`. Never rejects. */
74
+ pruneInaccessible(accessibleMailboxUids: Iterable<string>): Promise<void>;
75
+ /** Retries any deletion an earlier session couldn't finish. Never rejects. */
76
+ retryPendingDeletions(): Promise<void>;
77
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -1,4 +1,4 @@
1
- import type { ParsedSearchQuery } from "@rapidmx/react-shared/search/queryGrammar.js";
1
+ import type { ParsedSearchQuery } from "../../../lib/search/queryGrammar.js";
2
2
  import { LocalIndexEntity } from "./localIndexSchema.js";
3
3
  /** One request sent from the main thread. `id` correlates the eventual response - `postMessage` has no
4
4
  * native request/response pairing, so every RPC call carries its own id (see `localIndexRpcClient.ts`,
@@ -13,9 +13,9 @@
13
13
  * alongside Tier 1/Tier 3 (`apps/www/index.tsx`'s own search orchestration) must never see the *whole
14
14
  * search* fail just because this one, most novel piece had a bad moment.
15
15
  */
16
- import type { UnlockedKeys } from "@rapidmx/react-shared/crypto/keySession.js";
17
- import type { ParsedSearchQuery } from "@rapidmx/react-shared/search/queryGrammar.js";
18
- import type { SearchResult } from "@rapidmx/react-shared/search/searchApi.js";
16
+ import type { UnlockedKeys } from "../../../lib/crypto/keySession.js";
17
+ import type { ParsedSearchQuery } from "../../../lib/search/queryGrammar.js";
18
+ import type { SearchResult } from "../../../lib/search/searchApi.js";
19
19
  import type { Coverage } from "./localIndexWorker.js";
20
20
  export interface Tier2SearchOutcome {
21
21
  results: SearchResult[];
@@ -1,4 +1,4 @@
1
- import { CurrentSignEnrollment, EnrollmentResult } from "@rapidmx/react-shared/crypto/keyvaultApi.js";
1
+ import { CurrentSignEnrollment, EnrollmentResult } from "../../../lib/crypto/keyvaultApi.js";
2
2
  /** The code of the 404 the server answers for an enrollment id it does not know (another provider after a configuration change, one long gone).
3
3
  * Re-exported from react-shared's `signingProviderApi.js` (R6's) rather than a second copy of the literal. */
4
4
  export declare const UNKNOWN_ENROLLMENT_CODE = "signing-enrollment-unknown";
@@ -3,9 +3,9 @@
3
3
  // SPDX-License-Identifier: MPL-2.0
4
4
  ///////////////////////////////////////////////////////////////////////////////
5
5
  import { useSyncExternalStore } from "react";
6
- import { ApiRequestError } from "@rapidmx/react-shared/util/api.js";
7
- import { checkNowRetryAfterSeconds, checkSignEnrollmentNow, checkSignEnrollmentStatus, } from "@rapidmx/react-shared/crypto/keyvaultApi.js";
8
- import { SIGNING_ENROLLMENT_UNKNOWN } from "@rapidmx/react-shared/crypto/signingProviderApi.js";
6
+ import { ApiRequestError } from "../../../lib/util/api.js";
7
+ import { checkNowRetryAfterSeconds, checkSignEnrollmentNow, checkSignEnrollmentStatus, } from "../../../lib/crypto/keyvaultApi.js";
8
+ import { SIGNING_ENROLLMENT_UNKNOWN } from "../../../lib/crypto/signingProviderApi.js";
9
9
  import { storeSignEnrollment } from "./enrollmentStorage.js";
10
10
  import { resetSigningInfo } from "./signingInfo.js";
11
11
  /** The code of the 404 the server answers for an enrollment id it does not know (another provider after a configuration change, one long gone).
@@ -1,4 +1,4 @@
1
- import type { EnrollmentResult, SignEnrollmentStep } from "@rapidmx/react-shared/crypto/keyvaultApi.js";
1
+ import type { EnrollmentResult, SignEnrollmentStep } from "../../../lib/crypto/keyvaultApi.js";
2
2
  import type { SigningEnrollmentInfo } from "./signingInfo.js";
3
3
  /** Warn about an expiring certificate this many days ahead. */
4
4
  export declare const EXPIRY_WARNING_DAYS = 30;
@@ -1,4 +1,4 @@
1
- import { SigningEnrollmentInfo } from "@rapidmx/react-shared/crypto/signingProviderApi.js";
1
+ import { SigningEnrollmentInfo } from "../../../lib/crypto/signingProviderApi.js";
2
2
  export type { SigningEnrollmentInfo };
3
3
  /** How long an answer is reused: the page asks once when it opens, and again after this if it is opened again. */
4
4
  export declare const SIGNING_INFO_CACHE_MS: number;
@@ -3,7 +3,7 @@
3
3
  // SPDX-License-Identifier: MPL-2.0
4
4
  ///////////////////////////////////////////////////////////////////////////////
5
5
  import { useEffect, useState } from "react";
6
- import { getSigningEnrollmentInfo } from "@rapidmx/react-shared/crypto/signingProviderApi.js";
6
+ import { getSigningEnrollmentInfo } from "../../../lib/crypto/signingProviderApi.js";
7
7
  /** How long an answer is reused: the page asks once when it opens, and again after this if it is opened again. */
8
8
  export const SIGNING_INFO_CACHE_MS = 5 * 60000;
9
9
  let cached;
@@ -1,4 +1,4 @@
1
- import type { Mailbox } from "@rapidmx/react-shared/mail/mailApi.js";
1
+ import type { Mailbox } from "../../../lib/mail/mailApi.js";
2
2
  /** Where the pop-up's action leads: the page that shows the certificate. */
3
3
  export declare const SIGNING_SETTINGS_HREF = "/settings/encryption";
4
4
  /**
@@ -3,7 +3,8 @@
3
3
  // SPDX-License-Identifier: MPL-2.0
4
4
  ///////////////////////////////////////////////////////////////////////////////
5
5
  import { useEffect, useRef } from "react";
6
- import { getCurrentSignEnrollment } from "@rapidmx/react-shared/crypto/keyvaultApi.js";
6
+ import { getCurrentSignEnrollment } from "../../../lib/crypto/keyvaultApi.js";
7
+ import { useApiClient } from "../../../lib/util/apiClientContext.js";
7
8
  import { notify } from "../notifications/store.js";
8
9
  import { readStoredSignEnrollment, storeSignEnrollment } from "./enrollmentStorage.js";
9
10
  import { onEnrollmentEnded, watchCurrentEnrollment, watchEnrollment } from "./enrollmentTracker.js";
@@ -19,6 +20,7 @@ export const SIGNING_SETTINGS_HREF = "/settings/encryption";
19
20
  * was seen pending - never for a certificate issued long ago.
20
21
  */
21
22
  export function useSigningEnrollmentWatcher({ userUid, mailboxes, enabled }) {
23
+ const client = useApiClient();
22
24
  const mailboxesRef = useRef(mailboxes);
23
25
  mailboxesRef.current = mailboxes;
24
26
  // Keyed on the uids of the mailboxes the user owns: a refreshed list of the same mailboxes must not start over.
@@ -41,7 +43,7 @@ export function useSigningEnrollmentWatcher({ userUid, mailboxes, enabled }) {
41
43
  // Never throws or rejects: a lookup that cannot be made (an older server, offline, anything) is "nothing is pending", and the frame goes on.
42
44
  void (async () => {
43
45
  try {
44
- const current = await getCurrentSignEnrollment(mailboxUid);
46
+ const current = await getCurrentSignEnrollment(mailboxUid, client);
45
47
  if (!cancelled && current?.status === "pending") {
46
48
  storeSignEnrollment(mailboxUid, current.enrollmentId);
47
49
  releases.push(watchCurrentEnrollment(mailboxUid, current));
@@ -58,7 +60,7 @@ export function useSigningEnrollmentWatcher({ userUid, mailboxes, enabled }) {
58
60
  stopListening();
59
61
  releases.forEach((release) => release());
60
62
  };
61
- }, [enabled, userUid, ownedKey]);
63
+ }, [enabled, userUid, ownedKey, client]);
62
64
  }
63
65
  /** The pop-up for an enrollment that just ended - issued or failed (the tracker announces nothing else, and always with its answer). */
64
66
  function announce(snapshot, mailboxes) {
@@ -10,27 +10,6 @@
10
10
  */
11
11
  @import "tailwindcss";
12
12
 
13
- /*
14
- * Tailwind v4's automatic content scanning excludes `node_modules` by default, which is exactly where
15
- * `@rapidmx/react-shared`'s components live - without these, none of its Tailwind classnames (Modal/
16
- * Drawer/Button/Alert/Skeleton/FormField/PopoverPortal/ContactAvatar/MiniDatePicker/BottomTabBar) are
17
- * generated, and e.g. a Modal renders with no overlay, position or width. The published package ships
18
- * only its compiled `dist` (no `src`), and `@source` paths resolve from this file's directory
19
- * (`apps/shared/styles/`), so both install layouts are listed; a path that doesn't exist is skipped:
20
- * - `../../../node_modules/...`: react-shared under this package's own `node_modules` - this repo's
21
- * checkout, or a consumer install that nests it under web-client.
22
- * - `../../../../react-shared/dist`: react-shared hoisted beside this package, i.e. this file at
23
- * `<consumer>/node_modules/@rapidmx/web-client/apps/shared/styles/` and react-shared at
24
- * `<consumer>/node_modules/@rapidmx/react-shared` - how `server` installs both, for its pages and
25
- * for the plugin pages' `plugin-ui.css`, which imports this file from there.
26
- * `electron-client` links `node_modules/@rapidmx/web-client` to a checkout of this repo, so one of the
27
- * two matches whether this file is reached through the link or its real path. From a checkout, the
28
- * second path can also find a sibling `react-shared` checkout's build, which only adds classes
29
- * react-shared itself uses.
30
- */
31
- @source "../../../node_modules/@rapidmx/react-shared/dist";
32
- @source "../../../../react-shared/dist";
33
-
34
13
  /*
35
14
  * `server`'s own build (unlike `electron-client`, which already explicitly sourced this same tree in
36
15
  * its own `styles.css`) has no explicit `@source` for this package's *own* `apps/**` tree at all,
@@ -42,11 +21,23 @@
42
21
  * `max-w-md`, ...) used by `AdminShell.tsx` (which has its own, separate `import "./app.css"`) was
43
22
  * silently absent from the built stylesheet, even though `AdminShell.tsx` itself was very much in the
44
23
  * bundle - verified directly by diffing every classname `AdminShell.tsx` uses against the actual built
45
- * CSS. An explicit `@source` here makes the scan independent of Vite's per-entry chunking, the same
46
- * fix this file applies to `react-shared` above, just for this package's own source too.
24
+ * CSS. An explicit `@source` here makes the scan independent of Vite's per-entry chunking.
47
25
  */
48
26
  @source "../../";
49
27
 
28
+ /*
29
+ * `lib/` (this package's own `admin/`, `appearance/`, `auth/`, `branding/`, `calendar/`, `components/`,
30
+ * `contacts/`, `crypto/`, `mail/`, `search/`, `tasks/`, `util/`, `videoconf/` - merged in from the former
31
+ * `@rapidmx/react-shared` package, 2026-09-27, see `.claude/NOTES.md`) is a sibling of `apps/`, not a
32
+ * descendant of it, so the `@source "../../"` above does not reach it. Its `components/` tree (Modal/
33
+ * Drawer/Button/Alert/Skeleton/FormField/PopoverPortal/ContactAvatar/MiniDatePicker/BottomTabBar) needs
34
+ * the same explicit `@source` as `apps/**` does, for the same per-chunk-scanning reason, and for the same
35
+ * reason wherever this file is consumed from a `node_modules/@rapidmx/web-client/apps/shared/styles/`
36
+ * install too: `lib/` ships alongside `apps/` there as well, so this one relative path resolves correctly
37
+ * from both this repo's own checkout and a consumer's install.
38
+ */
39
+ @source "../../../lib";
40
+
50
41
  /*
51
42
  * Self-hosted display typeface — the four weights shipped in `public/fonts/`. Matches the
52
43
  * Book/Medium/Bold/Heavy naming + 400/500/700/800 weight mapping from the brand style guide
@@ -1,5 +1,5 @@
1
1
  import React, { PropsWithChildren } from "react";
2
- import { Branding } from "@rapidmx/react-shared/branding/brandingApi.js";
2
+ import { Branding } from "../../lib/branding/brandingApi.js";
3
3
  export interface LayoutProps {
4
4
  /**
5
5
  * Supplied by `WwwRoute`'s `fetchProps()` override (`src/mongo/routes/wwwRoute.ts`/
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { AppearanceHead, appearanceHtmlAttributes } from "../shared/appearance/AppearanceHead.js";
3
- import { CUSTOM_STYLESHEET_LINK_ID } from "@rapidmx/react-shared/branding/useBranding.js";
3
+ import { CUSTOM_STYLESHEET_LINK_ID } from "../../lib/branding/useBranding.js";
4
4
  export default function Layout({ children, branding, appearance, userUid }) {
5
5
  const title = branding?.title || branding?.companyName ? `${branding?.title || branding?.companyName}: Mail` : "RapidMX: Mail";
6
6
  const iconHref = branding?.iconUrl || branding?.logoUrl || "/images/logo.svg";
@@ -4,5 +4,5 @@ declare function CalendarPage(props: CalendarShellProps): React.JSX.Element;
4
4
  export default CalendarPage;
5
5
  /** The tab's title: `Brand: Calendar` (see `pageTitle()`). */
6
6
  export declare const title: (props: {
7
- branding?: Pick<import("@rapidmx/react-shared/branding/brandingApi.js").Branding, "title" | "companyName"> | null;
7
+ branding?: Pick<import("../../../lib/branding/brandingApi.js").Branding, "title" | "companyName"> | null;
8
8
  }) => string;