microsoft-graph-client 1.0.33 → 1.0.35

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 (50) hide show
  1. package/dist/api/calendar.d.ts +6 -2
  2. package/dist/api/calendar.d.ts.map +1 -1
  3. package/dist/api/calendar.js +10 -3
  4. package/dist/api/calendar.js.map +1 -1
  5. package/dist/api/chats.d.ts +133 -4
  6. package/dist/api/chats.d.ts.map +1 -1
  7. package/dist/api/chats.js +194 -17
  8. package/dist/api/chats.js.map +1 -1
  9. package/dist/api/files.js +1 -1
  10. package/dist/api/files.js.map +1 -1
  11. package/dist/api/mail.d.ts.map +1 -1
  12. package/dist/api/mail.js +6 -0
  13. package/dist/api/mail.js.map +1 -1
  14. package/dist/api/messages.d.ts +122 -3
  15. package/dist/api/messages.d.ts.map +1 -1
  16. package/dist/api/messages.js +215 -50
  17. package/dist/api/messages.js.map +1 -1
  18. package/dist/api/users.d.ts +4 -3
  19. package/dist/api/users.d.ts.map +1 -1
  20. package/dist/api/users.js +13 -4
  21. package/dist/api/users.js.map +1 -1
  22. package/dist/types/calendar.d.ts +9 -0
  23. package/dist/types/calendar.d.ts.map +1 -1
  24. package/dist/types/calendar.js +14 -1
  25. package/dist/types/calendar.js.map +1 -1
  26. package/dist/types/chat.d.ts +42 -0
  27. package/dist/types/chat.d.ts.map +1 -1
  28. package/dist/types/file.d.ts +2 -0
  29. package/dist/types/file.d.ts.map +1 -1
  30. package/dist/types/index.d.ts +5 -3
  31. package/dist/types/index.d.ts.map +1 -1
  32. package/dist/types/index.js +2 -0
  33. package/dist/types/index.js.map +1 -1
  34. package/dist/types/mail.d.ts +4 -0
  35. package/dist/types/mail.d.ts.map +1 -1
  36. package/dist/types/message.d.ts +113 -8
  37. package/dist/types/message.d.ts.map +1 -1
  38. package/dist/types/user.d.ts +12 -0
  39. package/dist/types/user.d.ts.map +1 -1
  40. package/dist/types/user.js +4 -1
  41. package/dist/types/user.js.map +1 -1
  42. package/dist/utils/index.d.ts +1 -1
  43. package/dist/utils/index.d.ts.map +1 -1
  44. package/dist/utils/index.js +1 -1
  45. package/dist/utils/index.js.map +1 -1
  46. package/dist/utils/odata.d.ts +59 -8
  47. package/dist/utils/odata.d.ts.map +1 -1
  48. package/dist/utils/odata.js +64 -9
  49. package/dist/utils/odata.js.map +1 -1
  50. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import { BaseApi } from './base.js';
2
- import type { ChatMessage, DeleteChatMessageParams, DownloadHostedContentParams, DownloadHostedContentResult, GetChatMessagesParams, GetMessageParams, SearchMessagesParams, SearchResponse, SendChatMessageParams, SetMessageReactionParams, UnsetMessageReactionParams, UpdateChatMessageParams } from '../types/index.js';
2
+ import type { ChatMessage, DeleteChatMessageParams, DownloadHostedContentParams, DownloadHostedContentResult, GetChatMessagesParams, GetMessageParams, ListMessagesParams, ListMessagesResult, SearchMessagesParams, SearchResponse, SendChatMessageParams, SetMessageReactionParams, UnsetMessageReactionParams, UpdateChatMessageParams } from '../types/index.js';
3
3
  /**
4
4
  * API for message operations.
5
5
  */
