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,90 @@
|
|
|
1
|
+
export type { ChatMessage, ChatMessageAttachment, ChatMessageImportance, ChatMessageInfo, ChatMessageMention, ItemBody, } from '@microsoft/microsoft-graph-types';
|
|
2
|
+
export interface SearchRequest {
|
|
3
|
+
entityTypes: string[];
|
|
4
|
+
query: {
|
|
5
|
+
queryString: string;
|
|
6
|
+
};
|
|
7
|
+
from?: number;
|
|
8
|
+
size?: number;
|
|
9
|
+
enableTopResults?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface SearchResponse {
|
|
12
|
+
value: SearchResult[];
|
|
13
|
+
}
|
|
14
|
+
export interface SearchResult {
|
|
15
|
+
searchTerms: string[];
|
|
16
|
+
hitsContainers: SearchHitsContainer[];
|
|
17
|
+
}
|
|
18
|
+
export interface SearchHitsContainer {
|
|
19
|
+
hits: SearchHit[];
|
|
20
|
+
total: number;
|
|
21
|
+
moreResultsAvailable: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface SearchHit {
|
|
24
|
+
hitId: string;
|
|
25
|
+
rank: number;
|
|
26
|
+
summary: string;
|
|
27
|
+
resource: {
|
|
28
|
+
'@odata.type': string;
|
|
29
|
+
id: string;
|
|
30
|
+
createdDateTime?: string;
|
|
31
|
+
lastModifiedDateTime?: string;
|
|
32
|
+
from?: {
|
|
33
|
+
emailAddress?: {
|
|
34
|
+
name?: string;
|
|
35
|
+
address?: string;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
subject?: string;
|
|
39
|
+
chatId?: string;
|
|
40
|
+
channelIdentity?: {
|
|
41
|
+
teamId?: string;
|
|
42
|
+
channelId?: string;
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export interface GetChatMessagesParams {
|
|
47
|
+
chatId: string;
|
|
48
|
+
limit?: number;
|
|
49
|
+
/** ISO datetime filter - messages after this time */
|
|
50
|
+
from?: string;
|
|
51
|
+
/** ISO datetime filter - messages before this time */
|
|
52
|
+
to?: string;
|
|
53
|
+
/** Filter by sender user ID */
|
|
54
|
+
fromUser?: string;
|
|
55
|
+
}
|
|
56
|
+
export interface SendChatMessageParams {
|
|
57
|
+
chatId: string;
|
|
58
|
+
message: string;
|
|
59
|
+
importance?: 'normal' | 'high' | 'urgent';
|
|
60
|
+
format?: 'text' | 'markdown';
|
|
61
|
+
replyToId?: string;
|
|
62
|
+
attachments?: string[];
|
|
63
|
+
}
|
|
64
|
+
export interface UpdateChatMessageParams {
|
|
65
|
+
chatId: string;
|
|
66
|
+
messageId: string;
|
|
67
|
+
message: string;
|
|
68
|
+
importance?: 'normal' | 'high' | 'urgent';
|
|
69
|
+
format?: 'text' | 'markdown';
|
|
70
|
+
}
|
|
71
|
+
export interface SearchMessagesParams {
|
|
72
|
+
query?: string;
|
|
73
|
+
scope?: 'all' | 'channels' | 'chats';
|
|
74
|
+
limit?: number;
|
|
75
|
+
enableTopResults?: boolean;
|
|
76
|
+
mentions?: string;
|
|
77
|
+
from?: string;
|
|
78
|
+
fromUser?: string;
|
|
79
|
+
}
|
|
80
|
+
export interface SetMessageReactionParams {
|
|
81
|
+
chatId: string;
|
|
82
|
+
messageId: string;
|
|
83
|
+
reactionType: string;
|
|
84
|
+
}
|
|
85
|
+
export interface UnsetMessageReactionParams {
|
|
86
|
+
chatId: string;
|
|
87
|
+
messageId: string;
|
|
88
|
+
reactionType: string;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=message.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/types/message.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/types/message.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type PresenceAvailability = 'Available' | 'Away' | 'BeRightBack' | 'Busy' | 'DoNotDisturb' | 'InACall' | 'InAMeeting' | 'Offline' | 'PresenceUnknown' | 'Presenting';
|
|
2
|
+
export type PreferredPresenceAvailability = 'Available' | 'Away' | 'BeRightBack' | 'Busy' | 'DoNotDisturb' | 'Offline';
|
|
3
|
+
export interface SetPresenceParams {
|
|
4
|
+
availability: PresenceAvailability;
|
|
5
|
+
activity?: PresenceAvailability;
|
|
6
|
+
/** ISO 8601 duration (e.g., 'PT1H' for 1 hour) */
|
|
7
|
+
expirationDuration?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface SetPreferredPresenceParams {
|
|
10
|
+
availability: PreferredPresenceAvailability;
|
|
11
|
+
activity?: PreferredPresenceAvailability;
|
|
12
|
+
/** ISO 8601 duration (e.g., 'PT8H' for 8 hours) */
|
|
13
|
+
expirationDuration?: string;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=presence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presence.d.ts","sourceRoot":"","sources":["../../src/types/presence.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,oBAAoB,GAC5B,WAAW,GACX,MAAM,GACN,aAAa,GACb,MAAM,GACN,cAAc,GACd,SAAS,GACT,YAAY,GACZ,SAAS,GACT,iBAAiB,GACjB,YAAY,CAAC;AAEjB,MAAM,MAAM,6BAA6B,GAAG,WAAW,GAAG,MAAM,GAAG,aAAa,GAAG,MAAM,GAAG,cAAc,GAAG,SAAS,CAAC;AAMvH,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,oBAAoB,CAAC;IACnC,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,kDAAkD;IAClD,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,0BAA0B;IACzC,YAAY,EAAE,6BAA6B,CAAC;IAC5C,QAAQ,CAAC,EAAE,6BAA6B,CAAC;IACzC,mDAAmD;IACnD,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presence.js","sourceRoot":"","sources":["../../src/types/presence.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type { CallTranscript, OnlineMeeting } from '@microsoft/microsoft-graph-types';
|
|
2
|
+
export interface GetMeetingByJoinUrlParams {
|
|
3
|
+
joinWebUrl: string;
|
|
4
|
+
}
|
|
5
|
+
export interface ListTranscriptsParams {
|
|
6
|
+
meetingId: string;
|
|
7
|
+
}
|
|
8
|
+
export interface GetTranscriptContentParams {
|
|
9
|
+
meetingId: string;
|
|
10
|
+
transcriptId: string;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=transcript.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcript.d.ts","sourceRoot":"","sources":["../../src/types/transcript.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAMtF,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcript.js","sourceRoot":"","sources":["../../src/types/transcript.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/types/user.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,IAAI,EAAE,MAAM,kCAAkC,CAAC;AAM7D,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/types/user.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { markdownToHtml, sanitizeHtml } from './markdown.js';
|
|
2
|
+
export { escapeODataString } from './odata.js';
|
|
3
|
+
export { encodeSharePointUrl } from './sharepoint.js';
|
|
4
|
+
export { extractChatIdFromJoinUrl, extractMeetingInfoFromJoinUrl } from './teams.js';
|
|
5
|
+
export type { MeetingInfo } from './teams.js';
|
|
6
|
+
export { parseVttToText } from './vtt.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AACrF,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { markdownToHtml, sanitizeHtml } from './markdown.js';
|
|
2
|
+
export { escapeODataString } from './odata.js';
|
|
3
|
+
export { encodeSharePointUrl } from './sharepoint.js';
|
|
4
|
+
export { extractChatIdFromJoinUrl, extractMeetingInfoFromJoinUrl } from './teams.js';
|
|
5
|
+
export { parseVttToText } from './vtt.js';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAErF,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts Markdown text to sanitized HTML suitable for Microsoft Teams.
|
|
3
|
+
* @param markdown The markdown text to convert
|
|
4
|
+
* @returns Sanitized HTML string
|
|
5
|
+
*/
|
|
6
|
+
export declare function markdownToHtml(markdown: string): Promise<string>;
|
|
7
|
+
/**
|
|
8
|
+
* Basic HTML sanitization for user-provided HTML content.
|
|
9
|
+
* @param html The HTML content to sanitize
|
|
10
|
+
* @returns Sanitized HTML string
|
|
11
|
+
*/
|
|
12
|
+
export declare function sanitizeHtml(html: string): string;
|
|
13
|
+
//# sourceMappingURL=markdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/utils/markdown.ts"],"names":[],"mappings":"AAgBA;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA4CtE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAsCjD"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import DOMPurify from 'dompurify';
|
|
2
|
+
import { JSDOM } from 'jsdom';
|
|
3
|
+
import { marked } from 'marked';
|
|
4
|
+
// Create a JSDOM window for DOMPurify in Node.js environment
|
|
5
|
+
const jsdomWindow = new JSDOM('').window;
|
|
6
|
+
// DOMPurify requires a Window-like object, JSDOM provides compatible interface
|
|
7
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-argument
|
|
8
|
+
const createDOMPurify = DOMPurify(jsdomWindow);
|
|
9
|
+
// Configure marked for Teams compatibility
|
|
10
|
+
marked.setOptions({
|
|
11
|
+
gfm: true, // GitHub Flavored Markdown
|
|
12
|
+
breaks: true, // Convert \n to <br>
|
|
13
|
+
});
|
|
14
|
+
/**
|
|
15
|
+
* Converts Markdown text to sanitized HTML suitable for Microsoft Teams.
|
|
16
|
+
* @param markdown The markdown text to convert
|
|
17
|
+
* @returns Sanitized HTML string
|
|
18
|
+
*/
|
|
19
|
+
export async function markdownToHtml(markdown) {
|
|
20
|
+
// Convert Markdown to HTML
|
|
21
|
+
const rawHtml = await marked(markdown);
|
|
22
|
+
// Sanitize HTML for security - allow common formatting tags safe for Teams
|
|
23
|
+
const cleanHtml = createDOMPurify.sanitize(rawHtml, {
|
|
24
|
+
ALLOWED_TAGS: [
|
|
25
|
+
'at', // Teams mentions
|
|
26
|
+
'p',
|
|
27
|
+
'br',
|
|
28
|
+
'strong',
|
|
29
|
+
'em',
|
|
30
|
+
'b',
|
|
31
|
+
'i',
|
|
32
|
+
'u',
|
|
33
|
+
's',
|
|
34
|
+
'del',
|
|
35
|
+
'a',
|
|
36
|
+
'ul',
|
|
37
|
+
'ol',
|
|
38
|
+
'li',
|
|
39
|
+
'h1',
|
|
40
|
+
'h2',
|
|
41
|
+
'h3',
|
|
42
|
+
'h4',
|
|
43
|
+
'h5',
|
|
44
|
+
'h6',
|
|
45
|
+
'blockquote',
|
|
46
|
+
'code',
|
|
47
|
+
'pre',
|
|
48
|
+
'hr',
|
|
49
|
+
'table',
|
|
50
|
+
'thead',
|
|
51
|
+
'tbody',
|
|
52
|
+
'tr',
|
|
53
|
+
'th',
|
|
54
|
+
'td',
|
|
55
|
+
'img',
|
|
56
|
+
'span',
|
|
57
|
+
],
|
|
58
|
+
ALLOWED_ATTR: ['href', 'target', 'src', 'alt', 'title', 'width', 'height', 'style', 'id'],
|
|
59
|
+
});
|
|
60
|
+
return cleanHtml;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Basic HTML sanitization for user-provided HTML content.
|
|
64
|
+
* @param html The HTML content to sanitize
|
|
65
|
+
* @returns Sanitized HTML string
|
|
66
|
+
*/
|
|
67
|
+
export function sanitizeHtml(html) {
|
|
68
|
+
return createDOMPurify.sanitize(html, {
|
|
69
|
+
ALLOWED_TAGS: [
|
|
70
|
+
'at', // Teams mentions
|
|
71
|
+
'p',
|
|
72
|
+
'br',
|
|
73
|
+
'strong',
|
|
74
|
+
'em',
|
|
75
|
+
'b',
|
|
76
|
+
'i',
|
|
77
|
+
'u',
|
|
78
|
+
's',
|
|
79
|
+
'del',
|
|
80
|
+
'a',
|
|
81
|
+
'ul',
|
|
82
|
+
'ol',
|
|
83
|
+
'li',
|
|
84
|
+
'h1',
|
|
85
|
+
'h2',
|
|
86
|
+
'h3',
|
|
87
|
+
'h4',
|
|
88
|
+
'h5',
|
|
89
|
+
'h6',
|
|
90
|
+
'blockquote',
|
|
91
|
+
'code',
|
|
92
|
+
'pre',
|
|
93
|
+
'hr',
|
|
94
|
+
'table',
|
|
95
|
+
'thead',
|
|
96
|
+
'tbody',
|
|
97
|
+
'tr',
|
|
98
|
+
'th',
|
|
99
|
+
'td',
|
|
100
|
+
'img',
|
|
101
|
+
'span',
|
|
102
|
+
],
|
|
103
|
+
ALLOWED_ATTR: ['href', 'target', 'src', 'alt', 'title', 'width', 'height', 'style', 'id'],
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=markdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/utils/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,6DAA6D;AAC7D,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;AACzC,+EAA+E;AAC/E,qGAAqG;AACrG,MAAM,eAAe,GAAG,SAAS,CAAC,WAAkB,CAAC,CAAC;AAEtD,2CAA2C;AAC3C,MAAM,CAAC,UAAU,CAAC;IAChB,GAAG,EAAE,IAAI,EAAE,2BAA2B;IACtC,MAAM,EAAE,IAAI,EAAE,qBAAqB;CACpC,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAgB;IACnD,2BAA2B;IAC3B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;IAEvC,2EAA2E;IAC3E,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,CAAC,OAAO,EAAE;QAClD,YAAY,EAAE;YACZ,IAAI,EAAE,iBAAiB;YACvB,GAAG;YACH,IAAI;YACJ,QAAQ;YACR,IAAI;YACJ,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,KAAK;YACL,GAAG;YACH,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,YAAY;YACZ,MAAM;YACN,KAAK;YACL,IAAI;YACJ,OAAO;YACP,OAAO;YACP,OAAO;YACP,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,KAAK;YACL,MAAM;SACP;QACD,YAAY,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC;KAC1F,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE;QACpC,YAAY,EAAE;YACZ,IAAI,EAAE,iBAAiB;YACvB,GAAG;YACH,IAAI;YACJ,QAAQ;YACR,IAAI;YACJ,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,KAAK;YACL,GAAG;YACH,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,YAAY;YACZ,MAAM;YACN,KAAK;YACL,IAAI;YACJ,OAAO;YACP,OAAO;YACP,OAAO;YACP,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,KAAK;YACL,MAAM;SACP;QACD,YAAY,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC;KAC1F,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utilities for working with OData queries
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Escapes a string for use in OData filter expressions.
|
|
6
|
+
* Single quotes are escaped by doubling them (' → '').
|
|
7
|
+
*
|
|
8
|
+
* @param value - The string to escape
|
|
9
|
+
* @returns The escaped string safe for OData filters
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* // "Let's Talk" → "Let''s Talk"
|
|
13
|
+
* const escaped = escapeODataString("Let's Talk");
|
|
14
|
+
* const filter = `contains(topic, '${escaped}')`;
|
|
15
|
+
*/
|
|
16
|
+
export declare function escapeODataString(value: string): string;
|
|
17
|
+
//# sourceMappingURL=odata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"odata.d.ts","sourceRoot":"","sources":["../../src/utils/odata.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEvD"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utilities for working with OData queries
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Escapes a string for use in OData filter expressions.
|
|
6
|
+
* Single quotes are escaped by doubling them (' → '').
|
|
7
|
+
*
|
|
8
|
+
* @param value - The string to escape
|
|
9
|
+
* @returns The escaped string safe for OData filters
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* // "Let's Talk" → "Let''s Talk"
|
|
13
|
+
* const escaped = escapeODataString("Let's Talk");
|
|
14
|
+
* const filter = `contains(topic, '${escaped}')`;
|
|
15
|
+
*/
|
|
16
|
+
export function escapeODataString(value) {
|
|
17
|
+
return value.replace(/'/g, "''");
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=odata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"odata.js","sourceRoot":"","sources":["../../src/utils/odata.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SharePoint URL utilities for Microsoft Graph API.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Encode a SharePoint URL for use with the /shares endpoint.
|
|
6
|
+
* Algorithm: "u!" + base64url(url)
|
|
7
|
+
*
|
|
8
|
+
* @see https://learn.microsoft.com/en-us/graph/api/shares-get
|
|
9
|
+
*/
|
|
10
|
+
export declare function encodeSharePointUrl(sharepointUrl: string): string;
|
|
11
|
+
//# sourceMappingURL=sharepoint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sharepoint.d.ts","sourceRoot":"","sources":["../../src/utils/sharepoint.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAMjE"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SharePoint URL utilities for Microsoft Graph API.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Encode a SharePoint URL for use with the /shares endpoint.
|
|
6
|
+
* Algorithm: "u!" + base64url(url)
|
|
7
|
+
*
|
|
8
|
+
* @see https://learn.microsoft.com/en-us/graph/api/shares-get
|
|
9
|
+
*/
|
|
10
|
+
export function encodeSharePointUrl(sharepointUrl) {
|
|
11
|
+
const base64Value = Buffer.from(sharepointUrl).toString('base64');
|
|
12
|
+
return `u!${base64Value
|
|
13
|
+
.replace(/=+$/, '') // Remove padding
|
|
14
|
+
.replace(/\//g, '_') // Replace / with _
|
|
15
|
+
.replace(/\+/g, '-')}`; // Replace + with -
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=sharepoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sharepoint.js","sourceRoot":"","sources":["../../src/utils/sharepoint.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,aAAqB;IACvD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAClE,OAAO,KAAK,WAAW;SACpB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,iBAAiB;SACpC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,mBAAmB;SACvC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,mBAAmB;AAC/C,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utilities for working with Microsoft Teams URLs and IDs
|
|
3
|
+
*/
|
|
4
|
+
export interface MeetingInfo {
|
|
5
|
+
meetingId: string;
|
|
6
|
+
chatId: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Extracts meetingId and chatId from a Teams meeting join URL.
|
|
10
|
+
*
|
|
11
|
+
* The meetingId is constructed by base64-encoding: "1*{organizerId}*0**{threadId}"
|
|
12
|
+
* The chatId is the threadId extracted from the URL path.
|
|
13
|
+
*
|
|
14
|
+
* @param joinUrl - The Teams meeting join URL (from calendar event or chat)
|
|
15
|
+
* @returns Object containing meetingId and chatId
|
|
16
|
+
* @throws Error if URL cannot be parsed
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* const url = "https://teams.microsoft.com/l/meetup-join/19%3ameeting_abc...%40thread.v2/0?context=...";
|
|
20
|
+
* const { meetingId, chatId } = extractMeetingInfoFromJoinUrl(url);
|
|
21
|
+
* // chatId = "19:meeting_abc...@thread.v2"
|
|
22
|
+
* // meetingId = "MSo1NmNh..." (base64 encoded)
|
|
23
|
+
*/
|
|
24
|
+
export declare function extractMeetingInfoFromJoinUrl(joinUrl: string): MeetingInfo;
|
|
25
|
+
/**
|
|
26
|
+
* Extracts just the chatId (threadId) from a Teams meeting join URL.
|
|
27
|
+
* Use this when you only need the chatId and don't need to compute meetingId.
|
|
28
|
+
*
|
|
29
|
+
* @param joinUrl - The Teams meeting join URL
|
|
30
|
+
* @returns The chatId (e.g., "19:meeting_...@thread.v2")
|
|
31
|
+
* @throws Error if URL cannot be parsed
|
|
32
|
+
*/
|
|
33
|
+
export declare function extractChatIdFromJoinUrl(joinUrl: string): string;
|
|
34
|
+
//# sourceMappingURL=teams.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"teams.d.ts","sourceRoot":"","sources":["../../src/utils/teams.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAmC1E;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAOhE"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utilities for working with Microsoft Teams URLs and IDs
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Extracts meetingId and chatId from a Teams meeting join URL.
|
|
6
|
+
*
|
|
7
|
+
* The meetingId is constructed by base64-encoding: "1*{organizerId}*0**{threadId}"
|
|
8
|
+
* The chatId is the threadId extracted from the URL path.
|
|
9
|
+
*
|
|
10
|
+
* @param joinUrl - The Teams meeting join URL (from calendar event or chat)
|
|
11
|
+
* @returns Object containing meetingId and chatId
|
|
12
|
+
* @throws Error if URL cannot be parsed
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* const url = "https://teams.microsoft.com/l/meetup-join/19%3ameeting_abc...%40thread.v2/0?context=...";
|
|
16
|
+
* const { meetingId, chatId } = extractMeetingInfoFromJoinUrl(url);
|
|
17
|
+
* // chatId = "19:meeting_abc...@thread.v2"
|
|
18
|
+
* // meetingId = "MSo1NmNh..." (base64 encoded)
|
|
19
|
+
*/
|
|
20
|
+
export function extractMeetingInfoFromJoinUrl(joinUrl) {
|
|
21
|
+
// Decode the URL to handle %3a → : and %40 → @
|
|
22
|
+
const decodedUrl = decodeURIComponent(joinUrl);
|
|
23
|
+
// Extract threadId (chatId) from URL path
|
|
24
|
+
// Pattern: /meetup-join/19:meeting_...@thread.v2/
|
|
25
|
+
const threadIdMatch = /meetup-join\/(19:[^/]+)/.exec(decodedUrl);
|
|
26
|
+
if (!threadIdMatch) {
|
|
27
|
+
throw new Error(`Could not extract threadId from join URL: ${joinUrl.substring(0, 100)}...`);
|
|
28
|
+
}
|
|
29
|
+
const chatId = threadIdMatch[1];
|
|
30
|
+
// Extract Oid (organizer ID) from context JSON parameter
|
|
31
|
+
// Pattern: context={"Tid":"...","Oid":"..."}
|
|
32
|
+
const contextMatch = /context=(\{[^}]+\})/.exec(decodedUrl);
|
|
33
|
+
if (!contextMatch) {
|
|
34
|
+
throw new Error(`Could not extract context from join URL: ${joinUrl.substring(0, 100)}...`);
|
|
35
|
+
}
|
|
36
|
+
let context;
|
|
37
|
+
try {
|
|
38
|
+
context = JSON.parse(contextMatch[1]);
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
throw new Error(`Could not parse context JSON from join URL`);
|
|
42
|
+
}
|
|
43
|
+
if (!context.Oid) {
|
|
44
|
+
throw new Error(`Context missing Oid (organizer ID) in join URL`);
|
|
45
|
+
}
|
|
46
|
+
// Construct meetingId: base64("1*{Oid}*0**{threadId}")
|
|
47
|
+
const meetingIdRaw = `1*${context.Oid}*0**${chatId}`;
|
|
48
|
+
const meetingId = Buffer.from(meetingIdRaw).toString('base64');
|
|
49
|
+
return { meetingId, chatId };
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Extracts just the chatId (threadId) from a Teams meeting join URL.
|
|
53
|
+
* Use this when you only need the chatId and don't need to compute meetingId.
|
|
54
|
+
*
|
|
55
|
+
* @param joinUrl - The Teams meeting join URL
|
|
56
|
+
* @returns The chatId (e.g., "19:meeting_...@thread.v2")
|
|
57
|
+
* @throws Error if URL cannot be parsed
|
|
58
|
+
*/
|
|
59
|
+
export function extractChatIdFromJoinUrl(joinUrl) {
|
|
60
|
+
const decodedUrl = decodeURIComponent(joinUrl);
|
|
61
|
+
const threadIdMatch = /meetup-join\/(19:[^/]+)/.exec(decodedUrl);
|
|
62
|
+
if (!threadIdMatch) {
|
|
63
|
+
throw new Error(`Could not extract threadId from join URL: ${joinUrl.substring(0, 100)}...`);
|
|
64
|
+
}
|
|
65
|
+
return threadIdMatch[1];
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=teams.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"teams.js","sourceRoot":"","sources":["../../src/utils/teams.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,6BAA6B,CAAC,OAAe;IAC3D,+CAA+C;IAC/C,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAE/C,0CAA0C;IAC1C,kDAAkD;IAClD,MAAM,aAAa,GAAG,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjE,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,6CAA6C,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/F,CAAC;IACD,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAEhC,yDAAyD;IACzD,6CAA6C;IAC7C,MAAM,YAAY,GAAG,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5D,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,4CAA4C,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9F,CAAC;IAED,IAAI,OAAuC,CAAC;IAC5C,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAmC,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IAED,uDAAuD;IACvD,MAAM,YAAY,GAAG,KAAK,OAAO,CAAC,GAAG,OAAO,MAAM,EAAE,CAAC;IACrD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAE/D,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AAC/B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAe;IACtD,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,aAAa,GAAG,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjE,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,6CAA6C,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/F,CAAC;IACD,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse WebVTT transcript to clean text format.
|
|
3
|
+
* Strips timestamps, WEBVTT header, and XML-like voice tags.
|
|
4
|
+
* Consolidates consecutive lines from the same speaker.
|
|
5
|
+
*/
|
|
6
|
+
export declare function parseVttToText(vttContent: string): string;
|
|
7
|
+
//# sourceMappingURL=vtt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vtt.d.ts","sourceRoot":"","sources":["../../src/utils/vtt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CA0CzD"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse WebVTT transcript to clean text format.
|
|
3
|
+
* Strips timestamps, WEBVTT header, and XML-like voice tags.
|
|
4
|
+
* Consolidates consecutive lines from the same speaker.
|
|
5
|
+
*/
|
|
6
|
+
export function parseVttToText(vttContent) {
|
|
7
|
+
const lines = vttContent.split('\n');
|
|
8
|
+
const entries = [];
|
|
9
|
+
let currentSpeaker = '';
|
|
10
|
+
let currentText = '';
|
|
11
|
+
for (const line of lines) {
|
|
12
|
+
const trimmed = line.trim();
|
|
13
|
+
// Skip empty lines, WEBVTT header, and timestamp lines
|
|
14
|
+
if (!trimmed || trimmed === 'WEBVTT' || /^\d{2}:\d{2}/.test(trimmed)) {
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
// Parse voice tag: <v Speaker Name>Text</v>
|
|
18
|
+
const voiceMatch = /^<v ([^>]+)>(.+)<\/v>$/.exec(trimmed);
|
|
19
|
+
if (voiceMatch) {
|
|
20
|
+
const speaker = voiceMatch[1];
|
|
21
|
+
const text = voiceMatch[2];
|
|
22
|
+
// If same speaker, append to current text
|
|
23
|
+
if (speaker === currentSpeaker) {
|
|
24
|
+
currentText += ` ${text}`;
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
// Save previous entry if exists
|
|
28
|
+
if (currentSpeaker && currentText) {
|
|
29
|
+
entries.push({ speaker: currentSpeaker, text: currentText.trim() });
|
|
30
|
+
}
|
|
31
|
+
currentSpeaker = speaker;
|
|
32
|
+
currentText = text;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// Don't forget the last entry
|
|
37
|
+
if (currentSpeaker && currentText) {
|
|
38
|
+
entries.push({ speaker: currentSpeaker, text: currentText.trim() });
|
|
39
|
+
}
|
|
40
|
+
// Format as "Speaker: Text" lines
|
|
41
|
+
return entries.map((e) => `${e.speaker}: ${e.text}`).join('\n\n');
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=vtt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vtt.js","sourceRoot":"","sources":["../../src/utils/vtt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,UAAkB;IAC/C,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,OAAO,GAAwC,EAAE,CAAC;IAExD,IAAI,cAAc,GAAG,EAAE,CAAC;IACxB,IAAI,WAAW,GAAG,EAAE,CAAC;IAErB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAE5B,uDAAuD;QACvD,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACrE,SAAS;QACX,CAAC;QAED,4CAA4C;QAC5C,MAAM,UAAU,GAAG,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAE3B,0CAA0C;YAC1C,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;gBAC/B,WAAW,IAAI,IAAI,IAAI,EAAE,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,gCAAgC;gBAChC,IAAI,cAAc,IAAI,WAAW,EAAE,CAAC;oBAClC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACtE,CAAC;gBACD,cAAc,GAAG,OAAO,CAAC;gBACzB,WAAW,GAAG,IAAI,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAED,8BAA8B;IAC9B,IAAI,cAAc,IAAI,WAAW,EAAE,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,kCAAkC;IAClC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpE,CAAC"}
|