@jbctechsolutions/mcp-office365 2.5.1

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 (339) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +667 -0
  3. package/dist/applescript/account-repository.d.ts +30 -0
  4. package/dist/applescript/account-repository.d.ts.map +1 -0
  5. package/dist/applescript/account-repository.js +38 -0
  6. package/dist/applescript/account-repository.js.map +1 -0
  7. package/dist/applescript/account-scripts.d.ts +21 -0
  8. package/dist/applescript/account-scripts.d.ts.map +1 -0
  9. package/dist/applescript/account-scripts.js +180 -0
  10. package/dist/applescript/account-scripts.js.map +1 -0
  11. package/dist/applescript/calendar-manager.d.ts +44 -0
  12. package/dist/applescript/calendar-manager.d.ts.map +1 -0
  13. package/dist/applescript/calendar-manager.js +92 -0
  14. package/dist/applescript/calendar-manager.js.map +1 -0
  15. package/dist/applescript/calendar-writer.d.ts +36 -0
  16. package/dist/applescript/calendar-writer.d.ts.map +1 -0
  17. package/dist/applescript/calendar-writer.js +94 -0
  18. package/dist/applescript/calendar-writer.js.map +1 -0
  19. package/dist/applescript/content-readers.d.ts +114 -0
  20. package/dist/applescript/content-readers.d.ts.map +1 -0
  21. package/dist/applescript/content-readers.js +328 -0
  22. package/dist/applescript/content-readers.js.map +1 -0
  23. package/dist/applescript/executor.d.ts +60 -0
  24. package/dist/applescript/executor.d.ts.map +1 -0
  25. package/dist/applescript/executor.js +173 -0
  26. package/dist/applescript/executor.js.map +1 -0
  27. package/dist/applescript/index.d.ts +20 -0
  28. package/dist/applescript/index.d.ts.map +1 -0
  29. package/dist/applescript/index.js +29 -0
  30. package/dist/applescript/index.js.map +1 -0
  31. package/dist/applescript/mail-sender.d.ts +38 -0
  32. package/dist/applescript/mail-sender.d.ts.map +1 -0
  33. package/dist/applescript/mail-sender.js +67 -0
  34. package/dist/applescript/mail-sender.js.map +1 -0
  35. package/dist/applescript/parser.d.ts +235 -0
  36. package/dist/applescript/parser.d.ts.map +1 -0
  37. package/dist/applescript/parser.js +496 -0
  38. package/dist/applescript/parser.js.map +1 -0
  39. package/dist/applescript/repository.d.ts +64 -0
  40. package/dist/applescript/repository.d.ts.map +1 -0
  41. package/dist/applescript/repository.js +444 -0
  42. package/dist/applescript/repository.js.map +1 -0
  43. package/dist/applescript/scripts.d.ts +265 -0
  44. package/dist/applescript/scripts.d.ts.map +1 -0
  45. package/dist/applescript/scripts.js +1483 -0
  46. package/dist/applescript/scripts.js.map +1 -0
  47. package/dist/approval/hash.d.ts +87 -0
  48. package/dist/approval/hash.d.ts.map +1 -0
  49. package/dist/approval/hash.js +102 -0
  50. package/dist/approval/hash.js.map +1 -0
  51. package/dist/approval/index.d.ts +13 -0
  52. package/dist/approval/index.d.ts.map +1 -0
  53. package/dist/approval/index.js +7 -0
  54. package/dist/approval/index.js.map +1 -0
  55. package/dist/approval/token-manager.d.ts +51 -0
  56. package/dist/approval/token-manager.d.ts.map +1 -0
  57. package/dist/approval/token-manager.js +111 -0
  58. package/dist/approval/token-manager.js.map +1 -0
  59. package/dist/approval/types.d.ts +44 -0
  60. package/dist/approval/types.d.ts.map +1 -0
  61. package/dist/approval/types.js +6 -0
  62. package/dist/approval/types.js.map +1 -0
  63. package/dist/cli.d.ts +30 -0
  64. package/dist/cli.d.ts.map +1 -0
  65. package/dist/cli.js +143 -0
  66. package/dist/cli.js.map +1 -0
  67. package/dist/config.d.ts +27 -0
  68. package/dist/config.d.ts.map +1 -0
  69. package/dist/config.js +42 -0
  70. package/dist/config.js.map +1 -0
  71. package/dist/database/connection.d.ts +77 -0
  72. package/dist/database/connection.d.ts.map +1 -0
  73. package/dist/database/connection.js +130 -0
  74. package/dist/database/connection.js.map +1 -0
  75. package/dist/database/index.d.ts +11 -0
  76. package/dist/database/index.d.ts.map +1 -0
  77. package/dist/database/index.js +11 -0
  78. package/dist/database/index.js.map +1 -0
  79. package/dist/database/queries.d.ts +93 -0
  80. package/dist/database/queries.d.ts.map +1 -0
  81. package/dist/database/queries.js +430 -0
  82. package/dist/database/queries.js.map +1 -0
  83. package/dist/database/repository.d.ts +198 -0
  84. package/dist/database/repository.d.ts.map +1 -0
  85. package/dist/database/repository.js +199 -0
  86. package/dist/database/repository.js.map +1 -0
  87. package/dist/graph/attachments.d.ts +72 -0
  88. package/dist/graph/attachments.d.ts.map +1 -0
  89. package/dist/graph/attachments.js +207 -0
  90. package/dist/graph/attachments.js.map +1 -0
  91. package/dist/graph/auth/config.d.ts +34 -0
  92. package/dist/graph/auth/config.d.ts.map +1 -0
  93. package/dist/graph/auth/config.js +78 -0
  94. package/dist/graph/auth/config.js.map +1 -0
  95. package/dist/graph/auth/device-code-flow.d.ts +55 -0
  96. package/dist/graph/auth/device-code-flow.d.ts.map +1 -0
  97. package/dist/graph/auth/device-code-flow.js +180 -0
  98. package/dist/graph/auth/device-code-flow.js.map +1 -0
  99. package/dist/graph/auth/index.d.ts +13 -0
  100. package/dist/graph/auth/index.d.ts.map +1 -0
  101. package/dist/graph/auth/index.js +13 -0
  102. package/dist/graph/auth/index.js.map +1 -0
  103. package/dist/graph/auth/token-cache.d.ts +41 -0
  104. package/dist/graph/auth/token-cache.d.ts.map +1 -0
  105. package/dist/graph/auth/token-cache.js +105 -0
  106. package/dist/graph/auth/token-cache.js.map +1 -0
  107. package/dist/graph/client/batch.d.ts +38 -0
  108. package/dist/graph/client/batch.d.ts.map +1 -0
  109. package/dist/graph/client/batch.js +33 -0
  110. package/dist/graph/client/batch.js.map +1 -0
  111. package/dist/graph/client/cache.d.ts +64 -0
  112. package/dist/graph/client/cache.d.ts.map +1 -0
  113. package/dist/graph/client/cache.js +108 -0
  114. package/dist/graph/client/cache.js.map +1 -0
  115. package/dist/graph/client/graph-client.d.ts +630 -0
  116. package/dist/graph/client/graph-client.d.ts.map +1 -0
  117. package/dist/graph/client/graph-client.js +1771 -0
  118. package/dist/graph/client/graph-client.js.map +1 -0
  119. package/dist/graph/client/index.d.ts +12 -0
  120. package/dist/graph/client/index.d.ts.map +1 -0
  121. package/dist/graph/client/index.js +12 -0
  122. package/dist/graph/client/index.js.map +1 -0
  123. package/dist/graph/content-readers.d.ts +106 -0
  124. package/dist/graph/content-readers.d.ts.map +1 -0
  125. package/dist/graph/content-readers.js +321 -0
  126. package/dist/graph/content-readers.js.map +1 -0
  127. package/dist/graph/index.d.ts +18 -0
  128. package/dist/graph/index.d.ts.map +1 -0
  129. package/dist/graph/index.js +23 -0
  130. package/dist/graph/index.js.map +1 -0
  131. package/dist/graph/mailbox-adapter.d.ts +30 -0
  132. package/dist/graph/mailbox-adapter.d.ts.map +1 -0
  133. package/dist/graph/mailbox-adapter.js +59 -0
  134. package/dist/graph/mailbox-adapter.js.map +1 -0
  135. package/dist/graph/mappers/contact-mapper.d.ts +14 -0
  136. package/dist/graph/mappers/contact-mapper.d.ts.map +1 -0
  137. package/dist/graph/mappers/contact-mapper.js +20 -0
  138. package/dist/graph/mappers/contact-mapper.js.map +1 -0
  139. package/dist/graph/mappers/email-mapper.d.ts +14 -0
  140. package/dist/graph/mappers/email-mapper.d.ts.map +1 -0
  141. package/dist/graph/mappers/email-mapper.js +44 -0
  142. package/dist/graph/mappers/email-mapper.js.map +1 -0
  143. package/dist/graph/mappers/event-mapper.d.ts +14 -0
  144. package/dist/graph/mappers/event-mapper.d.ts.map +1 -0
  145. package/dist/graph/mappers/event-mapper.js +31 -0
  146. package/dist/graph/mappers/event-mapper.js.map +1 -0
  147. package/dist/graph/mappers/folder-mapper.d.ts +22 -0
  148. package/dist/graph/mappers/folder-mapper.d.ts.map +1 -0
  149. package/dist/graph/mappers/folder-mapper.js +51 -0
  150. package/dist/graph/mappers/folder-mapper.js.map +1 -0
  151. package/dist/graph/mappers/index.d.ts +16 -0
  152. package/dist/graph/mappers/index.d.ts.map +1 -0
  153. package/dist/graph/mappers/index.js +16 -0
  154. package/dist/graph/mappers/index.js.map +1 -0
  155. package/dist/graph/mappers/task-mapper.d.ts +20 -0
  156. package/dist/graph/mappers/task-mapper.d.ts.map +1 -0
  157. package/dist/graph/mappers/task-mapper.js +27 -0
  158. package/dist/graph/mappers/task-mapper.js.map +1 -0
  159. package/dist/graph/mappers/utils.d.ts +97 -0
  160. package/dist/graph/mappers/utils.d.ts.map +1 -0
  161. package/dist/graph/mappers/utils.js +186 -0
  162. package/dist/graph/mappers/utils.js.map +1 -0
  163. package/dist/graph/repository.d.ts +1104 -0
  164. package/dist/graph/repository.d.ts.map +1 -0
  165. package/dist/graph/repository.js +2999 -0
  166. package/dist/graph/repository.js.map +1 -0
  167. package/dist/index.d.ts +21 -0
  168. package/dist/index.d.ts.map +1 -0
  169. package/dist/index.js +6052 -0
  170. package/dist/index.js.map +1 -0
  171. package/dist/parsers/html-stripper.d.ts +41 -0
  172. package/dist/parsers/html-stripper.d.ts.map +1 -0
  173. package/dist/parsers/html-stripper.js +179 -0
  174. package/dist/parsers/html-stripper.js.map +1 -0
  175. package/dist/parsers/index.d.ts +12 -0
  176. package/dist/parsers/index.d.ts.map +1 -0
  177. package/dist/parsers/index.js +12 -0
  178. package/dist/parsers/index.js.map +1 -0
  179. package/dist/parsers/olk15.d.ts +87 -0
  180. package/dist/parsers/olk15.d.ts.map +1 -0
  181. package/dist/parsers/olk15.js +368 -0
  182. package/dist/parsers/olk15.js.map +1 -0
  183. package/dist/signature.d.ts +22 -0
  184. package/dist/signature.d.ts.map +1 -0
  185. package/dist/signature.js +89 -0
  186. package/dist/signature.js.map +1 -0
  187. package/dist/tools/calendar-permissions.d.ts +79 -0
  188. package/dist/tools/calendar-permissions.d.ts.map +1 -0
  189. package/dist/tools/calendar-permissions.js +121 -0
  190. package/dist/tools/calendar-permissions.js.map +1 -0
  191. package/dist/tools/calendar.d.ts +208 -0
  192. package/dist/tools/calendar.d.ts.map +1 -0
  193. package/dist/tools/calendar.js +247 -0
  194. package/dist/tools/calendar.js.map +1 -0
  195. package/dist/tools/categories.d.ts +94 -0
  196. package/dist/tools/categories.d.ts.map +1 -0
  197. package/dist/tools/categories.js +117 -0
  198. package/dist/tools/categories.js.map +1 -0
  199. package/dist/tools/checklist-items.d.ts +89 -0
  200. package/dist/tools/checklist-items.d.ts.map +1 -0
  201. package/dist/tools/checklist-items.js +140 -0
  202. package/dist/tools/checklist-items.js.map +1 -0
  203. package/dist/tools/contacts.d.ts +94 -0
  204. package/dist/tools/contacts.d.ts.map +1 -0
  205. package/dist/tools/contacts.js +134 -0
  206. package/dist/tools/contacts.js.map +1 -0
  207. package/dist/tools/excel.d.ts +96 -0
  208. package/dist/tools/excel.d.ts.map +1 -0
  209. package/dist/tools/excel.js +165 -0
  210. package/dist/tools/excel.js.map +1 -0
  211. package/dist/tools/focused-overrides.d.ts +70 -0
  212. package/dist/tools/focused-overrides.d.ts.map +1 -0
  213. package/dist/tools/focused-overrides.js +117 -0
  214. package/dist/tools/focused-overrides.js.map +1 -0
  215. package/dist/tools/index.d.ts +22 -0
  216. package/dist/tools/index.d.ts.map +1 -0
  217. package/dist/tools/index.js +34 -0
  218. package/dist/tools/index.js.map +1 -0
  219. package/dist/tools/linked-resources.d.ts +74 -0
  220. package/dist/tools/linked-resources.d.ts.map +1 -0
  221. package/dist/tools/linked-resources.js +122 -0
  222. package/dist/tools/linked-resources.js.map +1 -0
  223. package/dist/tools/mail-rules.d.ts +98 -0
  224. package/dist/tools/mail-rules.d.ts.map +1 -0
  225. package/dist/tools/mail-rules.js +169 -0
  226. package/dist/tools/mail-rules.js.map +1 -0
  227. package/dist/tools/mail-send.d.ts +314 -0
  228. package/dist/tools/mail-send.d.ts.map +1 -0
  229. package/dist/tools/mail-send.js +555 -0
  230. package/dist/tools/mail-send.js.map +1 -0
  231. package/dist/tools/mail.d.ts +127 -0
  232. package/dist/tools/mail.d.ts.map +1 -0
  233. package/dist/tools/mail.js +311 -0
  234. package/dist/tools/mail.js.map +1 -0
  235. package/dist/tools/mailbox-organization.d.ts +301 -0
  236. package/dist/tools/mailbox-organization.d.ts.map +1 -0
  237. package/dist/tools/mailbox-organization.js +541 -0
  238. package/dist/tools/mailbox-organization.js.map +1 -0
  239. package/dist/tools/meetings.d.ts +114 -0
  240. package/dist/tools/meetings.d.ts.map +1 -0
  241. package/dist/tools/meetings.js +110 -0
  242. package/dist/tools/meetings.js.map +1 -0
  243. package/dist/tools/notes.d.ts +74 -0
  244. package/dist/tools/notes.d.ts.map +1 -0
  245. package/dist/tools/notes.js +136 -0
  246. package/dist/tools/notes.js.map +1 -0
  247. package/dist/tools/onedrive.d.ts +194 -0
  248. package/dist/tools/onedrive.d.ts.map +1 -0
  249. package/dist/tools/onedrive.js +257 -0
  250. package/dist/tools/onedrive.js.map +1 -0
  251. package/dist/tools/people.d.ts +129 -0
  252. package/dist/tools/people.d.ts.map +1 -0
  253. package/dist/tools/people.js +195 -0
  254. package/dist/tools/people.js.map +1 -0
  255. package/dist/tools/planner-visualization.d.ts +91 -0
  256. package/dist/tools/planner-visualization.d.ts.map +1 -0
  257. package/dist/tools/planner-visualization.js +192 -0
  258. package/dist/tools/planner-visualization.js.map +1 -0
  259. package/dist/tools/planner.d.ts +288 -0
  260. package/dist/tools/planner.d.ts.map +1 -0
  261. package/dist/tools/planner.js +368 -0
  262. package/dist/tools/planner.js.map +1 -0
  263. package/dist/tools/scheduling.d.ts +49 -0
  264. package/dist/tools/scheduling.d.ts.map +1 -0
  265. package/dist/tools/scheduling.js +115 -0
  266. package/dist/tools/scheduling.js.map +1 -0
  267. package/dist/tools/sharepoint.d.ts +115 -0
  268. package/dist/tools/sharepoint.d.ts.map +1 -0
  269. package/dist/tools/sharepoint.js +99 -0
  270. package/dist/tools/sharepoint.js.map +1 -0
  271. package/dist/tools/task-attachments.d.ts +74 -0
  272. package/dist/tools/task-attachments.d.ts.map +1 -0
  273. package/dist/tools/task-attachments.js +122 -0
  274. package/dist/tools/task-attachments.js.map +1 -0
  275. package/dist/tools/tasks.d.ts +74 -0
  276. package/dist/tools/tasks.d.ts.map +1 -0
  277. package/dist/tools/tasks.js +126 -0
  278. package/dist/tools/tasks.js.map +1 -0
  279. package/dist/tools/teams.d.ts +389 -0
  280. package/dist/tools/teams.d.ts.map +1 -0
  281. package/dist/tools/teams.js +546 -0
  282. package/dist/tools/teams.js.map +1 -0
  283. package/dist/types/calendar.d.ts +60 -0
  284. package/dist/types/calendar.d.ts.map +1 -0
  285. package/dist/types/calendar.js +15 -0
  286. package/dist/types/calendar.js.map +1 -0
  287. package/dist/types/contacts.d.ts +96 -0
  288. package/dist/types/contacts.d.ts.map +1 -0
  289. package/dist/types/contacts.js +41 -0
  290. package/dist/types/contacts.js.map +1 -0
  291. package/dist/types/index.d.ts +15 -0
  292. package/dist/types/index.d.ts.map +1 -0
  293. package/dist/types/index.js +16 -0
  294. package/dist/types/index.js.map +1 -0
  295. package/dist/types/mail.d.ts +108 -0
  296. package/dist/types/mail.d.ts.map +1 -0
  297. package/dist/types/mail.js +40 -0
  298. package/dist/types/mail.js.map +1 -0
  299. package/dist/types/notes.d.ts +26 -0
  300. package/dist/types/notes.d.ts.map +1 -0
  301. package/dist/types/notes.js +6 -0
  302. package/dist/types/notes.js.map +1 -0
  303. package/dist/types/tasks.d.ts +31 -0
  304. package/dist/types/tasks.d.ts.map +1 -0
  305. package/dist/types/tasks.js +6 -0
  306. package/dist/types/tasks.js.map +1 -0
  307. package/dist/utils/dates.d.ts +66 -0
  308. package/dist/utils/dates.d.ts.map +1 -0
  309. package/dist/utils/dates.js +94 -0
  310. package/dist/utils/dates.js.map +1 -0
  311. package/dist/utils/errors.d.ts +218 -0
  312. package/dist/utils/errors.d.ts.map +1 -0
  313. package/dist/utils/errors.js +306 -0
  314. package/dist/utils/errors.js.map +1 -0
  315. package/dist/utils/index.d.ts +10 -0
  316. package/dist/utils/index.d.ts.map +1 -0
  317. package/dist/utils/index.js +10 -0
  318. package/dist/utils/index.js.map +1 -0
  319. package/dist/visualization/html.d.ts +26 -0
  320. package/dist/visualization/html.d.ts.map +1 -0
  321. package/dist/visualization/html.js +306 -0
  322. package/dist/visualization/html.js.map +1 -0
  323. package/dist/visualization/markdown.d.ts +25 -0
  324. package/dist/visualization/markdown.d.ts.map +1 -0
  325. package/dist/visualization/markdown.js +186 -0
  326. package/dist/visualization/markdown.js.map +1 -0
  327. package/dist/visualization/mermaid.d.ts +25 -0
  328. package/dist/visualization/mermaid.d.ts.map +1 -0
  329. package/dist/visualization/mermaid.js +158 -0
  330. package/dist/visualization/mermaid.js.map +1 -0
  331. package/dist/visualization/svg.d.ts +25 -0
  332. package/dist/visualization/svg.d.ts.map +1 -0
  333. package/dist/visualization/svg.js +282 -0
  334. package/dist/visualization/svg.js.map +1 -0
  335. package/dist/visualization/types.d.ts +43 -0
  336. package/dist/visualization/types.d.ts.map +1 -0
  337. package/dist/visualization/types.js +34 -0
  338. package/dist/visualization/types.js.map +1 -0
  339. package/package.json +88 -0