@@ -14,9 +14,69 @@ export declare class MessagesApi extends BaseApi {
14
14
  */
15
15
  get(params: GetMessageParams): Promise<ChatMessage>;
16
16
  /**
17
- * Get messages from a chat.
17
+ * Get messages from a chat. Returns a flat array of `ChatMessage`.
18
+ *
19
+ * Backward-compat method: prefer `listMessages` for new code, which exposes
20
+ * pagination metadata and a richer return shape.
21
+ *
22
+ * **Bug fix history**: this method previously built the OData filter
23
+ * `from/user/id eq '<id>'` for the `fromUser` param. Graph rejects this
24
+ * with "The entity property 'user/id' and operationKind 'Equal' is not
25
+ * allowed in $filter query." (HTTP 400). The filter is now applied
26
+ * client-side after fetching the page — see the doc on `listMessages`
27
+ * for the full reasoning.
18
28
  */
19
29
  getChatMessages(params: GetChatMessagesParams): Promise<ChatMessage[]>;
30
+ /**
31
+ * List messages in a chat with caller-driven pagination.
32
+ *
33
+ * Returns one page plus a `nextLink` token. The caller passes the token
34
+ * back as `nextLink` on a follow-up call to fetch the next page. This
35
+ * method does NOT loop through pages.
36
+ *
37
+ * **Server-side capabilities of `/chats/{id}/messages`** (verified
38
+ * empirically — Microsoft's docs are vague on most of this):
39
+ *
40
+ * - `$top` ✓ (works, max ~50)
41
+ * - `$orderby=createdDateTime desc` ✓ (default)
42
+ * - `$filter=lastModifiedDateTime gt|lt <iso>` ✓ — the only content-ish
43
+ * filter that works
44
+ * - `$search` ✗ — "Query option 'Search' is not allowed"
45
+ * - `$filter=contains(body/content, 'X')` ✗ — "Only binary operation
46
+ * expressions are allowed"
47
+ * - `$filter=from/user/id eq 'X'` ✗ — "operationKind 'Equal' is not
48
+ * allowed"
49
+ *
50
+ * Microsoft's recommended approach for keyword search within a chat is:
51
+ * use the global `/search/query` endpoint and filter `chatId` client-side.
52
+ * That global path is implemented in `messages.search()`. This local path
53
+ * is for chronological reading of a chat with optional date filter.
54
+ *
55
+ * **The `containing` and `fromUser` params are client-side filters** —
56
+ * they keep only messages from the returned page that match. The
57
+ * `scanned` and `matched` fields in the result tell the caller how many
58
+ * messages were inspected vs how many matched, so the agent can paginate
59
+ * forward if it wants more.
60
+ *
61
+ * @example
62
+ * // Read the most recent 50 messages from a chat:
63
+ * const r = await client.messages.listMessages({ chatId, limit: 50 });
64
+ * console.log(r.messages, r.nextLink);
65
+ *
66
+ * @example
67
+ * // Find messages containing "ticket" in the most recent 50:
68
+ * const r = await client.messages.listMessages({
69
+ * chatId, limit: 50, containing: 'ticket'
70
+ * });
71
+ * // r.scanned === 50, r.matched === r.messages.length
72
+ *
73
+ * @example
74
+ * // Page forward:
75
+ * const r2 = await client.messages.listMessages({
76
+ * chatId, nextLink: r.nextLink
77
+ * });
78
+ */
79
+ listMessages(params: ListMessagesParams): Promise<ListMessagesResult>;
20
80
  /**
21
81
  * Send a message to a chat.
22
82
  */
@@ -26,7 +86,66 @@ export declare class MessagesApi extends BaseApi {
26
86
  */
27
87
  updateChatMessage(params: UpdateChatMessageParams): Promise<void>;
28
88
  /**
29
- * Search messages across chats and channels.
89
+ * Search chat messages across the signed-in user's chats and channels.
90
+ *
91
+ * Uses the BETA `/search/query` endpoint with `entityTypes: ['chatMessage']`.
92
+ * Beta is the canonical example in Microsoft's docs and is functionally
93
+ * equivalent to v1.0 (verified empirically — same results, same latency)
94
+ * but is the documented forward path. See:
95
+ * https://learn.microsoft.com/en-us/graph/search-concept-chat-messages
96
+ *
97
+ * **What this method DOES support:**
98
+ *
99
+ * - Free-text full-text search across message body and attachments.
100
+ * Microsoft Search indexes all messages the user has access to —
101
+ * NOT recency-windowed, unlike `/me/chats` filters.
102
+ * - The full set of documented KQL operators (`from:`, `to:`, `mentions:`,
103
+ * `IsRead:`, `hasAttachment:`, `sent>`, `sent<`) via typed params.
104
+ * - Real pagination via `from_offset` (skip N hits) and `size` (page size).
105
+ * Caller drives pagination — this method does NOT loop.
106
+ * - Up to 500 hits per call (Graph hard cap is 501).
107
+ *
108
+ * **What this method does NOT support, and why:**
109
+ *
110
+ * - **No `chatId` / `channelId` / `scope` filter.** Microsoft has not built
111
+ * server-side filtering by chat or channel for `chatMessage` search.
112
+ * Verified exhaustively against ~12 KQL operator variants and request
113
+ * body shapes (`stringInputs`, `sourceFilters`, etc.) — none filter.
114
+ * Confirmed by Microsoft on
115
+ * https://learn.microsoft.com/en-us/answers/questions/5510799 :
116
+ * "All scoping beyond keyword/KQL must be done client-side."
117
+ *
118
+ * - **`from:` does NOT accept user IDs.** Per docs and verified empirically,
119
+ * `from:` accepts a display name (`from:Bob`, `from:"Bob Smith"`) or an
120
+ * email (`from:bob@contoso.com`). Passing a GUID returns 0 hits silently.
121
+ * Resolve a user ID to a name/email before passing it here.
122
+ *
123
+ * - **`mentions:` is the inverse:** it ONLY accepts the user ID, and the
124
+ * GUID must have dashes stripped. Per docs.
125
+ *
126
+ * **About `total` in the response:** Microsoft's docs say total is "the
127
+ * number of results on the page, not the total number of matching results."
128
+ * That documentation is wrong (or outdated). Verified empirically: `total`
129
+ * IS the grand total of matching messages across all pages, regardless of
130
+ * `size`. For very common terms total can be in the thousands.
131
+ *
132
+ * @example
133
+ * // Find messages I sent containing "delivery", page 1:
134
+ * const r = await client.messages.search({
135
+ * query: 'delivery',
136
+ * from: 'evrim.a@first.bet',
137
+ * size: 25,
138
+ * });
139
+ * // r.value[0].hitsContainers[0]: { total, moreResultsAvailable, hits[] }
140
+ *
141
+ * @example
142
+ * // Page 2:
143
+ * const r2 = await client.messages.search({
144
+ * query: 'delivery',
145
+ * from: 'evrim.a@first.bet',
146
+ * size: 25,
147
+ * from_offset: 25,
148
+ * });
30
149
  */
31
150
  search(params: SearchMessagesParams): Promise<SearchResponse>;
32
151
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/api/messages.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,KAAK,EACV,WAAW,EAGX,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,EAC3B,qBAAqB,EACrB,gBAAgB,EAGhB,oBAAoB,EAEpB,cAAc,EACd,qBAAqB,EACrB,wBAAwB,EACxB,0BAA0B,EAC1B,uBAAuB,EACxB,MAAM,mBAAmB,CAAC;AAG3B;;GAEG;AACH,qBAAa,WAAY,SAAQ,OAAO;IACtC;;;OAGG;IACU,qBAAqB,CAAC,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAW7G;;OAEG;IACU,GAAG,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;IAIhE;;OAEG;IACU,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAkCnF;;OAEG;IACU,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC;IA6DjF;;OAEG;IACU,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC9E;;OAEG;IACU,MAAM,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC;IA0C1E;;OAEG;IACU,WAAW,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOzE;;OAEG;IACU,UAAU,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvE;;OAEG;IACU,cAAc,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3E;;OAEG;IACU,aAAa,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC;IAO7E;;OAEG;YACW,qBAAqB;CAgEpC"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/api/messages.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,KAAK,EACV,WAAW,EAGX,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,EAC3B,qBAAqB,EACrB,gBAAgB,EAGhB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EAEpB,cAAc,EACd,qBAAqB,EACrB,wBAAwB,EACxB,0BAA0B,EAC1B,uBAAuB,EACxB,MAAM,mBAAmB,CAAC;AAG3B;;GAEG;AACH,qBAAa,WAAY,SAAQ,OAAO;IACtC;;;OAGG;IACU,qBAAqB,CAAC,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAW7G;;OAEG;IACU,GAAG,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;IAIhE;;;;;;;;;;;;OAYG;IACU,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAyBnF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgDG;IACU,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAgDlF;;OAEG;IACU,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC;IA6DjF;;OAEG;IACU,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC9E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6DG;IACU,MAAM,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC;IAoD1E;;OAEG;IACU,WAAW,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOzE;;OAEG;IACU,UAAU,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvE;;OAEG;IACU,cAAc,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3E;;OAEG;IACU,aAAa,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC;IAO7E;;OAEG;YACW,qBAAqB;CAiEpC"}
@@ -25,39 +25,132 @@ export class MessagesApi extends BaseApi {
25
25
  return this.client.api(`/chats/${params.chatId}/messages/${params.messageId}`).get();
26
26
  }
27
27
  /**
28
- * Get messages from a chat.
28
+ * Get messages from a chat. Returns a flat array of `ChatMessage`.
29
+ *
30
+ * Backward-compat method: prefer `listMessages` for new code, which exposes
31
+ * pagination metadata and a richer return shape.
32
+ *
33
+ * **Bug fix history**: this method previously built the OData filter
34
+ * `from/user/id eq '<id>'` for the `fromUser` param. Graph rejects this
35
+ * with "The entity property 'user/id' and operationKind 'Equal' is not
36
+ * allowed in $filter query." (HTTP 400). The filter is now applied
37
+ * client-side after fetching the page — see the doc on `listMessages`
38
+ * for the full reasoning.
29
39
  */
30
40
  async getChatMessages(params) {
31
- let query = this.client
32
- .api(`/chats/${params.chatId}/messages`)
33
- .top(params.limit || 20)
34
- .orderby('createdDateTime desc');
35
- if (params.fromUser) {
36
- query = query.filter(`from/user/id eq '${params.fromUser}'`);
37
- }
38
- const response = (await query.get());
39
- let messages = response?.value || [];
40
- // Client-side filtering for date ranges
41
+ const result = await this.listMessages({
42
+ chatId: params.chatId,
43
+ limit: params.limit,
44
+ fromUser: params.fromUser,
45
+ });
46
+ let messages = result.messages;
47
+ // Client-side date filtering preserved for backward compat with the old
48
+ // `from`/`to` params. New code should use `listMessages({ since })` for
49
+ // server-side date filtering via `lastModifiedDateTime gt`.
41
50
  if ((params.from || params.to) && messages.length > 0) {
42
51
  messages = messages.filter((message) => {
43
52
  if (!message.createdDateTime)
44
53
  return true;
45
54
  const messageDate = new Date(message.createdDateTime);
46
- if (params.from) {
47
- const fromDate = new Date(params.from);
48
- if (messageDate <= fromDate)
49
- return false;
50
- }
51
- if (params.to) {
52
- const toDate = new Date(params.to);
53
- if (messageDate >= toDate)
54
- return false;
55
- }
55
+ if (params.from && messageDate <= new Date(params.from))
56
+ return false;
57
+ if (params.to && messageDate >= new Date(params.to))
58
+ return false;
56
59
  return true;
57
60
  });
58
61
  }
59
62
  return messages;
60
63
  }
64
+ /**
65
+ * List messages in a chat with caller-driven pagination.
66
+ *
67
+ * Returns one page plus a `nextLink` token. The caller passes the token
68
+ * back as `nextLink` on a follow-up call to fetch the next page. This
69
+ * method does NOT loop through pages.
70
+ *
71
+ * **Server-side capabilities of `/chats/{id}/messages`** (verified
72
+ * empirically — Microsoft's docs are vague on most of this):
73
+ *
74
+ * - `$top` ✓ (works, max ~50)
75
+ * - `$orderby=createdDateTime desc` ✓ (default)
76
+ * - `$filter=lastModifiedDateTime gt|lt <iso>` ✓ — the only content-ish
77
+ * filter that works
78
+ * - `$search` ✗ — "Query option 'Search' is not allowed"
79
+ * - `$filter=contains(body/content, 'X')` ✗ — "Only binary operation
80
+ * expressions are allowed"
81
+ * - `$filter=from/user/id eq 'X'` ✗ — "operationKind 'Equal' is not
82
+ * allowed"
83
+ *
84
+ * Microsoft's recommended approach for keyword search within a chat is:
85
+ * use the global `/search/query` endpoint and filter `chatId` client-side.
86
+ * That global path is implemented in `messages.search()`. This local path
87
+ * is for chronological reading of a chat with optional date filter.
88
+ *
89
+ * **The `containing` and `fromUser` params are client-side filters** —
90
+ * they keep only messages from the returned page that match. The
91
+ * `scanned` and `matched` fields in the result tell the caller how many
92
+ * messages were inspected vs how many matched, so the agent can paginate
93
+ * forward if it wants more.
94
+ *
95
+ * @example
96
+ * // Read the most recent 50 messages from a chat:
97
+ * const r = await client.messages.listMessages({ chatId, limit: 50 });
98
+ * console.log(r.messages, r.nextLink);
99
+ *
100
+ * @example
101
+ * // Find messages containing "ticket" in the most recent 50:
102
+ * const r = await client.messages.listMessages({
103
+ * chatId, limit: 50, containing: 'ticket'
104
+ * });
105
+ * // r.scanned === 50, r.matched === r.messages.length
106
+ *
107
+ * @example
108
+ * // Page forward:
109
+ * const r2 = await client.messages.listMessages({
110
+ * chatId, nextLink: r.nextLink
111
+ * });
112
+ */
113
+ async listMessages(params) {
114
+ let query;
115
+ if (params.nextLink) {
116
+ // Follow the @odata.nextLink directly. All filters and ordering are
117
+ // already baked into the URL.
118
+ query = this.client.api(params.nextLink);
119
+ }
120
+ else {
121
+ query = this.client
122
+ .api(`/chats/${params.chatId}/messages`)
123
+ .top(params.limit ?? 20)
124
+ .orderby('createdDateTime desc');
125
+ if (params.since) {
126
+ // The only content-related $filter Graph accepts on this endpoint.
127
+ query = query.filter(`lastModifiedDateTime gt ${params.since}`);
128
+ }
129
+ }
130
+ const response = (await query.get());
131
+ const all = response?.value ?? [];
132
+ const nextLink = response?.['@odata.nextLink'];
133
+ const scanned = all.length;
134
+ let messages = all;
135
+ // Client-side: substring match against body content. We have to do this
136
+ // here because Graph doesn't support content filters on this endpoint
137
+ // (see method-level doc above).
138
+ if (params.containing && params.containing.trim().length > 0) {
139
+ const needle = params.containing.toLowerCase();
140
+ messages = messages.filter((m) => m.body?.content?.toLowerCase().includes(needle) ?? false);
141
+ }
142
+ // Client-side: filter by sender user ID. Same reason — `from/user/id eq`
143
+ // is rejected server-side.
144
+ if (params.fromUser) {
145
+ messages = messages.filter((m) => m.from?.user?.id === params.fromUser);
146
+ }
147
+ return {
148
+ messages,
149
+ scanned,
150
+ matched: messages.length,
151
+ nextLink,
152
+ };
153
+ }
61
154
  /**
62
155
  * Send a message to a chat.
63
156
  */
@@ -146,41 +239,113 @@ export class MessagesApi extends BaseApi {
146
239
  await this.client.api(`/chats/${params.chatId}/messages/${params.messageId}`).patch(messagePayload);
147
240
  }
148
241
  /**
149
- * Search messages across chats and channels.
242
+ * Search chat messages across the signed-in user's chats and channels.
243
+ *
244
+ * Uses the BETA `/search/query` endpoint with `entityTypes: ['chatMessage']`.
245
+ * Beta is the canonical example in Microsoft's docs and is functionally
246
+ * equivalent to v1.0 (verified empirically — same results, same latency)
247
+ * but is the documented forward path. See:
248
+ * https://learn.microsoft.com/en-us/graph/search-concept-chat-messages
249
+ *
250
+ * **What this method DOES support:**
251
+ *
252
+ * - Free-text full-text search across message body and attachments.
253
+ * Microsoft Search indexes all messages the user has access to —
254
+ * NOT recency-windowed, unlike `/me/chats` filters.
255
+ * - The full set of documented KQL operators (`from:`, `to:`, `mentions:`,
256
+ * `IsRead:`, `hasAttachment:`, `sent>`, `sent<`) via typed params.
257
+ * - Real pagination via `from_offset` (skip N hits) and `size` (page size).
258
+ * Caller drives pagination — this method does NOT loop.
259
+ * - Up to 500 hits per call (Graph hard cap is 501).
260
+ *
261
+ * **What this method does NOT support, and why:**
262
+ *
263
+ * - **No `chatId` / `channelId` / `scope` filter.** Microsoft has not built
264
+ * server-side filtering by chat or channel for `chatMessage` search.
265
+ * Verified exhaustively against ~12 KQL operator variants and request
266
+ * body shapes (`stringInputs`, `sourceFilters`, etc.) — none filter.
267
+ * Confirmed by Microsoft on
268
+ * https://learn.microsoft.com/en-us/answers/questions/5510799 :
269
+ * "All scoping beyond keyword/KQL must be done client-side."
270
+ *
271
+ * - **`from:` does NOT accept user IDs.** Per docs and verified empirically,
272
+ * `from:` accepts a display name (`from:Bob`, `from:"Bob Smith"`) or an
273
+ * email (`from:bob@contoso.com`). Passing a GUID returns 0 hits silently.
274
+ * Resolve a user ID to a name/email before passing it here.
275
+ *
276
+ * - **`mentions:` is the inverse:** it ONLY accepts the user ID, and the
277
+ * GUID must have dashes stripped. Per docs.
278
+ *
279
+ * **About `total` in the response:** Microsoft's docs say total is "the
280
+ * number of results on the page, not the total number of matching results."
281
+ * That documentation is wrong (or outdated). Verified empirically: `total`
282
+ * IS the grand total of matching messages across all pages, regardless of
283
+ * `size`. For very common terms total can be in the thousands.
284
+ *
285
+ * @example
286
+ * // Find messages I sent containing "delivery", page 1:
287
+ * const r = await client.messages.search({
288
+ * query: 'delivery',
289
+ * from: 'evrim.a@first.bet',
290
+ * size: 25,
291
+ * });
292
+ * // r.value[0].hitsContainers[0]: { total, moreResultsAvailable, hits[] }
293
+ *
294
+ * @example
295
+ * // Page 2:
296
+ * const r2 = await client.messages.search({
297
+ * query: 'delivery',
298
+ * from: 'evrim.a@first.bet',
299
+ * size: 25,
300
+ * from_offset: 25,
301
+ * });
150
302
  */
151
303
  async search(params) {
152
- const queryParts = [];
153
- if (params.query) {
154
- queryParts.push(params.query);
304
+ const parts = [];
305
+ if (params.query && params.query.trim().length > 0) {
306
+ parts.push(params.query);
307
+ }
308
+ if (params.from) {
309
+ // Quote multi-word values so KQL parses them as a single token.
310
+ const v = params.from.includes(' ') ? `"${params.from}"` : params.from;
311
+ parts.push(`from:${v}`);
312
+ }
313
+ if (params.to) {
314
+ const v = params.to.includes(' ') ? `"${params.to}"` : params.to;
315
+ parts.push(`to:${v}`);
155
316
  }
156
317
  if (params.mentions) {
157
- queryParts.push(`mentions:${params.mentions}`);
318
+ // Per docs: must be the user ID without dashes.
319
+ parts.push(`mentions:${params.mentions.replace(/-/g, '')}`);
158
320
  }
159
- if (params.from) {
160
- const dateOnly = params.from.split('T')[0];
161
- queryParts.push(`sent>=${dateOnly}`);
321
+ if (params.unread) {
322
+ parts.push(`IsRead:false`);
162
323
  }
163
- if (params.fromUser) {
164
- queryParts.push(`from:${params.fromUser}`);
324
+ if (params.hasAttachment) {
325
+ parts.push(`hasAttachment:true`);
165
326
  }
166
- let enhancedQuery = queryParts.length > 0 ? queryParts.join(' AND ') : '*';
167
- const scope = params.scope || 'all';
168
- if (scope === 'channels') {
169
- enhancedQuery = `${enhancedQuery} AND (channelIdentity/channelId:*)`;
327
+ if (params.sentAfter) {
328
+ parts.push(`sent>${params.sentAfter.split('T')[0]}`);
170
329
  }
171
- else if (scope === 'chats') {
172
- enhancedQuery = `${enhancedQuery} AND (chatId:* AND NOT channelIdentity/channelId:*)`;
330
+ if (params.sentBefore) {
331
+ parts.push(`sent<${params.sentBefore.split('T')[0]}`);
173
332
  }
333
+ // KQL combines tokens with implicit AND. We use explicit AND for
334
+ // readability in error messages and tests.
335
+ const queryString = parts.length > 0 ? parts.join(' AND ') : '*';
174
336
  const searchRequest = {
175
337
  entityTypes: ['chatMessage'],
176
- query: {
177
- queryString: enhancedQuery,
178
- },
179
- from: 0,
180
- size: params.limit || 25,
181
- enableTopResults: params.enableTopResults !== undefined ? params.enableTopResults : true,
338
+ query: { queryString },
339
+ from: params.from_offset ?? 0,
340
+ size: params.size ?? 25,
341
+ // Default to recency ordering (Graph's default for chatMessage). Caller
342
+ // can opt into relevance ordering with `enableTopResults: true`.
343
+ enableTopResults: params.enableTopResults ?? false,
182
344
  };
183
- return this.client.api('/search/query').post({ requests: [searchRequest] });
345
+ return this.client
346
+ .api('/search/query')
347
+ .version('beta')
348
+ .post({ requests: [searchRequest] });
184
349
  }
185
350
  /**
186
351
  * Set a reaction on a message.
@@ -221,18 +386,18 @@ export class MessagesApi extends BaseApi {
221
386
  if (matches.length === 0) {
222
387
  return { content: message, mentions: [], contentType: 'text' };
223
388
  }
224
- // Resolve unique emails to user info
389
+ // Resolve unique emails to user info, in parallel.
225
390
  const uniqueEmails = [...new Set(matches.map((m) => m[1]))];
226
- const userMap = new Map();
227
- for (const email of uniqueEmails) {
391
+ const resolved = await Promise.all(uniqueEmails.map(async (email) => {
228
392
  try {
229
393
  const user = (await this.client.api(`/users/${email}`).select('id,displayName').get());
230
- userMap.set(email, { id: user.id, displayName: user.displayName || email });
394
+ return [email, { id: user.id, displayName: user.displayName || email }];
231
395
  }
232
396
  catch {
233
- userMap.set(email, null);
397
+ return [email, null];
234
398
  }
235
- }
399
+ }));
400
+ const userMap = new Map(resolved);
236
401
  // Assign IDs to resolvable mentions in forward order
237
402
  const mentionData = [];
238
403
  let mentionId = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/api/messages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/api/messages.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,15 @@
1
1
  import { BaseApi } from './base.js';
2
- import type { GetUserParams, SearchUsersParams, User } from '../types/index.js';
2
+ import { type GetCurrentUserParams, type GetUserParams, type SearchUsersParams, type User } from '../types/index.js';
3
3
  import type { SetPreferredPresenceParams } from '../types/presence.js';
4
4
  /**
5
5
  * API for user operations.
6
6
  */
7
7
  export declare class UsersApi extends BaseApi {
8
8
  /**
9
- * Get the current authenticated user.
9
+ * Get the current authenticated user. Uses a sensible `$select` projection
10
+ * by default; pass `select` to override.
10
11
  */
11
- getCurrentUser(): Promise<User>;
12
+ getCurrentUser(params?: GetCurrentUserParams): Promise<User>;
12
13
  /**
13
14
  * Get a user by ID or userPrincipalName.
14
15
  */
@@ -1 +1 @@
1
- {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../src/api/users.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAoB,aAAa,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAClG,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAEvE;;GAEG;AACH,qBAAa,QAAS,SAAQ,OAAO;IACnC;;OAEG;IACU,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5C;;OAEG;IACU,GAAG,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD;;OAEG;IACU,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAS/D;;OAEG;IACU,oBAAoB,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC;CAOrF"}
1
+ {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../src/api/users.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAGL,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAElB,KAAK,iBAAiB,EACtB,KAAK,IAAI,EACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAEvE;;GAEG;AACH,qBAAa,QAAS,SAAQ,OAAO;IACnC;;;OAGG;IACU,cAAc,CAAC,MAAM,GAAE,oBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;IAO7E;;OAEG;IACU,GAAG,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtD;;OAEG;IACU,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAU/D;;OAEG;IACU,oBAAoB,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC;CAOrF"}
package/dist/api/users.js CHANGED
@@ -1,19 +1,27 @@
1
1
  import { BaseApi } from './base.js';
2
+ import { DEFAULT_USER_SEARCH_SELECT, DEFAULT_USER_SELECT, } from '../types/index.js';
2
3
  /**
3
4
  * API for user operations.
4
5
  */
5
6
  export class UsersApi extends BaseApi {
6
7
  /**
7
- * Get the current authenticated user.
8
+ * Get the current authenticated user. Uses a sensible `$select` projection
9
+ * by default; pass `select` to override.
8
10
  */
9
- async getCurrentUser() {
10
- return this.client.api('/me').get();
11
+ async getCurrentUser(params = {}) {
12
+ return this.client
13
+ .api('/me')
14
+ .select((params.select ?? DEFAULT_USER_SELECT).join(','))
15
+ .get();
11
16
  }
12
17
  /**
13
18
  * Get a user by ID or userPrincipalName.
14
19
  */
15
20
  async get(params) {
16
- return this.client.api(`/users/${params.userId}`).get();
21
+ return this.client
22
+ .api(`/users/${params.userId}`)
23
+ .select((params.select ?? DEFAULT_USER_SELECT).join(','))
24
+ .get();
17
25
  }
18
26
  /**
19
27
  * Search for users by name or email.
@@ -22,6 +30,7 @@ export class UsersApi extends BaseApi {
22
30
  const response = (await this.client
23
31
  .api('/users?ConsistencyLevel=eventual')
24
32
  .search(`"mail:${params.query}" OR "displayName:${params.query}"`)
33
+ .select((params.select ?? DEFAULT_USER_SEARCH_SELECT).join(','))
25
34
  .get());
26
35
  return response.value ?? [];
27
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"users.js","sourceRoot":"","sources":["../../src/api/users.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,OAAO;IACnC;;OAEG;IACI,KAAK,CAAC,cAAc;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,EAAmB,CAAC;IACvD,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,GAAG,CAAC,MAAqB;QACpC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,EAAmB,CAAC;IAC3E,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,MAAM,CAAC,MAAyB;QAC3C,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM;aAChC,GAAG,CAAC,kCAAkC,CAAC;aACvC,MAAM,CAAC,SAAS,MAAM,CAAC,KAAK,qBAAqB,MAAM,CAAC,KAAK,GAAG,CAAC;aACjE,GAAG,EAAE,CAA2B,CAAC;QAEpC,OAAO,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,oBAAoB,CAAC,MAAkC;QAClE,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,IAAI,CAAC;YAClE,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,YAAY;YAChD,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;SAC9C,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"users.js","sourceRoot":"","sources":["../../src/api/users.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,0BAA0B,EAC1B,mBAAmB,GAMpB,MAAM,mBAAmB,CAAC;AAG3B;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,OAAO;IACnC;;;OAGG;IACI,KAAK,CAAC,cAAc,CAAC,SAA+B,EAAE;QAC3D,OAAO,IAAI,CAAC,MAAM;aACf,GAAG,CAAC,KAAK,CAAC;aACV,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,mBAAmB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACxD,GAAG,EAAmB,CAAC;IAC5B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,GAAG,CAAC,MAAqB;QACpC,OAAO,IAAI,CAAC,MAAM;aACf,GAAG,CAAC,UAAU,MAAM,CAAC,MAAM,EAAE,CAAC;aAC9B,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,mBAAmB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACxD,GAAG,EAAmB,CAAC;IAC5B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,MAAM,CAAC,MAAyB;QAC3C,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM;aAChC,GAAG,CAAC,kCAAkC,CAAC;aACvC,MAAM,CAAC,SAAS,MAAM,CAAC,KAAK,qBAAqB,MAAM,CAAC,KAAK,GAAG,CAAC;aACjE,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,0BAA0B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAC/D,GAAG,EAAE,CAA2B,CAAC;QAEpC,OAAO,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,oBAAoB,CAAC,MAAkC;QAClE,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,IAAI,CAAC;YAClE,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,YAAY;YAChD,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;SAC9C,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -7,7 +7,16 @@ export interface GetCalendarEventsParams {
7
7
  limit?: number;
8
8
  /** Filter by event subject */
9
9
  subject?: string;
10
+ /** Override the default `$select` projection. */
11
+ select?: string[];
12
+ /** Opaque `@odata.nextLink` from a previous response — when set, all other params are ignored. */
13
+ nextLink?: string;
10
14
  }
15
+ /**
16
+ * Default projection for calendar event lists. Matches what `optimizeEvent`
17
+ * in the CLI strips to. Saves ~80% bandwidth vs. the full Event shape.
18
+ */
19
+ export declare const DEFAULT_EVENT_SELECT: string[];
11
20
  export interface CreateCalendarEventParams {
12
21
  subject: string;
13
22
  /** ISO datetime */
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../src/types/calendar.ts"],"names":[],"mappings":"AACA,YAAY,EACV,QAAQ,EACR,gBAAgB,EAChB,KAAK,EACL,QAAQ,EACR,qBAAqB,EACrB,4BAA4B,EAC5B,cAAc,GACf,MAAM,kCAAkC,CAAC;AAM1C,MAAM,WAAW,uBAAuB;IACtC,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,CACR,MAAM,GACN;QACE,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;KAC7C,CACJ,EAAE,CAAC;IACJ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE;QACT,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;KAC/B,EAAE,CAAC;IACJ,yDAAyD;IACzD,aAAa,EAAE,MAAM,CAAC;IACtB,0BAA0B;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,eAAe,EAAE,MAAM,CAAC;IACxB,oDAAoD;IACpD,kBAAkB,CAAC,EAAE;QACnB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,SAAS,CAAC,EAAE;YAAE,WAAW,EAAE,MAAM,CAAC;YAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;SAAE,EAAE,CAAC;KACtE,CAAC;CACH;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mBAAmB;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,CACR,MAAM,GACN;QACE,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;KAC7C,CACJ,EAAE,CAAC;IACJ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,mBAAmB,CAAC;IACrD,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB"}
1
+ {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../src/types/calendar.ts"],"names":[],"mappings":"AACA,YAAY,EACV,QAAQ,EACR,gBAAgB,EAChB,KAAK,EACL,QAAQ,EACR,qBAAqB,EACrB,4BAA4B,EAC5B,cAAc,GACf,MAAM,kCAAkC,CAAC;AAM1C,MAAM,WAAW,uBAAuB;IACtC,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,kGAAkG;IAClG,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,UAShC,CAAC;AAEF,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,CACR,MAAM,GACN;QACE,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;KAC7C,CACJ,EAAE,CAAC;IACJ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE;QACT,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;KAC/B,EAAE,CAAC;IACJ,yDAAyD;IACzD,aAAa,EAAE,MAAM,CAAC;IACtB,0BAA0B;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,eAAe,EAAE,MAAM,CAAC;IACxB,oDAAoD;IACpD,kBAAkB,CAAC,EAAE;QACnB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,SAAS,CAAC,EAAE;YAAE,WAAW,EAAE,MAAM,CAAC;YAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;SAAE,EAAE,CAAC;KACtE,CAAC;CACH;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mBAAmB;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,CACR,MAAM,GACN;QACE,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;KAC7C,CACJ,EAAE,CAAC;IACJ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,mBAAmB,CAAC;IACrD,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB"}
@@ -1,2 +1,15 @@
1
- export {};
1
+ /**
2
+ * Default projection for calendar event lists. Matches what `optimizeEvent`
3
+ * in the CLI strips to. Saves ~80% bandwidth vs. the full Event shape.
4
+ */
5
+ export const DEFAULT_EVENT_SELECT = [
6
+ 'id',
7
+ 'subject',
8
+ 'start',
9
+ 'end',
10
+ 'location',
11
+ 'attendees',
12
+ 'isOnlineMeeting',
13
+ 'onlineMeeting',
14
+ ];
2
15
  //# sourceMappingURL=calendar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../src/types/calendar.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../src/types/calendar.ts"],"names":[],"mappings":"AA6BA;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,IAAI;IACJ,SAAS;IACT,OAAO;IACP,KAAK;IACL,UAAU;IACV,WAAW;IACX,iBAAiB;IACjB,eAAe;CAChB,CAAC"}