microsoft-graph-client 1.0.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.
- package/dist/api/base.d.ts +10 -0
- package/dist/api/base.d.ts.map +1 -0
- package/dist/api/base.js +11 -0
- package/dist/api/base.js.map +1 -0
- package/dist/api/calendar.d.ts +24 -0
- package/dist/api/calendar.d.ts.map +1 -0
- package/dist/api/calendar.js +117 -0
- package/dist/api/calendar.js.map +1 -0
- package/dist/api/chats.d.ts +20 -0
- package/dist/api/chats.d.ts.map +1 -0
- package/dist/api/chats.js +71 -0
- package/dist/api/chats.js.map +1 -0
- package/dist/api/files.d.ts +24 -0
- package/dist/api/files.d.ts.map +1 -0
- package/dist/api/files.js +77 -0
- package/dist/api/files.js.map +1 -0
- package/dist/api/index.d.ts +9 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +9 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/mail.d.ts +16 -0
- package/dist/api/mail.d.ts.map +1 -0
- package/dist/api/mail.js +74 -0
- package/dist/api/mail.js.map +1 -0
- package/dist/api/messages.d.ts +36 -0
- package/dist/api/messages.d.ts.map +1 -0
- package/dist/api/messages.js +227 -0
- package/dist/api/messages.js.map +1 -0
- package/dist/api/transcripts.d.ts +20 -0
- package/dist/api/transcripts.d.ts.map +1 -0
- package/dist/api/transcripts.js +53 -0
- package/dist/api/transcripts.js.map +1 -0
- package/dist/api/users.d.ts +25 -0
- package/dist/api/users.d.ts.map +1 -0
- package/dist/api/users.js +39 -0
- package/dist/api/users.js.map +1 -0
- package/dist/auth/authenticator.d.ts +48 -0
- package/dist/auth/authenticator.d.ts.map +1 -0
- package/dist/auth/authenticator.js +159 -0
- package/dist/auth/authenticator.js.map +1 -0
- package/dist/auth/index.d.ts +2 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +2 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/client.d.ts +100 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +161 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/types/calendar.d.ts +42 -0
- package/dist/types/calendar.d.ts.map +1 -0
- package/dist/types/calendar.js +2 -0
- package/dist/types/calendar.js.map +1 -0
- package/dist/types/chat.d.ts +21 -0
- package/dist/types/chat.d.ts.map +1 -0
- package/dist/types/chat.js +2 -0
- package/dist/types/chat.js.map +1 -0
- package/dist/types/common.d.ts +77 -0
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/common.js +19 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/file.d.ts +34 -0
- package/dist/types/file.d.ts.map +1 -0
- package/dist/types/file.js +5 -0
- package/dist/types/file.js.map +1 -0
- package/dist/types/index.d.ts +11 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/mail.d.ts +25 -0
- package/dist/types/mail.d.ts.map +1 -0
- package/dist/types/mail.js +2 -0
- package/dist/types/mail.js.map +1 -0
- package/dist/types/message.d.ts +90 -0
- package/dist/types/message.d.ts.map +1 -0
- package/dist/types/message.js +2 -0
- package/dist/types/message.js.map +1 -0
- package/dist/types/presence.d.ts +15 -0
- package/dist/types/presence.d.ts.map +1 -0
- package/dist/types/presence.js +5 -0
- package/dist/types/presence.js.map +1 -0
- package/dist/types/transcript.d.ts +12 -0
- package/dist/types/transcript.d.ts.map +1 -0
- package/dist/types/transcript.js +2 -0
- package/dist/types/transcript.js.map +1 -0
- package/dist/types/user.d.ts +9 -0
- package/dist/types/user.d.ts.map +1 -0
- package/dist/types/user.js +2 -0
- package/dist/types/user.js.map +1 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/markdown.d.ts +13 -0
- package/dist/utils/markdown.d.ts.map +1 -0
- package/dist/utils/markdown.js +106 -0
- package/dist/utils/markdown.js.map +1 -0
- package/dist/utils/odata.d.ts +17 -0
- package/dist/utils/odata.d.ts.map +1 -0
- package/dist/utils/odata.js +19 -0
- package/dist/utils/odata.js.map +1 -0
- package/dist/utils/sharepoint.d.ts +11 -0
- package/dist/utils/sharepoint.d.ts.map +1 -0
- package/dist/utils/sharepoint.js +17 -0
- package/dist/utils/sharepoint.js.map +1 -0
- package/dist/utils/teams.d.ts +34 -0
- package/dist/utils/teams.d.ts.map +1 -0
- package/dist/utils/teams.js +67 -0
- package/dist/utils/teams.js.map +1 -0
- package/dist/utils/vtt.d.ts +7 -0
- package/dist/utils/vtt.d.ts.map +1 -0
- package/dist/utils/vtt.js +43 -0
- package/dist/utils/vtt.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Client } from '@microsoft/microsoft-graph-client';
|
|
2
|
+
/**
|
|
3
|
+
* Base class for all domain APIs.
|
|
4
|
+
* Provides access to the Microsoft Graph SDK client.
|
|
5
|
+
*/
|
|
6
|
+
export declare class BaseApi {
|
|
7
|
+
protected client: Client;
|
|
8
|
+
constructor(client: Client);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/api/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAEhE;;;GAGG;AACH,qBAAa,OAAO;IAClB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEN,MAAM,EAAE,MAAM;CAGlC"}
|
package/dist/api/base.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/api/base.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,OAAO,OAAO;IACR,MAAM,CAAS;IAEzB,YAAmB,MAAc;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { BaseApi } from './base.js';
|
|
2
|
+
import type { CancelCalendarEventParams, CreateCalendarEventParams, Event, FindMeetingTimesParams, GetCalendarEventsParams, MeetingTimeSuggestionsResult } from '../types/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* API for calendar operations.
|
|
5
|
+
*/
|
|
6
|
+
export declare class CalendarApi extends BaseApi {
|
|
7
|
+
/**
|
|
8
|
+
* Get calendar events within a time range.
|
|
9
|
+
*/
|
|
10
|
+
getEvents(params?: GetCalendarEventsParams): Promise<Event[]>;
|
|
11
|
+
/**
|
|
12
|
+
* Create a calendar event.
|
|
13
|
+
*/
|
|
14
|
+
createEvent(params: CreateCalendarEventParams): Promise<Event>;
|
|
15
|
+
/**
|
|
16
|
+
* Find available meeting times for attendees.
|
|
17
|
+
*/
|
|
18
|
+
findMeetingTimes(params: FindMeetingTimesParams): Promise<MeetingTimeSuggestionsResult>;
|
|
19
|
+
/**
|
|
20
|
+
* Cancel a calendar event.
|
|
21
|
+
*/
|
|
22
|
+
cancelEvent(params: CancelCalendarEventParams): Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=calendar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../src/api/calendar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EACV,yBAAyB,EACzB,yBAAyB,EACzB,KAAK,EACL,sBAAsB,EACtB,uBAAuB,EAEvB,4BAA4B,EAC7B,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,qBAAa,WAAY,SAAQ,OAAO;IACtC;;OAEG;IACU,SAAS,CAAC,MAAM,GAAE,uBAA4B,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAyB9E;;OAEG;IACU,WAAW,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,KAAK,CAAC;IAiD3E;;OAEG;IACU,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,4BAA4B,CAAC;IAgCpG;;OAEG;IACU,WAAW,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;CAI3E"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { BaseApi } from './base.js';
|
|
2
|
+
/**
|
|
3
|
+
* API for calendar operations.
|
|
4
|
+
*/
|
|
5
|
+
export class CalendarApi extends BaseApi {
|
|
6
|
+
/**
|
|
7
|
+
* Get calendar events within a time range.
|
|
8
|
+
*/
|
|
9
|
+
async getEvents(params = {}) {
|
|
10
|
+
const limit = params.limit || 50;
|
|
11
|
+
const now = new Date().toISOString();
|
|
12
|
+
const thirtyDaysFromNow = new Date(Date.now() + 30 * 24 * 60 * 60 * 1000).toISOString();
|
|
13
|
+
const startDateTime = params.from || now;
|
|
14
|
+
const endDateTime = params.to || thirtyDaysFromNow;
|
|
15
|
+
let query = this.client
|
|
16
|
+
.api('/me/calendarView')
|
|
17
|
+
.query({
|
|
18
|
+
startDateTime,
|
|
19
|
+
endDateTime,
|
|
20
|
+
})
|
|
21
|
+
.top(limit)
|
|
22
|
+
.orderby('start/dateTime');
|
|
23
|
+
if (params.subject) {
|
|
24
|
+
query = query.filter(`contains(subject, '${params.subject}')`);
|
|
25
|
+
}
|
|
26
|
+
const response = (await query.get());
|
|
27
|
+
return response.value || [];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Create a calendar event.
|
|
31
|
+
*/
|
|
32
|
+
async createEvent(params) {
|
|
33
|
+
const event = {
|
|
34
|
+
subject: params.subject,
|
|
35
|
+
start: {
|
|
36
|
+
dateTime: params.startDateTime,
|
|
37
|
+
timeZone: 'UTC',
|
|
38
|
+
},
|
|
39
|
+
end: {
|
|
40
|
+
dateTime: params.endDateTime,
|
|
41
|
+
timeZone: 'UTC',
|
|
42
|
+
},
|
|
43
|
+
body: {
|
|
44
|
+
contentType: 'text',
|
|
45
|
+
content: params.body,
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
if (params.attendees && params.attendees.length > 0) {
|
|
49
|
+
event.attendees = params.attendees.map((attendee) => {
|
|
50
|
+
if (typeof attendee === 'string') {
|
|
51
|
+
return {
|
|
52
|
+
emailAddress: { address: attendee },
|
|
53
|
+
type: 'required',
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
emailAddress: {
|
|
58
|
+
address: attendee.email,
|
|
59
|
+
...(attendee.name && { name: attendee.name }),
|
|
60
|
+
},
|
|
61
|
+
type: attendee.type || 'required',
|
|
62
|
+
};
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
if (params.location) {
|
|
66
|
+
event.location = {
|
|
67
|
+
displayName: params.location,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
if (params.isOnlineMeeting) {
|
|
71
|
+
event.isOnlineMeeting = true;
|
|
72
|
+
event.onlineMeetingProvider = 'teamsForBusiness';
|
|
73
|
+
}
|
|
74
|
+
return this.client.api('/me/events').post(event);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Find available meeting times for attendees.
|
|
78
|
+
*/
|
|
79
|
+
async findMeetingTimes(params) {
|
|
80
|
+
const requestBody = {
|
|
81
|
+
attendees: params.attendees.map((attendee) => ({
|
|
82
|
+
type: attendee.type,
|
|
83
|
+
emailAddress: {
|
|
84
|
+
address: attendee.email,
|
|
85
|
+
},
|
|
86
|
+
})),
|
|
87
|
+
timeConstraint: {
|
|
88
|
+
activityDomain: 'work',
|
|
89
|
+
timeSlots: [
|
|
90
|
+
{
|
|
91
|
+
start: {
|
|
92
|
+
dateTime: params.startDateTime,
|
|
93
|
+
timeZone: 'UTC',
|
|
94
|
+
},
|
|
95
|
+
end: {
|
|
96
|
+
dateTime: params.endDateTime,
|
|
97
|
+
timeZone: 'UTC',
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
],
|
|
101
|
+
},
|
|
102
|
+
meetingDuration: params.meetingDuration,
|
|
103
|
+
isOrganizerOptional: true,
|
|
104
|
+
minimumAttendeePercentage: 100,
|
|
105
|
+
maxCandidates: 10,
|
|
106
|
+
};
|
|
107
|
+
return this.client.api('/me/findMeetingTimes').post(requestBody);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Cancel a calendar event.
|
|
111
|
+
*/
|
|
112
|
+
async cancelEvent(params) {
|
|
113
|
+
const body = params.comment ? { Comment: params.comment } : {};
|
|
114
|
+
await this.client.api(`/me/events/${params.eventId}/cancel`).post(body);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=calendar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../src/api/calendar.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { BaseApi } from './base.js';
|
|
2
|
+
import type { Chat, CreateChatParams, GetChatParams, SearchChatsParams, SearchChatsResult } from '../types/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* API for chat operations.
|
|
5
|
+
*/
|
|
6
|
+
export declare class ChatsApi extends BaseApi {
|
|
7
|
+
/**
|
|
8
|
+
* Get a chat by ID with members expanded.
|
|
9
|
+
*/
|
|
10
|
+
get(params: GetChatParams): Promise<Chat>;
|
|
11
|
+
/**
|
|
12
|
+
* Search for chats by topic, member name, or chat type.
|
|
13
|
+
*/
|
|
14
|
+
search(params: SearchChatsParams): Promise<SearchChatsResult>;
|
|
15
|
+
/**
|
|
16
|
+
* Create a new chat (1:1 or group).
|
|
17
|
+
*/
|
|
18
|
+
create(params: CreateChatParams): Promise<Chat>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=chats.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chats.d.ts","sourceRoot":"","sources":["../../src/api/chats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,KAAK,EACV,IAAI,EACJ,gBAAgB,EAChB,aAAa,EAEb,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,qBAAa,QAAS,SAAQ,OAAO;IACnC;;OAEG;IACU,GAAG,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD;;OAEG;IACU,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAsD1E;;OAEG;IACU,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;CAS7D"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { BaseApi } from './base.js';
|
|
2
|
+
import { escapeODataString } from '../utils/odata.js';
|
|
3
|
+
/**
|
|
4
|
+
* API for chat operations.
|
|
5
|
+
*/
|
|
6
|
+
export class ChatsApi extends BaseApi {
|
|
7
|
+
/**
|
|
8
|
+
* Get a chat by ID with members expanded.
|
|
9
|
+
*/
|
|
10
|
+
async get(params) {
|
|
11
|
+
return this.client.api(`/me/chats/${params.chatId}`).expand('members').get();
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Search for chats by topic, member name, or chat type.
|
|
15
|
+
*/
|
|
16
|
+
async search(params) {
|
|
17
|
+
let query = this.client.api('/me/chats').expand('members');
|
|
18
|
+
// Apply limit (default 20 if not specified)
|
|
19
|
+
const limit = params.limit || 20;
|
|
20
|
+
query = query.top(limit);
|
|
21
|
+
// Apply skipToken if provided (for pagination)
|
|
22
|
+
if (params.skipToken) {
|
|
23
|
+
query = query.query({ $skiptoken: params.skipToken });
|
|
24
|
+
}
|
|
25
|
+
const filters = [];
|
|
26
|
+
if (params.searchTerm) {
|
|
27
|
+
// Escape special characters (e.g., apostrophes) to prevent OData injection
|
|
28
|
+
const escapedTerm = escapeODataString(params.searchTerm);
|
|
29
|
+
filters.push(`contains(topic, '${escapedTerm}')`);
|
|
30
|
+
}
|
|
31
|
+
if (params.memberName) {
|
|
32
|
+
// Escape special characters (e.g., apostrophes) to prevent OData injection
|
|
33
|
+
const escapedName = escapeODataString(params.memberName);
|
|
34
|
+
filters.push(`members/any(c:contains(c/displayName, '${escapedName}'))`);
|
|
35
|
+
}
|
|
36
|
+
if (params.chatTypes && params.chatTypes.length > 0) {
|
|
37
|
+
// Build filter for chat types using 'or' operator
|
|
38
|
+
const chatTypeFilters = params.chatTypes.map((type) => `chatType eq '${type}'`).join(' or ');
|
|
39
|
+
filters.push(`(${chatTypeFilters})`);
|
|
40
|
+
}
|
|
41
|
+
if (filters.length > 0) {
|
|
42
|
+
query = query.filter(filters.join(' and '));
|
|
43
|
+
}
|
|
44
|
+
const response = (await query.get());
|
|
45
|
+
// Extract nextToken from @odata.nextLink if present
|
|
46
|
+
let nextToken;
|
|
47
|
+
if (response['@odata.nextLink']) {
|
|
48
|
+
const url = new URL(response['@odata.nextLink']);
|
|
49
|
+
const token = url.searchParams.get('$skiptoken');
|
|
50
|
+
if (token) {
|
|
51
|
+
nextToken = token;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
chats: response.value || [],
|
|
56
|
+
nextToken,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Create a new chat (1:1 or group).
|
|
61
|
+
*/
|
|
62
|
+
async create(params) {
|
|
63
|
+
const payload = {
|
|
64
|
+
chatType: params.chatType,
|
|
65
|
+
members: params.members,
|
|
66
|
+
...(params.topic && { topic: params.topic }),
|
|
67
|
+
};
|
|
68
|
+
return this.client.api('/chats').post(payload);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=chats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chats.js","sourceRoot":"","sources":["../../src/api/chats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAUtD;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,OAAO;IACnC;;OAEG;IACI,KAAK,CAAC,GAAG,CAAC,MAAqB;QACpC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,EAAmB,CAAC;IAChG,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,MAAM,CAAC,MAAyB;QAC3C,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE3D,4CAA4C;QAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;QACjC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEzB,+CAA+C;QAC/C,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,2EAA2E;YAC3E,MAAM,WAAW,GAAG,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACzD,OAAO,CAAC,IAAI,CAAC,oBAAoB,WAAW,IAAI,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,2EAA2E;YAC3E,MAAM,WAAW,GAAG,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACzD,OAAO,CAAC,IAAI,CAAC,0CAA0C,WAAW,KAAK,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,kDAAkD;YAClD,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7F,OAAO,CAAC,IAAI,CAAC,IAAI,eAAe,GAAG,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,MAAM,KAAK,CAAC,GAAG,EAAE,CAA2B,CAAC;QAE/D,oDAAoD;QACpD,IAAI,SAA6B,CAAC;QAClC,IAAI,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACjD,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACjD,IAAI,KAAK,EAAE,CAAC;gBACV,SAAS,GAAG,KAAK,CAAC;YACpB,CAAC;QACH,CAAC;QAED,OAAO;YACL,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC3B,SAAS;SACV,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,MAAM,CAAC,MAAwB;QAC1C,MAAM,OAAO,GAAG;YACd,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;SAC7C,CAAC;QAEF,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAkB,CAAC;IAClE,CAAC;CACF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { BaseApi } from './base.js';
|
|
2
|
+
import type { DownloadSharePointFileParams, DownloadSharePointFileResult, GrantFilePermissionParams, UpdateSharePointFileParams, UpdateSharePointFileResult, UploadToSharePointParams, UploadToSharePointResult } from '../types/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* API for SharePoint/OneDrive file operations.
|
|
5
|
+
*/
|
|
6
|
+
export declare class FilesApi extends BaseApi {
|
|
7
|
+
/**
|
|
8
|
+
* Download a file from SharePoint using its URL.
|
|
9
|
+
*/
|
|
10
|
+
download(params: DownloadSharePointFileParams): Promise<DownloadSharePointFileResult>;
|
|
11
|
+
/**
|
|
12
|
+
* Upload a file to the user's OneDrive and get a sharing link.
|
|
13
|
+
*/
|
|
14
|
+
upload(params: UploadToSharePointParams): Promise<UploadToSharePointResult>;
|
|
15
|
+
/**
|
|
16
|
+
* Update an existing file's content.
|
|
17
|
+
*/
|
|
18
|
+
update(params: UpdateSharePointFileParams): Promise<UpdateSharePointFileResult>;
|
|
19
|
+
/**
|
|
20
|
+
* Grant file permissions to users.
|
|
21
|
+
*/
|
|
22
|
+
grantPermission(params: GrantFilePermissionParams): Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=files.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/api/files.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,KAAK,EACV,4BAA4B,EAC5B,4BAA4B,EAC5B,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,wBAAwB,EACxB,wBAAwB,EACzB,MAAM,mBAAmB,CAAC;AAG3B;;GAEG;AACH,qBAAa,QAAS,SAAQ,OAAO;IACnC;;OAEG;IACU,QAAQ,CAAC,MAAM,EAAE,4BAA4B,GAAG,OAAO,CAAC,4BAA4B,CAAC;IA0BlG;;OAEG;IACU,MAAM,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAwBxF;;OAEG;IACU,MAAM,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAY5F;;OAEG;IACU,eAAe,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;CAQ/E"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { basename } from 'node:path';
|
|
3
|
+
import { BaseApi } from './base.js';
|
|
4
|
+
import { encodeSharePointUrl } from '../utils/sharepoint.js';
|
|
5
|
+
/**
|
|
6
|
+
* API for SharePoint/OneDrive file operations.
|
|
7
|
+
*/
|
|
8
|
+
export class FilesApi extends BaseApi {
|
|
9
|
+
/**
|
|
10
|
+
* Download a file from SharePoint using its URL.
|
|
11
|
+
*/
|
|
12
|
+
async download(params) {
|
|
13
|
+
const encodedUrl = encodeSharePointUrl(params.contentUrl);
|
|
14
|
+
// Get driveItem metadata including IDs for subsequent operations
|
|
15
|
+
const driveItem = (await this.client
|
|
16
|
+
.api(`/shares/${encodedUrl}/driveItem`)
|
|
17
|
+
.select('id,name,parentReference')
|
|
18
|
+
.get());
|
|
19
|
+
// Download content
|
|
20
|
+
const response = (await this.client
|
|
21
|
+
.api(`/shares/${encodedUrl}/driveItem/content`)
|
|
22
|
+
.responseType('arraybuffer')
|
|
23
|
+
.get());
|
|
24
|
+
const data = Buffer.from(response);
|
|
25
|
+
return {
|
|
26
|
+
data,
|
|
27
|
+
filename: driveItem.name,
|
|
28
|
+
size: data.length,
|
|
29
|
+
itemId: driveItem.id,
|
|
30
|
+
driveId: driveItem.parentReference?.driveId,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Upload a file to the user's OneDrive and get a sharing link.
|
|
35
|
+
*/
|
|
36
|
+
async upload(params) {
|
|
37
|
+
const filename = basename(params.filePath);
|
|
38
|
+
const fileContent = await readFile(params.filePath);
|
|
39
|
+
// Step 1: Upload file to OneDrive
|
|
40
|
+
const uploadResponse = (await this.client.api(`/me/drive/root:/${filename}:/content`).put(fileContent));
|
|
41
|
+
// Step 2: Create a sharing link
|
|
42
|
+
const linkResponse = (await this.client.api(`/me/drive/items/${uploadResponse.id}/createLink`).post({
|
|
43
|
+
type: 'view',
|
|
44
|
+
scope: 'organization',
|
|
45
|
+
}));
|
|
46
|
+
return {
|
|
47
|
+
itemId: uploadResponse.id,
|
|
48
|
+
driveId: uploadResponse.parentReference?.driveId,
|
|
49
|
+
shareUrl: linkResponse.link?.webUrl || uploadResponse.webUrl,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Update an existing file's content.
|
|
54
|
+
*/
|
|
55
|
+
async update(params) {
|
|
56
|
+
const fileContent = await readFile(params.filePath);
|
|
57
|
+
const result = (await this.client
|
|
58
|
+
.api(`/drives/${params.driveId}/items/${params.itemId}/content`)
|
|
59
|
+
.put(fileContent));
|
|
60
|
+
return {
|
|
61
|
+
filename: result.name,
|
|
62
|
+
size: result.size,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Grant file permissions to users.
|
|
67
|
+
*/
|
|
68
|
+
async grantPermission(params) {
|
|
69
|
+
await this.client.api(`/drives/${params.driveId}/items/${params.itemId}/invite`).post({
|
|
70
|
+
recipients: params.emails.map((email) => ({ email })),
|
|
71
|
+
roles: [params.role],
|
|
72
|
+
sendInvitation: true,
|
|
73
|
+
requireSignIn: true,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/api/files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAY7D;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,OAAO;IACnC;;OAEG;IACI,KAAK,CAAC,QAAQ,CAAC,MAAoC;QACxD,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAE1D,iEAAiE;QACjE,MAAM,SAAS,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM;aACjC,GAAG,CAAC,WAAW,UAAU,YAAY,CAAC;aACtC,MAAM,CAAC,yBAAyB,CAAC;aACjC,GAAG,EAAE,CAAyE,CAAC;QAElF,mBAAmB;QACnB,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM;aAChC,GAAG,CAAC,WAAW,UAAU,oBAAoB,CAAC;aAC9C,YAAY,CAAC,aAA6B,CAAC;aAC3C,GAAG,EAAE,CAAgB,CAAC;QAEzB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEnC,OAAO;YACL,IAAI;YACJ,QAAQ,EAAE,SAAS,CAAC,IAAI;YACxB,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,MAAM,EAAE,SAAS,CAAC,EAAE;YACpB,OAAO,EAAE,SAAS,CAAC,eAAe,EAAE,OAAO;SAC5C,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,MAAM,CAAC,MAAgC;QAClD,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEpD,kCAAkC;QAClC,MAAM,cAAc,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,QAAQ,WAAW,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAIrG,CAAC;QAEF,gCAAgC;QAChC,MAAM,YAAY,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,cAAc,CAAC,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC;YAClG,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,cAAc;SACtB,CAAC,CAAmC,CAAC;QAEtC,OAAO;YACL,MAAM,EAAE,cAAc,CAAC,EAAE;YACzB,OAAO,EAAE,cAAc,CAAC,eAAe,EAAE,OAAO;YAChD,QAAQ,EAAE,YAAY,CAAC,IAAI,EAAE,MAAM,IAAI,cAAc,CAAC,MAAM;SAC7D,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,MAAM,CAAC,MAAkC;QACpD,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM;aAC9B,GAAG,CAAC,WAAW,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,MAAM,UAAU,CAAC;aAC/D,GAAG,CAAC,WAAW,CAAC,CAAmC,CAAC;QAEvD,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,IAAI;YACrB,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,eAAe,CAAC,MAAiC;QAC5D,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC;YACpF,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YACrD,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;YACpB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { BaseApi } from './base.js';
|
|
2
|
+
export { CalendarApi } from './calendar.js';
|
|
3
|
+
export { ChatsApi } from './chats.js';
|
|
4
|
+
export { FilesApi } from './files.js';
|
|
5
|
+
export { MailApi } from './mail.js';
|
|
6
|
+
export { MessagesApi } from './messages.js';
|
|
7
|
+
export { TranscriptsApi } from './transcripts.js';
|
|
8
|
+
export { UsersApi } from './users.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { BaseApi } from './base.js';
|
|
2
|
+
export { CalendarApi } from './calendar.js';
|
|
3
|
+
export { ChatsApi } from './chats.js';
|
|
4
|
+
export { FilesApi } from './files.js';
|
|
5
|
+
export { MailApi } from './mail.js';
|
|
6
|
+
export { MessagesApi } from './messages.js';
|
|
7
|
+
export { TranscriptsApi } from './transcripts.js';
|
|
8
|
+
export { UsersApi } from './users.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BaseApi } from './base.js';
|
|
2
|
+
import type { GraphApiResponse, ListMailsParams, Message, SendMailParams } from '../types/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* API for mail operations.
|
|
5
|
+
*/
|
|
6
|
+
export declare class MailApi extends BaseApi {
|
|
7
|
+
/**
|
|
8
|
+
* List emails from the user's mailbox.
|
|
9
|
+
*/
|
|
10
|
+
list(params?: ListMailsParams): Promise<GraphApiResponse<Message>>;
|
|
11
|
+
/**
|
|
12
|
+
* Send an email.
|
|
13
|
+
*/
|
|
14
|
+
send(params: SendMailParams): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=mail.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mail.d.ts","sourceRoot":"","sources":["../../src/api/mail.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEpG;;GAEG;AACH,qBAAa,OAAQ,SAAQ,OAAO;IAClC;;OAEG;IACU,IAAI,CAAC,MAAM,GAAE,eAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAiDnF;;OAEG;IACU,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CAgCzD"}
|
package/dist/api/mail.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { BaseApi } from './base.js';
|
|
2
|
+
/**
|
|
3
|
+
* API for mail operations.
|
|
4
|
+
*/
|
|
5
|
+
export class MailApi extends BaseApi {
|
|
6
|
+
/**
|
|
7
|
+
* List emails from the user's mailbox.
|
|
8
|
+
*/
|
|
9
|
+
async list(params = {}) {
|
|
10
|
+
const limit = params.limit || 20;
|
|
11
|
+
const includeBody = params.includeBody || false;
|
|
12
|
+
const bodyFormat = params.bodyFormat || 'html';
|
|
13
|
+
// Build select fields based on whether full body is requested
|
|
14
|
+
const selectFields = includeBody
|
|
15
|
+
? 'id,subject,from,receivedDateTime,body,bodyPreview,isRead,hasAttachments'
|
|
16
|
+
: 'id,subject,from,receivedDateTime,bodyPreview,isRead,hasAttachments';
|
|
17
|
+
let query = this.client.api('/me/messages').top(limit).orderby('receivedDateTime desc').select(selectFields);
|
|
18
|
+
// Set body content format preference (only applies when body is included in select)
|
|
19
|
+
if (includeBody && bodyFormat === 'text') {
|
|
20
|
+
query = query.header('Prefer', 'outlook.body-content-type="text"');
|
|
21
|
+
}
|
|
22
|
+
// Build filter conditions - receivedDateTime must be first since it's in orderby
|
|
23
|
+
const filters = [];
|
|
24
|
+
if (params.since) {
|
|
25
|
+
filters.push(`receivedDateTime ge ${params.since}`);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
// Use a broad date range if not specified to satisfy API requirement
|
|
29
|
+
filters.push(`receivedDateTime ge 1900-01-01T00:00:00Z`);
|
|
30
|
+
}
|
|
31
|
+
if (params.until) {
|
|
32
|
+
filters.push(`receivedDateTime le ${params.until}`);
|
|
33
|
+
}
|
|
34
|
+
// Other filters must come after receivedDateTime (the orderby field)
|
|
35
|
+
if (params.from) {
|
|
36
|
+
filters.push(`from/emailAddress/address eq '${params.from}'`);
|
|
37
|
+
}
|
|
38
|
+
if (params.unreadOnly) {
|
|
39
|
+
filters.push('isRead eq false');
|
|
40
|
+
}
|
|
41
|
+
if (params.hasAttachments !== undefined) {
|
|
42
|
+
filters.push(`hasAttachments eq ${params.hasAttachments}`);
|
|
43
|
+
}
|
|
44
|
+
query = query.filter(filters.join(' and '));
|
|
45
|
+
return query.get();
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Send an email.
|
|
49
|
+
*/
|
|
50
|
+
async send(params) {
|
|
51
|
+
const message = {
|
|
52
|
+
subject: params.subject,
|
|
53
|
+
body: {
|
|
54
|
+
contentType: params.bodyType || 'text',
|
|
55
|
+
content: params.body,
|
|
56
|
+
},
|
|
57
|
+
toRecipients: params.to.map((email) => ({
|
|
58
|
+
emailAddress: { address: email },
|
|
59
|
+
})),
|
|
60
|
+
};
|
|
61
|
+
if (params.cc && params.cc.length > 0) {
|
|
62
|
+
message.ccRecipients = params.cc.map((email) => ({
|
|
63
|
+
emailAddress: { address: email },
|
|
64
|
+
}));
|
|
65
|
+
}
|
|
66
|
+
if (params.bcc && params.bcc.length > 0) {
|
|
67
|
+
message.bccRecipients = params.bcc.map((email) => ({
|
|
68
|
+
emailAddress: { address: email },
|
|
69
|
+
}));
|
|
70
|
+
}
|
|
71
|
+
await this.client.api('/me/sendMail').post({ message });
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=mail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mail.js","sourceRoot":"","sources":["../../src/api/mail.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { BaseApi } from './base.js';
|
|
2
|
+
import type { ChatMessage, GetChatMessagesParams, SearchMessagesParams, SearchResponse, SendChatMessageParams, SetMessageReactionParams, UnsetMessageReactionParams, UpdateChatMessageParams } from '../types/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* API for message operations.
|
|
5
|
+
*/
|
|
6
|
+
export declare class MessagesApi extends BaseApi {
|
|
7
|
+
/**
|
|
8
|
+
* Get messages from a chat.
|
|
9
|
+
*/
|
|
10
|
+
getChatMessages(params: GetChatMessagesParams): Promise<ChatMessage[]>;
|
|
11
|
+
/**
|
|
12
|
+
* Send a message to a chat.
|
|
13
|
+
*/
|
|
14
|
+
sendChatMessage(params: SendChatMessageParams): Promise<ChatMessage>;
|
|
15
|
+
/**
|
|
16
|
+
* Update an existing chat message.
|
|
17
|
+
*/
|
|
18
|
+
updateChatMessage(params: UpdateChatMessageParams): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Search messages across chats and channels.
|
|
21
|
+
*/
|
|
22
|
+
search(params: SearchMessagesParams): Promise<SearchResponse>;
|
|
23
|
+
/**
|
|
24
|
+
* Set a reaction on a message.
|
|
25
|
+
*/
|
|
26
|
+
setReaction(params: SetMessageReactionParams): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Remove a reaction from a message.
|
|
29
|
+
*/
|
|
30
|
+
unsetReaction(params: UnsetMessageReactionParams): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Process inline @email mentions in message text.
|
|
33
|
+
*/
|
|
34
|
+
private processInlineMentions;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=messages.d.ts.map
|
|
@@ -0,0 +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,qBAAqB,EAGrB,oBAAoB,EAEpB,cAAc,EACd,qBAAqB,EACrB,wBAAwB,EACxB,0BAA0B,EAC1B,uBAAuB,EACxB,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,qBAAa,WAAY,SAAQ,OAAO;IACtC;;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;IA2DjF;;OAEG;IACU,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B9E;;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;IAMzE;;OAEG;IACU,aAAa,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7E;;OAEG;YACW,qBAAqB;CAgEpC"}
|