@@ -0,0 +1,430 @@
1
+ /**
2
+ * Copyright (c) 2026 JBC Tech Solutions, LLC
3
+ * Licensed under the MIT License. See LICENSE file in the project root.
4
+ */
5
+ /**
6
+ * SQL query definitions for Outlook database.
7
+ *
8
+ * All queries are read-only SELECT statements.
9
+ */
10
+ // =============================================================================
11
+ // Folder Queries
12
+ // =============================================================================
13
+ /**
14
+ * Lists all mail folders with message and unread counts.
15
+ */
16
+ export const LIST_FOLDERS = `
17
+ SELECT
18
+ f.Record_RecordID as id,
19
+ f.Folder_Name as name,
20
+ f.Folder_ParentID as parentId,
21
+ f.Folder_SpecialFolderType as specialType,
22
+ f.Folder_FolderType as folderType,
23
+ f.Record_AccountUID as accountId,
24
+ (SELECT COUNT(*) FROM Mail m WHERE m.Record_FolderID = f.Record_RecordID) as messageCount,
25
+ (SELECT COUNT(*) FROM Mail m WHERE m.Record_FolderID = f.Record_RecordID AND m.Message_ReadFlag = 0) as unreadCount
26
+ FROM Folders f
27
+ WHERE f.Folder_FolderClass = 0
28
+ ORDER BY f.Folder_FolderOrder, f.Folder_Name
29
+ `;
30
+ /**
31
+ * Gets a single folder by ID.
32
+ */
33
+ export const GET_FOLDER = `
34
+ SELECT
35
+ f.Record_RecordID as id,
36
+ f.Folder_Name as name,
37
+ f.Folder_ParentID as parentId,
38
+ f.Folder_SpecialFolderType as specialType,
39
+ f.Folder_FolderType as folderType,
40
+ f.Record_AccountUID as accountId,
41
+ (SELECT COUNT(*) FROM Mail m WHERE m.Record_FolderID = f.Record_RecordID) as messageCount,
42
+ (SELECT COUNT(*) FROM Mail m WHERE m.Record_FolderID = f.Record_RecordID AND m.Message_ReadFlag = 0) as unreadCount
43
+ FROM Folders f
44
+ WHERE f.Record_RecordID = ?
45
+ `;
46
+ // =============================================================================
47
+ // Mail Queries
48
+ // =============================================================================
49
+ /**
50
+ * Lists emails in a folder with pagination.
51
+ */
52
+ export const LIST_EMAILS = `
53
+ SELECT
54
+ Record_RecordID as id,
55
+ Record_FolderID as folderId,
56
+ Message_NormalizedSubject as subject,
57
+ Message_SenderList as sender,
58
+ Message_SenderAddressList as senderAddress,
59
+ Message_RecipientList as recipients,
60
+ Message_DisplayTo as displayTo,
61
+ Message_ToRecipientAddressList as toAddresses,
62
+ Message_CCRecipientAddressList as ccAddresses,
63
+ Message_Preview as preview,
64
+ Message_ReadFlag as isRead,
65
+ Message_TimeReceived as timeReceived,
66
+ Message_TimeSent as timeSent,
67
+ Message_HasAttachment as hasAttachment,
68
+ Message_Size as size,
69
+ Record_Priority as priority,
70
+ Record_FlagStatus as flagStatus,
71
+ PathToDataFile as dataFilePath
72
+ FROM Mail
73
+ WHERE Record_FolderID = ?
74
+ ORDER BY Message_TimeReceived DESC
75
+ LIMIT ? OFFSET ?
76
+ `;
77
+ /**
78
+ * Lists unread emails in a folder with pagination.
79
+ */
80
+ export const LIST_UNREAD_EMAILS = `
81
+ SELECT
82
+ Record_RecordID as id,
83
+ Record_FolderID as folderId,
84
+ Message_NormalizedSubject as subject,
85
+ Message_SenderList as sender,
86
+ Message_SenderAddressList as senderAddress,
87
+ Message_RecipientList as recipients,
88
+ Message_DisplayTo as displayTo,
89
+ Message_Preview as preview,
90
+ Message_ReadFlag as isRead,
91
+ Message_TimeReceived as timeReceived,
92
+ Message_TimeSent as timeSent,
93
+ Message_HasAttachment as hasAttachment,
94
+ Message_Size as size,
95
+ Record_Priority as priority,
96
+ Record_FlagStatus as flagStatus,
97
+ PathToDataFile as dataFilePath
98
+ FROM Mail
99
+ WHERE Record_FolderID = ? AND Message_ReadFlag = 0
100
+ ORDER BY Message_TimeReceived DESC
101
+ LIMIT ? OFFSET ?
102
+ `;
103
+ /**
104
+ * Searches emails by subject, sender, or preview.
105
+ */
106
+ export const SEARCH_EMAILS = `
107
+ SELECT
108
+ Record_RecordID as id,
109
+ Record_FolderID as folderId,
110
+ Message_NormalizedSubject as subject,
111
+ Message_SenderList as sender,
112
+ Message_SenderAddressList as senderAddress,
113
+ Message_RecipientList as recipients,
114
+ Message_Preview as preview,
115
+ Message_ReadFlag as isRead,
116
+ Message_TimeReceived as timeReceived,
117
+ Message_HasAttachment as hasAttachment,
118
+ PathToDataFile as dataFilePath
119
+ FROM Mail
120
+ WHERE (
121
+ Message_NormalizedSubject LIKE ?
122
+ OR Message_SenderList LIKE ?
123
+ OR Message_Preview LIKE ?
124
+ )
125
+ ORDER BY Message_TimeReceived DESC
126
+ LIMIT ?
127
+ `;
128
+ /**
129
+ * Searches emails within a specific folder.
130
+ */
131
+ export const SEARCH_EMAILS_IN_FOLDER = `
132
+ SELECT
133
+ Record_RecordID as id,
134
+ Record_FolderID as folderId,
135
+ Message_NormalizedSubject as subject,
136
+ Message_SenderList as sender,
137
+ Message_SenderAddressList as senderAddress,
138
+ Message_RecipientList as recipients,
139
+ Message_Preview as preview,
140
+ Message_ReadFlag as isRead,
141
+ Message_TimeReceived as timeReceived,
142
+ Message_HasAttachment as hasAttachment,
143
+ PathToDataFile as dataFilePath
144
+ FROM Mail
145
+ WHERE Record_FolderID = ? AND (
146
+ Message_NormalizedSubject LIKE ?
147
+ OR Message_SenderList LIKE ?
148
+ OR Message_Preview LIKE ?
149
+ )
150
+ ORDER BY Message_TimeReceived DESC
151
+ LIMIT ?
152
+ `;
153
+ /**
154
+ * Gets a single email by ID.
155
+ */
156
+ export const GET_EMAIL = `
157
+ SELECT
158
+ Record_RecordID as id,
159
+ Record_FolderID as folderId,
160
+ Message_NormalizedSubject as subject,
161
+ Message_SenderList as sender,
162
+ Message_SenderAddressList as senderAddress,
163
+ Message_RecipientList as recipients,
164
+ Message_DisplayTo as displayTo,
165
+ Message_ToRecipientAddressList as toAddresses,
166
+ Message_CCRecipientAddressList as ccAddresses,
167
+ Message_Preview as preview,
168
+ Message_ReadFlag as isRead,
169
+ Message_TimeReceived as timeReceived,
170
+ Message_TimeSent as timeSent,
171
+ Message_HasAttachment as hasAttachment,
172
+ Message_Size as size,
173
+ Record_Priority as priority,
174
+ Record_FlagStatus as flagStatus,
175
+ Record_Categories as categories,
176
+ Message_MessageID as messageId,
177
+ Conversation_ConversationID as conversationId,
178
+ PathToDataFile as dataFilePath
179
+ FROM Mail
180
+ WHERE Record_RecordID = ?
181
+ `;
182
+ /**
183
+ * Gets unread count for all folders or a specific folder.
184
+ */
185
+ export const GET_UNREAD_COUNT = `
186
+ SELECT COUNT(*) as count
187
+ FROM Mail
188
+ WHERE Message_ReadFlag = 0
189
+ `;
190
+ export const GET_UNREAD_COUNT_BY_FOLDER = `
191
+ SELECT COUNT(*) as count
192
+ FROM Mail
193
+ WHERE Message_ReadFlag = 0 AND Record_FolderID = ?
194
+ `;
195
+ // =============================================================================
196
+ // Calendar Queries
197
+ // =============================================================================
198
+ /**
199
+ * Lists calendar folders.
200
+ */
201
+ export const LIST_CALENDARS = `
202
+ SELECT
203
+ f.Record_RecordID as id,
204
+ f.Folder_Name as name,
205
+ f.Record_AccountUID as accountId
206
+ FROM Folders f
207
+ WHERE f.Folder_SpecialFolderType = 4
208
+ ORDER BY f.Folder_Name
209
+ `;
210
+ /**
211
+ * Lists events with optional date range and folder filter.
212
+ */
213
+ export const LIST_EVENTS = `
214
+ SELECT
215
+ Record_RecordID as id,
216
+ Record_FolderID as folderId,
217
+ NULL as subject,
218
+ Calendar_StartDateUTC as startDate,
219
+ Calendar_EndDateUTC as endDate,
220
+ Calendar_IsRecurring as isRecurring,
221
+ Calendar_HasReminder as hasReminder,
222
+ Calendar_AttendeeCount as attendeeCount,
223
+ Calendar_UID as uid,
224
+ PathToDataFile as dataFilePath
225
+ FROM CalendarEvents
226
+ ORDER BY Calendar_StartDateUTC
227
+ LIMIT ?
228
+ `;
229
+ export const LIST_EVENTS_BY_FOLDER = `
230
+ SELECT
231
+ Record_RecordID as id,
232
+ Record_FolderID as folderId,
233
+ NULL as subject,
234
+ Calendar_StartDateUTC as startDate,
235
+ Calendar_EndDateUTC as endDate,
236
+ Calendar_IsRecurring as isRecurring,
237
+ Calendar_HasReminder as hasReminder,
238
+ Calendar_AttendeeCount as attendeeCount,
239
+ Calendar_UID as uid,
240
+ PathToDataFile as dataFilePath
241
+ FROM CalendarEvents
242
+ WHERE Record_FolderID = ?
243
+ ORDER BY Calendar_StartDateUTC
244
+ LIMIT ?
245
+ `;
246
+ export const LIST_EVENTS_BY_DATE_RANGE = `
247
+ SELECT
248
+ Record_RecordID as id,
249
+ Record_FolderID as folderId,
250
+ NULL as subject,
251
+ Calendar_StartDateUTC as startDate,
252
+ Calendar_EndDateUTC as endDate,
253
+ Calendar_IsRecurring as isRecurring,
254
+ Calendar_HasReminder as hasReminder,
255
+ Calendar_AttendeeCount as attendeeCount,
256
+ Calendar_UID as uid,
257
+ PathToDataFile as dataFilePath
258
+ FROM CalendarEvents
259
+ WHERE Calendar_StartDateUTC >= ? AND Calendar_EndDateUTC <= ?
260
+ ORDER BY Calendar_StartDateUTC
261
+ LIMIT ?
262
+ `;
263
+ /**
264
+ * Gets a single event by ID.
265
+ */
266
+ export const GET_EVENT = `
267
+ SELECT
268
+ Record_RecordID as id,
269
+ Record_FolderID as folderId,
270
+ NULL as subject,
271
+ Calendar_StartDateUTC as startDate,
272
+ Calendar_EndDateUTC as endDate,
273
+ Calendar_IsRecurring as isRecurring,
274
+ Calendar_HasReminder as hasReminder,
275
+ Calendar_AttendeeCount as attendeeCount,
276
+ Calendar_UID as uid,
277
+ Calendar_MasterRecordID as masterRecordId,
278
+ Calendar_RecurrenceID as recurrenceId,
279
+ PathToDataFile as dataFilePath
280
+ FROM CalendarEvents
281
+ WHERE Record_RecordID = ?
282
+ `;
283
+ // =============================================================================
284
+ // Contact Queries
285
+ // =============================================================================
286
+ /**
287
+ * Lists contacts with pagination.
288
+ */
289
+ export const LIST_CONTACTS = `
290
+ SELECT
291
+ Record_RecordID as id,
292
+ Record_FolderID as folderId,
293
+ Contact_DisplayName as displayName,
294
+ Contact_DisplayNameSort as sortName,
295
+ Contact_ContactRecType as contactType,
296
+ PathToDataFile as dataFilePath
297
+ FROM Contacts
298
+ ORDER BY Contact_DisplayNameSort
299
+ LIMIT ? OFFSET ?
300
+ `;
301
+ /**
302
+ * Searches contacts by name.
303
+ */
304
+ export const SEARCH_CONTACTS = `
305
+ SELECT
306
+ Record_RecordID as id,
307
+ Record_FolderID as folderId,
308
+ Contact_DisplayName as displayName,
309
+ Contact_DisplayNameSort as sortName,
310
+ PathToDataFile as dataFilePath
311
+ FROM Contacts
312
+ WHERE Contact_DisplayName LIKE ? OR Contact_DisplayNameSort LIKE ?
313
+ ORDER BY Contact_DisplayNameSort
314
+ LIMIT ?
315
+ `;
316
+ /**
317
+ * Gets a single contact by ID.
318
+ */
319
+ export const GET_CONTACT = `
320
+ SELECT
321
+ Record_RecordID as id,
322
+ Record_FolderID as folderId,
323
+ Contact_DisplayName as displayName,
324
+ Contact_DisplayNameSort as sortName,
325
+ Contact_ContactRecType as contactType,
326
+ PathToDataFile as dataFilePath
327
+ FROM Contacts
328
+ WHERE Record_RecordID = ?
329
+ `;
330
+ // =============================================================================
331
+ // Task Queries
332
+ // =============================================================================
333
+ /**
334
+ * Lists tasks with pagination.
335
+ */
336
+ export const LIST_TASKS = `
337
+ SELECT
338
+ Record_RecordID as id,
339
+ Record_FolderID as folderId,
340
+ Task_Name as name,
341
+ Task_Completed as isCompleted,
342
+ Record_DueDate as dueDate,
343
+ Record_StartDate as startDate,
344
+ Record_Priority as priority,
345
+ PathToDataFile as dataFilePath
346
+ FROM Tasks
347
+ ORDER BY Record_DueDate, Task_Name
348
+ LIMIT ? OFFSET ?
349
+ `;
350
+ /**
351
+ * Lists incomplete tasks only.
352
+ */
353
+ export const LIST_INCOMPLETE_TASKS = `
354
+ SELECT
355
+ Record_RecordID as id,
356
+ Record_FolderID as folderId,
357
+ Task_Name as name,
358
+ Task_Completed as isCompleted,
359
+ Record_DueDate as dueDate,
360
+ Record_StartDate as startDate,
361
+ Record_Priority as priority,
362
+ PathToDataFile as dataFilePath
363
+ FROM Tasks
364
+ WHERE Task_Completed = 0
365
+ ORDER BY Record_DueDate, Task_Name
366
+ LIMIT ? OFFSET ?
367
+ `;
368
+ /**
369
+ * Searches tasks by name.
370
+ */
371
+ export const SEARCH_TASKS = `
372
+ SELECT
373
+ Record_RecordID as id,
374
+ Record_FolderID as folderId,
375
+ Task_Name as name,
376
+ Task_Completed as isCompleted,
377
+ Record_DueDate as dueDate,
378
+ Record_Priority as priority,
379
+ PathToDataFile as dataFilePath
380
+ FROM Tasks
381
+ WHERE Task_Name LIKE ?
382
+ ORDER BY Record_DueDate, Task_Name
383
+ LIMIT ?
384
+ `;
385
+ /**
386
+ * Gets a single task by ID.
387
+ */
388
+ export const GET_TASK = `
389
+ SELECT
390
+ Record_RecordID as id,
391
+ Record_FolderID as folderId,
392
+ Task_Name as name,
393
+ Task_Completed as isCompleted,
394
+ Record_DueDate as dueDate,
395
+ Record_StartDate as startDate,
396
+ Record_Priority as priority,
397
+ Record_HasReminder as hasReminder,
398
+ PathToDataFile as dataFilePath
399
+ FROM Tasks
400
+ WHERE Record_RecordID = ?
401
+ `;
402
+ // =============================================================================
403
+ // Note Queries
404
+ // =============================================================================
405
+ /**
406
+ * Lists notes with pagination.
407
+ */
408
+ export const LIST_NOTES = `
409
+ SELECT
410
+ Record_RecordID as id,
411
+ Record_FolderID as folderId,
412
+ Record_ModDate as modifiedDate,
413
+ PathToDataFile as dataFilePath
414
+ FROM Notes
415
+ ORDER BY Record_ModDate DESC
416
+ LIMIT ? OFFSET ?
417
+ `;
418
+ /**
419
+ * Gets a single note by ID.
420
+ */
421
+ export const GET_NOTE = `
422
+ SELECT
423
+ Record_RecordID as id,
424
+ Record_FolderID as folderId,
425
+ Record_ModDate as modifiedDate,
426
+ PathToDataFile as dataFilePath
427
+ FROM Notes
428
+ WHERE Record_RecordID = ?
429
+ `;
430
+ //# sourceMappingURL=queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/database/queries.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AAEH,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;CAa3B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;CAYzB,CAAC;AAEF,gFAAgF;AAChF,eAAe;AACf,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwB1B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;CAsBjC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;CAqB5B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;CAqBtC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAyBxB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;CAI/B,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG;;;;CAIzC,CAAC;AAEF,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;CAQ7B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;CAe1B,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;CAgBpC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;;;;;;;;;;;;;CAgBxC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;CAgBxB,CAAC;AAEF,gFAAgF;AAChF,kBAAkB;AAClB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;CAW5B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;;;;;CAW9B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;CAU1B,CAAC;AAEF,gFAAgF;AAChF,eAAe;AACf,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;CAazB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;CAcpC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;CAa3B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;;;;;;CAavB,CAAC;AAEF,gFAAgF;AAChF,eAAe;AACf,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;CASzB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;CAQvB,CAAC"}
@@ -0,0 +1,198 @@
1
+ /**
2
+ * Copyright (c) 2026 JBC Tech Solutions, LLC
3
+ * Licensed under the MIT License. See LICENSE file in the project root.
4
+ */
5
+ /**
6
+ * Repository for accessing Outlook data.
7
+ *
8
+ * Provides a data access layer over the SQLite database.
9
+ */
10
+ import type { IConnection } from './connection.js';
11
+ export interface FolderRow {
12
+ readonly id: number;
13
+ readonly name: string | null;
14
+ readonly parentId: number | null;
15
+ readonly specialType: number;
16
+ readonly folderType: number;
17
+ readonly accountId: number;
18
+ readonly messageCount: number;
19
+ readonly unreadCount: number;
20
+ }
21
+ export interface EmailRow {
22
+ readonly id: number;
23
+ readonly folderId: number;
24
+ readonly subject: string | null;
25
+ readonly sender: string | null;
26
+ readonly senderAddress: string | null;
27
+ readonly recipients: string | null;
28
+ readonly displayTo: string | null;
29
+ readonly toAddresses: string | null;
30
+ readonly ccAddresses: string | null;
31
+ readonly preview: string | null;
32
+ readonly isRead: number;
33
+ readonly timeReceived: number | null;
34
+ readonly timeSent: number | null;
35
+ readonly hasAttachment: number;
36
+ readonly size: number;
37
+ readonly priority: number;
38
+ readonly flagStatus: number;
39
+ readonly categories: Buffer | null;
40
+ readonly messageId: string | null;
41
+ readonly conversationId: number | null;
42
+ readonly dataFilePath: string | null;
43
+ }
44
+ export interface EventRow {
45
+ readonly id: number;
46
+ readonly folderId: number;
47
+ readonly subject: string | null;
48
+ readonly startDate: number | null;
49
+ readonly endDate: number | null;
50
+ readonly isRecurring: number;
51
+ readonly hasReminder: number;
52
+ readonly attendeeCount: number;
53
+ readonly uid: string | null;
54
+ readonly masterRecordId: number | null;
55
+ readonly recurrenceId: number | null;
56
+ readonly dataFilePath: string | null;
57
+ readonly onlineMeetingUrl: string | null;
58
+ }
59
+ export interface ContactRow {
60
+ readonly id: number;
61
+ readonly folderId: number;
62
+ readonly displayName: string | null;
63
+ readonly sortName: string | null;
64
+ readonly contactType: number | null;
65
+ readonly dataFilePath: string | null;
66
+ }
67
+ export interface TaskRow {
68
+ readonly id: number;
69
+ readonly folderId: number;
70
+ readonly name: string | null;
71
+ readonly isCompleted: number;
72
+ readonly dueDate: number | null;
73
+ readonly startDate: number | null;
74
+ readonly priority: number;
75
+ readonly hasReminder: number | null;
76
+ readonly dataFilePath: string | null;
77
+ }
78
+ export interface NoteRow {
79
+ readonly id: number;
80
+ readonly folderId: number;
81
+ readonly modifiedDate: number | null;
82
+ readonly dataFilePath: string | null;
83
+ }
84
+ export interface CountRow {
85
+ readonly count: number;
86
+ }
87
+ /**
88
+ * Interface for the Outlook data repository (for dependency injection).
89
+ */
90
+ export interface IRepository {
91
+ listFolders(): FolderRow[];
92
+ getFolder(id: number): FolderRow | undefined;
93
+ listEmails(folderId: number, limit: number, offset: number): EmailRow[];
94
+ listUnreadEmails(folderId: number, limit: number, offset: number): EmailRow[];
95
+ searchEmails(query: string, limit: number): EmailRow[];
96
+ searchEmailsInFolder(folderId: number, query: string, limit: number): EmailRow[];
97
+ getEmail(id: number): EmailRow | undefined;
98
+ getUnreadCount(): number;
99
+ getUnreadCountByFolder(folderId: number): number;
100
+ listCalendars(): FolderRow[];
101
+ listEvents(limit: number): EventRow[];
102
+ listEventsByFolder(folderId: number, limit: number): EventRow[];
103
+ listEventsByDateRange(startDate: number, endDate: number, limit: number): EventRow[];
104
+ searchEvents(query: string | null, startDate: string | null, endDate: string | null, limit: number): EventRow[];
105
+ getEvent(id: number): EventRow | undefined;
106
+ listContacts(limit: number, offset: number): ContactRow[];
107
+ searchContacts(query: string, limit: number): ContactRow[];
108
+ getContact(id: number): ContactRow | undefined;
109
+ listTasks(limit: number, offset: number): TaskRow[];
110
+ listIncompleteTasks(limit: number, offset: number): TaskRow[];
111
+ searchTasks(query: string, limit: number): TaskRow[];
112
+ getTask(id: number): TaskRow | undefined;
113
+ listNotes(limit: number, offset: number): NoteRow[];
114
+ getNote(id: number): NoteRow | undefined;
115
+ }
116
+ /**
117
+ * Interface for writable Outlook data operations.
118
+ * Extends IRepository with mutation methods for mailbox organization.
119
+ */
120
+ export interface IWriteableRepository extends IRepository {
121
+ moveEmail(emailId: number, destinationFolderId: number): void;
122
+ deleteEmail(emailId: number): void;
123
+ archiveEmail(emailId: number): void;
124
+ junkEmail(emailId: number): void;
125
+ markEmailRead(emailId: number, isRead: boolean): void;
126
+ setEmailFlag(emailId: number, flagStatus: number): void;
127
+ setEmailCategories(emailId: number, categories: string[]): void;
128
+ setEmailImportance(emailId: number, importance: string): void;
129
+ createFolder(name: string, parentFolderId?: number): FolderRow;
130
+ deleteFolder(folderId: number): void;
131
+ renameFolder(folderId: number, newName: string): void;
132
+ moveFolder(folderId: number, destinationParentId: number): void;
133
+ emptyFolder(folderId: number): void;
134
+ }
135
+ /**
136
+ * A value that may be synchronous or wrapped in a Promise.
137
+ */
138
+ export type MaybePromise<T> = T | Promise<T>;
139
+ /**
140
+ * Async-compatible repository interface for mailbox organization tools.
141
+ *
142
+ * Both sync (AppleScript) and async (Graph) repositories satisfy this
143
+ * interface. AppleScript repos return plain values; Graph repos return
144
+ * Promises. MailboxOrganizationTools awaits all calls uniformly.
145
+ */
146
+ export interface IMailboxRepository {
147
+ getEmail(id: number): MaybePromise<EmailRow | undefined>;
148
+ getFolder(id: number): MaybePromise<FolderRow | undefined>;
149
+ moveEmail(emailId: number, destinationFolderId: number): MaybePromise<void>;
150
+ deleteEmail(emailId: number): MaybePromise<void>;
151
+ archiveEmail(emailId: number): MaybePromise<void>;
152
+ junkEmail(emailId: number): MaybePromise<void>;
153
+ markEmailRead(emailId: number, isRead: boolean): MaybePromise<void>;
154
+ setEmailFlag(emailId: number, flagStatus: number): MaybePromise<void>;
155
+ setEmailCategories(emailId: number, categories: string[]): MaybePromise<void>;
156
+ setEmailImportance(emailId: number, importance: string): MaybePromise<void>;
157
+ createFolder(name: string, parentFolderId?: number): MaybePromise<FolderRow>;
158
+ deleteFolder(folderId: number): MaybePromise<void>;
159
+ renameFolder(folderId: number, newName: string): MaybePromise<void>;
160
+ moveFolder(folderId: number, destinationParentId: number): MaybePromise<void>;
161
+ emptyFolder(folderId: number): MaybePromise<void>;
162
+ }
163
+ /**
164
+ * Repository implementation using better-sqlite3.
165
+ */
166
+ export declare class OutlookRepository implements IRepository {
167
+ private readonly connection;
168
+ constructor(connection: IConnection);
169
+ listFolders(): FolderRow[];
170
+ getFolder(id: number): FolderRow | undefined;
171
+ listEmails(folderId: number, limit: number, offset: number): EmailRow[];
172
+ listUnreadEmails(folderId: number, limit: number, offset: number): EmailRow[];
173
+ searchEmails(query: string, limit: number): EmailRow[];
174
+ searchEmailsInFolder(folderId: number, query: string, limit: number): EmailRow[];
175
+ getEmail(id: number): EmailRow | undefined;
176
+ getUnreadCount(): number;
177
+ getUnreadCountByFolder(folderId: number): number;
178
+ listCalendars(): FolderRow[];
179
+ listEvents(limit: number): EventRow[];
180
+ listEventsByFolder(folderId: number, limit: number): EventRow[];
181
+ listEventsByDateRange(startDate: number, endDate: number, limit: number): EventRow[];
182
+ searchEvents(query: string | null, startDate: string | null, endDate: string | null, limit: number): EventRow[];
183
+ getEvent(id: number): EventRow | undefined;
184
+ listContacts(limit: number, offset: number): ContactRow[];
185
+ searchContacts(query: string, limit: number): ContactRow[];
186
+ getContact(id: number): ContactRow | undefined;
187
+ listTasks(limit: number, offset: number): TaskRow[];
188
+ listIncompleteTasks(limit: number, offset: number): TaskRow[];
189
+ searchTasks(query: string, limit: number): TaskRow[];
190
+ getTask(id: number): TaskRow | undefined;
191
+ listNotes(limit: number, offset: number): NoteRow[];
192
+ getNote(id: number): NoteRow | undefined;
193
+ }
194
+ /**
195
+ * Creates a repository with the given connection.
196
+ */
197
+ export declare function createRepository(connection: IConnection): IRepository;
198
+ //# sourceMappingURL=repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../src/database/repository.ts"],"names":[],"mappings":"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"}